一、【word2vec学习路线】神经网络语言模型
2014-03-03 18:59
519 查看
1. 统计语言模型 (statistical model of language)
统计语言模型中,把一段包含T个词的语料表示为
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/b1e12ff9f4618509ac9cac5e8322ca29)
w_t 表示第t个词,统计每个词在前面n个词出现的条件下的概率,用一幅图来表达就是:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/ea19ed1ad8c3a440c2144f5417ba173b)
应用这个模型的时候,为了降低复杂度,基于马尔科夫假设(Markov Assumption):下一个词的出现仅依赖于它前面的一个或几个词,上面的公式可以近似为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/ac4752ca9d9dbe4238e19037b21a1a77)
上面那张图就变成(n=2):
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/a6f77f647034442dba4a7dfbb6fd8d67)
这就变成了n-gram 模型,也就是构造了一个每个词关于最近n个词的条件概率表。
那么,我们在面临实际问题时,如何选择依赖词的个数,即n。
更大的n:对下一个词出现的约束信息更多,具有更大的辨别力;
更小的n:在训练语料库中出现的次数更多,具有更可靠的统计信息,具有更高的可靠性。
一般选择一个折衷,取n=3,即 trigrams
2. 神经网络语言模型(Neural Probabilistic Language Model )
n-gram模型有两个缺点
由于训练语料限制,无法追求更大的n
没有考虑到相似的语法结构。
为了提高语言模型在这方面的表现,Yoshua Bengio等人提出的神经网络语言模型:
方法如下:
将词典中每个词表示为向量
用词向量表示每个词在句子中的联合概率函数
同时学习词向量和联合概率函数参数
表示为一个神经网络:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/8b3456adbc00600d9721b2b1834a2548)
最后一层是一个softmax
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/e948f8aa85915b2c38108f1421c934af)
softmax输入表示为
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/4e390be4d910832021fd01c55b1b3f7e)
其中x为
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/40dc9425144c02ad6b6496ce93b4acd3)
C(w_t) 表示将词 w_t向量化。
相当于有两层隐含层,一层向量化层C,一层tanh H。
需要学习的参数总共:θ = (b,d,W,U,H,C).
#θ = |V |(1 + nm + h) + h(1 + (n − 1)m).
V为词数,n为窗口大小,m为词向量维度,h为隐含层H的节点数。
使用最大似然最优化:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201403/fc72ea0d6c193f8585827a5ea8099268)
具体求解方法还请阅读paper
虽然模型在有限训练数据下,可以提高n的取值,且可以描述出更细致的词与词的关系,但模型优化计算复杂度要远高于n-gram,因为n-gram要得到一个样本的联合概率不需要计算词典中所有词的概率,而神经网络表达需要在最后一层softmax计算所有词的输出做归一化。
训练一个样本需要的计算复杂度是
|V |(1 + nm + h) + h(1 + nm) + nm
如果V很大的话,这个计算是非常耗时的,下篇我会介绍层次神经网络语言模型,通过把词表表示成一个树的结构,可以吧 |V| 降到 log|V|,使得问题可解。
参考文献
【A Neural Probabilistic Language Model 】
统计语言模型中,把一段包含T个词的语料表示为
w_t 表示第t个词,统计每个词在前面n个词出现的条件下的概率,用一幅图来表达就是:
应用这个模型的时候,为了降低复杂度,基于马尔科夫假设(Markov Assumption):下一个词的出现仅依赖于它前面的一个或几个词,上面的公式可以近似为:
上面那张图就变成(n=2):
这就变成了n-gram 模型,也就是构造了一个每个词关于最近n个词的条件概率表。
那么,我们在面临实际问题时,如何选择依赖词的个数,即n。
更大的n:对下一个词出现的约束信息更多,具有更大的辨别力;
更小的n:在训练语料库中出现的次数更多,具有更可靠的统计信息,具有更高的可靠性。
一般选择一个折衷,取n=3,即 trigrams
2. 神经网络语言模型(Neural Probabilistic Language Model )
n-gram模型有两个缺点
由于训练语料限制,无法追求更大的n
没有考虑到相似的语法结构。
为了提高语言模型在这方面的表现,Yoshua Bengio等人提出的神经网络语言模型:
方法如下:
将词典中每个词表示为向量
用词向量表示每个词在句子中的联合概率函数
同时学习词向量和联合概率函数参数
表示为一个神经网络:
最后一层是一个softmax
softmax输入表示为
其中x为
C(w_t) 表示将词 w_t向量化。
相当于有两层隐含层,一层向量化层C,一层tanh H。
需要学习的参数总共:θ = (b,d,W,U,H,C).
#θ = |V |(1 + nm + h) + h(1 + (n − 1)m).
V为词数,n为窗口大小,m为词向量维度,h为隐含层H的节点数。
使用最大似然最优化:
具体求解方法还请阅读paper
虽然模型在有限训练数据下,可以提高n的取值,且可以描述出更细致的词与词的关系,但模型优化计算复杂度要远高于n-gram,因为n-gram要得到一个样本的联合概率不需要计算词典中所有词的概率,而神经网络表达需要在最后一层softmax计算所有词的输出做归一化。
训练一个样本需要的计算复杂度是
|V |(1 + nm + h) + h(1 + nm) + nm
如果V很大的话,这个计算是非常耗时的,下篇我会介绍层次神经网络语言模型,通过把词表表示成一个树的结构,可以吧 |V| 降到 log|V|,使得问题可解。
参考文献
【A Neural Probabilistic Language Model 】
相关文章推荐
- 二、【word2vec学习路线】语言模型分层优化
- 学习笔记DL003:神经网络第二、三次浪潮,数据量、模型规模,精度、复杂度,对现实世界冲击
- 神经网络自然语言模型的一般化结构形式
- 径向基函数神经网络模型与学习算法
- 径向基函数神经网络模型与学习算法
- 【译:scikit learn学习】有监督的神经网络模型Neural network models (supervised)
- 深度学习与自然语言处理之四:卷积神经网络模型(CNN)
- 【神经网络与深度学习】深度学习实战——caffe windows 下训练自己的网络模型
- 神经网络语言模型
- 25径向基函数神经网络模型与学习算法.ppt
- 神经网络不胜语, M-P模型似可寻(深度学习入门系列之三)
- 【深度学习_1.3】搭建浅层神经网络模型
- CSC321 神经网络语言模型 RNN-LSTM
- 神经网络语言模型(NNLM)
- 深度学习基础模型算法原理及编程实现--04.改进神经网络的方法
- 基于神经网络的统计语言模型-----第一章 引言
- 84、循环神经网络实现语言模型
- 感知神经网络模型与学习算法
- 机器学习之神经网络模型-上(Neural Networks: Representation)
- 深度学习基础模型算法原理及编程实现--06.循环神经网络