手动调参版

词向量 Word2Vec · 手动调参

拖动「训练轮数」,看随机的词向量如何一步步挪到属于它的位置——相似词越走越近,是训练把它们推到一起的。

目标实验目标

把 Word2Vec 的训练过程放慢来看。开始时每个词的向量都是随机的乱点,随着训练推进,出现在相似上下文里的词被一点点推到相近的位置。调整参数,观察这种「自组织」是怎么发生的。

怎么玩先把「训练轮数」拉到 0,看那盘散沙;再慢慢拉到 100,看词语如何聚成四团。同时盯住右侧「邻居列表」的变化。

参数控制

0 = 尚未训练(随机初始化);100 = 训练完成。
窗口越大,一个词能看到越多上下文,收敛越快——但也更容易把不相干的词拉到一起。
每步微调向量的幅度。太小挪不动,太大容易震荡。
关键观察:epoch=0 时,「猫」的最近邻居是随机的(可能正好是「飞机」);到 epoch=100,「猫」的邻居必然变成「小狗」「小猫」「老虎」。这个变化不是人教的,是训练自己长出来的。

空间词向量的位置

邻居与「猫」最相似的词

加载中…

看这里对比 epoch=0 与 epoch=100 的这张表。训练前四条是乱的,训练后同一类的词自动排到了前面——这就是「上下文相似的词,向量也相似」的落地。

挑战实验课挑战

挑战 1 · 找拐点
缓慢拖动训练轮数,找出「猫」的邻居里第一次出现「小狗」的 epoch。大约在哪个区间?
挑战 2 · 窗口的副作用
把 window 拉到 5,训练完成后四团词的边界还清楚吗?太大和太小分别有什么问题?
挑战 3 · 学习率 extremes
lr 设为 0.01 和 0.3,在 epoch=30 时对比「猫」邻居的相似度值。哪个学得快?哪个更稳?
挑战 4 · 为什么会聚起来
「猫」和「小狗」本来毫无关系,是什么机制把它们推到一起的?用你看到的现象解释。