Главная / Статьи / Как трансформер читает «The cat sat on the mat»: шаг за шагом

Как трансформер читает «The cat sat on the mat»: шаг за шагом

Проследим одно предложение через слой трансформера: токены, эмбеддинги, позиции, self-attention, residual-связи, нормализация и feed-forward сеть.

1289 слов

Большая языковая модель — это модель глубокого обучения на архитектуре трансформера, обученная на огромных объёмах текста, чтобы понимать и порождать человеческий язык. Если ввести в неё простое предложение «The cat sat on the mat» («Кошка сидела на коврике»), она прочитает его совсем не так, как вы. Модель превращает слова в числа, добавляет к ним сведения о том, где стоит каждое слово, позволяет каждому слову посмотреть на все остальные, чтобы собрать контекст, а затем раз за разом уточняет эти числа, пока каждое слово не получит более богатое и осмысленное представление.

Всё это происходит внутри трансформера, и для понимания основной идеи тяжёлая математика не нужна. Достаточно проследить путь предложения от сырого текста до итогового набора чисел, в котором закодированы смысл, связи и контекст. Ниже — маршрут, который «The cat sat on the mat» проходит через один слой трансформера.

Четыре идеи, которые стоит запомнить

  • Attention: токены общаются друг с другом.
  • Feed-forward сеть (FFN): каждый токен обрабатывает то, что успел собрать.
  • Residual-связь: старую информацию не выбрасываем.
  • Нормализация: держим числа в стабильном диапазоне.

Что подаётся на вход блока

1. Текст

На входе — обычное английское предложение. По пути слова не превращаются в другие слова. На каждом шаге меняется векторное представление каждого токена.

2. Токены

Предложение нарезается на небольшие единицы — токены. Часто это целые слова или их части: «The», «cat», «sat», «on», «the», «mat».

3. Эмбеддинги

Каждый токен становится списком чисел — эмбеддингом, своего рода грубым первым отпечатком смысла слова. На этом этапе у «cat» и «mat» уже разные отпечатки, но ни один из них ничего не знает об остальном предложении. Каждый ID токена превращается в вектор:

                          The → [vector]
                          cat → [vector]
                          sat → [vector]
                          on → [vector]
                          the → [vector]
                          mat → [vector]

4. Позиция

Порядок важен, поэтому каждый токен получает ещё и метку своего места: первый, второй и так далее. Теперь «cat» знает, что он второе слово, а «mat» — что последнее. Отпечатки становятся чуть богаче.

5. Self-attention

Здесь трансформер для каждого токена выясняет, какие другие токены в предложении для него важны. Модель позволяет токенам смотреть друг на друга и может выучить сильные связи: например, что «The» относится к «cat», а «sat» описывает действие, в котором участвует «cat». Каждый токен смотрит на все остальные и решает, сколько внимания уделить каждому. «Sat» сильно опирается на «cat» — того, кто сидит, — и на «mat» — место. Артикль «the» перед «mat» в основном смотрит на «mat».

После attention каждый токен впитал полезную информацию из остального предложения. У «cat» появляется смутное ощущение, что сидит именно он, а у «mat» — намёк, что на нём что-то сидит. Иначе говоря:

  • cat становится «cat плюс информация о его контексте»
  • sat становится «sat плюс информация о том, кто сидит»
  • mat становится «mat плюс информация о его связи с 'on'»

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

6. Residual-связь

Исходную информацию о токене терять нельзя, поэтому результат attention к ней прибавляется. Для «cat»:

                           Original: "cat"
                             +Attention
              information: "cat is related to The and sat"
              Updated  : "cat + its contextual information"

7. Нормализация

Затем представления нормализуются:

                          Updated representations
                                  ↓
                               Normalize
                                  ↓
                          Well-scaled representations

Концептуально для всего предложения:

                            cat + context
                                  ↓
                       normalized cat + context


                           sat + context
                                  ↓
                        normalized sat + context

Что изменилось? Смысл на этом шаге меняться не должен. Числа просто масштабируются, чтобы сеть была стабильнее и легче обучалась.

8. Feed-forward сеть

Дальше каждый токен работает со своим обновлённым представлением. Небольшая нейросеть, feed-forward сеть, отдельно разбирает числа каждого токена и снова их преобразует: уточняет смысл, смешивает идеи или готовит вектор к следующему слою. «Cat» может выйти отсюда с более чётким ощущением, что это сидящее животное, а «mat» — что это поверхность. Эта работа отличается от работы attention:

          In Attention "Which other tokens are useful?"
In FNN "Now that I have this information, how should I transform it?"

9. Вторая residual-связь

Предыдущая информация снова сохраняется — та же идея применяется к каждому токену:

                          Before FFN:

                        "cat + context"

                               +

                          FFN output:

                      "refined representation"

                               ↓

                          After residual:

                "cat + context + refined information"

Что изменилось:

                    Previous representation
                            +
                    FFN's new information
                            ↓
                    Richer representation

10. Вторая нормализация

Обновлённые представления ещё раз нормализуются для стабильности:

                    Richer representations
                            ↓
                          Norm
                            ↓
                    Stable richer representations

11. Более богатое представление

То, что начиналось как грубые отпечатки слов, теперь стало гораздо более полным набором чисел. Каждый токен хранит свой смысл, свою позицию и связь с другими словами. Это представление идёт в следующий слой трансформера или на финальный выход, где цикл повторяется и «понимание» моделью фразы «The cat sat on the mat» становится глубже.

До блока каждый токен содержит в основном информацию о самом себе:

          The → mostly information about "The"

          cat → mostly information about "cat"

          sat → mostly information about "sat"

          on  → mostly information about "on"

          the → mostly information about "the"

          mat → mostly information about "mat"

После блока:

                            The
                             ↓
                 "The + information from its context"

                            cat
                             ↓
                 "cat + information about its relationships"

                            sat
                             ↓
                 "sat + information about cat and the sentence"

                            on
                             ↓
                 "on + relationship information"

                            the
                             ↓
                    "the + contextual information"

                            mat
                             ↓
              "mat + information about its relationship with on"

                             .
                             ↓
                   ". + sentence-ending context"

Затем идёт следующий блок трансформера:

        Block 1
     ──────────────

The → contextual representation
cat → contextual representation
sat → contextual representation
on  → contextual representation
the → contextual representation
mat → contextual representation


             ↓


          Block 2
      ──────────────

The → more refined representation
cat → more refined representation
sat → more refined representation
on  → more refined representation
the → more refined representation
mat → more refined representation

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

Что в итоге

Трансформер не понимает язык так, как человек. Он берёт предложение вроде «The cat sat on the mat», делит его на токены и превращает каждый в числа с добавленной информацией о позиции. Attention позволяет каждому слову собрать контекст от остальных, residual-связи и нормализация смешивают и уточняют числа, а feed-forward сеть преобразует их дальше. После многих повторений у модели складывается гораздо более богатая числовая картина предложения, в которой незаметно закодированы смысл, связи и порядок. Именно она позволяет большим языковым моделям так гладко продолжать текст, отвечать на вопросы и предлагать новые идеи.