Перейти к содержанию
Innovialabs

Архитектура трансформер: механизм внимания простыми словами

Основы3 мин

Коротко

Трансформер обрабатывает весь текст сразу и для каждого слова через механизм внимания решает, на какие другие слова опираться; это быстрее обучается и лучше держит контекст, чем RNN.

Коротко о главном

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

Пример: «Кошка не запрыгнула на стол, потому что она устала». Чтобы понять, что «она» — это кошка, а не стол, модель должна связать эти слова. Внимание делает такую связь напрямую, сколько бы слов ни было между ними.

Как работает self-attention

Текст сначала режется на токены (слова или их части), каждый превращается в вектор — набор чисел, описывающий смысл. Затем для каждого токена вычисляются три вектора:

  • Query (запрос) — «что я ищу?»
  • Key (ключ) — «что я могу предложить?»
  • Value (значение) — «какую информацию я передам».

Аналогия с библиотекой: вы приходите с запросом, сравниваете его с ярлыками на полках (ключами) и забираете содержимое (значения) тех полок, что подошли лучше всего — смешивая их по степени совпадения.

"она" --query--> сравнение с key каждого слова
                 Кошка  не  запрыгнула  на  стол  ...  устала
вес внимания:    высокий низк. низкий  низк. средн.    средний
результат: новое представление "она" = смесь value с этими весами

Таких «голов внимания» несколько, и каждая учится замечать своё: одна — грамматические связи, другая — смысловые и так далее. Это называется multi-head attention. Слоёв внимания много, они идут один за другим, и понимание текста становится глубже от слоя к слою.

Поскольку внимание само по себе не знает порядка слов, к векторам добавляется позиционная информация — сведения о том, где стоит токен.

Энкодер и декодер

Исходный трансформер состоял из двух частей:

ЧастьЧто делаетПримеры использования
ЭнкодерЧитает весь текст и строит его понимание; каждое слово видит все остальныеКлассификация, поиск, эмбеддинги
ДекодерГенерирует текст по одному токену; видит только предыдущие токеныЧат-боты, генерация текста и кода
Энкодер + декодерПонимает вход и генерирует выходМашинный перевод, суммаризация

Большинство популярных чат-моделей — это только декодер: они раз за разом предсказывают следующий токен, опираясь на всё, что уже написано.

Почему трансформеры вытеснили RNN

RNN (рекуррентные сети) читали текст по одному слову, передавая «память» от шага к шагу. У этого были проблемы:

  • Медленное обучение. Шаги шли строго последовательно, их нельзя было эффективно распараллелить на GPU.
  • Короткая память. Информация из начала длинного текста постепенно терялась.

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

Цена — внимание сравнивает каждый токен с каждым, поэтому затраты быстро растут с длиной текста. Поэтому у моделей есть ограничение контекстного окна, а исследователи ищут более экономные варианты внимания.

Что это даёт на практике

  • Понятно, почему у модели есть лимит контекста и почему длинные запросы дороже.
  • Понятно, почему модель «помнит» только то, что есть в текущем контексте: собственной памяти между запросами у неё нет.
  • Для поиска по документам часто используют модели-энкодеры (эмбеддинги), а для ответов — декодеры. Так устроен RAG.

Частые вопросы

Нет. Для работы с моделями через API достаточно понимать токены, контекстное окно и то, что модель предсказывает следующий токен. Математика нужна при разработке самих моделей.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.