Привет! Сегодня мы рассмотрим с вами проблему, которая называется "проблемой переобучения". Также мы рассмотрим способы борьбы с этой проблемой. Кроме этого, сегодня мы ещё рассмотрим с вами, что такое нормализация, зачем она нужна, и как её применять нейронных сетях. Итак, что такое проблема переобучения? Рассмотрим некоторую выборку, которая в нашем случае будет задаваться вот такими зелеными точками. У этих зелёных точек будет некоторый набор характеристик, которые входят в вектор "x", и некоторые метки, которые (здесь) будем обозначать "y". Сейчас мы будем рассматривать в качестве примера задачу регрессии, однако такая же проблема наблюдается и в задачах классификации, и в задачах ранжирования, и во всех остальных задачах, которые вы можете встречать в машинном обучении. Что мы будем делать? Мы будем эти данные приближать некоторыми полиномами. Эти полиномы будут у нас N-ной степени, где N мы заранее фиксируем. Мы можем зафиксировать N равным нулю, и тогда полином у нас будет равен ∑n=00αnxn\sum_{n=0}^0 {\alpha_n x^n} (то есть α0\alpha_0, и всё). То есть мы с вами будем приближать вот этот набор точек при помощи какой-то константы. Мы с вами можем зафиксировать NN равным 1, и тогда вот этот набор точек мы будем приближать при помощи полинома α0+α1 x1\alpha_0 + \alpha_1 x^1. Мы можем с вами выбрать NN равным 20, и тогда мы будем приближать эти точки при помощи полинома α0+α1x+α2x2+⋯+α20x20\alpha_0 + \alpha_1 x + \alpha_2 x^2 + \dots + \alpha_{20} x^{20}. Функцию потерь на этом примере мы выберем как сумму квадратов ошибок на каждом из обучающих примеров. Это то же самое, что и средний квадрат ошибки, но без деления на количество обучающих примеров. Что мы будем делать? Мы будем подбирать параметры α\alpha, и будем их выбирать такими, чтобы у нас функция ошибок была минимальна. Допустим, мы с вами выбрали полиномы первой степени. Тогда оптимальное решение этой минимизационной задачи -- это будет некоторая прямая, которая будет достаточно хорошо проходить через все эти точки (видно, что вот эта прямая -- она достаточно хорошо приближает эти точки). Однако эти точки приближены не идеально (то есть у этой точки есть какая-то погрешность, вот у этой точки есть какая-то погрешность, вот у этой точки есть тоже какая то погрешность), и вообще, практически ни одна точка идеально этой прямой не приближается. Как можно улучшить приближение этих точек? Можно выбрать полином второй степени, и тогда у нас оптимальное решение будет немножко другим. Теперь у нас эти зеленые точки будут подгоняться кривой, которая будет задана функцией α0+α1x+α2x2\alpha_0 + \alpha_1 x + \alpha_2 x^2 (то есть эта парабола). Мы подбираем эти три коэффициента и у нас получается вот такая оранжевая кривая. Что будет происходить дальше? Эти зеленые точки, опять же, этим многочленом второго порядка приближены не идеально. Можно увеличить порядок многочислена и, например, подбирать не 3 параметра, а 21 параметр, то есть выбрать степень многочлена равный 20. Что тогда будет происходить? Тогда мы получим некоторую функцию, которая будет выглядеть примерно так: она будет практически идеально проходить по всем зелёным точкам. Однако -- вопрос: это та самая зависимость, которую мы хотели восстановить? Возможно, здесь что то пошло не так? Нетрудно понять, что если мы возьмём какие-то другие наблюдения из того же эксперимента, но которые просто не были включены в тренировочную выборку, у нас на этих наблюдениях получатся колоссальные ошибки. Например, мы выбрали такие контрольные значения, и на этих контрольных значениях у полинома нулевой степени и у полинома первой степени ошибки небольшие, но вот у полинома 20-й степени эти ошибки стали очень большими, несмотря на то, что полином 20-й степени очень хорошо подгоняет наши тренировочные данные. Вот это явление называется переобучением. Это явление наблюдается как в нейронных сетях, так и в других моделях машинного обучения. Когда у модели очень много настраиваемых параметров, модель становятся склонной к переобучению.
К сожалению, у нас пока нет статистики ответов на данный вопрос,
но мы работаем над этим.