alterna ai
ALTERNA AI / ГЛАВА 13 · 02

13.2 Как меняются векторные представления

На предыдущей странице: номер становится строкой таблицы.

Попробуем предсказывать соседние слова и исправлять координаты по ошибке. Похожесть здесь появляется из задачи и данных, а не из названий осей.

Таблица E хранит строку координат для каждого ID. Эти координаты обучаются. Знакомый cosine теперь используется для конкретной задачи поиска близких представлений.

Вектор полезен относительно задачи

Skip-gram связывает центральное слово с соседями. У каждой единицы есть входной вектор e_c и выходной u_j. В нашей маленькой версии вероятность context token определяется полным softmax по шести кандидатам:

zj=ecTuj,pj=ezj∑rezr,L(c,t)=−ln⁡pt.z_j=e_c^Tu_j,\quad p_j=\frac{e^{z_j}}{\sum_r e^{z_r}},\quad L(c,t)=-\ln p_t.

В L04 обсуждаются также negative sampling и другие ускорения; здесь их нет. Dataset состоит из четырёх коротких предложений, окно1симметрично, всего12направленных пар. Вычисляется средняя CE по всем парам и настоящий full-batch GD для E и U. Это36параметров, а не скачанные Word2Vec weights.

Поскольку ∂L/∂z_j=p_j−1[j=t], получаем ∂L/∂e_c=Σ_j(p_j−1[j=t])u_j и ∂L/∂u_j=(p_j−1[j=t])e_c. Обе группы gradients вычисляются из старых таблиц перед совместным update.

Для e=[1,0],U=[[1,0],[0,1]],target1 scores[1,0]. p₀≈.731059, p₁≈.268941, loss≈1.313262, gradient поe=[p₀,−p₀].

Исследовать. Пройдите один update, сравните обе таблицы и loss. Затем увеличьте бюджет. Уменьшение training CE не доказывает полноценного понимания русского языка: корпус мал и неоднозначен. Геометрия определяется задачей, данными и инициализацией.

from math import exp,log
p0=exp(1)/(exp(1)+1)
loss=log(exp(1)+1)
assert abs(loss-1.3132616875182228)<1e-12
gradient=[p0,-p0]

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Векторные таблицы действительно обновляются по среднему CE12пар.

Ищем ближайшие направления. Как этот вопрос продолжает полученный результат?

Python-примеры главы 13 Академическая база →