Word2vec
Skip-gram算法的核心部分
我们做什么来计算一个词在中心词的上下文中出现的概率?
似然函数
词已知,它的上下文单词的概率 相乘。
然后所有中心词的这个相乘数 再全部相乘,希望得到最大。
目标函数(代价函数,损失函数)
平均对数似然 + 转化为极小化问题
最小化目标函数 J(θ) <==> 最大化预测的准确性
- 为了简化数学和优化,每个单词都用两个向量表示:
预测函数
模型训练目的:具有相似上下文的单词,具有相似的向量。
所有上下文之间的向量最相似,这样似然函数最大,损失函数最小!
取幂 用于使得所有数都为正
点乘 用于计算向量相似程度。向量之间越相似,点乘结果越大。
目的:找到与中心词向量 点乘最大的词向量,得到最相似的向量。
分母 用于归一化,最终得到概率分布 => 所有词跟中心词的相似程度所构成的概率#
预测函数使用的softmax函数
最小化损失函数来调整词向量 -> 最大化 在中心词的上下文实际看到的词的概率
θ表示模型所有的参数,向量长度为2dV。调整θ来最大化上下文词的预测!
词库一共有V个词,每个词向量都是d维。
每个词都有上下文词向量和中心词向量。
梯度下降法
总结:
- 为上下文词和中心词随机初始化一个向量
- 使用迭代算法逐步更新这些词向量 (梯度下降法)
- 可以更好的预测哪些词会出现在其他词的上下文中