Alterna · учебный материал

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

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

Что в этом материале

Содержание и основные понятия

На предыдущей странице: номер становится строкой таблицы.
Попробуем предсказывать соседние слова и исправлять координаты по ошибке. Похожесть здесь появляется из задачи и данных, а не из названий осей.
Таблица E хранит строку координат для каждого ID. Эти координаты обучаются. Знакомый cosine теперь используется для конкретной задачи поиска близких представлений.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Вектор полезен относительно задачи
Skip-gram связывает центральное слово с соседями. У каждой единицы есть входной вектор e_c и выходной u_j. В нашей маленькой версии вероятность context token определяется полным softmax по шести кандидатам:
z
j
=
e
c
T
u
j
,
p
j
=
e
z
j
∑
r
e
z
r
,
L
(
c
,
t
)
=
−
ln
⁡
p
t
.
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.
z
j
​
=
e
c
T
​
u
j
​
,
p
j
​
=
∑
r
​
e
z
r
​
e
z
j
​
​
,
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
Академическая база →

Структурная карта учебников