Глава 5. Перенос обучения: переиспользование предобученных нейронных сетей
195
Но что получится, если не блокировать веса слоев выделения признаков? Про
вести такой эксперимент вы можете с помощью опции
Don’t Freeze Feature Layers
рас
крывающегося меню
Training Mode
. Результат приведен в блоке В на рис. 5.3. Стоит
упомянуть несколько его отличий от результатов из блока A.
z
z
Без блокирования слоев выделения признаков начальное значение функции
потерь оказывается значительно выше (например, после первой эпохи: 0,37
вместо 0,27), а безошибочность — ниже (0,87 вместо 0,91). Почему так? В начале
обучения предобученной модели на новом наборе данных предсказания сначала
содержат множество ошибок, поскольку для пяти новых цифр предобученные
веса выдают, по сути, случайные предсказания. В результате значения функции
потерь будут очень велики, а углы наклона ее графика — очень круты. Это при
водит к большим значениям градиентов, вычисляемых на начальных этапах об
учения, и, в свою очередь, ведет к сильным колебаниям значений всех весовых
коэффициентов модели. А период сильных колебаний значений, через который
проходят весовые коэффициенты всех слоев, приводит к более высоким началь
ным потерям, как видно из блока В. Поэтому при традиционном подходе к пере
носу обучения первые несколько слоев блокируются и тем самым «ограждаются»
от этих больших начальных возмущений весов.
z
z
В частности, изза этих больших начальных возмущений итоговая безоши
бочность модели при подходе без блокирования (0,945, блок В) оказывается
не
выше, чем безошибочность обычного подхода переноса обучения с блокиро
ванием слоев (~0,968, блок A).
z
z
Если ни один из слоев модели не заблокирован, обучение занимает намного
больше времени. Например, на одном из наших ноутбуков обучение модели
с заблокированными слоями выделения признаков заняло около 30 секунд, а об
учение модели без какихлибо заблокированных слоев — примерно вдвое больше
(60 секунд). На рис. 5.4 схематически показана причина этого явления. Заблоки
рованные слои исключаются из уравнения во время обратного распространения
ошибки, в результате
чего каждый вызов
fit()
отрабатывается быстрее.
На рис. 5.4 путь обратного распространения ошибки показан черными стрел
ками, указывающими влево. В отсутствие заблокированных слоев все весовые
коэффициенты модели (
v
1
–
v
5
) обновляются на каждом шаге обучения (каж
дом батче), а значит, участвуют в процессе обратного распространения ошибки
(блок A). Обратите внимание, что признаки (
x
) и целевые переменные (
y
) в об
ратном распространении ошибки никогда не участвуют, поскольку их значения
не нужно обновлять. Замораживание первых нескольких слоев модели приводит
к исключению подмножества весов (
v
1
–
v
3
) из процесса обратного распростране
ния ошибки (блок Б). Они становятся аналогами
x
и
y
и рассматриваются как
константы, учитываемые при вычислении функции потерь. В результате объем
необходимых для обратного распространения ошибки вычислений уменьшается,
а процесс обучения ускоряется.
Приведенные различия подтверждают обоснованность подхода с блокирова
нием слоев при переносе обучения: при нем слои выделения признаков из базовой