Нелинейность перед конечным слоем Softmax в сверточной нейронной сети

12

Я изучаю и пытаюсь реализовать сверточные нейронные сети, но я полагаю, что этот вопрос относится к многослойным персептронам в целом.

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

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

  • если вход в я -му выходной нейрон является скалярным произведением ИксTθя между вектором Икс (исходя из предыдущего слоя) , а весовые коэффициенты & θя для этого нейрона,
  • и если я использую монотонную нелинейную функцию, такую ​​как сигмоид или ReLU
  • тогда больший выход активации будет по-прежнему соответствовать наибольшему ИксTθя , поэтому с этой точки зрения нелинейная функция не изменит прогноз.

Что-то не так с этой интерпретацией? Есть ли какие-то тренировочные факторы, которые я пропускаю, которые делают нелинейность вывода необходимой?

Максимум(0,ИксTθя)

РЕДАКТИРОВАТЬ

Со ссылкой на ответ Карела, чей ответ в основном был «это зависит», вот более подробное описание моей сети и сомнения:

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


рант
источник
Являются ли слои N-2, N-3, .. 1 линейными или нелинейными?
Карел Мацек
Слои от 1 (ближайшего к входу) до N-1 являются нелинейными. Слой N - последний (ближе к выходу) скрытый слой. Слой softmax - это слой N + 1.
ранд
1
Как насчет слоя BN прямо перед softmax? это нелинейность хорошо? (это считается нелинейностью?)
Чарли Паркер

Ответы:

11

Не следует использовать нелинейность для последнего слоя перед классификацией softmax. Нелинейность ReLU (используемая сейчас почти исключительно) будет в этом случае просто отбрасывать информацию, не добавляя никаких дополнительных преимуществ. Вы можете посмотреть на реализацию caffe известного AlexNet, чтобы узнать, что сделано на практике.

PIR
источник
2
Как насчет слоя BN прямо перед softmax? это нелинейность хорошо? (это считается нелинейностью?)
Чарли Паркер
6

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

Алекс Лэмб
источник
0

Ответ не да или нет. Это сильно зависит от ваших ожиданий относительно вашей сети. Я предполагаю, что вы хотите иметь хороший классификатор, возможно применимый к широкому кругу проблем. Следовательно, нелинейность может быть полезна для захвата нетривиальных классов. Нелинейность может быть включена либо в последний уровень перед слоем soft-max, либо в предыдущий уровень.

Карел Мацек
источник
Можете ли вы взглянуть на мое редактирование?
ранг