1. Listen, Attend and Spell (LAS)의 특징
Listen, Attend and Spell (LAS): transcribe speech utterances 를 charcaters로 학습하는 neural network
기존의 DNN-HMM models과 달리, speech recognizer의 모든 구성요소를 jointly하게 학습
두 구성요소: listener & speaker
2. 실험 결과
CTC? Connectionist Temporal Classification (CTC) ([참고])(https://ratsgo.github.io/speechbook/docs/neuralam/ctc)
입력 음성 프레임 시퀀스와 타겟 단어/음소 시퀀스 간에 명시적인 얼라인먼트(alignment) 정보 없이도 음성 인식 모델을 학습할 수 있는 기법
1.1 기존 Method
speech recognition에서 Deep Neural Networks (DNNs)이 성능 향상 보임
1] 음향 모델 (acoustic modeling)을 위해 hybrid DNN-HMM speech recognition systems에서 사용되었으며,
2] pronunciation models(발음 모델, map words to phoneme sequences)에서 엄청난 gain을 보임
3] 언어모델 (language model)에서는 recurrent models이 n-best lists를 재점수해서 speech recognition 정확도를 올린다고 함
재점수해서 정확도를 올린다??
단어 시퀀스의 출현 확률을 부여하는 모델. 기존 시스템에서는 통계 기반의 n-gram 모델이 이 역할을 수행. ?? 이런 뜻인건가??? -> argmax해서 가장 높은 값을 beam search의 값으로 선정함 ! (언어모델에 도움을 받아 다음에 뭐 나올지 시퀀스 상으로 도움 받는 방법)
전통적으로 이 구성요소 (acoustic, pronunciation language models)들은 각자 다른 목적으로 훈련되었음 (각각 따로 학습되니까, 훈련 때 alignment가 disjoint되는 문제가 생김)
이 분야의 최근 연구들은 end-to-end로 훈련되는 모델들을 디자인에서 (speech -> transcripts) 생기는 disjoint training issue를 바로잡으려고 했음
최신 연구들이 제안한 해결책의 두 가지 주요 구성 요소는 (i) Connectionist Temporal Classification (CTC) , (ii) sequence to sequence models with attention로 둘 다 한계점이 있었음
1.2 Listen, Attend and Spell (LAS)
1.3 본 논문 key
OOV가 자동으로 모델에서 다루어지는 이유??? 구체적인 설명 -> 한번에 one character로 반환한다는게 무슨 뜻인지 (한번에 one charcater로 변환하는데 왜 아래 triple a에서는 Beam search로 여러 개의 결과를 반환하는 건지??) => 알파벳을 개별로 추출한다 (이전 연구와 달리 사전같은 것 안썼다)
“triple a” 는 t, r, 이런싟으로 하나씩 뽑기?
modeling characters as outputs가 무슨 뜻인지 -> 결과물로 "character"를 반환한다
실험 결과
1. attention mechanism 없이 -> 모델은 training data를 overfit 함
2. 인코더 내의 pyramid structure 없이 -> 모델은 너무 천천히 수렴함
3. speller의 오버피팅을 줄이고자 -> training 동안 sampling trick 사용
Intro
Listen Attedn Spell 순서대로 작동 !!
언어모델들을 통해 한 번더 변환하는 것이 기존 모델들의 형태이었더라면, LAS는 세 가지를 한 번에 합쳐서 end-to-end를 하는 모델임 (최초)
CTC + sequnece~~ (언어모델) => 융합해서 쓰자,
CTC: 예시로 ASR 쪽으로 생각해보면, 음성 주파수랑 스크립트 길이 다를때 쓰이는 모델
음성 신호를 한 번에 한 단어씩 변환해서 -> 시퀀스를 만든다
Model
x가 음성, y가 텍스트
Listen & AttendANdsSPeel 함수를 각자 만들어서 사용
피라미드로 쌓는건 -> 시간 단축 + 에러률 줄이기
실험
SOTA보다 성능이 좀 안좋지만, 다 합쳐서 우수하다는 식으로 논문을 기술!! 신기하네~~
어텐션으로 POS하는 과정은 필요 없다 -> 어텐션 벡터 값을 2차 평면으로 나타낸 이미지, 어텐션 벡터가 시퀀스랑 유사한 애들이 출력이 되더라, contents 만 사용해도 위치 정보 알아서 파악해서 출력하기 때문에 pos는 필요가 없는 것 같다
Beam width
Oracle ? -> 빔서치 중에서 확률이 높은 것을 고를 때, "빔서치에 최적인 값을 골랐을 때" = "oracle"
발화의 길이에 따른 error rate
발화가 길어질 수록 deletion 현상이 많이 나타난다 -> deletion 현상???이 뭔지 (말이 중간에 끊기거나 / 아니면 뒤에 안나오거나), Insetion은 NLP의 hallucination 같은 느낌 !!!
단어 횟수와 recall간의 관계
많이 쓴 단어는 recall이 상대적으로 더 높았다
한 번 나온 단어 -> recall 100% (단어가 특징적이 크면, recall이 좋게나오더라)