В предыдущем разделе мы превратили текст в последовательность чисел - токенов. Но у этой победы есть обратная сторона: сами по себе эти числа [3245, 67, 8902, ...] ничего не говорят модели о смысле слов. Для компьютера 3245 и 8902 - просто разные индексы3, между которыми нет никакой связи. Как же объяснить машине, что «кот» и «кошка» - это почти одно и то же, а «кот» и «астероид» - нет? Здесь на сцену выходят эмбеддинги.
Эмбеддинги (Embeddings) - это способ объяснить искусственному интеллекту смысл слов на языке цифр.
1. Проблема
Компьютер не понимает слова
Для компьютера текст - это просто набор непонятных значков. Единственный язык, который он реально понимает, - это числа.
Самое простое, что пришло в голову учёным - это присвоить каждому слову номер:
Кот = 1
Собака = 2
Груша = 3
Яблоко = 4
ИИ видит: 1, 2, 3, 4.
В чём здесь проблема?
Для человека очевидно, что Кот и Собака - это животные (похожи), а Яблоко и Груша - это фрукты (тоже похожи).
Но для компьютера числа 1 и 2 - это такая же пара, как и числа 1 и 4. Просто цифры.
Для него «Кот» (1) так же далек от «Собаки» (2), как и от «Груши» (3). Смысл потерян.
Очевидно, что нужен способ не просто присвоить словам номера, а расположить их в пространстве так, чтобы близкие по смыслу слова оказались рядом.
2. Решение
Погружаем слова в «пространство смыслов»
Эмбеддинги решают эту проблему. Они превращают слово не в одно число, а в вектор - длинный список координат (как на карте).
Представьте себе огромное многомерное пространство. Условно, назовем оси этого пространства признаками:
Ось X: «Степень животности» (от -1 (предметность) до +1).
Ось Y: «Степень съедобности».
Ось Z: «Степень пушистости».
Теперь мы можем расставить слова по координатам:
Кот: (Животное: +0.9, Съедобность: -1.0, Пушистость: +0.8)
Собака: (Животное: +0.9, Съедобность: -1.0, Пушистость: +0.5)
Груша: (Животное: -1.0, Съедобность: +0.9, Пушистость: 0.0)
Яблоко: (Животное: -1.0, Съедобность: +0.9, Пушистость: 0.0)
Расстояния:
Кот <-> Собака = 0.3 (близко – похожи)
Кот <-> Груша = 2.3 (далеко – не похожи)
(На самом деле осей там сотни или тысячи, и смысл их гораздо сложнее, но суть та же).
3. Зачем это нужно ИИ?
Когда у каждого слова есть координаты, компьютер начинает видеть геометрию смысла: понимание похожести: Компьютер вычисляет расстояние между точками.
Кот и Собака находятся рядом в пространстве (потому что координаты похожи: оба животные).
Кот и Груша находятся далеко.
Вывод
Компьютер «знает», что кот и собака - это похожие понятия.
Но этим всё не ограничивается. Когда слова выстроены в пространстве, компьютер может не только определять их близость, но и находить направления смысловых переходов. Например, вектор от «плохого» к «хорошему» будет примерно одинаков для разных контекстов - будь то фильмы, погода или настроение. Это позволяет модели обобщать абстрактные понятия и переносить их из одной области в другую.
Важно
Это метафора для понимания принципа. В реальности у эмбеддингов сотни или тысячи измерений, и человек не может присвоить им осмысленные названия вроде «пушистость». Оси не интерпретируемы, важны лишь расстояния между точками.
Но эмбеддинги умеют не только группировать похожие слова. Самое удивительное свойство этого пространства - в нём можно выполнять арифметические операции, и они будут давать осмысленные результаты.
Аналогии (Математика смысла): с векторами можно производить математические операции. Если вы возьмете вектор слова «Король», вычтете вектор «Мужчина» и прибавите вектор «Женщина», вы получите вектор, ближайший к слову «Королева».
Формула выглядит так:
Король - Мужчина + Женщина = Королева.
Аналогия (векторная арифметика):
Король -> [0.8, 0.7, 0.3]
Мужчина -> [0.7, 0.6, 0.2]
Женщина -> [0.2, 0.7, 0.8]
-------------------------------------------------
Королева <- [0.3, 0.8, 0.9] (результат сложения/вычитания)
ИИ учится проводить такие аналогии, просто подбирая координаты.
Подведём итог: что же мы получаем, переводя слова в векторы?
Итог
Эмбеддинги нужны, чтобы перевести текст (который ИИ не понимает) в координаты точек на карте смыслов (потому что с ними можно считать и находить закономерности).
Благодаря им, нейросеть понимает, что:
«Кот» и «кошка» - это почти одно и то же.
«Хороший» и «плохой» - противоположности (векторы смотрят в разные стороны).
Для инженера
Размерность эмбеддингов (например, 4096) напрямую влияет на способность модели различать тонкие оттенки смыслов и на объём памяти, занимаемой моделью.
Итак, эмбеддинги решили проблему «слепоты» модели к смыслу отдельных слов. Теперь компьютер знает, что «кот» и «кошка» - близкие понятия. Но в языке важен не только смысл самих слов, но и их порядок. Фразы «кот укусил собаку» и «собака укусила кота» состоят из одних и тех же слов, но означают прямо противоположное. Как сообщить модели, что порядок имеет значение? Для этого существует следующий механизм - позиционное кодирование.