Проблема в следующем:
Получите градиент относительно входного слоя для нейронной сети с одним скрытым слоем, используя сигмоид для ввода -> скрытый, softmax для скрытого -> выход, с перекрестной потерей энтропии.
Я могу пройти через большую часть деривации, используя правило цепочки, но я не уверен, как на самом деле «связать» их вместе.
Определить некоторые обозначения
, σ - сигмовидная функция
,
,Sявляется функцией SoftMax
, у реальна одну метку горячей вектор
Тогда по правилу цепи,
Отдельные градиенты:
Теперь мы должны объединить определения. В простой переменной это просто, мы просто умножаем все вместе. В векторах я не уверен, использовать ли поэлементное умножение или матричное умножение.
Где - поэлементное умножение векторов, а - матричное умножение. Эта комбинация операций - единственный способ, которым я мог бы связать их вместе, чтобы получить вектор размерности , который, как я знаю, должен быть .
У меня вопрос: какой принципиальный способ для меня выяснить, какой оператор использовать? Меня особенно смущает необходимость поэлементного между и .
Спасибо!
источник
Ответы:
Я считаю, что ключом к ответу на этот вопрос является указание на то, что поэлементное умножение на самом деле является условным обозначением, и поэтому, когда вы выводите уравнения, вы фактически никогда не используете его.
Фактическая операция - это не поэлементное умножение, а стандартное матричное умножение градиента на якобиан , всегда .
В случае нелинейности якобиан векторного вывода нелинейности относительно векторного ввода нелинейности оказывается диагональной матрицей. Поэтому верно, что градиент, умноженный на эту матрицу, эквивалентен градиенту выходной нелинейности по отношению к элементу потерь, умноженному на вектор, содержащий все частные производные нелинейности по отношению к входу нелинейности, но это следует из диагонали якобиана. Вы должны пройти через шаг Якобиана, чтобы добраться до поэлементного умножения, которое может объяснить вашу путаницу.
В математике мы имеем некоторую нелинейность , потерю и вход в нелинейность (это может быть любой тензор). Выход нелинейности имеет то же измерение --- что, как говорит @Logan, функция активации определяется поэлементно.s L x∈Rn×1 s(x)∈Rn×1
Мы хотим, чтобы
Где - якобиан . Раскрывая этот якобиан, мы получаем∂s(x)∂x s
Мы видим, что он везде нулевой, кроме диагонали. Мы можем сделать вектор из всех его диагональных элементов
А затем используйте поэлементный оператор.
источник
Всякий раз, когда обратно пропорциональны функции активации, операции становятся поэлементными. В частности, используя ваш пример, является производной обратного распространения, а является производной активации, а их произведение является поэлементным произведением, . Это потому, что функции активации определяются как поэлементные операции в нейронной сети.δ2=(y^−y)WT2 a′=h∘(1−h) δ2∘a′
См. Слайды лекций cs224d, стр. 30, это также может помочь.
источник