Переобучение - что это и как этого избежать, критерии останова обучения

Мы продолжаем знакомиться с теоретическими вопросами обучения НС, без которых невозможно их качественное построение. И это занятие начнем с очень важной темы – переобучения. Что это такое и чем это чревато? Давайте представим, что у нас есть два класса линейно-разделимых образов:

И из предыдущих занятий мы уже знаем, что для их различения достаточно одного нейрона. Но, что будет, если мы выберем сеть с большим числом нейронов, для решения этой же задачи?

В процессе обучения она способна формировать уже более сложную разделяющую линию, например, провести ее вот так:

Если мы продолжим увеличивать число нейронов скрытого слоя, то будем получать все более сложную закономерность разделения двух классов:

К чему это в итоге приведет? Да, на обучающем множестве все будет отлично, но в процессе эксплуатации такой сети будем получать массу ошибок:

Этот эффект и называется переобучением, когда разделяющая плоскость слишком точно описывает классы из обучающей выборки, и в результате теряется обобщающая способность НС.

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

Такой вывод может показаться несколько неожиданным. Казалось бы, чем больше нейронов в НС, тем качественнее она должна работать. Но на практике имеем обратный эффект: избыток нейронов ухудшает обобщающие способности. В идеале, число нейронов должно быть ровно столько, сколько необходимо для решения поставленной задачи. Но как определить, сколько их нужно? Здесь, опять же, нет универсального алгоритма. Это определяется опытным путем, подбирая минимальное число нейронов, при котором получается приемлемое качество решения задачи.

Рекомендация обучения №6:

Использовать минимальное необходимое число нейронов в нейронной сети.

Однако, мы все же можем контролировать этот эффект в процессе обучения. Для этого обучающая выборка разбивается на два множества: обучающее и валидации (проверочное):

На вход НС подаются наблюдения из обучающей выборки по схеме, которую мы рассматривали на предыдущем занятии. А, затем, после каждой эпохи, вычисляется критерий качества работы сети для обоих множеств: обучающего и проверочного. Получаем два графика:

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

Здесь у вас может возникнуть вопрос: зачем мы разбиваем обучающую выборку, а не используем в качестве проверочного множества тестовое? Тестовое – это то, на котором как раз и проверяется качество работы сети:

Дело в том, что как только какая-либо выборка прямо или косвенно участвует в обучении, то она влияет на состояние весов НС. В результате выборка валидации тоже, отчасти, становится обучающей и нейросеть подстраивается и под нее. Поэтому для объективной проверки качества необходима третья выборка – тестовая. Отсюда получаем:

Рекомендация обучения №7:

Разбивать все множество наблюдений на три выборки: обучающую, валидации и тестовую.

Вот такие основные подходы существуют для предотвращения переобучения НС.

Критерии останова процесса обучения

В заключение этого занятия рассмотрим критерии останова процесса обучения. Один из них мы с вами только что определили:

  • Расхождение показателя качества для обучающей выборки и валидации.

    Но это лишь один из критериев остановки. Кроме него часто пользуются еще несколькими показателями:

  • От итерации к итерации (по всей эпохе) показатель качества Q практически не меняется:

    Часто, этот тренд довольно долго продолжается, поэтому процесс лучше прервать и либо переопределить параметры градиентного алгоритма, либо начать заново с другими начальными весами НС.

  • Происходит малое изменение весовых коэффициентов. Это может означать, что мы достигли некоторого локального минимума, либо находимся в области малых градиентов и процесс обучения из-за этого может затянуться. Если этот тренд не прекращается, то лучше прервать обучение и начать заново с другими весами.
  • Достигли максимального числа итераций. Это очевидное условие, в частности, мы им пользовались, когда рассматривали работу алгоритма back propagation.

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

Видео по теме