ReLU (Rectified Linear Unit) является одной из наиболее популярных функций активации в современных нейронных сетях. Основная идея ReLU заключается в простом преобразовании входного значения: все отрицательные значения обнуляются, положительные проходят без изменений. Математически функция записывается как:
[ f(x) = (0, x)]
Ключевые свойства ReLU:
Однако стандартная ReLU имеет недостатки, главный из которых — «мертвые нейроны». Если весовой коэффициент слишком сильно смещает вход нейрона в отрицательную область, градиент там равен нулю, и нейрон перестаёт обучаться.
LeakyReLU решает проблему «мертвых нейронов» путём введения небольшого наклона для отрицательных значений:
[ f(x) = ]
где () — маленькое положительное число (обычно 0.01).
Особенности LeakyReLU:
В Keras.js LeakyReLU подключается через объект с параметром
alpha, который можно настраивать для конкретной задачи.
PReLU расширяет идею LeakyReLU, делая наклон для отрицательной области обучаемым параметром:
[ f(x) = ]
где () теперь является весовым коэффициентом, который оптимизируется вместе с остальными параметрами сети.
Преимущества PReLU:
В Keras.js параметр alpha задается как часть
конфигурации слоя, либо может быть инициализирован случайным образом и
оптимизироваться в процессе обучения.
ELU представляет собой более плавную функцию активации, сглаживающую переход через ноль и уменьшающую смещение средней активации:
[ f(x) = ]
где () обычно равно 1.
Свойства ELU:
ELU хорошо подходит для глубоких сетей и задач, где важна стабильность градиентов и ускорение сходимости.
ThresholdedReLU вводит пороговое значение (), при котором активация считается нулевой:
[ f(x) = ]
Особенности ThresholdedReLU:
В Keras.js theta задается в конфигурации слоя и может
быть адаптирован для каждого слоя индивидуально.
| Функция | Область отрицательных значений | Параметры для обучения | Особенности |
|---|---|---|---|
| ReLU | Обнуляются | Нет | Простота, риск «мертвых нейронов» |
| LeakyReLU | Наклон маленький α | Нет | Сохраняет градиенты, предотвращает «мертвые нейроны» |
| PReLU | Наклон обучаемый α | Да | Автоматическая адаптация наклона |
| ELU | Экспоненциальная функция | α (обычно фиксирован) | Плавный переход через ноль, ускоряет сходимость |
| ThresholdedReLU | Значения ≤ θ обнуляются | θ (порог) | Контроль разреженности, игнорирование слабых сигналов |
Все функции активации подключаются через конфигурацию слоя, например, при создании слоя Dense:
const layer = new KerasJS.layers.Dense({
units: 128,
activation: 'relu' // или 'leakyrelu', 'prelu', 'elu', 'thresholdedrelu'
});
Для LeakyReLU, PReLU и ThresholdedReLU необходимо дополнительно
указать параметры alpha или theta:
const layer = new KerasJS.layers.LeakyReLU({ alpha: 0.1 });
const preluLayer = new KerasJS.layers.PReLU({ alpha_initializer: 'zeros' });
const thresholdLayer = new KerasJS.layers.ThresholdedReLU({ theta: 1.0 });
Правильная настройка этих функций активации позволяет повысить стабильность обучения, ускорить сходимость и улучшить обобщающую способность сети, особенно в глубоких или сложных архитектурах.