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

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

Теперь давайте разберемся ниже с различными типами оптимизаторов,

1. Градиентный спуск (GD)

2. Стохастический градиентный спуск (SGD)

3. Мини-пакетный стохастический градиентный спуск

4. SGD с Momentum

5. Адаптивный градиент (AdaGrad)

6. АдаДельта и RMSprop

7. Адам

Градиентный спуск (GD):

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

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

Об этом позаботится следующая функция:

где w(t) — новое значение веса, а w(t-1) — старое значение веса, а η — скорость обучения. Вышеупомянутое уравнение вычисляет градиент функции стоимости относительно. к параметрам/весам w для всего обучающего набора данных.

Скорость обучения и ее значимость:

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

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

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

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

Хотя это вычислительно недорогой метод, он требует много времени для сходимости и имеет больше шума, чем градиентный спуск. Замечено, что SGD требуется больше времени для достижения глобальных минимумов по сравнению с градиентным спуском.

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

До сих пор мы видели, что GD требует больших вычислительных ресурсов, чем SGD, но достигает глобальных минимумов быстрее, чем SGD. Чтобы решить эту проблему, используется смесь пакетного градиентного спуска и SGD, которая называется мини-пакетным SGD. Он не использует набор данных сразу и не использует один пример. Мы используем пакет из фиксированного количества обучающих примеров меньше, чем фактический набор данных, и называется мини-пакетом.

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

SGD с Momentum:

SGD с импульсом – это метод стохастической оптимизации, который добавляет член импульса к обычному стохастическому градиентному спуску.

Несмотря на то, что мини-пакет SGD является лучшим выбором, чем GD и SGD, недостатком является то, что обновления весов очень зашумлены. SGD с Momentum помогает преодолеть эту проблему, используя экспоненциальное среднее взвешивание, которое придает больший вес предыдущим обновлениям, чем недавнему обновлению. Это ускоряет конвергенцию в соответствующем направлении и уменьшает флуктуацию в нерелевантном направлении. В этом методе используется еще один гиперпараметр, известный как Momentum. Моментум в момент времени t вычисляется с использованием всех предыдущих обновлений, придавая больший вес предыдущим обновлениям по сравнению с недавним обновлением. Это уменьшает шум во время обновления весов и приводит к ускорению сходимости. Единственный недостаток SGD с Momentum — нам нужно вычислять еще одну переменную для каждого обновления.

Адаптивный градиент (AdaGrad)

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

Формула обновления веса выглядит следующим образом:

где w(t) — новое значение веса, а w(t-1) — старое значение веса, а η — скорость обучения.

В Adagrad Optimizer основная идея заключается в том, что каждый вес имеет разную скорость обучения (η).

Формула обновления веса для Адаграда выглядит так:

Здесь η — начальная скорость обучения, ϵ — небольшое положительное значение, позволяющее избежать ошибки деления на ноль, если α(t) становится равным 0. Потому что, если α(t) становится равным нулю, то скорость обучения становится равной нулю, что в свою очередь, после умножения на производную w(t-1) станет равным w(t), и это приведет к малой сходимости.

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

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

Есть еще недостатки использования оптимизатора Adagrad. Если у нас очень глубокая нейронная сеть и количество итераций велико, значение α (t) станет очень высоким, и из-за этого значение η ’(t) станет очень низким. В результате старый вес будет почти равен новому весу, что приведет к медленной сходимости.

AdaDelta и RMSprop

Работа Adadelta и RMSprop почти одинакова. Оба были разработаны независимо друг от друга примерно в одно и то же время, чтобы решить проблему оптимизатора Adagrad.

Идея Adadelta заключается в том, что вместо суммирования всех прошлых квадратов градиентов от 1 до t временных шагов, что, если бы мы могли ограничить размер окна. Например, вычисление квадрата градиента последних десяти градиентов и усреднение. Это может быть достигнуто с помощью экспоненциально взвешенных средних по градиенту.

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

ϵ — маленькое положительное число, чтобы избежать кратности на ноль.

Таким образом, в отличие от α в Adagrad, он экспоненциально увеличивается после каждого временного шага. В Ададельде, используя экспоненциально взвешенные средние значения за прошлый градиент, увеличение S(dw) находится под контролем. Типичное значение β составляет 0,9 или 0,95.

Адаптивная оценка момента (Адам):

Адам сочетает стохастический градиентный спуск с Momentum и алгоритмом RMSprop. Adam Optimizer наследует сильные стороны или положительные качества двух вышеупомянутых методов и строит их, чтобы обеспечить более оптимизированный градиентный спуск. С помощью Momentum он может добиться сглаживания, а с использованием RMSprop он может эффективно изменить скорость обучения, так что значение α (t) не будет очень высоким.

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

Выводы

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

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

Наши команды искусственного интеллекта и аналитики создают модели для обнаружения аномальных действий, связанных с противодействием отмыванию денег, мошенничеством и рыночными злоупотреблениями. Они отслеживаются, что позволяет нам фиксировать постоянно развивающиеся подозрительные действия в режиме реального времени, используя объединенные данные, которые мы наблюдаем. Как специалист по данным, я рад работать в NICE Actimize, поскольку это «рай» для специалистов по данным: мы не только помогаем улучшить мир, но и стимулируем разнообразные инновации.

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

Рекомендации

Гаврилова Ю. (2020, 2 декабря). serokell.io. Получено с https://serokell.io/blog/ml-optimization

Сан, Р. (2010). Оптимизация для глубокого обучения: теория и алгоритмы. архив, 6–9, 22–25.