1. От рекуррентных сетей к вниманию: Проблема долгосрочной памяти
В первой части нашего курса мы выяснили, что большие языковые модели (LLM) по своей сути занимаются предсказанием следующего слова. Однако для того, чтобы это предсказание было точным, модель должна глубоко понимать контекст всего сказанного ранее. Если вы читаете детектив, концовка имеет смысл только в том случае, если вы помните улики из первой главы.
До 2017 года нейросети читали текст примерно так же, как человек с тяжелой формой амнезии: они помнили последние несколько слов, но безнадежно забывали то, что было в начале абзаца. Этот фундаментальный барьер не позволял создавать по-настоящему умные языковые модели. Решение этой проблемы привело к созданию архитектуры Transformer — двигателя всех современных LLM.
Эпоха до Трансформеров: Рекуррентные нейронные сети
Чтобы понять гениальность Трансформеров, нужно сначала разобраться, как работали их предшественники — рекуррентные нейронные сети (RNN, Recurrent Neural Networks).
Долгое время RNN были золотым стандартом для работы с последовательностями: текстом, речью, временными рядами. Их главная особенность заключалась в последовательной обработке данных. RNN читала текст строго слово за словом, слева направо.
Представьте, что вы читаете длинную книгу, но вам запрещено возвращаться к предыдущим страницам. Чтобы не потерять нить повествования, после каждой прочитанной страницы вы пишете краткую заметку (резюме) на стикере и берете этот стикер с собой на следующую страницу. Прочитав новую страницу, вы объединяете информацию из нее с вашим старым стикером и пишете новый стикер.
В архитектуре RNN этот «стикер» называется скрытым состоянием (hidden state).
Математически шаг работы RNN можно описать следующей формулой:
Где:
Каждый раз, когда RNN читает новое слово, она обновляет свое скрытое состояние. К концу предложения это скрытое состояние должно, в теории, содержать смысл всего прочитанного текста.
Проблема долгосрочной памяти и «узкое горлышко»
Логика RNN звучит разумно, но на практике она столкнулась с фатальной проблемой, известной как затухание градиента (vanishing gradient).
Вернемся к аналогии со стикером. Размер вашего стикера строго ограничен. Когда вы читаете первое предложение, вы легко умещаете его смысл на бумажке. Но когда вы доходите до сотой страницы, вам приходится сжимать информацию всё сильнее и сильнее. Вы начинаете выкидывать детали, оставляя только самую суть. К двухсотой странице вы можете забыть имя второстепенного персонажа, который внезапно становится главным злодеем.
В нейросетях этот эффект называется информационным узким горлышком (information bottleneck). Вектор скрытого состояния имеет фиксированный размер (например, массив из 512 чисел). Нейросеть вынуждена «впихивать» смысл текста любой длины — будь то три слова или три тысячи слов — в эти 512 чисел.
!Схема проблемы "узкого горлышка" в классических нейросетях
Рассмотрим классический пример, на котором ломались старые модели: > «Я вырос во Франции, в маленьком живописном городке на юге, где каждое утро пахло свежими круассанами... [еще 50 слов описания природы и архитектуры] ... поэтому я свободно говорю по-_____»
Любой человек мгновенно вставит слово «французски». Мы легко связываем слово «Франции» в начале текста с пропуском в конце. Но для RNN слово «Франции» осталось на стикере 50 шагов назад. За это время стикер перезаписывался 50 раз, наполняясь информацией о круассанах, природе и архитектуре. Сигнал от слова «Франции» затух, растворился в шуме новых данных. Модель с высокой вероятностью предскажет неверное слово.
Попытки ремонта: LSTM и GRU
Инженеры пытались спасти рекуррентные сети. Были созданы усложненные версии RNN, такие как LSTM (Long Short-Term Memory — долгая краткосрочная память) и GRU (Gated Recurrent Unit).
Они добавили в архитектуру математические «вентили» (gates). Эти вентили работали как умные фильтры: они могли принимать решение: «Слово 'круассан' — это просто декорация, не будем записывать его на стикер, а вот слово 'Франция' — это важно, сохраним его в отдельный сейф памяти».
LSTM действительно улучшили ситуацию. Модели смогли помнить контекст на протяжении 100–200 слов. Но фундаментальные проблемы остались:
Индустрии требовался радикально новый подход.
Сдвиг парадигмы: Механизм внимания
В 2017 году исследователи из Google опубликовали статью с провокационным названием «Attention Is All You Need» (Внимание — это всё, что вам нужно). Они предложили полностью отказаться от рекуррентных сетей и стикеров с краткой выжимкой.
Вместо того чтобы пытаться запомнить весь прошлый текст в одном векторе, почему бы не дать модели доступ ко всем предыдущим словам одновременно, позволив ей самой решать, на какие слова обращать внимание прямо сейчас?
Этот подход получил название Механизм внутреннего внимания (Self-Attention).
Представьте детектива, расследующего сложное дело. Подход RNN — это чтение линейного отчета, где каждая новая страница заставляет забывать предыдущую. Подход Self-Attention — это пробковая доска на стене, к которой приколоты все улики, фотографии и показания свидетелей. Детектив стоит перед доской и протягивает красные нити между связанными фактами. Он видит всю картину целиком и одновременно.
!Визуализация проблемы долгосрочной памяти и механизма внимания
В механизме внимания каждое слово в предложении напрямую связывается с каждым другим словом. Расстояние между словами больше не имеет значения. Слово на 1-й позиции и слово на 1000-й позиции находятся на расстоянии всего одного математического шага друг от друга.
Как слова понимают свой контекст
Возьмем слово «замок». Вне контекста это просто набор букв.
Механизм Self-Attention позволяет слову «замок» посмотреть на своих соседей, чтобы понять свою суть. В первом случае слово «замок» обратит сильное внимание на слова «старый», «возвышался» и «горой». Во втором случае — на «дверной» и «заклинило».
В результате работы механизма внимания изначальное «пустое» слово обогащается контекстом. Оно превращается в сложный математический вектор, который содержит в себе не только словарное значение, но и смысл всего окружающего предложения.
Математика внимания: Query, Key, Value
Как именно нейросеть вычисляет, какие слова важны друг для друга? Для этого создатели Трансформеров позаимствовали концепцию из систем баз данных: Запрос (Query), Ключ (Key) и Значение (Value).
Чтобы понять эту концепцию, представим поход в библиотеку:
В механизме Self-Attention каждое слово в тексте одновременно играет все три роли. Для каждого слова нейросеть создает три вектора (массива чисел): вектор , вектор и вектор .
Давайте разберем процесс пошагово на примере фразы: «Умная собака лает».
Шаг 1. Формирование запросов и ключей Мы хотим понять контекст слова «лает». Слово «лает» формирует свой Запрос (): «Я глагол, обозначающий звук животного. Кто здесь может издавать этот звук?»
Остальные слова выставляют свои Ключи ():
Шаг 2. Вычисление оценок внимания (Attention Scores) Нейросеть берет Запрос слова «лает» и математически сравнивает его с Ключами всех слов в предложении (включая само себя). Сравнение происходит с помощью операции скалярного произведения векторов.
Если векторы похожи (направлены в одну сторону), результат умножения будет большим числом. Если не похожи — маленьким или отрицательным.
Допустим, мы получили следующие сырые оценки для слова «лает»:
Шаг 3. Нормализация (Softmax) Сырые числа неудобны для работы. Нейросеть пропускает их через функцию Softmax, которая превращает их в проценты (веса), сумма которых всегда равна 100% (или 1.0).
После Softmax веса внимания для слова «лает» могут выглядеть так:
Шаг 4. Сборка итогового значения Теперь мы берем векторы Значений () всех слов и умножаем их на полученные проценты.
Итоговый контекстный вектор для слова «лает» = (0.01 × ) + (0.85 × ) + (0.14 × )
Слово «лает» впитало в себя 85% смысла слова «собака». Теперь нейросеть точно знает, кто именно издает звук в этом контексте.
Главная формула Трансформеров
Весь этот элегантный процесс описывается одной из самых важных формул в современном искусственном интеллекте:
Разберем её элементы:
Триумф параллелизма
Механизм внимания решил проблему долгосрочной памяти: расстояние между словами больше не приводило к потере информации. Но у Трансформеров оказалось еще одно, возможно, даже более важное преимущество.
Посмотрите на формулу внимания еще раз. В ней нет зависимости от времени или предыдущего состояния .
В RNN мы не могли обработать слово №50, пока не обработали слово №49. В Трансформерах матричное умножение вычисляет связи между всеми словами одновременно.
Если у вас есть предложение из 1000 слов, Трансформер не читает его слово за словом. Он загружает все 1000 слов в память видеокарты и за одну гигантскую математическую операцию вычисляет миллион связей (1000 × 1000) между ними.
Это свойство называется параллелизацией вычислений. Именно оно позволило исследователям начать обучать модели на терабайтах текста. То, на что у RNN ушли бы десятилетия, Трансформеры на кластерах GPU обрабатывают за недели.
Переход от рекуррентных сетей к механизму внимания можно сравнить с переходом от конвейерной сборки, где каждый рабочий ждет деталь от предыдущего, к магии, где миллион рабочих одновременно собирают весь автомобиль за долю секунды. Этот архитектурный прорыв снял ограничения на размер контекста и скорость обучения, открыв двери в эру Больших Языковых Моделей.