Word2Vec介绍了:为什么使用“负采样”(negtive sample )。 1 .随机梯度下降法有什么问题? 通过在成本函数中求出权重梯度,将所有参数一次
进行优化,但每次在所有计算完成后升级优化,我们都会等待很长时间(对于大语料库)。
因此,我们采用了“随机梯度下降”。 也就是说,每次计算完成时都要升级。
但是,存在两个问题,目前模型的效率降低了!
第一个问题是,我们一次只升级窗口中出现的几个单词,但在计算梯度的过程中,我们计算整个参数矩阵,使参数矩阵中的大部分值为0。
计算效率低!
第二个问题:我们使用的目标函数是softmax函数
观察分母,分母需要计算窗口中所有单词的“得分”并求和,效率很低!
softmax函数也称为归一化指数函数。 这是二分类函数sigmoid在多分类中的推广,目的是概率地表现多分类的结果。 下图显示了如何计算softmax。
让我来解释一下为什么softmax是这样的形状吧。
首先,我们知道概率有两个性质。 1 )预测概率不是负2 )各预测结果概率之和等于1。
softmax是将从负无限到正无限的预测结果在这两个阶段中进行概率变换的装置。
1 )将预测结果转换为非负数
下图是y=exp(x )的图像,可见指数函数值域的取值范围从零到正是无限的。 softmax的第一步是将模型的预测结果转换为指数函数。 这样就保证了概率的非负性。
2 )各预测结果概率之和等于1
为了使各预测结果的概率之和为1。 只需将转换后的结果规范化。 方法是将变换后的结果除以所有变换后的结果之和,可以理解为变换后的结果占总数的比例。 这样可以得到近似的概率。
举个例子吧。 假设模型对三分类问题的预测结果为-3、1.5、2.7。 使用softmax将模型结果转换为概率。 步骤如下。
1 )将预测结果转换为非负数
y1=exp(x1 )=exp(-3 )=0.05
y2=exp(x2 )=exp (1.5 )=4.48
y3=exp(x3 )=exp (2.7 )=14.88
2 )各预测结果概率之和等于1
Z1=Y1/(Y1Y2Y3 )=0.05/(0. 054.4814.88 )=0.0026
Z2=Y2/(Y1Y2Y3 )=4.48/(0. 054.4814.88 )=0.2308
Z3=Y3/(Y1Y2Y3 )=14.88/(0. 054.4814.88 )=0.7666
总结softmax如何将多分类输出转换为概率,可以分为以下两个步骤:
1 )通过分子)指数函数,将实数输出从零映射到正无限。
2 )分母)将所有结果相加并归一化。
2 .使用负采样负采样的核心思路是计算目标单词和窗口中单词的真实单词对“得分”,添加词表中随机单词和目标单词的“得分”——“噪声”
真正的单词对“得分”和“噪声”作为代价函数。
每次优化参数时,只关注与成本函数相关的单词向量。
公式如下所示。
我用上述公式解决了前面提到的两个问题。
1 .只采样k个参数
放弃softmax函数,采用sigmoid函数。 这样,就不会先求一次窗口中所有单词的“得分”。
3 .既然计算坡度的成本函数已更新,就需要更新坡度。
请先想想。 我们想寻求指导的目标,也就是向谁寻求指导?
答案是导出我们想优化的参数。 如上所述,负采样的目的是不需要优化整个向量矩阵u或v,而仅仅优化在成本求解过程中相关的词语向量。 因此,导出对象是目标矢量
窗口中的其他单词向量和负采样时随机选择的单词向量。
这篇文章关注的问题不是求导的过程,所以下面直接给出梯度: