文章目录
前言
Exploring the limits of language model
探索语言模型的极限
作者:Rafal Jozefowicz,Oriol Vinyals,mike Schuster,Noam Shazeer,Yonghui Wu
单位:Google Brain团队
论文来源:ICML 2016
在线LaTeX公式编辑器
别人的讲解
本节将会向大家介绍一下语言模型的概念及计算方式,除此之外为了方便理解,我们还引入n-gram模型以及神经网络语言模型;之后会针对字符及卷积神经网络,也就是char CNN展开详细的介绍,便于大家在接下来的学习中脑子中有更宏观的印象;此外,还会简单介绍一下在学习本期课程之前需要做的一些知识储备,
第一课 论文导读
语言模型
语言模型:预测每个句子在语言中出现的概率。不会去理解句子的含义。
应用:机器翻译、语音识别、文本摘要
举例:机器翻译:价格高
P(high price)>P(large price)
举例:我 | 今天 | 下午 | 打羽 | 毛球
当说第一个词:我 的时候,我这个词只和当前词有关
当说第二歌词“今天”的时候,要考虑在我这个词出现的条件概率下,“今天”这个词出现的概率。“今天”这个词是建立在“我”这个词之上的。以此类推,“羽毛球”出现的要在前面所有词出现的条件概率下进行计算。
P(S)被称为语言模型,即用来计算一个句子概率的模型。
P
(
w
i
∣
w
1
,
w
2
,
.
.
.
,
w
i
−
1
)
=
P
(
w
1
,
w
2
,
.
.
.
,
w
i
)
/
P
(
w
1
,
w
2
,
.
.
.
,
w
i
−
1
)
P(w_i|w_1,w_2,...,w_{i-1})=P(w_1,w_2,...,w_i)/P(w_1,w_2,...,w_{i-1})
P(wi∣w1,w2,...,wi−1)=P(w1,w2,...,wi)/P(w1,w2,...,wi−1)
缺点:
1.数据过于稀疏(由于每个词都基于前面的所有词,这些词出现的次数其实是很少的。)
2.参数空间太大
解决方案:
基于马尔科夫假设:下一个词的出现仅依赖于它前面的一个或几个词。
·假设下一个词的出现依赖它前面的一个词,则有:
·假设下一个词的出现依赖它前面的两个词,则有:
n-gram模型:假设当前词的出现概率只与它前面的N-1个词有关。
如何选择n:
·更大的n:对下一个词出现的约束信息更多,具有更大的辨别力;
·更小的n:在训练语料库中出现的次数更多,具有更可靠的统计信息,具有更高的可靠性。
理论上,n越大越好,经验上,trigram用的最多,尽管如此,原则上,能用bigram解决,绝不使用trigram。n为1的时候叫unigram。
构造语言模型:最大似然估计。
P
(
w
i
∣
w
1
,
w
2
,
.
.
.
,
w
i
−
1
)
=
C
o
u
i
n
t
(
w
1
,
w
2
,
.
.
.
,
w
i
−
1
,
w
i
)
C
o
u
n
t
(
w
1
,
w
2
,
.
.
.
,
w
i
−
1
)
P(w_i|w_1,w_2,...,w_{i-1})=\frac{Couint(w_1,w_2,...,w_{i-1},w_i)}{Count(w_1,w_2,...,w_{i-1})}
P(wi∣w1,w2,...,wi−1)=Count(w1,w2,...,wi−1)Couint(w1,w2,...,wi−1,wi)
Count(X):在训练语料库单词序列X在训练语料中出现的次数。为了避免出现参数为0的情况,这里要对最大似然进行平滑处理。
上面的ngram模型采用的是统计的方法(非参数化方法),当ngram上升到五元(这里应该是指n=5??)的时候,会出现很多稀疏化的问题,不好做统计也不好做平滑,要把所有语料都过一遍需要很大的存储空间。
因此考虑用参数化的方法来进行概率估计,模型训练好后,只要输入一个词,就可以通过模型计算出相应的概率
LSTM(略)
词向量(略)
One hot
Word embedding
char CNN简介
模型提出:《Character-Aware Neural Language Models》
三层架构:
1.Char CNN
2.Highway Network
3.LSTM
char CNN在处理低频词上效果很好,为什么?看下节
字符卷积嵌入模型
由于英文在字符层次上有很多联系,例如:名词变形容词只需要加ly后缀,两个词之间是有某种联系的,普通的神经网络没有办法捕捉这个联系,而字符CNN可以。
前期知识储备
语言模型:了解基本的语言模型知识,掌握语言模型的计算方法。
Char CNN:了解字符卷积神经语言模型的结构,掌握字符嵌入模型的实现方法。
Softmax:掌握softmax的实现原理,了解softmax的几种变体。
循环神经网络:了解循环神经网络的结构,掌握它的基本工作原理
第二课 论文精读
主要工作:探索了最近递归神经网络用于大规模语言模型上取得的进展
面对挑战:语料库和词汇量,以及语言复杂的、长期结构
如何做:字符的卷积神经网络,以及长短期记忆人工神经网络
模型效果:困惑度减小的同时参数也较少。
开源模型代码
语言模型的改进
softmax在大规模语料库中效率比较低,因此,要对其进行改进。
替代softmax策略
基于softmax的方法
·分层softmax
·分片softmax
·CNN-Softmax()
基于采样的方法
·重要性采样
·自适应重要性采样
·目标采样
·噪声对比估计
·负采样
·自标准化
·低频标准化
CNN Softmax
·softmax:
·CNNSoftmax只保留CNN模型的参数,不需要保存整个词向量矩阵
·增加了一个矫正因数
c
o
r
r
w
corr_w
corrw,M保证向量维度统一,这个东西是为了防止模型无法区分拼写相似,意思不一样的词语
在进入LSTM之前,先对每个单词做 char CNN
Char LSTM Prediction:
·取代word-level前一层h的输出
·每次预测输出词语的一个字母
·这个方法的性能并不令人满意(一次输入一个字母,导致模型中timestep太多)
·没有CNN Softmax效果好
实验和结果
实验设置
实验环境:Tensoflow
数据集:1B Word Bench Mark数据集(句子随机排列,且去重)
具体设置:
·设置字符输入长度为50
·LSTM层加入投影层(有利于减少反向传播的步数),每个LSTM的前后都加入了dropout
·Char CNN使用4096个特征(这个数字和投影层相匹配。)
·优化器:adagrad,学习速率0.2,batch size:128,32个GPU
实验评估标准——困惑度-Perplexity
困惑度:一种评判概率模型或概率分布预测的衡量指标,可用于评价语言模型的好坏。
核心思想:给测试集的句子赋予较高概率值的语言模型较好。
评价标准:从下面的公式可以看出:句子概率越大,困惑度越小,语言模型越好。
单个模型的实验结果:
集成模型的结果:
总结
A 总结合并了大规模语言模型的研究。
B.在CharCNN上提出了一种高效的softmax损失函数。
C.单模型和集成模型都获得了最先进的结果。
D.开源了所有代码。
作业
- 简述语言模型的任务和计算方式。
- 简述char cnn的原理。