Трансформер (модель)

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Исправление формул LaTeX (String.raw), убрано дублирование имени)
(глубина, формулы, связность, второй промпт)
 
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] 14:56, 16 июня 2026 (MSD)
+
{{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] 20:00, 14 июля 2026 (MSD)
Промпт приводится полностью в [[Обсуждение:Трансформер (модель)]]
Промпт приводится полностью в [[Обсуждение:Трансформер (модель)]]
}}
}}
{{TOCright}}
{{TOCright}}
-
'''Трансфо́рмер''' (англ. Transformer) — архитектура [[Нейронная сеть|нейронной сети]], основанная исключительно на [[Механизм внимания|механизме внимания]] (англ. attention mechanism) без использования рекуррентных или свёрточных слоёв. Впервые предложена в 2017 году исследователями Google Brain и Google Research в статье «Attention Is All You Need»<ref name="vaswani2017">{{статья |автор=Vaswani A., Shazeer N., Parmar N., Uszkoreit J., Jones L., Gomez A. N., Kaiser Ł., Polosukhin I. |заглавие=Attention Is All You Need |издание=Advances in Neural Information Processing Systems |год=2017 |том=30 |ссылка=https://arxiv.org/abs/1706.03762}}</ref>. Трансформер произвёл революцию в обработке естественного языка и стал основой большинства современных [[Большая языковая модель|больших языковых моделей]], включая GPT, BERT, T5 и их последователей.
+
'''Трансфо́рмер''' (англ. Transformer) — архитектура [[Нейронная сеть|нейронной сети]], построенная исключительно на [[Механизм внимания|механизме внимания]] (attention) без рекуррентных и свёрточных слоёв. Предложена в 2017 году исследователями Google Brain и Google Research в работе «Attention Is All You Need»<ref name="vaswani2017">{{статья |автор=Vaswani A., Shazeer N., Parmar N., Uszkoreit J., Jones L., Gomez A. N., Kaiser Ł., Polosukhin I. |заглавие=Attention Is All You Need |издание=Advances in Neural Information Processing Systems |год=2017 |том=30 |ссылка=https://arxiv.org/abs/1706.03762}}</ref>. Трансформер стал базовой архитектурой современных [[Большая языковая модель|больших языковых моделей]] (GPT, BERT, T5 и последователи) и проник в компьютерное зрение, биологию и [[Диффузионная модель|диффузионную генерацию]].
 +
 
 +
Интуитивно трансформер похож на редакционную коллегию: каждый токен одновременно «читает» все остальные и решает, на кого опереться при формировании своего нового представления. В отличие от RNN, где информация течёт строго слева направо через узкое «бутылочное горлышко» скрытого состояния, здесь все связи доступны сразу — это и даёт параллелизм, и снимает проблему длинных зависимостей.
== Предпосылки и мотивировка ==
== Предпосылки и мотивировка ==
-
До появления трансформера доминирующими архитектурами для задач обработки последовательностей (перевод, суммаризация, распознавание речи) были [[Рекуррентная нейронная сеть|рекуррентные нейронные сети]] (RNN) и их модификации — LSTM и GRU. Они обрабатывают входной текст пошагово: на каждом шаге модель получает текущий токен и скрытое состояние с предыдущего шага. Это порождает две ключевые проблемы:
+
До 2017 года для последовательностей (перевод, суммаризация, речь) доминировали [[Рекуррентная нейронная сеть|рекуррентные сети]] — LSTM и GRU. Они обрабатывают вход по шагам: на шаге <tex>t</tex> модель получает токен <tex>x_t</tex> и скрытое состояние <tex>h_{t-1}</tex>. Это порождает две принципиальные проблемы.
 +
 
 +
'''Последовательный характер вычислений.''' Шаг <tex>t</tex> нельзя начать, пока не готов шаг <tex>t-1</tex>. На GPU/TPU это означает низкую утилизацию: матричные ядра простаивают, пока «тянется» цепочка по времени. Масштабирование на длинные тексты и большие корпуса становится дорогим не столько из‑за числа параметров, сколько из‑за невозможности распараллелить временную ось.
-
* '''Последовательный характер вычислений''' — нельзя распараллелить обработку токенов, что ограничивает масштабирование на современных GPU и TPU.
+
'''Затухание и размывание сигнала.''' Даже с ячейками LSTM информация с ранних позиций плохо доходит до поздних: градиенты затухают, а скрытое состояние конечной размерности вынуждено «сжимать» всю историю. Механизм внимания Bahdanau (2014) частично снял вторую проблему, дав декодеру прямой доступ к каждому состоянию энкодера, но сам энкодер и декодер оставались рекуррентными.
-
* '''Затухание градиентов''' — при длинных последовательностях информация с ранних шагов плохо передаётся к поздним, несмотря на механизм ячеек памяти LSTM.
+
-
Механизм внимания частично решал вторую проблему, добавляя прямые связи из декодера к каждому токену кодировщика. Трансформер сделал радикальный шаг: отказался от рекуррентности полностью и построил всю архитектуру на внимании.
+
Трансформер сделал радикальный шаг: убрал рекуррентность полностью и построил и кодирование, и декодирование на внимании. Цена — квадратичная сложность <tex>O(n^2)</tex> по длине последовательности <tex>n</tex>; выигрыш — полный параллелизм по позициям и прямые пути длины <tex>O(1)</tex> между любыми двумя токенами.
== Архитектура ==
== Архитектура ==
-
Классический трансформер имеет энкодер-декодерную структуру, использовавшуюся изначально для задачи машинного перевода.
+
Классический трансформер энкодер-декодерная модель для машинного перевода. Ниже — блоки, из которых она собрана.
-
=== Входное представление ===
+
=== Входное представление и позиционное кодирование ===
-
Входная последовательность токенов <tex>x_1, \ldots, x_n</tex> сначала преобразуется в матрицу векторов [[Нейросетевое встраивание|встраиваний]] <tex>X \in \mathbb{R}^{n \times d_{\text{model}}}</tex>. К ней прибавляется позиционное кодирование (англ. positional encoding) — детерминированный вектор, несущий информацию о позиции токена в последовательности:
+
Последовательность токенов <tex>x_1, \ldots, x_n</tex> отображается в матрицу [[Нейросетевое встраивание|встраиваний]] <tex>X \in \mathbb{R}^{n \times d_{\text{model}}}</tex>. Само внимание перестановочно инвариантно: без явной информации о порядке модель не отличит «кот съел мышь» от «мышь съела кот». Поэтому к встраиваниям прибавляют '''позиционное кодирование''' (positional encoding).
 +
 
 +
В оригинале фиксированные синусоиды:
:<tex>\text{PE}(pos, 2i) = \sin\!\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right), \quad \text{PE}(pos, 2i+1) = \cos\!\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right).</tex>
:<tex>\text{PE}(pos, 2i) = \sin\!\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right), \quad \text{PE}(pos, 2i+1) = \cos\!\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right).</tex>
-
Такое синусоидальное кодирование позволяет модели обобщаться на последовательности большей длины, чем наблюдались при обучении.
+
Разные частоты позволяют модели выражать относительные смещения через линейные комбинации; в теории это помогает обобщаться на длины, не встречавшиеся при обучении. Позже широко использовали обучаемые позиционные эмбеддинги, а в современных LLM — вращающиеся кодировки RoPE и относительные схемы ALiBi, лучше переносящиеся на длинный контекст.
-
=== Механизм многоголового внимания ===
+
=== Масштабированное скалярное внимание и многоголовость ===
-
Центральный строительный блок — '''многоголовое внимание''' (multi-head attention). Для одной «головы» с запросами <tex>Q</tex>, ключами <tex>K</tex> и значениями <tex>V</tex> внимание вычисляется как:
+
Центральный блок — '''многоголовое внимание''' (multi-head attention). Для одной головы с запросами <tex>Q</tex>, ключами <tex>K</tex> и значениями <tex>V</tex>:
:<tex>\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right) V.</tex>
:<tex>\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right) V.</tex>
-
Масштабирование на <tex>\sqrt{d_k}</tex> предотвращает насыщение функции softmax при большой размерности. Многоголовая версия запускает <tex>h</tex> независимых операций внимания параллельно и конкатенирует результаты:
+
Масштабирование на <tex>\sqrt{d_k}</tex> удерживает дисперсию скалярных произведений порядка единицы и не даёт softmax «схлопнуться» в one-hot при большой <tex>d_k</tex> (подробнее — в [[Механизм внимания]]).
 +
 
 +
Многоголовая версия запускает <tex>h</tex> независимых вниманий и склеивает результаты:
:<tex>\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)\, W^O,</tex>
:<tex>\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)\, W^O,</tex>
-
где <tex>\text{head}_i = \text{Attention}(Q W_i^Q,\, K W_i^K,\, V W_i^V).</tex>
+
:<tex>\text{head}_i = \text{Attention}(Q W_i^Q,\, K W_i^K,\, V W_i^V).</tex>
-
Каждая голова может специализироваться на различных типах зависимостей: синтаксических, семантических, кореференциальных.
+
Аналогия: несколько экспертов читают один и тот же абзац — один следит за синтаксисом, другой за кореференцией, третий за тематическими связями; редактор (<tex>W^O</tex>) сводит их мнения. Эмпирически головы действительно специализируются, хотя интерпретация весов внимания как «объяснения» решения модели ограничена (см. критику в статье про внимание).
=== Блок энкодера и декодера ===
=== Блок энкодера и декодера ===
-
Один слой энкодера состоит из двух подслоёв:
+
'''Слой энкодера''' содержит два подслоя:
-
# Многоголовое внимание (каждый токен «смотрит» на все остальные токены входа — self-attention).
+
# self-attention — каждый токен смотрит на все токены входа;
-
# Позиционно-зависимая полносвязная сеть (feed-forward network, FFN) с двумя линейными преобразованиями и нелинейностью ReLU между ними.
+
# позиционно-независимая FFN: два линейных преобразования с нелинейностью (в оригинале ReLU; позже часто GeLU/SwiGLU):
-
Вокруг каждого подслоя применяется остаточное соединение (residual connection) и нормализация слоя (layer normalization):
+
:<tex>\text{FFN}(x) = \max(0, x W_1 + b_1)\, W_2 + b_2.</tex>
-
:<tex>\text{output} = \text{LayerNorm}(x + \text{Sublayer}(x)).</tex>
+
Вокруг каждого подслоя — residual connection и layer normalization:
-
Слой декодера добавляет третий подслой — '''кросс-внимание''' (cross-attention), в котором запросы поступают из декодера, а ключи и значения — из выходов энкодера. Self-attention в декодере маскируется (masked self-attention), чтобы при генерации токена <tex>t</tex> модель не видела токены с позиций <tex>> t</tex>.
+
:<tex>\text{output} = \text{LayerNorm}\bigl(x + \text{Sublayer}(x)\bigr).</tex>
-
=== Параметры модели ===
+
(В современных реализациях часто Pre-LN: нормализация ''перед'' подслоем — так стабильнее глубокие стеки.)
-
Стандартный трансформер (модель Base) содержит:
+
'''Слой декодера''' добавляет третий подслой — '''кросс-внимание''': запросы из декодера, ключи и значения из выходов энкодера. Self-attention декодера '''маскируется''' (causal / masked attention): при генерации позиции <tex>t</tex> модель не видит токены с индексом <tex>> t</tex> — иначе обучение «подглядывало» бы в будущее и инференс был бы некорректным.
-
* <tex>N = 6</tex> слоёв энкодера и <tex>N = 6</tex> слоёв декодера;
+
 
-
* <tex>d_{\text{model}} = 512</tex>, <tex>h = 8</tex> голов, <tex>d_k = d_v = 64</tex>;
+
=== Параметры модели Base и Big ===
-
* FFN с внутренней размерностью <tex>d_{ff} = 2048</tex>;
+
 
-
* итого ~65 млн параметров.
+
В работе Vaswani et al. приведены две конфигурации:
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Параметр !! Base !! Big
 +
|-
 +
| Число слоёв <tex>N</tex> (энкодер / декодер) || 6 / 6 || 6 / 6
 +
|-
 +
| <tex>d_{\text{model}}</tex> || 512 || 1024
 +
|-
 +
| Число голов <tex>h</tex> || 8 || 16
 +
|-
 +
| <tex>d_k = d_v</tex> || 64 || 64
 +
|-
 +
| <tex>d_{ff}</tex> || 2048 || 4096
 +
|-
 +
| Dropout || 0,1 || 0,3
 +
|-
 +
| Параметры (прибл.) || ~65 млн || ~213 млн
 +
|}
 +
 
 +
Уже Base превзошёл лучшие на тот момент ансамбли на WMT 2014 Eng→Ger; Big установил новый SOTA при меньшем времени обучения, чем предшественники на RNN.
== Обучение ==
== Обучение ==
-
Трансформер обучается методом [[Стохастический градиентный спуск|стохастического градиентного спуска]] с оптимизатором Adam. Авторы предложили специальный планировщик скорости обучения:
+
Оптимизатор — Adam (<tex>\beta_1 = 0{,}9</tex>, <tex>\beta_2 = 0{,}98</tex>, <tex>\varepsilon = 10^{-9}</tex>) со специальным планировщиком скорости обучения:
:<tex>lr = d_{\text{model}}^{-0.5} \cdot \min\!\left(step^{-0.5},\; step \cdot warmup\_steps^{-1.5}\right).</tex>
:<tex>lr = d_{\text{model}}^{-0.5} \cdot \min\!\left(step^{-0.5},\; step \cdot warmup\_steps^{-1.5}\right).</tex>
-
Дополнительно применяются дропаут и сглаживание меток (label smoothing) с <tex>\varepsilon = 0{,}1</tex>.
+
Сначала линейный warmup (в оригинале 4000 шагов), затем спад как <tex>step^{-0.5}</tex>. Дополнительно — dropout на выходах подслоёв и на внимании, а также сглаживание меток (label smoothing) с <tex>\varepsilon = 0{,}1</tex>.
 +
 
 +
Для перевода использовали byte-pair encoding и shared embeddings между энкодером, декодером и softmax. Современные LLM наследуют ту же логику (AdamW, warmup + cosine/decay, mixed precision), но масштабируют данные и вычисления на порядки выше и часто добавляют этапы instruction tuning и [[Обучение с подкреплением из обратной связи человека (RLHF)|RLHF]].
== Варианты архитектуры ==
== Варианты архитектуры ==
-
С момента публикации оригинальной работы трансформер породил множество специализированных архитектур:
+
С 2017 года трансформер породил семейство специализированных схем.
 +
 
 +
* '''Только энкодер''' — BERT<ref name="devlin2019">{{статья |автор=Devlin J., Chang M.-W., Lee K., Toutanova K. |заглавие=BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding |издание=NAACL-HLT |год=2019 |ссылка=https://arxiv.org/abs/1810.04805}}</ref>, RoBERTa. Двунаправленный контекст; предобучение маскированным языковым моделированием (MLM). Оптимальны для классификации, NER, извлечения признаков — «понимания» текста.
 +
* '''Только декодер''' — GPT, GPT-2/3/4 и большинство современных LLM. Авторегрессия: предсказание следующего токена при каузальной маске. Естественно масштабируется и подходит для генерации и in-context learning.
 +
* '''Энкодер-декодер''' — T5, BART. Унифицированный формат «текст → текст»: перевод, суммаризация, QA формулируются как генерация целевой строки.
 +
* '''Эффективные трансформеры''' — Longformer, BigBird, Performer, FlashAttention: снижают или маскируют стоимость <tex>O(n^2)</tex>, либо оптимизируют IO на GPU без приближения Softmax (см. [[Механизм внимания]]).
-
* '''Только энкодер''' (BERT, RoBERTa) оптимальны для задач понимания текста. Обучаются на маскированном языковом моделировании.
+
Отдельная линия Mixture-of-Experts поверх FFN (Switch Transformer и далее): при инференсе активируется лишь доля экспертов, что повышает ёмкость при умеренном FLOPs.
-
* '''Только декодер''' (GPT, GPT-2/3/4) — оптимальны для авторегрессионной генерации текста.
+
-
* '''Энкодер-декодер''' (T5, BART) — универсальный формат «текст в текст», объединяющий задачи перевода, суммаризации, ответов на вопросы.
+
-
* '''Эффективные трансформеры''' (Longformer, BigBird, FlashAttention) — снижают квадратичную сложность <tex>O(n^2)</tex> по длине последовательности.
+
== Законы масштабирования ==
== Законы масштабирования ==
-
Законы масштабирования (scaling laws), установленные Kaplan et al.<ref name="kaplan2020">{{статья |автор=Kaplan J. et al. |заглавие=Scaling Laws for Neural Language Models |издание=arXiv preprint |год=2020 |ссылка=https://arxiv.org/abs/2001.08361}}</ref>, показывают, что потери на языковом моделировании убывают как степенная функция от числа параметров <tex>N</tex>, объёма данных <tex>D</tex> и вычислительного бюджета <tex>C</tex>:
+
Kaplan et al.<ref name="kaplan2020">{{статья |автор=Kaplan J., McCandlish S., Henighan T. et al. |заглавие=Scaling Laws for Neural Language Models |издание=arXiv preprint |год=2020 |ссылка=https://arxiv.org/abs/2001.08361}}</ref> показали, что потери языкового моделирования убывают степенным образом по числу параметров <tex>N</tex>, объёму данных <tex>D</tex> и вычислительному бюджету <tex>C</tex>:
:<tex>L(N, D) \approx A \cdot N^{-\alpha} + B \cdot D^{-\beta} + L_\infty.</tex>
:<tex>L(N, D) \approx A \cdot N^{-\alpha} + B \cdot D^{-\beta} + L_\infty.</tex>
 +
 +
Позже Hoffmann et al. (Chinchilla)<ref name="hoffmann2022">{{статья |автор=Hoffmann J. et al. |заглавие=Training Compute-Optimal Large Language Models |издание=NeurIPS |год=2022 |ссылка=https://arxiv.org/abs/2203.15556}}</ref> уточнили оптимальное соотношение: при фиксированном FLOPs выгоднее обучать меньшую модель на большем числе токенов, чем «недоедать» данными гигантскую сеть. Эти законы объясняют, почему гонка параметров сменилась гонкой данных, качества корпусов и эффективности обучения — и почему архитектура трансформера оказалась удобным «носителем» масштабирования.
== Применения ==
== Применения ==
-
Трансформер стал универсальной архитектурой, выходящей далеко за пределы NLP:
+
Трансформер вышел далеко за NLP:
-
* '''Компьютерное зрение''' — Vision Transformer (ViT) делит изображение на патчи и обрабатывает их как последовательность токенов.
+
* '''Компьютерное зрение''' — Vision Transformer (ViT)<ref name="dosovitskiy2021">{{статья |автор=Dosovitskiy A. et al. |заглавие=An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale |издание=ICLR |год=2021 |ссылка=https://arxiv.org/abs/2010.11929}}</ref> режет изображение на патчи и обрабатывает их как токены; при достаточном масштабе данных превосходит CNN.
-
* '''Генерация изображений''' — [[Диффузионная модель|диффузионные модели]] (Stable Diffusion, DALL-E) используют трансформеры как денойзер.
+
* '''Генерация изображений''' — в [[Диффузионная модель|диффузионных моделях]] (Stable Diffusion, DiT, DALL-E) трансформер или блоки внимания служат денойзером и связывают текст с визуальными признаками через кросс-внимание.
-
* '''Предсказание структуры белков''' — AlphaFold2 применяет трансформеры для предсказания 3D-структуры белков.
+
* '''Структура белков''' — AlphaFold2 использует attention-блоки (Evoformer) для предсказания 3D-структуры; идея «все-со-всеми» связями переносится с языка на MSA и пространственные пары остатков.
 +
* '''Мультимодальность и агенты''' — единый стек трансформера связывает текст, код, изображение и аудио; поверх него работают [[Промпт-инжиниринг|промпт-инжиниринг]], RAG и инструменты.
== Значение ==
== Значение ==
-
Трансформер является одной из наиболее цитируемых статей в истории машинного обучения. Он инициировал эпоху [[Большая языковая модель|больших языковых моделей]], изменившую ландшафт искусственного интеллекта. Архитектура оказалась настолько универсальной, что её называют «foundation model» — фундаментом, на котором строятся специализированные системы через дообучение и [[Промпт-инжиниринг|инжиниринг промптов]].
+
«Attention Is All You Need» — одна из самых цитируемых работ в истории ML. Она не «изобрела» внимание, но показала, что внимания достаточно как единственного индуктивного смещения для последовательностей. Это открыло эпоху foundation models: одна предобученная архитектура адаптируется к задачам через дообучение, инструкции и промпты. Ограничения остаются — квадратичная память, чувствительность к качеству данных, слабая гарантия фактичности — но именно трансформер задал стандарт, относительно которого измеряют альтернативы (SSM/Mamba, гибриды, диффузионные языковые модели).
== См. также ==
== См. также ==
Строка 102: Строка 137:
* [[Промпт-инжиниринг]]
* [[Промпт-инжиниринг]]
* [[Диффузионная модель]]
* [[Диффузионная модель]]
 +
* [[Обучение с подкреплением из обратной связи человека (RLHF)]]
* [[Рекуррентная нейронная сеть]]
* [[Рекуррентная нейронная сеть]]
* [[Метод обратного распространения ошибки]]
* [[Метод обратного распространения ошибки]]
Строка 110: Строка 146:
== Литература ==
== Литература ==
* {{статья |автор=Vaswani A., Shazeer N., Parmar N., Uszkoreit J., Jones L., Gomez A. N., Kaiser Ł., Polosukhin I. |заглавие=Attention Is All You Need |издание=Advances in Neural Information Processing Systems |год=2017 |том=30 |ссылка=https://arxiv.org/abs/1706.03762}}
* {{статья |автор=Vaswani A., Shazeer N., Parmar N., Uszkoreit J., Jones L., Gomez A. N., Kaiser Ł., Polosukhin I. |заглавие=Attention Is All You Need |издание=Advances in Neural Information Processing Systems |год=2017 |том=30 |ссылка=https://arxiv.org/abs/1706.03762}}
-
* {{статья |автор=Kaplan J., McCandlish S., Henighan T. et al. |заглавие=Scaling Laws for Neural Language Models |издание=arXiv preprint |год=2020 |ссылка=https://arxiv.org/abs/2001.08361}}
+
* {{статья |автор=Bahdanau D., Cho K., Bengio Y. |заглавие=Neural Machine Translation by Jointly Learning to Align and Translate |издание=ICLR |год=2015 |ссылка=https://arxiv.org/abs/1409.0473}}
* {{статья |автор=Devlin J., Chang M.-W., Lee K., Toutanova K. |заглавие=BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding |издание=NAACL-HLT |год=2019 |ссылка=https://arxiv.org/abs/1810.04805}}
* {{статья |автор=Devlin J., Chang M.-W., Lee K., Toutanova K. |заглавие=BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding |издание=NAACL-HLT |год=2019 |ссылка=https://arxiv.org/abs/1810.04805}}
 +
* {{статья |автор=Radford A. et al. |заглавие=Language Models are Unsupervised Multitask Learners |издание=OpenAI technical report |год=2019 |ссылка=https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf}}
 +
* {{статья |автор=Raffel C. et al. |заглавие=Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer |издание=JMLR |год=2020 |том=21 |ссылка=https://arxiv.org/abs/1910.10683}}
 +
* {{статья |автор=Kaplan J., McCandlish S., Henighan T. et al. |заглавие=Scaling Laws for Neural Language Models |издание=arXiv preprint |год=2020 |ссылка=https://arxiv.org/abs/2001.08361}}
 +
* {{статья |автор=Hoffmann J. et al. |заглавие=Training Compute-Optimal Large Language Models |издание=NeurIPS |год=2022 |ссылка=https://arxiv.org/abs/2203.15556}}
* {{статья |автор=Dosovitskiy A. et al. |заглавие=An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale |издание=ICLR |год=2021 |ссылка=https://arxiv.org/abs/2010.11929}}
* {{статья |автор=Dosovitskiy A. et al. |заглавие=An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale |издание=ICLR |год=2021 |ссылка=https://arxiv.org/abs/2010.11929}}
Строка 117: Строка 157:
[[Категория:Нейронные сети]]
[[Категория:Нейронные сети]]
[[Категория:Обработка естественного языка]]
[[Категория:Обработка естественного языка]]
 +
[[Категория:Глубокое обучение]]

Текущая версия

Статья написана с использованием LLM Claude Sonnet 4 и проверена участником Emil Petrov 20:00, 14 июля 2026 (MSD)

Промпт приводится полностью в Обсуждение:Трансформер (модель)


Содержание

Трансфо́рмер (англ. Transformer) — архитектура нейронной сети, построенная исключительно на механизме внимания (attention) без рекуррентных и свёрточных слоёв. Предложена в 2017 году исследователями Google Brain и Google Research в работе «Attention Is All You Need»[1]. Трансформер стал базовой архитектурой современных больших языковых моделей (GPT, BERT, T5 и последователи) и проник в компьютерное зрение, биологию и диффузионную генерацию.

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

Предпосылки и мотивировка

До 2017 года для последовательностей (перевод, суммаризация, речь) доминировали рекуррентные сети — LSTM и GRU. Они обрабатывают вход по шагам: на шаге t модель получает токен x_t и скрытое состояние h_{t-1}. Это порождает две принципиальные проблемы.

Последовательный характер вычислений. Шаг t нельзя начать, пока не готов шаг t-1. На GPU/TPU это означает низкую утилизацию: матричные ядра простаивают, пока «тянется» цепочка по времени. Масштабирование на длинные тексты и большие корпуса становится дорогим не столько из‑за числа параметров, сколько из‑за невозможности распараллелить временную ось.

Затухание и размывание сигнала. Даже с ячейками LSTM информация с ранних позиций плохо доходит до поздних: градиенты затухают, а скрытое состояние конечной размерности вынуждено «сжимать» всю историю. Механизм внимания Bahdanau (2014) частично снял вторую проблему, дав декодеру прямой доступ к каждому состоянию энкодера, но сам энкодер и декодер оставались рекуррентными.

Трансформер сделал радикальный шаг: убрал рекуррентность полностью и построил и кодирование, и декодирование на внимании. Цена — квадратичная сложность O(n^2) по длине последовательности n; выигрыш — полный параллелизм по позициям и прямые пути длины O(1) между любыми двумя токенами.

Архитектура

Классический трансформер — энкодер-декодерная модель для машинного перевода. Ниже — блоки, из которых она собрана.

Входное представление и позиционное кодирование

Последовательность токенов x_1, \ldots, x_n отображается в матрицу встраиваний X \in \mathbb{R}^{n \times d_{\text{model}}}. Само внимание перестановочно инвариантно: без явной информации о порядке модель не отличит «кот съел мышь» от «мышь съела кот». Поэтому к встраиваниям прибавляют позиционное кодирование (positional encoding).

В оригинале — фиксированные синусоиды:

\text{PE}(pos, 2i) = \sin\!\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right), \quad \text{PE}(pos, 2i+1) = \cos\!\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right).

Разные частоты позволяют модели выражать относительные смещения через линейные комбинации; в теории это помогает обобщаться на длины, не встречавшиеся при обучении. Позже широко использовали обучаемые позиционные эмбеддинги, а в современных LLM — вращающиеся кодировки RoPE и относительные схемы ALiBi, лучше переносящиеся на длинный контекст.

Масштабированное скалярное внимание и многоголовость

Центральный блок — многоголовое внимание (multi-head attention). Для одной головы с запросами Q, ключами K и значениями V:

\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right) V.

Масштабирование на \sqrt{d_k} удерживает дисперсию скалярных произведений порядка единицы и не даёт softmax «схлопнуться» в one-hot при большой d_k (подробнее — в Механизм внимания).

Многоголовая версия запускает h независимых вниманий и склеивает результаты:

\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)\, W^O,
\text{head}_i = \text{Attention}(Q W_i^Q,\, K W_i^K,\, V W_i^V).

Аналогия: несколько экспертов читают один и тот же абзац — один следит за синтаксисом, другой за кореференцией, третий за тематическими связями; редактор (W^O) сводит их мнения. Эмпирически головы действительно специализируются, хотя интерпретация весов внимания как «объяснения» решения модели ограничена (см. критику в статье про внимание).

Блок энкодера и декодера

Слой энкодера содержит два подслоя:

  1. self-attention — каждый токен смотрит на все токены входа;
  2. позиционно-независимая FFN: два линейных преобразования с нелинейностью (в оригинале ReLU; позже часто GeLU/SwiGLU):
\text{FFN}(x) = \max(0, x W_1 + b_1)\, W_2 + b_2.

Вокруг каждого подслоя — residual connection и layer normalization:

\text{output} = \text{LayerNorm}\bigl(x + \text{Sublayer}(x)\bigr).

(В современных реализациях часто Pre-LN: нормализация перед подслоем — так стабильнее глубокие стеки.)

Слой декодера добавляет третий подслой — кросс-внимание: запросы из декодера, ключи и значения из выходов энкодера. Self-attention декодера маскируется (causal / masked attention): при генерации позиции t модель не видит токены с индексом > t — иначе обучение «подглядывало» бы в будущее и инференс был бы некорректным.

Параметры модели Base и Big

В работе Vaswani et al. приведены две конфигурации:

Параметр Base Big
Число слоёв N (энкодер / декодер) 6 / 6 6 / 6
d_{\text{model}} 512 1024
Число голов h 8 16
d_k = d_v 64 64
d_{ff} 2048 4096
Dropout 0,1 0,3
Параметры (прибл.) ~65 млн ~213 млн

Уже Base превзошёл лучшие на тот момент ансамбли на WMT 2014 Eng→Ger; Big установил новый SOTA при меньшем времени обучения, чем предшественники на RNN.

Обучение

Оптимизатор — Adam (\beta_1 = 0{,}9, \beta_2 = 0{,}98, \varepsilon = 10^{-9}) со специальным планировщиком скорости обучения:

lr = d_{\text{model}}^{-0.5} \cdot \min\!\left(step^{-0.5},\; step \cdot warmup\_steps^{-1.5}\right).

Сначала линейный warmup (в оригинале 4000 шагов), затем спад как step^{-0.5}. Дополнительно — dropout на выходах подслоёв и на внимании, а также сглаживание меток (label smoothing) с \varepsilon = 0{,}1.

Для перевода использовали byte-pair encoding и shared embeddings между энкодером, декодером и softmax. Современные LLM наследуют ту же логику (AdamW, warmup + cosine/decay, mixed precision), но масштабируют данные и вычисления на порядки выше и часто добавляют этапы instruction tuning и RLHF.

Варианты архитектуры

С 2017 года трансформер породил семейство специализированных схем.

  • Только энкодер — BERT[1], RoBERTa. Двунаправленный контекст; предобучение маскированным языковым моделированием (MLM). Оптимальны для классификации, NER, извлечения признаков — «понимания» текста.
  • Только декодер — GPT, GPT-2/3/4 и большинство современных LLM. Авторегрессия: предсказание следующего токена при каузальной маске. Естественно масштабируется и подходит для генерации и in-context learning.
  • Энкодер-декодер — T5, BART. Унифицированный формат «текст → текст»: перевод, суммаризация, QA формулируются как генерация целевой строки.
  • Эффективные трансформеры — Longformer, BigBird, Performer, FlashAttention: снижают или маскируют стоимость O(n^2), либо оптимизируют IO на GPU без приближения Softmax (см. Механизм внимания).

Отдельная линия — Mixture-of-Experts поверх FFN (Switch Transformer и далее): при инференсе активируется лишь доля экспертов, что повышает ёмкость при умеренном FLOPs.

Законы масштабирования

Kaplan et al.[1] показали, что потери языкового моделирования убывают степенным образом по числу параметров N, объёму данных D и вычислительному бюджету C:

L(N, D) \approx A \cdot N^{-\alpha} + B \cdot D^{-\beta} + L_\infty.

Позже Hoffmann et al. (Chinchilla)[1] уточнили оптимальное соотношение: при фиксированном FLOPs выгоднее обучать меньшую модель на большем числе токенов, чем «недоедать» данными гигантскую сеть. Эти законы объясняют, почему гонка параметров сменилась гонкой данных, качества корпусов и эффективности обучения — и почему архитектура трансформера оказалась удобным «носителем» масштабирования.

Применения

Трансформер вышел далеко за NLP:

  • Компьютерное зрение — Vision Transformer (ViT)[1] режет изображение на патчи и обрабатывает их как токены; при достаточном масштабе данных превосходит CNN.
  • Генерация изображений — в диффузионных моделях (Stable Diffusion, DiT, DALL-E) трансформер или блоки внимания служат денойзером и связывают текст с визуальными признаками через кросс-внимание.
  • Структура белков — AlphaFold2 использует attention-блоки (Evoformer) для предсказания 3D-структуры; идея «все-со-всеми» связями переносится с языка на MSA и пространственные пары остатков.
  • Мультимодальность и агенты — единый стек трансформера связывает текст, код, изображение и аудио; поверх него работают промпт-инжиниринг, RAG и инструменты.

Значение

«Attention Is All You Need» — одна из самых цитируемых работ в истории ML. Она не «изобрела» внимание, но показала, что внимания достаточно как единственного индуктивного смещения для последовательностей. Это открыло эпоху foundation models: одна предобученная архитектура адаптируется к задачам через дообучение, инструкции и промпты. Ограничения остаются — квадратичная память, чувствительность к качеству данных, слабая гарантия фактичности — но именно трансформер задал стандарт, относительно которого измеряют альтернативы (SSM/Mamba, гибриды, диффузионные языковые модели).

См. также

Примечания

Литература

  • Vaswani A., Shazeer N., Parmar N., Uszkoreit J., Jones L., Gomez A. N., Kaiser Ł., Polosukhin I. Attention Is All You Need // Advances in Neural Information Processing Systems. — 2017. — Т. 30.
  • Bahdanau D., Cho K., Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate // ICLR. — 2015.
  • Devlin J., Chang M.-W., Lee K., Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding // NAACL-HLT. — 2019.
  • Radford A. et al. Language Models are Unsupervised Multitask Learners // OpenAI technical report. — 2019.
  • Raffel C. et al. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer // JMLR. — 2020. — Т. 21.
  • Kaplan J., McCandlish S., Henighan T. et al. Scaling Laws for Neural Language Models // arXiv preprint. — 2020.
  • Hoffmann J. et al. Training Compute-Optimal Large Language Models // NeurIPS. — 2022.
  • Dosovitskiy A. et al. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale // ICLR. — 2021.
Личные инструменты