Обратите внимание, что выход каждого слоя - является входом для другого, поэтому в целом процесс Y = forward_propagation(X)
выглядит следующим образом
В коде это выглядит следующим образом.
В качестве примера, в нашей нейросети будет использоваться функция ошибки (6)
- среднеквадратичное отклонение
Как только входной вектор X
прошел все трансформации слоев - на выходе имеем вектор Y
,
от которого считаем функцию ошибки (6)
, и начиная с этого момента нам нужно как-то обновить веса нейрости (параметры), чтобы
минимизировать функцию ошибки. Здесь приходит на помощь...
Обратите внимание, что теперь процесс идет в обратную сторону: выход слоев стал входом, а входы, наоборот, выходами
∇L(X) = backward_propagation(∇L(Y), α)
, см. ниже
Таким образом получаем итоговые формулые для реализации backward_propagation()
слоя FCLayer
Реализация в виде кода представлена ниже