Я изучаю и пытаюсь реализовать сверточные нейронные сети, но я полагаю, что этот вопрос относится к многослойным персептронам в целом.
Выходные нейроны в моей сети представляют активацию каждого класса: самый активный нейрон соответствует предсказанному классу для данного входа. Чтобы учесть стоимость кросс-энтропии для обучения, я добавляю слой softmax в конце сети, чтобы значение активации каждого нейрона интерпретировалось как значение вероятности.
Мой вопрос: должны ли нейроны в выходном слое применять нелинейную функцию к входу? Моя интуиция заключается в том, что в этом нет необходимости:
- если вход в -му выходной нейрон является скалярным произведением между вектором (исходя из предыдущего слоя) , а весовые коэффициенты & для этого нейрона,
- и если я использую монотонную нелинейную функцию, такую как сигмоид или ReLU
- тогда больший выход активации будет по-прежнему соответствовать наибольшему , поэтому с этой точки зрения нелинейная функция не изменит прогноз.
Что-то не так с этой интерпретацией? Есть ли какие-то тренировочные факторы, которые я пропускаю, которые делают нелинейность вывода необходимой?
РЕДАКТИРОВАТЬ
Со ссылкой на ответ Карела, чей ответ в основном был «это зависит», вот более подробное описание моей сети и сомнения:
Предположим, у меня есть N скрытых слоев, и мой выходной слой представляет собой просто слой softmax над набором нейронов, представляющих классы (поэтому мой ожидаемый результат - вероятность того, что входные данные принадлежат каждому классу). Предполагая, что первые N-1 слои имеют нелинейные нейроны, в чем разница между использованием нелинейных и линейных нейронов в N-м скрытом слое?
Ответы:
Не следует использовать нелинейность для последнего слоя перед классификацией softmax. Нелинейность ReLU (используемая сейчас почти исключительно) будет в этом случае просто отбрасывать информацию, не добавляя никаких дополнительных преимуществ. Вы можете посмотреть на реализацию caffe известного AlexNet, чтобы узнать, что сделано на практике.
источник
Возможно, вы захотите отправить отрицательное значение в функцию softmax, чтобы указать, что событие имеет низкую вероятность. Если вы передадите входные значения в relu, то сеть не будет пропускать градиент через единицы измерения, где вход в relu отрицательный. Таким образом, хотя выразительная сила softmax не меняется, это, вероятно, сделает обучение намного сложнее.
источник
Ответ не да или нет. Это сильно зависит от ваших ожиданий относительно вашей сети. Я предполагаю, что вы хотите иметь хороший классификатор, возможно применимый к широкому кругу проблем. Следовательно, нелинейность может быть полезна для захвата нетривиальных классов. Нелинейность может быть включена либо в последний уровень перед слоем soft-max, либо в предыдущий уровень.
источник