Читать книгу Гений кода. Истории самых впечатляющих ИИ-проектов, которые уже меняют жизнь - Ар'лан ис'Дрекхэм - Страница 13
Часть 2: Рождение титанов. Истории прорывов, изменивших правила игры
Глава 12. Word2Vec: Элегантность математики: Король – Мужчина + Женщина = Королева
ОглавлениеКрючок: Магия арифметики
Представь, что я даю тебе задание по математике.
Сложи числа: 5 +3 = 8. Вычти: 10 – 4 = 6. Скучно, да?
А теперь представь другое задание. Я говорю:
«Король» минус «Мужчина» плюс «Женщина» =?
Ты, не задумываясь, отвечаешь: «Королева».
Но как это возможно? Как можно вычитать и складывать слова? Слова – это не числа. Это смыслы, образы, культурные коды.
А теперь представь, что компьютер, который ничего не понимает в королях и королевах, вдруг выдаёт тот же ответ. И не только этот. Он считает: «Париж» – «Франция» + «Италия» = «Рим». «Берлин» – «Германия» + «Франция» = «Париж».
Это не магия. Это Word2Vec. И это одна из самых элегантных идей в истории искусственного интеллекта.
Герои: Чех и его русская жена в Google
История Word2Vec началась в 2013 году в недрах Google. Главным героем был Томаш Миколов (Tomáš Mikolov) – чешский учёный, который работал в Google Brain.
У Миколова была интересная особенность: он не был классическим лингвистом или математиком. Он был инженером, который хотел решить конкретную проблему. Как научить машину понимать слова так, чтобы это понимание можно было использовать в поиске, переводе, рекомендациях.
Вместе с коллегами (в том числе с русским учёным Кай Ченом) они придумали гениально простую идею, которая перевернула представление о работе с текстом.
Конфликт: Как объяснить слово компьютеру
До Word2Vec компьютеры работали со словами двумя примитивными способами.
Способ 1: Индексы (One-hot encoding).
Каждому слову присваивался уникальный номер. «Кот» = 1, «Собака» = 2, «Король» = 3.
Проблема: для компьютера слова были просто ярлыками. «Кот» и «Собака» – такие же разные, как «Кот» и «Атомный реактор». Никакой связи, никакого смысла. Машина не знала, что кошки и собаки – это животные, а атомный реактор – это нечто другое.
Способ 2: Мешки слов (Bag of Words).
Текст превращался в набор слов без порядка. Терялся контекст, терялась грамматика, терялось всё.
Нужно было придумать способ, который позволил бы компьютеру вложить смысл в числа. Чтобы близкие по значению слова имели близкие числовые координаты. Чтобы отношения между словами можно было выразить математически.
Развязка: Гениальная простота
Идея Миколова была обманчиво проста: «Скажи мне, с кем ты дружишь, и я скажу, кто ты».
Это старая поговорка, но в мире слов она работает идеально. Смысл слова определяется контекстом, в котором оно встречается. Если два слова часто встречаются рядом с одними и теми же соседями – они, скорее всего, близки по смыслу.
Миколов взял эту идею и превратил её в алгоритм.
Как это работает (максимально просто):
– Берётся огромный текст (например, весь Google Books или вся Википедия).
– Нейросеть учится предсказывать слово по его соседям.
– Берём предложение: «Я пью горячий…».
– Прячем слово «чай».
– Нейросеть должна угадать: какое слово тут пропущено?
– Чтобы угадать правильно, сеть вынуждена создавать для каждого слова числовой вектор – набор из, скажем, 300 чисел.
– В процессе угадывания эти векторы подстраиваются так, чтобы слова, которые часто встречаются в похожих контекстах, имели похожие векторы.
Варианты обучения:
– CBOW (Continuous Bag of Words): По контексту угадываем слово. (Соседи говорят, какое слово в центре).
– Skip-gram: По слову угадываем контекст. (Слово говорит, какие соседи у него должны быть).
Через некоторое время у нас есть векторное пространство, где каждое слово – это точка с координатами.
Инсайт: Арифметика смыслов
И вот тут начинается самое интересное.
Когда у тебя есть векторы слов, ты можешь их складывать и вычитать. И векторы ведут себя как настоящие смыслы!
Классический пример:
Возьмём вектор слова «Король». Вычтем из него вектор «Мужчина». Прибавим вектор «Женщина». Получится точка, которая ближе всего к вектору слова «Королева».
Это не случайность. Это работает потому, что в процессе обучения нейросеть уловила, что разница между «Королём» и «Королевой» примерно такая же, как между «Мужчиной» и «Женщиной». И эта разница выражается в одних и тех же числах.
Другие примеры:
– Столицы: «Париж» – «Франция» + «Италия» = «Рим»
– Времена глаголов: «Идти» – «шёл» + «думал» = «думать»
– Род занятий: «Доктор» – «мужчина» + «женщина» = «женщина-врач» (иногда получалось даже с учётом стереотипов, что показывало проблему данных)
Почему это гениально
Гениальность Word2Vec в трёх вещах:
1. Обучение без учителя.
Для создания векторов не нужна ручная разметка. Не нужно нанимать лингвистов, которые будут объяснять машине, что кот – это животное. Машина сама всё выучивает, просто читая тексты.
2. Перенос смысла в математику.
Впервые смысл стал вычислимым. Мы можем измерять близость слов (косинусное расстояние между векторами). Мы можем искать аналогии. Мы можем кластеризовать слова по темам.
3. Эффективность.
Word2Vec работает быстро и не требует суперкомпьютеров. Его можно обучить на обычном ноутбуке за пару часов (если текст не слишком большой). Код был открыт и доступен всем.
Эволюция: Что стало дальше
Word2Vec породил целое семейство технологий.
GloVe (Global Vectors) от Stanford:
Другая техника, которая учитывает не только локальный контекст, но и статистику по всему тексту целиком. Часто работает ещё лучше.
FastText:
Улучшение от Миколова. Учит векторы не только для целых слов, но и для частей слов (n-грамм). Это позволяет находить векторы для редких слов и даже для тех, которых не было в обучающей выборке.
ELMo, BERT и далее:
Современные модели пошли дальше: они создают векторы, которые зависят от контекста. То есть у слова «банк» будет разный вектор в зависимости от того, финансовое это учреждение или скамейка в парке. Но всё это выросло из идей Word2Vec.
Темная сторона: Стереотипы в числах
У Word2Vec обнаружилась и тёмная сторона. Поскольку модель учится на человеческих текстах, она впитывает все наши предрассудки.
Исследователи обнаружили, что в векторах проявляются гендерные и расовые стереотипы.
Например:
– «Программист» – «мужчина» + «женщина» часто давало «домохозяйка».
– «Врач» ближе к «мужчина», а «медсестра» ближе к «женщина».
– Европейские имена ассоциировались с приятными словами, а африканские – с неприятными.
Это была важная находка. Она показала, что ИИ не просто отражает реальность, а усиливает наши предрассудки, потому что учится на исторических данных. С тех пор тема «смещения в данных» (bias) стала одной из главных в этике ИИ.
Наследие: Word2Vec в каждом телефоне
Сегодня Word2Vec живёт везде.
– Поиск: Когда ты ищешь «пушистые животные», Google понимает, что ты имеешь в виду кошек, даже если ты не написал это слово.
– Перевод: Машинный перевод использует векторные представления, чтобы находить соответствия между языками.
– Рекомендации: Системы рекомендуют товары, которые «близки» к тому, что ты уже купил.
– Анализ тональности: Компании анализируют отзывы, переводя слова в векторы и смотря, с какими эмоциями они связаны.
Твой ход: Четыре урока от Word2Vec
– Смысл рождается в контексте. Ты – это твоё окружение. Слова, которые ты используешь, люди, с которыми общаешься, книги, которые читаешь – всё это формирует твой «вектор». Хочешь измениться – измени контекст.
– Ищи скрытые закономерности. Word2Vec нашёл структуру там, где её никто не искал. В твоих данных, в твоей жизни, в твоей работе – тоже есть скрытые паттерны. Просто нужно правильно посмотреть.
– Арифметика работает не только с числами. Смыслы можно складывать и вычитать. Когда ты строишь карьеру, ты фактически делаешь «Навыки» + «Опыт» – «Ошибки» = «Профессионал». Думай в терминах векторов.
– Остерегайся стереотипов. Данные, на которых ты учишься, могут быть предвзяты. Всегда критически оценивай, откуда берутся твои «векторы» и какие неявные предположения они в себе несут.
P.S.
Знаешь, что сказал Томаш Миколов, когда его спросили, как он додумался до такой элегантной идеи?
«Я просто хотел, чтобы компьютер понимал, что кошки и собаки – это животные, а не просто разные цифры. И оказалось, что для этого достаточно заставить его угадывать слова по соседям. Всё гениальное – просто».