공부 정리 블로그

[Chapter8] 음향모델(2) - Viterbi Algorithm 본문

대학원 수업/음성인식

[Chapter8] 음향모델(2) - Viterbi Algorithm

따옹 2023. 6. 17. 14:02

8.2.2.1 HMM의 세가지 기본 문제(Segmentation: Viterbi Algorithm)

하나의 주제별로 1m 40sec 분량으로 자름

이것에 대한 transcription 이 나오고 'ㅏ', 'ㅗ' 에 대한 걸 각각 떼서 학습

우리가 모르는 것 : 어디서부터 어디까지가 'ㅣ'인지를 모르니, 음성인식기 학습할 때 사전 정보를 줄 수 없음

이걸 어떻게 할 수 있을까?

작업이 힘들고 정답이 없음(사람에 따라 답이 달라지고, 시점에 따라 달라짐 -> 일관성의 문제)

하지만 순서를 알고 있음 -> 'ㄱ' -'ㅏ' ....

해당 정보를 가지고 기계를 학습하게 함

 

음성 : 시간축 상에 선후 관계가 있음

문장 HMM을 가지고, x축: 음성 파형, y축 : 문장 HMM

best path는 항상 우상향하는가? -> 여러가지 path들이 있는데, 항상 우상향함 !

왜? 시계열 pattern 이기 때문 , 마이크를 통해 입력이 들어오는데, 여기에 대해서 transcription HMM인데,

self transition(y값 안 바뀜), 그대로 넘어가거나(y+1)

x가 증가함에 따라 y가 동일하거나, 증가하거나

best path는 transcription HMM 일 때 우상향 함

 

◼Dynamic programming 기법으로 Ф(𝑡−1)을 이용하여, Ф(𝑡)를 결정

𝚽_𝒋(𝒕)=max_𝟏≤𝒊≤𝑵[𝚽_𝒊(𝒕−𝟏)𝒂_𝒊𝒋]𝒃_𝒋(𝒐_𝒕)

최적 상태열에서의 likelihood 값은 아래와 같이 계산됨

𝑷𝒓_𝒎𝒂𝒙(𝐎|𝓜) = max_𝟏≤𝒊≤𝑵[𝚽_𝒊(𝑻)𝒂_𝒊𝑵]

◼각 격자 점에서의 local decision의 결과를 기록했다면, 최적의 상태열은 𝑇로부터 trace back하면서 결정 가능

인식의 문제에도 적용 가능함 Viterbi algorithm으로 계산한 likelihood로써 모델로부터의 생성 확률을 근사함

 

total likelihood
sigma 대신 max

binary(0,1) : 매 time t 마다 best path에 있으면 1, 없으면 0

흔적을 남김 : P(O|M) 최적의 경로를 알고 싶은데, 앞에 P시점에서 뭐가나오는지에 대한 pointer를 보고 백트래킹하면서 성적을 비교하면서 

forward & Viterbi 비교

forward : sigma 계산 / Viterbi : max 계산

 

8.2.3 HMM의 세 가지 기본 문제(학습)

적당히 하고 넘어가 -> 실무에서 많이 안 쓰임

ㅇ 알고리즘

- Viterbi training algorithm: 근사치로 학습 진행. 속도가 빨라 실무에서 많이 사용됨

best path 상은 1, 아니면 0

- Baum-Welch algorithm: 정확한 방법이지만, 수식이 복잡하고, 시간이 많이 소요됨

 

HMM 학습 후 segmentation 결과를 남겨놓고 이것을 딥러닝 학습에 이용

 

ㅇ Expectation(현재까지 학습 모델에 대한 학습자료된 자료에 대한 Expectation 을 최대화) maximization algorithm은 아래의 생성확률을 최대가 되도록 파라미터 값을 수정함

- R: 전체 학습자료에서 모델 M에 대응되는 데이터의 수

R : 52000개

- 학습 자료로 부터 모델파라미터의 업데이트는 자동으로 진행

 

학습 자료 구성의 예

(: 음성인식 학습용 SiTEC CleanWord01 코퍼스)

- 화자 수 500

- 화자 당 평균 417 단어 발성

 

 

ㅇ 단어 당 평균 음소의 수를 10개로 가정할 경우

음소 : 최소 단위('ㄷ', 'ㅐ', 'ㅎ')

음절 : 초성 중성 종성으로 구성('대','한')

- 코퍼스 전체에서 나타난 음소의 수

- 500x 417단어x 10= 2,085,000

 

ㅇ 인식 단위가 음소이고, 전체 음소 수가 40개이면,

- 평균 R = 2,085,000 / 40 = 52,125

 

 

ㅇ Viterbi training algorithm

- 현재의 모델로 Viterbi algorithm에 따라 전체 학습자료에 대해 segmentation을 수행

- Segmentation 결과를 바탕으로 다음 장과 같이 모델파라미터를 업데이트 함

- expectation(likelihood) 증가하지 않을 때 까지 위의 과정을 반복

 

 

최초 모델을 어떻게 만들 것인가

공개된 데이터의 양은 작지만 가격이 비싼 corpus 는 manual

사람이 보고 label한 경우,

녹음 file을 들으면서 labeling -> initial model 만듦