Должен ли я использовать вывод Softmax для обратного распространения?

Я смог внедрить Softmax, чтобы использовать это для функции стоимости Cross Entropy, но мой вопрос в том, должен ли я использовать вывод Softmax (т.е. вероятности) для обратного распространения и обновления весов?

Для меня это не совсем правильно, потому что Softmax возвращает вероятность, а не фактические значения нейронов.

Другой вариант — использовать вывод производной Softmax. Может кто-нибудь объяснить это, пожалуйста?


person Afshin Mehrabani    schedule 20.09.2017    source источник


Ответы (1)


Вы должны использовать сами значения для вычисления производных.

Уравнение для вычисления ошибки выходного слоя выглядит следующим образом (f — это функция активации, а f' — ее производная):

# outputs[a] represents the output of the (a)th layer
outputs[n] = f(outputs[n-1] . weights[n] + biases[n]) # final output

output_error = (outputs[n] - labels) * f'(outputs[n-1]) 

Обратите внимание, что f' применяется к outputs[n-1], а не outputs[n], поскольку outputs[n-1] является исходным входом для нашей функции f(outputs[n-1] . weights[n] + biases[n]).


Чтобы лучше понять, чем полезна производная и как она работает, давайте сначала посмотрим, какова ее цель (взято из Википедия):

Производная функции действительной переменной измеряет чувствительность к изменению значения функции (выходного) по отношению к изменению ее аргумента (входного значения).

По сути, он измеряет, насколько быстро (и в каком направлении) изменяется выходной сигнал при незначительном изменении входного сигнала (можно сказать, что он измеряет зависимость выходного сигнала от входного).

В сочетании с методом измерения ошибки нашей сети (функции стоимости) мы можем получить информацию о наилучшем способе настройки входных данных функций активации (которые являются нашими весами), чтобы результат был ближе к нашим желаемым меткам.

Мы умножаем ошибку на производную, и у нас есть небольшое обновление в направлении и пропорции, которые лучше всего оптимизируют функцию для достижения нашей цели. Обновление применяется к весам (которые являются входными данными функций активации), поэтому при следующем срабатывании функций активации выходные данные будут немного ближе к нашим меткам.

Теперь, что касается применения производной к результату функции или ее входным данным, поскольку мы хотим увидеть, насколько выходные данные нашей функции изменяются в зависимости от ее входных данных, производная должна принимать исходные входные данные функции, чтобы дать нам информацию. о них; вот почему производная применяется к входам слоя (которые в данном случае являются выходами последнего слоя).

Вы также можете провести следующий эксперимент, чтобы понять, почему это так:

softmax [-1, 0, 1] # [9.003057317038046e-2,0.24472847105479767,0.6652409557748219]
softmax' [-1, 0, 1] # [0.19661193324148185,0.25,0.19661193324148185]
softmax' (softmax [-1, 0, 1]) # [0.24949408957503114,0.24629379904081422,0.22426006146673663]

Как вы видите, softmax', примененное к результату softmax, не передает много информации об исходных значениях, поскольку полученные значения слишком близки друг к другу, но softmax', примененное к исходным входам softmax, дает информацию о пропорциях входов. .


Я рекомендую эту статью для объяснения уравнений обратного распространения: http://neuralnetworksanddeeplearning.com/chap2.html

person Mahdi Dibaiee    schedule 20.09.2017
comment
Спасибо Махди. Зачем нам нужно вычислять f'(outputs[n-1]) ? Правильно ли я предполагаю, что f' является производным от Softmax? Это немного сбивает меня с толку. Я думал, что мы используем Softmax только для выходного слоя, а не для других слоев (т.е. скрытых слоев). - person Afshin Mehrabani; 20.09.2017
comment
Да, f' является производным от softmax. Мы используем производную функций активации на их входах во время обратного распространения, чтобы увидеть, как функция ведет себя в соответствии со своими входами. Поскольку ваш последний слой использует softmax, вы должны использовать производную softmax во время обратного распространения на последнем слое, более ранние слои используют производную своей собственной функции активации. Я добавлю пояснения к ответу. - person Mahdi Dibaiee; 21.09.2017