이 글에서는 2020 Neurips에 게재된 "wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations" (Alexei Baevski, et al)논문에 대해 리뷰한다. 제목 그대로 wav 음원을 vector (speech representation)으로 매핑하는 모델을 제안하였다. 이 논문을 TTS, STT에 넣은 이유는 wav2vec의 output에 간단한 predictor만 붙여주면 speech-to-text 모델로 사용할 수 있기 때문이다.
※ STT: Speech-To-Text, 음성을 텍스트로 변환해 주는 작업이다.
Abstract
- 이 연구에서는 처음으로 script없이 오디오로만 표현을 학습하고, script로 fine tuning하는 방식 제안
- latent space에서 input을 masking하고 quantization을 이용해 contrastive learning (quantization도 같이 학습).
- Librispeech의 clean/other test set에서 각각 1.8/3.3의 WER을 달성. 또한 단 10분의 labeled data와 53000시간의 unlabeded data를 이용했을 때에도 4.8/8.2의 WER을 달성
- 이는 소량의 라벨링 데이터만으로도 음성 인식이 가능함을 나타냄
간단히 말해서 speech에 대한 대본(텍스트 번역) 없이도 학습/추론이 가능한 self-supervised learning 기법이다. 오디오에서 특정 시간대를 masking하고 이 부분을 예측하는 network로 구성되었으며, 예측 output과 quantized representations가 가까워지도록 contrastive learning을 한 것이다.
※ Contrastive learning에 대해서는 아래 링크에서 자세히 알 수 있다.
자세한 내용을 아래서 차근차근 살펴보자.
Introduction
Label 데이터 없이 self supervised learning을 사용하는 데는 다음 두 가지 이유가 있다.
- 모델 학습에 있어서 가장 중요한 것은 데이터이다. 데이터가 많을수록 모델의 일반화 성능 및 충실도가 높아진다. 그러나 실제로 데이터를 구하는 것은 가장 어려운 일 중 하나이며 그 중에서도 label이 있는 데이터를 구하는 것은 더욱 어렵다. STT task에서 label이란 음성의 대본을 뜻한다. 이에 비해 대본이 없는 음성 데이터만을 구하는 것은 상대적으로 쉬운 일이다.
- 유아가 음성을 듣고 해석하는 과정을 생각해 보았을 때 음성의 대본을 보고 학습하기 보다는 성인의 말을 들으며 언어를 배우게 된다. 따라서 기계 학습도 대본을 주는 것 보다 오디오만으로 학습하는 것이 인간을 모방하는 길이다.
따라서 이 논문에서는 다음과 같은 process로 모델을 설계하였다.
- wav데이터를 Convolution network를 통해 encoding
- 랜덤으로 일부 시간대를 masking
- masking된 embedding을 transformer network로 전달
- transformer output과 quantized latent representation을 이용해 contrastive learning
Model
그림을 보면서 아키텍처를 좀 더 자세히 이해해 보자.
- Raw waveform X에서 temporal CNN을 이용해 latent speech representation Z를 추출
- temporal CNN: 1D convolution으로 time축에 따라 이동하는 convolution
- latent speech representation: neural network를 통과해 잠재 공간(latent space)에 임베딩으로 매핑된 representation. 이 모델에서는 CNN을 사용하였으며 중간 산물 Z이다.
- Z를 random masking 후 transformer 에 통과시켜 context representation C를 추출
- random masking: 일부러 Z의 일부분을 지워 transformer 모델이 예측하도록 유도하기 위한 장치이다. 모델은 이 부분을 잘 예측하도록 학습하면서 음성 표현을 자연스럽게 학습한다.
- Z를 quantization codebook에 통과시켜 quantized representation Q를 추출
- quantization: 여러 벡터로 구성되어 있는 codebook에서 하나를 뽑아 원래 임베딩과 대체하는 것이다.
- 이 모델에서는 G개의 코드북, 각각에는 V개의 벡터가 있고, Z의 임베딩은 각 코드북에서 하나씩 벡터를 선택하여 e1, ... , eG를 추출하고 이 모두를 concatenation, 그 후 linear transform하여 Q를 얻는다.
- 이 때 codebook에서 벡터를 선택하는 방식은 Gumbel softmax방법을 이용한다. 이는 학습 가능하며 그룹 g에 대해 v번째 코드북 벡터를 선택할 확률 p_(g,v)는 다음과 같다.
- 마지막으로 C와 Q가 postive pair가 되어 서로 유사성이 높아지도록 Loss를 설정하고 학습한다.
- 또한 codebook들이 골고루 선택될 수 있도록 diversity loss도 부여한다.
Results
wav2vec 2.0은 wav를 잘 표현할 수 있는 embedding으로 표현하는 것이고 이 embedding을 가지고 text로 변환하기 위해서는 추가적인 downstream fine tuning 작업이 필요하다. 이 작업에는 필수적으로 labeled 데이터를 이용한다. 아래 표는 labeled data를 각각 10min, 1hour, 10hour, 100hour 만큼 사용했을 때의 성능을 비교하고 있다.
아래 표는 quantization method를 사용했을 경우 더 좋은 성능을 보였다는 ablation study이다.