Часть II • Введение в TensorFlow.js
обучения кривые потерь и безошибочности начинают выравниваться и подчиняться
закону убывающей доходности. Безошибочность на проверочном подмножестве
данных выходит на постоянный уровень около 84 %. (Обратите внимание, насколько
может ввести в заблуждение кривая безошибочности на одном только
обучающем
подмножестве данных, с легкостью приближающаяся к 100 %.) Впрочем, после раз
блокирования плотного слоя базовой модели, перекомпиляции модели и запуска
этапа тонкой настройки безошибочность на проверочном наборе начинает расти
и может достигать 90–92 % — весьма приличный 6–8%ный прирост. Аналогичный
эффект можно наблюдать на кривой потерь на проверочном наборе данных.
Для иллюстрации преимуществ тонкой настройки, по сравнению с переносом
обучения без тонкой настройки, покажем на рис. 5.12, в блоке Б, что получится,
если обучать перенесенную модель в течение тех же 400 эпох без тонкой настройки
нескольких верхних слоев базовой модели. Не наблюдается никакой точки пере
гиба кривых потерь и безошибочности, как в блоке A на эпохе 100, когда начинает
действовать тонкая настройка. Вместо этого кривые потерь и безошибочности вы
равниваются и сходятся к худшим значениям.
Чему же тонкая настройка обязана своим эффектом? Ее можно считать способом
расширения разрешающих возможностей модели. За счет разблокирования части
«верхних» слоев базовой модели перенесенная модель может минимизировать функ
цию потерь в пространстве параметров более высокой размерности, чем на началь
ном этапе. В чемто это напоминает добавление в нейронную сеть скрытых слоев.
Параметры разблокированного плотного слоя оптимизированы под исходный набор
данных (состоящий из слов
one
,
two
,
yes
и
no
) и, возможно, плохо подходят для слов,
участвующих в переносе. Дело в том, что внутренние представления, с помощью
которых модель различала исходные слова, могут оказаться нерепрезентативными
для распознавания слов в задаче переноса. Благодаря дальнейшей оптимизации (то
есть тонкой настройке) этих параметров для слов из задачи переноса представление
оптимизируется для работы со словами перенесенной модели. А значит, для этих
слов резко возрастает безошибочность на проверочном наборе данных. Обратите
внимание, что этот рост заметнее на более сложных задачах переноса обучения
(как в случае четырех схожих по звучанию слов:
feel
,
seal
,
veal
и
zeal
). В более про
стых задачах (при четко различимых словах наподобие
red
и
green
) для достижения
100%ной безошибочности на проверочном наборе данных нередко оказывается
достаточно и начального этапа переноса обучения.
Возникает вопрос: в данном случае мы разблокировали только один слой базо
вой модели, и улучшатся ли результаты, если разблокировать еще несколько? Если
кратко, то это зависит от многих нюансов, поскольку разблокирование дополни
тельных слоев еще больше расширяет разрешающие возможности модели. Но, как
мы упоминали в главе 4 и обсудим подробнее в главе 8, чем больше разрешающие
возможности модели, тем выше риск переобучения, особенно при небольшом на
боре данных наподобие собранных нами в браузере примеров аудиоданных. И это
не считая дополнительной вычислительной нагрузки, связанной с обучением до
полнительных слоев. Можете поэкспериментировать с этим сами в упражнении 4
в конце главы.
Do'stlaringiz bilan baham: |