学习算法
1.1 监督学习算法
假设已给训练数据包含
S
个长度相同的观测序列和对应的状态序列
- 转移概率 aij 的估计
设样本中时刻
t
处于状态
- 观测概率 bj(k) 的估计
设样本中状态为
j
并观测为
- 初始状态概率
πi
的估计
π̂ i
为
S
个样本中初始状态为
qi 的频率
1.2 非监督学习算法(Baum-Welch 算法)
假设给定训练数据只包含
S
个长度为
它的参数学习可以由 EM 算法实现
算法步骤及推导:
- 确定完全数据的对数似然函数
所有观测数据写成 O=(o1,o2,⋯,oT) ,所有隐数据写成 I=(i1,i2,⋯,iT) , 完全数据是 (O,I)=(o1,o2,⋯,oT,i1,i2,⋯,iT) . 完全数据的对数似然函数是 logP(O,I|λ) .
-
EM
算法的
E
步: 求
Q 函数 Q(λ,λ¯)
Q(λ,λ¯)=∑IlogP(O,I|λ)P(O,I|λ¯)
其中,
λ¯
是隐马尔科夫模型参数的当前估计值,
λ
是要极大化的隐马尔科夫模型参数
于是
Q
函数可以写成:
式中的求和都是对所有训练数据的序列总长度 T 进行的。
EM 算法的 M 步 : 极大化Q 函数, 求模型参数 A,B,π由于要极大化的参数在上面式子中分别单独的出现,所以可以对各项分别极大化
- 第一项计算
πi
,可写成:
∑Ilogπi0P(O,I|λ¯)=∑Ilogπi1P(O,i1=i|λ¯)
注意到 πi 满足约束条件 ∑Ni=1=1 , 利用拉格朗日乘子法,写出拉格朗日函数:
∑Ilogπi1P(O,i1=i|λ¯)+γ(∑i=1Nπi−1)
对上式求偏导并令结果为0
∂∂πi[∑i=1NlogπiP(O,i1=i|λ¯)+γ(∑i=1Nπi−1)]=0
注意到对 πi 求偏导时,只有当下标 i 都相同时才有偏导,否则为0
P(O,i1=i|λ¯)πi+γ=0
P(O,i1=i|λ¯)+γπi=0
因为 πi 一共有 N 个可能的状态,于是对其求偏导可以得到N 个等式,我们可以对 所有的 i 求和:
∑i=1NP(O,i1=i|λ¯)+γ∑i=1Nπi=0
因为 ∑Ni=1πi=1,∑Ni=1P(O,i1=i|λ¯)=P(O,|λ¯) 带入得 :
γ=−P(O|λ¯)
我们将 γ 带入 P(O,i1=i|λ¯)+γπi=0 中 可以求出 πi :
πi=P(O,i1=1|λ¯)P(O|λ¯)- 对第二项极大化
∑I(∑t=1T−1logaitit+1)P(O,I|λ¯)=∑i=1N∑j=1N∑t=1T−1logaijP(O,it=i,it+1=j|λ¯)
类似于第一项的做法,因为状态转移矩阵每行加和为1 所以有 ∑Njaij=1 , 同样用拉格朗日乘子法求解,设拉格朗日函数如下:
∑i=1N∑j=1N∑t=1T−1logaijP(O,it=i,it+1=j|λ¯)+γ(∑j=1Naij−1)
对上式对 aij 求偏导,并令偏导结果为0:∑T−1t=1P(O,it,it+1=j|λ¯)aij+γ=0∑t=1T−1P(O,it,it+1=j|λ¯)+γaij=0
这里对 aij 中的 j 求和得,且将 ∑Nj=1aij=1 代入得:
∑j=1N∑t=1T−1P(O,it=i,it+1=j|λ¯)+γ∑j=1Naij=0
因为对 j 求和,计算了所以关于处在 j 状态,所以有下式
∑t=1T−1P(O,it=i|λ¯)+γ=0
解出 γ 并回代入,求得偏导的式子可以解得
aij=∑T−1t=1P(O,it=i,it+1=j|λ¯)∑T−1t=1P(O,it=i|λ¯)- 第三项 可以写成:
∑I(∑t=1Tlogbit(ot))P(O,I|λ¯)=∑j=1N∑t=1Tlogbj(ot)P(O,it=j|λ¯)
这里约束条件是 ∑Mk=1bj(k)=1 (这里的 M 是可能的观测数),只有在
ot=vk 的时候, bj(ot) 对 bj(k) 的偏导才不为0,这里用指示函数 I(ot=vk) 表示, 相等为1 否则为0. 写出拉格朗日函数:
∑j=1N∑t=1Tlogbj(ot)P(O,it=j|λ¯)+γ(∑k=1Mbj(k))=0对 bj(k) 求偏导得:
∑t=1TP(O,it=j|λ¯)I(ot=vk)+γbj(k)=0这里对上式中的 k 求和得:
∑t=1TP(O,it=j|λ¯)+γ=0 解出 γ 并且回代入最初求的偏导的式中解得:
bj(k)=∑Tt=1P(O,it=j|λ¯)I(ot=vk)∑Tt=1P(O,it=j|λ¯)- 第一项计算
πi
,可写成: