112
Часть II • Введение в TensorFlow.js
Помимо сигмафункции, в глубоком обучении нередко используется еще не
сколько видов дифференцируемых нелинейных функций. В их числе ReLU и ги
перболический тангенс (th). Мы опишем их подробнее, когда встретим в следующих
примерах.
Нелинейность и разрешающие
возможности модели
Почему нелинейность повышает точность модели? Благодаря нелинейным функ
циям можно выражать более разнообразные отношения входного и выходного
сигналов. Многие из таких отношений на практике оказываются практически
линейными, как в нашем примере со временем скачивания из предыдущей главы.
Но многие прочие отношения — нет. Привести примеры нелинейных отношений не
сложно. Рассмотрим отношение между ростом и возрастом человека. Рост меняется
с возрастом практически линейно лишь до определенного момента, после которого
график изгибается и перестает расти. Или другой вполне возможный сценарий: цены
на дома линейно обратно зависят от уровня преступности в микрорайоне, только
если уровень преступности находится в определенных пределах. Чисто линейная
модель наподобие той, которую мы создали в предыдущей главе, не может точно
смоделировать такие отношения, для этой цели гораздо лучше подойдет нелинейная
сигмафункция. Конечно, отношение уровня преступности к ценам на дома скорее
напоминает перевернутую (убывающую) сигмафункцию, а не исходную, показан
ную в левом блоке рис. 3.2. Но для нашей нейронной сети не составит никаких труд
ностей смоделировать это соотношение, поскольку перед сигмафункцией активации
и после нее есть линейные функции с подстраиваемыми весами.
Но не утратит ли наша модель способность усваивать линейные отношения из
данных при замене линейной функции активации на нелинейную, наподобие сиг
мафункции? К счастью, ответ — нет. Дело в том, что часть графика сигмафункции
(около центра) достаточно близка к прямой линии. Графики других часто исполь
зуемых нелинейных функций активации, например th и ReLU, также включают
линейные или близкие к линейным фрагменты. Если связи между определенными
элементами входного и выходного сигналов приближенно линейны, плотный слой
с нелинейной функцией активации вполне может усвоить веса и смещения, под
ходящие для использования почти линейных фрагментов функции активации.
Поэтому включение в плотный слой нелинейной функции активации дает чистый
выигрыш в смысле диапазона доступных ему для усвоения связей входного и вы
ходного сигналов.
Более того, нелинейные функции можно соединять последовательно и получать,
в отличие от линейных, новые нелинейные функции с большими возможностями.
«Последовательно»
здесь означает подачу выходного сигнала одной функции на
вход следующей. Пусть дано две линейные функции:
f(x) = k1 * x + b1
и
g(x) = k2 * x + b2