Глава 4. Распознавание изображений и звуковых сигналов
175
у слоя дропаута лишь один настроечный параметр: частота дропаута (например,
два поля
rate
, как показано в листинге 4.5). Для примера допустим, что частота
дропаута в этом слое задана равной
0.25
, а входной тензор представляет собой
одномерный тензор со значением
[0.7,
-0.3,
0.8,
-0.4]
; при этом выходной
тензор может оказаться, например, таким:
[0.7,
-0.3,
0,
-0.4]
— случайным об
разом было выбрано и обнулено 25 % элементов входного тензора. Аналогичным
образом осуществляется подобное случайное обнуление и тензора градиентов
слоя дропаута.
z
z
На этапе вывода (во время вызовов методов
Model.predict()
и
Model.evaluate()
)
слой дропаута
не
обнуляет случайным образом элементы входного тензора —
входные данные просто проходят по нему без изменений (тождественное ото
бражение).
На рис. 4.11 приведен пример работы слоя дропаута с двумерным входным тен
зором во время обучения и контроля.
Может показаться странным, что такой
простой алгоритм оказывается одним из
лучших способов борьбы с переобучением.
Почему же он столь хорош? Джефф Хин
тон, который создал (помимо множества
прочих вещей в сфере нейронных сетей)
алгоритм дропаута, говорит, что его вдох
новил используемый во многих банках
механизм предотвращения мошенничества
со стороны сотрудников. Он рассказывает:
«Я отправился в банк. Кассиры все время
менялись, и я спросил одного из них, почему
так происходит. Он ответил, что не знает,
но их действительно часто переводили с ме-
ста на место. Как я понял, дело в том, что
обмануть банк сотрудники могут только
сообща, и банк хочет лишить их этой воз-
можности. В этот момент я осознал, что
исключение случайным образом различных
подмножеств нейронов для каждого примера
данных предотвратит их сговор, а значит,
уменьшит вероятность переобучения».
Если перевести все это на язык глубо
кого обучения, то можно выразиться так:
введение шума в выходные значения слоя
разрушает случайно возникшие паттерны (то, что Хинтон назвал сговором), несуще
ственные относительно истинных паттернов данных. В упражнении 3 в конце главы
вы должны будете убрать из модели, основанной на node, в файле
model.js
два слоя
дропаута, обучить ее снова и проанализировать полученные значения безошибоч
ности на обучающем, проверочном и контрольном наборах данных.
Рис. 4.11.
Пример работы слоя дропаута.
Здесь входной тензор двумерный,
формы [4, 2]. Частота дропаута —
0,25, в результате чего 25 % (то есть
два из восьми) элементов входного
тензора выбираются случайным образом
и обнуляются на этапе обучения. На этапе
вывода слой дропаута просто пересылает
данные
176
Do'stlaringiz bilan baham: |