Изменения

Перейти к: навигация, поиск

Механизм внимания

1484 байта добавлено, 15:50, 12 декабря 2020
м
Сверточный модуль внимания
==Модули внимания==
===Convolutional Block Attention Module (CBAM)Сверточный модуль внимания===[[Файл:ConvolutionalBlockAttentionModule.png|601px|thumb|right|Сверточный модуль внимания]]'''Сверточный модуль внимания'''Convolutional Block Attention Module(англ. ''сonvolutional block attention module' ') {{---}} простой, но эффективный модуль внимания для [[:Сверточные_нейронные_сети|сверточных нейросетей]]. Применяется для задач детектирования обьектов на изображениях и классификации с входными данными больших размерностей. Данный модуль внимания состоит из двух последовательно применяемых подмодулей {{--- }} канального (''Channel Attention Module'', применяется ко всем каналам одного пикселя с изображения) и пространственного (''Spatial Attention Module'', применяется ко всему изображению с фиксированным каналом), оба эти подмодуля описаны в следующих разделах.
====Устройство====Более формально говоря: на вход подается множество признаков <math>F \in \mathbb{R}^{C \times H \times W}</math>, где <math>C</math> {{- --}} число каналов, <math>H</math> {{--- }} высота, а <math>W</math> {{- --}} длина изображения. Канальный подмодуль <math>A_1(F)</math> принадлежит множеству <math>\mathbb{R}^{C \times 1 \times 1}</math>, а пространственный <math>A_2(F)</math> принадлежит множеству <math>\mathbb{R}^{1 \times H \times W}</math>. Таким образом применение модуля можно описать так:
*<math>F_1 = A_1(F) \otimes F</math>
*<math>F_2 = A_2(F_1) \otimes F_1</math>
Здесь за <math> \otimes </math> обозначено поэлементное произведение, а тензоры <math>A_1(F)</math> и <math>A_2(F_1)</math> копируются вдоль недостающих измерений. <math>F_1 \in \mathbb{R}^{C \times H \times W}</math> {{---}} тензор после применения канального модуля внимания, <math>F_2 \in \mathbb{R}^{C \times H \times W}</math> является выходным множеством {{---}} выходное множество признаков.
==== Channel Attention Module =Канальный модуль внимания ===[[Файл:ChannelAttentionModule.png|600px|thumb|right|Канальный модуль внимания]]'''Канальный механизм модуль внимания ''' (англ. ''channel attention module'') реализуется за счет исследования внутриканальных взяивосвязей взаимосвязей во входных данных, фокусируясь то есть пытается извлечь информацию из яркости каналов одного пикселя. Фокусируется на том , "какая" информация находится в данных. Для более эффективной реализации используется сжатие входных данных по измерениям <math>H</math> и <math>W</math> с помощью [[:Сверточные_нейронные_сети#Пулинговый слой|пулингов]] <math>MaxPool</math> и <math>AvgPool</math>, в которые применяются независимо к входному тензору. В результате которого получаются два вектора <math>F^c_{max}</math> и <math>F^c_{avg}</math> из <math>\mathbb{R}^{C}</math>. После чего к этим двум векторам независимо применяется одна и та же [[:Нейронные_сети,_перцептрон#Многослойные нейронные сети|полносвязная нейронная сеть]] с одним скрытым слоем малой размерности (при этом ее входные и выходные вектора принадлежат <math>\mathbb{R}^{C}</math>). После этого полученные из нейросети вектора поэлементно складываются, к результату поэлементно применяется сигмойдная сигмоидная функция активации и добавляются недостающие единичные размерности. Полученный тензор из <math>\mathbb{R}^{C \times 1 \times 1}</math> как раз и является результатом применения <math>A_1(F)</math>, поэлементное произведение которого со входом <math>F</math> дает тензор <math>F_1</math>. ==== Spatial Attention Module =Пространственный модуль внимания ===[[Файл:Screenshot (203).png|600px|thumb|right|Пространственный модуль внимания]]'''Пространственный механизм модуль внимания ''' (англ. ''spatial attention module'') реализуется за счет исследования пространственных взяимосвязейвзаимосвязей, и в то есть пытается извлечь информацию из взаимного расположения пикселей. В отличие от канального фокусируется на том, "где" находится информация во входных данных. В данном случае для сжатия размерности используются те же [[:Сверточные_нейронные_сети#Пулинговый слой|пулинги]], но относительно измерения <math>C</math>. Таким образом на выходе мы получаем две матрицы <math>F^s_{max}</math> и <math>F^s_{avg}</math> из <math>\mathbb{R}^{H \times W}</math>. После чего они конкатенируются и к полученному тензору размерности <math>\mathbb{R}^{2 \times H \times W}</math> применяется [[:Сверточные_нейронные_сети#Свертка|свертка]], уменьшающая число каналов до одного и не меняющая остальные размерности, а к результату поэлементно применяется сигмойдная сигмоидная функция активации. Полученный тензор из <math>\mathbb{R}^{1 \times H \times W}</math> как раз является результатом применения <math>A_2(F_1)</math>, поэлементное произведение которого с <math>F_1</math> дает выходной тензор <math>F_2</math>, который называется выходным множеством признаков c размерностью <math>\mathbb{R}^{C \times H \times W}</math>.
==Self-Attention==
Данная методика показала себя настолько эффективной в задаче машинного перевода, что позволила отказаться от использования [[:Рекуррентные_нейронные_сети|RNN]] и заменить их на обычные нейронные сети в комбинации с механизмом ''Self-attention'' в архитектуре трансформер<ref>https://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf</ref>.
Это позволило ускорить работу алгоритма, поскольку ранее предложение обрабатывалось последовательно при помощи [[:Рекуррентные_нейронные_сети|RNN]]. При использовании трансформера каждое слово в предложении обрабатывается может обрабатываться параллельно.
Основным отличием ''Self-Attention'' от [[:Механизм_внимания#Обобщенный механизм внимания|обобщенного механизма внимания]] является, что он делает заключения о зависимостях исключительно между входными данными.
*[https://towardsdatascience.com/intuitive-understanding-of-attention-mechanism-in-deep-learning-6c9482aecf4f Статья с подробно разборанными примерами и кодом на ''Python'' и ''TensorFlow'']
*[http://jalammar.github.io/illustrated-transformer/ Статья c примерами работы Self-attention]
*[https://arxiv.org/pdf/1807.06521.pdf Статья о сверточном модуле внимания (CBAM)]
==Примечания==
85
правок

Навигация