Подходя к двум причинам, почему ваша модель не может хорошо обобщать

Если вы когда-либо сталкивались со следующей проблемой:

Я тренирую нейронную сеть, и потери на обучение уменьшаются, но потери при проверке возрастают с первой эпохи. Как я могу это исправить?

то вам определенно стоит прочитать этот пост, чтобы лучше понять две основные причины, по которым ваша модель не подходит для обобщения.

Алеаторная неопределенность

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

Здесь мы должны иметь дело с тем фактом, что процесс, генерирующий реальные данные, часто проявляет внутреннюю случайность. Проиллюстрируем это явление на небольшом примере регрессии. Представьте, что лежащая в основе связь между входом 𝑥 (независимая переменная) и выходом 𝑦 (зависимая переменная) определяется полиномом третьей степени:

изображено на рисунке ниже:

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

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

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

Возможный набор для проверки может быть:

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

В нашем примере с игрушкой мы определяем потери как среднее расстояние между прогнозируемыми значениями 𝑦 и зашумленными наземными истинными значениями. Цель обучения / настройки модели состоит в том, чтобы минимизировать потери и, следовательно, минимизировать расстояния.

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

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

Мы видим, что в конце обучения потеря валидации намного больше, чем потеря тренировки. Обычно это сильный намек на то, что мы переоснащаемся.

Наше первое понимание: когда вы обучаете нейронную сеть на небольшом наборе данных, сеть обычно запоминает обучающий набор данных, а не изучает общую структуру данных. По этой причине модель будет хорошо работать на обучающем наборе и плохо работать на новых данных (например, на проверочном наборе данных).

Что мы можем с этим поделать, когда поняли, что сталкиваемся с переобучением?

Решения: больше данных

Самый простой способ уменьшить случайное переоснащение - увеличить размер обучающих данных:

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

Когда мы оцениваем модель на проверочном наборе, мы видим, что она довольно хорошо обобщает.

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

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

Однако получение большего количества данных может оказаться очень дорогостоящим и трудоемким занятием. Это не всегда быстрый вариант. Есть ли у нас другие варианты уменьшения переобучения?

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

Решения: уменьшение емкости модели

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

В нашем игрушечном примере мы проиллюстрируем уменьшение емкости модели за счет понижения степени полинома. Скажем, нам подходит многочлен 1-й степени:

что намного ниже базовой модели истинности.

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

Однако, как вы можете видеть, подобранная модель (красный цвет) не очень хорошо отражает основную истину (синий цвет). Это тот компромисс, о котором мы говорили раньше. Имея только небольшой обучающий набор, вы можете использовать регуляризацию, чтобы улучшить свою модель, чтобы лучше обобщить невидимые данные. Однако вы не сможете идеально смоделировать лежащую в основе взаимосвязь между вводом 𝑥 и выводом 𝑦. Следовательно, производительность вашей модели (с точностью или другими показателями) будет далека от оптимальной.

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

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

Решения: ранняя остановка

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

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

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

Когда мы видим, что производительность на проверочном наборе ухудшается, мы немедленно останавливаем обучение модели. В нашем первоначальном примере, в котором мы обучили полином 4-й степени на небольшом обучающем наборе, ранняя остановка дала бы:

Решения: увеличение объема данных

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

В нашем игрушечном примере мы синтезируем новые обучающие выборки, добавляя шум на вход 𝑥 и повторно используя соответствующее наземное истинное значение 𝑦.

Как и в примере, демонстрирующем эффект переобучения в начале этого поста, мы применили полином 4-й степени к расширенным данным:

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

Примеры дополнений данных для классификации изображений: изменение цвета, отражение, обрезка, поворот, геометрические преобразования и т. Д.

Решения: Трансферное обучение

Трансферное обучение - это метод машинного обучения, при котором модель, обученная на данных из задачи A, частично повторно используется в другой, но связанной задаче B. Трансферное обучение работает только тогда, когда у вас намного больше данных для задачи A, чем для задачи B. Мы предполагаем, что задача B это задача, над которой вы действительно хотите хорошо справиться.

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

В нашем примере с игрушкой задача B, задача, с которой мы хотим справиться хорошо и для которой у нас недостаточно данных, определяется нашим исходным многочленом третьей степени. Задача A, задача, для которой у нас достаточно данных и от которой мы хотим передать знания, определяется очень похожим многочленом третьей степени:

однако с гораздо меньшим смещением 𝑑.

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

Теперь мы передаем знания, полученные в задаче A, и повторно используем их в задаче B. Для этого мы берем полученные значения коэффициентов 𝑎, 𝑏, и фиксируем их. Во время обучения по задаче B мы адаптируем только смещение 𝑑. Это то, что подразумевается под частичным повторным использованием предварительно обученной модели.

Чем ближе родственная задача A, задача, из которой мы передаем знания, находится к задаче B, тем лучшие результаты мы получим, применяя трансферное обучение. Тем не менее, не откажитесь от предварительных тренировок с отягощениями для, казалось бы, несвязанных задач. Часто функции ранних слоев носят очень общий характер, например: фильтр нижних частот, фильтр верхних частот, полосовой фильтр, фильтры Габора и т. Д. Однако для получения этих ранних фильтров требуется много данных, которые вы не используете. у меня нет.

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

Эпистемическая неопределенность

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

Здесь мы должны иметь дело с тем фактом, что часто данная задача демонстрирует очень высокую изменчивость в своих данных. Подумайте, например, о задаче распознавания изображений, чтобы различать зонтики и зажигалки. Оба класса очень широки, поскольку существует множество различных типов этих объектов, каждый со своим размером, цветом, формой и т. Д. Это также называется внутриклассовой вариацией. Высокая изменчивость данных часто приводит к недостаточно представленной обучающей выборке, не позволяющей обобщать невидимые данные, например набор для проверки или тестирования.

Давайте еще раз проиллюстрируем это явление на небольшом игрушечном примере. Чтобы представить данные с высокой вариабельностью, мы смоделируем лежащую в основе взаимосвязь между входом и выходом 𝑦 с помощью некоторого сложного полинома четвертой степени:

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

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

Возможный набор для проверки может быть:

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

Чтобы продемонстрировать эффект эпистемического переобучения, мы подгоняем полином 4-й степени к обучающей выборке:

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

Давайте посмотрим, что происходит на проверочном наборе:

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

Какие инструменты у нас есть, чтобы справиться с эпистемическим переоснащением?

Решения: больше данных

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

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

Не решение: уменьшение емкости модели

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

Не решение: ранняя остановка

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

Решения: Трансферное обучение

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

Трансферное обучение - это один из способов внедрить предыдущие знания в нашу модель. Для этого нам потребуется связанная задача A с достаточным объемом данных.

Мы подгоняем полином 4-й степени к задаче A и частично повторно используем предварительно обученную модель в задаче B. Во время обучения по задаче B мы фиксируем предварительно обученные коэффициенты 𝑎, 𝑏, 𝑐 и настраиваем только коэффициент смещения. Мы получаем гораздо лучшее соответствие невидимым данным, чем раньше:

Чем ближе связанная задача A, задача, из которой мы передаем знания, находится к задаче B, тем лучшие результаты мы получим от переноса обучения.

Решения: Разработка функций

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

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

Решения: изменение сетевой архитектуры

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

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

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

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

Кстати, традиционные CNN не обладают свойством инвариантности к масштабу и вращению. Они не могут экстраполировать знания, полученные для одного масштаба или вращения, на разные масштабы и вращения одного и того же объекта. Биологически вдохновленное решение для достижения инвариантности к масштабу и вращению - это применить лог-полярное преобразование, как описано в этой статье: RetinotopicNet.

Несоответствие данных

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

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

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

Когда мы имеем дело с несоответствием данных, набор поездов и набор тестов действительно поступают из разных распределений. Расширение обучающей выборки обычно не помогает улучшить обобщение, если мы не начнем смешивать данные из обоих распределений.

Как вы можете заметить, существует плавный переход между несоответствием данных и эпистемической неопределенностью.

использованная литература

Количественная оценка неопределенности в глубоком обучении
Регуляризация
Увеличение данных
Передача обучения
Несоответствие данных