본문 바로가기
딥러닝 개념, 논문

Wav2Vec2.0 논문 궁금한 부분 해결 정리 - Product quantization

by demi-an 2025. 1. 20.

wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations ( https://arxiv.org/abs/2006.11477) 논문을 공부하면서 궁금했던 부분을 해결한 내용을 정리했습니다. 잘못된 부분이 있다면 댓글 의견 환영합니다.

 

Product Quantization

고차원 벡터를 더 작은 하위 벡터 (Sub-vector) 나누고, 각각을 별도의 코드북(codebook)으로 양자화함으로써 메모리 및 계산 효율성을 향상시키는 기법. wav2vec 2.0에서는 Feature Encoder의 연속적인 출력($ z $)을 이산적인(discrete) 벡터로 변환하기 위해 사용함

 

Product Quantization 수행 과정

1. 하위 공간 분할 (Sub-space deconposition)

  • 원래의 벡터 $ z ∈ R^d $ 를 $ G $ 개의 하위 벡터로 균등 분할
  • 예를 들어, $ d = 256 $ 이고 $ G = 4 $ 이면, 각 하위 벡터는 64 차원이 된다.

 

2. 코드북 생성 (Codebook learning)

  • 각 하위 벡터 집합에 대해 K-means 클러스터링을 적용하여 $ V $ 개의 클러스터 중심 찾기
  • 코드북 $ C_i $ ​의 크기는 $ V × (d/G) $ 이며, 각 하위 벡터에 대한 대표적인 값들을 포함

$ C_i​ = $ {$ c_{i1}​,  c_{i2}​,  …,  c_{iV}$},     $ c_{ij} ​∈ R^{d/G} $

 

 

3. 양자화 (Quantization)

  • 입력 벡터 $ z $의 각 부분 벡터 $ z_i $ ​를 가장 가까운 코드북 벡터로 변환(클러스터 중심과의 거리 최소화).
  • 최근접 탐색을 수행하여 아래와 같은 방식으로 양자화된 표현을 얻는다.

따라서 전체 벡터 $ z $ 는 아래와 같이 양자화된다.

4. 최종 표현 결합 (Concatenation)

  • 선택된 코드북 벡터들을 연결하여 최종 이산적인 표현을 구성

Example

  • $ d = 512 $ (feature vector 차원)
  • $ G = 2 $ (2개의 codebook 사용)
  • 각 codebook에서 $ V = 320 $ 개의 벡터 사용 (dimension은 각각 $ 512 / 2 = 256 $)
  • 이 경우, $ 320 * 320 = 102,400 $ 개의 가능한 조합으로 풍부한 표현 학습 가능

Product Quantization 장점

  1. 메모리 효율성
    전체 벡터를 저장하는 대신 코드북 인덱스만 저장함으로써 메모리 사용량을 줄일 수 있음
  2. 빠른 검색
    입력 벡터를 고유한 코드북 벡터로 매핑하여 검색 속도 향상
  3. 표현력 증가
    여러 코드북을 결합하여 더 다양한 표현 학습이 가능

Product Quantization 단점

  1. 정보 손실
    원래 연속적인 벡터를 이산적인 코드북 벡터로 매핑하는 과정에서 정보 손실이 발생할 수 있음
  2. 클러스터링 품질에 의존
    코드북 생성 시 K-means와 같은 클러스터링 기법의 품질에 따라 양자화 성능이 달라질 수 있음