GloVe模型训练

GloVe全称是Global Vectors,原文在这里,是2014年提出的模型。下面先对模型做一个大致的解释,然后讨论训练方法。有不当之处请指正。

两类学习词向量的家族:
1 全局矩阵分解方法:像LSA(latent semantic analysis),有效的利用语料库的统计信息,但是在单词类比任务上做的较差。
2 局部上下文窗口方法:像skip-gram模型,在类比任务上表现较好,但是没有利用语料库的统计信息。

模型有效地利用了统计信息,它对共现矩阵中的非零元素进行训练,而不是对整个稀疏矩阵或大型语料库中的单个上下文窗口进行训练。在一次单词类比任务中,表现为75%。在相似度任务和命名实体识别方面,它也优于相关模型。

根据原文的推导,最后的损失函数为
J = ∑ i , j = 1 V f ( X i j ) ( w i T w ~ j + b i + b ~ j − log ⁡ X i j ) 2 J=\sum_{i, j=1}^{V} f\left(X_{i j}\right)\left(w_{i}^{T} \tilde{w}_{j}+b_{i}+\tilde{b}_{j}-\log X_{i j}\right)^{2} J=i,j=1Vf(Xij)(wiTw~j+bi+b~jlogXij)2
其中, X ∈ R ∣ V ∣ × ∣ V ∣ X\in R^{|V|\times|V|} XRV×V为共现矩阵, X i j X_{ij} Xij表示单词 w o r d j word_j wordj出现在单词 w o r d i word_i wordi的上下文中的次数, ∣ V ∣ |V| V是语料库的大小, w ∈ R d w\in R^d wRd是词向量, w ~ ∈ R d \tilde w\in R^d w~Rd是上下文词向量, b i , b ~ j b_i, \tilde b_j bi,b~j是偏置, f f f为权重函数。

原文中 f ( x ) = { ( x / x max ⁡ ) α  if  x < x max ⁡ 1  otherwise  f(x)=\left\{\begin{array}{cc} \left(x / x_{\max }\right)^{\alpha} & \text { if } xf(x)={(x/xmax)α1 if x<xmax otherwise 
其中 x m a x = 100 , α = 0.75 x_{max}=100, \alpha=0.75 xmax=100,α=0.75

训练

  1. 构建共现矩阵,这个应该不难构建出来。
  2. 设定单词的维度 d i m dim dim,随机初始化矩阵 W ∈ R ∣ V ∣ × d i m W\in R^{|V|\times dim} WRV×dim, C ∈ R ∣ V ∣ × d i m C\in R^{|V|\times dim} CRV×dim,向量 b w ∈ R ∣ V ∣ , b c ∈ R ∣ V ∣ b_w\in R^{|V|}, b_c\in R^{|V|} bwRV,bcRV.
  3. 根据损失函数的形式构建计算图
 self.model = tf.tensordot(self.W, tf.transpose(self.C), axes=1) + \
                     tf.tensordot(self.bw, tf.transpose(self.ones), axes=1) + \
                     tf.tensordot(self.ones, tf.transpose(self.bc), axes=1)
  1. 计算权重矩阵 f ( X i j ) f(X_{ij}) f(Xij)以及矩阵log X i j X_{ij} Xij,程序中以自然底数 e e e为底。
  2. 计算损失函数,此处程序将损失函数乘了0.5
  3. 采用Adagrad优化参数 W , C , b w , b c W, C, b_w, b_c W,C,bw,bc
  4. 返回矩阵 W + C W+C W+C,这个地方不明白为什么两个矩阵相加。

[1] Pennington J, Socher R, Manning C D. Glove: Global vectors for word representation. in: Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014, 1532-1543.
[2] https://github.com/roamanalytics/mittens

你可能感兴趣的:(自然语言处理)