🤴 - 😎 + 👧 = 👸💅🏼
2013 год. команда Google подаёт статью на конференцию по машинному обучению. там принимают около 70% работ. их статье ставят strong reject (точно отклонить) – самую низкую оценку из возможных и отклоняют
проходит десять лет, и эту же работу называют одной из самых важных работ десятилетия. её цитируют больше 40.000 раз, а один из авторов, Илья Суцкевер, за это время становится сооснователем OpenAI
работа называется word2vec
её идея довольно простая: представить каждое слово не как текст, а как набор чисел – вектор. такое числовое представление объекта в машинном обучении называют эмбеддингом
например:
model["cat"]
и получаем:
cat → [0.23, −0.41, 0.07, 0.88, −0.15, …]
(ещё 295 чисел)
300 чисел – это «кошка» в пространстве модели. до этого слова можно было представить гораздо примитивнее. например, каждому слову дать свой уникальный набор единиц:
кошка = [1, 0, 0, 0, 0]
собака = [0, 1, 0, 0, 0]
трактор = [0, 0, 0, 1, 0]
для компьютера такая кошка ничем не ближе к собаке, чем к трактору. просто разные позиции
в word2vec используется другая идея: слово можно описать через его окружение
кошка часто встречается рядом с «покормить», «погладить», «пушистая». собака с большим количеством тех же слов. трактор уже с совсем другими
модель читает огромное количество текстов и учится располагать слова в пространстве так, чтобы слова с похожими контекстами оказывались ближе друг к другу
например:
кошка = [ 0.21, −0.53, 0.88]
собака = [ 0.19, −0.47, 0.91]
трактор = [−0.70, 0.12, −0.05]
поэтому кошка и собака оказываются рядом, а трактор далеко (посмотрите на цифры)
и самое интересное: над этими векторами можно делать арифметические операции
король − мужчина + женщина ≈ королева
или:
Париж − Франция + Италия ≈ Рим
то есть математические операции над числами неожиданно отражают отношения между словами
конечно, в настоящем векторе нет отдельных чисел, которые отвечают за какие-то конкретные понятия. смысл распределён между сотнями измерений, а отношения между словами проявляются в расстояниях и направлениях между их векторами
причём эта идея работает не только со словами. например, похожим образом можно представить фильмы: если люди часто смотрят одни и те же фильмы или смотрят их в похожих последовательностях, у фильмов тоже появляются свои векторы. близкие фильмы можно использовать для рекомендаций
а для домашки по математике я как раз работала с GloVe – моделью от Стэнфорда, которая появилась примерно через год после word2vec. она тоже представляет слова в виде 300-мерных векторов, и та самая арифметика с королём и королевой работает и на ней. разница в том, на чём они учились: word2vec прочитала около 100 миллиардов слов из Google News, а GloVe около 6 миллиардов из Википедии и новостных архивов
с 2013 года всё, конечно, сильно выросло. сейчас векторы могут содержать уже несколько тысяч чисел, а одно и то же слово получает разное представление в зависимости от контекста: «лук» со стрелами и «лук» на сковородке уже разные векторы
такие эмбеддинги используются в современных моделях Google, OpenAI, Alibaba и других компаний для умного поиска и работы с текстами
идея при этом осталась той же, что и в word2vec: похожие по смыслу вещи оказываются близко друг к другу в числовом пространстве
а ведь в 2013 году эту идею оценили как «точно отклонить». так что если вашу идею не приняли с первого раза это ещё ничего не значит 😊