当前位置:网站首页>隐马尔科夫模型(HMM)学习笔记
隐马尔科夫模型(HMM)学习笔记
2022-07-07 02:05:00 【Wsyoneself】
- 马尔科夫链:在任一时刻t,观测变量的取值仅依赖于当前的状态变量,与其他时刻的状态变量即观测变量无关;同时,当前的状态值仅依赖于前一个时刻的状态,与其他无关。
- 由马尔可夫得到HMM的联合概率分布
- 一个模型肯定包含参数,机器学习的本质就是找到一组最优的参数,使得模型的拟合效果最好。
- HMM的参数:状态转移概率(由当前状态推测下一状态的概率),输出观测概率(由当前状态推测观测值的概率)
- 三个基本问题:
- 概率计算问题:给定模型和观测序列,计算观测序列的出现概率
- 学习问题:已知观测序列,估计模型参数,使得观测序列的输出概率最大
- 预测问题:给定模型和观测序列,求对给定观测序列条件概率P(I|O)最大的隐藏状态I
- 算法:
- 前向算法:给定隐马尔科夫模型,以及至时刻t的观测序列,且状态为qi的前向概率:实际就是从t=1开始计算,根据隐式马尔可夫的假设,迭代计算即可得(自己理解:前向概率就是时刻t转移到时刻t+1的概率,每个状态乘上当前状态的状态转移概率,由于最后得到的是观测值,还需要乘上最后时刻的观测概率)
- 后向算法:给定隐马尔科夫模型,以及从t+1时刻到T的观测序列,且状态为qi的后向概率:假设最后一时刻的概率为1,然后理由条件概率的逆计算从后向前推
- Baum-welch算法:如果样本数据没有标签,则训练数据只包含观测序列O,但对应的状态I未知,则此时的隐马尔科夫模型是一个含有隐变量的概率模型。
参数学习本质还是EM,EM的基本思想是先将参数的初设估计值加入到似然函数中,然后对似然函数进行极大化(一般是求导,令其等于0),得到新的参数估计值,一直重复,直到收敛。
维特比(Viterbi)算法:是一种动态规划算法,用于寻找最有可能产生观测事件序列的-维特比路径-隐含状态序列。
概括:
给定模型和观察,Forward算法可以计算从模型观察出特定序列的概率;Viterbi算法可以计算最有可能的内部状态;Baum-Welch算法可以用于训练HMM。当有足够的训练数据,用Baum-Welch算出HMM的状态转移概率和观察概率函数,然后就可以用Viterbi算法求出每一句输入的语音背后最有可能的音素序列。但如果数据量有限,往往先训练一些比较小的HMM用于识别各个单音子(monophone),或者三音子(triphone),然后把这些小HMM串起来就能识别连续语音
对于语音合成,给定一串音素,去数据库里找出最符合这串音素的一堆小HMM,把它们串成一个较长的HMM,代表整个句子。然后根据这个组合出的HMM,计算最有可能观察出的语音参数序列,剩下的就是从参数序列生成语音了。这是对完整过程的简化,最主要的问题在于,这样生成的语音参数是不连续的,因为HMM的状态是离散的。为了解决这个问题,Keiichi Tokuda借鉴语音识别中广泛使用的动态参数(参数的一阶和二阶导数),将其引入语音合成的参数生成中,使生成语音的连贯性有了大幅提高。重点是利用隐性状态,如语法,用词习惯等,推测出概率更高的输出。
- 在已知模型参数的情况下,观测序列为O时,状态可以为任何一种状态,则每一种状态下观测序列为O的概率累加就是观测序列的概率了。
- 对于有监督学习,可以直接根据数据计算状态转移概率和输出观测概率(对于分词来说,观测序列对应的是文本句子,隐藏状态对应的是句子中每个字的标签)
- 语音识别中观测序列是语言,隐藏状态是文字,语音识别的作用就是将语音转化为对应的文字。
参考:
「隐马尔可夫模型」(HMM-Based)在语音合成中是如何应用的? - 知乎 (zhihu.com)
边栏推荐
- How to keep accounts of expenses in life
- Force deduction 62 different paths (the number of all paths from the upper left to the lower right of the matrix) (dynamic planning)
- go-microservice-simple(2) go-Probuffer
- Software testing knowledge reserve: how much do you know about the basic knowledge of "login security"?
- win系统下安装redis以及windows扩展方法
- 693. 行程排序
- 【OpenCV】形态学滤波(2):开运算、形态学梯度、顶帽、黑帽
- 牛客小白月赛52 E.分组求对数和(二分&容斥)
- FlexRay通信协议概述
- 软件测试知识储备:关于「登录安全」的基础知识,你了解多少?
猜你喜欢
dolphinscheduler3.x本地启动
[SOC FPGA] custom IP PWM breathing lamp
【GNN】图解GNN: A gentle introduction(含视频)
JVM command - jmap: export memory image file & memory usage
蚂蚁庄园安全头盔 7.8蚂蚁庄园答案
Doctoral application | Professor Hong Liang, Academy of natural sciences, Shanghai Jiaotong University, enrolls doctoral students in deep learning
How to use wechat cloud hosting or cloud functions for cloud development of unapp development applet
PostgreSQL database timescaledb function time_ bucket_ Gapfill() error resolution and license replacement
How to keep accounts of expenses in life
JMeter's own functions are not enough? Why don't you develop one yourself
随机推荐
【GNN】图解GNN: A gentle introduction(含视频)
Jmeter自带函数不够用?不如自己动手开发一个
基于FPGA的VGA协议实现
开发者别错过!飞桨黑客马拉松第三期链桨赛道报名开启
When we talk about immutable infrastructure, what are we talking about
测试开发基础,教你做一个完整功能的Web平台之环境准备
What are the classic database questions in the interview?
Find duplicate email addresses
缓存在高并发场景下的常见问题
[shell] summary of common shell commands and test judgment statements
安装VMmare时候提示hyper-v / device defender 侧通道安全性
为不同类型设备构建应用的三大更新 | 2022 I/O 重点回顾
Apache ab 压力测试
C interview encryption program: input plaintext by keyboard, convert it into ciphertext through encryption program and output it to the screen.
Software testing knowledge reserve: how much do you know about the basic knowledge of "login security"?
[FPGA] EEPROM based on I2C
Common problems of caching in high concurrency scenarios
UIC (configuration UI Engineering) public file library adds 7 industry materials
计算模型 FPS
JMeter's own functions are not enough? Why don't you develop one yourself