Типы оптимизаторов в глубоком обучении, которые должен знать каждый ИИ-инженер
Опубликовано: 2020-12-01Оглавление
Введение
Глубокое обучение — это большой шаг вперед по сравнению с машинным обучением с точки зрения гибкости, более высокой точности и широкого спектра возможностей в отраслевых приложениях. Будь то приложение для чата, автокоррекция грамматики, перевод между разными языками, обнаружение фальшивых новостей или автоматическое написание историй на основе некоторых первоначальных формулировок, глубокое обучение находит свое применение практически в каждом секторе.
При таком большом использовании становится важным, чтобы эти алгоритмы работали с минимальными ресурсами, чтобы мы могли сократить текущие расходы и обеспечить эффективные результаты за меньшее время. Оптимизатор — это метод или алгоритм обновления различных параметров, которые могут уменьшить потери с гораздо меньшими усилиями. Давайте посмотрим на некоторые популярные оптимизаторы глубокого обучения, которые дают приемлемые результаты.
Изучите курсы AI ML в лучших университетах мира. Заработайте программы Masters, Executive PGP или Advanced Certificate Programs, чтобы ускорить свою карьеру.
Градиентный спуск (GD)
Это самый простой оптимизатор, который напрямую использует производную функции потерь и скорости обучения, чтобы уменьшить потери и достичь минимума. Этот подход также используется при обратном распространении в нейронных сетях, где обновленные параметры распределяются между разными уровнями в зависимости от того, когда достигаются минимальные потери. Его легко реализовать и интерпретировать результаты, но он имеет различные проблемы.
Веса обновляются при вычислении градиента всего набора данных, что замедляет процесс. Также требуется большой объем памяти для хранения этих временных данных, что делает этот процесс ресурсоемким. Хотя идея, лежащая в основе этого алгоритма, хорошо подходит, ее необходимо настроить.
Стохастический градиентный спуск
Это измененная версия метода GD, в которой параметры модели обновляются на каждой итерации. Это означает, что после каждой обучающей выборки проверяется функция потерь и обновляется модель. Эти частые обновления приводят к сходимости к минимуму за меньшее время, но это происходит за счет увеличения дисперсии, из-за которой модель может выйти за пределы требуемой позиции.

Но преимуществом этого метода является меньшее потребление памяти по сравнению с предыдущим, поскольку теперь нет необходимости хранить предыдущие значения функций потерь.
Мини-пакетный градиентный спуск
Другим вариантом этого подхода GD является мини-пакет, при котором параметры модели обновляются небольшими партиями. Это означает, что после каждых n пакетов параметры модели будут обновляться, и это гарантирует, что модель движется к минимуму за меньшее количество шагов без частых отклонений. Это приводит к меньшему использованию памяти и низкой дисперсии модели.
Читайте: Идеи проекта машинного обучения
Градиентный спуск на основе импульса
Давайте вернемся к методу, который мы используем для обновления параметров. Основываясь на производной первого порядка функции потерь, мы применяем обратное распространение градиентов. Частота обновлений может быть после каждой итерации, партии или последней, но мы не учитываем, сколько у нас обновлений в параметрах.
Если этот элемент истории включить в следующие обновления, то это может ускорить весь процесс, а именно это и означает импульс в данном оптимизаторе. Этот элемент истории похож на то, как наш разум запоминает вещи. Если вы идете по улице и преодолеваете довольно большое расстояние, то вы будете уверены, что пункт назначения находится на некотором расстоянии впереди, и вы увеличите скорость.
Этот элемент зависит от предыдущего значения, скорости обучения и нового параметра, называемого гаммой, который управляет этим обновлением истории. Правило обновления будет выглядеть примерно так: w = w — v, где v — элемент истории.
Ускоренный градиент Нестерова (NAG)
GD, основанный на импульсе, дал импульс используемым в настоящее время оптимизаторам, сходясь к минимумам как можно раньше, но привнес новую проблему. Этот метод требует много разворотов и колебаний в долине минимумов, добавляя к общему времени. Затрачиваемое время по-прежнему намного меньше, чем в обычном GD, но эта проблема также нуждается в исправлении, и это делается в NAG.
Подход, использованный здесь, заключался в том, что обновление параметров сначала будет выполняться с элементом истории, а затем вычисляется только производная, которая может перемещать его в прямом или обратном направлении. Это называется опережающим подходом, и он имеет больше смысла, потому что, если кривая приближается к минимуму, производная может заставить ее двигаться медленно, так что будет меньше колебаний и, следовательно, экономится больше времени.

Читайте также: Методы глубокого обучения, которые вы должны знать
Адаград
До сих пор мы фокусировались только на том, как параметры модели влияют на наше обучение, но мы не говорили о гиперпараметрах, которым присваивается постоянное значение на протяжении всего обучения. Одним из таких важных гиперпараметров является скорость обучения, и ее изменение может изменить темп обучения.
Для ввода разреженных признаков, где большинство значений равны нулю, мы можем позволить себе более высокую скорость обучения, которая повысит градиент умирания, возникающий в результате этих разреженных признаков. Если у нас есть плотные данные, у нас может быть более медленное обучение.
Решение для этого состоит в том, чтобы иметь адаптивную скорость обучения, которая может меняться в зависимости от введенных данных. Оптимизатор Adagrad пытается предложить эту адаптивность, снижая скорость обучения пропорционально обновленной истории градиентов.
Это означает, что когда есть большие обновления, элемент истории накапливается, и поэтому он снижает скорость обучения и наоборот. Одним из недостатков этого подхода является то, что скорость обучения резко снижается и через некоторое время приближается к нулю.
RMSProp
Это улучшение оптимизатора Adagrad. Это направлено на снижение агрессивности скорости обучения за счет экспоненциального среднего значения градиентов вместо кумулятивной суммы квадратов градиентов. Адаптивная скорость обучения остается неизменной, поскольку теперь экспоненциальное среднее значение будет наказывать большую скорость обучения в условиях, когда обновлений меньше, а меньшую скорость — при большем количестве обновлений.
Адам
Adaptive Moment Estimation сочетает в себе мощь RMSProp (среднеквадратичная опора) и GD на основе импульса. В оптимизаторах Adam сила импульса GD для хранения истории обновлений и скорость адаптивного обучения, обеспечиваемая RMSProp, делает оптимизатор Adam мощным методом. Он также представляет два новых гиперпараметра beta1 и beta2, которые обычно поддерживаются на уровне 0,9 и 0,99, но вы можете изменить их в соответствии со своим вариантом использования.

Обязательно прочтите: регуляризация в глубоком обучении
Заключение
В этой статье мы рассмотрели 8 оптимизаторов глубокого обучения в порядке простоты их использования, а также то, как ограничение одного оптимизатора преодолевается другим и так далее. Здесь упоминаются и другие модификации того или иного оптимизатора, но это основные, которые вы должны рассмотреть, прежде чем переходить к сложным решениям.
Выбор победителя среди них очень субъективен в зависимости от варианта использования и проблемы, с которой вы имеете дело, но, безусловно, можно поставить Adam Optimizer на первое место из-за его комбинации с концепцией импульса, которая изменила способ обновления параметров модели и адаптации меняющихся скорость обучения для различных сценариев, обеспечивающая эффективную обработку любых типов входных данных.
Общая тенденция показывает, что при одинаковых потерях эти оптимизаторы сходятся в разных локальных минимумах. В то время как оптимизаторы адаптивного обучения сходятся при более четких минимумах, другие типы методов сходятся при более плоских минимумах, что лучше для обобщения. Эти методы могут помочь только в некоторой степени, потому что по мере того, как глубинные нейронные сети становятся все больше, для получения хороших результатов требуются более эффективные методы.
Если вам интересно освоить машинное обучение и искусственный интеллект, повысьте свою карьеру, получив степень магистра наук в области машинного обучения и искусственного интеллекта в IIIT-B и Ливерпульском университете Джона Мура.
Как оптимизаторы работают с глубоким обучением?
В то время как нейронные сети в настоящее время являются шумихой, оптимизатор — это нечто гораздо более фундаментальное для изучения нейронной сети. В то время как нейронные сети могут учиться самостоятельно, без предварительных знаний, оптимизатор — это программа, которая работает с нейронной сетью и позволяет ей учиться намного быстрее. Короче говоря, он делает это, изменяя параметры нейронной сети таким образом, чтобы сделать обучение с этой нейронной сетью намного быстрее и проще. Именно эти оптимизаторы позволяют нейронным сетям работать в режиме реального времени, а обучение занимает всего несколько минут. Без них обучение легко заняло бы дни.
Почему сложно оптимизировать алгоритмы глубокого обучения?
Обычно считается, что системы глубокого обучения трудно оптимизировать, потому что они большие и сложные, часто включающие несколько уровней и нелинейности. Оптимизаторам приходится иметь дело с огромной системой, которую непросто понять. Некоторые инструменты глубокого обучения предоставляют только ограниченное количество параметров, которые можно настроить, что ограничивает их полезность. Однако есть несколько эффективных способов оптимизации моделей глубокого обучения и улучшения их обобщения.
Какие существуют оптимизаторы в глубоком обучении?
В глубоком обучении оптимизаторы используются для настройки параметров модели. Цель оптимизатора состоит в том, чтобы скорректировать веса модели, чтобы максимизировать функцию потерь. Функция потерь используется как способ измерения того, насколько хорошо работает модель. При обучении модели нейронной сети необходимо использовать оптимизатор. Существует множество различных оптимизаторов, которые можно использовать с моделью глубокого обучения. Одними из самых популярных оптимизаторов являются RMSprop, импульс и Адам.