三、Hierarchical Softmax模型
3.1 词向量
词向量目前常用的有2种表示方法,One-hot representation 和 distributed representation. 词向量,顾名思义就是将一个词表示为向量的形式,一个词,怎么可以将其表现为向量呢?最简单的就是One-hot representation,它是以词典V中的词的个数作为向量的维度,按照字典序或某种特定的顺序将V排序后,词w的向量可以表示为:
3.2 CBOW模型和Skip-Gram模型
CBOW模型很像 feedforward NNLM(A Neural Probabilistic Language Model),feedforward NNLM模型如下所示:
其中C是一个词向量矩阵,首先,将词
CBOW将隐藏层移除,投影层不再是词向量的拼接,而是各个词向量相加后取平均作为输入,由上图可以看到,NNLM模型大部分的计算量在输出层上的softmax归一化运算,因此,CBOW为了简化模型,在输出层输出huffman树。CBOW模型根据上下文预测当前词。Skip-gram模型是用每个当前词去预测一定范围内除当前词之外前后的词。并不是有些人说的CBOW的相反版本。论文关于这一点的原文是:we use each current word as an input to a log-linear classifier with continuous projection layer, and predict words within a certain range before and after the current word. 参考 http://arxiv.org/pdf/1301.3781v3.pdf
3.3 CBOW模型的推导
由于模型的输出是一颗huffman树,其中树的叶子节点表示词,根节点表示权值。CBOW的核心内容是推导出
http://blog.csdn.net/itplus/article/details/37969979
- 由输入层
context(w) 得到投影层向量Xw :
Xw=∑i=12cV(context(w)i)
以上V(context(w)i) 初始化为[−0.5M,0.5M] ,M为向量的维数。 - 由huffman树的根节点到叶节点,是多个二分类问题。二分类问题一般用logistic回归解决,给出回归函数:
σ(zi)=11+e−zi,其中,z=XTwθ,则p(dwi|XTw;θi−1)=1−σ(z),d=1p(dwi|XTw;θi−1)=σ(z),d=0 - 由以上huffman树的图可知:
p(w|context(w))=∏i=2lwp(dwi|Xw;θi−1)=∏i=2lw[σ(zi−1)1−dwi(1−σ(zi−1))dwi] - 语言模型的目标函数是取如下最大似然函数
L=∑w∈Clogp(w|context(w))=∑w∈Clog∏i=2lw[σ(zi−1)1−dwi(1−σ(zi−1))di]=∑w∈C∑i=2lw[(1−dwi)logσ(zi−1)+dwilog(1−σ(zi−1))]
记以下函数为:
L(w,i)=(1−dwi)logσ(zi−1)+dwilog(1−σ(zi−1))
将z_i代入得:
L(w,i)=(1−dwi)logσ(XTwθi−1)+dwilog(1−σ(XTwθi−1) - 求函数
L(w,i) 对w 和θi−1 求偏导数:
∂L(w,i)∂Xw=(1−dwi−11+e−XTwθi−1)θi−1∂L(w,i)∂θi−1=(1−dwi−11+e−XTwθi−1)XTw - 那么,参数
θi−1 的更新公式如下所示:
θi−1:=θi−1+η(1−dwi−11+e−XTwθi−1)XTw
我们的目的是求每个词的词向量,那么,给出词向量的更新公式:对于每个w∈context(w) ,都有:
v(w):=v(w)+η∑i=2lw(1−dwi−11+e−XTwθi−1)θi−1