Насколько необходимы функции активации после плотного слоя в нейронных сетях?
В настоящее время я впервые обучаю несколько рекуррентных сверточных нейронных сетей с глубоким q-обучением.
Вход - матрица 11x11x1, каждая сеть состоит из 4 сверточных слоев с размерами 3x3x16, 3x3x32, 3x3x64, 3x3x64. Я использую stride=1 и padding=1. За каждым convLayer следует активация ReLU. Выходной сигнал подается в полностью связанный плотный слой с прямой связью со 128 элементами, а затем в слой LSTM, также содержащий 128 элементов. Два следующих плотных слоя дают отдельные пары достоинства и ценности.
Итак, обучение длится пару дней, и теперь я понял (после прочтения статьи по теме), что не добавил функцию активации после первого плотного слоя (как в большинстве статей). Интересно, может ли добавление одного значительно улучшить мою сеть? Поскольку я тренирую сети для университета, у меня нет неограниченного времени для обучения из-за крайнего срока моей работы. Однако у меня недостаточно опыта в обучении нейронных сетей, чтобы решить, что делать... Что вы предлагаете? Благодарю за каждый ответ!
1 ответ
Если мне нужно говорить в целом, использование функции активации поможет вам включить некоторые нелинейные свойства в вашу сеть.
Назначение функции активации - добавить нелинейное свойство к функции, которая представляет собой нейронную сеть. Без функций активации нейронная сеть могла бы выполнять только линейные отображения входов x в выходы y. Почему это так?
Без функций активации единственной математической операцией во время прямого распространения будет скалярное произведение между входным вектором и весовой матрицей. Поскольку одно скалярное произведение является линейной операцией, последовательные скалярные произведения будут не чем иным, как несколькими линейными операциями, повторяющимися одна за другой. И последовательные линейные операции можно рассматривать как одну операцию обучения.
Нейронная сеть без какой-либо функции активации не смогла бы математически реализовать такие сложные сопоставления и не смогла бы решать задачи, которые мы хотим, чтобы сеть решала.