HMM 은 어떤 문제에 적용할까?
Evaluation : 민예가 공부 공부 놈 의 확률은 얼마나 될까?
Decoding : 민예가 지난 3일 동안 공부 공부 놀았는데, 그때 날씨는 어땟을까?
Learning : 민예를 보니깐 대부분 공부 공부 놈인데, 이 민예의 특성을 잘 반영하는 민예모델을 만들어보자.
자세한 구현은 여기있다. 논문은 여기있다.
Evaluation
문제 : HMM 파라미터와 관측치가 주어졋을 때, 관측치가 나타날 확률을 계산한다.
예시 : 정박사가 오늘 산책, 내일 산책, 모레 연구, 글피 쇼핑을 할 확률은?
활용분 : 시퀀스가 주어졌을 때, 정박사 HMM의 확률이 높은지, 조박사의 HMM의 확률이 높은지 판단할 수 있으므로 Sequence Classification 문제에 활용할 수 있다.
시점 및 상태별 Forward Probability
α1(1)=π1∗b1(산책)=0.6∗0.1=0.06
α1(2)=π2∗b2(산책)=0.4∗0.6=0.24
α2(1)=(α1(1)∗a11+α1(2)∗a21)∗b1(산책)=(0.06∗0.7+0.24∗0.4)∗0.1=0.0138
α2(2)=(α1(1)∗a12+α1(2)∗a22)∗b2(산책)=(0.06∗0.3+0.24∗0.6)∗0.6=0.0972
α3(1)=(α2(1)∗a11+α2(2)∗a21)∗b1(연구)=(0.0138∗0.7+0.0972∗0.4)∗0.5=0.02427
α3(2)=(α2(1)∗a12+α2(2)∗a22)∗b2(연구)=(0.0138∗0.3+0.0972∗0.6)∗0.1=0.00625
α4(1)=(α3(1)∗a11+α3(2)∗a21)∗b1(쇼핑)=(0.02427∗0.7+0.00625∗0.4)∗0.4=0.00780
α4(2)=(α3(1)∗a12+α3(2)∗a22)∗b2(쇼핑)=(0.02427∗0.3+0.00625∗0.6)∗0.3=0.00331
정박사가 오늘 산책, 내일 산책, 모레 연구, 글피 쇼핑을 할 확률은 0.00780+0.00331=0.01111
Forward Probability
P(o∣λ)=j=1∑nαT(j) for i=1,
αt(1)=πi∗bi(o1) for 2<=i<=T,
αt(i)=[j=1∑n(αt−1(j)∗aji)]∗bi(ot) 시점 및 상태별 Backward Probability
β4(1)=1
β4(2)=1
β3(1)=(β4(1)∗a11+β4(2)∗a12)∗b1(쇼핑)=(1∗0.7+1∗0.3)∗0.4=0.4
β3(2)=(β4(1)∗a21+β4(2)∗a22)∗b2(쇼핑)=(1∗0.4+1∗0.6)∗0.3=0.3
β2(1)=(β3(1)∗a11+β3(2)∗a12)∗b1(연구)=(0.4∗0.7+0.3∗0.3)∗0.5=0.185
β2(2)=(β3(1)∗a21+β3(2)∗a22)∗b2(연구)=(0.4∗0.4+0.3∗0.6)∗0.1=0.034
β1(1)=(β2(1)∗a11+β2(2)∗a12)∗b1(산책)=(0.185∗0.7+0.034∗0.3)∗0.1=0.01397
β1(2)=(β2(1)∗a21+β2(2)∗a22)∗b2(산책)=(0.185∗0.4+0.034∗0.6)∗0.6=0.05664
Backward Probability
for i=T,
βT(i)=1 for 1<=i<=T−1,
βt(i)=j=1∑n(βt+1(j)∗aij)∗bi(ot+1) Decoding
문제 : HMM 모델과 관측치가 주어졋을 때, 가장 확률이 높은 은닉 상태를 알아낸다. 즉, 주어진 observation이 나타날 확률이 가장 큰 state 계산한다.
예시 : 정박사가 오늘 산책, 내일 산책, 모레 연구, 글피 쇼핑을 했다면 각 날들의 날씨는 ?
HMM 의 파라미터
State transition probability, 상태전이 확률 (A) : A=aij
aij=p(qt+1=sj∣qt=si) for 1 <= i, j <= n
∑j=1naij=1
Emission probability, 방출 확률 (B) : B=bj(vk)
bj(vk)=p(ot=vk∣qt=sj) for 1 <= j <= n, 1<=k<=m
∑k=1mbj(vk)=1
Initial state probability, 초기 상태 확률 (π) : π=πi
πi−>si 에서 시작할 확률
∑i=1nπi=1
Viterbi Algorithm
각 단계에서 큰 값을 뽑으면, 해, 해, 비, 비 이다.
Learning
문제 : HMM 파라미터 초깃값과 관측치가 주어졋을 때, 주어진 관측치가 가장 높은 확률이 나오도록 하는 HMM 의 파라미터를 알아낸다.
해결방법 : Baum-Welch algorithm
Baum-Welch Algorithm (EM Algorithm)
E-Step : α,β 를 이용해서 γ(i),ξ(i,j) 를 구하는 것
M-Step : γ(i),ξ(i,j) 을 이용해서 HMM 의 파라미터(상태전이확률, 방출확률, 초기상태확률) 개선함.
αt(i)∗βt(i) : t번째 시점에서 상태 i 를 지나는 모든 경로 해당하는 확률의 합
γ(i) : 관측치와 HMM 의 파라미터가 주어졌을 때, t 시점의 은닉 상태가
si 일 확률
γ(i)=∑j=1nαt(j)∗βt(j)αt(i)∗βt(i) ξ(i,j) : 관측치와 HMM의 파라미터가 주어졌을 때, t 시점의 은닉상태가
si 이고, t+1시점의 은닉 상태가
sj 일 확률
ξ(i,j)=∑k=1n∑l=1nαt(k)∗akl∗bl(ot+1)∗βt+1(l)αt(i)∗aij∗bj(ot+1)∗βt+1(j) M-Step : 개선하는 방법
πi=γt(i) αijnew=si에서전이할기댓값si에서sj로전이할확률 αijnew=∑t=1Tγ(i)∑t=1Tξ(i,j) 방출확률 : 모든 시점을 돌면서 vk 관측치가 나왔을 때, bi 의 감마를 더해준다.
bi(vk)new=∑t=1Tγ(i)∑ot=vt인t=1Tγt(i)