Оригинальная работа: cxsmarkchan
Домашняя страница:cxsmarkchan.com
Dropout — распространенный метод регуляризации. Он заимствует идею ансамблевого обучения и примерно реализует функцию обучения большого количества сетевых структур одновременно и получения результатов прогнозирования через ансамбль. Благодаря встроенной ссылке Dropout может эффективно избежать переобучения.
1. Основная идея Dropout
Проблема, которую должен решить Dropout, заключается в следующем: можно ли в одной и той же модели нейронной сети смоделировать эффект нескольких сетевых моделей определенными средствами, тем самым повысив точность модели? В ответ на эту проблему Dropout умело использует тот факт, что в модели нейронной сети путем маскирования некоторых нейронов можно построить разные модели нейронной сети. ** Как показано на рисунке ниже, входной слой исходной нейронной сети имеет 2 нейрона, а скрытый слой — 2 нейрона. Удалив некоторые нейроны, мы можем получить 24=16 различных сетей. Конечно, некоторые из этих сетей являются недействительными сетями, например, все сети в строке 4, но это не имеет большого значения, поскольку при увеличении количества признаков и количества сетевых слоев доля таких недействительных сетей будет падать. резко.
В отличие от общей модели бэггинга, все вышеперечисленные сети отличаются только сетевой структурой, но все параметры являются общими. Поэтому этот метод менее эффективен, чем непосредственное обучение такого же количества независимых сетей. Однако следует отметить, что при наличии n признаков количество различных структур может достигать 2.nКусок! Для такого огромного количества сетей обучение независимых сетей по своей сути невозможно. Таким образом, сеть с различной структурой и совместным использованием параметров уже является очень хорошим методом реализации. Кроме того, экспоненциальное количество сетей также гарантирует, что сети с общими параметрами могут достигать хороших результатов прогнозирования.
Далее Dropout также необходимо решить следующие проблемы:
- Как обучать сети с разной структурой (совместное использование параметров) одновременно?
- Как интегрировать сети разной структуры для получения результатов прогнозирования?
Мы обсудим эти два вопроса в следующем разделе.
2. Методы обучения и прогнозирования отсева
2.1 Обучение
Вообще говоря, для обучения нейронной сети будет использоваться метод стохастического градиентного спуска. Этот метод выбирает пакет данных для каждой тренировки, вычисляет градиент с помощью алгоритма BP и обновляет параметры. Чтобы обучать нейронные сети с различной архитектурой, нам нужно замаскировать некоторые нейроны. Фактически, особая структура нейронной сети позволяет нам очень просто замаскировать соответствующий нейрон — просто умножьте выход этого нейрона на 0. Как показано на рисунке ниже, мы умножаем каждый нейрон во входном слое и скрытом слое на коэффициент μ, а μ может быть только 0 или 1. Тогда при μ=1 нейрон может нормально выводить, а при μ=0 нейрон будет экранирован.
Стоит отметить, что маскирование нейрона не означает, что мы очищаем содержимое нейрона. Параметры внутри нейрона по-прежнему зарезервированы, но в этом обучении его выход маскируется внешней переменной μ=0. Таким образом, мы можем добиться обучения подсети.
Итак, как определяется значение экранирующего слоя µ? Это общий гиперпараметр в фреймворках глубокого обучения: вероятность удержания, то есть вероятность удержания, обычно записываемая как keep_prob в различных фреймворках. В каждом обучении каждый коэффициент маскировки µ устанавливается независимо, вероятность установки его в 1 равна keep_prob, а вероятность установки в 0 равна 1-keep_prob. Видно, что когда вероятность удержания равна 1, нейронная сеть не использует отсев, а когда вероятность удержания равна 0, нейронная сеть больше не работает (поскольку все нейроны замаскированы). Вообще говоря, вероятность удержания может быть выбрана от 0,5 до 0,8.
Из-за совместного использования параметров, хотя каждый процесс обучения предназначен только для определенной сети, параметры всех сетей (за исключением параметров замаскированного нейрона на этот раз) будут обновляться синхронно. Отличие метода обучения Dropout от метода обучения без Dropout заключается в том, что при обучении будут учитываться оптимальные настройки параметров при различных структурах сети, поэтому окончательные обученные параметры будут иметь определенные эффекты при каждой структуре сети. Видно, что этот метод позволяет эффективно избежать переобучения, поскольку суть переобучения заключается в том, что параметры сети слишком чувствительны к ошибкам, и если группа параметров может достигать хороших результатов при разных структурах сети, то эта группа Вероятность параметра переоснащение также уменьшается.
2.2 Прогноз
Метод интегрированного прогнозирования обычно требует вычисления прогнозируемого значения для каждой сетевой структуры и выполнения средневзвешенного значения. К сожалению, поскольку структура сети имеет 2nвиды, мы не можем сосчитать их один за другим. Отличие от обучения состоит в том, что при обучении мы можем обучить сетевую структуру синхронному обновлению параметров других сетевых структур, но при прогнозировании мы не можем получить результаты прогнозирования при определенной сетевой структуре. На самом деле пока нет способа гарантировать достоверность прогнозов в математическом смысле, поэтому приходится использовать некоторые эвристики.
Одна из самых простых идей — случайным образом выбрать ограниченное количество сетей (например, 10–20 групп), сделать прогнозы по отдельности, а затем выполнить средневзвешенное значение результатов прогноза в соответствии с вероятностью. Этот подход, по-видимому, использует очень небольшую сетевую структуру, но на практике он работает хорошо. Другой метод заключается в использовании среднего геометрического вместо среднего арифметически взвешенного в качестве результата после упаковки в мешок. Конечно, вычислить среднее геометрическое не проще, чем среднее арифметическое, но мы можем эффективно аппроксимировать его: **Просто рассмотрим сеть, в которой все элементы не замаскированы, умножьте на выходе каждого нейрона зарезервированную вероятность, окончательный вывод (который можно приблизительно понимать как ожидаемое значение прогноза сети) может приблизительно представлять прогнозируемое значение после упаковки. **При определенных условиях можно показать, что результат, полученный при такой обработке, является средним геометрическим, но в большинстве случаев это всего лишь простое (но очень эффективное) приближение.
2.3 Практические варианты Dropout
По результатам первых двух подразделов мы можем увидеть способ применения Dropout:
- Во время обучения каждый нейрон выдает нормально с вероятностью keep_prob и выводит 0 с вероятностью 1-keep_prob, а затем запускает алгоритм BP для расчета градиента.
- При прогнозировании выход каждого нейрона умножается на keep_prob перед переходом на следующий слой.
Чтобы удобнее было использовать Dropout, мы обычно делаем следующие преобразования:
- Во время обучения каждый нейрон масштабирует вывод с коэффициентом 1/keep_prob с вероятностью keep_prob. Выведите 0 с вероятностью 1-keep_prob. Таким образом, ожидаемое выходное значение каждого нейрона равно нормальному выходному значению без исключения.
- При прогнозировании прогнозирование может выполняться напрямую по всей сети.
Этот вариант фактически переносит процесс умножения на keep_prob при прогнозировании в обучение. Таким образом, Dropout полностью становится тренировочным параметром. Поскольку в глубоком обучении обучение и прогнозирование обычно разделены, проблема отсева вообще не рассматривается во время прогнозирования, что обеспечивает удобство написания и запуска программы.
Подводя итог, отсев — это распространенный метод глубокого обучения, который имитирует эффект бэггинга путем одновременного обучения сетей с разными структурами и общими параметрами. В то же время, поскольку выход каждого нейрона во время обучения может быть нормальным значением или нулевым, обученная сеть более адаптируется к ошибкам, что позволяет эффективно избегать переобучения. Простота принципа Dropout позволяет адаптировать его к сетям различной структуры. Однако следует отметить, что Dropout по сути является методом регуляризации, поэтому введение Dropout может снизить скорость обучения и точность модели.