В статье “Attention Is All You Need”, почему FFN в (2) аналогичны двум сверткам с размером ядра 1?

Вопрос или проблема

Кроме того, зачем нам нужен FFN в каждом слое, если у нас уже есть внимание?

Вот скриншот соответствующего раздела из Vaswani et al. (2017):

eScreenshot of relevant section from Vaswani et al. (2017)

Послойный слой прямой связи – это просто умножение матрицы с добавлением вектора смещения для каждой позиции вдоль временного измерения. Вы можете выразить это как одномерную свертку с размером ядра 1. Это было впервые предложено Lin et al. (2014), которые назвали это “сеть в сети”.

Учитывая, что послойная сеть прямой связи – это конкатенация 2 слоев прямой связи, вы можете выразить это как две одномерные свертки с размером ядра 1.

Свертка на самом деле заключается в применении проекции скользящего окна к тензору. С размером ядра 1 свертка сводится к циклу for по векторам, т.е. каждый из векторов умножается на матрицу фильтров. Но это на самом деле определение умножения матриц, которое и является способом реализации слоев прямой связи.

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

enter image description here

Форма входных данных (C, H, W) – это (3, 1, 4). По сравнению с FFN, seq_len равно 4, а $d_{model}$ равно 3.

Форма ядра (K, W) – это (3, 2).

Форма выхода (C, H, W) – это (2, 1, 3). $d_{ff}$ равно 2.

.

Ответ или решение

В статье “Attention Is All You Need” архитектура трансформера включает позиционно-зависимые полносвязные слои (FFNs), которые эквивалентны двум 1D-свёрткам с размером ядра 1. Это утверждение базируется на следующих технических деталях:

Позиционно-зависимый полносвязный слой выполняет матричное умножение и добавление вектора смещения для каждого положения вдоль временной оси. Если мы переформулируем этот процесс с точки зрения свёрток, то свёртка с размером ядра 1 фактически действует как скользящее оконное преобразование. В этом случае, каждое положение в последовательности обрабатывается отдельно — с ядром размером 1 — что эквивалентно применению фильтра (вектора весов) к каждому вектору по отдельности. Таким образом, свёртка с размером ядра 1 эквивалентна полносвязному слою.

Примечательно, что каждый позиционно-зависимый полносвязный слой в трансформере представлен двумя последовательными слоями. Это значит, что два FFN слоя могут быть интерпретированы как две 1D-свёртки с размером ядра 1, что экономически целесообразно и эффективно для модели.

### Почему нужны FFN на каждом уровне, если уже есть внимание?

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

### Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...