(ASR) ASR Core Series (0/4) Hidden-Markov-Model (HMM) based ASR Modeling (Road to End-to-End ASR Modeling)


< 목차 >


제가 ASR Core Series post 를 연재하고 싶었던 이유는 2022년 현재까지 나온 Deep Learning 기반의 End-to-End (E2E) 방법론인

  • Connectionist Temporal Classification (CTC) based Model
  • Transducer based Model
  • Attention based Encoder-Decoder (AED or Seq2Seq) Model

에 대한 이해를 높히고 생각을 정리하기 위해서 였습니다.

하지만 공부와 이해를 거듭할수록 CTC 와 Recurrent Neural Network (RNN) 등 E2E 기법의 중요한 모듈들은 모두 Gasussian Mixture Model - Hidden Markov Model (GMM-HMM) 이나 DNN-HMM 등 HMM 과 밀접한 관련이 있다는 사실을 마주할 수 밖에 없었습니다.

그래서 먼저 (작성은 가장 나중에 했지만) 과거에는 어떤식으로 음성 인식 모델을 학습했는지? HMM 기반 모델링 방법론은 현대의 CTC 등과 어떤 연관이 있는지? 에 대해서 알아보도록 하려고 합니다.

Overview and Fundamental Equation of Statistical Speech Recognition

1970 년대부터 40년 동안 ASR 모델링 방법은 아래와 같은 복잡한 수식을 요구했습니다.

shinji_fig2 Fig.

슬라이드에 나와있는 것 처럼 3가지 모듈을 따로 따로 학습했어야 했는데요,

shinji_fig3 Fig.

Acoustic Model (AM), Lexicon, Language Model (LM) 이 세가지 중 AM 을 모델링 하기 위해 GMM-HMM 이 필요한 것입니다.

(최근에는 이런 방법보다는 Neural Network (NN) 하나가 이 세 가지를 Jointly 모델링 하게 되었죠.)

shinji_fig4 Fig.

그렇다면 어떻게 \(p(x \vert L)\), \(p(L \vert W)\), \(p(W))\) 같은 모듈들이 튀어나온 걸까요?

먼저 음성인식의 문제 정의부터 다시 해 봅시다. 우리가 원하는 것은 어떤 음성 X 가 있을 때 이에 해당하는 가장 그럴듯한 문장 (Text), W 를 모델이 뱉어주길 원합니다. 즉 확률 분포 \(p(W \vert X)\) 를 모델링 하고 어떤 음성을 이 분포에 넣어 가장 확률이 높은 W를 뽑으면 되겠죠.

그러면 음성 X 에 대해 어떤 W 가 나올지를 학습해야 겠죠? (확률분포의 파라메터를 조정해야겠죠?)

그런데 여기서 문제가 있는 것이 입력 음성은 예를 들어 길이가 3초이고 Sampling Rate (SR)가 16,000 일 때 48,000 개의 길이를 갖는 반면 이에 해당하는 정답 Hello World 는 Character 단위로 세어도 길이가 11 밖에 안됩니다.

이를 학습하기 위해 머신러닝에서 가장 단순한 방법인 Cross Entropy Objective 를 사용해 frame 마다 정답을 알려주고 이를 최적화 하고 싶겠지만 과연 어디부터 어디까지가 H e l l o 일까? 라는 Alignment 정보가 없기 때문에 불가능합니다.

이런 이유 때문에 우리가 풀고 싶은 문제를 Bayes Rule을 사용해 바꾸게 되는데요,

hmm_asr_eq Fig.

이 과정에서 우리가 최대화 할 수식이 아래처럼 바뀌게 되는 것입니다.

\[\begin{aligned} & \hat{w} = arg max_{w} p(w \vert x) & \\ & \hat{w} = arg max_{w} \color{red}{p(x \vert w)} p(w) & \\ \end{aligned}\]

우리가 \(p(w \vert x)\) 에서 \(p(x \vert w)\) 로 바뀌었기 때문에 우리는 일반적인 분류 모델 (Classification Model) 같은 판별 모델 (Discriminative Model)이 아니라 생성 모델 (Generative Model) 을 푸는 것으로 문제가 바뀌게 되었고

여기서 \(p(x \vert w)\) 를 바로 우리가 앞으로 다룰 GMM-HMM 을 사용해서 모델링하게 됩니다. (\(p(W)\) 는 또 Lexicon 이라는 걸 사용해서 Factorization 할 수 있지만 우리는 지금 AM만 관심있으니 이는 건너 뛰겠습니다.)

Understanding HMM based ASR Model in High Level

hmm_asr_overview Fig.

hmm_asr_training_and_inference Fig.

hmm_asr_key_components Fig.

match_fig1 Fig.

match_fig2 Fig.

match_fig3 Fig.

match_fig4 Fig.

match_fig5 Fig.

match_fig6 Fig.

match_fig7 Fig.

match_fig8 Fig.

match_fig9 Fig.

match_fig10 Fig.

match_fig11 Fig.

match_fig12 Fig.

match_fig13 Fig.

match_fig14 Fig.

match_fig15 Fig.

match_fig16 Fig.

Hidden Markov models (HMMs)

HMM topology

hmm_topology_fig1 Fig.

hmm_topology_fig2 Fig.

hmm_topology_fig3 Fig.

hmm_topology_fig4 Fig.

hmm_topology_fig5 Fig.

hmm_topology_fig6 Fig.

hmm_topology_fig7 Fig.

hmm_topology_fig8 Fig.

hmm_topology_fig9 Fig.

hmm_core_fig1 Fig.

hmm_core_fig2 Fig.

hmm_core_fig3 Fig.

hmm_core_fig4 Fig.

hmm_core_fig5 Fig.

hmm_core_fig6 Fig.

\[\begin{aligned} p(X, Q) &= p\left(q_1\right) \\ \end{aligned}\] \[\begin{aligned} p(X, Q) &= p\left(q_1\right) \\ &= p\left(q_1\right) p\left(x_1 \mid q_1\right) \\ \end{aligned}\] \[\begin{aligned} p(X, Q) &= p\left(q_1\right) \\ &= p\left(q_1\right) p\left(x_1 \mid q_1\right) \\ &= p\left(q_1\right) p\left(x_1 \mid q_1\right) p\left(q_2 \mid q_1\right) p\left(x_2 \mid q_2\right) \\ \end{aligned}\] \[\begin{aligned} p(X, Q) &= p\left(q_1\right) \\ &= p\left(q_1\right) p\left(x_1 \mid q_1\right) \\ &= p\left(q_1\right) p\left(x_1 \mid q_1\right) p\left(q_2 \mid q_1\right) p\left(x_2 \mid q_2\right) \\ &=p\left(q_1\right) p\left(x_1 \mid q_1\right) p\left(q_2 \mid q_1\right) p\left(x_2 \mid q_2\right) \cdots p\left(q_T \mid q_{T-1}\right) p\left(x_T \mid q_T\right) \\ \end{aligned}\] \[\begin{aligned} p(X, Q) &= p\left(q_1\right) \\ &= p\left(q_1\right) p\left(x_1 \mid q_1\right) \\ &= p\left(q_1\right) p\left(x_1 \mid q_1\right) p\left(q_2 \mid q_1\right) p\left(x_2 \mid q_2\right) \\ &=p\left(q_1\right) p\left(x_1 \mid q_1\right) p\left(q_2 \mid q_1\right) p\left(x_2 \mid q_2\right) \cdots p\left(q_T \mid q_{T-1}\right) p\left(x_T \mid q_T\right) \\ &=p\left(q_1\right) p\left(x_1 \mid q_1\right) \prod_{t=2}^T p\left(q_t \mid q_{t-1}\right) p\left(x_t \mid q_t\right) \end{aligned}\]

hmm_fig1 Fig.

hmm_fig2 Fig.

\[\begin{aligned} \underset{Q}{\operatorname{argmax}} p(Q \mid X) &=\underset{Q}{\operatorname{argmax}} \frac{p(X, Q)}{p(X)} \\ \end{aligned}\] \[\begin{aligned} \underset{Q}{\operatorname{argmax}} p(Q \mid X) &=\underset{Q}{\operatorname{argmax}} \frac{p(X, Q)}{p(X)} \\ &=\underset{Q}{\operatorname{argmax}} p(X, Q)=\underset{q_{1: T}}{\operatorname{argmax}} p\left(x_{1: T}, q_{1: T}\right) \end{aligned}\] \[\begin{aligned} p\left(x_{1: t}, q_{1: t}\right) &=p\left(q_1\right) p\left(x_1 \mid q_1\right) \prod_{\tau=2}^t p\left(q_\tau \mid q_{\tau-1}\right) p\left(x_\tau \mid q_\tau\right) \\ \end{aligned}\] \[\begin{aligned} p\left(x_{1: t}, q_{1: t}\right) &=p\left(q_1\right) p\left(x_1 \mid q_1\right) \prod_{\tau=2}^t p\left(q_\tau \mid q_{\tau-1}\right) p\left(x_\tau \mid q_\tau\right) \\ &=p\left(q_1\right) p\left(x_1 \mid q_1\right) \prod_{\tau=2}^{t-1} p\left(q_\tau \mid q_{\tau-1}\right) p\left(x_\tau \mid q_\tau\right)\left[p\left(q_t \mid q_{t-1}\right) p\left(x_t \mid q_t\right)\right] \\ \end{aligned}\] \[\begin{aligned} p\left(x_{1: t}, q_{1: t}\right) &=p\left(q_1\right) p\left(x_1 \mid q_1\right) \prod_{\tau=2}^t p\left(q_\tau \mid q_{\tau-1}\right) p\left(x_\tau \mid q_\tau\right) \\ &=p\left(q_1\right) p\left(x_1 \mid q_1\right) \prod_{\tau=2}^{t-1} p\left(q_\tau \mid q_{\tau-1}\right) p\left(x_\tau \mid q_\tau\right)\left[p\left(q_t \mid q_{t-1}\right) p\left(x_t \mid q_t\right)\right] \\ &=p\left(x_{1: t-1}, q_{1: t-1}\right)\left[p\left(q_t \mid q_{t-1}\right) p\left(x_t \mid q_t\right)\right] \end{aligned}\]

Bridging to Gaussian Mixture Models (GMMs)

Gaussian Distribution

gaussian_fig1 Fig.

gaussian_fig2 Fig.

gaussian_fig3 Fig.

gaussian_fig4 Fig.

gaussian_fig5 Fig.

gaussian_fig6 Fig.

gaussian_fig7 Fig.

gaussian_fig8 Fig.

gaussian_fig9 Fig.

gaussian_fig10 Fig.

K-means Clustering

kmeans_fig1 Fig.

kmeans_fig2 Fig.

kmeans_fig3 Fig.

kmeans_fig4 Fig.

kmeans_fig5 Fig.

kmeans_fig6 Fig.

kmeans_fig7 Fig.

kmeans_fig8 Fig.

(Gaissuain) Mixture Model (GMM)

gmm_fig1 Fig.

gmm_fig2 Fig.

Expectation and Maximization Algorithm for Training GMM Parameters (EM algorithm)

gmm_fig3 Fig.

gmm_fig4 Fig.

gmm_fig5 Fig.

gmm_fig6 Fig.

gmm_fig7 Fig.

gmm_fig8 Fig.

gmm_fig9 Fig.

gmm_fig10 Fig.

gmm_fig11 Fig.

gmm_fig12 Fig.

Back to HMMs

How to Calculate Likelihood?

gmm_hmm_fig1 Fig.

Viterbi Algorithm

gmm_hmm_fig2 Fig.

gmm_hmm_fig3 Fig.

Viterbi Algorithm

HMMs with Gaussian observation probabilities

gmm_hmm_training_fig1 Fig.

gmm_hmm_training_fig2 Fig.

gmm_hmm_training_fig3 Fig.

gmm_hmm_training_fig4 Fig.

Compared to E2E Modeles

Connection to DNN-HMM

dnn_hmm_fig1 Fig.

dnn_hmm_fig2 Fig.

dnn_hmm_fig3 Fig.

dnn_hmm_fig4 Fig.

dnn_hmm_fig5 Fig.

dnn_hmm_fig6 Fig.

dnn_hmm_fig7 Fig.

dnn_hmm_fig8 Fig.

dnn_hmm_fig9 Fig.

dnn_hmm_fig10 Fig.

dnn_hmm_fig11 Fig.

dnn_hmm_fig12 Fig.

dnn_hmm_fig13 Fig.

dnn_hmm_fig14 Fig.

dnn_hmm_fig15 Fig.

dnn_hmm_fig16 Fig.

dnn_hmm_fig17 Fig.

dnn_hmm_fig18 Fig.

vs Connectionist Temporal Classification (CTC) Objective

마지막으로 CTC 와의 Connection 입니다.

CTC 는 2006년에 제안됐지만 본격적으로 뉴럴넷과 결합되어 사용된 건 2014년 즈음 부터였습니다.

deep_speech Fig. 2014 년 Deep Speech 에서 제안된 CTC 를 사용한 End-to-End Model. Source from Deep Speech: Scaling up end-to-end speech recognition

graves_towards_14 Fig. 2014 년 Graves의 논문에서 제안된 CTC 를 사용한 End-to-End Model 의 출력 결과물. Source from Towards End-To-End Speech Recognition with Recurrent Neural Networks

Alex Graves 가 제안한 CTC 논문을 보면 HMM과 비교하는 내용이 많이 있는걸 알 수 있는데요, 그도 그럴것이 이는 Topology 만 봐도 HMM 과 상당히 유사하기 때문입니다.

hmm_ctc_fig7 Fig.

슬라이드의 설명을 보면 음성 인식에 쓰인 HMM 처럼 left-to-right 이지만 두 가지가 다릅니다.

  • 1.Vocabulary 에 blank, \(\epsilon\) 가 state 에 추가되었다.
  • 2.만약 state가 \(\epsilon\) 이 아니거나 직전 state 가 현재 state 와 같지 않다면 skip 할 수 있는 경우가 허용된다.

위의 예시는 [a b b] 의 경우를 나타낸 겁니다.

CTC 도 HMM 과 마찬가지로 Input (speech) 과 Output (text) 의 길이가 다를 경우, 즉 Alignment 가 없을 경우 사용하는데요,

hmm_ctc_fig1 Fig.

hmm_ctc_fig2 Fig.

hmm_ctc_fig3 Fig.

hmm_ctc_fig4 Fig.

hmm_ctc_fig5 Fig.

hmm_ctc_fig6 Fig.

hmm_ctc_fig7 Fig.

hmm_ctc_fig8 Fig.

hmm_ctc_fig9 Fig.

hmm_ctc_fig10 Fig.

hmm_ctc_fig11 Fig.

hmm_ctc_fig12 Fig.

hmm_ctc_fig13 Fig.

hmm_ctc_fig14 Fig.

hmm_ctc_fig15 Fig.

hmm_ctc_fig16 Fig.

vs Recurrent Neural Networks (RNNs)

References