Какова роль функции активации в нейросети
Что проверяют
Понимаете ли вы, зачем сети вообще нелинейность, и можете ли объяснить выбор функции, а не просто назвать три штуки.
Как отвечать
Функция активации применяется к выходу нейрона и делает преобразование нелинейным. Без неё сеть любой глубины схлопывается в одно линейное преобразование: композиция линейных функций линейна, и сотня слоёв решает ровно те же задачи, что и один. Вся способность приближать сложные зависимости появляется именно отсюда.
Дальше по функциям, коротко и с назначением:
- ReLU
max(0, x): стандарт для скрытых слоёв, дёшева и не насыщается на положительной стороне. Побочный эффект в «мёртвых нейронах», которые навсегда ушли в ноль; - Leaky ReLU, ELU, GELU: лечат мёртвые нейроны, оставляя небольшой наклон слева. GELU по умолчанию в трансформерах;
- сигмоида: сжимает в интервал от нуля до единицы, поэтому уместна в выходном слое бинарной классификации. В скрытых слоях почти не используется из-за затухающего градиента;
- tanh: та же форма, но центрирована в нуле, сходимость обычно лучше сигмоиды;
- softmax: выходной слой многоклассовой задачи, превращает логиты в распределение вероятностей;
- линейная (без активации): выход регрессии, где ответ это произвольное число.
Правило выбора звучит просто: в скрытых слоях ReLU или её вариант, в выходном слое функция определяется задачей.
Где спотыкаются
Ставят сигмоиду во все скрытые слои и удивляются, что глубокая сеть не учится: градиент затухает на каждом слое.
Применяют softmax к задаче с несколькими одновременными метками. Там нужна сигмоида на каждый выход, потому что классы не исключают друг друга.
Забывают, что при обучении обычно считают softmax внутри функции потерь (например, CrossEntropyLoss в PyTorch), и добавляют его вторым слоем вручную. Получается двойное применение и испорченные градиенты.