Можно ли - на элементарном уровне - пояснить, как выбирается совокупность параметров, служащая базисом?
Базис стандартный:) Вы, видимо, хотите спросить, как строятся вектора.
Совсем на пальцах - они строятся так, чтобы вектора слов, которые часто встречаются рядом, были похожи.
Вектора строятся градиентным спуском без явной целевой функции. На самом деле для каждого слова строится два вектора - левый
и правый
. Мы берем два слова
и
, которые расположены в тексте рядом, и градиентным спуском увеличиваем скалярное произведение
. А еще мы берем случайное слово
, и уменьшаем скалярное произведение
. После чего выкидываем матрицу
, оставляя только матрицу
.
Леви и Голдберг показали, что в некоторым варианте это эквивалентно оптимизации
, где
- вероятность того, что случайная пара слов окажется парой
,
и
- частоты слов
и
соответственно,
- параметр алгоритма.
Тут есть хитрый момент - мы по сути оптимизируем некоторую функциюю от
, а используем только
. Но очевидно, что если мы возьмем
,
для произвольной обратимой матрицы
, то целевая функция не изменится, а вот наши скалярные произведения между строками матрицы
поменяются неизвестно как. Так что просто условия оптимальности относительно целевой функции недостаточно для получения хороших эмбеддингов, важно еще что-то. Что именно - я не знаю (и, видимо, никто не знает).
Но подход word embeddings, хотя и интересный, сейчас устарел. Современные подходы смотрят сразу на много слов.