Вопрос или проблема
В онлайн-книге о нейронных сетях Майкла Нилсена, в главе 3, он вводит новую функцию стоимости, называемую функцией логарифмического правдоподобия, определенной следующим образом:
$$ C = -ln(a_y^L) $$
Предположим, у нас есть 10 выходных нейронов, когда происходит обратное распространение ошибки, только градиент относительно $y^{th}$ выходного нейрона не равен нулю, а все остальные – равны нулю. Это так?
Если так, то как истинно следующее уравнение (81)?
$$\frac{\partial C}{\partial b_j^L} = a_j^L – y_j $$
Я получаю выражение как
$$\frac{\partial C}{\partial b_j^L} = y_j (a_j^L – 1) $$
Нет, на самом деле вы не совсем поняли, как работает softmax; он выдает распределение вероятностей. Следовательно, если есть 10 выходных нейронов, вы получите 10 вероятностей для 10 соответствующих классов, то есть нейрон с наибольшей вероятностью будет более активен, и ни один из выходных нейронов не будет давать 0 на выходе; именно это и делает softmax — он берет экспоненциальное среднее для каждого класса, чтобы получить распределение вероятностей по k различным классам, где k=10. Теперь, как вы сказали, предположим, что у вас есть 10 выходных нейронов. Тогда, когда вы выполняете обратное распространение ошибки, только градиент относительно y-ого выходного нейрона не равен нулю, а все остальные равны нулю, это неправильно. Если вы посмотрите, функция ошибки или стоимость вычисляется следующим образом, когда есть несколько нейронов:
Теперь, как вы можете видеть, стоимость вычисляется по всем выходным нейронам для всех учебных примеров в пакете размером ‘n’. Следовательно, когда вы выполняете обратное распространение, то есть когда вы вычисляете “dc/dw” и “dc/db”, это включает выходы всех выходных нейронов, и ваше утверждение неверно, потому что если градиенты других выходных нейронов равны 0, как тогда ваше обратное распространение обновит их весовые матрицы? Я знаю, что это сбивает с толку, но если вы прочитаете его главу 2, вы должны понять это. Я использовал кросс-энтропию, чтобы объяснить вам это, но тот же метод будет работать для любой функции стоимости, которую вы выберете.
Что касается вывода, он довольно прост; просто вернитесь и изучите его главу 2, все четыре уравнения BP1, BP2, BP3, BP4 и поймите их вывод. Это займет некоторое время, но будет легко, как только вы поймете природу составной функции нейронных сетей и как дифференцировать составные функции, используя правило цепи.
Ответ или решение
Безусловно, давайте разберемся с этой темой.
Когда мы работаем с функцией стоимости логарифмического правдоподобия, определенной как
$$ C = -\ln(a_y^L) $$
где \( a_y^L \) – это активность \( y^{th} \) нейрона на последнем слое, можно столкнуться с некоторыми недоразумениями при выполнении обратного распространения ошибки (backpropagation).
### Понимание Softmax
Как вы правильно отметили, функция softmax нормализует выходные значения нейронов так, что они представляют собой вероятностное распределение. Это означает, что сумма всех выходов (активаций) на последнем уровне равна 1. Таким образом, для 10 выходных нейронов \( a_1^L, a_2^L, \ldots, a_{10}^L \) у нас будет:
$$ \sum_{j=1}^{10} a_j^L = 1 $$
### Обратное распространение
При выполнении обратного распространения мы ищем градиенты функции потерь по отношению к весам и смещениям. Ваше утверждение о том, что только градиент в отношении \( y^{th} \) нейрона ненулевой и все остальные равны нулю, не совсем верно. Хотя для конкретного случая (например, для одного целевого класса) градиент в данной точке будет равен 1 или -1, при вычислении градиентов для весов учитываются все выходные нейроны. Это связано с тем, что оптимизация осуществляется в контексте всей вероятностной модели.
### Процесс вычисления градиентов
Формула (81), которую вы указали:
$$ \frac{\partial C}{\partial b_j^L} = a_j^L – y_j $$
действительно верна и отражает разницу между предсказанием \( a_j^L \) и истинной меткой \( y_j \) для каждой выходной нейронной единицы \( j \).
Когда целевая метка задана как один горячий код (one-hot encoding), только \( y_j = 1 \) для целевого класса, а для всех остальных \( y_k = 0 \) для \( k \neq j \). Поэтому, когда:
– \( j = y \): \( a_j^L – y_j = a_y^L – 1 \)
– \( k \neq y \): \( a_k^L – y_k = a_k^L – 0 = a_k^L \)
Это означает, что при подстановке значений в уравнение, для того чтобы получить все необходимые градиенты, вам нужно учитывать все выходные нейроны \( j \) от 1 до 10, что в сумме позволяет вариации \( a_j^L \) корректно изменять веса.
### Вывод
Отметим, что процесс обратного распространения и вычисление градиентов в контексте функции потерь, основанной на логарифмическом правдоподобии с использованием softmax, более сложен, чем просто анализ одной нейронной единицы. Необходимо обобщить информацию по всем выходным нейронам, чтобы корректно обновить параметры модели. Для более глубокого понимания рекомендуется ознакомиться с концепцией цепного правила производных и уравнений обратного распространения, представленных в главе 2 упомянутой книги.
Эта структура и понимание позволят корректно интерпретировать и вычислять градиенты, что является основой для обучения нейросетевых моделей.