先验几率和后验证几率是基于词向量模型。首先一段话由五个词组成:
A B C D E
对C来讲:先验几率指ABDE出现后C出现的几率,即P(C|A,B,D,E)
能够将C用ABDE出现的几率来表示 Vector(C) = [P(C|A), P(C|B), P(C|D), P(C|E) ]
后验几率指C出现后ABDE出现的几率:即P(A|C),P(B|C),P(D|C),P(E|C)html
先验几率和后验几率已经知道了,可是一个句子很长,对每一个词进行几率计算会很麻烦,因而有了n-gram模型。
该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的几率就是各个词出现几率的乘积。
通常状况下咱们只计算一个单词先后各两个词的几率,即n取2, 计算n-2,.n-1,n+1,n+2的几率。
若是n=3,计算效果会更好;n=4,计算量会变得很大。网络
cbow输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量,即先验几率。
训练的过程以下图所示,主要有输入层(input),映射层(projection)和输出层(output)三个阶段。
编码
Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量,即后验几率。训练流程以下:
.net
传统网络训练词向量的网络:
htm
word2vec训练方法和传统的神经网络有所区别,主要解决的是softmax计算量太大的问题,采用Hierarchical Softmax和Negative Sampling模型。
word2vec中cbow,skip-gram都是基于huffman树而后进行训练,左子树为1右子树为0,同时约定左子树权重不小于右子树。
构建的Huffman树以下:
其中,根节点的词向量对应咱们的投影后的词向量,而全部叶子节点就相似于以前神经网络softmax输出层的神经元,叶子节点的个数就是词汇表的大小。在霍夫曼树中,隐藏层到输出层的softmax映射不是一会儿完成的,而是沿着霍夫曼树一步步完成的,所以这种softmax取名为"Hierarchical Softmax"。blog
由于时间有限,暂时总结这些,下一次详细看一下word2vec中的实现。ip
参考:
word2vec原理(一) CBOW与Skip-Gram模型基础
word2vec原理(二) 基于Hierarchical Softmax的模型
本身动手写word2vec (四):CBOW和skip-gram模型get