Първо разгледайте следния кратък математически трик. Как да изчислим производната на деление на функция, както следва:
Сега нека използваме горната формула, за да намерим производната на сигмоидната функция, както следва:
Сега, разгледайте следната графична мрежа, това може да е част от някаква невронна мрежа, защото имаме известно умножение, събиране и известна нелинейност в невронна мрежа.
Векторът на характеристиките е X=[0,11 0,22 0,33] и
тегла W = [0,55 0,66 0,77], b = [0,88]
тук
a0 = x0*w0
a1 = x1*w1
a2 = x2*w2
и
z = a0 + a1 + a2 + b
y = сигмоид (z), вижте уравнение (2)
Резултатите от изчисленията (пътят напред) също са показани на Фигура-1.
Сега нека изчислим производната на изходната променлива y (това е загубата, която искаме да минимизираме) по отношение на всяка от вътрешните променливи, така че по-късно да можем да използваме тези производни за актуализиращото уравнение (3).
Сега нека започнем изчисленията на обратното разпространение.
- Частична производна на y w.r.t. y е 1,0 толкова просто.
2. Сега използвайки уравнение (2), получаваме следното:
3. За a0 имаме:
4. За a1 имаме:
5. За a2 имаме:
6. За частична производна по отношение на b получаваме:
7. За w0 имаме следното:
8. И за w1 имаме:
9. Частната производна на y по отношение на w2:
Сега имаме частични производни на y (което е загуба) по отношение на всеки параметър w0, w1, w2 и b, сега можем да използваме актуализиране на уравнение (3) за градиентно спускане.
Нещата зад сцената, които току-що направихме с помощта на ръчни изчисления, могат да бъдат направени с помощта на Pytorch, както следва:
Резултатите са както следва: