Одна идея, опубликованная в 2017 году, стоит за всеми современными моделями — текстовыми, графическими, звуковыми. Разберём её без формул.
Предложение: «Ключ на тринадцать лежал рядом с платой, и он был нужен, чтобы открутить радиатор». Что такое «он»?
Чтобы понять, сеть должна связать «он» с «ключ» через восемь слов. Старые архитектуры читали последовательно, слово за словом, и к концу предложения начало уже размывалось. Чем дальше связь, тем хуже.
А что если не читать подряд, а дать каждому слову возможность посмотреть сразу на все остальные и самому решить, какие из них для него важны? Расстояние перестаёт иметь значение: первое слово и сотое равно доступны.
Механизм строится на том, что из вектора каждого слова получают три разных вектора. Названия странные, но смысл простой.
| Роль | Что означает | Аналогия |
|---|---|---|
| Запрос | Что это слово ищет вокруг себя | Поисковая строка |
| Ключ | Чем это слово может быть полезно другим | Заголовок в каталоге |
| Значение | Что оно передаст, если его выберут | Содержимое карточки |
Все три получаются умножением вектора слова на три обучаемые матрицы. То есть чем слово интересуется и чем оно полезно — это тоже выученное, а не заданное.
1. Берём ЗАПРОС слова «он» 2. Сравниваем его с КЛЮЧОМ каждого слова предложения (скалярное произведение — мера совпадения направлений) ключ ████████████ 0.82 плата ████ 0.21 радиатор ███ 0.15 лежал █ 0.04 ... 3. Пропускаем оценки через softmax → веса внимания, в сумме дающие единицу 4. Складываем ЗНАЧЕНИЯ всех слов с этими весами 5. Результат: новый вектор «он», в который в основном подмешано слово «ключ»
Из главы 06 помните задачу: у слова должен быть разный вектор в разном окружении. Именно это сейчас и произошло. «Он» вобрало в себя «ключ» — и дальше по сети идёт уже не абстрактное местоимение, а «он, который ключ».
Одного набора запросов и ключей мало: в языке одновременно существуют разные типы связей. Поэтому механизм запускают параллельно несколько раз с разными матрицами — это головы внимания.
| Голова | Что может отслеживать |
|---|---|
| 1 | К чему относится местоимение |
| 2 | Кто выполняет действие |
| 3 | Согласование по роду и числу |
| 4 | Ближайший предлог |
| ... | Десятки других, многие без человеческого названия |
Такие аккуратные роли — упрощение. Исследователи действительно находят головы с понятными функциями, но большинство занимается чем-то, что не сводится к named-понятию. Не ждите, что каждая голова окажется объяснимой.
Обратите внимание на неприятность: механизм смотрит на все слова одинаково, без учёта позиции. «Собака укусила человека» и «человека укусила собака» для него неразличимы.
Решение: к вектору каждого слова прибавляется информация о его позиции. Есть разные способы кодировать позицию, и в современных моделях используется довольно хитрый — но смысл один: сеть должна знать, где слово стоит.
| Свойство | Следствие |
|---|---|
| Все слова обрабатываются одновременно | Задача раскладывается на тысячи видеоядер. Обучение в сотни раз быстрее |
| Расстояние не мешает | Связь между первым и тысячным словом такая же прямая |
| Механизм универсален | Работает не только со словами — с кусками изображений, звука, чего угодно |
| Хорошо масштабируется | Больше данных и параметров — стабильно лучше результат |
Предыдущие архитектуры были последовательными по своей природе: чтобы обработать десятое слово, нужно закончить с девятым. Внимание сняло это ограничение и тем самым позволило использовать видеокарты на полную. Без этого свойства моделей на миллиарды параметров просто не существовало бы.
Каждое слово сравнивается с каждым. Удвоили длину текста — вчетверо больше вычислений и памяти. Отсюда прямое следствие, которое вы видите на практике: длинный контекст стоит дорого, съедает видеопамять и замедляет всё. Когда в главе 08 книги «Агент ИИ» речь шла про расход памяти на контекст — вот откуда он берётся.
С этим борются: придуманы способы считать внимание экономнее по памяти и приближённо для очень длинных текстов. Но квадратичная природа никуда не делась, и длинный контекст остаётся дорогим.
Соберём из внимания и всего предыдущего полную архитектуру — ту самую, на которой работает всё, что вы запускаете.
Бесплатная книга · tariel.ge · версии инструментов и команды проверяйте в документации проектов
Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.