语言模型与RNN

  • Post author:
  • Post category:其他


注:cs224n

语言模型:一个用来预测下一个单词的系统模型 用公式可以表示为: $P(x^{(t+1)}=w_j |x^{(t)},…,x^{(1)})$ 这里$w_j$是一个位于词汇表V={$w_1,…,w_{|V|}$}中的词。
一、最初用的语言模型被称为

n-gram Langurage Models

![这里写图片描述](https://img-blog.csdn.net/20180818110441514?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VrYWl5aW5faHphdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

n-gram model 引入HMM假设:



x

(

t

+

1

)

x^{(t+1)}







x











(


t


+


1


)













只依赖于前面的n-1个词

即:



P

(

x

(

t

+

1

)

=

w

j

x

(

t

)

,

.

.

.

,

x

(

1

)

)

=

P

(

x

(

t

+

1

)

=

w

j

x

(

t

)

,

.

.

.

,

x

(

t

n

2

)

)

=

P

(

x

(

t

+

1

)

,

x

(

t

)

,

.

.

.

,

x

(

t

n

+

2

)

)

P

(

x

(

t

)

,

.

.

.

,

x

(

t

n

+

2

)

)

P(x^{(t+1)}=w_j |x^{(t)},…,x^{(1)})=P(x^{(t+1)}=w_j |x^{(t)},…,x^{(t-n-2)}) =\frac{P(x^{(t+1)},x^{(t)},…,x^{(t-n+2)})}{P(x^{(t)},…,x^{(t-n+2)})}






P


(



x











(


t


+


1


)












=









w










j






















x











(


t


)










,




.


.


.


,





x











(


1


)










)




=








P


(



x











(


t


+


1


)












=









w










j






















x











(


t


)










,




.


.


.


,





x











(


t





n





2


)










)




=




















P


(



x











(


t


)










,


.


.


.


,



x











(


t





n


+


2


)










)
















P


(



x











(


t


+


1


)










,



x











(


t


)










,


.


.


.


,



x











(


t





n


+


2


)










)























用频率逼近概率得:

$=\frac{count(x

{(t+1)},x

{(t)},…,x

{(t-n+2)})}{count(x

{(t)},…,x^{(t-n+2) } ) } $

例:

这里写图片描述

n-gram langurage model 存在的问题 ![这里写图片描述](https://img-blog.csdn.net/20180818111727732?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VrYWl5aW5faHphdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ![这里写图片描述](https://img-blog.csdn.net/20180818111817499?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VrYWl5aW5faHphdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
二、那么如何建立一个神经网络语言模型呢? 首先想到的当然是与n-gram langurage model类似的窗口模型。 ![这里写图片描述](https://img-blog.csdn.net/20180818112246521?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VrYWl5aW5faHphdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

该模型是一个限定窗口长度的语言模型。相比于传统的n-gram langurage model 他的优势是:

一、不存在向量稀疏问题

二、模型复杂度为O(n)

而该模型得缺点在于

一、固定窗口往往太小

二、若增加窗口 W得维度将增加(w维度与窗口大小成正比)

这里写图片描述

三、引入循环神经网络 ![这里写图片描述](https://img-blog.csdn.net/20180818112823505?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pob3VrYWl5aW5faHphdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

RNN的优缺点:

这里写图片描述

Training RNN langurage Model

1、将预料库中的序列输入RNN-LM计算每一个时刻输出结果的分布情况。

2、通常选用交叉熵来计算损失

这里写图片描述

对总的交叉熵去均值作为最终损失函数:

这里写图片描述

其模型表示为:

这里写图片描述

注:在整个corpus上计算交叉熵的复杂度太高,通常采用随机梯度下降来计算。即在一个batch上计算交叉熵。


Question:



J

(

t

)

(

θ

)

J^{(t)}(\theta)







J











(


t


)










(


θ


)









W

h

W_h







W










h





















的导数?

由链式法则:

这里写图片描述

因此:

这里写图片描述

这里原本是对



W

h

W_h







W










h





















求导,但在求和的时候是对每一个时刻的w求导原因是:

这里写图片描述

六、评价语言模型

用perplexity评价语言模型

这里写图片描述

这里写图片描述

欢迎加入人工智能学习圈:

在这里插入图片描述



版权声明:本文为zhoukaiyin_hzau原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。