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

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

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

4 ответов


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

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

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

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

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


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

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

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

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

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

надеюсь, что это помогает!

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


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


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

страница 198 из Глубокое Обучение (Goodfellow, Bengio, Courville)

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