泉州服装电商网站建设,鞍山市建设局网站,东莞高端网站建设公司,电子商务网站开发背景我们在前面介绍的跳字模型与连续词袋模型有个缺陷就是在计算梯度时的开销随着词典增大会变得很大#xff0c;因为每一步的梯度计算都包含词典大小数目的项的累加。为了降低这种带来的计算复杂度#xff0c;介绍两种近似的处理方案#xff1a;负采样和层序softmax负采样(Nega…我们在前面介绍的跳字模型与连续词袋模型有个缺陷就是在计算梯度时的开销随着词典增大会变得很大因为每一步的梯度计算都包含词典大小数目的项的累加。为了降低这种带来的计算复杂度介绍两种近似的处理方案负采样和层序softmax负采样(Negative Sampling)我们回顾下跳字模型给定中心词生成背景词的条件概率该条件概率相应的对数损失如下表示可以看到softmax运算考虑了背景词可能是词典V中的任一词以上损失包含了词典大小数目的项的累加复杂度大于是出现新的方法来降低复杂度。负采样修改了原来的目标函数给定中心词的一个背景窗口我们把背景词出现在该窗口当作一个事件该事件的概率计算为 其中的σ是sigmoid激活函数我们先考虑最大化文本序列中所有该事件的联合概率来训练词向量。具体来说给定一个长度为T的文本序列时间步t的词为且背景窗口大小为m最大化联合概率然后这里的模型中包含的事件仅考虑了正样本这导致当所有词向量相等且值为无穷大时上述联合概率才被最大化为1很明显这样的词向量毫无意义。负采样通过采样并添加负类样本使目标函数更有意义。设背景词出现在中心词的一个背景窗口为事件P我们根据分布P(w)采样K个未出现在该背景窗口的词即噪声词。设噪声词(k1,...,K)不出现在中心词的该背景窗口为事件。假设同时含有正类样本和负类样本的事件P,,...,相互独立负采样将以上需要最大化的仅考虑正类样本的联合概率改写为其中条件概率被近似表示为设文本序列中时间步t的词在词典中的索引为i_t,噪声词w_k在词典中的索引为h_k,有关以上条件概率的对数损失为现在的训练中每步的梯度计算开销就不再跟词典大小有关而跟K线性相关。所以当K较小时负采样每步的梯度计算开销较小。最后两步的推导使用sigmoid激活函数验证下是等价的import numpy as np
np.log(sigmoid(-np.array([0.2,0.4,-0.8])))
np.log(1-sigmoid(np.array([0.2,0.4,-0.8])))
#array([-0.79813887, -0.91301525, -0.37110067])层序softmax另一种近似训练法就是层序softmax使用的是二叉树这样的数据结构树的每个叶节点代表词典V中的每个词假设L(w)为从二叉树的根节点到词w的叶节点的路径(包括根节点和叶节点)上的结点数。设n(w,j)为该路径上第j个结点并设该节点的背景词向量为画图来看下层序softmax将跳字模型中的条件概率近似表示为其中leftChild(n)表示结点n是否是左子节点如果是的话就是1反之为-1这里我们来计算下从给定词生成词的条件概率(方向经过左-右-左)我们需要将的词向量和根节点到路径上的非叶节点向量一一求内积。由于 给定中心词生成词典V中任一词的条件概率之和为1这一条件也满足此外由于L()-1的数量级为O()当词典V很大时层序softmax训练中每一步的梯度计算开销相较未使用近似训练时大幅降低。