Първо разгледайте следния кратък математически трик. Как да изчислим производната на деление на функция, както следва:

Сега нека използваме горната формула, за да намерим производната на сигмоидната функция, както следва:

Сега, разгледайте следната графична мрежа, това може да е част от някаква невронна мрежа, защото имаме известно умножение, събиране и известна нелинейност в невронна мрежа.

Векторът на характеристиките е 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).

Сега нека започнем изчисленията на обратното разпространение.

  1. Частична производна на 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, както следва:

Резултатите са както следва: