代码修改版

词向量 Word2Vec · 代码修改

改写训练循环里的学习率、窗口与轮数,运行后从日志里看两行数字是怎么被一步步推到一起的。

目标实验目标

看清 Word2Vec 的引擎:cosine_similarity() 量两个词有多像,train_word2vec() 把出现在相似上下文里的词在空间中推近。修改参数、观察向量的真实坐标与相似度变化。

操作代码里黄色虚线的数字可直接点击修改,改完点「运行代码」。日志会打印每一轮训练后关键词对的余弦相似度。

代码可编辑源码

word2vec.js — 点击黄色数值修改

设置观察哪一对词

空间训练后的向量位置

监视变量监视

lr = -
window = -
epochs = -
最终收敛度 = -

日志训练日志

点击「运行代码」开始训练…

挑战实验课挑战

挑战 1 · 学习率的影响
把 lr = 0.05 改成 0.01 和 0.3,看日志里最终的余弦相似度。哪个学得充分?
挑战 2 · 窗口太小会怎样
把 window = 3 改成 1,同类词还聚得起来吗?为什么窗口决定了「谁算相似上下文」?
挑战 3 · 轮数够不够
把 epochs = 40 改成 5,看「猫↔小狗」的相似度还差多远。
挑战 4 · 改掉相似度公式
把日志里 (1 - cos) 改成常数 1(即不管多像都继续推),同类词会变成什么样子?为什么不能用常数?