Глава 3. Вводим нелинейность: теперь не только взвешенные суммы
111
функции — кривая (см. рис. 3.2,
левый блок
), а график ReLU склеен из двух прямых
сегментов (см. рис. 3.2,
правый блок
). И хотя сигмафункция и ReLU нелинейные,
в числе их свойств — гладкость и дифференцируемость во всех точках, что позволяет
производить с их помощью обратное распространение ошибки
1
. Без этих свойств
невозможно было бы обучать модели, включающие слои с подобной функцией
активации.
Рис. 3.1.
Модель линейной регрессии (блок A) и двухслойная нейронная сеть (блок Б)
для набора данных Boston-housing. Ради большей наглядности мы снизили число входных
признаков с 12 до 3, а число нейронов скрытого слоя — с 50 до 5 в блоке Б. У каждой модели
только один выходной нейрон, поскольку они служат для решения задачи простой (univariate)
регрессии (в роли целевой переменной выступает одно число). Блок Б иллюстрирует
нелинейную активацию скрытого слоя модели
Рис. 3.2.
Две функции активации, часто применяемые для глубоких нейронных сетей.
Слева: сигма-функция S(x) = 1 / (1 + e ^ –x).
Справа: функция-выпрямитель (ReLU) relu(x) = {0:x < 0, x:x >= 0}
1
См. подраздел 2.2.2, чтобы освежить знания о методе обратного распространения ошибки.
112
Часть II • Введение в TensorFlow.js
Помимо сигмафункции, в глубоком обучении нередко используется еще не
сколько видов дифференцируемых нелинейных функций. В их числе ReLU и ги
перболический тангенс (th). Мы опишем их подробнее, когда встретим в следующих
примерах.
Нелинейность и разрешающие возможности модели
Почему нелинейность повышает точность модели? Благодаря нелинейным функ
циям можно выражать более разнообразные отношения входного и выходного
сигналов. Многие из таких отношений на практике оказываются практически
линейными, как в нашем примере со временем скачивания из предыдущей главы.
Но многие прочие отношения — нет. Привести примеры нелинейных отношений не
сложно. Рассмотрим отношение между ростом и возрастом человека. Рост меняется
с возрастом практически линейно лишь до определенного момента, после которого
график изгибается и перестает расти. Или другой вполне возможный сценарий: цены
на дома линейно обратно зависят от уровня преступности в микрорайоне, только
если уровень преступности находится в определенных пределах. Чисто линейная
модель наподобие той, которую мы создали в предыдущей главе, не может точно
смоделировать такие отношения, для этой цели гораздо лучше подойдет нелинейная
сигмафункция. Конечно, отношение уровня преступности к ценам на дома скорее
напоминает перевернутую (убывающую) сигмафункцию, а не исходную, показан
ную в левом блоке рис. 3.2. Но для нашей нейронной сети не составит никаких труд
ностей смоделировать это соотношение, поскольку перед сигмафункцией активации
и после нее есть линейные функции с подстраиваемыми весами.
Но не утратит ли наша модель способность усваивать линейные отношения из
данных при замене линейной функции активации на нелинейную, наподобие сиг
мафункции? К счастью, ответ — нет. Дело в том, что часть графика сигмафункции
(около центра) достаточно близка к прямой линии. Графики других часто исполь
зуемых нелинейных функций активации, например th и ReLU, также включают
линейные или близкие к линейным фрагменты. Если связи между определенными
элементами входного и выходного сигналов приближенно линейны, плотный слой
с нелинейной функцией активации вполне может усвоить веса и смещения, под
ходящие для использования почти линейных фрагментов функции активации.
Поэтому включение в плотный слой нелинейной функции активации дает чистый
выигрыш в смысле диапазона доступных ему для усвоения связей входного и вы
ходного сигналов.
Более того, нелинейные функции можно соединять последовательно и получать,
в отличие от линейных, новые нелинейные функции с большими возможностями.
«Последовательно»
здесь означает подачу выходного сигнала одной функции на
вход следующей. Пусть дано две линейные функции:
f(x) = k1 * x + b1
и
g(x) = k2 * x + b2
Do'stlaringiz bilan baham: |