.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)

这篇具有很好参考价值的文章主要介绍了.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概率图模型是一种用图形表示概率分布和条件依赖关系的数学模型。概率图模型可以分为两大类:有向图模型和无向图模型。有向图模型也叫贝叶斯网络,它用有向无环图表示变量之间的因果关系。无向图模型也叫马尔可夫网络,它用无向图表示变量之间的相关关系。概率图模型可以用于机器学习,人工智能,自然语言处理,计算机视觉,生物信息学等领域。

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM),机器学习,人工智能

一、马尔科夫模型

随机过程

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM),机器学习,人工智能

马尔科夫过程

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM),机器学习,人工智能

马尔科夫链

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM),机器学习,人工智能

状态转移矩阵通过训练样本学习得到,采用最大似然估计

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM),机器学习,人工智能

二、隐马尔可夫模型简介

2.1 模型结构

隐马尔可夫模型(Hidden Markov Model,HMM)

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM),机器学习,人工智能

隐马尔可夫模型(Hidden Markov Model,HMM)是一种统计模型,用于描述一个含有隐含未知参数的马尔可夫过程。在隐马尔可夫模型中,隐藏状态(Hidden State)和观测值(Observation)的数量是根据实际问题人工设定的,例如,如果我们用隐马尔可夫模型来进行中文分词,那么隐藏状态的数量可以设为4,分别表示词语的开始(B)、中间(M)、结束(E)和单字词(S),观测值的数量可以设为汉字的种类数。状态转移矩阵(Transition Matrix)和混淆矩阵(Confusion Matrix)是隐马尔可夫模型的两个重要参数,分别描述了隐藏状态之间的转移概率和隐藏状态与观测值之间的发射概率。这两个参数可以通过样本学习得到,例如,可以使用最大似然估计或贝叶斯估计的方法,根据给定的状态序列和观测序列,估计这两个参数的值。

隐马尔可夫模型需要解决以下三个基本问题:

  • 概率计算问题:给定模型参数和观测序列,计算该观测序列出现的概率。这个问题可以使用前向算法(Forward Algorithm)或后向算法(Backward Algorithm)来求解,它们都是基于动态规划(Dynamic Programming)的方法,可以有效地利用中间结果,避免重复计算,提高效率。

  • 学习问题:给定观测序列,估计模型参数。这个问题可以使用鲍姆-韦尔奇算法(Baum-Welch Algorithm)或期望最大化算法(Expectation-Maximization Algorithm)来求解,它们都是基于迭代(Iteration)的方法,可以从一个初始的参数值开始,不断地更新参数,直到收敛到一个局部最优解。

  • 预测问题:给定模型参数和观测序列,求最有可能的隐藏状态序列。这个问题可以使用维特比算法(Viterbi Algorithm)来求解,它也是基于动态规划的方法,可以找到一条最优的状态路径,使得该路径下的观测序列的概率最大。

2.2 中文分词

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM),机器学习,人工智能

三、估值问题

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM),机器学习,人工智能

四、解码问题

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM),机器学习,人工智能

五、训练算法

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM),机器学习,人工智能

六、应用

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM),机器学习,人工智能

示例代码:

  • 该代码是一个用 jajapy 库实现的隐马尔可夫模型(HMM)的例子,用于生成和学习观测序列。

  • 该代码首先创建了一个 HMM,指定了状态转移矩阵、发射矩阵和初始状态概率,然后用该模型生成了一个训练集,包含 1000 个长度为 10 的观测序列。

  • 该代码接着创建了一个随机的初始假设模型,然后用鲍姆-韦尔奇算法(BW)对其进行训练,得到一个输出模型,该模型尽可能地拟合训练集。

  • 该代码最后用原始模型和输出模型分别生成了一个测试集,包含 1000 个长度为 10 的观测序列,然后计算了两个模型在测试集上的对数似然,并用对数似然之差作为评估指标,输出到屏幕上。

.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM),机器学习,人工智能

import jajapy as ja # 导入 jajapy 库,这是一个用于创建和训练隐马尔可夫模型的库


def example_7():


  # 模型创建
  #----------------
  # 在下一个状态 (s0) 中,我们以 0.4 的概率生成 'x',以 0.6 的概率生成 'y'
  # 一旦生成了一个观测值,我们就以 0.5 的概率转移到状态 1 或 2
  transitions = [(0,1,0.5),(0,2,0.5),(1,3,1.0),(2,4,1.0),
           (3,0,0.8),(3,1,0.1),(3,2,0.1),(4,3,1.0)] # 定义转移矩阵,每个元素表示从一个状态到另一个状态的概率
  emission = [(0,"x",0.4),(0,"y",0.6),(1,"a",0.8),(1,"b",0.2),
        (2,"a",0.1),(2,"b",0.9),(3,"x",0.5),(3,"y",0.5),(4,"y",1.0)] # 定义发射矩阵,每个元素表示在一个状态下生成一个观测值的概率
  original_model = ja.createHMM(transitions,emission,initial_state=0,name="My HMM") # 使用转移矩阵和发射矩阵创建一个隐马尔可夫模型,初始状态为 0,模型名称为 "My HMM"
  
  #original_model.save("my_model.txt") # 将模型保存到文件中
  #original_model = ja.loadHMM("my_model.txt") # 从文件中加载模型
  # 训练集生成
  #------------------------
  # 我们生成 1000 个长度为 10 的观测序列
  training_set = original_model.generateSet(set_size=1000, param=10) # 使用模型生成训练集,参数 set_size 表示训练集的大小,param 表示每个序列的长度
  #training_set.save("my_training_set.txt") # 将训练集保存到文件中
  #training_set = ja.loadSet("my_training_set.txt") # 从文件中加载训练集


  # 学习
  #---------
  initial_hypothesis = ja.HMM_random(5,alphabet=list("abxy"),random_initial_state=False) # 创建一个随机的假设模型,参数 5 表示状态的数量,alphabet 表示观测值的集合,random_initial_state 表示是否随机选择初始状态
  output_model = ja.BW().fit(training_set, initial_hypothesis) # 使用鲍姆-韦尔奇算法(BW)对假设模型进行训练,参数 training_set 表示训练集,initial_hypothesis 表示初始假设,返回一个训练后的模型


  # 输出评估
  #------------------
  # 我们生成 1000 个长度为 10 的观测序列
  test_set = original_model.generateSet(set_size=1000, param=10) # 使用原始模型生成测试集,参数 set_size 表示测试集的大小,param 表示每个序列的长度
  ll_original = original_model.logLikelihood(test_set) # 计算原始模型在测试集上的对数似然
  ll_output   =   output_model.logLikelihood(test_set) # 计算训练后的模型在测试集上的对数似然
  quality = abs(ll_original - ll_output) # 计算两个模型的对数似然之差,作为评估指标
  print("loglikelihood distance:",quality) # 打印评估指标


if __name__ == "__main__":
  example_7() # 调用 example_7 函数

输出:

/07-hmm.py

WARNING: Stormpy not found.

Learning an HMM...

WARNING: stormpy not found. The output model will be a Jajapy model

|████████████████████████████████████████| 104 in 3:22.9 (0.51/s)

loglikelihood distance: 0.4953666912796937文章来源地址https://www.toymoban.com/news/detail-813758.html

到了这里,关于.【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HMM理论学习笔记-隐马尔可夫模型的三个元素、假设和问题

    初学HMM之前,先回忆一下概率论、信息论中学到的一些离散型随机变量的基本公式和概念,势必有助于后续公式推导的理解。 条件概率 条件概率表示在条件Y=b成立的情况下,X=a的概率。 A,B相互独立时, P ( B ∣ A ) = P ( B ) , P ( A ∣ B ) = P ( A ) P(B|A)=P(B),P(A|B)=P(A) P ( B ∣ A

    2024年02月01日
    浏览(34)
  • 基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真

    目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序         基于HMM隐马尔可夫模型的金融数据预测算法.程序实现HMM模型的训练,使用训练后的模型进行预测。 MATLAB2022A版本运行        隐马尔可夫模型(Hidden Markov Model, HMM)是一种概

    2024年04月25日
    浏览(25)
  • 机器学习:马尔可夫模型

    后续遇到合适的案例会再补充   马尔可夫模型(Markov Model, MM)是一种统计模型,广泛应用在自然语言处理等领域中。 1.1 数学定义   考虑一组随机变量序列 X = { X 0 , X 1 , … , X t , …   } X={X_{0},X_{1},dots,X_{t},dots} X = { X 0 ​ , X 1 ​ , … , X t ​ , … } ,其中 X t X_{t} X t ​ 表

    2024年02月13日
    浏览(31)
  • 机器学习基础 HMM模型(隐马尔科夫)

    推荐参考:https://juejin.cn/post/6844903891834781703 在机器学习算法中,马尔可夫链(Markov chain)是个很重要的概念。马尔可夫链(Markov chain),又称离散时间马尔可夫链(discrete-time Markov chain),因俄国数学家安德烈·马尔可夫(俄语:Андрей Андреевич Марков)得名。 马尔科

    2024年02月02日
    浏览(52)
  • 初识马尔科夫模型(Markov Model)

    马尔科夫模型(Markov Model)是一种概率模型,用于描述随机系统中随时间变化的概率分布。马尔科夫模型基于马尔科夫假设,即当前状态只与其前一个状态相关,与其他状态无关。 马尔科夫模型具有如下几个性质: ① 马尔科夫性 :即马尔科夫模型的下一个状态只与当前状态

    2024年02月04日
    浏览(21)
  • 对平稳马尔可夫链(stationary distribution of a Markov chain)的学习

    首先介绍马尔可夫链的 平稳分布 :   给定一个马尔可夫链,其状态空间存在概率分布π=π(s),且转移矩阵和转移概率P=p(i,j),若满足 π=πP (平衡方程),则称π是该马尔可夫链的平稳分布,或称为转移阵P的 不变测度 。   如果马尔可夫链的存在平稳分布,并且其初始

    2024年02月05日
    浏览(31)
  • 阿白数模笔记之灰色-马尔科夫模型(Grey Markov model)

    目录 前言(preface) GM(1,1) 简介(brief introdution)  ①级比检验(Grade ratio test) ②建立GM(1,1)模型 Ⅰ、邻值生成序列(Adjacent value generating sequence ) Ⅱ、回归分析(regression analysis) Ⅲ、残差检验(Residual test) Markov chain ① 转移概率矩阵(Transition probability matrix) ②状态分布向

    2024年02月09日
    浏览(30)
  • AI人工智能中的概率论与统计学原理与Python实战:隐马尔可夫模型(HMM)的理解与实现...

    随着人工智能技术的不断发展,人工智能已经成为了许多行业的核心技术之一。在人工智能中,概率论和统计学是非常重要的一部分,它们可以帮助我们更好地理解和解决问题。在本文中,我们将讨论概率论与统计学原理在人工智能中的应用,以及如何使用Python实现隐马尔可

    2024年04月10日
    浏览(41)
  • 概率论中的Hidden Markov Model

    Hidden Markov Model(HMM)是一种概率模型,用于描述一系列随机过程中的隐藏状态。它在许多领域得到了广泛应用,例如语音识别、自然语言处理、计算机视觉、生物信息学等。在这篇文章中,我们将深入探讨HMM的核心概念、算法原理、具体操作步骤以及数学模型公式。 1.1.1 隐藏状

    2024年04月14日
    浏览(49)
  • 机器学习算法 - 马尔可夫链

    马尔可夫链(Markov Chain)可以说是机器学习和人工智能的基石,在强化学习、自然语言处理、金融领域、天气预测、语音识别方面都有着极其广泛的应用 The future is independent of the past given the present   未来独立于过去,只基于当下。 这句人生哲理的话也代表了马尔科夫链的思想

    2024年01月17日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包