- BrainTools - https://www.braintools.ru -
Всё началось довольно тихо — без шоу-программ и футуристичных роботов на сцене. В 2017-м исследователи Google опубликовали статью с до смешного скромным названием: Attention is All You Need. Тогда мало кто понял, что именно в этот момент случилось новое «деление эпох»: теперь у ИИ было чёткое «до» и «после».
Сегодня почти весь генеративный ИИ — от ChatGPT до Midjourney, от Gemini до Claude — внутри себя основан на трансформерах. А фундамент всей этой революции оказался… ну прямо скажем, совсем не похожим на научную фантастику. Просто скалярное произведение двух векторов — действие из школьной линейной алгебры
Ни новая экзотическая архитектура памяти [1]. Ни сверхсложная логика [2] вывода. Даже не попытка повторить человеческий мозг [3].
Просто умножили числа друг на друга и сложили. И всё изменилось.
Но чтобы понять, почему такая простая вещь взорвала всю индустрию, надо вспомнить — во что нейросети упирались раньше.
Ещё недавно обработка текста в машинах очень напоминала чтение по-старинке: слово за словом, слева направо, будто кто-то водил пальцем по книге. Главные герои здесь были RNN — рекуррентные нейронные сети.
На бумаге они выглядели почти идеально: каждое новое слово обновляло своего рода «внутреннюю память» — проглотил одно слово, подвинулся вперёд вместе с новым состоянием. Получалась цепочка памяти:
первое слово влияет на второе,
второе тащит за собой третье,
и так почти до конца предложения.
Ключевое слово тут — почти. Рекуррентные сети очень быстро забывали, о чём речь была много слов назад. Нарисуйте себе цепочку из ведёрок воды: доливаешь впереди — постепенно вытекает позади. Сеть буквально теряла начало длинных предложений (математики [5] скажут: градиенты исчезали). LSTM и GRU пытались починить это место, но получился скорее костыль: подробно помнить они стали чуть дольше, но проблема с корнями осталась.
Параллельно в NLP подоспели сверточные сети (CNN), которые пришли из распознавания картинок. Они работали похитрее: вместо того чтобы читать текст по одной букве или слову за раз, CNN сканировали сразу несколько соседних словечек. Эдакие шаблоны вроде:
прилагательное + существительное;
короткие выражения вроде «наконец-то приехал».
Ничего себе! Но была загвоздка: их взгляд был слишком узким — CNN видели только маленькие фрагменты текста вокруг каждого слова. Чтобы понять связь между словами «я» в начале строки и «тебя» в конце абзаца приходилось городить сложную лестницу слоев… а это грузило систему так, что контекст всё равно рвался на части.
Вывод назревал сам собой: проблема не в том, что сеть слишком маленькая или глубокая; дело именно в том КАК она читает последовательности.
Нужен был другой подход.
И вот трансформеры сорвали покровы! Вместо того чтобы передавать информацию по цепочке (как записку через весь класс), каждому слову разрешили оглянуться и посмотреть сразу на все остальные слова предложения или даже документа. Эдакий общий раунд знакомств за секунду!
Это и есть тот самый Attention — внимание [7] слегка переосмысленное для компьютеров.
Чтобы его описать проще всего представить аукцион:
Каждое слово одновременно:
задаёт вопрос («что мне нужно?»)
рассказывает про себя («кто я такой внутри этого текста?»)
предлагает своё содержание (приглашает других узнать о себе).
Три составляющих — Query (ищу!), Key (я такой-то!), Value (вот моя информация!).
Например:
Глагол может шепнуть всему тексту: «Я ищу свой объект действия!»
Или существительное заявит о себе: «Я стою тут во втором падеже»
Задача сводится к простому вопросу: какие слова реально должны друг для друга быть важными прямо здесь и сейчас?
Вот тут-то на сцену выходит та самая операция из школьной программы…
Центральная операция attention выглядит так:
На первый взгляд — ничего особенного.
Скалярное произведение двух векторов показывает, как сильно они «смотрят» в одну сторону. Простыми словами для NLP:
Чем смысл у двух слов ближе — тем больше их числовые представления совпадают по направлению;
Чем дальше друг другу по смыслу — тем меньше пересечения;
Связанные токены мгновенно находят друг друга через высокое значение произведения.
Модель буквально спрашивает: совпадает ли мой запрос с твоим описанием? Если да — внимание возрастает лет до небес!
Удивительно простая идея работает так мощно именно потому что язык полон таких скрытых перекрёстных связей.
Могли бы брать L2-норму…
На первый взгляд ведь что логичнее: чем более похожи слова — тем ближе точки-векторы друг к другу в пространстве! Почему же attention выбрал скалярное произведение?
Во-первых — скорость! Посчитать расстояние между двумя точками требует квадратов да ещё корень извлечь… а видеокарты гораздо быстрее перемножают да складывают числа миллиардами раз в секунду (это как говорить c GPU на его родном языке).
Во-вторых — само поведение [8] attention’а сильно от выбора функции близости: нам нужно не просто заметить связи («близко-далеко»), а часто прям-таки выделить единственный нужный кусок текста с почти безумной уверенностью! Скаляры могут при правильном обучении [9] давать ОГРОМНЫЙ разброс значений — идеальное топливо для резкой фокусировки внимания.
Но любая магия имеет свою цену
Появилась неожиданная проблема. Почти физическая — если размерность ваших векторов растёт (а мы ж любим большие пространства признаков!), то дисперсия их произведений начинает разноситься всё сильнее («выстреливает», сказали бы инженеры). Плюсуйте сюда Softmax…
Плюсуйте сюда Softmax…

А Softmax — штука опасная: взял набор чисел , превратил их чисто экспонентой во вполне реальные вероятности (пусть вас не смущает простота операции). Стоит одному числу хоть чуть-чуть перекочевать наверх остальных — всё превращается почти в 1/0; модель вдруг убеждается окончательно сама в себе… и перестаёт учиться дальше вообще.

Лекарство? Делить результат attention’а на корень из размерности пространства признаков. Так можно держать модель от перегрева и бодро продолжать тренироваться без закипания мозговых батарей!
Но в реальной жизни редко бывает однозначность. Одно предложение… десятки разных смысловых связей! Вот возьмите фразу:
«Кот поймал мышь, потому что он был голоден».
Слово «он» связано одновременно
с котом,
со смыслом голода,
с грамматическим строем предложения…
Одна схема внимания тут точно не потянет! Поэтому у трансформеров множество «голов». Каждая учится ловить свой тип связи:
одна отвечает за синтаксис,
другая ловит семантику,
третья замечает эмоции [11] или дальние закономерности,
четвёртая может выискивать редкие зависимости далеко через текст…
А потом результат каждой головы аккуратно складывается обратно в единую картину мира!
Есть правда обратная сторона всей этой крутизны… Внимание приходится сравнивать каждый токен с каждым другим токеном (всё равно что каждому гостю вечера поговорить хотя бы пару минут с каждым другим); двадцать друзей — 400 разговоров; тысяча токенов? Миллион сравнений!
GPU всё ещё мощны… но не бесконечно мощны! Именно отсюда нескончаемые поиски новых трюков типа FlashAttention или sparse-attention — чтобы умудриться смотреть далеко вперёд без катастрофического перегруза памяти…
Самое удивительное во всей истории attention вот что: индустрия годами пыталась придумывать суперинтеллектуальные схемы и хитрые приёмники памяти или управляемые ячейки данных… а победила простейшая операция из школьной алгебры (которая идеально ложится на цифровые нутра современных видеокарт).
Скалярное произведение стало практически мостом между математикой смысла языка И мебелью современных вычислений! Благодаря этому техника наконец начала видеть структуру текста сразу целиком — как будто взглянуть сверху одним махом вместо того чтобы идти вслепую шаг за шагом…
Вот такой вот переворот произошёл почти незаметно.
Спасибо всем дочитавшим до конца :)
Новости, обзоры продуктов и конкурсы от команды [16]Timeweb.Cloud [17] — в нашем Telegram-канале [16] ↩
Автор: ksuuunyyaa
Источник [18]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/32361
URLs in this post:
[1] памяти: http://www.braintools.ru/article/4140
[2] логика: http://www.braintools.ru/article/7640
[3] мозг: http://www.braintools.ru/parts-of-the-brain
[4] Источник: https://ailabpage.com/2019/01/08/deep-learning-introduction-to-recurrent-neural-networks/
[5] математики: http://www.braintools.ru/article/7620
[6] Источник: https://www.unite.ai/ru/what-are-convolutional-neural-networks/
[7] внимание: http://www.braintools.ru/article/7595
[8] поведение: http://www.braintools.ru/article/9372
[9] обучении: http://www.braintools.ru/article/5125
[10] Источник: https://www.singlestore.com/blog/a-guide-to-softmax-activation-function/
[11] эмоции: http://www.braintools.ru/article/9540
[12] Кинопоиск всё-таки отключил статистику по фильмам — я создал свою на основе Letterboxd и TMDB: https://habr.com/ru/companies/timeweb/articles/1049716/
[13] Делаем автоматизацию для Spotify, которая создаёт плейлисты из избранного: https://habr.com/ru/companies/timeweb/articles/1045462/
[14] Лучший промпт для LLM. Бессмысленный поиск: https://habr.com/ru/companies/timeweb/articles/1014162/
[15] Перейти: https://timeweb.cloud/?utm_source=habr&utm_medium=banner&utm_campaign=promo
[16] Новости, обзоры продуктов и конкурсы от команды : https://t.me/timewebru
[17] Timeweb.Cloud: http://Timeweb.Cloud
[18] Источник: https://habr.com/ru/companies/timeweb/articles/1033070/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1033070
Нажмите здесь для печати.