Всем привет! Сегодня у нас такой экспериментальный выпуск. А, я вам попробую рассказать одну интересную, на мой взгляд, и познавательную историю. Это, ааа, то, чем мне хочется с вами поделиться, то, чем нам всем хочется с вами поделиться, но то, что не подходит под формат подкаста, где мы вчетвером обсуждаем новости. Если окажется, что такой формат вам интересен, пишите об этом в комментариях, мы с удовольствием продолжим снимать такие выпуски.
А сегодня мы поговорим про эмбеддинги. Итак, смотрите, мы с вами знаем, что компьютеры работают с числами, но не могут работать ни с чем другим. Если нам нужно, чтобы компьютер с чем-то работал, нужно перевести это в число. При этом практически в каждом выпуске нашего подкаста мы обсуждаем различные чат-боты, LLM-модели и все остальное, и видим, что прекрасно компьютеры справляются и с текстами, и со смыслами, а сейчас даже умеют рассуждать. Как же это происходит?
Давайте попробуем в этом разобраться. Нам необходимо текст перевести в числа. Ааа, есть множество разных подходов. Возьмем самый интуитивно простой и понятный вариант. Допустим, у нас есть какой-то текст. Допустим, написано: "На столе лежит апельсин". И нам нужно каким-то образом каждое слово заменить на число. Тогда компьютер как-то сможет это обработать. Как мы можем это сделать? Для примера возьмем орфографический словарь. Скорее всего, все вы в своей жизни их уже видели. И каждое слово пронумеруем. Вот возьмем первое слово - номер один, второе - номер два и так далее. Получим некоторый набор чисел, и вместо, м, текста "на столе лежит апельсин" мы с вами получим некоторый набор чисел. С этим набором чисел компьютер что-то может уже сделать. Но смотрите, что получается. А, нам хочется или, так скажем, ученым хочется, математикам хочется работать с числами как с числами. Что это значит? Вот в математике есть один плюс два равно три или три минус два равно один. Работают простейшие арифметические операции. Можно ли так будет делать с тем набором чисел, который у нас получится на основе орфографического словаря? Для примера возьмем, что первые три числа у нас - это абрикос, апельсин и аппендицит. Вот мы так их в орфографическом порядке разложили: номер один, номер два, номер три. И если мы возьмем эти числа, один плюс два равно три, в математике все верно. А если мы возьмем смыслы, которые у нас получаются, сам текст, то что у нас получится? Если мы к апельсину прибавим абрикос, то мы получим аппендицит. Как будто бы получается ерунда, с которой невозможно работать.
Или возьмем аппендицит, вычтем из него абрикос, вряд ли получится апельсин. Как видим, этот подход в целом может работать, но не дает то, что нам хотелось бы от этого получить. Но оказалось, что в 2013 году ученые разработали алгоритм, который назвали word2vec. И этот алгоритм может сохранять смыслы, а, и позволяет с ними работать дальше, как вот с числами. Оставим за скобками, что здесь уже речь идет не о простых числах, с которыми вы все знакомы в школе, но идет о векторах. Но это не имеет большого значения просто потому, что с векторами та же арифметика работает: мы можем их складывать, можем вычитать и получать различные, а, уравнения.
Соответственно, когда ученые разработали этот алгоритм word2vec, а, всех потряс пример, о котором вы, возможно, даже слышали. Пример был следующий: берем короля, вычитаем из него мужчину, прибавляем к тому, что осталось, женщину и, как ни странно, получаем значение, очень близкое к королева. Давайте попробуем посмотреть, а что же это такое внутри, да? Вот король - это какой-то человек, а, мужского рода, в короне и наделенный властью. Если мы вычтем из него мужчину, мы получим что-то в короне и наделенное властью. Теперь добавим к тому, что осталось, женщину, и мы получим женщину в короне, наделенную властью. И получаем, что вот это все работает на уровне понятных смыслов. Мы с этим можем в голове орудовать, да? И при этом у нас получается такое векторное поле смыслов, в которых работает математика. Этот пример оказался настолько поразительным, он настолько всех удивил, что мне хочется рассказать вам некоторую историю из своей жизни. Где-то года два, два с половиной назад, когда чаты, боты, ChatGPT, там, три с половиной, четыре только набирали популярность, все о них только-только начинали говорить, мне позвонил один человек, который занимается инновациями, который занимается так называемой цифровизацией бизнеса. И вот он мне звонит и говорит: "Ильнар, а ты можешь мне вот на пальцах рассказать, как работают большие языковые модели, что это такое, что там под капотом лежит?" Ну, я говорю: "Давай попробуем". Начинаю ему рассказывать. Рассказываю о том, как слова переводятся в числа, в вектора, как потом с этими векторами можно работать. Ну, очевидно, рассказываю про пример вот этот вот: король минус мужчина плюс женщина равно королева. Ну и дальше рассказываю, что же происходит дальше с предсказанием каждого следующего слова. Он меня внимательно дослушал, и когда я закончил, он говорит: "Ильнар, вот ты третий дата-сайентист, которому я за сегодня звоню, и в третий раз я слышу этот пример про король минус мужчина плюс женщина равно королева". И что хочется сказать? Что этот пример просто оказался настолько удивительным. Он показал, что с текстами, со смыслами, со словами можно работать точно так же, как можно работать с математикой.
То есть те же самые законы математики работают, оказывается, и со словами, со смыслами - самое главное. Но это не единственный пример. Он самый известный, самый популярный, но не единственный. И сегодня я хочу с вами поделиться одним очень интересным ресурсом. Его разработала Елена Войто. Это замечательный исследователь, дата-сайентист, даже скорее ресерчер, да, который в этой области очень много работает. И вот она создала свой собственный сайт, на этом сайте разместила некоторое количество великолепных, кстати, лекций по NLP - Natural Language Processing, да, то есть обработка естественного языка. Это то, на чем, э, основано все, что сейчас касается вот ChatGPT, чат-ботов и так далее. А, и соответственно, там же, в одном из разделов она разместила очень интересную игру в формате викторины, где вам приводятся различные примеры. А, примеры наподобие: возьмем какой-то объект, вычтем из него один, прибавим к нему другой - и что получится? Вам нужно отгадать, что же на самом деле получается. И здесь хочется сказать, что есть большое количество интересных и очень неочевидных кейсов, которые мне хотелось бы вам рассказать. Но формат нашего короткого видео вместит только некоторое количество. Поэтому я покажу самые интересные, на мой взгляд. А вы попробуйте, а, самостоятельно поиграть в эту игру, поучаствовать в этой викторине и напишите в комментариях, а что же для вас оказалось самым удивительным. Итак, посмотрим. Итак, возьмем вот пример, который сейчас на экране. У нас есть гамбургер. Из гамбургера мы вычитаем Америку и прибавляем Италию. Представляем, да, то есть у нас есть какая-то еда, гамбургер, м, специфичная для Америки. Мы вычитаем из не-- того, что у нас есть Америку, так же, как мы делали король минус мужчина, и прибавляем другую страну - Италию. У нас есть четыре варианта ответа: есть хот-дог, есть лазанья, есть багет и есть, соответственно, кебаб. Вы можете поставить на паузу, подумать, что же в итоге получится. Я, соответственно, выберу один из вариантов, и мы с вами увидим, правильно ли это с точки зрения этой модели Word2Vec, которая используется на этом ресурсе. Ну, выбираем лазанью. Логику свою я вам объяснил. М, интересно, что выбрали вы и как вы объяснили свое решение. Посмотрим следующий вариант. У нас есть Поттер, тот самый Гарри Поттер. Возможно, вы смотрели фильмы и читали книги. Вычитаем из Поттера Рэдклиффа, добавляем Дэвида Теннанта, и у нас что-то из четырех вариантов окажется правильным с точки зрения модели Word2Vec: Гермиона, Шерлок, Доктор Кто или Бэтмен. А, подумайте. Можете поставить на паузу. Я попробую объяснить логику, которая здесь заложена. Поттер - это некоторый персонаж из произведения или из фильма. Рэдклифф - это фамилия актера, который играл Гарри Поттера в фильмах компании Warn-- компании Warner Brothers. Соответственно, мы вычитаем из этого персонажа актера, который играл эту роль, и добавляем Дэвида Теннанта. Дэвид Теннант - британский актер. А, для меня, по крайней мере, наиболее известный по роли в сериале "Доктор Кто". Поэтому, соответственно, я предполагаю, что правильным ответом здесь должен быть, э, вариант Доктор Кто, Doctor Who. Так, ну, по версии этого сайта, это правильный ответ. Собственно, давайте взглянем на следующий. А также можете обратить внимание, да, что в абсолютно разных сферах, а, смыслы между собой связываются. То есть, с одной стороны, у нас были король, королева, с другой стороны, у нас была еда и страны, которым они могут быть специфичны. Дальше у нас получается пример про персонажей из фильмов и книг и актеров, с которые, которые с ними связаны. Видите, та же самая арифметика работает в абсолютно разных областях. Это может выглядеть немножко как магия, а, но нужно понимать, а что же находится под капотом у этих моделей. Это статистические модели, которые обучаются на текстах, которые есть в Википедии, в интернете, в книгах и так далее. И вот те смыслы, которые статистически оттуда можно вытащить, вот этой арифметике, вот этой математике оказываются доступны. Да? Давайте посмотрим на следующий пример. Возьмем солнце - sun, из него вычтем горячее и добавим холодное. Есть четыре варианта ответа: луна, дождь, земля или зима. Выберите свой вариант. Правильным ответом здесь будет луна. Попробуйте.
Нет, видите, я думал, что луна, но на самом деле-
Я думал, что луна, но на самом деле я ошибся. Правильный вариант с точки зрения модели Word2vec, которая здесь была построена, ответом будет дождь. Вот видите? Надеюсь, что вы выбрали правильно и не ошиблись, как я. Возьмем следующий вариант. А, он тоже удивительный просто потому, что смыслы в нем сохранены, вот, прям максимально. Возьмем зеленый цвет. Из зеленого вычтем синий и к тому, что осталось, добавим красный. Правильным, по мнению этой модели Word2vec, будет один из четырех вариантов: розовый, желтый, коричневый или оранжевый. Я здесь предполагаю, что зеленый по цветовой гамме состоит как сочетание синего и желтого. Если мы из этого сочетания синего и желтого уберем синий, останется только желтый. Если к желтому добавим красный, то должен получиться оранжевый. Давайте посмотрим, соответствуют ли мои рассуждения. Да. А, опять же, это не значит, что модель умеет именно рассуждать в цветах, но это значит, что вот те смыслы, которые статистически были получены из набора текстов, на которых Word2vec обучался, следует такой же результат, который я смог объяснить вот этим логическим рассуждением. Не значит, что оно лежит под капотом, но само совпадение уже говорит о многом и достаточно любопытным оказывается. Возьмем еще пример, который мне кажется достаточно любопытным. Есть имя Елена. Вычтем из этого имени Россию и прибавим Шотландию. И вот нужно понять, а что же в итоге получится. Здесь в пример представлены несколько вариантов. Есть Бонни, есть Стана, есть Люси, есть Фиби. Какой-то из этих вариантов, по мнению Word2vec, окажется правильным. Подумайте, какой? Да. Ну, я думаю, что те, кто хотел, могут поставить на паузу. Я выберу вариант Бонни как достаточно специфичный для Шотландии. И это тоже удивительно, да? Мы берем имя, специфичное для одной страны, вычитаем оттуда страну, добавляем другую и получаем имя достаточно популярное или специфичное для какой-то другой страны. Вот Бонни для Шотландии довольно популярное имя. Перейдем к заключительному варианту, которым я хочу с вами поделиться.
Есть нечто странное - gato. Мы вычитаем оттуда кошку - cat и добавляем собаку - dog. Что же у нас должно получиться? Есть четыре разных варианта. А, не все из них я могу прочитать, я думаю, правильно. Не буду читать. Почитайте на экране то, что написано. И вот что из этого верно? А, вот этот пример, он кажется максимально странным и непонятным, пока не поймешь, что здесь слова на другом языке. Слова указаны на португальском языке. То есть cat и dog на английском, а все остальные слова португальские. Так вот, gato — это кошка или кот на португальском языке. Соответственно, мы берем слово на португальском языке, вычитаем из него слово на английском языке cat, добавляем слово на английском языке dog. И что, на ваш взгляд, должно получиться? Можете попробовать перевести все эти четыре варианта с португальского на русский или на английский и посмотреть, а что же в итоге должно получиться. Ну, соответственно, я перевел, что cachoro на русский язык переводится как щенок, ну, или собака. Соответственно, этот вариант выбираем, и здесь он оказывается верным. И этот вариант меня поражает сильнее всего. Если до этого мы с вами видим, что в рамках одного языка это все работает, то здесь это работает в рамках разных языков. У нас есть слово на португальском языке, мы из него вычитаем слово на английском, прибавляем слово на английском и получаем слово на португальском, но которое соответствует тому слову, которое мы должны были получить на английском языке. То есть мы взяли вот кота на португальском, вычли кота, добавили собаку и получили собаку на португальском. Меня это, конечно, поражает до глубины души. Соответственно, это те примеры, о которых я сегодня успел вам рассказать. А, напишите, пожалуйста, сколько баллов, сколько очков вы смогли заработать в этой игре. Дальше, соответственно, напишите те примеры, которые вас поразили, и почему они вас поразили. Почему вам кажется это удивительным? Ожидали ли вы вообще такое увидеть? Помимо этого, напишите, интересен ли вам такой формат. Это не подкаст, это небольшая познавательная история. Я надеюсь, что она вам понравилась. Если вам понравилось, то, собственно, ставьте лайки, подписывайтесь на канал и пишите об этом в комментариях. Если окажется, что зрителей, которым это интересно, много, мы можем продолжить, э, снимать небольшие выпуски в таком формате в разных составах на разные темы. Тем у нас очень много, чем мы хотели бы с вами поделиться. Если окажется, что вам это интересно, мы с удовольствием продолжим это дело. Оставайтесь на канале. Новостные выпуски и подкасты уже совсем скоро. Надеюсь, что вам понравилось. Пока-пока.