Spoken Language Processing

wav2vec 2.0 기초개념 정리

햇농nongnong 2023. 2. 16. 16:42

 

 

self-supervised learning (자기지도학습) 


- 라벨이 없는 데이터를 이용하여 자기 자신의 특성(representation)을 배우는 학습 방법

- 라벨링된 데이터가 부족한 분야에서는 딥러닝이 큰 성능 보이지 못하고 있는데, self-supervised learning을 적용한 pre-trained 모델이 있다면 fine tuning 을 이용해 데이터가 적은 분야에서도 성능향상을 가져올 수 있음. 

- 전통적인 음성인식 모델들은 전사된 annotated speech audio 에 의해 주로 훈련됨 - 좋은 시스템은 많은 양의 annotated 데이터를 필요로하는데, 이 것은 몇몇 언어에서만 가능함 - 자기지도학습unannotated data 을 활용하여 좋은 시스템 만드는 방법을 제공

 

wav2vec 2.0


2020년에 Facebook 에서 Wav2vec 2.0 발표!!

Facebook 이 개발한 wav2vec 2.053000 시간의 라벨링 없는 데이터representation training 을 한 후, 10분라벨링 된 데이터음성인식기를 만들 수 있다.

- 라벨링 되어있지 않은 대량의 데이터로 representation 학습 후, 소량의 라벨링된 데이터로 fine tuning 을 하는 과정

= 즉, 음성 오디오만으로 강력한 표현(mutual information)을 pre-training 한 후, 음성인식 관련 down-stream task에 fine-tuning 

- wav2vec 2.0기존 wav2vec 에 비해 트랜스포머를 사용하여 성능을 더 높였다.

- 전사된 음성 10분(평균 12.5초 * 40문장)의 라벨링 된 데이터로 fine tuning 했을 때, LibriSpeech에 대해 WER 깨끗한 음성 5.2% WER / 시끄러운 음성 8.6% WER --> 40문장 읽으면 음성인식기가 만들어지는 수준

- 라벨링이 음성인식기를 만드는데 장애가 되는 점을 생각하면, 의미있는 연구

XLSR : wav2vec 2.0 과 함께 여러 언어에 공통되는 음성 단위를 학습할 수 있는 교차 언어 접근 방식도 개발됨
--> 레이블이 없는 소량의 음성만 있을 때, XLSR 을 사용 - 데이터가 거의 없는 언어는 더 많은 데이터를 가지고 있는 다른 언어로부터 도움받을 수 있음

 

 

 

wav2vec 2.0 핵심 3가지


1) contrastive task : latent speech representations 과 context representations 를 비슷하게 함으로써 unlabeled data 로 학습하는 방법

2) bi-directional contextualized representation : 현재 위치를 masking 하고 주변의 데이터로부터 masking 된 위치를 유추할 수 있는 트랜스포머 구조

3) vector quantized targets : gumbel softmax 방법으로 latent speech representations 에서 영향을 많이 미치는 벡터를 추출하는 방법

 


 

wav2vec 2.0 이 아닌 다른 self-supervised approaches for speech

  • 오디오 신호를 reconstruct 하려는 접근법
    - 모델이 음성의 모든 측면을 캡쳐해야한다는 단점 (녹음 환경, noise, 화자 정보)
  • 여러 옵션들을 비교하면서 화자가 다음에 무슨 말을 했는지 예측하려는 접근법

반면에, wav2vec 2.0 은?

  • Wav2vec 2.0 learns a set of speech units, which are shorter than phonemes, to describe the speech audio sequence.
    - 음성 오디오 시퀀스를 설명하기 위해 음소보다 짧은 음성 단위 세트 (a set of speech units) 학습
  • 이 짧은 음성 단위 세트는 유한하기 때문에 background noise 와 같은 모든 변동을 나타낼 수는 없음
  • Instead, the units encourage the model to focus on the most important factors to represent the speech audio.
    - 대신, 이 speech units 은 모델이 음성 오디오를 표현하기 위한 가장 중요한 요소에 초점을 맞춤
  • Wav2vec 2.0의 이러한 접근법이 위의 두 접근법보다 LibriSpeech 데이터셋에 대해 더 좋은 성능.

 


 

 

음성데이터 self-training 적용방법


1. Feature Encoder  < f : X

raw waveform(음성 데이터) - multilayer CNN 인코더에 넣어 - 25ms 길이의 represent vector 로 변환

  • 매 T 시점마다 latent speech representations z1, ... , zT 출력
  • 변환된 represent vector = latent speech representations = 모델이 학습하고자 하는 target
  • 이 representations z (z1, ... , zT ) 는 두 모듈 (quantizer, transformer) 에 공급됨

 

 

 

2.  Quantization Module < Z Q >

 

wav2vec 2.0의 quantization module : G개의 codebook, V개의 code words

 

latent speech representation z 가 입력되는 모듈 중 하나인 quantization 모듈

  • CNN 인코더를 통과한 output feature 인 zt  양자화 모듈(quantizer) Z  Q 를 사용하여 qt로 이산화
  • quantizer 는 learned units 인벤토리 (codebook) 에서 latent audio representation (zt) 을 위한 speech unit (code words)을 선택
  • latent audio representations 의 절반은 트랜스포머에 입력되기 전 마스킹

 


  • codebook 행렬이 G개 --> G x V 크기의 multiple codebooks 
  • 하나의 codebookV개의 code word 벡터 시퀀스 한 행에 대응됨.

  • 즉, 위 빨간 박스 codebook e 가 G 개 존재하여 G x V 크기의 multiple codebooks 을 이룸.
  • multiple codebooks 행렬모두 학습가능한 파라미터로 구현
    (내 생각 : 따라서 이 과정이 features 들을 학습하는 과정이고 여기서 계속 unsupervised learning 으로 가장 좋은 features 들을 뽑고 찾는 것인데, 이 과정들을 들여다보고 싶다.)
  • codebook 을 embedding matrix로, code word 를 embedding vector 로 생각하면 됨.
    (wav2vec 2.0 에서는 G = 2, V = 320 사용)
  • codeword = 일종의 음소에 대한 representation 이라고 생각하면 됨.
  • 아무리 언어가 다 달라도, 인간이 발음할 수 있는 음소들은 공통적인 부분이 있고 유한함. 이것을 마치 embedding vector 로 표현한 것임.
  • codeword = 인간이 발음할 수 있는 phoneme 에 대한 representation =  embedding vector 
  • 그리고 위의 codeword 를 모아 만든 행렬이 codebook.
  • 즉, 하나의 codebook e 안에서 V 개의 음소(codeword) 중 현 시점에서 벡터 zt 와 가장 적절하게 대응될 음소 벡터 codeword 를 이산화 과정을 통해 고른 것이 qt.

 

Quantization 모듈 내부 작동 과정

  • 인코딩된 zt가 레이어를 통과하면서 (codebook 내부의) logit   으로 변환 
    * G개의 multiple codebook 사용
  • gumbel softmax / argmax 를 거쳐 one-hot encoding 되는 이산화 과정을 거침

     * g번째 codebook 에서 v번째 code word 벡터가 선택될 확률을 gumbel softmax 로 표현한다면,

            -  

 

  • 위의 원핫인코딩 결과를 가지고, 각 codebook 내에서 하나의 code word 벡터를 골라냄
    (마치 NLP - embedding matrix에서 특정 단어에 해당되는 embedding 벡터 뽑아내듯)
  • code word 벡터G개의 codebook 행렬에서 각각 하나씩 추출됨.
  • 따라서 총 G개의 e1, e2, ..., eG 벡터 추출.

  • G 개의 벡터 모두를 concatenate 하여 et 를 만듦.

  • linear transformation  

 

 


(참고)

  • quantization : 양자화
  • 연속된 변화량(아날로그신호)을 유한개의 레벨(불연속적)로 구분하고, 각 레벨에 대해 특정 값을 부여하는 것.
  • 따라서 vector quantization : 연속적으로 샘플링된 진폭들을 그룹핑하여 대표 값 몇개로 양자화
  • N 개의 특징 벡터 집합 x 개를 K 개의 특징 벡터 집합 y 로 mapping 하는 것
  • ex) 양자화 연산자 f(*) --> y = f(x) 와 같이 mapping 하면,
          x = {유재석, 이정재, 강호동, 싸이, 아이유}
          y = {가수, 영화배우, 개그맨}  일 때,
    가수 = {싸이, 아이유}. 영화배우 = {이정재}, 개그맨 = {유재석, 강호동} 으로 mapping됨.
    y의 각 원소(feature)들은 codeword 또는 cluster 이라고 하고, y 를 codebook 이라고 함.
  • 즉, 음성인식에서 wav2vec 2.0 에서 행해지는 vector quantization 이란
  • 학습가능한 embedding matrix 를 codebook 으로 사용하여, 특징벡터들을 codebook 내의 codeword features 들로 mapping 시키는 과정이다. 
  • encoder 를 거친 특징 벡터 z 를 Gumbel softmax 또는 K-means 클러스터링으로 codeword 에 mapping 시키는 과정.

(내생각 : 여기서 codeword 가 무엇인지를 알아내면, downstream task 에서 유의미한 feature 가 무엇인지 알 수 있지 않을까.. 이 과정을 시각화해보고 싶네.. 그리고 embedding matrix 를 codebook 으로 사용하는데, embedding matrix 가 무엇을 나타내지??)

 


 

 

 

3. Transformer Module < Z

- 트랜스포머는 전체 오디오 시퀀스의 정보를 추가함

- representations 인 z를 - masking 트랜스포머에 넣으면 - 주변 정보 이용하여 복원된 context representations 생성됨

--> context network 트랜스포머 이용 - 전체 시퀀스로부터 c1, ... , cT 정보를 capturing

- 트랜스포머의 출력은 contrastive task 를 푸는데 사용 - 이를 위해 모델은 마스크된 위치에 대한 correct quantized speech units 를 식별해야 함

--> 목표 : context representations 와 해당 위치의 latent speech representations유사하도록 학습

= contrastive loss

contrastive loss 를 최소화하면 음성 데이터 안에 공통적으로 가지고 있는 mutual information 최대화 가능

이런식으로 학습된 wav2vec 2.0 을 활용하면 음성에서 좋은 representation vector 추출 가능

--> 이를 fine-tuning 하면 적은 데이터만으로도 좋은 성능 보장

 

+ masking

전체 오디오 구간 중 6.5 를 랜덤하게 고르고 - 선택된 zt 에서 z(t+10) 만큼 마스킹 - 전체 T 의 49% 가 평균 span length 인 299ms 로 마스킹됨

 

 

 

** 모델 훈련

오디오의 마스킹된 부분에 대한 올바른 speech unit 를 예측 + 그 speech unit 이 무엇이어야 하는지 학습하도록

--> 트랜스포머의 bidirectional encoder representations 과 유사하게, wav2vec 2.0 도 오디오의 마스킹된 부분에 대한 speech units 을 예측하여 훈련됨.

--> 주요 차이점 : 음성 오디오는 단어나 다른 단위로의 명확한 분할 없이 녹음의 많은 측면을 포착하는 연속 신호

--> 이 연속 신호 처리 위해 25ms 길이의 basic units 을 학습하여 높은 수준의 상황별 표현 학습할 수 있도록 함

--> 이 basic units 들은 다른 음성 오디오 녹음들을 describe 하고 + wav2vec 을 더 robust 하게 함

--> 이를 통해 레이블된 훈련데이터를 100배 적게 사용하더라도 최고의 semi-supervised 방법을 능가할 수 있는 음성인식시스템 wav2vec 2.0 구축

 

 

 

 

Reference