Link: http://www.cs.cmu.edu/afs/cs/user/bhiksha/WWW/courses/11-756.asr/spring2013/
Improving the templates
- 한 단어당 여러 template들을 합쳐서 나타내면 generalized template을 얻을 수 있다.
- 단순히 여러 template들의 평균을 내면 될 것이다.
- 각 template들의 길이가 다른데, master template을 정해서 그걸 가지고 다른 template들에 대해 DTW를 적용하면 된다.
- master template은 어떻게 정할까? -> trial and error
Template size reduction
- template 갯수만 줄이지 말고 한 template 내의 segment(예를 들어 알파벳 하나)를 나타내는 feature sequence를 하나의 feature로 나타내자
- 이것 역시 그냥 한 글자에 해당하는 feature sequence를 평균내면 된다.
- 그런데 segment마다 평균으로 퉁치면 다 해결될까? segment 마다 feature의 variation 이 다를 수 있다.
- 공분산을 고려하자(covariance)
- 평균과 공분산까지 있으면 이제 input feature에 대해 각 segment에 대응하는 cost를 계산할 수 있다
- mahalanobis distance
- 혹은 negative gaussian log likelihood
Segmental K-means
- 근데 segment는 어떻게 정했나? 그냥 uniformly segmentation 해서 쓰면 될까?
- ㄴㄴ training set에 대해 스스로 DTW를 돌리고 다시 segment마다의 평균과 공분산을 구하고… 반복하자
- 어디서 많이 봤다 (EM algorithm)
DTW with multiple models
- input feature sequence에 대해 path를 찍다가 특정 segment에 오래 머물러서 나오질 않는 경우가 있다
- 그 segment가 원래 정답이든 아니든 그냥 특성상 웬만한 feature와 거리가 가깝게 나올 수 있다. 하지만 이래선 곤란하다
- 특정 state에 계속 있을 경우(즉 loop를 돌 경우) insertion panelty를 주자
- 한 segment에서 다음 segment로 넘어갈 때의 transition score도 주자
- (panelty라고 쓸 땐 그냥 작은 score라고 생각하면 될 것 같다)
- transition score는 어때야 할까?
- negative log를 쓰자. 낮은 확률에 대해 아주 큰 페널티를 주는 효과가 있다
Modified segmental K-means AKA Viterbi training
- 초기 segment에 대한 score는 어떻게 줄까?
- 일단은 uniformly 주고, training set 자기 자신에 대한 DTW를 진행할 때마다 segment가 나타난 횟수를 다시 세서 만들자
- 이거 완전히 HMM에서 하는 것과 비슷하다
- 이제부터는 segment를 state로 부르기로 하자
Determining the number of states
- 원래 문제로 돌아가서, word 하나는 state 몇개로 나타내야 할까?
- segment의 갯수가 작을수록 좋지만 최소 단어 하나당 하나는 있어야 할 것 같다(단어마다 구분은 해야지)
- 알파벳마다 하나의 state를 줄 수도 있다.
- 일본어의 경우 발음 하나가 한 state에 해당하게 할 수도 있다.
- (입문용 내용이라 지금의 이론과는 다를 수 있습니다)
What about the transition structure
- left-to-right Markov chain이면 된다.
- 이것을 Bakis topology라고 한다
댓글 없음:
댓글 쓰기