贪心自然语言处理高级魔鬼训练营
首先介绍CBOW模型,它是一个三层神经网络,通过上下文预测中心词。以某个训练数据"I drink apple juice"为例,可以把apple作为标签值先剔除,将"I drink juice"作为输入,apple作为待预测的中心词。
输入层: x_i 是上下文中第i个单词的one-hot向量,长度为 V 。比如在训练数据I drink _ juice中,x_2就是词"drink"的one-hot向量。V是词库中词的总数,C是上下文中词的个数,k是训练集的大小。
隐藏层:输入层x_i乘上W_{V \times N}求和即得到隐藏层,公式为\sum_{i=1}^C x_i \times W_{V \times N}。其中,W_{V \times N}是一个二维矩阵,V是词的总数,N代表着词的特征向量,长度可自定义。这个矩阵的每一行即可看作每个词对应的特征向量,而x_i \times W_{V \times N}就相当于取第i个词对应的特征向量。隐藏层没有激活函数,最后输出是一个1 \times N的向量。
输出层:输出层是中心词的预测值,一个1 \times V的向量。它由隐藏层输出乘上 W_{N \times V}' ,并通过softmax激活函数得到,向量中每个位置的值相当于对应词的概率。中心词预测值会与实际值比较,并通过损失函数计算出损失值,再求出梯度值反向传播,最终更新 W_{V \times N} 和 W_{N \times V}' 的值。