• GloVe词分布式表示


    GloVe 模型介绍

    下面的内容主要来自https://blog.csdn.net/u014665013/article/details/79642083

    GloVe的推导

    GloVe是基于共现信息来获得词的分布表示的,所以需要统计词的共现对信息。在设定的窗口内,统计中心词(k)与其上下文词(i)的共现次数(X_{i,k})。那么有

    [P_{i,k} = dfrac{X_{i,k}}{X_i} ]

    其中

    [X_i = sum_{j}X_{i,j} ]

    作者发现对于任意三个词(i,j,k), $$
    ratio_{i,j,k} = dfrac{P_{i,k}}{P_{j,k}}

    [存在以下关系 | $ratio_{i,j,k}$ | 单词$j,k$相关 | 单词$j,k$不相关 | | ------ | ------ | ------ | |单词$i,k$相关| 趋近1 | 很大 | |单词$i,k$不相关|很小|趋近1| GloVe模型要做的就是建模上述关系,因此需要寻找一个函数$g$,使得 ]

    dfrac{P_{i,k}}{P_{j,k}} = g(v_i, v_j, v_k)

    [一个较为直观的做法就是 ]

    g(v_i,v_j,v_k) = exp(v_i^Tv_k - v_j^Tv_k) = dfrac{exp (v_iTv_k)}{exp(v_jTv_k)} = dfrac{P_{i,k}}{P_{j,k}}

    [所以,对于任意的词$i,k$,仅需要使得$v_i^Tv_k = log P_{i,k}$即可,便可得到目标函数 ]

    J= sum_{i,k}N(v_iTv_k - log P_{i,k})^2

    [等等,这个方法似乎存在问题,因为$log P_{i,k}$ 不等于$log P_{k,i}$但是$v_i^Tv_j = v_j^Tv_i$,这样需要进行补救一下 ]

    log P_{i,k} = log(X_{i,k}) - log(X_i) = v_i^Tv_k

    [此时引入两个偏置$b_i, b_j$, 使得 ]

    log(X_{i,k}) = v_i^Tv_k + b_i + b_k

    [$log(X_i)$被偏置项吸纳。进而,我们的优化目标变为 ]

    J = sum_{i,k}f(X_{i,k})(v_i^Tv_j+b_i+b_k - log(X_{i,k}))^2

    [其中$f(X_{i,k})$为一个常量,其计算如下 ]

    f(x) = egin{cases}
    (x/xmax)^0.75 & x < xmax
    1 & x ge xmax
    end{cases}

    [其作用是某些词频率过高,通常没有多大的意义,比如停用词,所以不能给过高的权重,此处的xmax是一个超参数。 ## 如何理解Global GloVe 即Global Vectors,如word2vec一样,都有滑动窗口,那么Global体现在哪里? 从上面的推导过程中,我们不难发现,GloVe在参数的训练前,就已经统计好了一个共现矩阵,而这个共现矩阵是全局的,是整个语料的,然后再基于此进行参数学习,而word2vec在参数学习的时候,是局部的,每次只在一个窗口内的学习,只利用到了该窗口内的信息,比如cbow,每次都是基于单个窗口内的上下文词预测中心词。]

  • 相关阅读:
    作为面试官,中级应用级Web前端我会问什么问题
    vue相关项目提示 Failed to resolve Loader: sass-loader
    [Vue warn]: Error in beforeDestroy hook: "Error: [ElementForm]unpected width
    JVM调优方法
    HTTP协议—— 简单认识TCP/IP协议
    关于软件的版本管理
    开源数据库
    PE51
    浅谈限流组件的应用和设计原则
    Spring+AspectJ框架使用实践
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/9921815.html
Copyright © 2020-2023  润新知