728x90

본 논문의 제목은 wav2vec: Unsupervised Pre-Training for Speech Recognition [1] 이며, CPC 기법을 사용하여 unsupervised로 representation learning을 제안한 논문이다.

 

Overview

Raw audio representation을 unsupervised로 학습하여 음성 인식을 위한 사전 교육을 제안함
- 다량의 unlabeled 오디오 데이터에 대해 학습되며, 결과 representation 은 AM 학습을 개선하는데 사용
- 이 모델은 simple multi-layer CNN으로 구성되어 있으며, Negative contrastive loss 기반의 이진 분류 task를 통해 사전학습 됨

- Contrastive loss 사용

 

Proposed method

 

- 오디오 신호가 입력으로 주어지면 모델을 최적화하여 주어진 신호 context에서 향후 샘플 예측
- CPC처럼, raw waveform 샘플 $𝑥$를 feature representation $𝑧$로 인코딩함

- 이후 암시적으로 밀도 비율 $\frac{p(z_{i+k}|z_i,...,z_{i-r})}{p(z_{i+k})}$를 모델링하여 데이터 분포 $p(x)$를 정확하게 모델링 함

Encoder

1) Encoder는 raw waveform을 latent space에 embedding 함

Encoder part

 

 

- Raw audio sample $x_i\in X$가 주어지면, 5-layer CNN으로 parameterized된 encoder 네트워크 $f:X$↦ $Z$ 를 적용함

- 커널 크기 [10, 8, 4, 4, 4]와 strides [5,4,2,2,2]로 적용

 

2) Encoder의 출력은 16kHz 오디오의 약 30ms를 인코딩
- 이로 인해 Feature representation $𝑧_𝑖∈𝑍$임
- CNN-encoder를 통과한 striding 결과는 10ms마다 representation $𝑧_𝑖$로 됨
- Causal convolution with 512개 채널, group normalization [2], ReLU

3) 2개의 추가 linear transformation 사용 (Large model)

 

4) Group normalization
- Single normalization group을 사용하는 group normalization와 동일한 각 샘플에 대해 특성 및 시간 차원에서 모두 정규화 함
- 입력의 스케일링과 오프셋에 변하지 않는 정규화 체계 사용

 

Context network

- Context network $g:Z$↦$C$encoder의 출력에 적용

Context network part

- 다중 latent representation $z_i,...,z_{i_v}$를 receptive field 크기 $v$에 대한 single contextualized 된 tensor $c_i=g(z_i,...,z_{i_v})$ 로 변환함

- Kernel size 3, stride19개의 CNN layer로 구성

- 총 수용 필드는 약 210ms

- Causal convolution with 512개 채널, group normalization, ReLU 로 구성

 

Large model
- Kernel size가 증가하는 12개의 계층(2,3,…,13)으로 구성된 large context network도 실험
- 이럴 경우 aggregator에 skip-connections 도입
- 마지막 context network 계층의 총 수용 필드는 약 810ms

 

Objective, Loss

1) Objective

- 각 단계에 대한 Contrastive loss를 최소화하여 proposal 분포 $p_n$ 에서 추출한 샘플 $\hat{z}$ 으로부터 향후  $k=1,...,K$ 단계의 샘플 $z_{i+k}$ 를 구별하도록 모델을 훈련함

 

$\mathcal{L}_k$ = $-\Sigma_i($log$\sigma(z_{i+k}^Th_k(c_i)))+\lambda\large{E}_{\hat{z}~p_n}[$log$\sigma(-\hat{z}^Th_k(c_i))]$...(1)

 

- Sigmoid $\sigma$$x$ = $\frac{1}{1+exp(-x)}$

- $\sigma(z_{i+k}^Th_k(c_i))$는 $z_{i+k}$가 실제 표본일 확률

- $c_i$에 적용되는 각 step $k$에 대해 단계별 affine transformation인 $h_k(c_i)$ = $W_kc_i+b_k$를 적용

 

2) Loss

- $\mathcal{L}$=$\Sigma_{k=1}^K\mathcal{L}_k$를 최적화하여, 다른 단계 step에 대해 식 (1)을 합산

- 각 오디오 시퀀스에서 추출된 것을 uniform 하게 선택하여, 10개의 Negative sample을 샘플링 후 예상치 추정

- 즉, proposal 분포인 $p_n(z)=\frac{1}{T}$가 됨 ($T$는 오디오 시퀀스 길이, $\lambda$를 Negative로 설정)

- 기법은 CPC와 같음

 

3) Fine-tuning

- 훈련 후, AM에 log-mel spectrogram 대신 context 네트워크로부터 생성된 representation인 $c_i$를 사용

 

Experiments

1) Phoneme recognition on TIMIT
- WSJ92 81시간, LibriSpeech clean 80시간, LibriSpeech 960시간 모두 pre-training (시간 별 비교)

 

2) 기준 AM
- Log-mel spectrogram 25ms window, 10ms overlap

- Wav2letter ++ toolkit [3] --> AM 교육 및 평가를 위해 사용
- TIMIT 평가를 위해, character-based wav2letter++ setup
- 7 consecutive blocks of CNN (kernel size 5 with 1,000 channels)
- PReLU 비선형 및 0.7 dropout rate 사용
- 최종 representation: 39-dimensional phoneme probability, 표준 영어 알파벳, 아포스트로피 및 마침표, 두 개의 반복문자 (ann -> an1) 및 단어 경계로 사용되는 침묵 토큰등을 포함하여 31개의 자소에 대한 확률 예측

 

3) Metric
- WER (world error rate), LER (letter error rate)

 

4) 오디오 시퀀스 처리
- 오디오 시퀀스는 길이별로 그룹화 되며, 각 프레임은 최대 150k frame 크기 (150,000 == 10초 이내)
- 최대 150k 프레임 크기 또는 배치에서 가장 짧은 시퀀스의 길이 중 더 작은 길이로 cut
- 오디오 시퀀스의 시작 또는 끝에서 음성 신호를 제거함
- 매 epoch 마다 다시 샘플링함
- 즉, 증강 기법 중 하나로 볼 수 있으며, 훈련 데이터의 평균 25%를 제거함

 

5) Pre-training 학습 관련

- SGD with learning rate 5.6 + gradient clipping

- 1,000 epochs with batch size of 64 audio sequences

- V100 GPU x 8EA

- 4-gram LM로 체크 포인트 평가 후 조기 종료 사용

 

6) Downstream task (TIMIT)

- Train on si284, validate on nov93dev and test on nov92

- All training samples time: around three hours

- Learning rate 0.12, momentum 0.9

- Training 1,000 epochs with batch size of 16 audio sequences

 

7) Decoding 기법

- AM 방출을 디코딩하기 위해, WSJ LM 전용 데이터에 대해서만 학습 된 별도의 LM + lexicon 사용
- 4-gram KenLM LM, word-based CNN LM, character-based CNN LM 사용
- 아래의 식을 최대화하기 위해 Beam search decoder를 사용하여 context 네트워크 𝑐 또는 log-mel filterbank의 출력에서 단어 시퀀스 𝑦를 디코딩 함

 

$max_yf_{AM}(y|c) + \alpha + $log$p_{LM}(y) + \beta|y| - \gamma\Sigma_{i=1}^T[\pi_i='|'] $


- $f_{AM}(y|C)$는 AM, $p_{LM}$은 LM, $\pi=\pi_1,...,\pi_L$은 $y$의 문자

- Hyperparameter인 $\alpha, \beta, \gamma$는 AM, 단어 패널티 및 silence 패널티에 대한 가중치 
- WSJ를 디코딩하기 위해 random search를 사용하여 hyperparameter들을 조정하고, optimized 된 이들의 설정으로 AM 방출
- 단어 기반 LM에 대해 beam size 4,000 및 beam score threshold 250을 사용
- 문자 기반 LM에 대해 beam size 1,500 및 beam score threshold 40을 사용

 

Results

1) Pre-training for the WSJ benchmark

wav2vec results, comparison with the other papers

- WSJ의 오디오 데이터 (레이블 X), clean LibriSpeech (80h), 960 LibriSpeech을 이용한 pre-train
- Log-mel filterbanks 대신 context 네트워크 출력 $c$를 AM에 제공
- 데이터를 더 많이 사용하여 pre-train할 수록 WSJ 벤치마크에서 더 나은 정확도로 이어짐
- Pre-train된 representation은 log-mel filterbanks에 대해 훈련된 character-based 기준에 비해 향상됨
- 당시, SOTA였던 character-based의 Deep Speech2 보다 향상: [4](그림 내 [35])와 비교할 때, 음소 기반 모델만큼 성능이 뛰어남

 

2) Pre-training for the WSJ benchmark
Pre-trained representation의 영향

effective of amount of dataset that used in pre-training

- 약 8시간의 label이 있는 데이터만 사용하여 scratch-training할 경우 nov92에서 36%의 WER 획득
- WSJ의 오디오 데이터에 대한 pre-training은 훨씬 더 큰 LibriSpeech에 비해 성능이 나쁨
- 즉, 더 많은 데이터에 대한 사전 훈련이 좋은 성능을 내는 것을 확인
- 데이터가 증가될수록 성능이 좋아지지만, unlabeled의 LibriSpeech로 pre-training되어 fine-tuning한 모델보다 좋지 못함

3) Pre-training for TIMIT

Results

results of TIMIT downstream task

- TIMIT task에서는 dropout rate가 높은 7-layer wav2letter ++ 모델 사용

- 제안한 unlabeled data로 부터 representation 학습하여 fine-tuning한 모델이 PER에서 가장 좋은 성능을 얻었음

 

Ablation

1) LibriSpeech80시간 pre-training에 대한 분석

effective of number of negative samples

- Table 3Negative 샘플의 수가 늘어날 수록 도움이 되지만, 최대 10개가 한계

- 훈련 시간이 증가될수록 성능이 정체됨

- Negative 샘플의 수가 증가함에 따라 Positive 샘플의 훈련 신호가 감소하기 때문임

 

2) 오디오 시퀀스 cutting을 통한 데이터 증강 효과 분석

analysis of crop sizes

- 배치를 생성할 때 사전 정의된 최대 길이로 시퀀스 cutting
- 150k frame의 자르기 크기가 최상의 성능임을 확인
- 최대 길이를 제한하지 않으면 평균 시퀀스 길이가 약 207k이 되어 정확도가 가장 낮음

 

3) 미래 예측 step
- $K$=12이상일 경우 성능 향상 X
- 훈련 시간만 늘어나고, 성능 개선 없음

 

 

Summary & Major take away

- Fully CNN을 사용하여 ASR에 unsupervised pre-training을 처음 적용하였음
- 이 방식은 fine-tuning시 labeled된 데이터를 적게 사용함에도 불구하고 당시 SOTA였던 character-based ASR 모델인 Deep Speech 2를 능가하였음
- Pre-training을 위한 데이터가 많을수록 성능이 향상 됨

 

- 성능 차이가 CPC에 비해 너무 크게 나기 때문에, 조금 못 미더운 부분이 있다고 개인적으로 생각함

 

 

[1] Schneider, Steffen, et al. "wav2vec: Unsupervised Pre-Training for Speech Recognition." Proc. Interspeech 2019 (2019): 3465-3469.

[2] Wu, Yuxin, and Kaiming He. "Group normalization." Proceedings of the European conference on computer vision (ECCV). 2018.

[3] Collobert, Ronan, Christian Puhrsch, and Gabriel Synnaeve. "Wav2letter: an end-to-end convnet-based speech recognition system." arXiv preprint arXiv:1609.03193 (2016).

[4] Hadian, Hossein, et al. "End-to-end Speech Recognition Using Lattice-free MMI." Interspeech. 2018.

 

728x90

'Paper Review > Unsupervised, Self & Semi-supervised' 카테고리의 다른 글

wav2vec 2.0 리뷰  (0) 2021.04.12
vq-wav2vec 리뷰  (2) 2021.04.11
Gumbel-Softmax 리뷰  (4) 2021.04.11
VQ-VAE 리뷰  (0) 2021.04.11
Contrastive Predictive Coding (CPC) 리뷰  (1) 2021.04.11

+ Recent posts