Deep Learning for Human Language Processing Part 4(P9)
课程主页:http://speech.ee.ntu.edu.tw/~tlkagk/courses_DLHLP20.html
视频地址:https://www.bilibili.com/video/BV1RE411g7rQ?p=1
参考资料:https://blog.csdn.net/qq_44574333/category_10304412_2.html
备注:图片均来自于课件。
这次回顾P9,这部分介绍了语音识别中的语言模型。
语音识别中的语言模型
这部分介绍为什么要在语音识别中增加语言模型。
语言模型
引子
语言模型估计token序列$Y=y_1,y_2,\ldots, y_n$的概率$P\left(y_{1}, y_{2}, \ldots \ldots, y_{n}\right)$。
过去需要语言模型是因为HMM的解码过程为:
现在Seq2Seq模型的解码过程为:
但是实际中,一般使用如下方法:
尽管从概率角度不好解释,但是实际上该效果会更好,老师解释的角度如下:
- 训练$ P(Y \mid {X}) $需要成对数据,收集成本较大。
- 训练$P(Y)$只需要文本数据,很好收集。
语言模型介绍
$N$-gram
这部分可以参考如下笔记:
https://doraemonzzz.com/2019/01/27/Michael%20Collins%20NLP%20Lecture%202/#toc-heading-5
$N$-gram的最大问题是许多gram出现次数很少或者为0,所以估计的概率会很低,为了解决这点,人们提出一些方法。
连续LM
该方法来自于推荐系统的矩阵分解方法:
连续LM将横轴和纵轴换成token:
$n_{ij}$的含义是在训练数据中,第$i$个token出现在第$j$个token后的次数,我们希望:
以此来估计表格中缺失的部分。
我们的目标是:
NN视角
可以将上述模型视为简单的NN:
基于NN的LM
最初的思路是取代n-gram,即根据前$k$个单词预测下一个单词:
利用条件概率公式可以计算一段句子出现的概率。
基于RNN的LM
$N$-gram只能利用前$N$项的信息,如果句子太长,则效果会不太好,为了解决这点,可以使用RNN,即预测每个单词的时候考虑之前全部单词:
如何使用LM提升语音识别
以LAS为例:
输出 | 隐藏层 | |
---|---|---|
训练后 | 浅融合 | 深融合 |
训练前 | 冷融合 |
- 横轴:如何结合。
- 纵轴:何时结合。
浅融合
将LAS和LM分别训练好,输出为概率乘积(带权):
深融合
将LAS和LM分别训练好,然后将两者的输出(或者中间层)输入到一个网络中,该网络的输出为最终的概率:
如果直接将LM的隐藏层直接接入网络中,那么每次更换LM,都可能需要重新训练网络(因为LM隐藏层的维度可能不同),所以比较好的方式是将输出层SoftMax之前的结果输入到网络中:
那么什么时候会需要更换LM呢?老师举的例子是更换领域知识,因为很多单词发音相同,但是在不同领域中对应的单词不同,例如城市和程式。
冷融合
将训练好的LM和未训练的LAS结合,然后利用端到端的方式训练LAS,该方法的优势是可以加速LAS的训练,注意此时无法随意更换LAS,因为该LAS是基于LM训练的: