Глубокое обучение, вероятно, было самой обсуждаемой темой в академических кругах и промышленности в последнее время. Сегодня это уже не только для элитной группы ученых. Его широкое применение гарантирует, что люди из всех дисциплин понимают лежащие в основе концепции, чтобы иметь возможность лучше применять эти методы в своей области работы. В результате МООК, сертификации и буткемпы стали процветать. Люди обычно предпочитают практический опыт обучения. Однако есть значительная часть населения, которая все еще поддается очарованию изучения предмета традиционным способом - через исследовательские работы.

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

В этой серии сообщений в блоге я постараюсь сжать выводы, извлеченные из некоторых действительно важных статей, в 15–20-минутные чтения, не упуская при этом никаких ключевых формул или объяснений. Сообщения в блогах написаны с учетом потребностей людей, которые хотят изучить базовые концепции и приложения глубокого обучения, но не могут тратить слишком много времени на изучение обширной доступной литературы. Каждая часть блога будет в целом соответствовать теме и будет представлять соответствующие ключевые статьи, а также предлагать несколько отличных статей для дополнительного чтения.

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

1. Несколько полезных сведений о машинном обучении - Педро Домингос

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

  • Обучение = Представление + Оценка + Оптимизация:
    Представление - это выбор правильного набора классификаторов / гипотез, например : k-NN, наивный байесовский алгоритм, правила высказываний, байесовские сети и т. д.
    Оценка связана с разработкой оценочной функции, позволяющей отличать хорошие классификаторы от плохих, например Точность, прецизионность, расхождение K-L и т. Д.
    Затем следует выбор наиболее эффективного метода оптимизации для данного представления, например Жадный поиск, градиентный спуск и т. Д.
  • Важно избегать переобучения / обобщения:
    Важно выделить тестовый / контрольный набор данных и выполнять перекрестную проверку во время обучения вашей модели. Ошибка обобщения может быть разложена на систематическую ошибку и дисперсию. Смещение - это тенденция учащегося постоянно усваивать одно и то же неправильное, тогда как дисперсия - это тенденция узнавать шум (неправильная маркировка, ошибка выборки) в данных. Решением являются регуляризация, получение большего количества данных, выполнение тестов статистической значимости, таких как хи-квадрат.
  • Одних данных недостаточно:
    Каждый учащийся должен использовать некоторые предварительные знания или предположения (плавность, аналогичные примеры со схожими классами, ограниченная сложность и т. д.), помимо данных, которые он дает, чтобы используйте индукцию и обобщайте за ее пределами.
  • Больше данных ›более умный алгоритм:
    Это связано с тем, что все алгоритмы преследуют одну и ту же цель и следуют схожим базовым подходам. Например, правила высказываний кодируются в ИНС. Многие алгоритмы используют подход, основанный на сходстве признаков.
  • Интуиция терпит неудачу в высших измерениях / Проклятие размерности:
    Увеличение размерности увеличивает пространство поиска экспоненциально. Большое количество обучающих примеров теперь составляет лишь часть входного пространства, что затрудняет обобщение. Рассуждения на основе подобия, от которых зависят многие алгоритмы машинного обучения, разбиваются на более высокие измерения, поскольку теперь многие различные примеры имеют близкие оценки сходства или находятся «рядом». Человеческая интуиция не справляется с визуализацией за пределами 3-D.
  • Разработка функций - это ключ:
    Разработка функций - это ключевое различие между средними и хорошими классификаторами. Это занимает максимум времени в проекте машинного обучения, но является наиболее важным этапом. В настоящее время все больше и больше автоматизируется процесс разработки функций.
  • Изучение множества моделей / ансамблевое обучение:
    Объединение вариаций из нескольких моделей значительно повышает точность обучения. Пакетирование включает создание случайных вариантов обучающего набора путем повторной выборки, изучение классификатора для каждого и объединение результатов путем голосования. В бустинге к учащемуся на каждом шаге добавляется новая функция, которая сосредоточена на обучающих примерах, предыдущая версия учащегося ошибалась. Стекирование - это методология многоуровневого обучения, при которой выходные данные отдельных моделей становятся входными данными для следующего уровня моделей.
  • Теоретические гарантии - это не то, чем они кажутся:
    Основная роль теоретических гарантий в машинном обучении - это не критерий для практических решений, а скорее источник понимания движущей силы, лежащей в основе разработки алгоритма. . Это связано с тем, что теоретически делается много предположений, а границы являются неопределенными.
  • Простота не означает точности:
    Это идет вразрез с бритвой Оккама. В модельных ансамблях (повышение) точность обобщения повышается при добавлении новых функций / классификаторов. SVM может эффективно иметь бесконечные параметры (что усложняет обучаемого) без переобучения.
  • Репрезентативность не подразумевает обучаемости:
    Многие репрезентации утверждают, что могут обслуживать все виды функций. Однако они все еще могут быть недоступны для изучения. Например, изучающие стандартные деревья решений не могут изучить деревья с большим количеством листьев, чем обучающие примеры. Если пространство гипотез имеет много локальных оптимумов функции оценки, обучающийся может не найти истинную функцию, несмотря на то, что она представима.
  • Корреляция! = Причинная связь:
    Учащиеся / классификаторы изучают корреляцию между отдельными характеристиками и целевой переменной. Однако неправильно рассматривать их как представляющие причинно-следственные связи. Модели машинного обучения основаны на данных наблюдений, где прогностические переменные не находятся под контролем учащегося. Некоторые алгоритмы потенциально могут извлекать причинно-следственные связи, но их применимость ограничена.

2. Знакомство с CNN - Цзяньсинь Ву

Это скорее статья, которая помогает читателю понять все мельчайшие подробности CNN с математической точки зрения. Он начинается с объяснения тензоров, векторизации, правила цепочки, а затем рассказывает об архитектуре CNN, всех ее уровнях (свертка, активация, объединение, потеря), а также методологии обучения стохастического градиентного спуска (SGD) с применением обратного распространение, заканчивающееся VGG-16, очень полезной архитектурой CNN.

Тензоры можно рассматривать как не что иное, как матрицы высшего порядка. Тензор для матрицы - это то же самое, что куб для квадрата. Цветное изображение представляется в виде тензора порядка 3 (В X Ш X 3) в формате каналов высоты-ширины. Тензоры можно легко векторизовать, и они широко используются на разных уровнях CNN.

Цепное правило используется в процессе обучения CNN. Общее обозначение: dz / dx = (dz / dy). (Dy / dx)
Здесь z является функцией y, которая, в свою очередь, является функцией x. Мы применяем цепное правило, чтобы получить производную z по x, используя y между ними. Мы немного увидим, как это правило применяется при обратном распространении.

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

Рассмотрим проблему распознавания объектов с целевыми классами C. Целевой вывод, y, будет 1-мерным массивом размера C, в котором все элементы равны нулю, за исключением правильного класса, имеющего значение один. Слой потерь используется для измерения ошибки между вероятностями предсказанного класса и y.

Слой непосредственно перед слоем потерь - это функция softmax, которая преобразует сетевые прогнозы в функцию массы вероятности целевых классов C. Используются потери в квадрате L2 для регрессии и кросс-энтропийные потери для классификации. Для прогнозирования с использованием CNN требуется только прямой проход, на котором входные данные x¹ обрабатываются на различных уровнях (с использованием изученных весов w¹, w²…) для получения оценочного апостериорного распределения вероятностей x¹ для C категории. Прогнозируется класс / категория с максимальной вероятностью.

Стохастический градиентный спуск. Обучение параметров CNN осуществляется с помощью градиентного спуска, итеративного процесса оптимизации, который определяет направление наискорейшего спуска (градиент) в n-мерном пространстве. гиперплоскость (n - количество параметров). Его можно представить себе как мяч, катящийся по холму. Все это сделано для минимизации функции затрат / потерь.

Потеря z действует как контрольный сигнал и направляет процедуру обновления параметров модели. Веса уменьшаются на величину градиента в точке, масштабируемую по скорости обучения. Используемое общее уравнение выглядит следующим образом:

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

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

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

Затем мы рассмотрим различные слои сверточной нейронной сети.

Слой свертки: чтобы понять слой свертки, нам нужно ответить на следующие вопросы: «Что такое свертка?», «Зачем свертка?» и "Как распространять ошибки в сверточных слоях?"

Что такое свертка?
Операция свертки включает перекрытие ядра фиксированного размера над входным тензором и последующее перемещение по пикселям для покрытия всего изображения / тензора. Для перекрывающейся области мы вычисляем произведение между элементами ядра и изображением в одном и том же месте, а затем суммируем его.

Пространственный размер выходных данных меньше, чем входных, если ядро ​​свертки больше 1X1. Чтобы гарантировать, что входной и выходной тензоры имеют одинаковый размер, мы можем применить заполнение нулями (заполнение входного изображения нулями). Например, в приведенном выше гифке тензор 5X5 сокращается до тензора 3X3 с помощью ядра 3X3. Вместо этого, если мы добавим одну строку нулей вверху и внизу вместе с одним столбцом нулей по сторонам изображения, на выходе будет карта функций 5X5, таким образом, сохранится размер входного изображения.

Еще одно важное понятие свертки - шаг. Шаг - это в основном количество шагов, на которые каждый раз сдвигается ядро ​​свертки. Обычно используется шаг 1, как в приведенной выше анимации. Однако, если шаг, s ›1, свертка выполняется каждые s пикселей как по горизонтали, так и по вертикали.

Обычно размер вывода для конв. слой задается следующим образом: O = (I- (FS) + 2P) / S
где, O - размер вывода, I - размер ввода, F - размер фильтра / ядра , P - количество заполненных строк / столбцов, а S - шаг.

Зачем сворачивать?

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

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

Считайте x входным слоем, y выходным слоем, F фильтром conv и z функция потерь. Затем с * в качестве оператора свертки и x тильда в качестве версии ввода с зеркальным отображением строки / столбца,

Видео ниже подробно объясняет то же самое.

Уровень ReLU: функция активации ReLU обозначается как: relu (x) = max (0, x).

Важность активации ReLU:

  • Это добавляет нелинейности модели CNN. Очевидно, что взаимосвязь между семантическими характеристиками изображения и его значениями пикселей очень нелинейна. ReLU в некоторой степени помогает в моделировании этой нелинейности.
  • При усечении отрицательных значений карты признаков до 0 и сохранении только положительных значений как есть, функция ReLU активируется только для определенных шаблонов объектов в определенных областях. Сочетание обнаружения многих таких частей объекта помогает в классификации правильного целевого класса.
  • Градиент ReLU, равный 1 для активированных функций, помогает в обучении SGD. Сравните это с функциями активации сигмоид или tanh, где проблема исчезающих градиентов затрудняет SGD. Более того, вычисление градиента в ReLU происходит быстрее, чем в сигмоиде или tanh, что значительно ускоряет весь процесс обучения.

Уровень объединения. Объединение - это локальный оператор, который применяется индивидуально к каждому каналу изображения. Пространственная протяженность (H X W) и шаг бассейна являются частью дизайна структуры CNN. Наиболее часто используемая настройка объединения - это область 2X2 (HXW) с шагом 2. Уровень объединения кодирует информацию о соседстве области в один пиксель.

  • Это помогает в достижении некоторой инвариантности (позиционная + вращательная).
  • Объединение в пул значительно уменьшает размер рецептивного поля, тем самым сокращая время обучения, избегая переобучения и т. Д.

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

VGG-16 Net:

Статья заканчивается кратким описанием модельной архитектуры «VGG Verydeep-16» группы Oxford VGG. Он разработан с использованием следующих слоев:

  • Сверточный слой: используются сверточные слои с размером фильтра 3x3, заполнением 1 (такое же заполнение) и шагом 1. Из-за заполнения 1 сверточный слой сохраняет размер входного тензора одинаковым.
  • ReLU: слои ReLU используются в VGG для моделирования нелинейности изображений.
  • Уровень объединения: используется максимальное объединение размера ядра 2X2 и шага 2. Это уменьшает размер воспринимающего поля в 2 раза.
  • Полностью связанный слой: выходные данные последнего сверточного блока (Conv-ReLU-Pool) сглаживаются и соединяются со слоем нейронов, аналогичным скрытым слоям в ИНС. Представлен как n1 X n2, (входной размер вывода X)
  • Слой исключения: метод исключения - это метод, при котором определенная доля весов в сети устанавливается на ноль во время обучения, чтобы улучшить способность модели к обобщению. В ВГГ-16 используется дробь 0,5.
  • Слой Softmax: слой Softmax используется для преобразования выходных данных в оценочное апостериорное распределение вероятностей различных целевых классов.

Сложение двух сверточных слоев 3x3 эквивалентно одному сверточному слою 5x5. Сложение трех таких слоев 3X3 дает восприимчивое поле, эквивалентное одному слою 7X7. Преимущество наложения нескольких слоев 3x3 по сравнению с ядрами большего размера состоит в том, что это приводит к меньшему количеству обучаемых параметров и, таким образом, снижает вероятность переобучения. Также сокращается время вычислений.

VGG-16 принимает изображение размером 224 X 224 X 3 в качестве входных данных и обучается на наборе данных ImageNet, задача распознавания объектов с 1000 классами. Предварительно обученные модели VGG-16 могут использоваться для передачи обучения, но необходимо следить за тем, чтобы входные изображения были похожи на изображения в наборе данных ImageNet.

Дополнительная литература по теме: CNN LeCun, Bengio, Понимание CNN с помощью математической модели Куо, Понимание эффективного воспринимающего поля в Deep CNN Луо, Уртасун и др. др. », Эффективный обратный поток от LeCun et al.

3. Визуализация и понимание сверточных сетей - Мэтт Цайлер, Роб Фергус

Это знаменитая статья (ZF Net), которая раскрыла черный ящик CNN, визуализировав выходы промежуточных слоев сверточной сети. Это был огромный шаг вперед в создании интерпретируемых моделей глубокого обучения. Примерно в 2012 году у нас были мощные графические процессоры, большие маркированные обучающие наборы, новые архитектуры моделей и методы регуляризации, такие как Dropout. Сверточные сети стали популярной архитектурой для задач обнаружения объектов и классификации изображений. Однако то, как они работали, оставалось загадкой.

В этой статье Цайлер и Фергус стремились представить технику визуализации, которая выявляла бы точные входные стимулы, которые возбуждают карты функций в промежуточных слоях, путем проецирования активации функций обратно в пространство входных пикселей. Модуль визуализации также мог бы пролить больше информации о том, какие части изображения важны для классификации, как изменяются характеристики, когда мы обучаем модели и т. Д. Это делается с помощью деконволюционной сети. До этого стандартные модели convnet (типа AlexNet) обучались на наборе данных ImageNet. Слои модели были свернуты с помощью набора обучаемых фильтров, пропущены через блок ReLU, и было выполнено максимальное объединение по локальным окрестностям для построения карт функций. При желании также выполнялась пакетная нормализация для нормализации ответов по картам функций.

К каждому слою была прикреплена деконвнет, состоящая из: (i) распула, (ii) исправления и (iii) операций фильтрации. В разворачивании набор переменных-переключателей используется для записи местоположений максимумов в каждой области объединения в архитектуре свертки. Затем эти переключатели используются моделью деконвнета для получения приблизительного обратного значения путем размещения реконструкций активаций на карте функций в соответствующих местах на слое ниже.
Исправление процесс просто включает передачу восстановленного сигнала через нелинейность ReLU. В модели convnet карты функций передаются через активации ReLU, обеспечивая таким образом положительные значения: ReLU = max (0, x). Если x положительно, функция ReLU преобразуется в линейную функцию (y = x), обратная функция которой является той же линейной функцией. Таким образом, передача реконструированного сигнала через ReLU в модели деконвнета имеет смысл.
На этапе фильтрация модель деконвнета использует транспонированные версии используемых изученных фильтров. ранее преобразованным в convnet и применяет его к исправленным картам. Объяснение того, почему используется транспонированная версия, можно найти ниже.

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

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

Некоторые идеи, полученные при использовании техники визуализации:

  • Слои изучают иерархические функции. Слои нижнего уровня (слой 1 и 2) изучают края, цветовые градиенты, углы и сочетания краев и цветов. Более высокие слои создают элементы предыдущих слоев: слой 3 захватывает текстуры и текстовые узоры, слой 4 захватывает части тела животных (лица, ноги), а слой 5 захватывает весь объект (собаки, клавиатуры и т. Д.) В разных позах. Более высокие уровни фиксируют более сложные инварианты.

  • Нижние слои модели сходятся только через несколько эпох. Но более высоким уровням требуется как минимум 40–50 эпох для построения полезных представлений функций.
  • Сетевой выход устойчив к сдвигам и масштабированию, но в целом инвариантен к вращению. Первый уровень очень чувствителен к небольшим преобразованиям (перемещениям, поворотам, масштабированию), в то время как устойчивость к этим эффектам увеличивается по мере перехода к более высоким уровням.
  • Первая пара слоев пропускает среднечастотную информацию в изображениях и демонстрирует эффекты сглаживания из-за большого шага в первом сверточном слое AlexNet. Они исправляются за счет уменьшения размера фильтра первого слоя с 11X11 до 7X7 и увеличения шага 2 вместо 4.

Также были проведены эксперименты по чувствительности к окклюзии и проверке соответствия между отдельными частями объекта на разных изображениях. Различные части входного изображения покрываются серым квадратом и проходят через сеть, при этом отслеживаются выходные данные классификатора. Было замечено, что вероятность правильного класса значительно снижалась, когда интересующий объект на изображении был закрыт. В частности, также сильно падает значение активации карт функций, которые ранее запускались этим объектом или частью изображения. Для анализа соответствия было сделано 5 изображений собак с фронтальной позой, на каждом из которых была замаскирована одна и та же часть лица. Вычисляется разница между векторами признаков из исходного и закрытого изображения, а согласованность между этими векторами разности (для всех пар изображений) вычисляется с использованием расстояния Хэмминга. Более низкое значение этого показателя указывает на более тесное соответствие между одними и теми же частями объекта на разных изображениях. Таким образом, модель показала, что она может захватывать правильные, отличительные области изображения для классификации.

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

Построенная таким образом сеть ZF Net была обучена на наборах данных ImageNet 2012 и сообщила о более низком уровне ошибок, чем самая эффективная модель того времени. Сверточная блочная часть сети превращается в эффективные экстракторы признаков, и это помогает в обобщении для других наборов данных изображений, таких как Caltech-101 и Caltech-256. Набор данных Pascal VOC содержит несколько объектов на изображениях и по своей природе отличается от ImageNet. Будучи предварительно обученным на ImageNet, ZF Net не смогла превзойти современный набор данных Pascal VOC 2012.

Модельный подход Зейлера и Фергуса был важен для стимулирования роста более интерпретируемых моделей глубокого обучения. В следующей части этой серии мы рассмотрим статьи, объясняющие ключевые концепции оптимизации, обучения и регуляризации в моделях DL. Все документы, упомянутые в этой статье, и многие другие также доступны в этом репозитории Github.