Все, что нужно знать новичку

(Пересмотренную версию этого блога можно найти здесь)

Большинство из нас, вероятно, слышали об успехе ResNet, победителя ILSVRC 2015 в классификации, обнаружении и локализации изображений и победителя MS COCO 2015 обнаружения и сегментации . Это огромная архитектура с пропускаемыми подключениями всюду. Используя этот ResNet в качестве предварительно обученной сети для моего проекта машинного обучения, я подумал: «Как кто-то может создать такую ​​архитектуру?» ’’

Вскоре я узнал, что эту архитектуру строят многие инженеры и ученые с их многолетним опытом. И это скорее догадка, чем полная математика, которая скажет вам: «Теперь нам нужен фильтр 5x5, чтобы добиться максимальной точности». У нас есть прекрасные архитектуры для задачи классификации изображений, но для решения других задач нам приходится тратить много энергии, чтобы найти архитектуру с приемлемой производительностью для этих задач. Безусловно, было бы лучше, если бы мы могли автоматизировать эту задачу моделирования архитектуры так же, как мы изучаем параметры моделей машинного обучения.

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

Он имеет 3 отдельных измерения: пространство поиска, стратегия поиска и оценка производительности.

Пространство поиска определяет , какую нейронную архитектуру NAS может обнаружить в принципе. Это может быть цепная архитектура, в которой выходные данные уровня (n-1) подаются как входные данные уровня (n). Или это может быть современная комплексная архитектура с пропускным подключением (многофилиальная сеть).

Иногда люди действительно хотят использовать созданную вручную внешнюю архитектуру (макроархитектуру) с повторяющимися мотивами или ячейками. В таких случаях внешняя структура является фиксированной, и NAS ищет только архитектуры ячеек. Этот тип поиска известен как микропоиск или поиск по ячейкам.

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

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

Обучение с подкреплением

Обучение с подкреплением - это проблема, с которой сталкивается агент (программа), который должен изучать поведение посредством взаимодействия проб и ошибок с динамической средой, чтобы максимизировать вознаграждение. Агент (выполняет какое-то действие в соответствии с некоторой политикой, параметризованной θ. Затем этот агент обновляет политику θ, исходя из вознаграждения за это предпринятое действие. В случае NAS агент создает архитектуру модели, дочерняя сеть (действие). Затем модель обучается на наборе данных, и производительность модели на данных проверки принимается в качестве награды.

Как правило, в качестве контроллера или агента используется рекуррентная нейронная сеть (RNN). Он производит строку, и модель строится из этой строки стохастически.

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

Здесь параметры RNN действуют как политика θ агента. Производственная строка (высота, ширина фильтра, высота шага и т. Д.) - это действие агента. Производительность модели на проверочном наборе является вознаграждением агента в этом методе подкрепления. RNN обновляет свои параметры θ таким образом, чтобы ожидаемая точность проверки предложенных архитектур была максимальной.

RNN обучается методом градиента политики для итеративного обновления политики θ. Основная цель - максимизировать ожидаемую точность, т.е.

Здесь R - точность модели, a_1: T - строка длины T, созданная RNN (действие), θ - параметр RNN.

Поскольку J (θ) не дифференцируется, для итеративного обновления θ используется метод градиента политики. Функция обновления выглядит так

Это приближение исходного уравнения. Член математического ожидания J (θ) заменяется выборкой. Внешнее суммирование этого обновленного уравнения предназначено для этой выборки, т. Е. Берется m числа моделей, отобранных из RNN, и их среднее значение. P (a_t | a_ (t − 1): 1; θc), - вероятность выполнения действия a_t в момент времени t с учетом всех действия от 1 до (t-1) в соответствии с политикой θ или, предсказанной RNN с параметром θ (ссылка) .

Кодирование пропуска соединений немного сложно. Для этого RNN для каждого слоя генерируется результат, называемый Точка привязки. Якорная точка используется для обозначения пропуска соединений. На слое N точка привязки будет содержать сигмоиды N - 1 на основе содержимого, чтобы указать предыдущие слои, которые необходимо соединить.

Прогрессивный поиск нейронной архитектуры (PNAS)

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

Ячейки соединяются последовательно в заранее определенном количестве, чтобы сформировать сеть. И каждая ячейка образована несколькими блоками (в исходной статье использовано 5).

Блоки состоят из предопределенных операций.

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

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

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

Но для разумного K слишком много кандидатов в 2 блока для обучения. В качестве решения этой проблемы обучается «дешевая» суррогатная модель, которая предсказывает конечную производительность просто путем чтения строки (ячейка кодируется в строку). Данные для этого обучения собираются при построении, обучении и проверке ячеек.

Например, мы можем построить все 256 одноблочных ячеек и измерить их производительность. И обучите суррогатную модель с этими данными. Затем используйте эту модель для прогнозирования производительности 2 блочных ячеек без их обучения или тестирования. И, конечно же, суррогатная модель должна быть способна обрабатывать входные данные переменного размера. И затем выбираются верхние K 2-х блоковых ячеек с наилучшими характеристиками, как это предсказывает модель. Затем эти 2 блочные ячейки обучаются, «суррогатная» модель настраивается, эти ячейки расширяются до 3 блоков, и это повторяется до тех пор, пока мы не получим 5 блочных ячеек.

Поиск дифференцированной архитектуры (DARTS)

Пространство поиска для нейронных архитектур является дискретным, т.е. одна архитектура отличается от другой, по крайней мере, уровнем или некоторым параметром в слое, например, фильтр 5x5 против фильтра 7x7 . В этом методе к этому дискретному поиску применяется непрерывная релаксация, которая обеспечивает прямую оптимизацию на основе градиента.

Ячейка, которую мы ищем, может быть направленным ациклическим графом, где каждый узел x является скрытым представлением (например, карта признаков в сверточных сетях), и каждый направленный edge (i, j) связан с некоторой операцией o (i, j) (свертка, максимальное объединение и т. д.), которая преобразует x (i) и сохранил скрытое представление в узле x (j)

выход каждого узла можно рассчитать по уравнению слева. Узлы пронумерованы таким образом, что есть ребро (i, j) от узла x (i) на x (j),, затем на i ‹j.

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

Теперь O (i, j) операция между узлом x (i) и x (j) представляет собой выпуклую комбинацию набора операций o (i, j), где o (.) ϵ S, где S - набор всех возможных операций.

Выход O (i, j) рассчитывается по левому уравнению .

Потери при обучении и проверке обозначаются L_train и L_val соответственно. Обе потери определяются не только параметрами архитектуры α, но и весами «w» в сети. Цель поиска архитектуры - найти α ∗, который минимизирует потерю проверки L_val (w ∗, α ∗), где веса 'w ∗', связанный с архитектурой, получается путем минимизации потерь при обучении.

w ∗ = argmin L_train (w, α ∗).

Это подразумевает двухуровневую проблему оптимизации с α в качестве переменной верхнего уровня и w в качестве переменной нижнего уровня. :

α * = argmin L_val (w ∗ (α), α)

s.t. w ∗ (α) = argmin L_train (w, α)

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

Когда клетки найдены, они используются для построения более крупных сетей.

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