隐马尔科夫模型
1.通信模型:
其中S1,S2,...,Sn表示信息源发出的信号,比如手机信号,而O1,O2,...,On表示接受者接收的信号,通信中的解码就是将接收到的信号O1,O2,...,On还原为发送的S1,S2,...,Sn
通信系统的六要素:发送者(信息源)、信道、接受者、信息、上下文和编码
通过机器基于大量的基础数据,由O1,O2,...,On解析为S1,S2,...,Sn的过程称为自动识别:如果根据接收到的英语信息推测说话者的汉语意思,就是机器翻译;如果根据带有拼写错误的语句推测说话者的正确意思,就是自动纠错。几乎所有的自然语言处理问题都可以等价成通信的解码问题.
2.问题描述:
怎么从O1,O2,...,On推测其信息源S1,S2,...,Sn?
从所有的信息源中找出最有可能的那个信息,即在已知O1,O2,...,On的情况下,求得令条件概率P(S1,S2,S3,...|O1,O2,O3,...)最大的信息串S1,S2,S3,...,即:

由贝叶斯公式变形得:
P(S1,S2,S3,...|O1,O2,O3,...)=![]()

其中P(O1,O2,O3,...)在信号O1,O2,O3,...产生后就固定下来了,所以上次公式可以简化为P(O1,O2,O3,...|S1,S2,S3,...)*P(S1,S2,S3,...),可以通过隐含马尔科夫模型来估计
3.隐含马尔科夫模型:
随机过程:a.任何时刻t,对应的状态St都是随机的;b.任何一个状态St都可能和其周围其他的状态相关
基于马尔科夫假设的随机过程称为马尔科夫过程,即马尔科夫链

隐含马尔科夫是马尔科夫链的一个扩展:任一时刻t的状态是不可见的,但是在每个时刻t会输出一个符号Ot,而且Ot和St相关且仅和St相关,这个被称为独立输出假设

基于隐含马尔科夫模型,计算某个特点的状态S1,S2,S3,...产生输出符号O1,O2,O3,...的概率:
P(O1,O2,O3,...,S1,S2,S3,...)=![]()


而将马尔科夫假设和独立输出假设用于通信的解码问题,即把
带入P(O1,O2,O3,...|S1,S2,S3,...)*P(S1,S2,S3,...)正好得到上面公式

P(S1,S2,S3,..)是语言模型,而P(S1,S2,S3,...|O1,O2,O3,...)根据应用的不同名称不同:在语音识别中它被称为声学模型,机器翻译中是翻译模型,拼写校正中是纠错模型
3.模型的计算问题:
围绕隐含马尔科夫模型有三个问题:
a.给定一个模型,如何计算某个特点的输出序列的概率;
b.给定一个模型和某个特点的输出序列,如何找到最可能产生这个输出的状态序列(维特比算法)
c.给定足够量的观测数据,如何估计隐含马尔科夫模型的参数
这里考虑在前两个问题都解决的情况下:
i.有监督的训练方法:
根据#(St) #(Ot,St)以及语言模型的训练方法![]()
,可以直接得到,但是此方法需要大量的人工标记的数据,因此成本非常高

ii.训练隐含马尔科夫模型的无监督的训练方法,仅仅通过大量观测到的信号O1,O2,O3,...就能推算模型参数P(St|St-1)和P(Ot|St)
思想:通过观测到的输出信号来倒退产生他的隐含马尔科夫模型可能会有多个,但是总有一个模型最有可能得到观测输出
过程:1.找到一组可以产生输出序列O的参数(当转移概率P和输出概率Q均为均匀分布时,模型可以产生任何输出);2.在解决了第一个和第二个问题的情况下,不仅可以算出此概率产生O的概率P(O|M1),同时找个这个模型产生O的所有路径及路径的概率,这些可能的路径记录了每个状态经历的次数及其状态、最后的输出,可以看成是"标注的训练数据";
根据![]()
计算出一组新的模型参数,使得P(O|M2)>P(O|M1),接下来从M2出发可以找到更好的M3,直到模型的质量没有提高为止

鲍姆-韦尔奇的算法每此迭代都是不断估计新的模型参数,使得输出的高铝(目标函数)达到最大化,此过程都称为期望值最大化(Expection Maximization),坚持EM过程,但是EM过程只能保证收敛到一个局部最优点,因此比有监督的训练得到的模型效果略差,但是如果目标函数时凸函数(如信息熵),则EM过程可以找到最佳值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?