1.论文储备知识
语言模型
概念:计算一个句子是句子的概率的模型
基于专家语法规则的语言模型:语言学家企图总结出一套通用的语言规则,比如形容词后面接名词等。(淘汰)
统计语言模型:通过概率计算来刻画语言模型。
P(s)=P(w1,w2,...,wn)=P(w1)P(w2|w1)P(w3|w1w2)...P(wn|w1w2...wn-1)
统计语言模型中的平滑操作:有一些词或者词组在语料中没有出现,但它依旧可能存在。平滑操作就是给那些没有出现过的词或者词组一个比较小的概率。
Laplace Smoothing也称为加1平滑:每个词在原来出现次数的基础上加1。
平滑操作的问题:参数空间过大(P(wi)以及P(wi|wj)太多),数据稀疏严重(只有少部分的参数是有用的)。
马尔科夫假设:下一个词的出现仅依赖前面的一个词或几个词。——unigram/bigram/trigram/k-gram
语言模型评价指标:困惑度(Perplexity)——句子概率越大,语言模型越好,困惑度越小。
2.word2vec
1)log-linear model
将语言模型的建立看成一个多分类问题,相当于线性分类器加上softmax。
Y=softmax(wx+b)
语言模型基本思想:句子中下一个词的出现和前面的词是有关系的,所以可以使用前面的词预测下一个词。
Word2vec基本思想:句子中相近的词之间是有联系的,比如今天后面经常出现上午,下午和晚上。所以Word2vec的基本思想是用词来预测词,skip-gram使用中心词预测周围词,cbow使用周围词预测中心词。
2)skip-gram
wi-经过word2id的一个索引 1*V-wi的onehot编码 W-中心词矩阵
1*D-wi的词向量 W*-周围词矩阵 1*V-经过softmax的概率向量
input:wi lable:wi-1
训练时通过让概率向量中第i-1个概率最大反向传播更新W和W*
训练出来的词向量:①W;②(W+W*)/2
损失函数:
T-词语数量;m-窗口大小
一个中心词可以生成2*window-size个样本。
3)CBOW
wi*-经过word2id的索引 1*V-onehot编码 W-周围词矩阵
1*D-wi*的各个词向量以及他们的加和或者平均值 W*-中心词矩阵
1*V-经过softmax的概率向量
input:wi-2,wi-1,wi+1,wi+2 lable:wi
训练时通过让概率向量中第i个概率最大反向传播更新W和W*
训练出来的词向量:①W;②(W+W*)/2
损失函数-
一个中心词生成一个样本,使用周围词来预测中心词。
3.加速训练
1)负采样
舍弃多分类,提升速度。并且效果比多分类还要好。
选择正确的中心词和正确的周围词组成正样本,再随机选择不正确的K个词组组成负样本。增大正样本概率减小负样本概率,对于每个词一次要输出一个概率,总共K+1个(K个负样本,1个正样本,K取3~10),远小于V。
如何采样:
2)重采样
文档或者数据集中出现频率高的词携带的信息少而出现频率低的词携带信息多
重采样的原因:想更多地训练重要的词对,比如训练France和Paris之间的关系比训练France和the之间的关系要有用;
高频词很快就训练好了,而低频词需要更多的轮次。
重采样方法:
词频越大,f(wi)越大,P(wi)越大,那么词wi就有更大的概率就被删除,反之亦然。如果词wi的词频小于t,那么wi不会被删除。
优点:加速训练,得到更好的词向量。
4.模型复杂度
O=E✖T✖Q
O-训练复杂度 E-训练迭代次数 T-数据集大小 Q-模型复杂度
对模型的复杂度做分析:N个上文词,D词向量的维度,V词表的大小,H隐藏层大小
NNLM:Q=N*D+N*D*H+H*V
RNNLM:Q=1*D+D*H+H*H+H*V(D≈H)≈(1+2H)H+H*V
skip-gram:Q=C(周围词个数)*(D+D*V/logV)
NEG-skip-gram:Q=C(D+D*(K+1))
CBOW:Q=N*D+D*V/logV
NEG-CBOW:Q=N*D+D*(K+1) ps.K一般取3~10,不超过14一般都快于层次sofmax
5.启发点
大数据集上的简单模型往往强于小数据集上的复杂模型
King的词向量减去Man的词向量加上Woman的词向量和Queen的词向量最接近
设计简单的模型训练词向量可以在更多的数据上更快的训练
在更大的数据集上使用更大的词向量维度能够训练得到更好的词向量