Методы регуляризации: регуляризация L1 и L2, увеличение набора данных, отсев

искусственный интеллект

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



Метод регуляризации: предотвращает переоснащение и улучшает способность к обобщению

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

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

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



Регуляризация L2 (распад веса)

Регуляризация L2 заключается в добавлении члена регуляризации после функции стоимости:

C0 представляет собой исходную функцию стоимости, а последний член является членом регуляризации L2, который получается из суммы квадратов всех параметров w, деленных на размер выборки n обучающей выборки. λ — коэффициент регулярного члена, который взвешивает долю обычного члена и члена C0. Кроме того, есть коэффициент 1/2, часто встречается 1/2, в основном для удобства результата более позднего вывода.Последний вывод будет генерировать 2, которые умножаются на 1/2 и просто округляются в большую сторону.

Как член регуляризации L2 избегает переобучения? Давайте посмотрим на это, сначала ищем вывод:

Можно обнаружить, что член регуляризации L2 не влияет на обновление b, но влияет на обновление w:

Когда регуляризация L2 не используется, коэффициент перед w в результате вывода равен 1, и теперь коэффициент перед w равен 1−ηλ/n, поскольку все η, λ, n положительны, поэтому 1−ηλ/n меньше, чем 1, его эффект заключается в уменьшении w, откуда и происходит уменьшение веса. Конечно, учитывая следующие производные члены, конечное значение w может увеличиваться или уменьшаться.

Также следует отметить, что для стохастического градиентного спуска на основе мини-пакетов формулы для обновления w и b немного отличаются от приведенных выше:

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

До сих пор мы только объясняли, что член регуляризации L2 делает w «меньше», но мы не объясняли, почему «меньшее» w предотвращает переоснащение? Так называемое «очевидное» объяснение: меньший вес w в некотором смысле означает, что сложность сети ниже, а подгонка к данным в самый раз (это правило также называют бритвой Оккама), и в практические приложения, это также проверено, и эффект регуляризации L2 часто лучше, чем без регуляризации. Конечно, для многих людей (в том числе и для меня) это объяснение может показаться не столь очевидным, поэтому вот немного математическое объяснение (цитата по Zhihu):

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

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



L1 regularization

Добавьте член регуляризации L1 после исходной функции стоимости, то есть сумму абсолютных значений всех весов w, умноженную на λ/n (в отличие от члена регуляризации L2, его необходимо умножить на 1/2, для конкретные причины, указанные выше.)

Также сначала вычислите производную:

В приведенной выше формуле sign(w) представляет собой символ w. Тогда правило обновления веса w:

Существует η * λ * sign(w)/n больше, чем исходное правило обновления. Когда w положителен, обновленный w становится меньше. Когда w отрицательно, обновленный w становится больше, поэтому его эффект заключается в том, чтобы сделать w склонным к 0, делая вес в сети как можно более равным 0, что эквивалентно снижению сложности сети и предотвращению переобучения.

Кроме того, вопрос, не упомянутый выше, что делать, когда w равно 0? Когда w равно 0, |W| неуправляемо, поэтому мы можем обновлять w только в соответствии с исходным нерегулярным методом, что эквивалентно удалению термина η*λ*sgn(w)/n, поэтому мы можем указать sgn (0)=0, так что случай w=0 также унифицируется. (При программировании пусть sgn(0)=0, sgn(w>0)=1, sgn(w



Dropout

Регуляризация L1 и L2 достигается путем изменения функции стоимости, в то время как Dropout достигается путем изменения самой нейронной сети, что является уловкой, используемой при обучении сети. Его поток выглядит следующим образом:

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

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

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

Вышеупомянутое — Dropout, почему оно помогает предотвратить переоснащение? Это можно объяснить просто, используя процесс обучения отсева, который эквивалентен обучению многих нейронных сетей только с половиной единиц скрытого слоя (далее называемых «полусетями»), и каждой такой полусети можно дать классификацию. В результате некоторые из этих результатов верны, а некоторые нет. По мере обучения большая часть сетей может давать правильные результаты классификации, тогда небольшое количество результатов неправильной классификации не окажет большого влияния на конечный результат.

Для более глубокого понимания вы можете посмотреть статью «Классификация ImageNet с глубокими свёрточными нейронными сетями» Хинтона и Алекса в 2012 году.



увеличение данных

«Иногда дело не в том, что алгоритм побеждает, а в том, что у него больше данных».

Я не помню, кто сказал исходные слова, Хинтон? Видно, насколько важны обучающие данные, особенно в методах глубокого обучения. Больше обучающих данных означает, что более глубокая сеть может использоваться для обучения лучшей модели.

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

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

  • Повернуть исходное изображение на небольшой угол

  • Добавить случайный шум

  • Некоторые эластичные искажения, в статье «Лучшие методы сверточных нейронных сетей для визуального анализа документов» были сделаны различные варианты увеличения MNIST.

  • Обрежьте часть исходного изображения. Например, в DeepID из изображения лица в качестве обучающих данных вырезается 100 небольших патчей, что сильно увеличивает набор данных. Заинтересованные могут увидеть «Глубокое обучение представлению лиц на основе прогнозирования 10 000 классов».

    Что значит больше данных?

Использование 50 000 выборок MNIST для обучения SVM дает точность 94,48 %, а использование 5 000 выборок MNIST для обучения NN дает точность 93,24 %, поэтому большее количество данных может улучшить работу алгоритма. В машинном обучении сам алгоритм не может определить победителя, и нельзя произвольно сказать, какой из этих алгоритмов лучше или хуже, потому что данные оказывают большое влияние на производительность алгоритма.



Пожалуйста, укажите источник:blog.CSDN.net/U012162613/…