Изменения

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

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

1334 байта добавлено, 19:16, 4 сентября 2022
м
rollbackEdits.php mass rollback
''Энкодер'' {{---}} принимает предложение на языке ''A'' и сжимает его в вектор скрытого состояния.
''Декодер'' {{---}} выдает слово на языке ''B'', принимает последнее скрытое состояние энкодера и предыдущее предыдущее предсказанное слово.
Рассмотрим пример работы ''Seq2seq'' сети:
==Модули внимания==
===Convolutional Block Attention ModuleСверточный модуль внимания===[[Файл: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==
1632
правки

Навигация