"Машинное обучение"

Улучшение искусственной нейронной сети с помощью регуляризации и оптимизации

В этой статье мы обсудим методы регуляризации и оптимизации, которые используются программистами для создания более надежной и обобщенной нейронной сети. Мы изучим наиболее эффективные методы регуляризации, такие как L1, L2, Early Stopping и Drop Out, которые помогают в обобщении модели. Мы более подробно рассмотрим различные методы оптимизации, такие как пакетный градиентный спуск, стохастический градиентный спуск, AdaGrad и AdaDelta, для лучшей сходимости нейронных сетей.

Регуляризация для обобщения модели

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

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

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

Давайте подробно обсудим эти методы.

L1 Регуляризация

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

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

L2 регуляризация

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

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

Выбывать

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

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

Ранняя остановка

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

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

Оптимизация производительности модели

Для лучшей сходимости нейронной сети важно понимать различные методы оптимизации, такие как пакетный градиентный спуск, стохастический градиентный спуск, мини-пакетный градиентный спуск, AdaGrad, AdaDelta.

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

Пакетный градиентный спуск (ванильный градиентный спуск)

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

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

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

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

Стохастический градиентный спуск

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

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

Мини-пакетный градиентный спуск

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

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

Адаград

Adagrad (Adaptive Gradient) - это алгоритм оптимизации на основе градиента, в котором скорость обучения обновляется с учетом весов. Он устанавливает низкую скорость обучения для весов связей между различными слоями нейронов в нейронной сети с часто встречающимися характеристиками данных, одновременно устанавливая более высокую скорость обучения для весов или параметров, связанных с необычными характеристиками данных. Adagrad обычно адаптирует разные скорости обучения для каждого веса или параметра на каждой итерации или эпохе в зависимости от их связи с разреженными или плотными функциями. Формула обновления веса в адаграде представлена ​​следующим образом:

В приведенном выше уравнении η_t представляет собой скорость адаптивного обучения, вычисленную относительно градиента функции потерь на этапе t следующим образом:

В приведенном выше уравнении η представляет собой глобальную скорость обучения, а α_t представляет собой сумму квадратов градиентов прошлых функций потерь, E (X, W) с ϵ, небольшим положительным числом. Всякий раз, когда α_t увеличивается до более высокой границы, это, в свою очередь, резко снижает скорость обучения, что влияет на обновление веса. Чтобы избежать этой ситуации, Adadelta является ответом, который обсуждается далее в этом разделе. Основное преимущество использования адаптивной градиентной оптимизации состоит в том, что она устраняет необходимость ручного обновления скорости обучения.

АдаДельта

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

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

Первоначально для W_avg_0 установлено значение 0 для t = 0. γ представляет коэффициент затухания Ададелты; он представляет собой дробную часть градиента функции потерь, сохраняемую на каждом временном шаге t. Если установить более высокое значение, мы сможем ограничить рост градиента функции потерь, что, в свою очередь, поможет улучшить сходимость весов или параметров нейронной сети.

Резюме

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