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

Я прочитал ответ, данный здесь. Мой точный вопрос относится к принятому ответу:

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

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

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

Я не понимаю, как вы достигаете такой гибкости даже в сигмовидном скрытом нейроне, где вы можете точно настроить активацию конкретного данного нейрона, что и является работой градиентного спуска. Так почему же мы вообще беспокоимся об этом вопросе. Если вы можете реализовать обратную опору, об остальном позаботится градиентный спуск. Точная настройка весов для корректной активации — это не то, что вы, даже если бы могли сделать, не смогли бы сделать. (Пожалуйста, поправьте меня, если я здесь ошибаюсь)

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

Пожалуйста, объясните, что здесь говорится

  1. Пакетная нормализация: я понимаю это, здесь нет проблем

person Nitin Siwach    schedule 28.05.2017    source источник


Ответы (1)


1/2. Я не думаю, что вы имеете представление о том, что пытается сказать автор. Представьте себе слой с 3 узлами. 2 из этих узлов имеют нулевую ответственность за ошибку вывода; так что есть один узел, который нужно настроить. Таким образом, если вы хотите улучшить вывод узла 0, вы немедленно повлияете на узлы 1 и 2 в этом слое, что может сделать вывод еще более неправильным.

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

Это определение обратного распространения. Это именно то, что вам нужно. Нейронные сети полагаются на активации (которые нелинейны) для отображения функции.

3. Вы, по сути, говорите каждому нейрону: «Эй, ваш вывод не может быть больше, чем x, потому что какой-то другой нейрон в этом слое уже имеет значение y». Поскольку все нейроны в слое softmax должны иметь общую активацию 1, это означает, что нейроны не могут быть выше определенного значения. Для маленьких слоев - маленькая проблема, а для больших слоев - большая проблема. Представьте себе слой со 100 нейронами. Теперь представьте, что их общий объем производства должен быть 1. Среднее значение этих нейронов будет 0.01 -> это означает, что вы устанавливаете сетевое соединение, полагаясь (поскольку в среднем активация будет оставаться очень низкой) - поскольку другие функции активации выводят (или принимают на вход) диапазон (0:1 / -1:1).

person Thomas Wagenaar    schedule 28.05.2017
comment
Точно. Ты прав - person Marcin Możejko; 29.05.2017