电信保温杯笔记——《统计学习方法(第二版)——李航》第10章 隐马尔可夫模型

论文

HMM算法:《An introduction to hidden Markov models》、《A tutorial on hidden Markov models and selected applications in speech recognition》
Baum-Welch算法:《A maximization technique occurring in the statistical analysis of probabilistic functions of Markov chains》

介绍

电信保温杯笔记——《统计学习方法(第二版)——李航》
本文是对原书的精读,会有大量原书的截图,同时对书上不详尽的地方进行细致解读与改写。

在这里插入图片描述
在这里插入图片描述

隐马尔可夫模型

隐马尔可夫模型的定义

在这里插入图片描述

对于NLP的标注问题,就是给句子中每个词标注它的词性,如 n,adj,v 等,状态的集合 Q 为{n,adj,v…},观测值的集合 V 为词的集合。
在这里插入图片描述
在这里插入图片描述

隐马尔可夫模型的基本假设

在这里插入图片描述

例子

盒子就是状态,球的颜色就是观测值。
在这里插入图片描述
在这里插入图片描述

隐马尔可夫模型的作用

生成观测序列

在这里插入图片描述

例如自动写作。

预测状态序列

在这里插入图片描述

在这里插入图片描述

对于NLP的标注问题,就是给句子中每个词标注它的词性,如 n,adj,v 等,状态的集合 Q 为{n,adj,v…},观测值的集合 V 为词的集合,观测序列就是句子。

隐马尔可夫模型的三个基本问题及其解法

三个基本问题

基本问题一:计算观测序列的概率

在这里插入图片描述

基本问题二:估计模型的参数

在这里插入图片描述

基本问题三:计算状态序列的概率

在这里插入图片描述

下面各节将逐一介绍这些基本问题的解法。

基本问题一的解法

在这里插入图片描述

直接计算法

在这里插入图片描述

状态序列组合共有 N T N^T NT 种,公式(10.12)共 2 T 2T 2T 个元素相乘。
在这里插入图片描述

向前算法

在这里插入图片描述

α t + 1 ( i ) = P ( o 1 , o 2 , ⋯   , o t , o t + 1 , i t + 1 = q i ∣ λ ) = ∑ j = 1 N P ( o 1 , o 2 , ⋯   , o t , o t + 1 , i t = q j , i t + 1 = q i ∣ λ ) = ∑ j = 1 N P ( o 1 , o 2 , ⋯   , o t , i t = q j , i t + 1 = q i ∣ λ ) P ( o t + 1 ∣ o 1 , o 2 , ⋯   , o t , i t = q j , i t + 1 = q i , λ ) = ∑ j = 1 N P ( o 1 , o 2 , ⋯   , o t , i t = q j , i t + 1 = q i ∣ λ ) P ( o t + 1 ∣ i t + 1 = q i , λ ) (基于假设2) = ∑ j = 1 N P ( o 1 , o 2 , ⋯   , o t , i t = q j , i t + 1 = q i ∣ λ ) b i ( o t + 1 ) = ∑ j = 1 N P ( o 1 , o 2 , ⋯   , o t , i t = q j ∣ λ ) P ( i t + 1 = q i ∣ o 1 , o 2 , ⋯   , o t , i t = q j , λ ) b i ( o t + 1 ) = ∑ j = 1 N P ( o 1 , o 2 , ⋯   , o t , i t = q j ∣ λ ) P ( i t + 1 = q i ∣ i t = q j , λ ) b i ( o t + 1 ) (基于假设1) = ∑ j = 1 N α t ( j ) a j i b i ( o t + 1 ) i = 1 , 2 , ⋯   , N ( 10.16 ) \begin{aligned} \alpha_{t+1}(i) &= P(o_1, o_2, \cdots , o_t, o_{t+1} , i_{t+1} = q_i | \lambda) \\ &= \sum\limits_{j = 1}^N P(o_1, o_2, \cdots , o_t, o_{t+1} , i_t = q_j , i_{t+1} = q_i | \lambda) \\ &= \sum\limits_{j = 1}^N P(o_1, o_2, \cdots , o_t, i_t = q_j , i_{t+1} = q_i | \lambda) P(o_{t+1} | o_1, o_2, \cdots , o_t, i_t = q_j , i_{t+1} = q_i , \lambda) \\ &= \sum\limits_{j = 1}^N P(o_1, o_2, \cdots , o_t, i_t = q_j , i_{t+1} = q_i | \lambda) P(o_{t+1} | i_{t+1} = q_i , \lambda ) \text{(基于假设2)} \\ &= \sum\limits_{j = 1}^N P(o_1, o_2, \cdots , o_t, i_t = q_j , i_{t+1} = q_i | \lambda) b_i(o_{t+1}) \\ &= \sum\limits_{j = 1}^N P(o_1, o_2, \cdots , o_t, i_t = q_j | \lambda) P( i_{t+1} = q_i | o_1, o_2, \cdots , o_t, i_t = q_j , \lambda) b_i(o_{t+1}) \\ &= \sum\limits_{j = 1}^N P(o_1, o_2, \cdots , o_t, i_t = q_j | \lambda) P( i_{t+1} = q_i | i_t = q_j , \lambda) b_i(o_{t+1}) \text{(基于假设1)}\\ &= \sum\limits_{j = 1}^N \alpha_{t}(j) a_{ji} b_i(o_{t+1}) \quad i = 1,2,\cdots, N \quad (10.16) \\ \end{aligned} αt+1(i)=P(o1,o2,,ot,ot+1,it+1=qiλ)=j=1NP(o1,o2,,ot,ot+1,it=qj,it+1=qiλ)=j=1NP(o1,o2,,ot,it=qj,it+1=qiλ)P(ot+1o1,o2,,ot,it=qj,it+1=qi,λ)=j=1NP(o1,o2,,ot,it=qj,it+1=qiλ)P(ot+1it+1=qi,λ)(基于假设2=j=1NP(o1,o2,,ot,it=qj,it+1=qiλ)bi(ot+1)=j=1NP(o1,o2,,ot,it=qjλ)P(it+1=qio1,o2,,ot,it=qj,λ)bi(ot+1)=j=1NP(o1,o2,,ot,it=qjλ)P(it+1=qiit=qj,λ)bi(ot+1)(基于假设1=j=1Nαt(j)ajibi(ot+1)i=1,2,,N(10.16)
(3)终止
P ( O ∣ λ ) = P ( o 1 , o 2 , ⋯   , o T ∣ λ ) = ∑ i = 1 N P ( o 1 , o 2 , ⋯   , o T , i T = q i ∣ λ ) = ∑ i = 1 N α T ( i ) ( 10.17 ) \begin{aligned} P(O | \lambda) &= P(o_1, o_2, \cdots , o_T | \lambda) \\ &= \sum\limits_{i = 1}^N P(o_1, o_2, \cdots , o_T, i_T = q_i | \lambda) \\ &= \sum\limits_{i = 1}^N \alpha_{T}(i) \quad \quad (10.17) \\ \end{aligned} P(Oλ)=P(o1,o2,,oTλ)=i=1NP(o1,o2,,oT,iT=qiλ)=i=1NαT(i)(10.17)
在这里插入图片描述
在这里插入图片描述

例子

在这里插入图片描述

向后算法

在这里插入图片描述

(1)
β T ( i ) = P ( ∣ i T = q i , λ ) = 1 i = 1 , 2 , ⋯   , N ( 10.19 ) \begin{aligned} \beta_T(i) &= P( | i_T = q_i , \lambda) = 1 \quad i = 1,2,\cdots , N \quad (10.19) \end{aligned} βT(i)=P(iT=qi,λ)=1i=1,2,,N(10.19)
(2)对 t = T − 1 , T − 2 , ⋯   , 1 t = T-1,T-2, \cdots , 1 t=T1,T2,,1
β t ( i ) = P ( o t + 1 , o t + 2 , ⋯   , o T ∣ i t = q i , λ ) = ∑ j = 1 N P ( i t + 1 = q j , o t + 1 , o t + 2 , ⋯   , o T ∣ i t = q i , λ ) = ∑ j = 1 N P ( o t + 1 , o t + 2 , ⋯   , o T ∣ i t = q i , i t + 1 = q j , λ ) P ( i t + 1 = q j ∣ i t = q i , λ ) = ∑ j = 1 N P ( o t + 1 , o t + 2 , ⋯   , o T ∣ i t = q i , i t + 1 = q j , λ ) a i j = ∑ j = 1 N P ( o t + 1 , o t + 2 , ⋯   , o T ∣ i t + 1 = q j , λ ) a i j (基于假设2) = ∑ j = 1 N P ( o t + 1 ∣ i t + 1 = q j , λ ) P ( o t + 2 , ⋯   , o T ∣ i t + 1 = q j , λ ) a i j = ∑ j = 1 N b j ( o t + 1 ) β t + 1 ( j ) a i j i = 1 , 2 , ⋯   , N ( 10.20 ) \begin{aligned} \beta_t(i) &= P( o_{t+1} , o_{t+2} , \cdots , o_T | i_t = q_i , \lambda) \\ &= \sum\limits_{j = 1}^N P( i_{t+1} = q_j , o_{t+1} , o_{t+2} , \cdots , o_T | i_t = q_i , \lambda) \\ &= \sum\limits_{j = 1}^N P( o_{t+1} , o_{t+2} , \cdots , o_T | i_t = q_i , i_{t+1} = q_j ,\lambda) P( i_{t+1} = q_j | i_t = q_i , \lambda) \\ &= \sum\limits_{j = 1}^N P( o_{t+1} , o_{t+2} , \cdots , o_T | i_t = q_i , i_{t+1} = q_j , \lambda) a_{ij} \\ &= \sum\limits_{j = 1}^N P( o_{t+1} , o_{t+2} , \cdots , o_T | i_{t+1} = q_j ,\lambda) a_{ij} \text{(基于假设2)} \\ &= \sum\limits_{j = 1}^N P( o_{t+1} | i_{t+1} = q_j ,\lambda) P( o_{t+2} , \cdots , o_T | i_{t+1} = q_j ,\lambda) a_{ij} \\ &= \sum\limits_{j = 1}^N b_j(o_{t+1}) \beta_{t+1}(j) a_{ij} \quad i = 1,2,\cdots , N \quad (10.20) \end{aligned} βt(i)=P(ot+1,ot+2,,oTit=qi,λ)=j=1NP(it+1=qj,ot+1,ot+2,,oTit=qi,λ)=j=1NP(ot+1,ot+2,,oTit=qi,it+1=qj,λ)P(it+1=qjit=qi,λ)=j=1NP(ot+1,ot+2,,oTit=qi,it+1=qj,λ)aij=j=1NP(ot+1,ot+2,,oTit+1=qj,λ)aij(基于假设2=j=1NP(ot+1it+1=qj,λ)P(ot+2,,oTit+1=qj,λ)aij=j=1Nbj(ot+1)βt+1(j)aiji=1,2,,N(10.20)
(3)
P ( O ∣ λ ) = P ( o 1 , o 2 , ⋯   , o T ∣ λ ) = ∑ i = 1 N P ( o 1 , o 2 , ⋯   , o T , i 1 = q i ∣ λ ) = ∑ i = 1 N P ( o 1 , o 2 , ⋯   , o T , ∣ i 1 = q i , λ ) P ( i 1 = q i ∣ λ ) = ∑ i = 1 N P ( o 1 , o 2 , ⋯   , o T , ∣ i 1 = q i , λ ) π i = ∑ i = 1 N P ( o 1 ∣ i 1 = q i , λ ) P ( o 2 , ⋯   , o T , ∣ i 1 = q i , λ ) π i = ∑ i = 1 N b i ( o 1 ) β 1 ( i ) π i ( 10.21 ) \begin{aligned} P(O | \lambda) &= P(o_1, o_2, \cdots , o_T | \lambda) \\ &= \sum\limits_{i = 1}^N P(o_1, o_2, \cdots , o_T, i_1 = q_i | \lambda) \\ &= \sum\limits_{i = 1}^N P(o_1, o_2, \cdots , o_T, | i_1 = q_i , \lambda) P(i_1 = q_i | \lambda )\\ &= \sum\limits_{i = 1}^N P(o_1, o_2, \cdots , o_T, | i_1 = q_i , \lambda) \pi_i \\ &= \sum\limits_{i = 1}^N P(o_1 | i_1 = q_i , \lambda) P( o_2, \cdots , o_T, | i_1 = q_i , \lambda) \pi_i \\ &= \sum\limits_{i = 1}^N b_i(o_1) \beta_1(i) \pi_i \quad (10.21) \\ \end{aligned} P(Oλ)=P(o1,o2,,oTλ)=i=1NP(o1,o2,,oT,i1=qiλ)=i=1NP(o1,o2,,oT,i1=qi,λ)P(i1=qiλ)=i=1NP(o1,o2,,oT,i1=qi,λ)πi=i=1NP(o1i1=qi,λ)P(o2,,oT,i1=qi,λ)πi=i=1Nbi(o1)β1(i)πi(10.21)
在这里插入图片描述

P ( O ∣ λ ) = P ( o 1 , o 2 , ⋯   , o t , o t + 1 , o t + 2 , ⋯   , o T ∣ λ ) = ∑ i = 1 N ∑ j = 1 N P ( o 1 , o 2 , ⋯   , o t , i t = q i , i t + 1 = q j , o t + 1 , o t + 2 , ⋯   , o T ∣ λ ) = ∑ i = 1 N ∑ j = 1 N P ( o 1 , o 2 , ⋯   , o t , i t = q i ∣ λ ) P ( i t + 1 = q j , o t + 1 , o t + 2 , ⋯   , o T ∣ o 1 , o 2 , ⋯   , o t , i t = q i , λ ) = ∑ i = 1 N ∑ j = 1 N α t ( i ) P ( i t + 1 = q j , o t + 1 , o t + 2 , ⋯   , o T ∣ o 1 , o 2 , ⋯   , o t , i t = q i , λ ) = ∑ i = 1 N ∑ j = 1 N α t ( i ) P ( o t + 1 , o t + 2 , ⋯   , o T ∣ o 1 , o 2 , ⋯   , o t , i t = q i , i t + 1 = q j , λ ) P ( i t + 1 = q j ∣ o 1 , o 2 , ⋯   , o t , i t = q i , λ ) = ∑ i = 1 N ∑ j = 1 N α t ( i ) P ( o t + 1 , o t + 2 , ⋯   , o T ∣ i t + 1 = q j , λ ) P ( i t + 1 = q j ∣ i t = q i , λ ) = ∑ i = 1 N ∑ j = 1 N α t ( i ) P ( o t + 1 , o t + 2 , ⋯   , o T ∣ i t + 1 = q j , λ ) a i j = ∑ i = 1 N ∑ j = 1 N α t ( i ) a i j P ( o t + 1 ∣ i t + 1 = q j , λ ) P ( o t + 2 , ⋯   , o T ∣ i t + 1 = q j , λ ) = ∑ i = 1 N ∑ j = 1 N α t ( i ) a i j b j ( o t + 1 ) β t + 1 ( j ) ( 10.22 ) \begin{aligned} P(O | \lambda) &= P(o_1, o_2, \cdots , o_t , o_{t+1} ,o_{t+2} , \cdots , o_T | \lambda) \\ &= \sum\limits_{i = 1}^N \sum\limits_{j = 1}^N P(o_1, o_2, \cdots , o_t ,i_t = q_i , i_{t+1} = q_j , o_{t+1} ,o_{t+2} ,\cdots , o_T | \lambda) \\ &= \sum\limits_{i = 1}^N \sum\limits_{j = 1}^N P(o_1, o_2, \cdots , o_t ,i_t = q_i | \lambda) P( i_{t+1} = q_j , o_{t+1} ,o_{t+2} ,\cdots , o_T | o_1, o_2, \cdots , o_t ,i_t = q_i , \lambda) \\ &= \sum\limits_{i = 1}^N \sum\limits_{j = 1}^N \alpha_t(i) P( i_{t+1} = q_j , o_{t+1} ,o_{t+2} ,\cdots , o_T | o_1, o_2, \cdots , o_t ,i_t = q_i , \lambda) \\ &= \sum\limits_{i = 1}^N \sum\limits_{j = 1}^N \alpha_t(i) P( o_{t+1} ,o_{t+2} ,\cdots , o_T | o_1, o_2, \cdots , o_t ,i_t = q_i , i_{t+1} = q_j , \lambda) P( i_{t+1} = q_j | o_1, o_2, \cdots , o_t ,i_t = q_i , \lambda) \\ &= \sum\limits_{i = 1}^N \sum\limits_{j = 1}^N \alpha_t(i) P( o_{t+1} ,o_{t+2} ,\cdots , o_T | i_{t+1} = q_j , \lambda) P( i_{t+1} = q_j | i_t = q_i , \lambda) \\ &= \sum\limits_{i = 1}^N \sum\limits_{j = 1}^N \alpha_t(i) P( o_{t+1} ,o_{t+2} ,\cdots , o_T | i_{t+1} = q_j , \lambda) a_{ij} \\ &= \sum\limits_{i = 1}^N \sum\limits_{j = 1}^N \alpha_t(i) a_{ij} P( o_{t+1} | i_{t+1} = q_j , \lambda) P( o_{t+2} ,\cdots , o_T | i_{t+1} = q_j , \lambda) \\ &= \sum\limits_{i = 1}^N \sum\limits_{j = 1}^N \alpha_t(i) a_{ij} b_j(o_{t+1}) \beta_{t+1}(j) \quad (10.22) \\ \end{aligned} P(Oλ)=P(o1,o2,,ot,ot+1,ot+2,,oTλ)=i=1Nj=1NP(o1,o2,,ot,it=qi,it+1=qj,ot+1,ot+2,,oTλ)=i=1Nj=1NP(o1,o2,,ot,it=qiλ)P(it+1=qj,ot+1,ot+2,,oTo1,o2,,ot,it=qi,λ)=i=1Nj=1Nαt(i)P(it+1=qj,ot+1,ot+2,,oTo1,o2,,ot,it=qi,λ)=i=1Nj=1Nαt(i)P(ot+1,ot+2,,oTo1,o2,,ot,it=qi,it+1=qj,λ)P(it+1=qjo1,o2,,ot,it=qi,λ)=i=1Nj=1Nαt(i)P(ot+1,ot+2,,oTit+1=qj,λ)P(it+1=qjit=qi,λ)=i=1Nj=1Nαt(i)P(ot+1,ot+2,,oTit+1=qj,λ)aij=i=1Nj=1Nαt(i)aijP(ot+1it+1=qj,λ)P(ot+2,,oTit+1=qj,λ)=i=1Nj=1Nαt(i)aijbj(ot+1)βt+1(j)(10.22)

—些概率与期望值的计算

在这里插入图片描述

P ( i t = q i , O ∣ λ ) = P ( o 1 , o 2 , ⋯   , o t , i t = q i , o t + 1 , o t + 2 , ⋯   , o T ∣ λ ) = P ( o 1 , o 2 , ⋯   , o t , i t = q i ∣ λ ) P ( o t + 1 , o t + 2 , ⋯   , o T ∣ o 1 , o 2 , ⋯   , o t , i t = q i , λ ) = P ( o 1 , o 2 , ⋯   , o t , i t = q i ∣ λ ) P ( o t + 1 , o t + 2 , ⋯   , o T ∣ i t = q i , λ ) = α t ( i ) β t ( i ) \begin{aligned} P(i_t = q_i, O | \lambda) &= P(o_1, o_2, \cdots , o_t ,i_t = q_i , o_{t+1} ,o_{t+2} ,\cdots , o_T | \lambda) \\ &= P(o_1, o_2, \cdots , o_t ,i_t = q_i | \lambda) P( o_{t+1} ,o_{t+2} ,\cdots , o_T | o_1, o_2, \cdots , o_t ,i_t = q_i , \lambda) \\ &= P(o_1, o_2, \cdots , o_t ,i_t = q_i | \lambda) P( o_{t+1} ,o_{t+2} ,\cdots , o_T | i_t = q_i , \lambda) \\ &= \alpha_t(i) \beta_t(i) \end{aligned} P(it=qi,Oλ)=P(o1,o2,,ot,it=qi,ot+1,ot+2,,oTλ)=P(o1,o2,,ot,it=qiλ)P(ot+1,ot+2,,oTo1,o2,,ot,it=qi,λ)=P(o1,o2,,ot,it=qiλ)P(ot+1,ot+2,,oTit=qi,λ)=αt(i)βt(i)
在这里插入图片描述

P ( i t = q i , i t + 1 = q j , O ∣ λ ) = P ( o 1 , o 2 , ⋯   , o t , i t = q i , i t + 1 = q j , o t + 1 , o t + 2 , ⋯   , o T ∣ λ ) = P ( o 1 , o 2 , ⋯   , o t , i t = q i ∣ λ ) P ( i t + 1 = q j , o t + 1 , o t + 2 , ⋯   , o T ∣ o 1 , o 2 , ⋯   , o t , i t = q i , λ ) = α t ( i ) P ( i t + 1 = q j , o t + 1 , o t + 2 , ⋯   , o T ∣ o 1 , o 2 , ⋯   , o t , i t = q i , λ ) = α t ( i ) P ( o t + 1 , o t + 2 , ⋯   , o T ∣ o 1 , o 2 , ⋯   , o t , i t = q i , i t + 1 = q j , λ ) P ( i t + 1 = q j ∣ o 1 , o 2 , ⋯   , o t , i t = q i , λ ) = α t ( i ) P ( o t + 1 , o t + 2 , ⋯   , o T ∣ i t + 1 = q j , λ ) P ( i t + 1 = q j ∣ i t = q i , λ ) = α t ( i ) P ( o t + 1 , o t + 2 , ⋯   , o T ∣ i t + 1 = q j , λ ) a i j = α t ( i ) P ( o t + 1 ∣ i t + 1 = q j , λ ) P ( o t + 2 , ⋯   , o T ∣ i t + 1 = q j , λ ) a i j = α t ( i ) a i j b j ( o t + 1 ) β t + 1 ( j ) \begin{aligned} P(i_t = q_i, i_{t+1} = q_j , O | \lambda) &= P(o_1, o_2, \cdots , o_t ,i_t = q_i , i_{t+1} = q_j , o_{t+1} ,o_{t+2} ,\cdots , o_T | \lambda) \\ &= P(o_1, o_2, \cdots , o_t ,i_t = q_i | \lambda) P( i_{t+1} = q_j , o_{t+1} ,o_{t+2} ,\cdots , o_T | o_1, o_2, \cdots , o_t ,i_t = q_i , \lambda) \\ &= \alpha_t(i) P( i_{t+1} = q_j , o_{t+1} ,o_{t+2} ,\cdots , o_T | o_1, o_2, \cdots , o_t ,i_t = q_i , \lambda) \\ &= \alpha_t(i) P( o_{t+1} ,o_{t+2} ,\cdots , o_T | o_1, o_2, \cdots , o_t ,i_t = q_i , i_{t+1} = q_j , \lambda) P( i_{t+1} = q_j | o_1, o_2, \cdots , o_t ,i_t = q_i , \lambda) \\ &= \alpha_t(i) P( o_{t+1} ,o_{t+2} ,\cdots , o_T | i_{t+1} = q_j , \lambda) P( i_{t+1} = q_j | i_t = q_i , \lambda) \\ &= \alpha_t(i) P( o_{t+1} ,o_{t+2} ,\cdots , o_T | i_{t+1} = q_j , \lambda) a_{ij} \\ &= \alpha_t(i) P( o_{t+1} | i_{t+1} = q_j , \lambda) P( o_{t+2} ,\cdots , o_T | i_{t+1} = q_j , \lambda) a_{ij} \\ &= \alpha_t(i) a_{ij} b_j(o_{t+1}) \beta_{t+1}(j) \\ \end{aligned} P(it=qi,it+1=qj,Oλ)=P(o1,o2,,ot,it=qi,it+1=qj,ot+1,ot+2,,oTλ)=P(o1,o2,,ot,it=qiλ)P(it+1=qj,ot+1,ot+2,,oTo1,o2,,ot,it=qi,λ)=αt(i)P(it+1=qj,ot+1,ot+2,,oTo1,o2,,ot,it=qi,λ)=αt(i)P(ot+1,ot+2,,oTo1,o2,,ot,it=qi,it+1=qj,λ)P(it+1=qjo1,o2,,ot,it=qi,λ)=αt(i)P(ot+1,ot+2,,oTit+1=qj,λ)P(it+1=qjit=qi,λ)=αt(i)P(ot+1,ot+2,,oTit+1=qj,λ)aij=αt(i)P(ot+1it+1=qj,λ)P(ot+2,,oTit+1=qj,λ)aij=αt(i)aijbj(ot+1)βt+1(j)
在这里插入图片描述

基本问题二的解法

在这里插入图片描述

监督学习算法

在这里插入图片描述

Baum-Welch 算法

在这里插入图片描述

I I I 是隐变量。EM算法可以参考电信保温杯笔记——《统计学习方法(第二版)——李航》第9章 EM算法及其推广,如果了解EM算法,下面推导其实可以不用看
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

步骤

在这里插入图片描述

基本问题三的解法

在这里插入图片描述

近似算法

在这里插入图片描述

维特比算法(viterbi)

可以先看看这个视频机器学习-白板推导系列(十四)-隐马尔可夫模型HMM(Hidden Markov Model)

维特比算法其实和向前算法类似,只不过一个是求 max,一个是求 sum,递推的方式都是一样的,等下看公式的时候就知道。
在这里插入图片描述

δ \delta δ 记录的是概率, Ψ \Psi Ψ 记录的是一个状态。
在这里插入图片描述

对比向前算法的递推式:
α t + 1 ( i ) = P ( o 1 , o 2 , ⋯   , o t , o t + 1 , i t + 1 = q i ∣ λ ) = ∑ j = 1 N α t ( j ) a j i b i ( o t + 1 ) i = 1 , 2 , ⋯   , N ( 10.16 ) \begin{aligned} \alpha_{t+1}(i) &= P(o_1, o_2, \cdots , o_t, o_{t+1} , i_{t+1} = q_i | \lambda) \\ &= \sum\limits_{j = 1}^N \alpha_{t}(j) a_{ji} b_i(o_{t+1}) \quad i = 1,2,\cdots, N \quad (10.16) \\ \end{aligned} αt+1(i)=P(o1,o2,,ot,ot+1,it+1=qiλ)=j=1Nαt(j)ajibi(ot+1)i=1,2,,N(10.16)
在这里插入图片描述

步骤

在这里插入图片描述

例子

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本章概要

在这里插入图片描述

相关视频

机器学习-白板推导系列(十四)-隐马尔可夫模型HMM(Hidden Markov Model)

相关的笔记

hktxt /Learn-Statistical-Learning-Method

相关代码

Dod-o /Statistical-Learning-Method_Code
这个词性标注不同于平时的词性标注,它标记字属于词的什么部分:
B:词语的开头
M:一个词语的中间词
E:一个词语的结尾
S:非词语,单个词
这四个就是状态的集合 Q Q Q

def trainParameter(fileName):
用定义直接统计 π \pi π、A、B,概率结果使用 log ⁡ P \log P logP 保存,以防概率累乘后值太小,属于一个技巧。
在这里插入图片描述

def loadArticle(fileName):
读取测试集文章

def participle(artical, PI, A, B):
使用维特比算法,将每个字的隐状态预测出来,遇到状态 E 或 S 就作为划分的依据,实现了分词的效果。

pytorch

tensorflow

keras

pytorch API:

tensorflow API

【使用教程】 一、环境配置 1、建议下载anaconda和pycharm 在anaconda中配置好环境,然后直接导入到pycharm中,在pycharm中运行项目 anaconda和pycharm安装及环境配置参考网上博客,有很多博主介绍 2、在anacodna中安装requirements.txt中的软件包 命令为:pip install -r requirements.txt 或者改成清华源后再执行以上命令,这样安装要快一些 软件包都安装成功后才算成功 3、安装好软件包后,把anaconda中对应的python导入到pycharm中即可(不难,参考网上博客) 二、环境配置好后,开始训练(也可以训练自己数据集) 1、数据集准备 需要准备yolo格式的目标检测数据集,如果不清楚yolo数据集格式,或者有其他数据训练需求,请看博主yolo格式各种数据集集合链接:https://blog.csdn.net/DeepLearning_/article/details/127276492 里面涵盖了上百种yolo数据集,且在不断更新,基本都是实际项目使用。来自于网上收集、实际场景采集制作等,自己使用labelimg标注工具标注的。数据集质量绝对有保证! 本项目所使用的数据集,见csdn该资源下载页面中的介绍栏,里面有对应的下载链接,下载后可直接使用。 2、数据准备好,开始修改配置文件 参考代码中data文件夹下的banana_ripe.yaml,可以自己新建一个不同名称的yaml文件 train:训练集的图片路径 val:验证集的图片路径 names: 0: very-ripe 类别1 1: immature 类别2 2: mid-ripe 类别3 格式按照banana_ripe.yaml照葫芦画瓢就行,不需要过多参考网上的 3、修改train_dual.py中的配置参数,开始训练模型 方式一: 修改点: a.--weights参数,填入'yolov9-s.pt',博主训练的是yolov9-s,根据自己需求可自定义 b.--cfg参数,填入 models/detect/yolov9-c.yaml c.--data参数,填入data/banana_ripe.yaml,可自定义自己的yaml路径 d.--hyp参数,填入hyp.scratch-high.yaml e.--epochs参数,填入100或者200都行,根据自己的数据集可改 f.--batch-size参数,根据自己的电脑性能(显存大小)自定义修改 g.--device参数,一张显卡的话,就填0。没显卡,使用cpu训练,就填cpu h.--close-mosaic参数,填入15 以上修改好,直接pycharm中运行train_dual.py开始训练 方式二: 命令行方式,在pycharm中的终端窗口输入如下命令,可根据自己情况修改参数 官方示例:python train_dual.py --workers 8 --device 0 --batch 16 --data data/coco.yaml --img 640 --cfg models/detect/yolov9-c.yaml --weights '' --name yolov9-c --hyp hyp.scratch-high.yaml --min-items 0 --epochs 500 --close-mosaic 15 训练完会在runs/train文件下生成对应的训练文件及模型,后续测试可以拿来用。 三、测试 1、训练完,测试 修改detect_dual.py中的参数 --weights,改成上面训练得到的best.pt对应的路径 --source,需要测试的数据图片存放的位置,代码中的test_imgs --conf-thres,置信度阈值,自定义修改 --iou-thres,iou阈值,自定义修改 其他默认即可 pycharm中运行detect_dual.py 在runs/detect文件夹下存放检测结果图片或者视频 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值