• Glove 细节介绍


    Glove全称Global Vectors for Word Representation,是目前应用范围最广的词向量,但是它基于通用语料训练,所以适合通用语言的自然处理任务,如果你的词库是领域特定词库,使用word2vec或者fasttext自己训练会比较好。

    Glove模型可以简单概括为:基于通用语料,获得词频统计,学习词语表征)

    从语料中通过统计方式提取一个共现矩阵 X X X X i j X_{ij} Xij表示的是单词i和单词j出现在同一个窗口中的频率(单词i和j出现在同一个上下文中的频率)。

    模型公式

    J = ∑ i , j N f ( X i , j ) ( v i T v j + b i + b j − l o g ( X i , j ) J=sum_{i,j}^{N}f(X_{i,j})(v_i^Tv_j+b_i+b_j-log(X_{i,j}) J=i,jNf(Xi,j)(viTvj+bi+bjlog(Xi,j)
    v i v_i vi v j v_j vj即为单词i和j的词向量, b i b_i bi b j b_j bj是两个标量(偏差项,不能省略,会破坏对成型,在推导过程中你会明白为什么不能省略)。 f ( x ) f(x) f(x)是一个权重函数, N N N表示词汇表大小(共现矩阵维度为 N ∗ N N*N NN)。Glove没有使用神经网络,从这一点来讲,是无监督的学习方式,但是在公式推导过程中,你会发现它也能被看作是监督学习的方式。

    推导过程如下

    定义 X i X_i Xi为如下,你可以理解为出现单词i的频率之和。
    X i = ∑ j = 1 N X i , j X_i=sum_{j=1}^{N}X_{i,j} Xi=j=1NXi,j
    即矩阵单词i那一行的和。

    条件概率 P i , k P_{i,k} Pi,k
    P i , k = X i , k X i P_{i,k} = frac{X_{i,k}}{X_i} Pi,k=XiXi,k
    表示单词k出现在单词i语境中的条件概率。

    两个条件概率的比率:
    r a t i o i , j , k = P i , k P j , k ratio_{i,j,k}=frac{P_{i, k}}{P_{j,k}} ratioi,j,k=Pj,kPi,k
    作者认为这个比率蕴含语义信息:

    r a t i o i , j , k ratio_{i,j,k} ratioi,j,k单词j,k相关单词j,k不相关
    单词i,k相关 → 1 ightarrow1 1 → ∞ ightarrow infty
    单词i,k不相关 → 0 ightarrow0 0 → 1 ightarrow1 1

    如果训练得到的词向量能通过某种函数记为 g ( v i , v j , v k ) g(v_i,v_j,v_k) g(vi,vj,vk)计算出的 r a t i o i , j , k ratio_{i,j,k} ratioi,j,k能有同样的规律,那么可以认为词向量已经编码了共现矩阵所蕴含的语义信息。

    也就是说我们希望
    r a t i o i , j , k = P i , k P j , k = g ( v i , v j , v k ) ratio_{i,j,k}=frac{P_{i, k}}{P_{j,k}}=g(v_i,v_j,v_k) ratioi,j,k=Pj,kPi,k=g(vi,vj,vk)尽可能接近。

    使用MSE作为代价函数
    J = ∑ i , j , k N ( P i , k P j , k − g ( v i , v j , v k ) ) 2 J=sum_{i,j,k}{N}(frac{P_{i,k}}{P_{j,k}}-g(v_i,v_j,v_k))^2 J=i,j,kN(Pj,kPi,kg(vi,vj,vk))2

    g ( v i , v j , v k ) g(v_i,v_j,v_k) g(vi,vj,vk)有如下三方面的考虑:

    1. 考虑 v i v_i vi v j v_j vj之间的关系,应该有 v i − v j v_i-v_j vivj
    2. r a t i o i , j , k ratio_{i,j,k} ratioi,j,k是标量,为了得到标量,可以使用内积 ( v i − v j ) T v k (v_i-v_j)^Tv_k (vivj)Tvk
    3. 不能为负值,使用exp函数,得 g ( v i , v j , v k ) = e x p ( ( v i − v j ) T ) v k g(v_i,v_j,v_k)=exp((v_i-v_j)^T)v_k g(vi,vj,vk)=exp((vivj)T)vk

    综上:
    P i , k P j , k = e x p ( ( v i − v j ) T ) v k ) = e x p ( v i T v k − v j T v k ) frac{P_{i, k}}{P_{j,k}}=exp((v_i-v_j)^T)v_k)=exp(v_i^Tv_k-v_j^Tv_k) Pj,kPi,k=exp((vivj)T)vk)=exp(viTvkvjTvk)

    P i , k P j , k = e x p ( v i ) T e x p ( v j ) T frac{P_{i,k}}{P_{j,k}}=frac{exp(v_i)^T}{exp(v_j)^T} Pj,kPi,k=exp(vj)Texp(vi)T

    实现这个优化目标,只需要拟合分子分母即可,而分子分母同型,我们可以简化为这一目标
    P i , j = e x p ( v i T v j ) P_{i,j}=exp(v_i^Tv_j) Pi,j=exp(viTvj)

    两边取对数

    l o g ( P i , j ) = v i T v j log(P_{i,j})=v_i^Tv_j log(Pi,j)=viTvj

    代价函数简化为:
    J = ∑ i , j N ( v i T v j − l o g ( P i , j ) ) 2 J=sum_{i,j}^{N}(v_i^Tv_j-log(P_{i,j}))^2 J=i,jN(viTvjlog(Pi,j))2

    这里存在一个问题, l o g ( P i , j ) = v i T v j log(P_{i,j})=v_i^Tv_j log(Pi,j)=viTvj l o g ( P j , i ) = v j T v i log(P_{j,i})=v_j^Tv_i log(Pj,i)=vjTvi l o g ( P i , j ) log(P_{i,j}) log(Pi,j)等于 l o g ( P j , i ) log(P_{j,i}) log(Pj,i)但是 v i T v j v_i^Tv_j viTvj不等于 v j T v i v_j^Tv_i vjTvi。这就是为什么要加上偏差项。

    J = ∑ i , j N ( v i T v j + b i + b j − l o g ( P i , j ) ) 2 J=sum_{i,j}^{N}(v_i^Tv_j+b_i+b_j-log(P_{i,j}))^2 J=i,jN(viTvj+bi+bjlog(Pi,j))2

    最后,每一个单词组合的权重应该不一样,所以引入权重函数
    J = ∑ i , j N f ( X i , j ) ( v i T v j + b i + b j − l o g ( X i , j ) ) 2 J=sum_{i,j}^{N}f(X_{i,j})(v_i^Tv_j+b_i+b_j-log(X_{i,j}))^2 J=i,jNf(Xi,j)(viTvj+bi+bjlog(Xi,j))2

    权重函数:
    f ( x ) = { x x m a x 0.75 , i f   x < x m a x 1 , i f   x > = x m a x f(x)=egin{cases} frac{x}{x_{max}}^{0.75}, & if x < x_{max} \ 1, & if x >= x_{max} end{cases} f(x)={xmaxx0.75,1,if x<xmaxif x>=xmax
    即频率越高权重越大,但是也不能过分增大。

    参考 (如果你觉得这里不详细的话,可以看下面这篇)

    理解GloVe模型(+总结)

  • 相关阅读:
    Java Logger 使用总结
    java中用Eclipse打JAR包,包含外部JAR
    安装e(fx)clipse到Eclipse (JavaFX工具)
    肾亏怎么办 下面给你支支招
    汇编cmp比较指令详解
    eclipse安装插件报错Unable to read repository at
    Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
    Java开发桌面程序学习(二)————fxml布局与控件学习
    JavaFX入门(二):JavaFX和FXML
    Apache Tomcat 文件包含漏洞 (CVE20201938) 复现
  • 原文地址:https://www.cnblogs.com/wanghongze95/p/13842424.html
Copyright © 2020-2023  润新知