net建站系统,融资融券配资网站建设,wordpress 个人资料按钮,招聘网站建设流程图刚从前一个坑里#xff0c;勉强爬出来#xff0c;又掘开另一坑 看了很多文章B站up主。。。糊里糊涂 但是我发觉#xff0c;对于不理解的东西#xff0c;要多看不同up主写的知识分享 书读百遍#xff0c;其意自现#xff0c;我是不相信的#xff0c;容易钻牛角尖 但是勉强爬出来又掘开另一坑 看了很多文章B站up主。。。糊里糊涂 但是我发觉对于不理解的东西要多看不同up主写的知识分享 书读百遍其意自现我是不相信的容易钻牛角尖 但是可以多看看一千个哈姆雷特的想法想法积累多了一定有那么一刻让人灵光乍现 拍脑顿悟原来如此 给我顿悟的是CSDN的一篇文章Word2Vec详解-公式推导以及代码 CSDN啊听大神一席话如长夜得明灯啊 倒不是其他的文章和up主没有解释过负采样但这篇能让我顿悟的点在于前后对比 我根据它的话理解应该就是除了正确的待预测关键词是正样本其他关键词都是负样本而负采样方式主要是对负样本里抽取一些负样本来计算梯度并进行反向传播的迭代 这就要拿出之前的基于矩阵的CBOW模型来对比看在基于矩阵参数的CBOW模型中是采用多分类的极大似然估计法来计算一个上下文与所有关键词的关系值的softmax函数值并同时对所有关键词的u参数向量进行迭代
假设词典D里有N个关键词那么一个上下文就要对N个关键词进行它们的softmax值并进行N个u向量的迭代
如果整个语料库有成千上万个上亿个上下文需要预测那么整个训练的计算量那可是肥肠肥肠大
因此为了降低训练的计算量可以从N个关键词的计算入手N个关键词都要计算sigmoid的概率值和迭代难度太大能不能只对部分的关键词进行计算和迭代呢 当然可以
因此这就是negative sampling负采样的算法目的在N个关键词中只抽取部分关键词来计算和迭代
首先讲讲抽取原理负采样
负采样原理
负采样就是从一堆负样本中抽取一部分来进行训练
那么如何抽取负样本呢
负样本抽取
一般是采取 高频词汇抽取概率更大 的原则。
具体程序可以另行设计比如统计词频后将所有关键词排列成一系列的数据范围词频大的数据范围也比较大词频小的数据范围也比较小可设计程序实现
然后通过随机数落在哪个范围就抽取哪个词的方式来实现抽样
负样本训练
负样本训练是将抽取到的负样本不正确的关键词和上下文对应的正样本正确的待预测关键词一起进行计算和迭代。
首先负样本训练与【基于矩阵】的计算式是不一样的
【基于矩阵】的计算式是计算一个上下文与所有关键词的关系概率再对所有关键词的参数向量u进行迭代 但如果我们进行负采样后一个上下文就只需要跟这些负样本和它的正样本进行计算和迭代
因此所有的关键词累加符 Σ w ∈ D Σ_{w∈D} Σw∈D就改为正样本和负样本的关键词累加符 Σ w w ∗ ∪ w ∈ w ~ Σ_{ww^*∪{w∈\tilde{w}}} Σww∗∪w∈w~ 下方的 u u u迭代不再是针对所有每一个关键词的迭代而是抽样得到的负样本正样本的迭代。 待思考的问题
负抽样是对每一个上下文都分别进行一次负抽样吗
这样太麻烦了不妨直接在一次正向反向传播中只进行一次负抽样
因为负抽样只与关键词在语料中的词频相关以及随机的运气与上下文并无关系
因此在对所有上下文进行负采样的迭代计算时可以用同一批负样本进行计算。 至此我觉得已经非常清晰了并且参考了大神的word2vec中的数学原理详解 应该就是这样的 负采样不是基于huffman树的hierarchicalsoftmax模型而是基于输出层的参数是矩阵的基础CBOW模型并对这个基础模型进行负采样的优化计算。 待我以后有空再试着用代码试试