Я пытаюсь добавить слой softmax в нейронную сеть, обученную обратному распространению, поэтому я пытаюсь вычислить его градиент.
Выходные данные softmax: где - номер выходного нейрона.
Если я получу это, то я получу
Похоже на логистическую регрессию. Однако это неправильно, так как моя проверка градиента не удалась.
Что я делаю не так? У меня была мысль, что мне нужно также вычислить перекрестные производные (то есть ), но я не уверен, как это сделать и сохранить размерность градиента то же самое, поэтому он подходит для процесса обратного распространения.
Ответы:
Я чувствую себя немного плохо из-за того, что могу дать свой собственный ответ на этот вопрос, потому что он довольно хорошо охвачен амебой и джуампа, за исключением, может быть, заключительной интуиции о том, как якобиан может быть сведен обратно к вектору.
Вы правильно вывели градиент диагонали якобианской матрицы, то есть
и как говорила амеба, вы также должны вывести недиагональные записи якобиана, которые дают
Эти два определения понятий могут быть удобно объединены с использованием конструкции, называемой дельтой Кронекера , поэтому определение градиента становится
Таким образом, якобиан является квадратной матрицей[J]ij=hi(δij−hj)
Вся информация до этого момента уже покрыта амебой и джумпой. Проблема, конечно, в том, что нам нужно получить ошибки ввода из ошибок вывода, которые уже вычислены. Поскольку градиент ошибки вывода зависит от всех входов, то градиент ввода равен∇hi xi
Учитывая матрицу Якоби, определенную выше, это реализуется тривиально как произведение матрицы на вектор ошибок вывода:
Если слой softmax является вашим выходным слоем, то объединение его с моделью кросс-энтропийной стоимости упрощает вычисление до
где - вектор меток, а - выходные данные функции softmax. Упрощенная форма не только удобна, но и чрезвычайно полезна с точки зрения численной устойчивости.t⃗ h⃗
источник
Производная неверна. Должен быть,
проверьте ваши расчеты еще раз. Кроме того, выражение, данное амебой для перекрестной энтропии, не совсем правильно. Для набора образцов данных, взятых из различных классов, он читает,C
где супериндекс работает над набором выборок, - это значение k-го компонента цели для n-го образца. Здесь предполагается, что вы используете схему кодирования 1-из-C, то есть . В этом случае все t равны нулю, за исключением компонента, представляющего соответствующий ему класс, который равен единице.tnk tnk
Обратите внимание, что т постоянны. Следовательно, минимизация этого функционала эквивалентна минимизации,
которое имеет то преимущество, что якобиан принимает очень удобную форму, а именно
Я бы порекомендовал вам получить копию нейронных сетей епископа для распознавания образов . ИМХО пока лучшая книга по нейронным сетям.
источник
Каждый выход softmax зависит от всех входов, поэтому градиент действительно является целой матрицей Якоби. Вы правильно вычислили , но вам также нужно если . Я предполагаю, что если вы можете получить первое выражение, вы легко сможете получить и второе.∂jhj=∂hj∂zj=hj(1−hj) ∂khj=−hjhk j≠k
Я не уверен, какую проблему вы видите с обратным распространением: в слое softmax у вас есть выходов и входов, поэтому ошибка с каждого выхода должна распространяться на каждый вход, и именно поэтому вам нужен весь якобиан. С другой стороны, обычно у вас есть функция стоимости, связанная с выходом softmax, например где - ваши желаемые выходные данные (когда вы выполняете классификацию, то часто один из них равен 1 и другие до 0). Тогда на самом деле вас интересует , который может быть вычислен с помощью правила цепочки, приводящего к аккуратному выражению, и действительно является вектором (а не матрицей).j j
источник