• word2vec改进之Negative Sampling


    训练网络时往往会对全部的神经元参数进行微调,从而让训练结果更加准确。但在这个网络中,训练参数很多,每次微调上百万的数据是很浪费计算资源的。那么Negative Sampling方法可以通过每次调整很小的一部分权重参数,从而代替全部参数微调的庞大计算量。

    词典D中的词在语料C中出现的次数有高有低,对于那些高频词,我们希望它被选为负样本的概率比较大,对于那些低频词,我们希望它被选中的概率比较小,这是我们对于负采样过程的一个大致要求,本质上可以认为是一个带权采样的问题。

    一、基于Negative Sampling的CBOW模型

    输入:基于CBOW的语料训练样本,词向量的维度大小Mcount,CBOW的上下文大小2c,步长η, 负采样的个数neg

    输出:词汇表每个词对应的模型参数θ,所有的词向量xw

    1. 随机初始化所有的模型参数θ,所有的词向量w

    2. 对于每个训练样本(context(w0),w0),负采样出neg个负例中心词wi,i=1,2,...neg

    3. 进行梯度上升迭代过程,对于训练集中的每一个样本(context(w0),w0,w1,...wneg)做如下处理:

     

     

     

     

     

    d) 如果梯度收敛,则结束梯度迭代,否则回到步骤3继续迭代。

     

    二、基于Negative Sampling的Skip-Gram模型

    输入:基于Skip-Gram的语料训练样本,词向量的维度大小Mcount,Skip-Gram的上下文大小2c,步长η, , 负采样的个数neg。

    输出:词汇表每个词对应的模型参数θ,所有的词向量xw

    1. 随机初始化所有的模型参数θ,所有的词向量w

    2. 对于每个训练样本(context(w0),w0),负采样出neg个负例中心词wi,i=1,2,...neg

    3. 进行梯度上升迭代过程,对于训练集中的每一个样本(context(w0),w0,w1,...wneg)做如下处理:

     


    b)如果梯度收敛,则结束梯度迭代,算法结束,否则回到步骤a继续迭代。

    参考内容:

    https://www.cnblogs.com/pinard/p/7249903.html

  • 相关阅读:
    Dev 控件笔记1 repositoryItemLookUpEdit 控件
    装饰账务管理
    Tiptop ERP 采购运费一键分摊
    笔记:两数互相交换,不使用第三方变量
    .net core3.0 webapi搭建(一)
    【笔记】冒泡排序
    Mysql 几种常见的插入 Insert into,Replace Into,Insert ignore
    【转】IEnumerable接口的一个简单示例
    [转]从实例谈OOP、工厂模式和重构
    浅谈C#委托的用法-delegate[转]
  • 原文地址:https://www.cnblogs.com/r0825/p/10990724.html
Copyright © 2020-2023  润新知