AI/딥러닝
Vector Quantization
Yonghi
2023. 5. 1. 14:23
Quantization
-> 연속된 값을 유한개의 레벨(클레스)로 구분해서 연속값에 특정값을 부여하는것
위 그래프는 연속값을 8개의 이산값(점선)으로 나누어서 quantization한 것이다.
16, 64,,,, 1024로 분류를 늘리면 양자화된 그래프(빨간선)은 기존 연속값과 비슷해질것이다. 반면 낮으면 낮을수록 기존 연속된 그래프와 많은 차이가 나고 정보의 손실이 커진다.
Vector Quantization
N개의 특징 벡터 집합을 k개의 특징 벡터 집합으로 mapping하는것
학습 가능한 Embedding matrix를 codebook으로 사용하여
k-means 클러스터링, Gumbel softmax
codebook - 각각의 분류 class(codeword)를 모아둔 집합
codeword - codebook 안에 있는 각각의 분류 class
clustering algorithm - codebook 만드는 알고리즘 -> k-means 클러스터링, Gumbel softmax 사용
용어가 어려워서 햇갈리지만 간단히 과정을 살펴보면
clustering algorithm을 사용해서 codebook을 만듦 -> 이산화시키고싶은 벡터를 codebook에 있는 codeword들과 계산 -> 가장 유사한 codeword의 인덱스로 선택됨
장점
- 정확도 높고 간단
단점
- class 수 한정
- codebook 사이즈 고정 -> flexibility 부족
- 단순히 거리기반으로 분류했기 때문에 데이터의 특성을 고려하지 못함
참고
https://zerojsh00.github.io/posts/Vector-Quantization/
https://hyunlee103.tistory.com/30