囫囵吞枣【语音处理的隐性马可夫模型HMM】

本文介绍了语音识别中的关键技术,包括动态时间扭曲(DTW)用于对齐特征向量,以及马尔可夫模型在语音识别中的应用,如一阶马尔可夫链和隐马尔可夫模型(HMM)。HMM在孤立词识别中的作用以及训练过程中的Viterbi算法和Baum-Welch重估计被详细阐述,同时提到了概率密度函数如高斯分布的角色。文章还讨论了训练HMM时的参数估计和优化方法,以及在实际计算中防止下溢的正常化技巧。
摘要由CSDN通过智能技术生成

语音是一个时间演变的过程,对口语进行分类的一种简单的确定性方法是:
计算观察中所有特征向量与特定单词 wj 的参考向量vj 的平均距离,再延伸为,使用长度为 T 的参考模板而不是参考向量,这一概念,如果模板的长度与观察值相同,就可以一个一个地比较向量。


在这里插入图片描述

动态时间扭曲Dynamic time warping (DTW) 对齐使得两组向量之间的总差异最小,通过使用动态规划高效实现。
特征向量流可以解释为向量值随机过程的实现。
随机过程 Y(t)可以看作是随机实验结果到一组波形的映射,可以在时间上离散或连续,也可以在数据上离散或者连续。
如果随机过程的统计特性对时移不变,则称其为平稳过程。

invariant to time shifts 时移不变

一阶马可夫链

马尔可夫链是一个随机过程,允许生成时间和值离散的随机序列。该过程的输出是一个长度为 T 的序列,一阶马尔可夫链利用独立性假设,即特定符号在特定时间 x (t) 的概率仅取决于前一个符号 x (t − 1)(马尔可夫假设)
在这里插入图片描述
在马尔可夫链的情况下,状态序列与观察序列相同。每个状态“产生”一个与该状态唯一关联的符号。隐马尔可夫模型可以看作是马尔可夫链的扩展,其中状态 j 在时间 t 的输出 bt 由概率分布(输出分布
在这里插入图片描述

输出分布 ,HMM 由初始概率和转移概率以及输出分布的参数定义。
离散:
这通常需要使用矢量量化器对特征流 O 进行量化
连续:
例如高斯分布,拉普拉斯分布,高斯混合分布

Viterbi

孤立词识别Isolated word recognition
单独说一个单词,可以降低搜索最佳单词序列的复杂性。假设单词(在一个句子中)通过可检测的停顿彼此分开。于是声学模型的任务可以被简化为单独提供单词概率的估计。前端产生特征向量流(观察向量)O = [o1, . . . , ot , . . . , oT ],音频流可以通过将音频信号分段(端点检测)分成 M 段 O(i),其中 i = 1… M. 在这种情况下,句子长度(单词数)直接来自音频信号(不同于连续语音识别),每个音频流 O(i) 都与句子 W = [w1, w2, . . . , wi , . . . , wM ]).可以假定一个词的声学实现独立于相邻词。因此我们可以简化等式:
在这里插入图片描述
如果假设单词是完全独立的,就称之为单词分类。使用大小为 N 的词汇表,可以选择可能的词 k 的索引
在这里插入图片描述
允许线性搜索最佳匹配模型。如果所有单词的可能性相同 (P(wi ) = 1 /N ):选择具有最高可能性 p(O|w ) 的单词 w

使用高斯概率密度函数作为HMM的输出分布:在这里插入图片描述
在公式里:
转移概率aij,隐式定义了 HMM 的拓扑结构。
均值向量 μi 和协方差矩阵 Σi ,通常只使用对角协方差矩阵(不相关的向量元素)

使用 HMM(用于 ASR)需要解决以下问题
1.我们如何计算给定观察序列 O 和特定单词 w 的概率 P(O|λw )?
这是在分类中比较单词假设所必需的。
2.产生给定观察序列的最可能状态序列是什么?
关于最可能状态序列的知识允许将时间信息分配给音频流,它可以用于:语音数据的分割、简化的 HMM 训练方案,解码
3.如何选择参数
使用最大似然估计MLE

Viterbi 算法是一种动态规划程序,用于获得给定模型 λ 和长度为 T 的观察序列 O 的最可能路径。
定义以状态 j 结束的长度为 t 的部分路径的可能性
在这里插入图片描述
然后,部分路径的似然可以表示为前面状态 x (t − 1) 的似然
在这里插入图片描述
假设 HMM M 有 N 个状态,状态 1 是非发射状态,状态 N 是退出状态。获得最可能路径 X∗ 和相关似然的步骤是:
初始化:
在这里插入图片描述
递归:
for t = 1, 2, . . . , T
. . . for j = 2, 3, . . . , N − 1
. . … . .计算在这里插入图片描述

. . … . .存储predecessor节点:predk(t)
最后:
在这里插入图片描述
最有可能的路径可以通过使用存储在每个节点 predk (t) 上的predecessor信息进行trace-back来恢复

HMM

这个从头实现感觉讲的蛮好,虽然……好晕救命
HMM 生成平稳的随机序列。生成随机序列的过程是

  1. 根据初始概率选择一个初始状态,如果只有一个索引为 i 的初始状态是可能的,则从该状态开始的概率为 1。
  2. 如果当前状态正在发射,根据当前状态的输出分布生成一个输出符号。
  3. 根据当前状态的转移概率选择下一个状态。移动到下一个状态
  4. 如果当前状态正在发射并且除了自身转换有其他的转换,重复2。

一个例子:
在这里插入图片描述

首先选择状态序列,然后映射到观察序列。
如果 HMM 参数 λw 、状态序列 X(路径)和观察序列 O 已知,则 likelihood for the joint event 联合事件的似然可以用输出概率和转换来表示:

HMM 的定义基于独立性假设。
马尔可夫假设
从状态 i 转移到状态 j 的概率与之前的状态无关。使用转移概率 aij = P (x (t) = j|x (t − 1) = i):
在这里插入图片描述
条件独立性
给定时间 t 的特定状态,此时输出符号的可能性独立于任何其他状态或先前的输出符号
在这里插入图片描述

如果状态序列和观察序列都是已知的,则可以在矢量流中的任何符号和状态之间建立明确的联系。特征向量流还携带有关时间的隐式信息(例如每 10 毫秒一个向量)。理想情况下,与一个状态相关的所有向量都应该属于语音信号的同一个准平稳部分。这允许及时分割信号。但是,状态序列是未知的(隐藏的)。人们无法确定地推导出原始序列,但给定一个 HMM λw 和一个观察序列 O,可以计算出具有最高似然性的状态序列 X∗:
在这里插入图片描述
他的likelihood在这里插入图片描述

关于最佳状态序列允许在时间上对语音数据进行分段。这可以用来:

  1. 将词分割成更小的单元(子词单元)
  2. 将句子分割成单词
  3. 可能可以简化 HMM 参数的训练过程

HMM Training

训练的目标是估计所有 HMM 参数。使用高斯输出分布的 HMM λ 的设置参数由下式给出在这里插入图片描述,用于 HMM 参数的 ML 估计有两个迭代过程:Viterbi training和Baum-Welch re-estimation。
这两个计算获得的结果不同
Viterbi training: 将每个观察向量分配给一个(发射emitting)状态
对于 HMM,状态序列是未知的但是最可能状态序列 X∗ 允许近似总似然值。
如果知道模型隐藏部分的转移概率,以及模型可见输出的发射概率,那么 Viterbi 算法会根据输出和模型规范提供最可能完整的隐藏状态序列。
Viterbi training通过使用最可能状态序列提供的分割避免了隐藏状态序列的问题。Viterbi re-estimation 公式中使用的指标变量在这里插入图片描述表示观察 ot 是由状态 j 产生的 hard decision。 Baum-Welch re-estimation考虑了状态序列的不确定性。将输出分布参数重估计公式中的指示变量替换为状态后验概率。Expectation-Maximisation 期望最大化 (E-M) 算法和其概念应该类似?

最后需要注意的是:所有计算都需要使用对数算法或缩放。
训练的时候要重复update公式,直到训练数据的似然在这里插入图片描述收敛

语音处理的HMM

HMM 状态 q1:T :隐藏的离散变量
MFCC 观察 O1:T:连续变量
依赖性:概率
在这里插入图片描述
Likelihood of observation sequence given a particular word sequence
在这里插入图片描述
Baum-Welch算法是所有parameter estimation schemes的核心,维特比算法是所有decoder的核心
然后老师还推荐一些工具包:
▶ Graphical models (see Dynamic Bayesian Networks)
Graphical Models Toolkit (Washington University) [1]
▶ Weighted finite-state transducers (WFST)
Kaldi (Johns’ Hopkins University) [2]
RASR (RWTH Aachen) [3]
▶ Custom
Hidden Markov Model Toolkit (HTK) (Cambridge University) [4]
Sphinx (Carnegie Melon University) [5]

一些别的

在这里插入图片描述

Normalisation

αi (t) 的大小在每个时间步都减小。这种影响在 ASR 的 HMM 中是非常明显的, bi (t) 的平均值非常小并会导致计算下溢computational underflow。解决方法:
缩放在每个时间步的αi (t) 的大小,使其和为1。缩放因子的乘积可用于计算 p(O|λ),找到 log p(O|λ) 作为scale因子的对数和。
还可以:
使用 αi (t) 的对数表示,许多实用的 HMM 系统都使用这种解决方案。但是,前向递归需要对数表示的数字进行乘法和加法运算,在已知log A和log B的情况下使用下面的方法求log(A + B):
log(A + B) = logA (1 + B/A) = logA + log (1 + B/A)
但 log (1 + B/A)>0,log (B/A) = logB-logA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值