Gradient descent

Wprowadzenie do uczenia głębokiego w Pythonie

Dan Becker

Data Scientist and contributor to Keras and TensorFlow libraries

Gradient descent

ch2_2.003.png

Wprowadzenie do uczenia głębokiego w Pythonie

Gradient descent

ch2_2.004.png

Wprowadzenie do uczenia głębokiego w Pythonie

Gradient descent

ch2_2.005.png

Wprowadzenie do uczenia głębokiego w Pythonie

Gradient descent

ch2_2.006.png

Wprowadzenie do uczenia głębokiego w Pythonie

Gradient descent

ch2_2.008.png

Wprowadzenie do uczenia głębokiego w Pythonie

Gradient descent

ch2_2.009.png

Wprowadzenie do uczenia głębokiego w Pythonie

Gradient descent

ch2_2.010.png

Wprowadzenie do uczenia głębokiego w Pythonie

Gradient descent

ch2_2.011.png

Wprowadzenie do uczenia głębokiego w Pythonie

Gradient descent

ch2_2.012.png

Wprowadzenie do uczenia głębokiego w Pythonie

Gradient descent

ch2_2.013.png

Wprowadzenie do uczenia głębokiego w Pythonie

Gradient descent

ch2_2.014.png

Wprowadzenie do uczenia głębokiego w Pythonie

Gradient descent

  • Jeśli nachylenie jest dodatnie:
    • Kierunek przeciwny oznacza ruch ku mniejszym wartościom
    • Odejmij nachylenie od bieżącej wartości
    • Zbyt duży krok może nas wyprowadzić na manowce
  • Rozwiązanie: współczynnik uczenia
    • Aktualizuj każdą wagę, odejmując współczynnik uczenia * nachylenie
Wprowadzenie do uczenia głębokiego w Pythonie

Przykład obliczania nachylenia

ch2_2.022.png

  • Aby obliczyć nachylenie dla wagi, należy pomnożyć:
    • Nachylenie funkcji straty względem wartości w zasilanym węźle
    • Wartość węzła zasilającego daną wagę
    • Nachylenie funkcji aktywacji względem podawanej wartości
Wprowadzenie do uczenia głębokiego w Pythonie

Przykład obliczania nachylenia

ch2_2.028.png

  • Aby obliczyć nachylenie dla wagi, należy pomnożyć:
    • Nachylenie funkcji straty względem wartości w zasilanym węźle
    • Wartość węzła zasilającego daną wagę
    • Nachylenie funkcji aktywacji względem podawanej wartości
Wprowadzenie do uczenia głębokiego w Pythonie

Przykład obliczania nachylenia

ch2_2.029.png

  • Nachylenie funkcji straty średniokwadratowej względem predykcji:
    • 2 (Wartość przewidziana - Wartość rzeczywista) = 2 Błąd
    • 2 * -4
Wprowadzenie do uczenia głębokiego w Pythonie

Przykład obliczania nachylenia

ch2_2.033.png

  • Aby obliczyć nachylenie dla wagi, należy pomnożyć:
    • Nachylenie funkcji straty względem wartości w zasilanym węźle
    • Wartość węzła zasilającego daną wagę
    • Nachylenie funkcji aktywacji względem podawanej wartości
Wprowadzenie do uczenia głębokiego w Pythonie

Przykład obliczania nachylenia

ch2_2.035.png

  • Aby obliczyć nachylenie dla wagi, należy pomnożyć:
    • Nachylenie funkcji straty względem wartości w zasilanym węźle
    • Wartość węzła zasilającego daną wagę
    • Nachylenie funkcji aktywacji względem podawanej wartości
Wprowadzenie do uczenia głębokiego w Pythonie

Przykład obliczania nachylenia

ch2_2.037.png

  • Aby obliczyć nachylenie dla wagi, należy pomnożyć:
    • Nachylenie funkcji straty względem wartości w zasilanym węźle
    • Wartość węzła zasilającego daną wagę
    • Nachylenie funkcji aktywacji względem podawanej wartości
Wprowadzenie do uczenia głębokiego w Pythonie

Przykład obliczania nachylenia

ch2_2.038.png

  • Aby obliczyć nachylenie dla wagi, należy pomnożyć:
    • Nachylenie funkcji straty względem wartości w zasilanym węźle
    • Wartość węzła zasilającego daną wagę
    • Nachylenie funkcji aktywacji względem podawanej wartości
Wprowadzenie do uczenia głębokiego w Pythonie

Przykład obliczania nachylenia

ch2_2.044.png

  • 2 * -4 * 3
  • -24
  • Jeśli współczynnik uczenia wynosi 0.01, nowa waga wyniesie
  • 2 - 0.01(-24) = 2.24
Wprowadzenie do uczenia głębokiego w Pythonie

Sieć z dwoma wejściami wpływającymi na predykcję

ch2_2.045.png

Wprowadzenie do uczenia głębokiego w Pythonie

Kod do obliczania nachyleń i aktualizacji wag

import numpy as np
weights = np.array([1, 2])
input_data = np.array([3, 4])
target = 6
learning_rate = 0.01
preds = (weights * input_data).sum()
error = preds - target

print(error)
5
Wprowadzenie do uczenia głębokiego w Pythonie

Kod do obliczania nachyleń i aktualizacji wag

gradient = 2 * input_data * error

gradient
array([30, 40])
weights_updated = weights - learning_rate * gradient
preds_updated = (weights_updated * input_data).sum()
error_updated = preds_updated - target

print(error_updated)
2.5
Wprowadzenie do uczenia głębokiego w Pythonie

Czas na ćwiczenia!

Wprowadzenie do uczenia głębokiego w Pythonie

Preparing Video For Download...