CS224N Word Vectors 2 and Word Senses

CS224N Word Vectors 2 and Word Senses

Optimization: Gradient Descent

梯度下滑迭代

θnew=θoldαθJ(θ)θjnew=θjoldαδδθjoldJ(θ)α,J(θ) \theta^{new} = \theta^{old} - \alpha \nabla_{\theta}J(\theta)\\ \theta_j^{new} = \theta_j^{old} - \alpha \frac{\delta}{\delta\theta_j^{old}}J(\theta)\\ 其中 \alpha为学习率或者步长,J(\theta)为损失函数

梯度下滑方法

Gradient Descent 每次使用全部样本进行更新

Stochastic Gradient Descent 每次只是用单个样本进行更新

Mini-batch具有以下优点:

  • 通过平均值,减少梯度估计的噪音
  • 在GPU上并行化运算,加快运算速度

基于统计的词向量

利用某个定⻓窗口中单词与单词同时出现的次数来产生window-based (word-word) co-occurrence matrix。

CS224N Word Vectors 2 and Word Senses

使用共现次数衡量单词的相似性,但是会随着词汇量的增加而增大矩阵的大小,并且需要很多空间来存 储这一高维矩阵,后续的分类模型也会由于矩阵的稀疏性而存在稀疏性问题,使得效果不佳。我们需要 对这一矩阵进行降维,获得低维(25-1000)的稠密向量。

Dimensionality Reduction on X

使用SVD方法将共现矩阵 X 分解为 UVTU\sum V^T\sum是对⻆线矩阵,对⻆线上的值是矩阵的奇异值。U,V 是对应于行和列的正交基。

为了减少尺度同时尽量保存有效信息,可保留对⻆矩阵的最大的k个值,并将矩阵U,V 的相应的行列保留。这是经典的线性代数算法,对于大型矩阵而言,计算代价昂贵。

Hacks to X

按比例调整 counts 会很有效

对高频词进行缩放(语法有太多的影响)

  1. ​ 使用log进行缩放
  2. ​ 直接全部忽视
  3. min(X,t),t100min(X,t), t \approx 100

在基于window的计数中,提高更加接近的单词的计数

使用Person相关系数

Glove

GloVe目标是综合基于统计和基于预测的两种方法的优点。

模型目标:词进行向量化表示,使得向量之间尽可能多地蕴含语义和语法的信息

流程:输入语料库–> 统计共现矩阵–> 训练词向量–>输出词向量

构建词向量和共现矩阵之间的关系

log-bilinear 模型 : wiwj=logP(ij)w_i\cdot w_j = logP(i|j)

向量差异 : wx(wawb)=logP(xa)P(xb)w_x\cdot (w_a-w_b) = log\frac{P(x|a)}{P(x|b)}

loss函数
J=i,j=1Vf(Xij)(wiTw~j+bi+b~jlog(Xij))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 \left(X_{i j}\right)\right)^{2}

  • 如果使向量点积等于共现概率的对数,那么向量差异变成了共现概率的比率
  • 使用平方误差促使点积尽可能得接近共现概率的对数
  • 使用f(x)对常⻅单词进行限制

优势

  • 训练快速
  • 可以扩展到大型语料库
  • 即使是小语料库和小向量,性能也很好

评估词向量

  • 内在
    • 对特定/中间子任务进行评估
    • 计算速度快
    • 有助于理解这个系统
    • 不清楚是否真的有用,除非与实际任务建立了相关性
  • 外在
    • 对真实任务的评估
    • 计算精确度可能需要很⻓时间
    • 不清楚子系统是问题所在,是交互问题,还是其他子系统
    • 如果用另一个子系统替换一个子系统可以提高精确度

内在词向量评估

词向量类比 a:b::c:?a:b :: c:?
d=argmaxi(xbxa+xc)Txixbxa+xc d = argmax_i\frac{(x_b-x_a+x_c)^Tx_i}{\|x_b - x_a +x_c \|}

  • 通过加法后的余弦距离是否能很好地捕捉到直观的语义和句法类比问题来评估单词向量
  • 从搜索中丢弃输入的单词