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

Обратное распространение

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

Оптимизация

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

ЛокоПроп

В LocoProp исследователи Google AI представляют новую основу для обучения моделей глубоких нейронных сетей (DNN). Новая структура LocoProp рассматривает нейронные сети как модульную композицию слоев, каждый из которых имеет свой регуляризатор веса, цель вывода и функцию потерь. Эта формулировка позволяет локально обновлять веса в каждом слое с помощью оптимизатора первого порядка (например, RMSProp), что позволяет избежать вычислительно затратных операций, необходимых для оптимизатора более высокого порядка. Авторы показывают, что их метод превосходит традиционный BackProp по целому ряду тестов. Эмпирически мы показываем, что LocoProp превосходит методы первого порядка в глубоком тесте автоэнкодера и работает сравнимо с оптимизаторами более высокого порядка, такими как Shampoo и K-FAC, без высоких требований к памяти и вычислениям.

Метод

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

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

Эксперименты

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

Заключение

Фреймворк LocoProp разбивает глубокие нейронные сети на отдельные слои, каждый со своим собственным регуляризатором, целью вывода и функцией потерь. Обновления применяются параллельно к каждому слою, чтобы свести к минимуму локальные задачи. Обновления первого порядка, но комбинированные обновления напоминают направления обновления более высокого порядка. Это выгодно, потому что позволяет проводить более эффективную оптимизацию, в то же время получая модель высокого качества. LocoProp обеспечивает гибкость выбора послойных регуляризаторов, целей и функций потерь. Таким образом, это позволяет разрабатывать новые правила обновления на основе этих вариантов. Наш код для LocoProp доступен онлайн на GitHub. Исследователи искусственного интеллекта Google все еще работают над распространением идеи LocoProp на крупномасштабные модели.

Чтобы узнать больше интересных и захватывающих блогов, следите за обновлениями!

Подпишитесь на меня: М. Хасиб Хассан