Нейронная сеть: Matlab использует разные функции активации для разных слоев - почему?
Я обучен на MATLAB искусственной нейронной сети с одним входным слоем, одним скрытым слоем и одним выходным слоем (мой выход значения между нулем и единицей, которую я превращаются в 0 или 1 в соответствии с Treshold 0,5).
Я заметил, что по умолчанию Matlab использовал функцию передачи tansig для скрытого слоя, а затем функцию передачи logsig для выходного слоя . Может ли кто-нибудь дать мне объяснение этому?
Заранее спасибо!
Ответы
Основная идея заключается в том, что нет особого требования, чтобы все уровни нейронной сети использовали одну и ту же функцию активации. Вы можете смешивать и сочетать, как хотите. Тем не менее, есть несколько причин предпочесть использование$\tanh$ как функция активации скрытого слоя и $\sigma$ в качестве выходной функции.
В $\tanh(x)=\frac{\exp(x)-\exp(-x)}{\exp(x)+\exp(-x)}$функция - это стандартная функция активации. Использование его в нейронной сети не более удивительно, чем использование метода наименьших квадратов в качестве целевой функции для задачи регрессии.
Функция $\sigma(x)=\frac{1}{1+\exp(-x)}$это стандартный способ сопоставить действительные числа с действительными значениями в (0,1). Так что это обычно используется для моделирования вероятностей. Поскольку ваша задача - предсказать 0 или 1, использование этой модели предполагает моделирование вероятности того, что выборка будет помечена как 1.
Используя $\tanh$ функция в последнем слое была бы неправдоподобной, потому что она не имеет четкого отношения к моделированию вероятности того, что выборка помечена 1. Функция $\tanh$ возвращает значения от -1 до 1, поэтому это не вероятность.
Если хотите, можете использовать $\sigma(x)$в качестве функции активации. Но$\tanh$является предпочтительным, потому что наличие более сильного градиента и положительные и отрицательные выходные данные упрощают оптимизацию. Смотрите: функция активации tanh против функции активации сигмовидной кишки
Но также обратите внимание, что ReLU и подобные функции обычно предпочтительны в качестве функций активации на скрытых слоях. См .: Каковы преимущества ReLU перед сигмоидной функцией в глубоких нейронных сетях?
Выбор использования $\tanh$поскольку значение по умолчанию , вероятно, больше связано с практикой разработки программного обеспечения, чем с математическими принципами: изменение поведения программного обеспечения по умолчанию может нарушить унаследованный код и вызвать неожиданное поведение. Модули ReLU стали популярными только недавно , по сравнению с эпохой MATLAB. Надстройка Neural Network Toolbox впервые была опубликована в 1992 году (с тех пор она была переименована в «Deep Learning Toolbox»). В 1992 году создание нейронной сети было почти синонимом однослойной сети с$\tanh$ или же $\sigma$ функции активации.
Но вряд ли будет какое-либо окончательное объяснение того, почему MATLAB выбрал это значение по умолчанию, если только они не опубликовали обоснование этого выбора (например, примечания к выпуску или документация).