114
Часть II • Введение в TensorFlow.js
Рис. 3.3.
Суперпозиция линейных
(вверху) и нелинейных функций (внизу). В результате
суперпозиции линейных функций всегда получается тоже линейная функция, хотя и с новыми
угловыми коэффициентами и точками пересечения с осью координат. В результате же
суперпозиции нелинейных функций (таких как ReLU в этом примере) получаются нелинейные
функции совершенно другой формы. Из этого рисунка понятно, почему нелинейные
функции активации и их суперпозиция в нейронных сетях увеличивает выразительность
(то есть разрешающие возможности) последних
Листинг 3.2.
Описание трехслойной нейронной сети для задачи предсказания цен на бостонскую
недвижимость
Глава 3. Вводим нелинейность: теперь не только взвешенные суммы
115
Из выведенной функцией
summary()
(здесь мы ее не приводим) информации
видно, что модель включает три слоя, то есть на один слой больше, чем модель из
листинга 3.1. Кроме того, в ней намного больше параметров: 3251 вместо 701 из
двухслойной модели. Дополнительными 2550 весовыми параметрами мы обязаны
второму скрытому слою, состоящему из ядра формы
[50,
50]
и смещения фор
мы
[50]
.
Если повторить обучение модели несколько раз, можно понять, в каких рамках
находится MSE трехслойных сетей для контрольного набора данных (то есть при
оценке качества работы модели): приблизительно 10,8–13,4. Это соответствует
погрешности оценки, равной $3280–3660, что лучше, чем у двухслойной модели
($3700–3900). Таким образом, мы еще больше повысили точность предсказания
нашей модели, добавив нелинейные скрытые слои, а значит, и расширили ее раз
решающие возможности.
Избегаем нагромождения слоев без нелинейностей
Чтобы ощутить важность нелинейной функции активации для нашей усовершен
ствованной модели Bostonhousing, можно убрать ее из модели. Листинг 3.3 отлича
ется от листинга 3.1 только закомментированной строкой, в которой задается сигма
функция активации. В результате удаления пользовательской функции активации
в слое применяется линейная функция активации по умолчанию. Все остальные
аспекты модели, включая число слоев и весовые параметры, не меняются.
Листинг 3.3.
Двухслойная нейронная сеть без нелинейной функции активации
Как это изменение повлияло на обучение модели? Как вы увидите, если нажмете
снова кнопку
Train Neural Network Regressor (1 Hidden Layer)
в UI, MSE на контрольном
наборе данных взлетает до 25, по сравнению с диапазоном 14–15 при сигмафункции.
Другими словами, двухслойная модель без сигмафункции активации демонстри
рует такие же результаты, что и однослойный линейный регрессор!
Это подтверждает наши рассуждения по поводу суперпозиции линейных функ
ций. Убрав из первого слоя нелинейную функцию активации, мы получили модель,
соответствующую суперпозиции двух линейных функций. Как мы показали выше,
результат этой суперпозиции — третья линейная функция, никак не повышающая
116
Do'stlaringiz bilan baham: |