Почему использовать softmax только в выходном слое, а не в скрытых слоях?

Большинство примеров нейронных сетей для задач классификации, которые я видел, используют слой softmax в качестве функции активации вывода. Обычно другие скрытые блоки используют функцию сигмоида, tanh или ReLu в качестве функции активации. Использование функции softmax здесь - насколько мне известно - также сработает математически.

  • Каковы теоретические обоснования отказа от использования функции softmax в качестве функций активации скрытого слоя?
  • Есть какие-то публикации по этому поводу, что бы процитировать?

person beyeran    schedule 02.06.2016    source источник
comment
Почему вы вообще думаете об использовании активации softmax в скрытом слое? У вас есть мотивация для этого?   -  person Marcin Możejko    schedule 02.06.2016
comment
Просто согласованность - так я бы использовал одну и ту же активацию по всей сети.   -  person beyeran    schedule 02.06.2016
comment
Другая мотивация состоит в том, что мы можем интерпретировать каждый уровень как полиномиальную логистическую регрессию и все хорошие статистические свойства, которые он включает (например, существует интерпретация весов).   -  person Jorge Leitao    schedule 05.07.2017


Ответы (5)


Я не нашел публикаций о том, почему использование softmax в качестве активации в скрытом слое - не лучшая идея (кроме Quora вопрос, который вы, вероятно, уже читали), но я постараюсь объяснить, почему это не лучшая идея использовать его в этом случае:

1. Независимость переменных: прилагается много усилий для того, чтобы ваши переменные оставались независимыми, некоррелированными и довольно редкими. Если вы используете слой softmax как скрытый слой - тогда вы сохраните все свои узлы (скрытые переменные) линейно зависимыми, что может привести к множеству проблем и плохому обобщению.

2. Проблемы с обучением: попробуйте представить, что для улучшения работы вашей сети вам нужно сделать часть активаций из вашего скрытого слоя немного ниже. Затем - автоматически вы делаете остальные из них, чтобы иметь среднюю активацию на более высоком уровне, что на самом деле может увеличить ошибку и навредить вашей фазе обучения.

3. Математические вопросы: создавая ограничения для активации вашей модели, вы уменьшаете выразительную силу вашей модели без какого-либо логического объяснения. На мой взгляд, не стоит стремиться к тому, чтобы все активации были одинаковыми.

4. Пакетная нормализация делает это лучше: можно учесть тот факт, что постоянный средний выходной сигнал сети может быть полезен для обучения. Но, с другой стороны, уже доказано, что метод под названием Пакетная нормализация работает лучше, тогда как сообщалось, что установка softmax в качестве функции активации в скрытом слое может снизить точность и скорость обучения.

person Marcin Możejko    schedule 02.06.2016
comment
Спасибо! Я думаю, что эти пункты - хорошие ориентиры для поиска в публикациях. Структура аргументации прочна и понятна. - person beyeran; 03.06.2016
comment
stackoverflow.com/ questions / 44223902 / - person Thomas Wagenaar; 28.05.2017
comment
это не лучшая идея, пока кто-нибудь не попробует и не откроет для себя что-то великое! - person Seymour; 24.03.2020

На самом деле, функции Softmax уже используются глубоко внутри нейронных сетей, в некоторых случаях, когда имеют дело с дифференцируемой памятью и с механизмами внимания!

Слои Softmax могут использоваться в нейронных сетях, например, в нейронных машинах Тьюринга (NTM) и в улучшенной из тех, которые Дифференцируемого Neural компьютера (DNC).

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

Вкратце поясняется, что функция softmax позволяет нормализовать выборку памяти и другие подобные особенности для адресации памяти на основе содержимого. Об этом мне очень понравилась эта статья, которая иллюстрирует операции в NTM и других последних архитектурах RNN. с интерактивными фигурами.

Более того, Softmax используется в механизмах привлечения внимания, например, для машинного перевода, например, в этой статье. Softmax позволяет нормализовать места, на которые распределено внимание, чтобы «мягко» удерживать максимальное место, на которое можно было бы обратить внимание: то есть также мягко уделять немного внимания другим местам. Тем не менее, это можно рассматривать как мини-нейронную сеть, которая занимается вниманием внутри большой, как объясняется в статье. Таким образом, можно спорить о том, используется ли Softmax только в конце нейронных сетей.

Надеюсь, это поможет!

Изменить - в последнее время даже можно увидеть модели нейронного машинного перевода (NMT), в которых используется только внимание (с softmax), без каких-либо RNN или CNN: http://nlp.seas.harvard.edu/03.04.2018/Внимание.html

person Guillaume Chevalier    schedule 09.03.2017

Используйте активацию softmax везде, где вы хотите смоделировать полиномиальное распределение. Это может быть (обычно) выходной уровень y, но также может быть промежуточный уровень, например, полиномиальная скрытая переменная z. Как упоминалось в этом потоке для выходов {o_i}, sum({o_i}) = 1 является линейной зависимостью, которая преднамеренно используется на этом уровне. Дополнительные слои могут обеспечить желаемую разреженность и / или независимость функций ниже по потоку.

Страница 198 из Deep Learning (Goodfellow, Bengio, Courville)

Каждый раз, когда мы хотим представить распределение вероятностей по дискретной переменной с n возможными значениями, мы можем использовать функцию softmax. Это можно рассматривать как обобщение сигмовидной функции, которая использовалась для представления распределения вероятностей по двоичной переменной. Функции Softmax чаще всего используются в качестве выходных данных классификатора для представления распределения вероятностей по n различным классам. Реже функции softmax могут использоваться внутри самой модели, если мы хотим, чтобы модель выбирала один из n различных вариантов для некоторой внутренней переменной.

person k3f9f2kf2    schedule 29.01.2018

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

person Nagabhushan Baddi    schedule 02.06.2016
comment
Вы косвенно ответили на мой вопрос: вообразите 2000 единиц для скрытого слоя. Сумма выходов будет равна 1, а softmax будет начинать с двух крайних малых чисел для каждого выхода. Я все еще интересуюсь некоторыми публикациями по этому поводу. - person beyeran; 02.06.2016
comment
Использование softmax в выходном слое и скрытом слое по-прежнему гарантирует, что сумма выходного вектора равна 1. Вопрос в том, почему только в выходном слое. - person Jorge Leitao; 05.07.2017

Функция Softmax - одна из наиболее важных функций вывода, используемых при глубоком обучении в нейронных сетях (см. «Понимание Softmax за минуту» от Uniqtech). Функция Softmax применяется там, где есть три или более классов результатов. Формула softmax берет е, увеличенное до показателя степени каждого значения, и делит его на сумму e, увеличенную до значений показателей экспоненты. Например, если я знаю, что баллы Logit для этих четырех классов равны: [3,00, 2,0, 1,00, 0,10], чтобы получить выходные данные вероятностей, функцию softmax можно применить следующим образом:

  1. импортировать numpy как np

  2. def softmax (x):

  3. z = np.exp (x - np.max (x))
  4. вернуть z / z.sum ()
  5. баллы = [3,00, 2,0, 1,00, 0,10]
  6. печать (softmax (оценки))

  7. Выход: вероятности (p) = 0,642 0,236 0,087 0,035

Сумма всех вероятностей (p) = 0,642 + 0,236 + 0,087 + 0,035 = 1,00. Вы можете попробовать заменить любое известное вам значение в приведенных выше оценках, и вы получите другие значения. Сумма всех значений или вероятностей будет равна единице. В этом есть смысл, потому что сумма всех вероятностей равна единице, тем самым превращая оценки Logit в оценки вероятностей, чтобы мы могли лучше предсказывать. Наконец, вывод softmax может помочь нам понять и интерпретировать полиномиальную логит-модель. Если вам нравятся мысли, оставьте свои комментарии ниже.

person Dr Hazael Brown    schedule 01.03.2020
comment
Использование функции вывода softmax в глубоком обучении в нейронных сетях (см. «Понимание Softmax за минуту» от Uniqtech). - person Dr Hazael Brown; 03.03.2020