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

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

Использование графических процессоров - значительный шаг вперед в последние годы, который делает практическим обучение небольших глубоких сетей. Известным ограничением подхода с использованием графического процессора является то, что ускорение обучения невелико, когда модель не помещается в память графического процессора (обычно менее 6 гигабайт).

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

В предыдущем посте мы говорили о 5 различных алгоритмах эффективного вывода глубокого обучения. В этой статье мы обсудим верхнюю правую часть квадранта слева. Каковы лучшие методы исследования для более эффективного обучения глубоких нейронных сетей?

1 - Обучение распараллеливанию

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

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

Например, мы можем использовать параллелизм данных: загружать два изображения в одну и ту же модель и запускать их одновременно. Это не влияет на задержку для любого отдельного входа. Это не делает ее короче, а увеличивает размер партии. Это также требует согласованного обновления веса во время тренировки.

Например, в статье Джеффа Дина Крупномасштабные распределенные глубокие сети есть сервер параметров (в качестве главного) и пара рабочих моделей (в качестве подчиненных), выполняющих свои собственные фрагменты обучающих данных и обновляющих градиент до главного. .

Другая идея - параллелизм моделей - разделение модели и распределение каждой части по разным процессорам или разным потокам. Например, представьте, что мы хотим запустить свертку на изображении ниже, выполнив 6-мерный цикл «for». Что мы можем сделать, так это разрезать входное изображение на 2x2 блока, чтобы каждый поток / процессор обрабатывал 1/4 изображения. Кроме того, мы можем распараллелить сверточные слои по областям выходной или входной карты функций, а полностью связанные слои - с помощью выходной активации.

Новейшие достижения в области глубокого обучения - из источника, которому можно доверять. Подпишитесь на еженедельное погружение во все, что связано с глубоким обучением, подготовленное экспертами, работающими в этой области.

2 - Тренировка на смешанную точность

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

Производительность (скорость) любой программы, включая обучение нейронной сети и логический вывод, ограничена одним из трех факторов: арифметической пропускной способностью, пропускной способностью памяти или задержкой. Пониженная точность обращается к двум из этих ограничителей. Давление на полосу пропускания памяти снижается за счет использования меньшего количества битов для хранения того же количества значений. Арифметическое время также может быть уменьшено на процессорах, которые предлагают более высокую пропускную способность для снижения точности математических вычислений. Например, пропускная способность математических вычислений половинной точности в последних графических процессорах в 2-8 раз выше, чем в случае одинарной точности. Помимо повышения скорости, форматы с пониженной точностью также сокращают объем памяти, необходимый для обучения.

Современные системы обучения глубокому обучению используют формат одинарной точности (FP32). В своей статье Mixed Precision Training исследователи из NVIDIA и Baidu рассмотрели обучение с пониженной точностью при сохранении точности модели.

В частности, они обучили различные нейронные сети, используя формат половинной точности IEEE (FP16). Поскольку формат FP16 имеет более узкий динамический диапазон, чем FP32, они представили три метода для предотвращения потери точности модели: сохранение основной копии весов в FP32, масштабирование потерь, которое минимизирует превращение значений градиента в нули, и арифметика FP16 с накоплением в FP32.

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

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

3 - Модельная дистилляция

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

Метод был впервые предложен Bucila et al., 2006 и обобщен Hinton et al., 2015. В процессе дистилляции знания передаются от модели учителя к ученику путем минимизации функции потерь, в которой целью является распределение вероятностей класса, предсказанное моделью учителя. То есть - вывод функции softmax на логитах модели учителя.

Итак, как именно работают сети учитель-ученик?

  • Сложная сеть учителей сначала обучается отдельно с использованием полного набора данных. Этот шаг требует высокой вычислительной производительности и, следовательно, может выполняться только в автономном режиме (на высокопроизводительных графических процессорах).
  • При проектировании сети ученика необходимо установить соответствие между промежуточными выходами сети ученика и сети учителя. Это соответствие может включать прямую передачу вывода слоя в сети учителя в сеть ученика или выполнение некоторого увеличения данных перед передачей его в сеть ученика.
  • Затем данные передаются через сеть учителей для получения всех промежуточных результатов, а затем к ним применяется увеличение данных (если таковое имеется).
  • Наконец, выходные данные из сети учителя распространяются обратно через сеть ученика, так что сеть ученика может научиться копировать поведение сети учителя.

4 - Плотное-разреженное-плотное обучение

Исследовательская статья Плотное-разреженное-плотное обучение для глубоких нейронных сетей была опубликована еще в 2017 году исследователями из Стэнфорда, NVIDIA, Baidu и Facebook. Применение Dense-Sparse-Dense (DSD) состоит из 3 последовательных шагов:

  • Плотность: нормальное обучение нейронной сети… все как обычно. Примечательно, что даже несмотря на то, что DSD действует как регуляризатор, также могут применяться обычные методы регуляризации, такие как выпадение и регуляризация веса. Авторы не упоминают пакетную нормализацию, но она тоже сработает.

  • Редкая. Мы упорядочиваем сеть, удаляя соединения с малым весом. Для каждого слоя в сети выбирается процент веса слоя, который по абсолютной величине близок к нулю. Это означает, что они устанавливаются на 0 на каждой итерации обучения. Стоит отметить, что сокращенные веса выбираются только один раз, а не на каждой итерации SGD. В конце концов, сеть восстанавливает информацию об отсеченных весах и конденсирует их в оставшихся. Тренируем эту разреженную сетку до схождения.
  • Плотно. Сначала мы повторно включаем обрезанные веса из предыдущего шага. Сетка снова тренируется в обычном режиме до схождения. Этот шаг увеличивает вместимость модели. Он может использовать восстановленную емкость для хранения новых знаний. Авторы отмечают, что скорость обучения должна составлять 1/10 от оригинала. Поскольку модель уже работает хорошо, более низкая скорость обучения помогает сохранить знания, полученные на предыдущем шаге.

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

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

Авторы протестировали DSD на классификацию изображений (CNN), генерацию титров (RNN) и распознавание речи (LSTM). Предложенный метод повысил точность по всем трем задачам. Примечательно, что DSD работает в разных доменах.

  • DSD улучшила все протестированные модели CNN - ResNet50, VGG и GoogLeNet. Повышение абсолютной точности первого уровня составило соответственно 1,12%, 4,31% и 1,12%. Это соответствует относительному улучшению на 4,66%, 13,7% и 3,6%. Эти результаты замечательны для столь тонко настроенных моделей!

  • DSD был применен к NeuralTalk, удивительной модели, которая генерирует описание из изображения. Чтобы убедиться, что метод Dense-Sparse-Dense работает на LSTM, часть CNN Neural Talk замораживается. Обучаются только слои LSTM. Очень высокая (80% вычтено набором валидации) обрезка была применена на шаге разреженного. Тем не менее, это дает оценку Neural Talk BLEU в среднем на 6,7%. Удивительно, что такая незначительная корректировка дает такое значительное улучшение.
  • Применение DSD для распознавания речи (Deep Speech 1) дает среднее относительное улучшение коэффициента ошибок Word на 3,95%. На аналогичной, но более продвинутой модели Deep Speech 2 Dense-Sparse-Dense применяется итеративно два раза. На первой итерации удаляется 50% весов, затем удаляется 25% весов. После этих двух итераций DSD среднее относительное улучшение составляет 6,5%.

Заключение

Я надеюсь, что мне удалось прозрачно объяснить эти методы исследования для эффективного обучения глубоких нейронных сетей. Работа над этой статьей позволила мне понять, насколько новы и умны эти методы. Четкое понимание этих подходов позволит вам при необходимости включить их в процедуру обучения модели.

Примечание редактора: Heartbeat - это онлайн-публикация и сообщество, созданное авторами и посвященное предоставлению первоклассных образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.

Независимая редакция, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по обработке данных и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить модели машинного обучения.