Ultralytics YOLO27: 대기자 명단에 등록하세요.
YOLO 라이선스 받기
Ultralytics 용어집으로 돌아가기

Vector Quantization

벡터 양자화는 각 벡터를 가장 가까운 코드북 항목의 인덱스로 대체합니다. k-means 코드북, 곱 양자화, VQ-VAE 토큰을 다룹니다.

벡터 양자화(VQ)는 데이터셋의 각 벡터를 대표 벡터의 소규모 집합인 코드북에서 가장 가까운 항목의 인덱스로 대체하는 압축 기법입니다. 인코딩 시에는 인덱스만 저장하고, 디코딩 시에는 인덱스를 조회하며, 재구성 오차는 원본 벡터와 코드워드 사이의 거리입니다. K개 항목으로 구성된 코드북은 벡터의 차원 수와 관계없이 벡터당 log₂(K)비트를 사용하므로 256개 항목의 코드북은 모든 벡터를 1바이트로 저장합니다. VQ는 신호 처리에서 비롯되었습니다. 1957년 Bell Labs에서 Stuart Lloyd가 스칼라 양자화기를 설계하기 위해 만든 알고리즘은 1982년에 발표되었으며, 오늘날 일반적으로 k-means라고 불립니다. Yoseph Linde, Andrés Buzo, Robert Gray는 1980년에 이 알고리즘을 벡터로 확장했습니다. 딥러닝에서 VQ는 이미지, 오디오, 비디오를 토큰으로 변환하여 생성형 AI에 사용하는 표준 방식이 되었습니다.

벡터 양자화의 작동 방식#

코드북은 보통 k-means 클러스터링으로 학습합니다. 모든 학습 벡터를 가장 가까운 코드워드에 할당하고, 각 코드워드를 할당된 벡터의 평균으로 옮기는 과정을 반복하면 평균 왜곡은 증가하지 않습니다. 색상 양자화는 사진의 픽셀을 이용해 전체 과정을 보여줍니다. SciPy의 scipy.cluster.vq 모듈을 사용합니다:

import numpy as np
from scipy.cluster.vq import kmeans2, vq
from sklearn.datasets import load_sample_image

image = load_sample_image("china.jpg")  # 427 x 640 RGB photo bundled with scikit-learn
pixels = image.reshape(-1, 3).astype(np.float64)  # one 3-D color vector per pixel

# Learn a 16-entry codebook with k-means (Lloyd's algorithm) on a sample of pixels
rng = np.random.default_rng(0)
codebook, _ = kmeans2(rng.choice(pixels, 5000), 16, minit="++", seed=0)

# Encode: replace each pixel with the index of its nearest codeword (4 bits instead of 24)
indices, _ = vq(pixels, codebook)
# Decode: look each index up in the codebook
reconstruction = codebook[indices]

rmse = np.sqrt(((pixels - reconstruction) ** 2).mean())
print(f"{len(pixels):,} pixels, {len(codebook)} codewords, 24 -> 4 bits per pixel")
print(f"Reconstruction RMSE: {rmse:.1f} on the 0-255 scale")

픽셀 273,280개를 16가지 색상의 4비트 인덱스로 저장하므로, 24비트 RGB보다 색상 데이터가 6배 적게 필요하며 255 기준 제곱 평균 제곱근 오차는 11.3 밝기 단계입니다.

스칼라 양자화는 1차원 사례이며, 모델 양자화는 이를 신경망에 적용합니다. Ultralytics YOLO26은 내보내기 시 이를 사용합니다. quantize=8은 각 가중치와 활성화를 256개 정수 수준 중 하나로 개별 반올림하고, data의 이미지에서 한 차례 보정 과정을 거쳐 활성화 범위를 관측합니다. 전체 벡터를 함께 양자화하면 차원 간 상관관계를 활용할 수 있습니다. 같은 비트 전송률에서 최적 벡터 양자화기의 왜곡은 각 값을 개별적으로 처리하는 최적 스칼라 양자화기보다 높지 않습니다.

곱 양자화와 잔차 양자화#

비트 예산이 증가하면 단일 코드북의 크기는 기하급수적으로 커지므로, 64비트에는 2⁶⁴개의 코드워드가 필요합니다. Hervé Jégou, Matthijs Douze, Cordelia Schmid가 2011년에 제안한 곱 양자화는 각 벡터를 m개의 하위 벡터로 나눈 다음, 각 하위 벡터를 자체적인 256개 항목 코드북으로 양자화합니다. m = 8이면 128차원 float32 임베딩의 크기가 512바이트에서 8바이트로 줄어들며, 쿼리와의 거리는 소규모 조회 테이블에서 계산됩니다. Meta의 FAISS 라이브러리는 이를 역파일 인덱스와 결합합니다. 역파일 인덱스는 쿼리마다 탐색할 클러스터 수를 제한하는 거친 k-means 양자화기로, 10억 규모의 벡터 검색을 지원합니다.

잔차 양자화는 코드북을 차례로 적용합니다. 두 번째 코드북은 첫 번째 코드북이 남긴 오차를 양자화하고, 세 번째 코드북은 두 번째 코드북이 남긴 오차를 양자화하는 식으로 진행합니다. Google의 SoundStream(2021)과 Meta의 EnCodec(2022) 신경망 오디오 코덱은 이를 사용해 음성과 음악을 초당 몇 킬로비트로 압축하며, 시각적 자기회귀 모델링(VAR)은 이미지 해상도 전반에 걸쳐 이를 적용합니다.

VQ-VAE와 이미지 토큰#

DeepMind의 Aäron van den Oord, Oriol Vinyals, Koray Kavukcuoglu는 2017년 신경망 이산 표현 학습에서 VQ-VAE를 소개했습니다. 오토인코더의 인코더 출력은 각 공간 위치에서 가장 가까운 코드워드로 대체되며, 디코더는 코드워드로부터 입력을 복원합니다. 최근접 이웃 조회에는 그래디언트가 없으므로 역전파 중 직통 추정기가 이를 건너뛰어 디코더의 그래디언트를 복사합니다. PyTorch에서는 z_q = z + (z_q - z).detach()으로 작성합니다. 두 가지 추가 손실 항은 코드워드를 인코더 출력에 가깝게 이동시키고 인코더가 선택한 코드워드에 맞춰 학습되도록 합니다. 논문에서는 두 번째 항의 가중치를 0.25로 설정했습니다.

결과로 생성된 토큰 그리드는 보통 트랜스포머인 두 번째 모델에 입력되어 토큰 생성을 학습합니다. VQGAN(2021)은 더 선명한 토큰을 위해 적대적 손실과 지각 손실을 추가했으며, 여러 텍스트-이미지 모델의 토크나이저가 되었습니다. 흔히 발생하는 문제는 코드북 붕괴로, 대부분의 코드워드가 선택되지 않아 실질적인 어휘가 줄어듭니다. k-means 초기화, 이동 평균 코드북 업데이트, 사용되지 않는 코드 재설정으로 이를 방지할 수 있습니다. Google의 유한 스칼라 양자화(FSQ, 2023)는 몇 개의 잠재 차원을 소수의 고정된 수준으로 반올림해 이 문제를 피합니다. 따라서 암시적으로 정의된 코드북의 모든 코드를 사용할 수 있습니다.

  • 벡터 데이터베이스: 임베딩을 저장하고 인덱싱하며, 메모리에 저장하기 위해 내부적으로 곱 양자화를 적용하는 경우가 많습니다.
  • 차원 축소: PCA와 같이 벡터를 더 적은 수의 연속 차원으로 매핑합니다. VQ는 각 벡터를 하나의 이산 코드로 매핑합니다.
  • 토큰화: 텍스트를 고정된 어휘의 단위로 나눕니다. VQ는 이미지 패치와 오디오 프레임처럼 연속적인 신호에 대해 이에 해당하는 어휘를 구축합니다.

솔루션 살펴보기

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

Ultralytics YOLO가 선수 및 공 추적, 경기력 분석, 코칭 인사이트, 선수 재활을 통해 스포츠 비전을 구현하는 방법을 알아보세요.
자세히 알아보기
항공 이미지 컴퓨터 비전

항공 이미지 컴퓨터 비전

Ultralytics YOLO를 활용해 드론 및 항공 이미지를 농업, 양식업, 보전, 지리 공간 분석을 위한 실시간 인사이트로 전환하세요.
자세히 알아보기
항공우주 분야의 컴퓨터 비전

항공우주 분야의 컴퓨터 비전

Ultralytics YOLO를 활용해 항공기 검사, 활주로 FOD 감지, 공항 지상 운영, 복합재 결함 감지 등 항공우주 분야에 컴퓨터 비전을 적용하세요.
자세히 알아보기
보안 분야의 컴퓨터 비전

보안 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 모든 시설을 보호하세요. Vision AI는 경계 모니터링, 위협 감지, 번호판 인식, 작업장 안전을 지원합니다.
자세히 알아보기
로보틱스 분야의 컴퓨터 비전

로보틱스 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 더 스마트한 머신을 구현하세요. 로보틱스 분야의 Vision AI는 자율 주행, 인식, 객체 추적, 실시간 제어를 지원합니다.
자세히 알아보기
물류 분야의 컴퓨터 비전

물류 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 물류를 간소화하세요. 비전 AI는 화물 검사, 분류, 차량 추적, 실시간 창고 안전 모니터링을 지원합니다.
자세히 알아보기
리테일 분야의 컴퓨터 비전

리테일 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 리테일의 새로운 가능성을 열어 보세요. 비전 AI는 재고 추적, 선반 모니터링, 대기열 관리, 더욱 심층적인 고객 인사이트를 지원합니다.
자세히 알아보기
의료 분야의 컴퓨터 비전

의료 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 의료 솔루션을 구축하세요. 의료 분야의 비전 AI는 의료 영상 판독을 가속화하고, 진단을 개선하며, 환자 모니터링을 지원합니다.
자세히 알아보기
제조 분야의 컴퓨터 비전

제조 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 제조 공정을 최적화하세요. 비전 AI는 품질 관리, 결함 탐지, PPE 규정 준수, 조립 라인 자동화를 지원합니다.
자세히 알아보기
자동차 분야의 컴퓨터 비전

자동차 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 자동차 분야에 컴퓨터 비전을 적용하세요. 비전 AI는 도로 안전, 운전자 지원, 차량 자동화를 개선해 더 스마트한 도로를 구현합니다.
자세히 알아보기
농업 분야의 컴퓨터 비전

농업 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 스마트 농업에 비전 AI를 도입하세요. 작물 모니터링, 가축 추적, 정밀 농업을 지원하여 더 높은 수확량과 더 스마트한 농업을 실현합니다.
자세히 알아보기

함께 AI의 미래를 만들어 가세요!

머신러닝의 미래와 함께 여정을 시작하세요