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

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

(Различия между версиями)
Перейти к: навигация, поиск
(Новая статья: архитектура трансформера, написана с помощью LLM Claude Sonnet 4)
(Исправление формул LaTeX (String.raw), убрано дублирование имени)
 
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] [[Участник:Emil Petrov|Emil Petrov]] 14:41, 16 июня 2026 (MSD)
+
{{well|Статья написана с использованием LLM '''Claude Sonnet 4''' и проверена участником [[Участник:Emil Petrov|Emil Petrov]] 14:56, 16 июня 2026 (MSD)
Промпт приводится полностью в [[Обсуждение:Трансформер (модель)]]
Промпт приводится полностью в [[Обсуждение:Трансформер (модель)]]
}}
}}
Строка 21: Строка 21:
=== Входное представление ===
=== Входное представление ===
-
Входная последовательность токенов <tex>x_1, ldots, x_n</tex> сначала преобразуется в матрицу векторов [[Нейросетевое встраивание|встраиваний]] <tex>X in mathbb{R}^{n imes d_{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> ext{PE}(pos, 2i) = sin!left(�rac{pos}{10000^{2i/d_{model}}}
+
:<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>
-
ight), quad ext{PE}(pos, 2i+1) = cos!left(�rac{pos}{10000^{2i/d_{model}}}
+
-
ight).</tex>
+
-
Такое синусоидальное кодирование позволяет модели обобщаться на последовательности большей длины, чем наблюдались при обучении, и обеспечивает постоянство относительных расстояний между позициями.
+
Такое синусоидальное кодирование позволяет модели обобщаться на последовательности большей длины, чем наблюдались при обучении.
=== Механизм многоголового внимания ===
=== Механизм многоголового внимания ===
Строка 33: Строка 31:
Центральный строительный блок — '''многоголовое внимание''' (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> ext{Attention}(Q, K, V) = ext{softmax}!left(�rac{QK^ op}{sqrt{d_k}}
+
:<tex>\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right) V.</tex>
-
ight) V.</tex>
+
-
Масштабирование на <tex>sqrt{d_k}</tex> предотвращает насыщение функции softmax при большой размерности. Многоголовая версия запускает <tex>h</tex> независимых операций внимания параллельно и конкатенирует результаты:
+
Масштабирование на <tex>\sqrt{d_k}</tex> предотвращает насыщение функции softmax при большой размерности. Многоголовая версия запускает <tex>h</tex> независимых операций внимания параллельно и конкатенирует результаты:
-
:<tex> ext{MultiHead}(Q, K, V) = ext{Concat}( ext{head}_1, ldots, ext{head}_h), W^O,</tex>
+
:<tex>\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)\, W^O,</tex>
-
где <tex> ext{head}_i = ext{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>
Каждая голова может специализироваться на различных типах зависимостей: синтаксических, семантических, кореференциальных.
Каждая голова может специализироваться на различных типах зависимостей: синтаксических, семантических, кореференциальных.
Строка 52: Строка 49:
Вокруг каждого подслоя применяется остаточное соединение (residual connection) и нормализация слоя (layer normalization):
Вокруг каждого подслоя применяется остаточное соединение (residual connection) и нормализация слоя (layer normalization):
-
:<tex> ext{output} = ext{LayerNorm}(x + ext{Sublayer}(x)).</tex>
+
:<tex>\text{output} = \text{LayerNorm}(x + \text{Sublayer}(x)).</tex>
Слой декодера добавляет третий подслой — '''кросс-внимание''' (cross-attention), в котором запросы поступают из декодера, а ключи и значения — из выходов энкодера. Self-attention в декодере маскируется (masked self-attention), чтобы при генерации токена <tex>t</tex> модель не видела токены с позиций <tex>> t</tex>.
Слой декодера добавляет третий подслой — '''кросс-внимание''' (cross-attention), в котором запросы поступают из декодера, а ключи и значения — из выходов энкодера. Self-attention в декодере маскируется (masked self-attention), чтобы при генерации токена <tex>t</tex> модель не видела токены с позиций <tex>> t</tex>.
-
=== Полная модель ===
+
=== Параметры модели ===
Стандартный трансформер (модель Base) содержит:
Стандартный трансформер (модель Base) содержит:
* <tex>N = 6</tex> слоёв энкодера и <tex>N = 6</tex> слоёв декодера;
* <tex>N = 6</tex> слоёв энкодера и <tex>N = 6</tex> слоёв декодера;
-
* <tex>d_{model} = 512</tex>, <tex>h = 8</tex> голов, <tex>d_k = d_v = 64</tex>;
+
* <tex>d_{\text{model}} = 512</tex>, <tex>h = 8</tex> голов, <tex>d_k = d_v = 64</tex>;
* FFN с внутренней размерностью <tex>d_{ff} = 2048</tex>;
* FFN с внутренней размерностью <tex>d_{ff} = 2048</tex>;
* итого ~65 млн параметров.
* итого ~65 млн параметров.
-
 
-
Модель Large (<tex>d_{model} = 1024</tex>, <tex>N = 6</tex>, <tex>h = 16</tex>) содержит ~213 млн параметров.
 
== Обучение ==
== Обучение ==
-
Трансформер обучается методом [[Стохастический градиентный спуск|стохастического градиентного спуска]] с оптимизатором Adam. Авторы предложили специальный планировщик скорости обучения (learning rate schedule): скорость сначала линейно растёт в течение <tex>warmup_steps</tex> шагов, затем убывает обратно пропорционально квадратному корню из номера шага:
+
Трансформер обучается методом [[Стохастический градиентный спуск|стохастического градиентного спуска]] с оптимизатором Adam. Авторы предложили специальный планировщик скорости обучения:
-
:<tex>lr = d_{model}^{-0.5} cdot min(step^{-0.5},; step cdot warmup_steps^{-1.5}).</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>�arepsilon = 0{,}1</tex>.
+
Дополнительно применяются дропаут и сглаживание меток (label smoothing) с <tex>\varepsilon = 0{,}1</tex>.
== Варианты архитектуры ==
== Варианты архитектуры ==
Строка 78: Строка 73:
С момента публикации оригинальной работы трансформер породил множество специализированных архитектур:
С момента публикации оригинальной работы трансформер породил множество специализированных архитектур:
-
* '''Только энкодер''' ([[BERT]], RoBERTa) — оптимальны для задач понимания текста (классификация, NER, вопросно-ответные системы). Обучаются на маскированном языковом моделировании (masked language modeling).
+
* '''Только энкодер''' (BERT, RoBERTa) — оптимальны для задач понимания текста. Обучаются на маскированном языковом моделировании.
-
* '''Только декодер''' (GPT, [[GPT|GPT-2/3/4]]) — оптимальны для авторегрессионной генерации текста. Обучаются на предсказании следующего токена.
+
* '''Только декодер''' (GPT, GPT-2/3/4) — оптимальны для авторегрессионной генерации текста.
-
* '''Энкодер-декодер''' (T5, BART, mT5) — универсальный формат «текст в текст» (text-to-text), объединяющий задачи перевода, суммаризации, ответов на вопросы в единый фреймворк.
+
* '''Энкодер-декодер''' (T5, BART) — универсальный формат «текст в текст», объединяющий задачи перевода, суммаризации, ответов на вопросы.
-
* '''Эффективные трансформеры''' (Longformer, BigBird, Linformer, Performer) — модификации механизма внимания для работы с длинными последовательностями, снижающие квадратичную сложность <tex>O(n^2)</tex> до линейной или логарифмической.
+
* '''Эффективные трансформеры''' (Longformer, BigBird, FlashAttention) — снижают квадратичную сложность <tex>O(n^2)</tex> по длине последовательности.
-
== Сложность и масштабируемость ==
+
== Законы масштабирования ==
-
Вычислительная сложность операции внимания составляет <tex>O(n^2 d)</tex> по числу операций и <tex>O(n^2)</tex> по памяти, где <tex>n</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>:
-
С другой стороны, отсутствие рекуррентности обеспечивает идеальную параллелизуемость обучения, что позволило масштабировать модели до сотен миллиардов параметров. Законы масштабирования (scaling laws), установленные в работах OpenAI<ref name="kaplan2020">{{статья |автор=Kaplan J. et al. |заглавие=Scaling Laws for Neural Language Models |издание=arXiv preprint |год=2020 |ссылка=https://arxiv.org/abs/2001.08361}}</ref>, показывают, что потери на языковом моделировании убывают как степенная функция от числа параметров, объёма обучающих данных и вычислительного бюджета.
+
:<tex>L(N, D) \approx A \cdot N^{-\alpha} + B \cdot D^{-\beta} + L_\infty.</tex>
== Применения ==
== Применения ==
Строка 93: Строка 88:
Трансформер стал универсальной архитектурой, выходящей далеко за пределы NLP:
Трансформер стал универсальной архитектурой, выходящей далеко за пределы NLP:
-
* '''Компьютерное зрение''' — Vision Transformer (ViT) делит изображение на патчи и обрабатывает их как последовательность токенов; DINO, CLIP используют трансформеры для обучения с самоконтролем и мультимодального обучения.
+
* '''Компьютерное зрение''' — Vision Transformer (ViT) делит изображение на патчи и обрабатывает их как последовательность токенов.
-
* '''Генерация изображений''' — [[Диффузионная модель|диффузионные модели]] (Stable Diffusion, DALL-E) используют трансформеры в качестве U-Net-подобного денойзера с механизмом кросс-внимания для обусловливания на текст.
+
* '''Генерация изображений''' — [[Диффузионная модель|диффузионные модели]] (Stable Diffusion, DALL-E) используют трансформеры как денойзер.
-
* '''Белковые последовательности''' — AlphaFold2 применяет трансформеры для предсказания трёхмерной структуры белков по аминокислотной последовательности.
+
* '''Предсказание структуры белков''' — AlphaFold2 применяет трансформеры для предсказания 3D-структуры белков.
-
* '''Обработка временных рядов, графов, аудио''' — трансформеры конкурентоспособны или превосходят специализированные архитектуры во всё большем числе областей.
+
-
== Значение и исторический контекст ==
+
== Значение ==
-
Трансформер является одной из наиболее цитируемых и влиятельных статей в истории машинного обучения. За несколько лет он вытеснил RNN из большинства задач NLP и инициировал эпоху [[Большая языковая модель|больших языковых моделей]], изменившую ландшафт искусственного интеллекта. Архитектура оказалась настолько универсальной, что сейчас её называют «foundation model» — универсальным фундаментом, на котором строятся специализированные системы дообучением (fine-tuning) и [[Промпт-инжиниринг|инжинирингом промптов]].
+
Трансформер является одной из наиболее цитируемых статей в истории машинного обучения. Он инициировал эпоху [[Большая языковая модель|больших языковых моделей]], изменившую ландшафт искусственного интеллекта. Архитектура оказалась настолько универсальной, что её называют «foundation model» — фундаментом, на котором строятся специализированные системы через дообучение и [[Промпт-инжиниринг|инжиниринг промптов]].
== См. также ==
== См. также ==
Строка 106: Строка 100:
* [[Большая языковая модель]]
* [[Большая языковая модель]]
* [[Нейросетевое встраивание]]
* [[Нейросетевое встраивание]]
-
* [[BERT]]
 
* [[Промпт-инжиниринг]]
* [[Промпт-инжиниринг]]
* [[Диффузионная модель]]
* [[Диффузионная модель]]
Строка 120: Строка 113:
* {{статья |автор=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}}
* {{статья |автор=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}}
-
* {{книга |автор=Tunstall L., von Werra L., Wolf T. |заглавие=Natural Language Processing with Transformers |издательство=O'Reilly Media |год=2022 |isbn=978-1098103244}}
 
[[Категория:Машинное обучение]]
[[Категория:Машинное обучение]]
[[Категория:Нейронные сети]]
[[Категория:Нейронные сети]]
[[Категория:Обработка естественного языка]]
[[Категория:Обработка естественного языка]]

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

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

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


Содержание

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

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

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

  • Последовательный характер вычислений — нельзя распараллелить обработку токенов, что ограничивает масштабирование на современных GPU и TPU.
  • Затухание градиентов — при длинных последовательностях информация с ранних шагов плохо передаётся к поздним, несмотря на механизм ячеек памяти LSTM.

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

Архитектура

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

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

Входная последовательность токенов 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).

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

Механизм многоголового внимания

Центральный строительный блок — многоголовое внимание (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 при большой размерности. Многоголовая версия запускает 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).

Каждая голова может специализироваться на различных типах зависимостей: синтаксических, семантических, кореференциальных.

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

Один слой энкодера состоит из двух подслоёв:

  1. Многоголовое внимание (каждый токен «смотрит» на все остальные токены входа — self-attention).
  2. Позиционно-зависимая полносвязная сеть (feed-forward network, FFN) с двумя линейными преобразованиями и нелинейностью ReLU между ними.

Вокруг каждого подслоя применяется остаточное соединение (residual connection) и нормализация слоя (layer normalization):

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

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

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

Стандартный трансформер (модель Base) содержит:

  • N = 6 слоёв энкодера и N = 6 слоёв декодера;
  • d_{\text{model}} = 512, h = 8 голов, d_k = d_v = 64;
  • FFN с внутренней размерностью d_{ff} = 2048;
  • итого ~65 млн параметров.

Обучение

Трансформер обучается методом стохастического градиентного спуска с оптимизатором Adam. Авторы предложили специальный планировщик скорости обучения:

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

Дополнительно применяются дропаут и сглаживание меток (label smoothing) с \varepsilon = 0{,}1.

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

С момента публикации оригинальной работы трансформер породил множество специализированных архитектур:

  • Только энкодер (BERT, RoBERTa) — оптимальны для задач понимания текста. Обучаются на маскированном языковом моделировании.
  • Только декодер (GPT, GPT-2/3/4) — оптимальны для авторегрессионной генерации текста.
  • Энкодер-декодер (T5, BART) — универсальный формат «текст в текст», объединяющий задачи перевода, суммаризации, ответов на вопросы.
  • Эффективные трансформеры (Longformer, BigBird, FlashAttention) — снижают квадратичную сложность O(n^2) по длине последовательности.

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

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

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

Применения

Трансформер стал универсальной архитектурой, выходящей далеко за пределы NLP:

  • Компьютерное зрение — Vision Transformer (ViT) делит изображение на патчи и обрабатывает их как последовательность токенов.
  • Генерация изображенийдиффузионные модели (Stable Diffusion, DALL-E) используют трансформеры как денойзер.
  • Предсказание структуры белков — AlphaFold2 применяет трансформеры для предсказания 3D-структуры белков.

Значение

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

См. также

Примечания

Литература

  • 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.
  • Kaplan J., McCandlish S., Henighan T. et al. Scaling Laws for Neural Language Models // arXiv preprint. — 2020.
  • Devlin J., Chang M.-W., Lee K., Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding // NAACL-HLT. — 2019.
  • Dosovitskiy A. et al. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale // ICLR. — 2021.
Личные инструменты