-
Listen, Attend and spell논문 리뷰 2022. 1. 1. 19:12
이번에 포스팅 할 논문은 2016 ICASSP 에 소개된 Listen, Attend and Spell 입니다.
Listen, Attend and Spell
We present Listen, Attend and Spell (LAS), a neural network that learns to transcribe speech utterances to characters. Unlike traditional DNN-HMM models, this model learns all the components of a speech recognizer jointly. Our system has two components: a
arxiv.org
INTRODUCTION
DNN 이 발전하면서 음성인식에도 DNN이 적용이 되었고, 고정 길이의 vector로 output category를 판단하는 classification으로 이를 해결하려 하였다.
고정 길이 변수 문제를 해결하기 위하여 HMM, CRF 등과 결합하여 모델링을 하여 DNN-HMM 등의 음성인식기가 탄생하였다. 이러한 모델링의 문제는 end-to-end 학습이 어렵고, 데이터셋 분포를 단순화 하여 가정한다는 문제입니다.
또한 sequence-to-sequence 기반의 인공지능 모델이 attention 기법과 함께 성능이 향상되었다. 이를 이용하여 위의 문제를 해결하기 위해 LAS 모델을 만들었다.
MODEL
Fig. 1 LAS 모델 그림 1은 LAS 모델을 도식화 한 그림이다. Listener 로 불리는 encoder, Speller로 불리는 decoder로 구성된 Seq2seq 기반의 모델이다. input은 x로, 음성의 특징(acoustic feature)가 들어가게 되고, output은 y로 문자열 (sequence of characters)가 나오게 된다.
이 Seq2seq 모델인 만큼 인풋으로 들어간 음성 특징과, 이전 출력 문자열을 이용하여 다음 문자를 판단하는 모델이다.
LAS는 listener 에서 x를 input 으로 받아 high level representation인 h로 바꿔주고, 이를 Speller에서 attention을 이용하여 확률 모델링을 진행한다.
LISTENER
listener에서는 pBLSTM을 사용한다고 한다. p는 피라미드의 줄인 글자인데, 그림 1에서 처럼 위 계층으로 갈수록 layer node가 절반으로 줄어드는 모습을 띄고 있다. 이렇게 하는 이유는 그냥 BLSTM을 이용하면 학습하는데 너무 오래 걸린다고 하고, 또한, Attention 의 계산복잡도를 낮추기 위해서라고 한다.
Attend and Spell
speller는 listener보다 약간 더 복잡한 형태를 가진다. speller 부분이 하는 역할은 h 와 s 를 이용하여 attention을 하고, s,y,c를 이용하여 lstm에 넣어 s를 추출하고, s를 mlp와 softmax를 이용해 다음 문자가 나올 확률을 계산한다.
RNN은 2계층 LSTM을 이용하고, Character Distribution은 MLP와 softmax를 이용한다.
AttentionContext는 조금 더 복잡한데
si, hu를 각각 mlp에 넣어서 attention score eiu를 구하고, 이를 softmax를 이용하여 attention distribution을 계산하고, 최종적으로 context vector(attention value) ci를 구하게 된다.
Leaerning
LAS는 end-to-end로 학습이 된다. 이전의 문자열들을 조건으로 하여 다음 문자의 확률이 최대화 되도록 파라미터를 학습한다.
일반적으로 seq2seq 학습을 진행할때 생성된 문자를 다음 input으로 집어넣어 학습을 하기 보다는 ground truth 문자를 이용하여 다음 sequence로 넣어준다. 이는 잘못 생성된 문자가 다음 문자를 생성해낼때 오류가 증가하게 만들어 오류가 더욱 커지는 것을 방지하기 위함이다.
하지만, LAS에서는 100%로 groundtruth 문자를 이용하지 않고, 10% 확률로 생성해낸 문자를 사용한다. 이 이유는 LSTM이 더욱 유연하게 학습이 되게 하기 위함이라고 한다. (실제로 실험 결과에서 더 좋은 성능을 보인다)
Decoding
LAS가 출력해는 것은 사실상 softmax를 이용한 문자가 나올 확률이다. 우리는 이 확률이 최대화 되는 문자열을 선택해야한다.
이를 다시 문자열로 바꿔주기 위한 과정을 decoding이라고 하는데, LAS에서는 left to right beam search를 이용하여 문자열로 만들어준다.
Rescoring
LAS에서는 Language Model을 추가적으로 이용할 수 있다. 이를 rescoring 이라 한다.
위의 식을 이용하여 LAS 자체의 확률분포 뿐 아니라 언어모델의 확률 또한 반영할 수 있다.
EXPERIMENTS
Google voice search utterance 라는 2000시간의 데이터셋으로 실험을 하였다. 이중 10 시간을 validation set으로, 16시간 (22,000 발화)를 test set으로 나누었다. room simulator를 이용하여 noise, reverberation을 넣어 데이터 증강을 하여 20배로 늘렸다. raw audio를 40차원의 log mel filterbank 를 적용했다
Listener는 3 레이어의 pBLSTM 이고, 인풋 레이어의 노드는 512개(한 방향당 256)개이고, 레이어가 올라갈수록 절반으로 줄어든다.
Sepller는 2 레이어의 LSTM이고, 모든 레이어의 노드는 512개이다.
모든 노드들은 uniform initialization 을 적용했다.
ASGD optimizer를 이용하여 학습하였고, learning rate는 0.2에서부터 시작하여 3,000,000utt (1/20 epoch)이 지날때마다 0.98%씩 decay 된다고 한다. decoding시 beam width를 32로 설정했다고 한다.
Table 1. 단어 오류율 표 1은 LAS 모델, LAS 모델과 LM모델, Sampling 을 이용하여 나타낸 단어 오류율이다.
그림 2는 attention 이 잘 되고 있는 것을 보여주고 있다. "How much would a woodchuck chuck"라는 문장에 대한 모습인데, woodchuck과 chuck의 발음이 거의 똑같지만, attention은 이를 잘 구분해냈다.
그림 3에서는 beam width별 WER을 비교하였다. width 32부터는 큰 의미 없는 수치를 갖는다고 한다.
그림 4는 발화의 길이와 그에 따른 오류율 등을 나타내었다. 발화의 길이가 길때 오류율이 높아지는것은 학습 데이터에서 긴 발화가 별로 없기 때문이라고 연구진들은 생각하고 있다고 하고, 특이한 점은 한 발화 안에 2 단어보다 적을때 성능이 좋지 못하다는 점이다.
그림 5는 학습할때 단어가 많이 나타나는것이 음성 인식을 할때 영향을 많이 주는지에 대해서 나타낸 표이다.
and, in 등의 단어는 매우 많이 발생(85,000번 정도) 하는 단어들인데 이 단어들의 인식률은 80 ~ 95%의 재현률을 보이는데 반해
walkalive 와 같은 단어는 training set에서 단 1번 나타나는 단어인데, 이를 인식할때 100%재현률을 보였다.
이와 같은 실험을 통해 단순히 음성이 나타나는 빈도만을 가지고 학습이 되지 않고, 해당 발음의 특성을 가지고 학습을 한다는 것 을 확인 할 수 있다고 한다.표 2는 [콜 트리플 에이 로드사이드 어시스턴스] 라는 발음을 들려줬을 때 beam 의 상위 4개를 보여주고 있는데 aaa 와 triple a 라는 문자가 모두 상위 확률에 관찰 되는 것을 볼 수 있다. 이는 하나의 발음에 대해 1:1로만 학습되지 않는다는 것을 알 수 있다고 한다. 이런 다양한 transcript를 나타내는 것은 CTC와 같은 기존의 방식에서는 매우 힘들다고 한다. 특이한 점은 xxx 도 출력이 되었는데, 이는 language model에서 aaa 보다 xxx가 확률이 더 높기(4배 높음) 때문이라고 판단하는 듯 하다.
표 3은 내용 기반의 attention을 사용하고 있음에도 동일한 단어가 여러번 반복되는 발화에 대해서도 잘 처리하고 있음을 보여주고 있다.
'논문 리뷰' 카테고리의 다른 글
MUTE: Multitask Training with Text Data for End-to-End Speech Recognition (0) 2022.05.11 Deep Speech & Deep Speech2 간단 리뷰 (0) 2022.01.15 VQVC+: One-Shot Voice Conversion by Vector Quantization and U-Net architecture 리뷰 (0) 2021.10.13 WaveGlow: A Flow-based Generative Network for Speech Synthesis 리뷰 (0) 2021.10.13 Glow: Generative Flow with Invertible 1x1 Convolutions 리뷰 (0) 2021.10.13