Link: http://www.cs.cmu.edu/afs/cs/user/bhiksha/WWW/courses/11-756.asr/spring2013/
The scalar gaussian function
- gaussian의 장점: 샘플 데이터로부터 평균과 분산을 구할 수 있음 (이 이유 때문에 쓰는 건가?? Central Limit Theorem 때문이 아닌가?)
The HMM as a generator
- 제목 그대로
Viterbi and DTW
- Viterbi 알고리즘은 DTW에서 수행하던 알고리즘과 같다
Training by segmentation: Hard assignment with Gaussian mixtures
- HMM의 파라미터 재추정을 위해 앞서 DTW에서 봤던 segmental K-means 알고리즘을 적용할 수 있다.
- 템플릿을 가지고 트레이닝 데이터에 대해 best path를 찾아 segmentation 하고, 그걸로 템플릿의 각 segment를 모델링하고, 다시 best path를 찾고, 다시 segment를 모델링하고…
- hard assignment로 진행된다.
- 한 segment를 모델링하기 위해 사용되는 feature set은 다른 segment에는 사용되지 않음
- 그런데 segment가 Gaussian이 아니라 GMM이면 어떻게 모델링할 수 있을까?
Gaussian mixtures: a "hard" perspective
The K-means algorithm
- 초기 K개의 클러스터(mixture)를 정하고, 주어진 feature들에 대해 거리를 계산하여 가장 가까운 클러스터에 속하게 한다.
- 주어진 모든 feature에 대해 수행하고, 각 클러스터에 속한 feature들에 대해 평균과 분산을 다시 계산한다
A better technique
- Segmental K-means 알고리즘은 주어진 특정 feature가 어떤 state에 가장 가까운 거리면 '당연히 100%' 속하는 것으로 봤다
- 하지만 특정 feature가 100% 어떤 state에 속할리가 없다. 확률적으로 '어느 정도로만' 속한다고 봐야 한다
- Soft assignment를 사용한 segmentation을 하자
Training by segmentation: soft assignment(1 Gaussian case)
- state의 gaussian의 평균을 구할 때 feature들을 그냥 더하지 않고 state, 시간별로 확률 값 f를 다르게 주어 구하자.
- 그럼 이 f는 어떻게 구하나?
- f = P(state(t) = s, x1, x2, … , x_T) 가 된다.
- 이거 완전 forward/backward algorithm으로 alpha, beta 구하라는 소리다
- 이게 Baum-welch다
Case 2: State output densities are Gaussian mixtures
- GMM으로 가면 mixture weight까지 추정해야 한다
- 음… 수식이 너무 커서(그냥 너무 크다) 솔직히 한 30분 동안 쳐다보지 않으면 파악 못할 것 같아서 이 부분은 스킵한다
- 병렬적으로 충분통계량을 계산할 수 있는 장점이 있다
- iteration을 돌면서 mixture 하나가 너무 큰 variance를 가지면 그걸 둘로 쪼갠다.
- 이 때 mixture weight는 둘로 쪼개진 각각의 mixture가 반씩 가지는 것으로 한다.
Transition by soft counting
- state의 분포말고 transition probability도 hard/soft counting이 있다
- hard는 관찰 결과가 best path의 한 state에서만 나왔다고 보는 것이고, soft는 확률적으로 나왔다고 보는 것이다.
Implementation of BW: underflow
- forward, backward algorithm에서 alpha(혹은 beta)를 계산하려면 많은 곱셈이 필요하여 underflow가 일어나 버린다.
- 각 time step마다 alpha를 스케일링 한다(이래도 되나?)
- log domain에서 alpha와 beta를 계산하는 방법도 있다. 확실치는 않다
- (CTC 책에 소개된 바 있다)
Implementation of BW: pruning
- forward, backward 알고리즘 계산은 매우 부담이 되므로, 각 time step마다 pruning을 적용하여 해결한다
- convergence 판정과 테스트 성능에 영향을 미칠 수 있다(자세한 내용은 뒤에…)
How many Gaussians
- 경험적으로 고립단어 인식에 최소 4개는 필요하다
Isolated word recognition: Final thoughts
- 이 내용은 고립단어인식에만 국한된 것이다. 연속음성인식에 대해서는 아무 얘기도 하지 않았다(;;;)
댓글 없음:
댓글 쓰기