Когда вы изучали математику, думали ли вы когда-нибудь о добавлении чего-либо, кроме чисел? Если 1 + 2 = 3, то почему нельзя сказать «зелень + фрукт = яблоко?»

Сегодня, когда мы обучаем младенческий мозг искусственного интеллекта человеческому миру, оказывается, что мы можем это сделать. Чтобы научить машины интерпретировать человеческий язык, мы должны научить их отношениям между словами. Один из подходов к этому - обучить алгоритм с огромным количеством текста. К счастью, у нашего общества хорошо получается генерировать огромное количество текста!

Одной из первых попыток этого, с которой я столкнулся, была техника цепей Маркова. Идея цепи Маркова заключается в том, что вы можете предсказать вероятность следующих шагов в серии событий, зная текущий. Подумайте о том, как автозаполнение работает на вашем мобильном телефоне.

Обучая машину на примере данных, вы можете предсказать следующий вероятный результат последовательности. Цепи Маркова имеют множество забавных приложений, например музыку, сгенерированную компьютером. Если вы обучите их естественному языку, вы сможете генерировать предложения, внешне похожие на язык, а чаще всего просто смешные. Обратите внимание на Schmipsum, который позволяет вам генерировать вводный текст на основе различных источников, включая Шекспира, и формулировок корпоративной миссии:

В очереди наши граждане собрались, чтобы учиться в Гарвардском университете города Бойсе. Активно планируйте абсолютную честность, усердие, компетентность, интеллект и комплексную программу.

Однако цепи Маркова слишком упрощены для лингвистических приложений. Между словами существует гораздо больше полезных отношений, чем «скорее всего, будет использоваться в качестве следующего слова».

Введите Word2Vec

По мере развития области компьютерной лингвистики было изобретено множество различных способов представления слов на компьютере. Тот, который дает потрясающие результаты в математике, называется Word2Vec, изобретен в Google и опубликован в 2013 году. Вместо того, чтобы присваивать каждому словарному слову уникальный идентификационный номер, как вы могли бы наивно представить себе, как это сделал бы компьютер, слово получает назначенный вектор чисел. Если вы вспомните свою геометрию, эти векторы похожи на координаты, и ими можно управлять путем сложения и вычитания. [0 1] + [1 2] = [1 3] и так далее.

Чтобы получить ментальную модель того, как работает Word2Vec, подумайте об этом, как о попытке расположить слова на диаграмме в зависимости от того, что они означают. Вам нужно, чтобы слова, которые кажутся связанными, были рядом друг с другом на диаграмме, чтобы их координаты были близки. Так что «мама» и «сестра» будут рядом друг с другом. Конечно, двух измерений недостаточно, чтобы представить все отношения. «Щенок» похож на «котенка» в том смысле, что это молодые животные, но он также похож на «собаку», «домашнее животное» и «тюлень»… вы скоро потеряете дорогу. Поэтому в компьютере мы обычно используем несколько сотен измерений вместо двух. В начале процесса слова случайным образом размещаются на диаграмме, а затем в алгоритм загружается много примеров текста. Каждый раз, когда слова в предложении находятся рядом друг с другом, на диаграмме они сдвигаются немного ближе друг к другу. При наличии достаточного количества примеров текста диаграмма заключает в себе много знаний о том, как соотносятся слова.

В результате, как следует из названия Word2Vec, каждому слову назначается вектор. Затем начинается самое интересное, и вы можете поиграть в математику вот так:

Король + (Женщина - Мужчина) = Королева

Париж + (Италия - Франция) = Рим

Другими словами, все, что означает быть столицей на нашей карте, находится в определенном направлении, поэтому, если вы подтолкнете Италию в этом направлении, вы окажетесь в Риме. Веселье! Одно интересное приложение находится в языковом переводе, в конце концов, почему бы не два - английский + испанский = dos? Действительно, гораздо более сложная система теперь поддерживает Google Translate и даже может переводить между языковыми парами, с которыми она раньше не сталкивалась.

Сама идея превращения вещей в вектор работает и для других проблемных областей. Специалисты по данным из сайта бронирования ресторанов OpenTable экспериментировали с использованием векторных представлений над своими данными. Они обнаружили, например, что если добавить патио к названию стейк-хауса в центре города, то получится стейк-хаус с отличным внутренним двориком! Или если вы путешествуете и хотите найти дома что-то похожее на ваш любимый ресторан. Они обнаружили это:

Akilo’s, Сан-Франциско - Сан-Франциско + Чикаго = Masaki Sushi, Чикаго

Если вам интересно, ознакомьтесь с этим списком моделей векторных типов, который включает статьи и примеры из других областей. Одна из моих любимых - модель бейсбола, которая кодирует статистику бьющих и питчеров в векторы. Он включает в себя несколько забавных примеров, таких как поиск противоположных сторонников игроков. Например:

Майк Траут - левша + правша = Брайс Харпер

Этот вид математики не только доставляет удовольствие, но и приближает нас к автоматизированному способу обучения машин взаимоотношениям между сущностями реального мира - чему-то слишком сложному и утомительному, чтобы учить с помощью явного перечисления. Результаты могут быть использованы для решения реальных проблем.