目录随机梯度下降法有什么问题?
负采样
计算坡度
1 .随机梯度下降法有什么问题?
通过在成本函数中求出权重梯度,可以一次将所有参数
进行优化,但每次在所有计算完成后升级优化,我们都会等待很长时间(对于大语料库)。
因此,我们采用了“随机梯度下降”。 也就是说,每次计算完成时都要升级。
但是,存在两个问题,目前模型的效率降低了!
第一个问题是,我们一次只升级窗口中出现的几个单词,但在计算梯度的过程中,我们计算整个参数矩阵,使参数矩阵中的大部分值为0。
计算效率低!
第二个问题:我们使用的目标函数是softmax函数
现在,观察一下分母吧。 分母必须计算窗口中所有单词的“得分”并相加,效率很低。
2 .使用负采样
负抽样的中心思想是计算目标单词和窗口中单词的真实单词对“得分”,并添加词表中随机单词和目标单词的“得分”——“噪声”。
真正的单词对“得分”和“噪声”作为代价函数。
每次优化参数时,只关注与成本函数相关的单词向量。
公式如下所示。
通过采用上述公式,解决了前面提到的两个问题。 只采样k个参数
我们放弃softmax函数,采用sigmoid函数。 这样,就不会先求窗口中所有单词的“得分”。
3 .坡度计算
成本函数已更新,需要更新坡度。
请先想想。 我们想寻求指导的目标,也就是向谁寻求指导?
答案是推导出我们想要优化的参数。 如上所述,负采样的目的是不需要整个向量矩阵
或者
为了不进行优化,而只优化在求出成本的过程中参与的词向量,引导对象是目标向量
窗口中的其他单词向量
和负采样时随机选择的单词向量。
这篇文章关注的问题不是求导的过程,所以下面直接给出梯度: