时序模型
- 非时序类数据:图片,人的特征。使用数据时维度固定,时间维度固定
- 时序类数据:股票价格,价格波动,前后相关;语音;文本;时序数据的长度是不固定的
模型:HMM/CRF --> RNN/LSTM
HMM(Hidden Markov Model)
每个时刻的观测值x,latend variable隐式变量z作为状态,在进行转移,有向图,生成模型。状态都是离散的情况,连续的话转到GMM
场景举例:
A/B两枚硬币,正面概率分别为 μ 1 \mu_{1} μ1, μ 2 \mu_{2} μ2。小明在幕后扔,我在前面观察结果。
想知道的问题:
- 预测背后扔硬币的顺序,egABBA。。。(decoding,inference问题)
- 预测估算 μ 1 \mu_{1} μ1, μ 2 \mu_{2} μ2,扔完A后仍A/B的概率,概率的转移矩阵(参数估计问题)
- P(观测序列)=?动态规划的方法
场景举例:词性标注part of speech tagging(POS),其中词性是隐状态,词是观测
想知道的问题:
- sequence of tagging,inference 通过viterbi算法
- 参数估计:隐状态生成该观测和一个概率矩阵,词性和单词的对应概率,还有是词性之间转换的概率矩阵,两个词性的矩阵。观测只有句子没有对应的词性也就是概率矩阵未知,EM算法
- p(观测)边缘概率,DP算法
HMM的参数 θ = ( A , B , π ) \theta=(A,B,\pi) θ=(A,B,π)
- 观测值 ( x 1 , … , x n ) (x_{1},\dots,x_{n}) (x1,…,xn),隐状态值 ( z 1 , … , z n ) (z_{1},\dots,z_{n}) (z1,…,zn),假设z是离散型的,如词性是有限个离散型
- 参数A代表状态的转移矩阵,transition probability,A(i,j)表示当前为状态i,转移到状态j的概率
- 参数B代表观测值的生成矩阵,emission probability,A(i,j)表示在状态i时,观测到j的概率。连续型的变量通过高斯混合模型用进来(怎么用)
- 参数 π \pi π表示第一个位置为某个状态的概率
- 参数估计的过程,有观测值x,估计出参数 θ \theta θ。推理inference的过程,由 θ , x \theta,x θ,x推理出z
Inference过程(Viterbi算法)
- 最笨的办法,将所有的可能的z的组合罗列出来,然后计算每个组合的概率。其中p(x,z)就是一系列z的bigram的条件概率和z生成对应x的概率之积,选出最大的。但是组合的数量是指数级的,所以要用动态规划的方法。Viterbi算法
- Viterbi算法等动态规划算法,通过存储一些中间结果,从而来减小指数级别的计算的复杂度。在重复的计算某一些数字,通过存储下来来减少运算。
- 可以降复杂度的原因是状态只是和前序状态有关,如果是一个全图,那么还是没有办法降低复杂度。序列的方式,节点的入度只有1,,图的话节点入度可以很多,算该节点产生的概率要好多项相乘,这样导致不同的组合往往计算的值是不同的,没有重复的计算。
- 列表示各个 z i z_{i} zi,行表示可选的值,那么只需要划出一条最优的路径即可。
- δ k ( i ) \delta_{k}(i) δk(i):结束点在k时刻的,z为状态i的最优路径的得分
估计整个模型的参数:
- Forward and Backward Algorithm:计算 P ( z k ∣ x ) P(z_{k}|x) P(zk∣x)
- Forward Algorithm:计算 P ( z k , x 1 : k ) P(z_{k},x_{1:k}) P(zk,x1:k)
- Backward Algorithm:计算 P ( x k + 1 : n ∣ z k ) P(x_{k+1:n}|z_{k}) P(xk+1:n∣zk)
- 推导 p ( z k ∣ x ) = p ( z k , x ) / p ( x ) ( 正 相 关 ) = p ( z k , x ) = p ( x k + 1 : n ∣ z k , x 1 : k ) ∗ p ( z k , x 1 : k ) ( x 之 间 独 立 ) = p ( x k + 1 : n ∣ z k ) ∗ p ( z k , x 1 : k ) p(z_{k}|x)=p(z_{k},x)/p(x)(正相关)=p(z_{k},x)=p(x_{k+1:n}|z_{k},x_{1:k})*p(z_{k},x_{1:k})(x之间独立)=p(x_{k+1:n}|z_{k})*p(z_{k},x_{1:k}) p(zk∣x)=p(zk,x)/p(x)(正相关)=p(zk,x)=p(xk+1:n∣zk,x1:k)∗p(zk,x1:k)(x之间独立)=p(xk+1:n∣zk)∗p(zk,x1:k)
应用:变化的检测
- 通过比较前后观测的相似度,当大于某个阈值,则变化
- 通过HMM,观测值背后的隐状态不相等的概率大于某个阈值,则变化
Forward Algorithm
- 目标: P ( z k , x 1 : k ) P(z_{k},x_{1:k}) P(zk,x1:k)
- 动态规划的思想,递推式,原问题的解决转化为子问题解决 P ( z k , x 1 : k ) = ( ) P ( z k − 1 , x 1 : k − 1 ) P(z_{k},x_{1:k})=( )P(z_{k-1},x_{1:k-1}) P(zk,x1:k)=()P(zk−1,x1:k−1)
Backward Algorithm
- 目标: P ( x k + 1 : n ∣ z k ) P(x_{k+1:n}|z_{k}) P(xk+1:n∣zk)
隐变量模型通过EM算法来求参数,一定是z的维度小于x。
进行参数估计MLE,最大似然概率,也就是在该参数下能够产生这样的观测和状态的概率。分为两种情况:隐变量是否可见
- Complete case: L ( θ ; D ) = l o g p ( x , z ∣ θ ) = l o g p ( z ∣ θ z ) + l o g p ( x ∣ z , θ x ) L(\theta;D)=logp(x,z|\theta)=logp(z|\theta_{z})+logp(x|z,\theta_{x}) L(θ;D)=logp(x,z∣θ)=logp(z∣θz)+logp(x∣z,θx)
- Incomplete case: L ( θ ; D ) = l o g p ( x ) = l o g p ∑ z ( x , z ∣ θ ) = l o g ∑ z p ( z ∣ θ z ) l o g p ( x ∣ z , θ x ) L(\theta;D)=log p(x)=logp\sum_{z}(x,z|\theta)=log\sum_{z}p(z|\theta_{z})logp(x|z,\theta_{x}) L(θ;D)=logp(x)=logp∑z(x,z∣θ)=log∑