Найти в Дзене
ЦифроПроф

Алгоритм Adam

Adam (Adaptive Moment Estimation) — алгоритм адаптивной оптимизации, созданный специально для глубокого обучения нейронных сетей. Для каждого веса в нейронной сети Adam поддерживает два скользящих средних: первый момент (среднее значение градиентов) и второй момент (дисперсия градиентов без центра). Это позволяет алгоритму эффективно адаптироваться как к плоским, так и к крутым областям пространства параметров. Основные шаги алгоритма Adam: Преимущества алгоритма Adam: Основные гиперпараметры в Adam: α — размер шага оптимизации. β₁ — скорость затухания импульса (типичное значение — 0,9). β₂ — скорость затухания квадратов градиентов (типичное значение — 0,999). ϵ — маленькое значение, чтобы предотвратить деление на ноль (обычно около 1e-8). Для достижения оптимальных результатов требуется тщательная настройка гиперпараметров, таких как скорости обучения и параметры моментов. Чтобы понять, как этот алгоритм работает, рассмотрим визуализацию Эмильена Дюпона из Оксфордского университета. В
Фото из открытых источников
Фото из открытых источников

Adam (Adaptive Moment Estimation)алгоритм адаптивной оптимизации, созданный специально для глубокого обучения нейронных сетей.

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

Основные шаги алгоритма Adam:

  1. Инициализировать веса нейронной сети.
  2. Вычислить градиенты функции потерь относительно весов.
  3. Вычислить скользящие средние градиентов и их квадратов.
  4. Скорректировать смещение в скользящих средних.
  5. Обновить веса с использованием скорректированных скользящих средних.
  6. Повторять шаги 2–5 до тех пор, пока не будет выполнен критерий остановки (например, определённое количество эпох или пороговое значение потери).

Преимущества алгоритма Adam:

  • Эффективность. Adam вычислительно эффективен и требует минимальной памяти.
  • Адаптивная скорость обучения. Для разных параметров вычисляются индивидуальные адаптивные скорости обучения, что помогает быстрее сходиться.
  • Работа с разреженными градиентами. Adam хорошо справляется с разреженными градиентами, которые распространены в различных задачах, например в обработке естественного языка и компьютерном зрении.
  • Робость. Он менее чувствителен к выбору гиперпараметров, особенно скорости обучения.

Основные гиперпараметры в Adam:

α — размер шага оптимизации.

β₁ — скорость затухания импульса (типичное значение — 0,9).

β₂ — скорость затухания квадратов градиентов (типичное значение — 0,999).

ϵ — маленькое значение, чтобы предотвратить деление на ноль (обычно около 1e-8).

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

Чтобы понять, как этот алгоритм работает, рассмотрим визуализацию Эмильена Дюпона из Оксфордского университета. В ней четыре алгоритма: слева SGD, справа Adam, а между ними — два похожих на Adam алгоритма (их разбирать не будем). Быстрее всех минимум находит Adam.

Запишем алгоритм Adam в Keras:

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy',

metrics=['acc'])

Чтобы настроить гиперпараметры, подключим класс алгоритма:

from tensorflow.keras.optimizers import Adam

optimizer = Adam()

model.compile(optimizer=optimizer, loss='sparse_categorical_crossentropy',

metrics=['acc'])

Задача

Постройте и обучите свёрточную нейронную сеть на наборе данных с одеждой. Для этого создайте в коде три функции:

  1. загрузки обучающей выборки load_train(),
  2. создания модели create_model(),
  3. запуска модели train_model().

Добейтесь того, чтобы значение accuracy на тестовой выборке было не меньше 87%.