딥러닝은 음성인식 문제를 어떻게 바꾸었나: Hybrid에서 E2E로

딥러닝은 음성인식 문제를 어떻게 바꾸었나: Hybrid에서 E2E로
ASR관련 문헌들을 읽다보면 Hybrid ASR과 E2E ASR이라는 용어를 접하게 됩니다. 이 글을 통하여 대략적인 개념을 전달하고자 합니다.

인공지능은 데이터로 부터 자발적으로 불필요한 정보를 제거하고 유의미한 정보들을 골라내며, 습득한 정보를 이용하여 유용한 기능들을 수행합니다. 최근 인공지능 기술은 반도체 기술의 기하급수적인 발전에 기반한 데이터의 저장 및 처리 능력의 발전과 그에 따른 활발한 데이터의 축적으로 인해 빠르게 발전하고 있습니다. 뿐만 아니라 인간이 해결하기 어려운 수많은 문제에서 해결책을 제시하는 기술로 자리 잡고 있습니다. 특히 오랜 기간 고전적 기계학습을 이용하여 접근해 온 문제들에 대해 딥러닝이 개선된 해결책을 제시하고 있는데, 대표적인 예시가 음성인식입니다.

음성인식에서 딥러닝

음성인식은 1950년대 벨 연구소에서 시작된 단어의 종류가 제한된 음성을 인식하는 문제에서 제한되지 않은 범위의 발화를 인식하는 문제까지 오랜 시간 그 범위가 넓어져 왔습니다. 오랜 기간 수많은 연구자가 참여하며 다양한 방법이 제시되었으며, 데이터를 바탕으로 알고리즘을 자발적으로 학습하는 인공지능에 기반한 음성인식 연구가 주류로 자리 잡게 되었습니다. 그러나 과거 고전적 인공지능에 기반한 음성인식 알고리즘은 개선에 한계를 보여주었고, 심층신경망을 사용하는 딥러닝이 전환점으로 작용하면서 음성인식 또한 현대 인공지능의 급격한 발전에 도움을 받게 됩니다. 이러한 딥러닝의 기하급수적인 발전에 힘입어 2010년대 많은 표준화된 데이터에서 인간의 수준을 넘어선 성능이 보고되기 시작했으며, 과거까지 실험실에서 국한된 기술들은 산업과 일상에 투입할 수 있는 수준으로 발전되었습니다.

WER은 단어 수준의 오류를 나타내며, 낮을수록 정확하다. Deep Speech 2 논문에 따르면 인간은 5.83%이다. 불과 4년 만에 인간에 비해 오류가 두 배 이상 적은 수치를 달성했다. 출처: https://paperswithcode.com/sota/speech-recognition-on-librispeech-test-clean

음성인식은 인간이 발화한 음성을 단어의 나열로 바꾸는 문제입니다. 음성인식이 어려움으로써 흔히 다음과 같은 두 이유가 제기됩니다.

다양한 길이의 음성과 문장

음성인식 알고리즘이 처리하는 음성의 길이는 일정하지 않고, 그에 대응하는 단어열의 길이 또한 일정하지 않습니다. 일반적으로 짧은 음성은 1초도 되지 않으며, 긴 문장을 발화하는 음성은 1분이 되기도 합니다. 즉, 알고리즘은 길이가 변동하는 두 나열을 연결하여야 합니다.

높은 차원의 음성 데이터

음성은 차원이 매우 높은 데이터입니다. 공기 분자의 압력 파동을 디지털 신호로 변환하여 특정한 방법으로 데이터를 저장하면, 적게는 초당 수천 개의 실수로 이루어진 벡터가 생성됩니다. 단순히 몇 글자로 이루어진 음성도 길이가 수 만에서 수 십만인 벡터가 되며, 음성인식 알고리즘은 이 벡터에 혼재하는 잡음 등과 같이 언어와 무관한 정보를 걸러내고 올바른 글자들을 예측해 내야 합니다. 이렇게 고차원의 데이터에서 원하는 정보를 추출할 수 있는 모델을 만들기 위해서는 많은 양의 데이터가 필수적이며, 데이터의 유용한 정보를 저장하고 활용하기 위하여 모델의 매개변수 또한 많아야 합니다.

Hybrid ASR 이란

연산 처리 장치의 성능이 낮았던 과거에는 매개변수의 수가 많은 인공지능 모델을 학습시키기 어려웠고, 인공지능의 놀라운 아이디어들이 발견되기 전까지는 매개변수의 수가 많아도 고차원으로 이루어진 데이터 안의 정보를 효율적으로 담기 어려웠습니다. 특히 음성이나 언어와 같이 시간에 의존적인 데이터는 한 시점의 정보를 이해하기 위해 과거 혹은 미래의 맥락으로부터 필요한 정보를 참조하여야 하는데, 모델이 처리하는 맥락의 범위가 넓어짐에 따라 데이터의 차원이 비례하여 커집니다. 이렇게 고차원의 데이터를 하나의 알고리즘으로 해결하기 어려웠던 과거에는 데이터를 여러 조각으로 쪼개 하위 계층에서는 쪼개진 데이터를 통해 예측하도록 하고, 예측된 결과들에 기반을 두어 다음 단계의 알고리즘이 예측하는 일종의 계층을 만드는 방법을 택했습니다. 흔히 문장은 단어로 구성되어 있고, 단어를 나누어 만들어진 발음의 단위를 음소(phone)라고 부르는데, 과거 음성인식에서 각 계층은 이러한 인위적으로 구분된 단위 들을 사용하였습니다. 음성인식에서 가장 낮은 계층에서는 음소의 나열을 예측하였고, 예측된 음소 나열을 통해 다음 계층의 알고리즘이 단어를 예측하였으며, 그 상위 계층은 단어를 통하여 문장을 예측하였습니다. 이렇게 음소의 나열을 예측하는 모델은 음성 모델(acoustic model)이라고 하며, 음소의 나열을 통해 단어를 예측하는 모델은 발음 모델(lexicon, pronunciation model)이라고 불리고, 단어를 통해 적절한 문장을 예측하는 모델은 언어 모델(language model)이라고 불립니다.

음성인식의 첫 단계인 음성 모델은 음성에서 음소의 나열을 예측합니다. 음소와 음성을 확률 변수라고 생각한다면, 두 확률 변수의 나열의 분포(distribution of two sequences of random variables)를 모델링 해야 합니다. 이렇게 두 확률변수 나열의 분포를 HMM(Hidden Markov Model)으로 모델링 하였으며, HMM의 emission probability를 GMM(Gaussian Mixture Model), 그 이후에는 심층신경망(DNN, Deep Neural Network)을 활용하여 HMM-GMM 또는 HMM-DNN이라고 합니다. HMM은 특히 음성의 속도 변화에 어느 정도 불변한 성질을 가지는데, 이는 빠른 발음과 느린 발음을 하나의 모델로 표현할 수 있도록 합니다.

더 정확히 이야기하자면 위에서 예측 단위가 음소라고 설명했던 것과는 달리, Hybrid 모델에서 많은 경우 주변에 존재하는 음소의 종류에 따라 더 세분화한 Context-dependent phone을 사용하고, Context-dependent phone을 더 세밀하게 나누고 군집화를 수행한 tied HMM state와 같은 단위를 DNN의 예측값으로 사용합니다. 하지만 설명의 간결함을 위하여 더 자세한 내용은 생략합니다.

HMM과 emission probability을 모델링 하기 위한 DNN

그다음 단계에 존재하는 발음 모델은 음소의 나열을 단어로 연결해 줍니다. 하나의 단어라 하더라고 다양한 발음이 존재하는데, 발음 모델은 다양한 발음을 하나의 단어로 대응시켜 줍니다. 이렇게 발음 모델이 예측한 단어들이 연결되어 문장을 이루게 됩니다. 하지만 무작위적으로 나열된 단어는 문법적으로 옳지 못합니다. 언어 모델은 문법적으로 옳은 문장에 높은 확률을 부여하며 자연스러운 문장이 되도록 합니다.

발음 모델 (왼쪽)과 언어 모델 (오른쪽). 출처: https://www.openslr.org/12

발음 모델은 주로 특정 패턴을 통해 만들거나 언어학자들이 직접 수작업으로 만들기도 하며, 언어 모델은 주로 n-gram 모델이 사용됩니다.

이렇게 각 계층을 구성하는 모델을 하나의 모델로 연결해야 하는데, 이를 위해서 WFST(Weighted Finite State Transducer) 이론을 사용합니다. WFST는 일종의 유한 상태 기계(Finite State Machine)인데, 이는 여러 이산 확률 변수 모델(discrete probabilistic model)의 연결과 최적화를 일관되고 쉽게 만듭니다.

이렇게 HMM-DNN에 기반한 음성 모델과 이후 발음 모델, 그리고 언어 모델이 각각 독립적으로 학습되며 이를 하나로 연결하여 만든 음성인식 모델을 Hybrid 모델이라고 합니다. 특히 음성 모델에서는 부분적으로 뉴럴 네트워크를 사용하지만 많은 부분은 고전적인 확률 모델을 사용하기 때문에 붙여진 이름입니다. Hybrid 모델은 오랜 시간 연구된 다양한 기법들이 조합되어 만들어진 음성인식 알고리즘입니다. 하지만 Hybrid 모델은 여러 계층을 이루고 있어 훈련 과정에서 많은 수작업이 요구되며 훈련시키기 어렵습니다. 또한 고전적 확률 모델들은 예측을 위한 맥락의 길이가 길어지거나 변수간 복잡한 관계를 표현하고자 하면 필요한 데이터의 수와 모델의 크기가 기하급수적으로 증가합니다.

E2E(End-to-End) ASR의 등장

하지만 오늘날 깊고 큰 뉴럴네트워크의 활용이 가능해지면서 과거와 달리 음성인식도 하나의 뉴럴네트워크로 해결할 수 있습니다. 과거에 여러 계층의 확률 모델을 독립적으로 학습했던 것과 달리 하나의 모델이 음성부터 문장까지 연결하도록 훈련하기 때문에 이를 Hybrid 모델과 대조하여 End-to-End 모델이라고 합니다. End-to-End 모델은 고차원 음성 벡터를 적게는 몇 층, 많게는 수십층의 심층신경망을 통과시켜 문장을 예측하도록 합니다. Hybrid 모델은 음소, 단어와 같이 인위적으로 디자인된 단위들을 중간 계층에서 표현하도록 하였다면, End-to-End 모델은 온전히 데이터에 의존하여 학습하며 결과적으로 아래층의 신경망에서 음소와 유사한 단위의 정보를 학습하게 되고, 중간 정도의 신경망에서 조금 더 큰 단위의 정보를 학습하며, 최종적으로 문장이 만들어집니다.

End-to-End 모델은 사람이 직접적으로 발음 모델을 만들 필요가 없고, 여러 모델을 독립적으로 학습시킬 필요가 없어 훈련이 간편합니다. 또한, 모델의 학습과 연결이 분리될 필요가 없기 때문에 연결 과정에서 성능이 하락하는 문제가 발생하지 않습니다.

E2E model과 Hybrid model의 비교

그렇다면 End-to-End 모델은 구체적으로 어떤 요소로 이루어져 있을까요? 일반적으로 세 부분으로 나누어 집니다.

Feature Extractor

음파는 수 만 또는 수 십만 개의 실수로 이루어져 있다고 언급하였습니다. 하지만 이는 문장의 길이와 비교하여 너무 길기 때문에 조금 더 정보를 짧고 집약적으로 표현하는게 좋습니다. 따라서 Feature Extractor는 모델이 조금 더 효과적으로 정보를 추출할 수 있도록 길이를 압축한 벡터의 나열로 표현합니다. 이 부분은 주로 CNN(Convolution Neural Network)으로 만들어져 있습니다.

1차원의 음성 데이터를 시간 방향으로 압축된 벡터로 바꾼다

Encoder

위에서 만들어진 벡터의 나열을 Encoder에 통과시킵니다. Encoder는 Encoder layer가 여러 층으로 쌓인 구조인데, 각 층에서는 한 시점의 벡터를 주변 벡터들과 비교하며 더 추상적인 의미를 갖는 벡터로 만듭니다. 이러한 과정에서 Attention mechanism과 같은 기술이 사용된 Transformer 구조가 사용됩니다.

Encoder를 통과하면서 각 벡터는 더 추상적인 의미를 담게 된다

Decoder

이렇게 Encoder를 통과한 벡터는 Decoder를 통해 단어들이 생성됩니다. Decoder도 뉴럴네트워크가 사용될 수 있습니다. Decoder는 Encoder에서 생성된 벡터를 선택적으로 참조하여 해당 음성에 어떤 단어들이 발화되었는지 추론합니다.

Decoder는 Encoder의 결과를 참조하여 문장을 추론한다

수많은 뉴럴네트워크가 쌓여있는 구조를 이루고 있는 End-to-End 모델은 DNN-HMM에서 사용되었던 뉴럴네트워크의 크기에 비해서 일반적으로 수십배 이상 큽니다.

Conclusion

이렇게 거대한 뉴럴네트워크를 활용하는 방법은 오늘날 최신 인공지능 기술들을 적용할 수 있게 합니다. 특히 비지도 학습의 발전으로 단 10시간의 지도학습 데이터로 과거 Hybrid 모델의 성능을 능가합니다. 그뿐만 아니라 데이터를 통해 모델이 표현할 수 있는 범위가 넓어짐에 따라 수많은 상황의 음성을 하나의 모델이 처리할 수 있고, 더욱 인간의 결과와 유사한 문장을 만들 수 있도록 합니다.

이번 포스팅을 통하여 딥러닝이 어떻게 기존의 음성인식 문제를 바꾸었는지 논의하였습니다. 이후 포스팅에서는 구체적으로 어떤 딥러닝 기술들이 End-to-End 모델에 적용되고 연구되고 있는지 이야기하도록 하겠습니다.


Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to 기업을 위한 음성 AI - 리턴제로 blog.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.