Background
频率派: 统计机器学习, 核心思想是定义一个Loss Function, 然后进行优化
一般思路:
定义model: e.g. y = w T x + b 超平面
定义strategy: 定义优化的策略, 即定义一个Loss Function. 不同的Loss Function会偏向优化不同的方面
算法求解: e.g. 梯度下降,随机梯度下降,牛顿法,逆牛顿法,…
贝叶斯派: 概率图模型, 核心思想是做推断, 求后验概率, 求后验概率相关的计算(方差, 期望, etc…), 采用数值积分的方式(Monta Carlo的方法有了实质的突破)
那么HMM从根本上是属于概率图模型
概率图模型
有向图: 贝叶斯网络
无向图: 马尔可夫随机场
概率图+时间: 动态模型 Dynamic Model
一般而言的模型, 如高斯混合模型(GMM), N个样本: { x 1 , x 2 , ⋯ , x N } 这些样本之间是独立同分布的.
但是Dynamic Model是在普通模型的基础上添加了时间序列. 这个时间可以认为是真实的时间, 也可以是一个抽象的时间, 也可以是一个序列(一段话, 一个句子(nlp))
这个时候x i 之间就不是独立同分布(i.i.d)的了
e.g.
graph LR
i1-->i2
i1-->o1
i2-->i3
i2-->o2
i3-->...
其中, A i 是系统状态system state, 是隐变量, 而o i 是观测变量.
可以认为横向是时间, 或者说是序列; 纵向是混合mixture
如果时间序列上(横向)的system state是离散的, 每一个隐变量的取值是离散的: HMM; 如果是连续, 那么判断是否是线性的. 其中一个线性的代表是Kalman Filter, 非线性的代表是Partide Filter
HMM
参数
假设观测变量用o 表示, 系统状态变量用i表示
然后假设取值集合(值域): o的值域V = { v 1 , v 2 , ⋯ , v M } , i的取值集合(值域): Q = { q 1 , q 2 , ⋯ , q N }
λ = ( π , A , B )
π : 初始的概率分布
π = [ π 1 , π 2 , ... , π N ] 表示系统变量取值的概率 . 默认所有变量的初始的分布是相同的
A = [ a ij ] : 状态转移矩阵
其中, a ij = p ( i t + 1 = q j ∣ i t = q i ) . 注意这里的下标i 表示状态取值的第i 个值,而i t 指系统变量i 在t 时刻的取值
B = [ b j ( k ) ] : 发射矩阵
其中 , b j ( k ) = p ( o t = v k ∣ i t = q j )
这里的π i 是指的是在初始状态下为第i 个状态的概率, 并不是第i 个system state的概率. 默认初始状态下所有system state的分布相同
假设
齐次马尔可夫假设
可以简单认为是无后效性的. 也就是说, 认为未来和过去没有关系
p ( i t + 1 ∣ i t , i t − 1 , ⋯ , i 1 , o t , o t − 1 , ⋯ , o 1 ) = p ( i t + 1 ∣ i t )
即,i t + 1 只和i t 相关, 其他的都无关
观测独立假设
p ( o t ∣ i t , i t − 1 , ⋯ , i 1 , o t − 1 , ⋯ , o 1 ) = p ( o t ∣ i t )
即, o t 只和i t 有关
三个主要问题
Evaluation
Given λ , find p ( O ∣ λ )
p ( O ∣ λ ) = I ∑ p ( I , O ∣ λ ) = I ∑ p ( O ∣ I , λ ) p ( I ∣ λ )
其中
p ( I ∣ λ ) = p ( i 1 , i 2 , ⋯ , i T ∣ λ ) = p ( i T ∣ i 1 , i 2 , ⋯ , i T − 1 , λ ) p ( i 1 , ⋯ , i T − i ∣ λ )
= p ( i T ∣ i 1 , i 2 , ⋯ , i T − 1 , λ ) ⋯ p ( i 2 ∣ i 1 , λ ) p ( i 1 ∣ λ )
consider the assumption: p ( i t + 1 ∣ i t , i t − 1 , ⋯ , i 1 , o t , o t − 1 , ⋯ , o 1 ) = p ( i t + 1 ∣ i t )
⇒ p ( I ∣ λ ) = p ( i T ∣ i T − 1 ) ⋯ p ( i 2 ∣ i 1 ) = a i T − 1 i T a i T − 2 i T − 1 ⋯ a i 1 i 2 π ( i 1 ) = π ( i 1 ) t = 2 ∏ T a i t − 1 i t
p ( O ∣ I , λ ) = < 使用观测独立假设 , 类似的过程 > = t = 1 ∏ T b i t ( o t )
因此
p ( O ∣ λ ) = I ∑ π ( i 1 ) t = 2 ∏ T a i t − 1 i t t = 1 ∏ T b i t ( o t )
= i 1 ∑ i 2 ∑ ⋯ i N ∑ π ( i 1 ) t = 2 ∏ T a i t − 1 i t t = 1 ∏ T b i t ( o t )
注意到时间复杂度为O ( N T ) 是一个指数时间增长的, 时间复杂度非常恐怖. 所以使用另外的方法计算
前向算法
现在假设一个记号α t ( i ) = p ( o 1 , o 2 , ⋯ , o t , i t = q i ∣ λ ) (注意分别作为参数的i是q i 的下标,而i t 是表示第t 个system state)
这个记号表示第t 个system state为q i , 并且观测到的结果为o 1 , ⋯ , o t 的概率.
那么有:
P ( O ∣ λ ) = i = 1 ∑ N p ( o 1 , ⋯ , o T , i T = q i ∣ λ ) = i = 1 ∑ N α T ( i )
尝试通过累加的方式消除掉引入的i T
现在通过计算α T ( i ) 能化简计算:
α t + 1 ( j ) = p ( o 1 , ⋯ , o t + 1 , i t + 1 = q j ∣ λ )
= i = 1 ∑ N p ( o 1 , ⋯ , o t + 1 , i t + 1 = q j , i t = q i ∣ λ )
= i = 1 ∑ N p ( o t + 1 ∣ o 1 , ⋯ , o t , i t + 1 = q j , i t = q i , λ ) p ( o 1 , ⋯ , o t , i t + 1 = q j , i t = q i ∣ λ )
= i = 1 ∑ N p ( o t + 1 ∣ i t + 1 = q j ) p ( o 1 , ⋯ , o t , i t + 1 = q j , i t = q i ∣ λ ) 使用观测独立假设
= i = 1 ∑ N p ( o t + 1 ∣ i t + 1 = q j ) p ( i t + 1 = q j ∣ o 1 , ⋯ , o t , i t = q i , λ ) p ( o 1 , ⋯ , o t , i t = q i ∣ λ )
= i = 1 ∑ N p ( o t + 1 ∣ i t + 1 = q j ) p ( i t + 1 = q j ∣ i t = q i ) α t ( i ) 使用齐次马尔可夫假设
= i = 1 ∑ N b j ( o t + 1 ) a ij α t ( i )
后向传播
假定一个记号β y ( i ) = p ( o t + 1 , ⋯ , o T ∣ i t = q i , λ ) , 表示在给定第t 个时刻的system state i t = q i 之后, 可观测变量为o t + 1 , ⋯ , o T 的概率
注意, i t 和o t + 1 是正好错开了一个时序
那么有β 1 ( i ) = p ( o 2 , ⋯ , o T ∣ i 1 = q i , λ )
那么根据β t ( i ) , 写出:
p ( O ∣ λ ) = p ( o 1 , ⋯ , o T ∣ λ )
= i = 1 ∑ N p ( o 1 , ⋯ , o T , i 1 = q i ∣ λ )
= i = 1 ∑ N p ( o 1 , ⋯ , 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 , λ ) p ( o 2 , ⋯ , o T ∣ i 1 = q i , λ ) π i
= i = 1 ∑ N p ( o 1 ∣ i 1 = q i ) β 1 ( i ) π i
= i = 1 ∑ N b i ( o 1 ) π i β 1 ( i )
现在推导β t ( i ) 的地推表达式
引论:
Markov Blanket
and
D-separate
graph TB
X-->Y-->Z
M-->N
M-->P
A-->B
C-->B
这个时候,有三种情况:
第一种原来是条件不独立,给定Y 之后变成条件独立
第二种原来条件不独立,给定M 后条件独立
第三种原来条件独立,给定B 之后条件不独立
可以认为,两者之间如果有一条通路,那么就算是条件独立。但是注意第三种,给定B 之后不是将通路打断,而是把断掉的通路合成
Link to original
β t ( j ) = p ( o t + 1 , ⋯ , o T ∣ i t = q j , λ ) = i = 1 ∑ N p ( o t + 1 , ⋯ , o T , q t + 1 = q i ∣ i t = q j , λ ) = i = 1 ∑ N p ( o t + 1 , ⋯ , o T ∣ i t + 1 = q i , i t = q j , λ ) p ( i t + 1 = q i ∣ i t = q j , λ ) = i = 1 ∑ N p ( o t + 1 , ⋯ , o T ∣ i t + 1 = q i , λ ) a ji 考虑 D-seperated 第一种情况 , i t 在给定 i t + 1 时条件独立 = i = 1 ∑ N p ( o t + 1 ∣ o t + 2 , ⋯ , o T , i t + 1 = q i , λ ) p ( o t + 2 , ⋯ , o T ∣ i t + 1 = q i , λ ) a ji = i = 1 ∑ N p ( o t + 1 ∣ i t + 1 = q i ) β t + 1 ( i ) a ji 使用观测独立假设 = i = 1 ∑ N b i ( o t + 1 ) a ji β t + 1 ( i )
Learning
λ = arg max λ p ( O ∣ λ )
Baum-Welch算法是在EM算法之前提出的, 但是实际上Baum-Welch算法就是EM算法的一种特殊形式
考虑EM算法 公式:
θ ( t + 1 ) = arg max ∫ z log p ( X , Z ∣ θ ) p ( Z ∣ X , θ ( t ) ) d Z
在这里, 隐变量Z = I , X = O , θ = λ , 那么就有了针对HMM的EM算法的公式:
λ ( t + 1 ) = arg max λ I ∑ log p ( O , I ∣ λ ) p ( I ∣ O , λ ( t ) )
= arg max λ I ∑ log p ( O , I ∣ λ ) p ( O ∣ λ ( t ) ) p ( O , I ∣ λ ( t ) )
= arg max λ I ∑ log p ( O , I ∣ λ ) p ( O , I ∣ λ ( t ) )
注意, λ ( t ) = ( π ( t ) , A ( t ) , B ( t ) ) 是上一次迭代产生的结果, 那么p ( O ∣ λ ( t ) ) 是一个常数, 对求解arg max λ 没有关系, 因此可以舍弃.
我们再定义中间的函数Q ( λ , λ ( t ) ) = ∑ I log p ( O , I ∣ λ ) p ( O , I ∣ λ ( t ) )
将原始的Evalution带入表达式:
Q ( λ , λ ( t ) ) π ( t + 1 ) = I ∑ log ( π ( i 1 ) t = 2 ∏ T a i t − 1 i t t = 1 ∏ T b i t ( o t )) p ( O , I ∣ λ ( t ) ) = I ∑ [ ( log π i 1 + log t = 1 ∑ T a i t − 1 i t + log t = 1 ∑ T b i 1 ( o t ) ) p ( O , I ∣ λ ( t ) ) ] = arg max π Q ( λ , λ ( t ) )) = i 1 ∑ ⋯ i T ∑ ( log π i 1 p ( O , i 1 , ⋯ , i T ∣ λ ( t ) )) ) = arg max π i 1 ∑ ( log π i 1 p ( O , i 1 ∣ λ ( t ) ) ) s.t. i ∑ π i = 1
应用拉格朗日乘子法:
L ( π , η ) ⇒ 代入 (1), 得 : ⇒ = i = 1 ∑ N log π i p ( O , i 1 = q i ∣ λ ( t ) ) + η ( i = 1 ∑ N π i − 1 ) ∂ π i ∂ L = π i 1 p ( O , i 1 = q i ∣ λ ( t ) ) + η = 0 ( 1 ) i = 1 ∑ N [ p ( O , i 1 = q i ∣ λ ( t ) ) + π i η ] = 0 ⇔ p ( O ∣ λ ( t ) ) + η = 0 ⇔ η = − p ( O ∣ λ ( t ) ) p ( O , i 1 = q i ∣ λ ( t ) ) + η π i = p ( O , i 1 = q i ∣ λ ( t ) ) − π i p ( O ∣ λ ( t ) ) = 0 π i ( t + 1 ) = p ( O ∣ λ ( t ) ) p ( O , i 1 = q i ∣ λ ( t ) )
关于A ( t + 1 ) 和B ( t + 1 ) 的推导过程是类似的, 这里不做推导.
Decoding
也称为Viterbi Algorithm
I ^ = arg max I p ( I ∣ O , λ )
我们可以认为这里有一个动态规划的问题
假设路径的长度是p 1 , 那么我们的目的就是找到最短路径. 这样就能最大化概率
定义
δ t ( i ) = i 1 , ⋯ , i t − 1 max p ( o 1 , ⋯ , o t , i 1 , ⋯ , i t − 1 , i t = q i ∣ λ )
意义是达到t 时刻的时候, 选择q i 作为system state的概率的最大值
状态转移方程为:
δ t + 1 ( j ) = i 1 , ⋯ , i t max p ( o 1 , ⋯ , o t + 1 , i 1 , ⋯ , i t , i t + 1 = q j ∣ λ ) = 1 ≤ i ≤ N max δ t ( i ) a ij b j ( o t + 1 )
记录中间经过的路径:
定义 ψ t + 1 ( j ) = arg max 1 ≤ i ≤ N δ t ( i ) a ij
其他
假设隐变量是Z , 观测变量是X
filtering
P ( z t ∣ x 1 , ⋯ , x t )
是给定观测结果从x 1 , ⋯ , x t 之后找到对应的隐变量z t
这个可以做online learning在线学习
p ( z 1 ∣ x 1 ) → p ( z 2 ∣ x 1 , x 2 ) → ⋯ → p ( z t ∣ x 1 , ⋯ , x t ) → ⋯
每进来一个数据就可以做一次filtering, 是可以做online的
p ( z t ∣ x 1 : t ) = p ( x 1 : t ) p ( z t , x 1 : t ) = ∑ z t p ( x 1 : t , z t ) p ( z t , x 1 : t ) ∝ p ( z t , x 1 : t ) = α t ( z t )
smoothing
p ( z t ∣ x 1 , ⋯ , x T )
给定所有的观测值, 然后求解某一个时刻的隐变量
更偏向offline, 类似于全部结束之后的整体复盘
称作前向后向算法
p ( z t ∣ x 1 : T ) p ( x 1 : T , z t ) ⇒ = p ( x 1 : T ) p ( z t , x 1 : T ) = ∑ z t p ( x 1 : T , z t ) p ( z t , x 1 : T ) = p ( x 1 : t , x t + 1 : T , z t ) = p ( x t + 1 : T ∣ x 1 : t , z t ) p ( x 1 : t , z t ) = p ( x t + 1 : T ∣ z t ) α t ( z t ) = β t ( z t ) α t ( z t ) p ( z t ∣ x 1 : T ) ∝ p ( z t , x 1 : T ) = β t ( z t ) α t ( z t )
中间的p ( x t + 1 : T ∣ x 1 : t , z t ) = p ( x t + 1 : T ∣ z t ) 化简用到了D-separator
prediction
p ( z t + 1 , ⋯ ∣ x 1 , ⋯ , x t ) or p ( x t + 1 , ⋯ ∣ x 1 , ⋯ , x t )
在给定前t 时刻的观测值x 1 , ⋯ , x t 之后, 预测后面一个或者多个隐变量或者观测值的过程
马尔可夫齐次假设和filtering问题:
p ( z t + 1 ∣ x 1 : t ) = z t ∑ p ( z t + 1 , z t ∣ x 1 : t ) = z t ∑ p ( z t + 1 ∣ z t , x 1 : t ) p ( z t ∣ x 1 : t ) = z t ∑ p ( z t + 1 ∣ z t ) α t ( z t )
观测独立假设和上面刚刚求解的预测:
p ( x t + 1 ∣ x 1 : t ) = z t + 1 ∑ p ( x t + 1 , z t + 1 ∣ x 1 : t ) = z t + 1 ∑ p ( x t + 1 ∣ z t + 1 , x 1 : t ) p ( z t + 1 ∣ x 1 : t ) = z t + 1 ∑ [ p ( x t + 1 ∣ z t + 1 ) z t ∑ p ( z t + 1 ∣ z t ) α t ( z t ) ]