语音识别——语言模型

语音识别——语言模型本博客主要是摘写洪青阳教授的 语言识别 原理与应用 的笔记 不足之处还请谅解

大家好,欢迎来到IT知识分享网。

本博客主要是摘写洪青阳教授的《语言识别-原理与应用》的笔记,不足之处还请谅解。

语音识别为:根据输入的观察值序列O,找到最可能的词序列 W ^ \hat{W} W^。按照贝叶斯准则,识别任务可做如下转化:
W ^ = argmax ⁡ W   P ( W ∣ O ) = arg ⁡   max ⁡ P ( W ) P ( O ∣ W ) P ( O ) \hat{W}= {\underset {W}{\operatorname {arg max} }}\,P(W|O)=\arg\,\max\frac{P(W)P(O|W)}{P(O)} W^=WargmaxP(WO)=argmaxP(O)P(W)P(OW)
其中, P ( O ) P(O) P(O)和识别结果 W W W无关,可忽略不急,因此 W ^ \hat{W} W^的求解可进一步简化为:
W ^ = arg max ⁡ W   P ( W ) P ( O ∣ W ) \hat{W}={\underset {W}{\operatorname{arg\,max}}}\,P(W)P(O|W) W^=WargmaxP(W)P(OW)
要找到最可能的词序列,必须使上式右侧两项的乘积最大。其中, P ( O ∣ W ) P(O|W) P(OW)由声学模型决定, P ( W ) P(W) P(W)由语言模型决定。



声学模型就是前面学过的,通过声音进行分析的模型。

语言模型用来表示词序列出现的可能性,用文本数据训练而成,是语音识别系统重要的组成部分,如下图所示。

请添加图片描述

上图即为我们熟知的语音识别框架。

语言模型用来表示词语序列出现的可能性,可以基于语法规则,也可 以基于统计方法

基于规则的语言模型:来源于语言学家掌握的语言学知识和领域知识,或者根据特定应用设定语法规则,一般仅能约束受限领域内的句子。

统计语言模型:通过对大量文本语料进行处理,获取给定词序列的概率分布,从而能够客观描述隐含的规律,适合于处理大规模真实文本。统计语言模型已被广泛应用于语音识别、机器翻译、文本校对等多个领域。

而要训练一个适用性强的统计语言模型,就需要大量的、不同的、能覆盖用户各种表达方式的文本语料。

请添加图片描述

请添加图片描述

所有的句子都有开始位置和结束位置,分别用<s>和</s>表示,可认为这两个特殊标记是两个词。语言模型刻画词与词之间的组合可能性,通过分词,将句子进一步转换为词与词之间的组合概率关系。

即统计语言模型的目标是计算出给定词序列 w 1 , ⋯   , w t − 1 , w t w_1,\cdots,w_{t-1},w_t w1,,wt1,wt的组合概率:
P ( W ) = P ( w 1 w 2 ⋯ w t − 1 w t ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 w 2 ) ⋯ P ( w t ∣ w 1 w 2 ⋯ w t − 1 ) P(W)=P(w_1w_2\cdots w_{t-1}w_t)\\ =P(w_1)P(w_2|w_1)P(w_3|w_1w_2)\cdots P(w_t|w_1w_2\cdots w_{t-1}) P(W)=P(w1w2wt1wt)=P(w1)P(w2w1)P(w3w1w2)P(wtw1w2wt1)
其中,条件概率 P ( w 1 ) , P ( w 2 ∣ w 1 ) , P ( w 3 ∣ w 1 w 2 ) , ⋯   , P ( w t ∣ w 1 w 2 ⋯ w t − 1 ) P(w_1),P(w_2|w_1),P(w_3|w_1w_2),\cdots,P(w_t|w_1w_2\cdots w_{t-1}) P(w1),P(w2w1),P(w3w1w2),,P(wtw1w2wt1)就是语言模型。

计算所有这些概率值的复杂度较高,特别是长句子的计算量很大,因此需做简化,一般采用最多n个词组合的n-gram模型。

n-gram模型

所谓n-gram模型,表示n个词之间的组合概率模型。在n-gram模型中,每个预测变量 w t w_t wt之与长度为n-1的上下文:
P ( w t ∣ w 1 ⋯ w t − 1 ) = P ( w t ∣ w t − n + 1 w t − n + 2 ⋯ w t − 1 ) P(w_t|w_1\cdots w_{t-1})=P(w_t|w_{t-n+1}w_{t-n+2}\cdots w_{t-1}) P(wtw1wt1)=P(wtwtn+1wtn+2wt1)
即n-gram预测的词概率值依赖于前n-1个词,更长距离的上下文依赖被忽略。考虑到计算代价,在实际应用中一般取 1 ≤ n ≤ 5 1\leq n \leq 5 1n5

当n=1,2和3时,相应的模型分别成为一元模型、二元模型和三元模型。

一元模型和多元模型有明显的区别,一元模型没有引入“语境”,对句子的约束最小,其中的竞争最多。而多元模型对句子有更好的约束能力,解码效果更好。

但相应地,n越大,语言模型就越大,解码速度也越慢。

而语言模型的概率均从大量文本语料估计得到。针对一元模型,可简单地计算词的出现次数。

假设有1000个句子,其中:

  • “我们”出现100次,“明年”出现30次,“日子”出现10次,······
  • 总共有21000个词标签,其中包括1000个结束符</s>

请添加图片描述

一元模型的计算如下:

  • P(“我们”) = 100/21000
  • P(“明年”) = 30/21000
  • P(“日子”) = 10/21000
  • P(</s>) = 1000/21000

一元模型的示意图如下:

请添加图片描述

而二元模型的计算如下。假设这1000句语料中出现下面两个词的组合情况如下:

  • 10句以“我们”开头,5句以“明天”开头,……
  • 2句以“日子”结尾,……
  • 1次出现“我们明年”,3次出现“我们彼此”,……

则二元模型计算如下:

  • P(“我们”|) = 10/1000
  • P(“明天”|) = 5/1000
  • P(</s>| “日子”) = 2/10 ,“日子”出现10次
  • P(“明年”|“我们”) = 1/100 ,“我们”出现100次
  • P(“彼此”|“我们”) = 3/100

得到下表:

请添加图片描述

所以,二元模型的组合图如下:

请添加图片描述

三元模型的概率关系图如下:

请添加图片描述

评价指标——困惑度

给定句子S,其包含词序列 w 1 , w 2 , ⋯   , w T w_1,w_2,\cdots,w_T w1,w2,,wT,T是句子长度,则困惑度(Perplexity)表示为:
P P L ( W ) = P ( w 1 w 2 ⋯ w T ) − 1 T = 1 P ( w 1 w 2 ⋯ w T ) T PPL(W)=P(w_1w_2\cdots w_T)^{-\frac{1}{T}}=\sqrt[T]{\frac{1}{P(w_1w_2\cdots w_T)}} PPL(W)=P(w1w2wT)T1=TP(w1w2wT)1

Perplexity又称困惑度(PPL), PPL越小,𝑃(𝑤𝑖) 则越大,句子𝑆出现 的概率就越高。

理论上,困惑度越小,语言模型越好,预测能力越强。

请添加图片描述

平滑技术

由于统计语料有限,会存在数据稀疏的情况,这可能导致零概率或估计不准的问题,因此对语料中未出现或少量出现的词序列,需要采用平滑技术进行简介预测。

平滑技术分为三种:

  • 折扣法:从已有观察值概率调配一些给未观察值概率,如Good-Turing(古德-图灵)折扣法
  • 插值法:将高阶模型和低阶模型做线性组合,如Jelinek-Mercer插值法,也可做非线性组合,如Kneser-Ney插值法。
  • 回退法:基于低阶模型估计未观察到的高阶模型,例如Katz回退法。

Good-Turing折扣法

  • 设总词数为 N N N,平滑前出现1次的词数为 N 1 N_1 N1,出现 c c c次的词数为 N c N_c Nc
  • 平滑后,概率 P ∗ ( 出 现 0 次 的 词 ) = N 1 N P^*(出现0次的词)=\frac{N_1}{N} P(0)=NN1,出现次数 c ∗ = ( c + 1 ) N c + 1 N c c^*=\frac{(c+1)N_{c+1}}{N_c} c=Nc(c+1)Nc+1,对应概率为: P G T = c ∗ N P_{GT}=\frac{c^*}{N} PGT=Nc

例子:

分词后句子语料(假设只有2句):

  • “我们 明年 会 有 全新 的 开始”
  • “我们 彼此 祝福 着 等待 再见 那 一 天”

词频数:“我们”2次,“明年”1次,……,“天”1次

平滑前: N = 16 , N 1 = 14 , N 2 = 1 N = 16, N_1 = 14 , N_2 = 1 N=16,N1=14,N2=1

平滑后: N 0 ∗ = N 1 N = 14 16 , N 1 ∗ = ( 1 + 1 ) N 2 N 1 = 2 14 N^*_0=\frac{N_1}{N}=\frac{14}{16},N^*_1=\frac{(1+1)N_2}{N_1}=\frac{2}{14} N0=NN1=1614,N1=N1(1+1)N2=142
对应的概率为: P 0 ∗ = N 1 N = 14 16 , P 1 ∗ = c 1 ∗ N = 2 14 ∗ 16 P^*_0=\frac{N_1}{N}=\frac{14}{16},P^*_1=\frac{c^*_1}{N}=\frac{2}{14*16} P0=NN1=1614,P1=Nc1=14162

Jelinek-Mercer插值法

为了避免出现 P ( w ) = 0 P(w)=0 P(w)=0或接近于零的情况,可以用三元、二元和一元相对概率做插值。
P ^ ( w t ∣ w t − 2 w t − 1 ) = λ 1 P ( w t ∣ w t − 2 w t − 1 ) + λ 2 P ( w t ∣ w t − 1 ) + λ 3 P ( w t ) \hat{P}(w_t|w_{t-2}w_{t-1})=\lambda_1P(w_t|w_{t-2}w_{t-1})+\lambda_2P(w_t|w_{t-1})+\lambda_3P(w_t) P^(wtwt2wt1)=λ1P(wtwt2wt1)+λ2P(wtwt1)+λ3P(wt)
其中 λ 1 + λ 2 + λ 3 = 1 \lambda_1+\lambda_2+\lambda_3=1 λ1+λ2+λ3=1

Kneser-Ney插值法

当训练数据非常少的情况下,特别适合采用Kneser-Ney 插值法。Kneser-Ney 是一种非线性插值法,从Absolute discounting(绝对折扣)插值方法演变而来。

Absolute discounting

P a b s ( w t ) P_{abs}(w_t) Pabs(wt)可能会存在异常偏大现象。比如“杯子”出现频次较高,因此单独的“杯子”按出现次数可能会比 “茶”多,即 P a b s ( 杯 子 ) > P a b s ( 茶 ) P_{abs}(杯子) > P_{abs}(茶) Pabs()>Pabs() ,这样会使Absolute discounting平滑公式因 P a b s ( w t ) P_{abs}(w_t) Pabs(wt)值过大出现“喝杯子”比“喝茶”概率高的奇怪现象。

Kneser-Ney

Katz回退法

b a c k o f f ( w t − 2 w t − 1 ) backoff(w_{t-2}w_{t-1}) backoff(wt2wt1)是回退权重,回退权重的计算如下:
b a c k o f f ( w t − 2 w t − 1 ) = 1 − ∑ P ( w ∣ w t − 2 w t − 1 ) ∑ P ( w ′ ∣ w t − 2 w t − 1 ) backoff(w_{t-2}w_{t-1})=\frac{1-\sum{P(w|w_{t-2}w_{t-1})}}{\sum{P(w’|w_{t-2}w_{t-1})}} backoff(wt2wt1)=P(wwt2wt1)1P(wwt2wt1)
其中 w w w是在训练语料中 w t − 2 w t − 1 w_{t-2}w_{t-1} wt2wt1之后出现的词, w ′ w’ w是在训练语料中 w t − 2 w t − 1 w_{t-2}w_{t-1} wt2wt1之后未出现的词。

采用Katz回退法,训练好的语言模型格式如下:

请添加图片描述

其中, p r o _ 1 pro\_1 pro_1是一元模型(1-grams)单词的对数概率, p r o _ 2 pro\_2 pro_2是二元模型(2-gram)的对数概率, p r o _ 3 pro\_3 pro_3是三元模型(3-gram)的对数概率。一元模型和二元模型后面分别带有回退权重 b a c k _ p r o 1 back\_pro1 back_pro1 b a c k _ p r o 2 back\_pro2 back_pro2

如果要得到三个词出现的概率 P ( w 3 ∣ w 1 w 2 ) P(w_3|w_1w_2) P(w3w1w2),则根据以上的语言模型,其计算如下:

请添加图片描述

即,如果不存在 ( w 1 w 2 w 3 ) (w_1w_2w_3) (w1w2w3)的三元模型,则采用回退法,即结合回退权重 b a c k _ p r o 2 ( w o r d 1 , w o r d 2 ) back\_pro2(word1,word2) back_pro2(word1,word2)来计算:

b a c k _ p r o 2 ( w o r d 1 , w o r d 2 ) ∗ P ( w o r d 3 ∣ w o r d 2 ) back\_pro2(word1,word2)*P(word3|word2) back_pro2(word1,word2)P(word3word2)。如”拨打 郑州 局“这样的组合,如果语料库里没有,即没有相应的三元模型,则查找“拨打 郑州”和“郑州 局”的组合概率和回退概率(概率均为对数概率)。假设值如下:

请添加图片描述

语言模型的训练

请添加图片描述

SRILM

  • SRILM由SRI实验室开发,诞生于1995年,包括最大似然估计和平滑算法。
  • SRILM主要有两个工具:ngram-count和ngram,用来估计语言模 型和计算困惑度。

递归神经网络语言模型(RNNLM)

𝑛-gram语言模型一般只能对前3-5个词建模,存在局限性。

针对任意长度的句子,我们可采用递归神经网络(RNN),使用 循环连接对上下文依赖关系进行建模。

请添加图片描述

这里的RNN模型的内部函数最好另外学习了,能更详细点。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/126709.html

(0)
上一篇 2025-09-16 17:26
下一篇 2025-09-16 17:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信