Я тренирую нейронную сеть, и потери на обучение уменьшаются, но потери на валидацию не уменьшаются или уменьшаются намного меньше, чем я ожидал, основываясь на ссылках или экспериментах с очень похожими архитектурами и данными. Как я могу это исправить?
Что касается вопроса
На что этот вопрос вдохновлен, вопрос намеренно оставлен общим, так что другие вопросы о том, как уменьшить ошибку обобщения нейронной сети до уровня, который, как было доказано, достижимо , могут быть закрыты как дубликаты этого.
Смотрите также отдельную ветку на Meta:
neural-networks
deep-learning
DeltaIV
источник
источник
Ответы:
Прежде всего, давайте упомянем, что означает «моя нейронная сеть не очень хорошо обобщается» и в чем разница с высказыванием «моя нейронная сеть работает плохо» .
При обучении нейронной сети вы постоянно оцениваете ее по набору помеченных данных, который называется обучающим набором . Если ваша модель не работает должным образом и, кажется, не извлекает уроки из учебного набора, у вас еще нет проблемы с обобщением, вместо этого, пожалуйста, обратитесь к этому посту . Однако, если ваша модель является достижение удовлетворительных результатов на обучающем наборе, но не может выполнять также на ранее невидимых данных (например , проверки / тестирования комплектов), то вы делаете есть проблемы обобщения.
Почему ваша модель не обобщает должным образом?
Самая важная часть - это понимание того, почему ваша сеть плохо обобщается. Модели машинного обучения с высокой пропускной способностью имеют возможность запоминать тренировочный набор, что может привести к переоснащению .
Переоснащение - это состояние, когда оценщик начал изучать тренировочный набор настолько хорошо, что начал моделировать шум в обучающих выборках (помимо всех полезных отношений).
Например, на изображении ниже мы видим, как синяя линия явно перекрывает.
Но почему это плохо?
При попытке оценить нашу модель на новых, ранее невиданных данных (т. Е. Набор для проверки / тестирования), производительность модели будет намного хуже, чем мы ожидаем.
Как предотвратить переоснащение?
В начале поста я подразумевал, что сложность вашей модели - это то, что на самом деле вызывает переоснащение, поскольку позволяет модели извлекать ненужные отношения из обучающего набора, которые отображают свой собственный шум. Самый простой способ уменьшить переоснащение - это существенно ограничить емкость вашей модели. Эти методы называются методами регуляризации .
Параметр норма штрафов . Они добавляют дополнительный термин к функции обновления веса каждой модели, который зависит от нормы параметров. Цель этого термина состоит в том, чтобы противостоять действительному обновлению (т. Е. Ограничить объем каждого веса). Это делает модели более устойчивыми к выбросам и шуму. Примерами таких регуляризаций являются регуляризации L1 и L2 , которые можно найти на регрессорах Лассо , Риджа и Эластичной Сети .
Поскольку каждый (полностью связанный) слой в нейронной сети функционирует во многом как простая линейная регрессия, они используются в нейронных сетях. Наиболее распространенное использование состоит в том, чтобы упорядочить каждый слой индивидуально.
реализация кераса .
Раннее торможение . Этот метод пытается преждевременно остановить этап обучения оценщика, в тот момент, когда он научился извлекать все значимые связи из данных, прежде чем начать моделировать свой шум. Это делается путем контроля за потери проверки (или проверки метрики по вашему выбору) и завершения фазы обучения , когда эта метрика упоры улучшается . Таким образом, мы даем оценщику достаточно времени, чтобы выучить полезную информацию, но недостаточно, чтобы извлечь уроки из шума.
реализация кераса .
реализация кераса
Помимо ограничения возможностей модели, другим способом предотвращения переоснащения является повышение качества ваших данных. Наиболее очевидным выбором будет удаление выбросов / шума , однако на практике их полезность ограничена. Более распространенным способом (особенно в задачах, связанных с изображениями) является увеличение данных . Здесь мы пытаемся случайным образом преобразовать обучающие примеры таким образом, чтобы, в то время как они кажутся модели отличными, они передают одну и ту же семантическую информацию (например, пролистывание изображений влево-вправо).
Обзор дополнения данных
Практические предложения:
реализация кераса
Другое использование подобной концепции заключается в следующем: если ваша задача не имеет большого количества данных, но вы можете найти другую аналогичную задачу, которая выполняет, вы можете использовать трансферное обучение, чтобы уменьшить переоснащение. Сначала обучите свою сеть выполнению задачи с большим набором данных, а затем попытайтесь выполнить точную настройку.модель к той, которую вы изначально хотели. Первоначальное обучение в большинстве случаев сделает вашу модель более устойчивой к переоснащению.
Короче говоря, будьте осторожны, чтобы не создавать нереалистичные изображения с помощью увеличения данных. Кроме того, увеличенный размер набора данных потребует более длительного времени обучения. Лично я начинаю рассматривать использование дополнения данных, когда вижу, что моя модель достигает почти потерь в тренировочном наборе.
источник
Существует множество эмпирических доказательств того, что достаточно глубокие нейронные сети могут запоминать случайные метки на огромных наборах данных (Чиюань Чжан, Сэми Бенджо, Мориц Хардт, Бенджамин Рехт, Ориол Виньялс, «Понимание глубокого обучения требует переосмысления обобщений»). Таким образом, в принципе, получая достаточно большой NN, мы всегда можем уменьшить ошибку обучения до чрезвычайно малых значений, ограниченных на практике числовой точностью, независимо от того, насколько бессмысленной является задача.
Вещи совершенно разные для ошибки обобщения . Мы не можем быть уверены, что для каждой проблемы обучения существует обучаемая модель NN, которая может привести к ошибке обобщения настолько низкой, насколько это необходимо. По этой причине первым шагом является
1. Установите свои ожидания правильно
Найдите авторитетную ссылку, которая скажет вам, что существует архитектура, которая может достичь ошибки обобщения, которую вы ищете, в вашем наборе данных или в самой похожей, для которой вы можете найти ссылки. Например, посмотрите здесь
Каковы современные сверточные нейронные сети?
найти текущее (на момент ответов) представление SOTA (State Of The Art) для CNN по различным задачам. Хорошей идеей будет попытаться воспроизвести такие результаты на этих эталонных наборах данных перед тем, как вы начнете тренироваться на своем собственном наборе данных, в качестве проверки правильности всей вашей инфраструктуры.
2. Убедитесь, что ваша процедура обучения безупречна
Все проверки описаны в ответах на вопрос
Что мне делать, если моя нейронная сеть не учится?
чтобы убедиться, что ваша учебная процедура в порядке, является необходимым условием для успешного уменьшения ошибки обобщения (если ваш NN не учится, он не может научиться обобщать). Эти проверки включают, среди прочего:
3. Попытайтесь получить суперсходимость
«Суперконвергенция: очень быстрое обучение нейронных сетей с использованием больших скоростей обучения» Лесли Н. Смита и Николая Топина показывает, что в некоторых случаях сочетание больших скоростей обучения с методом циклического обучения Лесли Н. Смита действует как регуляризатор ускорение сходимости на порядок и уменьшение необходимости обширной регуляризации. Таким образом, это хорошая вещь, чтобы попробовать, прежде чем
4. Настройка регуляризации на MAXXX
Регуляризация часто увеличивает время обучения (плохо), увеличивает ошибку обучения и уменьшает ошибку обобщения (хорошо), но слишком большая регуляризация может фактически увеличить обе ошибки (недостаточное соответствие). По этой причине и в связи с увеличением времени обучения часто лучше вводить различные приемы регуляризации по одному, после того , как вам удастся превзойти тренировочный набор. Обратите внимание, что регуляризация сама по себе не обязательно означает, что ваша ошибка обобщения станет меньше: модель должна иметь достаточно большую емкость для достижения хороших свойств обобщения. Это часто означает, что вам нужна достаточно глубокая сеть, прежде чем вы сможете увидеть преимущества регуляризации.
Самые старые методы регуляризации - это, вероятно, ранняя остановка и снижение веса. Некоторые из других:
5. Гиперпараметр / архитектура поиска
Если больше ничего не помогает, вам придется протестировать несколько разных настроек гиперпараметра (здесь может помочь Bayesian Optimization) или несколько разных архитектурных изменений (например, возможно, в вашей архитектуре GAN и для набора данных, с которым вы работаете, пакетная норма работает только в генератор, но при добавлении к дискриминатору это тоже ухудшает ситуацию). Обязательно следите за результатами этих долгих и скучных экспериментов в хорошо упорядоченном бортовом журнале.
PS для GAN не имеет особого смысла говорить об ошибке обобщения: приведенный выше пример имел в виду только то, что в Deep Learning все еще много алхимии, и вещи, которые вы ожидаете, будут работать нормально, иногда т, или наоборот, то, что много раз работало нормально, внезапно вынуждает вас искать новый набор данных.
источник
Список часто используемых методов регуляризации, которые я видел в литературе:
источник
Я чувствую себя как Djib2011, даю отличные замечания об автоматизированных методах, но они на самом деле не решают основную проблему того, как мы узнаем, что метод, использованный для уменьшения переоснащения, сработал. В качестве важной сноски к ответу DeltaIV, я хотел бы включить это на основе недавних исследований за последние 2 года. Перенастройка для нейронных сетей - это не только переизучение модели, но и неспособность моделей учиться чему-то новому или иметь дело с аномалиями.
Обнаружение переобучения в модели черного ящика. Интерпретируемость модели напрямую связана с тем, насколько хорошо вы можете определить способность модели обобщать. Таким образом, многие интерпретируемые графики являются методами обнаружения переоснащения и могут сказать вам, насколько хорошо работает любой из предложенных выше методов. Графики интерпретируемости непосредственно обнаруживают это, особенно если сравнивать графики валидации и результатов теста. В главах 5 и 6 этой неопубликованной книги рассказывается о последних достижениях в области обнаружения переоснащения: интерпретируемое моделирование
Основываясь на этой книге, я хотел бы упомянуть три других метода обнаружения и устранения переоснащения, которые могут быть очевидны для некоторых, но я лично считаю, что люди слишком часто об этом забывают. Поэтому я хотел бы подчеркнуть их, если не одно мнение:
Обнаружение выбора функции : чем меньше число параметров и меньше функций в вашей модели, тем лучше. Таким образом, если вы включите только одну из 100 миллионов (возможно, вместо 75 миллионов), у вас будет лучшая обобщаемая модель. Проблема в том, что многие нейронные сети не идеальны в выборе функций, особенно когда присутствует №2. Bootstrap или Boosting принципиально не могут исправить оба варианта (может только версия с названием wild bootstrap). Проще говоря, если вы дадите вам ненужные данные нейронной сети, то это даст вам ненужные данные. (Нормализация L2, упомянутая выше, очень помогает в этом)
Обнаружение и устранение аномалий: чем меньше «выбросов», тем более обобщаема модель. Под «выбросами» мы подразумеваем не только выбросы в данных. Выбросы в данных (например, вид, который вы видите на прямоугольнике) - слишком узкое определение для нейронных сетей. Необходимо учитывать также выбросы в ошибке в модели, которая упоминается как влияние, а также другие аномалии. Поэтому обнаружение аномалий перед запуском вашей сети очень важно. Нейронная сеть может быть устойчивой к одному типу аномалий, но устойчивой не ко всем другим типам. Методы Counter Counter, методы Criticism, методы Adversarial example и графики Influence отлично помогают вам выявлять выбросы, а затем выяснять, как их учитывать. (Т.е. изменить параметры или даже удалить некоторые данные)
Стратифицированная выборка, избыточная выборка и выборочная выборка, основанные на статистических или этических соображениях : я хотел бы быть экспертом в области недостаточной и избыточной выборки, но я не знаю, но я знаю о стратифицированной выборке. Кластеризация важных факторов, таких как (раса, пол, пол), а затем проведение стратифицированной выборки по кластеру жизненно важно, чтобы не перебивать, когда кто-то рассматривает большие данные. При обнаружении изображений в некоторых областях юридически требуется стратифицированная выборка в сочетании с кластеризацией, чтобы избежать расовой дискриминации. В вышеприведенной книге кратко рассказывается о том, как это сделать.
PS Должен ли я включить больше ссылок?
источник