Я не нашел публикаций о том, почему использование softmax в качестве активации в скрытом слое - не лучшая идея (кроме Quora вопрос, который вы, вероятно, уже читали), но я постараюсь объяснить, почему это не лучшая идея использовать его в этом случае:
1. Независимость переменных: прилагается много усилий для того, чтобы ваши переменные оставались независимыми, некоррелированными и довольно редкими. Если вы используете слой softmax как скрытый слой - тогда вы сохраните все свои узлы (скрытые переменные) линейно зависимыми, что может привести к множеству проблем и плохому обобщению.
2. Проблемы с обучением: попробуйте представить, что для улучшения работы вашей сети вам нужно сделать часть активаций из вашего скрытого слоя немного ниже. Затем - автоматически вы делаете остальные из них, чтобы иметь среднюю активацию на более высоком уровне, что на самом деле может увеличить ошибку и навредить вашей фазе обучения.
3. Математические вопросы: создавая ограничения для активации вашей модели, вы уменьшаете выразительную силу вашей модели без какого-либо логического объяснения. На мой взгляд, не стоит стремиться к тому, чтобы все активации были одинаковыми.
4. Пакетная нормализация делает это лучше: можно учесть тот факт, что постоянный средний выходной сигнал сети может быть полезен для обучения. Но, с другой стороны, уже доказано, что метод под названием Пакетная нормализация работает лучше, тогда как сообщалось, что установка softmax в качестве функции активации в скрытом слое может снизить точность и скорость обучения.
person
Marcin Możejko
schedule
02.06.2016