Вот очень простое объяснение для тех, кто не хочет вдаваться в сложную математику, но и не готов принимать эту ключевую технологию как магию, которая просто работает. Конечно, никакого волшебства тут и нет — идея на самом деле довольно проста.
Как вы, вероятно, знаете, LLM — это всего лишь статистический предсказатель следующего слова в предложении на основе предыдущих. По крайней мере, такое предсказание и является целью обучения, хотя возникающие в процессе способности модели выходят далеко за рамки простого предсказания токенов.
Например, если LLM видит: «The dog sits on the …», она продолжит: «… floor».
Но если подумать: последнее слово в этом предложении — «the». Как модель догадалась, что следующее слово должно быть «floor», только по слову «the»?
Очень просто. Вы тоже это делаете постоянно. Вот пример:

Это всего лишь один кадр из фильма. На первый взгляд — просто изображение 800×600 пикселей. На нём — человек в чёрном и другой, висящий на балке. Ничего особенного.
Но если вы знаете, что это за фильм, то в одном этом кадре для вас уже содержится весь смысл и весь сюжет фильма, не так ли?
И только по этому кадру вы можете более-менее точно (в зависимости от того, насколько вы фанат) предсказать (сгенерировать) события, которые происходят дальше. Конечно, если вы не очень хорошо знаете фильм, вы можете и нагаллюцинировать лишнего.
То же самое и с LLM: в слове «the» уже содержится весь необходимый смысл предыдущего текста, закодированный во внутреннем векторном представлении (или, говоря технически, — это полный контекст, сформированный через механизм внимания).
Именно это является ключом к пониманию архитектуры трансформеров. До появления трансформеров нейронные сети обрабатывали слова последовательно, одно за другим, забывая то, что было раньше в предложении. Это как пытаться понять фильм, запоминая только текущую сцену, или читать книгу, забывая предыдущую страницу. Рекуррентные нейронные сети (RNN) пытались это исправить, передавая информацию вперёд, но их память была как у золотой рыбки — при слишком длинных предложениях всё рушилось.
Итак, трансформер имеет несколько последовательных слоев логики:
Векторное кодирование
Представьте себе: слова поступают на вход трансформеру, но они из разных языков.
Первый, кого они встречают, — это слой входных эмбеддингов.
Слой эмбеддингов говорит: «Без проблем! Я переведу всё в универсальный язык — векторы».
Вектор — это массив чисел, получается что-то вроде:
«Hello» → [0.2, -0.6, 0.1, 0.8...]
Позиционное кодирование
Но тут возникает проблема. Наши слова теперь в виде векторов, но они потеряли своё положение в предложении!
Предложение «Собака укусила человека» значит совсем не то же самое, что «Человек укусил собаку», а векторные представления слов ничего не знают о порядке слов.
Следующий, кого встречают слова, — это механизм позиционного кодирования.
Он добавляет информацию о позиции слова в предложении к его вектору, и вектор становится, например:
«Hello» → [0.21, -0.62, 0.13, 0.81…]
Как именно он добавляет позицию — можете посмотреть сами, по сути это просто базовая математика с использованием синусов и косинусов (а вы-то думали, что тригонометрия после школы вам больше никогда не пригодится?).
Механизм внимания (Attention)
Представьте, что вы на вечеринке и пытаетесь понять, о чём идёт разговор. Кто-то говорит: «Это было ужасно», и вы инстинктивно ищете контекст — о чём это «это»? Может, они до этого говорили о вчерашнем фильме?
А может, речь о том, как вы только что неудачно попытались подкатить к девушке у бара?
Теперь понятно, что значение слова «это» может быть очень разным в зависимости от контекста и нести в себе очень много контекста.
Вот этим и занимается механизм внимания — он создаёт связи между словами в предложении, превращая их не просто в набор слов, а в слова со смыслом, как то самое «the» из предыдущего примера.
В трансформере реализованоо Многоголовое внимание (Multi-head attention) — это как будто у вас несколько голов. Каждая «голова» обращает внимание на разные аспекты отношений между словами:
-
Голова 1 может отслеживать связи между подлежащими и сказуемыми
-
Голова 2 может следить за местоимениями и тем, к чему они относятся
-
Голова 3 может сосредоточиться на парах прилагательное + существительное
А затем все головы объединяют свои находки, чтобы получить общее, глубокое понимание смысла.
Вот тут сложная схема, иллюстрирующая всё вышесказанное, которую, честно говоря, не обязательно понимать.
Смысл в том, что механизм многоголового внимания внутри архитектуры трансформеров позволяет модели одновременно отслеживать различные типы связей между словами.

Feed forward
После всего этого внимания наш трансформер должен обработать полученную информацию. Следующим этапом являются полносвязные нейронные сети (feed-forward networks). Они похожи на глубоких мыслителей, которые обрабатывают информацию после того, как собрали все сплетни.
«А зачем нам этот этап?» — можете спросить вы. Дело в том, что механизм внимания отлично собирает информацию, но не так хорош в её преобразовании в смысл. Нейронные сети дают модели возможность анализировать полученную информацию и извлекать закономерности.
Здесь все найденные аспекты смысла сохраняются в эмбеддинге токена:
«Hello» → [0.2145, -0.6239, 0.1314, 0.8169…]
По сути, получаются координаты в векторном пространстве для данной концепции, которая представляет полный смысл слова в его контексте, включая все найденные аспекты (цвет, форма и тд). Можно подумать, что если аспектов много, то пространство должно иметь очень много измерений. И вы окажетесь правы: обычно оно содержит порядка 12 тысяч измерений (кстати, пытаться представить это зрительно — тщетная затея, наш мозг не приспособлен для работы с более чем тремя измерениями).
Layer Normalization — плагин Winamp для ИИ
Дальше происходит нормализация. Нормализация слоев подобна нормализации громкости в вашем плейлисте Spotify: разные песни могут иметь разный уровень громкости, а вы хотите, чтобы они были примерно на одном уровне. Она стандартизирует выходные значения, чтобы ни один нейрон в сети не «кричал» слишком громко и не доминировал в разговоре.
Почему трансформер — это революция?
До появления трансформеров обучение нейросетей для языковых задач было примерно как пытаться научить собаку читать — медленно, мучительно и с весьма ограниченными результатами.
Трансформеры полностью изменили правила игры по нескольким причинам:
Параллелизация:
В отличие от рекуррентных нейросетей (RNN), которые обрабатывают слова по одному, трансформеры способны обрабатывать всё предложение сразу.
Дальние зависимости:
Благодаря механизму внимания трансформеры могут устанавливать связи между словами, даже если они находятся далеко друг от друга в предложении.
Например: «Мужчина, который носил красную шляпу, которую его сестра купила в магазине, закрывшемся в прошлом году, — счастлив».
Трансформер легко поймёт связь между словами «мужчина» и «счастлив», несмотря на длинную портянку между ними.
Предобучение:
Трансформеры можно предварительно обучать на огромных объемах текста, а затем дообучать под конкретные задачи. Это как тренировать универсального спортсмена, который затем легко переучивается на любую конкретную дисциплину.
Оригинальный трансформер был довольно скромным по размеру, но модели вроде GPT-4 уже содержат миллиарды параметров. Это как если бы маленький семейный бизнес за пару лет превратился в международную корпорацию.
Мантра последних лет: «Чем больше модель — тем лучше она работает», хотя это и вызывает вопросы по поводу затрат вычислительных ресурсов и влияния на экологию. Обучение таких гигантов требует столько электроэнергии, сколько нужно для питания небольшого города. Из-за этого некоторые исследователи в шутку расшифровывают AI как «Always Inefficient».
Дополнительное чтение: Attention Is All You Need — оригинальная статья об архитектуре трансформера.
Я из Рафт. Мой телеграм-канал.
Пишете ваши вопросы в комментариях.
Всем добра!
Автор: Squirrelfm