---
title: Трансформеры
seo:
  title: Трансформеры — Data Scientist
  description: Тема «Трансформеры» для собеседования Data Scientist. Что такое Multi-Head Attention? Чем Encoder отличается от Decoder-а?
---

[Все темы Data Scientist](/data-scientist)

## <strong>Что такое Multi-Head Attention?</strong> [#q-14bee738d69b817b95b2fd40fc9025b4]

Multi-Head Attention - это механизм внимания в архитектуре трансформера, который позволяет модели сосредотачиваться на различных частях входных данных сразу. Он достигается путем одновременного применения нескольких "голов" (head) внимания к входным данным, каждая из которых обрабатывает данные с различными весами. Это позволяет модели обрабатывать различные аспекты контекста независимо друг от друга, что может привести к более эффективному изучению долгосрочных зависимостей в данных.

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::

---

## <strong>Чем</strong> <code>Encoder</code> <strong>отличается от</strong> <code>Decoder&#45;а</code><strong>?</strong> [#q-14bee738d69b8129b0caedf69f82c440]

<code>Encoder</code> и <code>Decoder</code> - это две основные компоненты в
архитектуре <code>seq2seq</code>, которая часто используется в задачах машинного
перевода.

- Encoder преобразует входную последовательность в последовательность контекстных представлений, обычно по одному на токен.

- Decoder генерирует выходные токены, используя причинное self-attention по уже доступным выходным токенам и cross-attention к представлениям encoder.

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::

---

## <strong>Что такое Positional Encoding и зачем он нужен?</strong> [#q-14bee738d69b81b7aba4d229e4e901b4]

Positional Encoding - это механизм, используемый в моделях трансформера для добавления информации о позиции слов в последовательности. Это необходимо потому, что в стандартной архитектуре трансформера нет явного представления о порядке слов во входных данных. Positional Encoding добавляет эту информацию, позволяя модели учитывать порядок слов при обработке входных данных.

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::

---

## <strong>Какие примеры трансформерных моделей существуют? (например,</strong> <code>BERT</code> <strong>как</strong> <code>Encoder</code><strong>,</strong> <code>GPT</code> <strong>как</strong> <code>Decoder</code><strong>)?</strong> [#q-14bee738d69b811a8850cd9074a594b5]

Примеры трансформенных моделей&#58;

1. <code>BERT</code> (Bidirectional Encoder Representations from Transformers) -
   используется для решения задач обработки естественного языка (Natural
   Language Processing, NLP).

1. <code>GPT</code> (Generative Pre-trained Transformer) - также используется в
   задачах NLP, но в отличие от BERT, GPT обычно используется для генерации
   текста.

1. <code>T5</code> (Text-To-Text Transfer Transformer) - обобщенная
   трансформерная модель, которая может быть применена к различным задачам NLP,
   представленная в работе "Exploring the Limits of Transfer Learning with a
   Unified Text-to-Text Transformer".

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::

---

## <strong>Расскажите про оптимизаторы. (</strong><code>AdamW</code><strong>,</strong> <code>LAMB</code><strong>,</strong> <code>LANS</code><strong>, большой батч)</strong> [#q-14bee738d69b815ca940e3852ac5d8bf]

Кратко о некоторых оптимизаторах&#58;

1. <code>AdamW</code> (Adam with Weight Decay) - это вариант оптимизатора Adam,
   который добавляет весовую декэй-регуляризацию для улучшения стабильности и
   обобщающей способности модели.

1. <code>LAMB</code> (Layer-wise Adaptive Moments) - это оптимизатор, который
   адаптивно масштабирует градиенты для каждого слоя нейронной сети, что
   позволяет эффективнее обучать модели с различными масштабами градиентов.

1. LANS (Layer-wise Adaptive Nesterov momentum)&#58; оптимизатор для обучения с большими батчами, использующий послойную адаптацию шага и момент Нестерова.

1. Оптимизация с использованием больших батчей - это подход к обучению нейронных сетей, при котором используются более крупные батчи данных для ускорения процесса обучения и повышения параллелизма, что может привести к более эффективному использованию аппаратного обеспечения.

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::

---

## <strong>Почему лучше использовать нормализацию по слоям</strong> <code>&#40;layer norm&#41;</code> <strong>вместо нормализации по батчу</strong> <code>&#40;batch norm&#41;</code><strong>?</strong> [#q-14bee738d69b81ceaa96ec00bb009f44]

Использование нормализации по слоям <code>&#40;layer norm&#41;</code> обычно предпочтительнее нормализации по батчу <code>&#40;batch norm&#41;</code> в задачах, где размер батча может быть небольшим или изменчивым, так как&#58;

1. <strong>Более стабильное обучение</strong>&#58; Нормализация по слоям не
   зависит от размера батча, поэтому обеспечивает более стабильное обучение в
   различных условиях.

1. <strong>Независимость от размера батча</strong>&#58; Нормализация по слоям
   независима от размера батча и может быть эффективно применена даже при работе
   с одним образцом данных.

1. <strong>Большая параллелизация</strong>&#58; Нормализация по слоям позволяет
   большей степени параллелизма при обучении на устройствах с разными
   характеристиками, такими как распределенные системы или GPU с ограниченной
   памятью.

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::

---

## <strong>Чем отличается модель</strong> <code>BERT</code> <strong>от модели</strong> <code>GPT</code><strong>?</strong> [#q-14bee738d69b81f98a5fe0388a439bb2]

<code>BERT</code> (Bidirectional Encoder Representations from Transformers) и
<code>GPT</code> (Generative Pre-trained Transformer) - это обе модели на основе
трансформеров, но с разными архитектурами и целями&#58;

1. Направленность&#58; BERT использует двунаправленный encoder и восстанавливает выбранные токены по левому и правому контексту. GPT использует причинную маску и предсказывает следующий токен по предыдущим.

1. <strong>Цель обучения</strong>&#58; <code>BERT</code> обучается на задачах
   предварительной тренировки, таких как предсказание маскированных слов и
   предсказание следующего предложения. Он используется для создания
   представлений слов и контекста, которые можно использовать в различных
   задачах NLP. <code>GPT</code> обучается на задаче предсказания следующего
   слова в тексте и используется в основном для генерации текста и выполнения
   других задач, связанных с пониманием текста.

1. <strong>Генерация и понимание</strong>&#58; <code>GPT</code> хорошо подходит
   для генерации текста, такого как продолжение предложений или создание новых
   текстовых данных. <code>BERT</code>, с другой стороны, лучше подходит для
   задач понимания текста, таких как классификация, извлечение информации или
   вопросно-ответные системы.

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::

---

## <strong>Есть ли отдельный слой-токенизатор у трансформера?</strong> [#q-14bee738d69b8144b468de0611e71241]

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

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::

---

## <strong>Чем эмбеддинг w2v отличается от эмбеддинга трансформера?</strong> [#q-14bee738d69b8190b4e3fe9a1aa59f48]

Эмбеддинг <code>word2vec</code> <code>&#40;w2v&#41;</code> - это статические векторы, представляющие слова в пространстве непрерывных векторов, обученные на больших текстовых корпусах. Они представляют собой фиксированные представления слов, которые не изменяются во время обработки моделью.

Эмбеддинги трансформера - это динамические векторы, которые вычисляются во время работы модели и зависят от контекста. Они создаются на основе входных данных и внутренних матриц весов модели трансформера. Эти эмбеддинги учитывают контекст и семантику слова в конкретном контексте.

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::

---

## <strong>Расскажите полностью архитектуру трансформера.</strong> [#q-14bee738d69b817f9299fea7895452d1]

Архитектура трансформера - это модель глубокого обучения, предназначенная для обработки последовательностей данных, таких как тексты или временные ряды. Она была представлена в статье <code>&#34;Attention is All You Need&#34;</code> в 2017 году. Вот ее основные компоненты&#58;

1. <strong>Входной вектор</strong>&#58; На вход трансформеру поступает
   последовательность токенов (слов, символов или эмбеддингов) размерности
   <InlineMath tex={"T \\times d"} />, где <InlineMath tex={"T"} /> - длина
   последовательности, а <InlineMath tex={"d"} /> - размерность эмбеддинга для
   каждого токена.

1. <strong>Позиционные эмбеддинги</strong>&#58; Для кодирования информации о
   позиции каждого токена в последовательности добавляются позиционные
   эмбеддинги.

1. Энкодер&#58; каждый блок содержит multi-head self-attention и позиционную полносвязную сеть с нелинейной активацией. В исходном Transformer оба подблока используют остаточные соединения и LayerNorm.

1. <strong>Много-головые внимательные механизмы (Multi-Head Attention)</strong>
   &#58; Этот механизм позволяет модели фокусироваться на разных частях входной
   последовательности одновременно, используя несколько "голов" внимания. Каждая
   голова вычисляет внимательность между входными токенами, учитывая их
   взаимосвязи и важность для предсказания.

1. <strong>Полносвязные слои</strong>&#58; После много-головых внимательных
   механизмов выходные данные подвергаются обработке полносвязными слоями для
   обеспечения нелинейности и извлечения высокоуровневых признаков.

1. <strong>Декодер</strong>&#58; В задачах генерации текста или машинного
   перевода используется декодер, который также состоит из нескольких слоев с
   много-головыми внимательными механизмами и полносвязными слоями. Декодер
   генерирует выходную последовательность, принимая на вход выход энкодера и
   внимание на входной последовательности.

1. <strong>Финальный полносвязный слой</strong>&#58; Финальный полносвязный слой
   преобразует выходы декодера в вероятности или векторы предсказания.

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

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::

---

## <strong>Батч нормализация происходит во время</strong> <code>backward</code> <strong>или</strong> <code>forward pass</code><strong>. Зачем вообще нужна?</strong> [#q-14bee738d69b8192af3ddceef9914693]

Батч нормализация происходит во время forward pass. Ее основная цель - ускорить обучение и улучшить обобщающую способность нейронной сети. Путем нормализации входных данных к батчу (входных активаций) по их среднему значению и дисперсии внутри батча, батч нормализация помогает справиться с проблемой внутреннего сдвига и способствует более стабильному обучению модели. Она также может уменьшить зависимость от выбора начальных весов и улучшить работу оптимизатора, позволяя использовать более высокие скорости обучения.

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::

---

## <strong>Чем отличается</strong> <code>RNN</code> <strong>от Трансформера?</strong> [#q-14bee738d69b81ea8a83c94d40334fc9]

Между <code>RNN</code> и Трансформером есть основное отличие&#58;

- <code>RNN</code> обрабатывает данные последовательно и хорошо подходит для
  временных рядов, но страдает от проблемы долгосрочной зависимости.

- <strong>Трансформеры</strong> параллельно обрабатывают последовательности и
  используют механизм внимания (<code>attention</code>), что позволяет
  эффективно работать с длинными последовательностями.

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::

---

## <strong>Какая вычислительная сложность у</strong> <code>RNN</code> <strong>и Трансформера?</strong> [#q-14bee738d69b8150880bc45ce6dcc070]

У <code>RNN</code> и Трансформера следующая вычислительная сложность&#58;

- У <code>RNN</code> сложность O(n), где n — длина последовательности.

- У <strong>Трансформера</strong> сложность O(n²) из-за механизма внимания, но он лучше масштабируется благодаря параллелизму.

:::note[Ссылки для изучения]

1. [Трансформеры](https://education.yandex.ru/handbook/ml/article/transformery)
   :::
