Обзор механизмов визуального внимания в глубоком обучении

Визуальное внимание настолько важно в повседневной жизни, что большинство людей никогда не задумывается, почему и как это происходит. Сосредоточение внимания на дороге во время вождения, взгляд на еду на тарелке перед тем, как откусить, смотреть на текст, а не на боковые панели или лицевую панель экрана во время чтения, внимание - очевидный факт жизни. Зачем смотреть на экран, а не на всю комнату, когда кто-то спрашивает вас, Мэтт Дэймон или Марк Уолберг в фильме?

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

Мы должны сделать такой механизм обучаемым, чтобы с учетом задачи и набора изображений, относящихся к ней, сеть начала учиться «отфильтровывать» нерелевантные части изображения, чтобы делать более четкие и надежные решения для задачи.

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

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

Оглавление:

‹› Что такое внимание?

‹› Визуальные образы и обучение с подкреплением

‹› Жесткое и мягкое внимание

‹› Покажи, посети и расскажи: титры нейронных изображений

‹› Свертки повсюду

‹› Научитесь обращать внимание

‹› Как изменить способ работы внимания

‹› Заключение

Что такое внимание?

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

Идея внимания родилась в области моделирования seq2seq, где модели обучаются потреблять последовательность произвольной длины (например, английское предложение) и выводить другие последовательности, также произвольной длины (например, такое же предложение на испанском языке). Проблема с такими задачами заключается в том, что часто существует сложная зависимость, которая выходит далеко за пределы последнего видимого элемента последовательности, и такая зависимость может варьироваться между входными последовательностями. Возникает необходимость изучить гибкий механизм зависимостей, который, учитывая входную последовательность, может определить, какие элементы последовательности наиболее важны для построения точной выходной последовательности. Однако этот вид зависимости также важен в задачах компьютерного зрения, где зависимость не во временной области, а в пространственной. Одна и та же текстура может присутствовать в нескольких областях изображения, несколько непересекающихся семантических сигналов могут дать ключ к общей классификации изображения, а объект может иметь несколько сложных и затемненных частей по всему изображению.

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

Визуальные образы и обучение с подкреплением

Первая статья, которую мы рассмотрим, написана командой Google DeepMind: Рекуррентные модели визуального внимания (Mnih et al., 2014). В этой статье основное внимание уделяется идее о том, что архитектуры CNN используют подход со скользящим окном (итерационные фильтры свертки по размеру изображения), тогда как люди обрабатывают только области изображения, наиболее подходящие для данной задачи. Авторы придерживаются идеи зрения как фундаментальной последовательной задачи, при которой части изображения последовательно просматриваются, чтобы помочь в достижении конкретной задачи. Есть несколько существующих статей, использующих этот подход, в том числе эта превосходная старая статья Модель обучения с подкреплением избирательного визуального внимания (Minut, Mahadevan, 2001), в которой фиксируется задача поиска определенного заранее определенного объекта в Сцена и обучение с подкреплением используются для оптимизации визуального поиска.

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

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

Производительность приличная для MNIST и MNIST с добавлением переводов и шума (как фрагменты других символов MNIST).

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

Мягкое и жесткое внимание

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

Просмотр через затуманенное стекло представляет собой мягкое внимание, при котором все изображение все еще «видно», но определенные области уделяются больше. В то время как бинокль представляет собой пристальное внимание, когда мы видим только часть изображения, надеюсь, часть, наиболее подходящую для нашей задачи. Бумага «Рекуррентные модели визуального внимания», приведенная выше, представляет собой пристальное внимание. Ключевым моментом является то, что существуют явные компромиссы между этими типами внимания: жесткое внимание требует значительно меньше вычислений и памяти (поскольку все изображение обычно не сохраняется и не обрабатывается), но его нельзя легко обучить, поскольку цель недифференцируемые (нет градиента, пиксели видны или не видны). Следовательно, его часто обучают с помощью таких методов, как REINFORCE. С другой стороны, мягкое внимание часто требует больше памяти и вычислений (часто даже больше, чем простые сверточные сети), но имеет дифференцируемую цель и может быть легко обучено стандартными методами обратного распространения.

Показывать, посещать и рассказывать: субтитры нейронных изображений

Следующая статья, которую мы рассмотрим, объединяет как жесткое, так и мягкое внимание, а также их сравнение. Покажи, посети и расскажи: создание нейронных подписей к изображениям с визуальным вниманием (Сюй и др., 2015) - это работа университетов Монреаля и Торонто, в которой внимание используется для решения одной из критических проблем в области компьютерного зрения. - подписи к изображениям. Это проблема создания разумной подписи (на естественном языке) к изображению, которая имеет решающее значение для обучения компьютеров пониманию изображений.

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

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

Для усиленного внимания интересующее пространственное местоположение (кодируется как 0,1 для жесткого внимания) может быть параметризовано распределением Мультинули и оптимизировано с использованием логарифма правдоподобия (интуитивно представляющего вероятность увидеть последовательность слов при заданной части изображение) с помощью правила обучения, аналогичного REINFORCE.

Для мягкого внимания, поскольку веса являются реальными значениями, мы можем напрямую максимизировать предельное правдоподобие для всех возможных мест внимания и тренироваться непосредственно с обратным распространением (авторы также используют термин регуляризации, чтобы побудить область внимания взять очень высокую провидность и заставить декодер чтобы осмотреть и остальную часть изображения).

Для некоторых изображений и жесткое, и мягкое внимание создают одинаковые подписи, но с разными областями внимания (мягкое внимание вверху, сильное внимание внизу):

Чтобы обойти проблему различной длины заголовков, для каждого мини-пакета была указана длина последовательности, и были нарисованы только заголовки этой длины. Обучение длилось примерно 3 дня на графическом процессоре Titan Black, и на тот момент результаты были самыми лучшими (с точки зрения оценки BLEU). Модель мягкого внимания также полностью согласуется с человеческой интуицией, ниже приведены некоторые слова и соответствующее пространственное положение, взвешенное с учетом внимания во время генерации подписи:

Свертки повсюду

Другой подход к интеграции внимания, который стал популярным, связан с переформулировкой идеи самих сверток изображений. Нелокальные нейронные сети (Ван и др., 2017) - это статья из Carnegie Mellon и Facebook Research, которая пытается иметь дело с локальным восприимчивым полем операций свертки. Традиционно зависимости на большом расстоянии моделируются большими рецептивными полями, образованными глубокими наборами сверточных операций. Такой подход приводит к неэффективным вычислениям, затрудняет оптимизацию (из-за проблем с увеличением и исчезновением градиента) и может затруднить моделирование многопереходных зависимостей (когда необходимо пересмотреть несколько непересекающихся областей, чтобы определить действие, например, с видео). В документе утверждается, что, делая сверточный оператор глобальным, они могут избежать чрезмерно глубоких сетей и улучшить производительность (хотя сам по себе оператор был бы более дорогостоящим с точки зрения вычислений, чем локальная свертка). Неявно при этом используется самовнимание, тема, которую мы подробно рассмотрим в следующем разделе.

Нелокальная сверточная операция формулируется как:

Где i - это индекс позиции вывода (в пространстве, времени или пространстве-времени), ответ которой должен быть вычислен, а j - индекс, который перечисляет все возможные позиции. x - входной сигнал (изображение, последовательность, видео; часто их особенности), а y - выходной сигнал того же размера, что и x.

Попарная функция f вычисляет скаляр (представляющий отношение, например, сходство) между i и всеми j. Унарная функция g вычисляет представление входного сигнала в позиции j. Ответ нормализован коэффициентом C (x). Обратите внимание, что это глобальная операция, поскольку для данного пространственного положения i ответ зависит от всех других пространственных положений j. Все значения являются действительными числами, и все это можно оптимизировать за счет обратного распространения и включить в любую точку традиционной сети.

Авторы рассматривают только g (x) как линейное вложение (умножение на один скаляр), реализованное как одномерная свертка. Для функции f они рассматривают несколько различных вариантов, включая функцию Гаусса (мы также можем заменить здесь каждую позицию x встроенной версией):

Точечный продукт во встроенном пространстве каждого x:

И операция конкатенации (обозначенная квадратными скобками) во вложенном пространстве вместе с индуцированной нелинейностью:

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

Суммирование с примером ввода x позволяет этому стать остаточным соединением, так что если весовая матрица W инициализирована нулем, то нелокальный блок не имеет никакого эффекта. о поведении сети. Эта формулировка более дорогая, чем традиционная свертка, и авторы делают субдискретизацию сигнала (путем объединения) и сокращают глубину канала вдвое на выходе, чтобы сократить вычисления в 6 раз.

Чтобы визуализировать внимание сети, авторы находят 20 самых взвешенных x_j для данной позиции x_i и визуализируют их в виде стрелок. Они показывают это для видеороликов из представленных примеров по задаче классификации человеческих действий в Kinetics dataset. Результаты впечатляют, демонстрируя интуитивно понятные и значимые взаимосвязи, которые помогут классифицировать целевые действия:

и наблюдается заметное улучшение поведения при обучении и проверке по сравнению с базовым уровнем Resnet-50 для той же задачи:

Один аргумент состоит в том, что эти результаты просто потому, что нелокальный блок имитирует увеличенную глубину в сети, однако авторы отмечают, что добавление его в Resnet-50 увеличивает производительность по сравнению с более глубокой архитектурой Resnet-101 (которая имеет на 30% больше параметров и использует на 20% больше FLOPS, чем Resnet-50 + нелокальный блок), и поэтому это, вероятно, не единственный кандидат на повышение производительности. Также не было увеличения производительности, когда нелокальный блок был заменен стандартным остаточным блоком.

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

Пространственные зависимости дальнего действия, полученные с помощью нелокальных блоков, также оказываются очень полезными при генерации изображений, как это было использовано в прекрасной статье Сети противоборства, генерирующие самовнимание (Zhang et al. 2018).

Научитесь обращать внимание

До сих пор мы изучали механизмы внимания, которые рассматривают зрение как проблему последовательного «взгляда», используют последовательности слов для определения внимания и переформулировку сверток, чтобы включить внимание как глобальный вес для всего пространства изображения / признаков. Теперь мы рассмотрим аналогичную статью, которая направлена ​​на то, чтобы заставить модель делать внимание как можно более эффективным, используя только карты внимания в качестве основного фактора предсказания (в противоположность функции члена регуляризации, использованного в предыдущем нейронном коде). субтитры).

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

Рассмотрим выходные данные первого сверточного слоя сети, назовите его L. Сейчас мы сделаем несколько нереалистичное предположение, что Dim (L) = Dim (I), где I - входное изображение. Мы можем использовать функцию подобия S (например, скалярное произведение) для вычисления матрицы относительных оценок для этого слоя: S (I, L). Затем мы можем немедленно нормализовать это и передать его на полностью связанный слой для классификации. Идея здесь в том, что сеть учится настраивать сверточный фильтр, производящий L, так что, когда скалярное произведение берется между ним и входным изображением I, области, наиболее важные для точный прогноз получает высокие баллы (поскольку для классификации используется только итоговая матрица баллов). Это как раз основная концепция внимания.

В документе рассматриваются две разные функции подобия, основной точечный продукт, о котором мы думали раньше (i - это индекс слоя, s - пространственный индекс по карте объектов):

и параметризованная функция выравнивания, сформулированная для нейронного машинного перевода:

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

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

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

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

Где все 3 карты внимания объединяются и передаются на полностью связанный уровень (FC-2, 10) для классификации. Результаты впечатляют по сравнению с архитектурой Resnet-154 на наборах данных CIFAR-10 и CIFAR-100:

Еще более впечатляющими являются карты резкого внимания, полученные с помощью этого метода, по сравнению с существующим методом (CIFAR-10):

Следовательно, эти карты внимания могут использоваться для сегментации экземпляров со слабым контролем, задачи компьютерного зрения, в которой интересующий объект должен быть сегментирован только на основе информации о том, что изображение содержит интересующий объект (например, сегментирование фактического грузовика в изображение с надписью грузовик). Набор данных Object Discovery подходит для этого, и использование карт внимания, например, сегментация, дает хорошие результаты (значения в единицах оценки IoU):

Авторы поясняют, что более низкие значения для категорий «Самолет» и «Лошадь» могут быть объяснены сложными конструктивными деталями (такими как ноги лошади) и небольшим размером.

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

Как изменить способ работы внимания

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

Мы можем думать о пикселях в изображении как о генерируемых последовательно, то есть если мы рассматриваем первую строку пикселей, если у нас есть первые 5 пикселей, мы можем использовать эту информацию, чтобы угадать значение 6-го. Взяв все строки пикселей и соединив их встык, у нас теперь есть очень большая последовательность (высота x ширина изображения long), и мы можем говорить о P (I), вероятности генерации определенной последовательности (соответствующей изображению). Если мы примем точку зрения, что каждый пиксель зависит от пикселей перед ним и в остальном независим, мы можем сформулировать P (I) - вероятность генерации определенного изображения следующим образом:

Для каждой из вероятностей пикселей мы можем использовать авторегрессивную модель, такую ​​как LSTM, чтобы вычислить их (здесь немного технических деталей, это требует обработки каждого пикселя как категориальной переменной на 0–255, таким образом, вывод слоя softmax будет вектором длиной 255, указывающим вероятности интенсивности каждого пикселя). Когда мы закончим, мы получаем полное апостериорное распределение для нашего выходного изображения, и мы можем легко обусловить вычисление рядом входных векторов, таких как класс изображения, которое мы хотим сгенерировать, заголовок изображения или даже пространственное расположение определенных объектов. Эти модели являются генеративными и являются альтернативой популярным Генеративным неблагоприятным сетям, они могут похвастаться повышенной стабильностью обучения и явным апостериорным (хотя и не всегда лучшим).

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

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

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

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

Однако в нашей формулировке CNN это расстояние увеличивается пропорционально log (N), что делает соседние (но не обязательно дальнодействующие) зависимости гораздо более управляемыми. В отличие от LSTM, рецептивное поле растет прямоугольным образом (по сравнению с линейным в порядке пикселей), и зависимости дальнего действия не «запоминаются» естественным образом, как в LSTM, однако закрытая версия PixelCNN достигает 90% производительности PixelRNN с 50 % времени обучения. Мы можем добавить к этой формулировке CNN еще один ингредиент, который еще больше усилит ее возможности: самовнимание.

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

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

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

Помните, что элементы последовательности в нашем случае - это не слова, а пиксели изображения. Интеграция преобразователя позволяет нам отбросить LSTM и смоделировать зависимости пикселей дальнего действия, которые могут указывать на одну и ту же текстуру на удаленных объектах, указывать на дополнительные объекты из определенных семантических ключей и отключать представления одного и того же объекта. Это нововведение Image Transformer (Пармер, Васвани и др., 2018), которое делает важные шаги в нескольких различных областях создания изображений. Ниже представлен единый уровень их архитектуры:

Важно отметить эксперименты с различными одномерными и двухмерными запросами и соответствующими им блоками ключей / памяти. Самовнимание обычно требует дополнительных вычислений O (w * h * d * m), где w, h - ширина и высота. изображения, d - глубина канала, а m - количество ячеек памяти, которым нужно уделить внимание. Авторы делают это управляемым, локализуя механизм самовнимания в локальных окрестностях пикселей вокруг местоположения запроса:

Они отмечают, что размер этого воспринимающего поля имеет решающее значение для производительности и может объяснить различия между PixelRNN и PixelCNN. Локализация внимания позволяет авторам использовать гораздо большее поле восприятия, чем PixelCNN. Благодаря последовательной генерации пикселей модель отлично справляется с задачами завершения изображения:

а внимание на местном уровне также позволяет ему достичь потрясающей производительности в задачах сверхвысокого разрешения / масштабирования:

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

Заключение

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

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

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

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

использованная литература

Изучение глубоких функций для дискриминационной локализации (Чжоу и др., 2016) - http://cnnlocalization.csail.mit.edu/

Изучение нейронных сетей с помощью атласов активации (Картер и др., 2019) - https://distill.pub/2019/activation-atlas/

Внимание - это все, что вам нужно (Васвани и др., 2017) - https://arxiv.org/abs/1706.03762

Graph Attention Networks (Velickovic et al., 2017) - https://arxiv.org/abs/1710.10903

A-CNN: кольцевые сверточные нейронные сети в облаках точек (Комаричев и др., 2017) - https://arxiv.org/abs/1710.10903

Рекуррентные модели визуального внимания (Мних и др., 2014) - https://arxiv.org/abs/1710.10903

Модель избирательного визуального внимания с подкреплением (Минут, Махадеван, 2001) - https://arxiv.org/abs/1710.10903

Алгоритм REINFORCE, также известный как дифференциация политик Монте-Карло (Mcneela, 2018) - https://mcneela.github.io/math/2018/04/18/A-Tutorial-on-the-REINFORCE-Algorithm.html

Покажи, посети и расскажи: создание нейронных подписей к изображениям с визуальным вниманием (Сюй и др., 2015) - https://arxiv.org/pdf/1502.03044.pdf

Нежное введение в вычисление оценки BLEU для текста в Python (Brownlee, 2017) - https://machinelearningmaster.com/calculate-bleu-score-for-text-python/

Нелокальные нейронные сети (Ван и др., 2017) - https://arxiv.org/abs/1711.07971

Простой модуль нейронной сети для визуального мышления (Санторо и др., 2017) - https://arxiv.org/pdf/1706.01427.pdf

Набор данных кинетики (Google Deepmind, 2017) - https://deepmind.com/research/open-source/kinetics

Комплексное введение в различные типы сверток в глубоком обучении (Бай, 2019) - https://towardsdatascience.com/a-comprehensive-introduction-to-different-types-of-convolutions-in-deep-learning- 669281e58215

Сети противоборства, порождающие самовнимание (Чжан и др., 2018) - https://arxiv.org/pdf/1805.08318.pdf

Научитесь обращать внимание (Джетли и др., 2018) »- https://arxiv.org/pdf/1804.02391.pdf

Нейронный машинный перевод путем совместного обучения выравниванию и переводу (Bahdanau et al. 2015) - https://arxiv.org/pdf/1409.0473.pdf

Изучение нескольких слоев функций из крошечных изображений (CIFAR 10 100 наборов данных) (Крижевский, 2009 г.) - https://www.cs.toronto.edu/~kriz/cifar.html

Слабо контролируемое обучение для компьютерного зрения (Benenson, Bilen, Uijlings, 2018) - https://hbilen.github.io/wsl-cvpr18.github.io/

Совместное обнаружение объектов без учителя и сегментация в изображениях Интернета (набор данных обнаружения объектов) (Рубинштейн и др., 2013 г.) - http://people.csail.mit.edu/mrub/ObjectDiscovery/

Взлом нейронных сетей с помощью состязательных атак (Jain, 2019) - https://towardsdatascience.com/breaking-neural-networks-with-adversarial-attacks-f4290a9a45aa

Генеративные состязательные сети (Гудфеллоу и др., 2014) - https://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf

Условное создание изображений с помощью декодеров PixelCNN (Оорд и др., 2016 г.) - https://arxiv.org/pdf/1606.05328.pdf

Пиксельные рекуррентные нейронные сети (Оорд и др., 2016) - https://arxiv.org/abs/1601.06759

Wavenet: генеративная модель для сырого звука (Оорд и др., 2016) - https://arxiv.org/pdf/1609.03499.pdf

Анализ многоголового самовосприятия: специализированные головы делают тяжелую работу, остальное можно обрезать (Войта и др., 2019) - https://arxiv.org/pdf/1905.09418.pdf

Image Transformer (Пармер, Васвани и др., 2018) - https://arxiv.org/pdf/1802.05751.pdf