Дифференциальное и матричное исчисление
Производные функций активации
exp, log, sigmoid, tanh, ReLU — и почему у ReLU в нуле производной нет
Экспонента и логарифм
Первое — определяющее свойство экспоненты: единственная функция, равная своей производной (с точностью до множителя). Из него следует и всё остальное про неё.
Для машинного обучения важнее производная логарифма, потому что в лоссах
почти всегда стоит . Обратите внимание на : при малом производная
огромна. Именно поэтому при ведёт себя численно плохо, и
существует log_softmax вместо log(softmax(x)).
Сигмоида
Формула производной через саму функцию — не красивое совпадение, а причина, по которой сигмоида пережила десятилетия: при обратном проходе значение уже посчитано на прямом, и производная берётся бесплатно.
Вывести стоит один раз самому: , по правилу цепочки , а дальше заметить, что это и есть .
Максимум производной — в нуле, и он равен . Это уже сигнал проблемы: множитель на каждом слое означает, что через десять слоёв градиент ослабнет как минимум в раз. Так выглядит затухание градиента, и это арифметика, а не мистика.
Гиперболический тангенс
Та же структура: производная через саму функцию. Максимум производной равен — вчетверо больше, чем у сигмоиды, — и функция центрирована в нуле. Оба свойства делают предпочтительнее сигмоиды для скрытых слоёв, и именно поэтому сигмоида осталась только там, где нужна вероятность на выходе.
Сравните графики и их производные — переключатель графика производной для этого и нужен:
- x
- 0.6
- f(x)
- 0.65
- f'(x)
- 0.23
ReLU и её точка излома
Производная равна при и при . В нуле производной не существует — ровно как у из прошлого урока: слева наклон , справа .
Что делают библиотеки: возвращают . Это соглашение, а не вычисление, и знать об этом стоит по двум причинам.
Первая: в ноль попадают ровно с нулевой вероятностью на реальных данных, поэтому практического значения выбор почти не имеет. Вторая: значение имеет то, что градиент равен нулю на всей отрицательной полуоси. Нейрон, ушедший в отрицательную зону для всех входов, перестаёт обучаться навсегда — «мёртвый ReLU». Отсюда LeakyReLU, GELU и прочие сглаженные варианты: они возвращают ненулевой градиент влево.
Формально ReLU не дифференцируема, но субдифференцируема, и градиентный спуск на таких функциях работает. Строгую теорию субградиентов план сознательно пропускает — достаточно знать, что происходящее законно.
Таблица, которую стоит держать в голове
| что помнить | ||
|---|---|---|
| равна своей производной | ||
| взрывается при | ||
| степень падает на единицу | ||
| максимум | ||
| максимум | ||
| или | в нуле не определена |
Через все производные активаций проходит одна мысль: множитель, который слой вносит в градиент, определяет, выживет ли сигнал после десятка слоёв. Здесь мы смотрим на неё одномерно; в блоке 6 то же самое станет разговором про инициализацию и остаточные связи.
Источники
- Deisenroth, Faisal, Ong — Mathematics for Machine Learning, гл. 5.2 — Правила дифференцирования, элементарные функции
- Goodfellow, Bengio, Courville — Deep Learning, гл. 6.3 — Функции активации и их свойства
Проверки
0 из 2Максимум производной сигмоиды
Чему равно максимальное значение ?
Подсказка: , а пробегает интервал . Значит нужно найти максимум по .
Ответ — десятичная дробь.
Активации и их производные
Реализуйте
activation(name, x)— верните список[f(x), f'(x)]для указанной активации.Поддержать нужно четыре имени:
"sigmoid"— , производная ;"tanh"— производная ;"relu"— , производная при и при ; в нуле возвращайте , как это делают библиотеки;"exp"— производная равна самой функции.
Считайте производную через уже вычисленное значение, а не заново: именно так это делается в реальных реализациях, и именно поэтому у сигмоиды и тангенса такие формулы производных ценны.
Для незнакомого имени верните
null(в PythonNone).Загрузка редактора…
Ctrl/⌘ + Enter