Найти тему
LabelMe

Что такое перетренировка модели машинного обучения и как ее определить

Оглавление

В процессе обучения нейросети вы можете допустить ошибки при разделении данных на тренировочные и проверочные. Из-за этого возникнет вероятность того, что модель слишком остро среагирует на сложные связи между входом и выходом. В результате вы получите очень неточную в прогнозах нейронную сеть, которая будет далека от внедрения в реальные рабочие процессы.

Поздравляем, вы перетренировали модель. Как и в случае с мышцами, это не есть хорошо. Разбираемся в причинах этого явления и рассказываем, как его избежать.

Что такое перетренировка модели

Эффект перетренировки или переобучения - одна из наиболее частых проблем при создании моделей на основе нейронных сетей. Она возникает, когда вы загрузили слишком много "входов" или "выходов" для нейронной сети и у вас при этом недостаточно ценовой истории (слишком малый период котировок; маловато баров для анализа).

Разберем на конкретном примере. Вы загрузили ценовую историю DJIA с 1885 по 2011 год. Она включает около 35 000 ценовых баров. Мы можем создать нейронку с 10 000 входами.

Соотношение между количеством ценовых баров и количеством входов в нашей нейронной сети составляет 2.8 (35 000 ценовых баров делим на 10 0000 входов). Это значение слишком низкое. Входов слишком много и это вызывает чрезмерный тренировочный эффект.

Отлично иллюстрирует перетренированность следующая диаграмма:

-2

Красные и синие точки представляют обучающие выборки, классифицируемые нейросетью.

Черная линия представляет собой хорошую стратегию классификации. Она следует общему шаблону, который отделяет красный от синего, и должна в теории привести к самой низкой ошибке в реальных данных.

Зеленая линия – это перетренированная стратегия классификации. Она слишком хорошо следует обучающим данным: в своей попытке идеально классифицировать обучающие выборки, она создала связь вход-выход, которая является менее обобщенной и, следовательно, менее подходящей для реальных данных.

Довольно часто этот эффект называют GIGO (Garbage In, Garbage Out, «Мусор на входе — мусор на выходе»).

Как понять, что ваша модель перетренирована

Прежде всего - не радоваться выдающимся показателям. Например, если у вас отличная корреляция, под 100%, на данных до LBC - это повод всё перепроверить.

-3

На первом рисунке мы видим умеренно обученную модель, а на втором - перетренированную. Оранжевая линия справа - контрольная подсказка, которую называют корреляционной ловушкой.

Вы также можете использовать различные инструменты. Например, Weightwatcher, который может обнаруживать признаки перетренированности в определенных слоях предварительно обученных глубоких нейронных сетей.

Weightwatcher - это диагностический инструмент с открытым исходным кодом для анализа глубоких нейронных сетей (DNN) без необходимости доступа к обучающим или даже тестовым данным. Он анализирует весовые матрицы предварительно / обученного DNN, слой за слоем, чтобы помочь вам обнаружить потенциальные проблемы. Проблемы, которые нельзя увидеть, просто посмотрев на точность теста или потери в обучении.

Установка Weightwatcher:

pip install weightwatcher

Запуск:

Для каждого слоя Weightwatcher строит эмпирическую спектральную плотность или ESD. Это просто гистограмма собственных значений матрицы слоя корреляции:

-4

Указывая опцию рандомизации, Weightwatcher рандомизирует элементы весовой матрицы  W, а затем вычисляет ее ESD. Этот рандомизированный ESD накладывается на исходный ESD  X и наносится на график в логарифмической шкале. Пример выше:

  • исходный слой ESD - зеленый;
  • рандомизированный ESD - красный;
  • оранжевая линия - наибольшее собственное значение λ{max} рандомизированного ESD.

Если слой в меру обучен, то рандомизированный W будет отображать корректное ESD. Если же слой переобучен, тогда W  может иметь необычно большие элементы, из-за чего корреляции могут концентрироваться или застревать. Это показано на втором рисунке с  оранжевой линией,  идущей к дальнему правому краю основной части  красного  ESD.

Обратите внимание, что первом рисунке у ESD очень тяжелые хвосты, а гистограмма расширяется до log10 = 2 или доходит до наибольшего собственного значения 100:

-5

Но на втором рисунке зеленый ESD имеет совершенно другую форму и меньше по масштабу, чем на первом. Фактически, в во втором случае зеленый (исходный) и  красный  (рандомизированный) слои ESD выглядят почти одинаково, за исключением небольшого участка зеленых собственных значений, простирающихся до оранжевой линии и концентрирующиеся вокруг нее.

В таких случаях мы можем воспринимать оранжевую линию как корреляционную ловушку. Следовательно, что-то пошло не так при обучении этого слоя, и модель не зафиксировала корреляции, чтобы хорошо работать с другими примерами.

Заключение

Теперь вы знаете, что такое переобучение модели. Как в случае с тренажерным залом, перетренировка не сулит ничего хорошего и в случае машинного обучения может пустить коту под хвост часы работы.

Чтобы не переделывать всё с нуля, мы советуем чаще проверять все промежуточные этапы и настороженно относится к чересчур впечатляющим показателям.

Мы надеемся, что статья была для вас полезна. Сталкивались ли вы с перетренировкой модели и как пофиксили проблему? Пишите в комментариях.

Другие наши статьи:

Наши соцсети: