参考资料:
1 背景知识
1.1 统计语言模型
统计语言模型是基于语料库构建的概率模型,用来计算一个词串 W = ( w 1 , w 2 , ⋯ , w T ) W=(w_1,w_2,\cdots,w_T) W=(w1,w2,⋯,wT) 构成句子的概率:
p ( W ) = p ( w 1 , w 2 , ⋯ . w T ) = p ( w 1 ) p ( w 2 ∣ w 1 ) ⋯ p ( w T ∣ w 1 , w 2 , ⋯ , w T − 1 ) (乘法公式) \begin{align} p(W)&=p(w_1,w_2,\cdots.w_T)\\ &=p(w_1)p(w_2|w_1)\cdots p(w_T|w_1,w_2,\cdots,w_{T-1})(乘法公式) \end{align} p(W)=p(w1,w2,⋯.wT)=p(w1)p(w2∣w1)⋯p(wT∣w1,w2,⋯,wT−1)(乘法公式)
p ( W ) p(W) p(W) 被称为语言模型,(2)式中的每个因子即为语言模型的参数。理论上,只要我们根据语料库计算出所有的模型参数,就能对很方便地计算出任意词串构成句子的概率,但由于参数过多,这种方法是不现实的。
1.2 N-gram模型
N-gram 模型的基本思想是做 n − 1 n-1 n−1 阶 Markov 假设,即认为:
p ( w k ∣ w 1 , w 2 , ⋯ , w k − 1 ) = p ( w k ∣ w k − n + 1 ⋯ , w k − 1 ) ≈ c o u n t ( w k − n + 1 ⋯ , w k − 1 , w k ) c o u n t ( w k − n + 1 ⋯ , w k − 1 ) (大数定律) \begin{align} p(w_k|w_1,w_2,\cdots,w_{k-1})&=p(w_k|w_{k-n+1}\cdots,w_{k-1})\\ &\approx\frac{count(w_{k-n+1}\cdots,w_{k-1},w_k)}{count(w_{k-n+1}\cdots,w_{k-1})}(大数定律) \end{align} p(wk∣w1,w2,⋯,wk−1)=p(wk∣wk−n+1⋯,wk−1)≈count(wk−n+1⋯,wk−1)count(wk−n+1⋯,wk−1,wk)(大数定律)
其中, c o u n t ( W ) count(W) count(W) 表示词串 W W W 在语料库中出现的次数。
需要注意的是:根据实际意义,即使 c o u n t ( w k − n + 1 ⋯ , w k − 1 , w k ) = 0 count(w_{k-n+1}\cdots,w_{k-1},w_k)=0 count(wk−n+1⋯,wk−1,wk)=0,也不能认为 p ( w k ∣ w k − n + 1 ⋯ , w k − 1 ) = 0 p(w_k|w_{k-n+1}\cdots,w_{k-1})=0 p(wk∣wk−n+1⋯,wk−1)=0 ;同理,即使 c o u n t ( w k − n + 1 ⋯ , w k − 1 , w k ) = c o u n t ( w k − n + 1 ⋯ , w k − 1 ) {count(w_{k-n+1}\cdots,w_{k-1},w_k)}={count(w_{k-n+1}\cdots,w_{k-1})} count(wk−n+1⋯,wk−1,wk)=count(wk−n+1⋯,wk−1),也不能认为 p ( w k ∣ w k − n + 1 ⋯ , w k − 1 ) = 1 p(w_k|w_{k-n+1}\cdots,w_{k-1})=1 p(wk∣wk−n+1⋯,wk−1)=1,故 N-gram 模型往往需要进行平滑处理。
但这种方法的参数仍然很多,所以我们可以考虑构建一个函数 F = ( w , c o n t e x t ( w ) , θ ) F=(w,{\rm context}(w),\theta) F=(w,context(w),θ),通过极大似然估计的方式估计出参数 θ \theta θ:
L ( θ ) = ∑ w ∈ C log p ( w ∣ c o n t e x t ( w ) , θ ) L(\theta)=\sum\limits_{w\in C}\log p(w|{\rm context}(w),\theta) L(θ)=w∈C∑logp(w∣context(w),θ)
其中 C 为语料库。这样以来,所有条件概率的计算都可以通过计算 F ( w , c o n t e x t ( w ) , θ ^ ) F(w,{\rm context}(w),\hat\theta) F(w,context(w),θ^) 来完成。显然,如何构建 F F F 成为了这一方法的关键问题。
直白地说,就是从语料库中选择词及其上下文,让由上下文通过模型推出词的概率最大。
2 词向量
词向量:对词典中的任意词 w w w,指定一个固定长度的向量 v ( w ) ∈ R m v(w)\in\mathbb R^m v(w)∈Rm。
2.1 独热编码
One-Hot 编码的向量长度为词典大小,向量中只有一个 1 1 1 ,位置与该词在词典中的位置相对应。
这样的编码主要有如下问题:
- 向量维数过大。
- 无法表现词之间的相关性。
2.2 Distributed Representation
基本想法:将词映射到一个向量空间,并在向量空间中引入“距离”,用以刻画词之间的关联程度。
Word2Vec 就是生成词向量的经典模型。
3 Word2Vec
Word2Vec 是轻量级的神经网络,其模型仅仅包括输入层、隐藏层和输出层,主要包括 CBOW 和 Skip-gram 模型
3.1 Simple CBOW Model
如上图所示:
- 输入为单词的独热编码,与输入层与隐藏层之间的权重矩阵相乘( W T X W^TX WTX ),相当于得到权重矩阵中某一行的转置。
- 隐藏层再和隐藏层与输出层之间的权重矩阵相乘( ( W ′ ) T h (W')^{T}h (W′)Th ),得到输出层 u u u
- 将输出向量的每一个分量经过 sotfmax 函数归一化,令概率最大的那个分量为 1 ,其余为 0 ,得到的向量即为预测词的独热编码。
由于该模型在输出层需要对每一个分量进行 softmax 函数归一化,而输出层的分量数由于词典的词数相同,故其计算量很大。
3.2 基于Hierarchical Softmax的CBOW
这部分建议直接看参考资料 2