Trochę źle czuję się, udzielając na to mojej odpowiedzi, ponieważ jest ona całkiem dobrze uchwycona przez amebę i juampę, z wyjątkiem może ostatecznej intuicji, w jaki sposób jakobian można sprowadzić z powrotem do wektora.
Poprawnie wyprowadziłeś gradient przekątnej macierzy jakobskiej, to znaczy tak
∂hi∂zj=hi(1−hj):i=j
i jak to powiedziała ameba, musisz także wyprowadzić pozakątne wpisy jakobianów, które dają
∂hi∂zj=−hihj:i≠j
Te dwie definicje pojęć można dogodnie łączyć za pomocą konstruktu o nazwie Delta Kroneckera , dzięki czemu powstaje definicja gradientu
∂hi∂zj=hi(δij−hj)
Jakobian jest macierzą kwadratową[J]ij=hi(δij−hj)
Wszystkie informacje do tego momentu są już objęte amebą i juampą. Problem polega oczywiście na tym, że musimy uzyskać błędy wejściowe z błędów wyjściowych, które są już obliczone. Ponieważ gradient błędu wyjściowego zależy od wszystkich danych wejściowych, zatem gradient wejścia wynosi∇hixi
[∇x]k=∑i=1∇hi,k
Biorąc pod uwagę zdefiniowaną powyżej jakobianową macierz, jest to trywialnie zaimplementowane jako iloczyn macierzy i wektora błędu wyjściowego:
σl→=Jσl+1→
Jeśli warstwa softmax jest warstwą wyjściową, wówczas połączenie jej z modelem kosztów entropii krzyżowej upraszcza obliczenia po prostu
σl→=h⃗ −t⃗
gdzie to wektor etykiet, a to wynik funkcji softmax. Uproszczona forma jest nie tylko wygodna, ale także niezwykle przydatna z punktu widzenia stabilności numerycznej.t⃗ h⃗