Gradientnedstigning

Introduktion till djupinlärning i Python

Dan Becker

Data Scientist and contributor to Keras and TensorFlow libraries

Gradientnedstigning

ch2_2.003.png

Introduktion till djupinlärning i Python

Gradientnedstigning

ch2_2.004.png

Introduktion till djupinlärning i Python

Gradientnedstigning

ch2_2.005.png

Introduktion till djupinlärning i Python

Gradientnedstigning

ch2_2.006.png

Introduktion till djupinlärning i Python

Gradientnedstigning

ch2_2.008.png

Introduktion till djupinlärning i Python

Gradientnedstigning

ch2_2.009.png

Introduktion till djupinlärning i Python

Gradientnedstigning

ch2_2.010.png

Introduktion till djupinlärning i Python

Gradientnedstigning

ch2_2.011.png

Introduktion till djupinlärning i Python

Gradientnedstigning

ch2_2.012.png

Introduktion till djupinlärning i Python

Gradientnedstigning

ch2_2.013.png

Introduktion till djupinlärning i Python

Gradientnedstigning

ch2_2.014.png

Introduktion till djupinlärning i Python

Gradientnedstigning

  • Om lutningen är positiv:
    • Att gå mot lutningens riktning innebär att röra sig mot lägre värden
    • Subtrahera lutningen från det aktuella värdet
    • Ett för stort steg kan ge fel resultat
  • Lösning: inlärningshastighet
    • Uppdatera varje vikt genom att subtrahera inlärningshastighet * lutning
Introduktion till djupinlärning i Python

Exempel på lutningsberäkning

ch2_2.022.png

  • För att beräkna lutningen för en vikt behöver man multiplicera:
    • Förlustfunktionens lutning med avseende på värdet i den nod vi matar in i
    • Värdet i den nod som matar in i vikten
    • Aktiveringsfunktionens lutning med avseende på det värde vi matar in
Introduktion till djupinlärning i Python

Exempel på lutningsberäkning

ch2_2.028.png

  • För att beräkna lutningen för en vikt behöver man multiplicera:
    • Förlustfunktionens lutning med avseende på värdet i den nod vi matar in i
    • Värdet i den nod som matar in i vikten
    • Aktiveringsfunktionens lutning med avseende på det värde vi matar in
Introduktion till djupinlärning i Python

Exempel på lutningsberäkning

ch2_2.029.png

  • Medelkvadratförlustfunktionens lutning med avseende på prediktionen:
    • 2 (Predikterat värde - Verkligt värde) = 2 Fel
    • 2 * -4
Introduktion till djupinlärning i Python

Exempel på lutningsberäkning

ch2_2.033.png

  • För att beräkna lutningen för en vikt behöver man multiplicera:
    • Förlustfunktionens lutning med avseende på värdet i den nod vi matar in i
    • Värdet i den nod som matar in i vikten
    • Aktiveringsfunktionens lutning med avseende på det värde vi matar in
Introduktion till djupinlärning i Python

Exempel på lutningsberäkning

ch2_2.035.png

  • För att beräkna lutningen för en vikt behöver man multiplicera:
    • Förlustfunktionens lutning med avseende på värdet i den nod vi matar in i
    • Värdet i den nod som matar in i vikten
    • Aktiveringsfunktionens lutning med avseende på det värde vi matar in
Introduktion till djupinlärning i Python

Exempel på lutningsberäkning

ch2_2.037.png

  • För att beräkna lutningen för en vikt behöver man multiplicera:
    • Förlustfunktionens lutning med avseende på värdet i den nod vi matar in i
    • Värdet i den nod som matar in i vikten
    • Aktiveringsfunktionens lutning med avseende på det värde vi matar in
Introduktion till djupinlärning i Python

Exempel på lutningsberäkning

ch2_2.038.png

  • För att beräkna lutningen för en vikt behöver man multiplicera:
    • Förlustfunktionens lutning med avseende på värdet i den nod vi matar in i
    • Värdet i den nod som matar in i vikten
    • Aktiveringsfunktionens lutning med avseende på det värde vi matar in
Introduktion till djupinlärning i Python

Exempel på lutningsberäkning

ch2_2.044.png

  • 2 * -4 * 3
  • -24
  • Om inlärningshastigheten är 0.01 blir den nya vikten
  • 2 - 0.01(-24) = 2.24
Introduktion till djupinlärning i Python

Nätverk med två ingångar som påverkar prediktionen

ch2_2.045.png

Introduktion till djupinlärning i Python

Kod för att beräkna lutningar och uppdatera vikter

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
Introduktion till djupinlärning i Python

Kod för att beräkna lutningar och uppdatera vikter

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
Introduktion till djupinlärning i Python

Nu kör vi en övning!

Introduktion till djupinlärning i Python

Preparing Video For Download...