cbow和skip gram:
cbow:把context word平均后作为输入。window中词的平均 => 一个词
skip gram:实际上是训练每个输入输出的pair。一个词 => 一个词
hierarchical softmax
https://zhuanlan.zhihu.com/p/35074402
原本输出层是一个可训练的参数矩阵W (shape: [hid_dim, vocab_size])。训练的时候需要更新整个W。
hierarchical softmax 是把输出层变成哈夫曼树,只需要优化从叶子节点到根节点路径上的参数。
Hierarchical softmax通过构造一棵二叉树将目标概率的计算复杂度从最初的V降低到了logV的量级。但是却增加了词与词之间的耦合性。比如一个word出现的条件概率的变化会影响到其路径上所有非叶子节点的概率变化。间接地对其他word出现的条件概率带来影响。
只是前向计算的时候复杂度从V转成了logV。
因为backward的时候,常规结构只需要更新output word对应的那个W中one-hot的一项。(好像不是的,整个W都要更新)
而hierarchical softmax影响了路径上的其他点的参数,也就影响了其他词的参数。而哈夫曼树中的词没有语义上相近不相近的关系。
Negative Sampling
简单对比学习
https://zhuanlan.zhihu.com/p/144146838
Sub-sampling
除了这里介绍的层次Softmax和负采样的优化算法,Mikolov在13年的论文里还介绍了另一个trick:下采样(subsampling)。其基本思想是在训练时依概率随机丢弃掉那些高频的词













网友评论