Глава 8. Недообучение, переобучение и универсальный процесс ML
323
чает одну или несколько вкладок, по которым пользователь может перемещаться
щелчками кнопкой мыши. На нижнем уровне каждая из вкладок содержит одну или
несколько
поверхностей
(surfaces). Метод
tfvis.visor().surface()
с его полями
конфигурации
tab
и
name
позволяет создавать поверхность с заданным названием на
указанной вкладке визира. Поверхность визира не ограничивается отрисовкой кри
вых потерь и метрик. На самом деле отрисовать на поверхностях визиров можно все
основные типы диаграмм, показанных в примере CodePen в разделе 7.1. Мы оставим
проверку этого как упражнение вам в конце главы.
Второй аргумент функции
fitCallbacks()
задает, какие именно функции потерь
и метрики будут отрисовываться на поверхности визира. В данном случае мы по
строим график функции потерь для обучающего и проверочного наборов данных.
Третий аргумент содержит поле, служащее для управления частотой обновления
графиков. При использовании обеих опций
onBatchEnd
и
onEpochEnd
графики будут
обновляться в конце каждого из батчей и каждой из эпох. В следующем разделе мы
изучим построенные функцией
fitCallbacks()
кривые потерь и продемонстрируем
их использование для обнаружения недообучения и переобучения.
8.2. Недообучение, переобучение и меры
противодействия им
Во время обучения модели МО желательно следить за тем, насколько хорошо
она захватывает содержащиеся в обучающих данных паттерны. Модель, плохо
захватывающая паттерны, считается
недообученной
; а модель,
слишком
хорошо
захватывающая паттерны, до такой степени, что плохо обобщается на новые дан
ные, —
переобученной
. Переобученную модель можно «вернуть на путь истинный»
с помощью таких средств, как регуляризация. В этом разделе мы продемонстрируем
выявление подобного поведения модели с помощью визуализации, а также эффект
от мер противодействия ему.
8.2.1. Недообучение
Для решения задачи предсказания температуры попробуем сначала простейшую воз
можную модель машинного обучения: линейный регрессор. Такую модель создает
код в листинге 8.2 (из файла
jenaweather/index.js
). Для генерации предсказания он
использует плотный слой с одним нейроном и применяемую по умолчанию линей
ную функцию активации. Впрочем, в отличие от линейного регрессора, созданного
нами для задачи предсказания времени скачивания в главе 2, у этой модели есть
еще дополнительный слой схлопывания. Поскольку форма тензора признаков —
двумерная, его необходимо схлопнуть в одномерный, чтобы получить подходящий
входной сигнал для плотного слоя, используемого для линейной регрессии. Этот
процесс приведен на рис. 8.2. Важно отметить, что при такой операции схлопывания
теряется информация о последовательном (временно
'
м) упорядочении данных.
Do'stlaringiz bilan baham: |