2018년 9월 2일 일요일

180902 CMU 음성인식 ppt 노트 - 7. Templates to HMMs

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라고 한다

댓글 없음:

댓글 쓰기