iis7.0配置网站,北京网页设计公司兴田德润实惠,昆明网站建设流程,余杭区网站建设设计公司文章目录 Word2Vec如何优化从中间层到输出层的计算#xff1f;用负采样优化中间层到输出层的计算负采样方法的关键思想负采样的例子负采样的采样方法 Word2Vec如何优化从中间层到输出层的计算#xff1f;
重要性#xff1a;★★
用负采样优化中间层到输出层的计算
以词汇… 文章目录 Word2Vec如何优化从中间层到输出层的计算用负采样优化中间层到输出层的计算负采样方法的关键思想负采样的例子负采样的采样方法 Word2Vec如何优化从中间层到输出层的计算
重要性★★
用负采样优化中间层到输出层的计算
以词汇量为 100 万个、中间层的神经元个数为 100 个的 wod2vecCBOW 模型为例word2vec 进行的处理如下图所示.
词汇量为100万个时的word2vec上下文是you和goodbye目标词是say :
词汇量是 100 万个的情况下模型输出时需要预测所有词100万个的概率。此时在以下两个地方需要很多计算时间
问题1中间层的神经元和权重矩阵 W o u t W_{out} Wout的乘积这个问题在于巨大的矩阵乘积计算问题2Softmax 层的计算随着词汇量的增加Softmax 的计算量也会增加。
因为假定词汇量是 100 万个Softmax的分母需要进行 100 万次的 exp 计算。这个计算也与词汇量成正比因此需要一个可以替代 Softmax 的“轻量”的计算。我们将采用名为负采样negative sampling 的方法作为解决方案使用 Negative Sampling 替代 Softmax无论词汇量有多大都可以使计算量保持较低或恒定。
负采样方法的关键思想
负采样方法的关键思想在于二分类binary classification更准确地说是用二分类拟合多分类multiclass classification这是理解负采样的重点。现在我们来考虑如何将多分类问题转化为二分类问题。
比如让神经网络来回答“当上下文是 you 和 goodbye 时目标词是 say 吗”这个问题这时输出层只需要一个神经元即可。可以认为输出层的神经元输出的是 say 的得分。此时 CBOW 模型进行什么样的处理呢如下图所示仅计算目标词的得分的神经网络。 输出层的神经元仅有一个。因此要计算中间层和输出侧的权重矩阵的乘积只需要提取 say 对应的列单词向量并用它与中间层的神经元计算内积即可。这个计算的详细过程如下图所示 进行二分类的CBOW模型的全貌图
至此我们成功地把要解决的问题从多分类问题转化成了二分类问题。但是这样问题就被解决了吗很遗憾事实并非如此。因为我们目前仅学习了正例正确答案还不确定负例错误答案会有怎样的结果。 为了把多分类问题处理为二分类问题对于“正确答案”正例和“错误答案”负例都需要能够正确地进行分类二分类。 那么我们需要以所有的负例为对象进行学习吗答案显然是“No”。如果以所有的负例为对象词汇量将暴增至无法处理。为此作为一种近似方法我们将选择若干个5 个或者 10 个负例如何选择将在下文介绍。也就是说只使用少数负例。这就是负采样方法的含义。 总而言之负采样方法既可以求将正例作为目标词时的损失同时也可以采样选出若干个负例对这些负例求损失。然后将这些数据正例和采样出来的负例的损失加起来将其结果作为最终的损失。 负采样的例子
负采样的例子只关注中间层之后的处理画出基于层的计算图
负采样的采样方法
负采样的采样方法基于语料库的统计数据进行采样的方法比随机抽样要好。基于语料库中单词使用频率的采样方法会先计算语料库中各个单词的出现次数并将其表示为“概率分布”然后使用这个概率分布对单词进行采样。
根据概率分布多次进行采样的例子
为了防止低频单词被忽略。word2vec 中提出的负采样对刚才的概率分布增加了一个步骤对原来的概率分布取 0.75 次方。通过这种方式取 0.75 次方作为一种补救措施使得低频单词稍微更容易被抽到。此外0.75 这个值并没有什么理论依据也可以设置成0.75 以外的值。
利用“部分”数据而不是“全部”数据这是一个重要思想。正如人不能全知全能一样以当前的计算机性能要处理所有的数据也是不现实的。相反仅处理对我们有用的那一小部分数据会有更好的效果。负采样技术就是基于这种思想设计的通过仅关注部分单词实现了计算的高速化。