4. 神经概率语言模型
对应上一小节 概率模型函数化,神经概率语言模型即用「神经网络」构建「函数 F F F」。
4.1 词向量
对词典 D D D中任意词 w w w,指定一个固定长度的实值向量 v ( w ) ∈ R m v(w)\in \Bbb R^m v(w)∈Rm。则, v ( w ) v(w) v(w)称为 w w w的词向量, m m m为词向量的长度。
词向量存在两种表示方法:
(1) One-hot Representation
用维度为字典长度的向量表示一个词,仅一个分量为1,其余为0。
缺点:容易导致维度灾难,且无法很好地刻画词与词之间的关系。
(2) Distributed Representation
每个词映射为固定长度的短向量,通过刻画两个向量之间的距离来刻画两个向量之间的相似度。
4.2 网络结构
![](https://i-blog.csdnimg.cn/blog_migrate/866398ef130210ca32a43601a341cb73.png)
其中,
- 训练样本
(
C
o
n
t
e
x
t
(
w
)
,
w
)
(Context(w), w)
(Context(w),w)
w w w是语料C中的每一个词, C o n t e x t ( w ) Context(w) Context(w)取为其前面 n − 1 n-1 n−1个词。 - 投影层向量
X
w
X_w
Xw
将该训练样本 ( C o n t e x t ( w ) , w ) (Context(w), w) (Context(w),w)的前 n − 1 n-1 n−1个词的词向量首尾相接,拼接在一起构成 X w X_w Xw。
X w X_w Xw的长度为 ( n − 1 ) ⋅ m (n-1)·m (n−1)⋅m, m m m为词向量长度。 - 隐藏层向量
Z
w
Z_w
Zw
Z w = t a n h ( W X w ) + p Z_w=tanh(WX_w)+p Zw=tanh(WXw)+p - 输出层向量
y
w
y_w
yw
维度为 N = ∣ D ∣ N=|D| N=∣D∣,即,词典 D D D中词的个数。
y w = U Z w + q y_w=UZ_w+q yw=UZw+q
注:在对 y w y_w yw做Softmax归一化后, y w y_w yw的分量表示当前词是 w w w的概率。
p ( w ∣ C o n t e x t ( w ) ) = e y w , i w ∑ i = 1 N e y w , i (1) p(w|Context(w))= \frac{e^{y_{w,i_w}}}{\sum_{i=1}^Ne^{y_{w,i}}} \tag{1} p(w∣Context(w))=∑i=1Neyw,ieyw,iw(1)
对于该神经网络,其参数包括:「词向量 v ( w ) 」 v(w)」 v(w)」以及「神经网络参数 W , p , U , q W,p,U,q W,p,U,q」。一旦确定了这些参数,就相当于确定了「函数 F F F」的参数,也就相当于知道了参数 p ( w ∣ C o n t e x t ( w ) ) p(w|Context(w)) p(w∣Context(w)),继而能求得整个句子的概率。
4.3 优缺点
相比于N-gram模型,神经概率语言模型具有以下优点:
(1) 词与词之间的相似度可以通过词向量来体现。
(2) 基于词向量的模型自带「平滑化」功能,无需额外处理。因为公式
(
1
)
(1)
(1) 不可能为0。
神经概率语言模型的主要缺点是计算量太大,各参数量级分别为:
(1) 投影层节点数=上下文词数量*词向量维度。上下文数量通常不超过
5
5
5,词向量维度在
1
0
2
10^2
102量级。
(2) 隐层节点数在
1
0
2
10^2
102量级。
(3) 输出层节点数为词典大小,在
1
0
5
10^5
105量级。
因此,对于神经概率语言模型,其主要的计算集中在「隐层和输出层之间的矩阵运算」和「输出层上的Softmax归一化运算」。
考虑到语言模型对语料库中的每一个词
w
w
w都要进行训练,而语料库通常有
1
0
6
10^6
106以上的词数,无法承担该计算量。因此,需要做进一步的优化。