Я чувствую себя немного плохо из-за того, что могу дать свой собственный ответ на этот вопрос, потому что он довольно хорошо охвачен амебой и джуампа, за исключением, может быть, заключительной интуиции о том, как якобиан может быть сведен обратно к вектору.
Вы правильно вывели градиент диагонали якобианской матрицы, то есть
∂hi∂zj=hi(1−hj):i=j
и как говорила амеба, вы также должны вывести недиагональные записи якобиана, которые дают
∂hi∂zj=−hihj:i≠j
Эти два определения понятий могут быть удобно объединены с использованием конструкции, называемой дельтой Кронекера , поэтому определение градиента становится
∂hi∂zj=hi(δij−hj)
Таким образом, якобиан является квадратной матрицей[J]ij=hi(δij−hj)
Вся информация до этого момента уже покрыта амебой и джумпой. Проблема, конечно, в том, что нам нужно получить ошибки ввода из ошибок вывода, которые уже вычислены. Поскольку градиент ошибки вывода зависит от всех входов, то градиент ввода равен∇hixi
[∇x]k=∑i=1∇hi,k
Учитывая матрицу Якоби, определенную выше, это реализуется тривиально как произведение матрицы на вектор ошибок вывода:
σl→=Jσl+1→
Если слой softmax является вашим выходным слоем, то объединение его с моделью кросс-энтропийной стоимости упрощает вычисление до
σl→=h⃗ −t⃗
где - вектор меток, а - выходные данные функции softmax. Упрощенная форма не только удобна, но и чрезвычайно полезна с точки зрения численной устойчивости.t⃗ h⃗