Книга: Инжиниринг искусственного интеллекта
Назад: ГЛАВА 1. КАК РАБОТАЕТ ГЕНЕРАТИВНАЯ ЯЗЫКОВАЯ МОДЕЛЬ: ОТ ЗАПРОСА К ОТВЕТУ
Дальше: 1.3 Позиционное кодирование (Positional Encoding)

1.2 Эмбеддинги

В предыдущем разделе мы превратили текст в последовательность чисел - токенов. Но у этой победы есть обратная сторона: сами по себе эти числа [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) напрямую влияет на способность модели различать тонкие оттенки смыслов и на объём памяти, занимаемой моделью.

Итак, эмбеддинги решили проблему «слепоты» модели к смыслу отдельных слов. Теперь компьютер знает, что «кот» и «кошка» - близкие понятия. Но в языке важен не только смысл самих слов, но и их порядок. Фразы «кот укусил собаку» и «собака укусила кота» состоят из одних и тех же слов, но означают прямо противоположное. Как сообщить модели, что порядок имеет значение? Для этого существует следующий механизм - позиционное кодирование.



Назад: ГЛАВА 1. КАК РАБОТАЕТ ГЕНЕРАТИВНАЯ ЯЗЫКОВАЯ МОДЕЛЬ: ОТ ЗАПРОСА К ОТВЕТУ
Дальше: 1.3 Позиционное кодирование (Positional Encoding)