Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как можно ускорить сходимость в градиентных методах настройки нейронных сетей?

ПрограммированиеМашинное обучение+3
  · 2,7 K
Openstack DevOps and IBM/Informix Certified DBA . Phd in Math (Duality of spaces of...  · 24 июн 2022
Задача оптимизатора — сделать функцию потерь как можно меньше, чтобы найти подходящие параметры для выполнения определенной задачи. В настоящее время основными оптимизаторами, используемыми при обучении моделей, являются SGD, RMSProp, Adam, AdaDelt и так далее. Оптимизаторы SGD с импульсом широко используются в научных кругах и промышленности, поэтому большинство выпускаемых моделей обучаются с помощью оптимизатора SGD с импульсом. Но у SGD-оптимизатора с импульсом есть два недостатка: во-первых, скорость сходимости низкая, во-вторых, трудно установить начальную скорость обучения, однако, если начальная скорость обучения установлена
правильно, а модели обучены в достаточном количестве итераций. , модели, обученные SGD с помощью импульса, могут достигать более высокой точности по сравнению с моделями, обученными другими оптимизаторами. Некоторые другие оптимизаторы с адаптивной скоростью обучения, такие как Adam, RMSProp и т. д., стремятся сходиться быстрее, но окончательная точность сходимости будет немного хуже. Если вы хотите обучить модель с более высокой скоростью сходимости, мы рекомендуем вам использовать оптимизаторы с адаптивной скоростью обучения, но если вы хотите обучить модель с более высокой точностью, мы рекомендуем вам использовать оптимизатор SGD с импульсом.
==========================
Концепция скорости обучения: скорость обучения — это гиперпараметр для управления скоростью обучения, чем ниже скорость обучения, тем медленнее изменяется значение потерь, хотя использование низкой скорости обучения может гарантировать, что вы не пропустите ни один локальный минимум, но это также означает, что скорость конвергенции медленная, особенно когда градиент попадает в область градиентного плато.
=========================
Нейронные сети глубокого обучения обучаются с использованием алгоритма стохастического градиентного спуска.
Стохастический градиентный спуск — это алгоритм оптимизации, который оценивает градиент ошибки для текущего состояния модели, используя примеры из обучающего набора данных, а затем обновляет веса модели, используя алгоритм обратного распространения ошибок, называемый просто обратным распространением.
Величина, на которую веса обновляются во время обучения, называется размером шага или «скоростью обучения».
В частности, скорость обучения — это настраиваемый гиперпараметр, используемый при обучении нейронных сетей, который имеет небольшое положительное значение, часто в диапазоне от 0,0 до 1,0.Скорость обучения определяет, насколько быстро модель адаптируется к проблеме. Меньшие скорости обучения требуют большего количества эпох обучения, учитывая меньшие изменения, вносимые в веса при каждом обновлении, тогда как более высокие скорости обучения приводят к быстрым изменениям и требуют меньшего количества эпох обучения.Слишком большая скорость обучения может привести к слишком быстрой сходимости модели к неоптимальному решению, тогда как слишком маленькая скорость обучения может привести к зависанию процесса.
============================
Задача обучения нейронных сетей глубокого обучения заключается в тщательном выборе скорости обучения. Это может быть самый важный гиперпараметр для модели.
============================
Стратегия снижения скорости обучения: Во время обучения, если мы всегда используем одну и ту же скорость обучения, мы не можем получить модель с максимальной точностью, поэтому скорость обучения следует регулировать во время обучения. На ранней стадии обучения веса находятся в состоянии случайной инициализации, а градиенты имеют тенденцию к снижению, поэтому мы можем установить относительно большую скорость обучения для более быстрой сходимости. На поздней стадии обучения веса близки к оптимальным значениям, оптимальное значение не может быть достигнуто при относительно большой скорости обучения, поэтому следует использовать относительно меньшую скорость обучения. Во время обучения многие исследователи используют стратегию снижения скорости обучения piecewise_decay, которая представляет собой пошаговое снижение скорости обучения. Например, при обучении ResNet50 начальная скорость обучения, которую установили, равна 0,1, и скорость обучения падает до 1/10 каждые 30 эпох, общее количество эпох для обучения равно 120. Помимо кусочного_распада, многие исследователи также предлагали другие способы уменьшить скорость обучения, например, polynomial_decay, exponential_decay и cosine_decay и т. д.  Среди них cosine_decay стал предпочтительным методом снижения скорости обучения для повышения точности модели, поскольку нет необходимости настраивать гиперпараметры, а надежность относительно высока. 
ResNet50 — это вариант модели ResNet, который имеет 48 слоев свертки, а также 1 слой MaxPool и 1 средний пул.  Он имеет 3,8 x 10 ^ 9 операций с плавающей запятой. Это широко используемая модель ResNet и ее архитектура хорошо известна.
Примеры Python кода  для плотов:
1.Эффект адаптивных скоростей обучения. 2.Затухание скорости обучения. 3.Влияние скорости обучения и импульса.
1 эксперт согласен
@Михаил Наумов, Похоже Вы видите через стены. На железе никто не экономит. Где и с кем я работал Вас также не касается.