아틀라스랩스의 음성인식 기술, 더 나아가 AI 음성인식 기술에 대한 이해를 돕기 위해 4개의 아티클로 구성된 ‘아틀라스랩스 음성인식 리포트’의 두번째 아티클 언어모델 최적화입니다.
한눈에 알아보는 3문장 요약
언어모델이란?
언어모델에 대한 설명을 하기 이전에 음성인식 기술이 어떻게 구성되어 있는지 알아보겠습니다.
음성이 들어와서 음성인식 결과로 나타나기까지 음성인식기에 학습된 음향모델(Acoustic Model), 언어모델(Language Model), 어휘 사전(Word Lexicon)의 영향을 받습니다.
여기서 언어모델이란 방대한 텍스트를 분석한 모델로 현재 인식되고 있는 단어들 간의 관계를 확률로 나타내어, 특정 단어 다음에 나올 확률이 높은 단어를 예측하는 역할을 합니다.
예를 들어 ‘나는 점심으로 밥을 먹었다’ 라고 발음했다고 할 때 음성인식기가 ‘점심으로’ 다음에 나올 단어를 꼽을 때 언어모델이 학습되지 않았다면 ‘밥’과 발음이 비슷한 ‘방’, ‘밤’ 등으로 잘못 인식할 수 있습니다. 언어모델은 ‘점심’과 확률적으로 관계성이 높은 ‘밥’을 인식하여 결과를 보여주는 역할을 합니다.
즉, 음성인식기는 음향모델에 의존했을 때보다 언어모델 함께 학습시켜 발음이 비슷한 단어 혹은 불분명하게 발음된 단어의 인식률을 높일 수 있습니다. 탐색할 필요가 없는 단어를 사전에 걸러내어, 결과적으로 음성 인식 속도를 높이는 데 기여하기도 합니다.
언어모델 최적화
그렇다면 언어모델은 어떻게 최적화할 수 있을까요?
wFST 기반의 음성인식기는 기본적으로 언어모델에 대해 N-gram ARPA 확률 언어모델을 사용합니다. 물론 최근 활발히 연구되고 있는 RNN 기반 언어 모델이 뛰어난 성능을 보이고 있지만 DNN 기반의 언어 모델은 특정 도메인에 최적화시키는 기법이 뛰어나며 이 분야에서 지속적으로 발전하고 있습니다.
N-gram ARPA 모델로 학습된 언어 모델을 특정 도메인에 최적화시키는 방법은 해당 도메인 말뭉치를 가지고 N-gram ARPA 모델을 만들고, 여기서 생성된 기본 (baseline) 모델과 보간법(interpolation) 방식으로 혼합(mixture) 모델을 만드는 것입니다. 하지만 이 방법은 다음과 같은 단점이 있습니다.
- 새로운 모델 생성에 소요되는 긴 개발 시간이 걸림
- 말뭉치(corpus) 추가로 인해 기본 모델의 성능을 유지하기 어려움
- 다양한 도메인에 대해 비슷한 보간법을 쓰게 되면 기본 모델에 bias가 생김
- Bias 현상을 방지하기 위해 문제 상황에 따라 쌓아온 경험에 의해 heuristic 접근법을 쓸 수 밖에 없음
그래서 위 단점을 보완하기 위해 아틀라스랩스에서는 구문 힌트(Phrase Hints) 기능을 사용합니다.
구문 힌트(Phrase Hints)의 정의 및 중요성
구문 힌트 기능은 오디오 데이터에서 과도하게 표현되는 경향이 있는 특정 단어와 구문의 정확도를 향상시킵니다. 예를 들어, 특정 명령어를 자주 사용자가 말하는 경우 이러한 명령어를 구문 힌트로 제공할 수 있습니다. 이러한 추가 구문은 특히 제공된 오디오에 노이즈가 있거나 포함된 음성이 명확하지 않은 경우에 유용할 수 있습니다.
예를 들어 전자상거래(이커머스) 도메인의 경우, 새로운 상품이 매일 빠르게 업데이트 됩니다. 이에 대한 신규 상품명 정보가 언어모델에 빠르게 적용되지 않으면, 신상품에 대해서는 OOV(Out of Vocabulary)로 인식하여 인식 결과가 제대로 나올 수 없습니다. 사례를 살펴보면 ‘팥 앙금’이라는 상품이 새로 등록되었는데 구문힌트를 사용하지 않고 음성인식 결과를 확인하면 발음이 비슷한 ‘파당금’이라고 인식 결과가 나타납니다.
이를 해결하기 위해 아주 빠르게 언어 모델을 업데이트 할 수 있는 구문 힌트 기능을 사용하여, 수 시간내에 신규 상품명을 업데이트해서 음성인식 결과 향상에 큰 도움을 줄 수 있습니다.
문구는 작은 단어 그룹 또는 단일 단어로 제공될 수 있습니다. 일반적으로 쓰이는 워드 슬롯(word slot) 방식은 기본 모델에 단어(word)를 채울 수 있는 word slot을 남겨 두고 최적화할 도메인 말뭉치(corpus)를 단어 리스트 형식으로 word slot에 추가하는 방법이며, 이 경우 다음과 같은 단점들이 있습니다.
- 문장 추가 필요시 단어로 나눠서 각각 단어별로 추가하거나 전체 문장을 한 단어로 추가해야 함
- 단어만을 리스트 형식으로 추가하면, 단어에 관련된 통계 정보 등 언어 특성을 반응하기 어렵고 이로 인해 성능이 좋지 못함
아틀라스랩스의 차별성
아틀라스랩스에서는 인식률이 높은 언어모델을 만들기 위해 자체적으로 구문 힌트(Phrase Hints) 기능을 개발해서 제공하고 있습니다. 이 기능은 해당 도메인 말뭉치(corpus)를 기반으로 고객사에 니즈에 맞는 언어모델을 별도로 생성할 수 있으며, 음성인식기가 동작할 때 기본 모델과 최적화 모델을 동적으로 연결시킵니다. 즉 두 모델을 동시에 사용하면서 인식률이 높은 결과 값을 만듭니다.
위의 방식에는 다음과 같은 장점이 있습니다.
- 도메인 말뭉치(corpus)만 사용해서 별도의 작은 언어 모델을 생성하기 때문에 개발 시간이 단축됨
- 도메인 말뭉치(corpus)의 특성에 따라 여러개의 언어 모델을 사용할 수 있으며, 전화 상담, 상품 리스트, 주소 등등 각각 다른 도메인에 특화된 언어 모델을 생성해서 사용할 수 있음
- 특정 도메인 언어 모델은 일반 언어 모델과 같이 n-gram 언어 모델을 사용함으로 인식률이 높음
- 변경된 말뭉치(corpus)에 관련된 모델의 업데이트만 하기 때문에 적용하기 쉽고 빠름
도메인 최적화 이슈를 논외로 하더라도 N-gram ARPA로 얼마나 다양한 도메인을 망라하는 기본 모델을 만들 수 있느냐도 성능 좋은 음성인식기를 만드는데 아주 중요한 조건입니다.
아틀라스랩스의 경우 제로스 (Zeroth) 오픈소스 프로젝트를 통해 한국어 형태소 분석이 data-driven 방식으로 진행될 수 있다는 것을 증명했습니다. 현재 제로스 EE (엔터프라이즈 버전)의 경우 50GB 이상의 한국어 말뭉치(Corpus)를 기반으로 N-gram ARPA 모델을 만들어 사용하고 있습니다.