Я до сих пор помню, тот день, когда впервые услышал про векторы в n-мерном пространстве, катбуст, деревья решений из уст Великого и Ужасного. В тот момент во мне, что-то перещелкнуло, в голове заиграла музыка из Интерстеллара, я оглянулся вокруг и увидел такие же одухотворенно восторженные глаза, в которых читались вера, восхищение и … полное непонимание, происходящего. А светлоликий Гуру светящийся тайным знанием, что-то вещал со снисходительной улыбкой, но это уже не имело никакого значения, ведь он пообещал нам чудо, просто чудо, Just Magic )
На этой ностальгической ноте можно было бы и закончить :-), но я же обещал вам объяснить Интерстеллар на пальцах? Поехали!
Когда компьютер видит слово "кот", он не понимает его как пушистого разбойника, который сбрасывает вещи со стола и будит вас в 5 утра. Вместо этого он видит набор чисел, например [0.24, -0.13, 0.77], — так машина кодирует значение слова. Например, нейросеть Яндекса кодирует каждое слово в виде матрицы (столбца) размерностью [1, 256]
Ок, давай ещё упростим, пусть слово “кот” представлено в виде двумерной матрицы [0.24, 0.77], “кошка” [0.28, 0.72], “барсик” [0.34, 0.58], а к примеру слово “инжектор” [-0.44, 0.21].
А, что если [0.24, 0.77] – это вектор, начало которого находится в нуле, а конец в точке с координатами Х и Y [0.24, 0.77]? Если отложить все вектора, мы обнаружим интересную особенность, “кот”, “кошка” и “барсик” направленны примерно в одну сторону, а “инжектор” в другую.
Так, что, получается, мы можем взять все слова из текстов (сниппетов, сайтов в ТОПе, Википедии, GPTChat из головы копирайтера) прогнать их через эмбеддинг слой и найти слова близкие по смыслу?
Да именно так!
Стоп, а не про LSI ли речь? Нет, LSI – использует метод сингулярного разложения. Здесь речь идет именно про семантическую близость векторов и ВАЖНО! Эти векторы мы можем вытащить напрямую из BERT. Не из какого-то там доморощенного сервиса, а реально напрямую из языковой модели Яндекса, Google и тому подобных ресурсов.
Подведем итоги: Эмбеддинги – это базис на котором строятся все современные языковые модели, каждое слово Яндекс кодирует в виде матрицы [1, 256] с цифрами, которые можно представить в виде векторов, направленных в определенную точку пространства. И да, можно найти семантически близкие слова!
Ну и красивое любителям сингулярности ) https://youtu.be/8kooIgKESYE?feature=shared