AI VIDEO BRIEFING
잔차 벡터 양자화(RVQ)란? 음성·오디오 임베딩을 정수 몇 개로 압축하는 원리와 EnCodec
128차원 벡터를 정수 두 개로 줄이고도 원본을 거의 복원하는 잔차 벡터 양자화. 코드북 양자화의 기본 개념부터 EnCodec의 비트레이트 계산, 6킬로비트라는 품질 기준, 코드북 학습 방법까지 한 번에 정리했다.

핵심 메시지
쉽게 이해하기
발표자는 128개의 숫자로 된 배열을 정수 두 개로 압축하고도 거의 완벽하게 되살릴 수 있다는 이야기로 시작한다. 이 기법이 잔차 벡터 양자화이고, 영상은 음성과 오디오 임베딩에 적용하는 경우를 다룬다. 오디오 임베딩 압축에 이 방식을 처음 제안한 것은 2021년 SoundStream 논문이지만 모델 가중치와 코드가 공개되지 않았고, 이듬해 나온 EnCodec이 구조를 개선하면서 가중치와 코드를 함께 공개해 실제로 만져 볼 수 있는 모델이 되었다.
EnCodec은 인코더와 디코더로 이뤄져 있다. 몇 밀리초짜리 오디오 조각이 인코더를 지나면 128차원 벡터가 되고, 이 벡터가 디코더를 통과해 소리가 복원된다. 초당 75개씩 만들어지는 이 벡터들이 소리를 표현하는 학습된 임베딩이며, 그 사이에 놓인 양자화 모듈이 이번 영상의 주인공이다.
먼저 일반적인 양자화와 구분할 필요가 있다. 모델 가중치나 벡터를 32비트 실수 대신 8비트 정수로 저장하면 정확도를 조금 잃는 대신 용량과 추론 비용이 4분의 1로 줄고, 노트북에서 큰 언어 모델을 돌릴 때 흔히 쓰는 방법이다. 그런데 값 100개짜리 벡터를 이렇게 줄여도 정수 100개가 남을 뿐, 벡터 하나를 숫자 하나로 만들겠다는 목표에는 닿지 못한다. 그래서 필요한 것이 코드북 양자화다. 임베딩 공간 전체를 덮는 대표 벡터들을 미리 학습해 두고, 어떤 벡터가 들어오면 가장 가까운 대표 벡터의 번호만 남기는 방식이다. 대표 벡터가 8개라면 번호 하나에 3비트면 된다.
다만 번호 하나로 뭉뚱그리면 오차가 크다. 잔차 벡터 양자화의 발상은 원래 벡터와 선택된 대표 벡터의 차이, 즉 잔차 역시 하나의 벡터라는 데서 출발한다. 이 잔차에 별도의 코드북을 하나 더 학습해 다시 가장 가까운 번호를 매기고, 남은 오차에 또 같은 과정을 되풀이한다. 첫 번째 코드북에서 2번, 두 번째에서 7번이 선택됐다면 원래 벡터는 숫자 두 개로 표현된다. 앞쪽 반복이 가장 중요한 정보를 담고 뒤로 갈수록 정밀해지므로, 반복 횟수가 곧 크기와 품질 사이의 조절 손잡이가 된다.
숫자로 따져 보면 이렇다. EnCodec은 초당 75프레임을 만들고 코드북 항목은 1024개라 번호 하나에 10비트가 든다. 가장 공격적으로 반복 2회만 적용하면 75×2×10으로 초당 1500비트, 곧 1.5킬로비트가 나온다. 반복 횟수는 2·4·8·16·32까지 쓸 수 있고 각각 1.5·3·6·12·24킬로비트에 해당하는데, 발표자가 직접 녹음한 음성을 들어 보면 1.5나 3킬로비트에서는 잡음이 뚜렷하고 6킬로비트부터는 원본 MP3와 구별하기 어렵다. MP3가 보통 96킬로비트 아래로는 잘 내려가지 않는다는 점을 생각하면 10~15배 차이다.
주요 인사이트
- 이 기법의 진짜 의미는 압축률 자체보다 소리를 정수 몇 개의 나열로 바꿔 놓는다는 데 있다. 언어 모델이 글자를 토큰으로 다루듯 음성을 다룰 수 있게 되는 출발점이다.
- 반복 횟수라는 손잡이 하나로 용량과 품질을 조절할 수 있다는 점이 실용적이다. 같은 모델로 1.5킬로비트부터 24킬로비트까지 대응하므로 통신 환경에 맞춰 골라 쓸 수 있다.
- 품질 곡선이 6킬로비트 부근에서 꺾인다는 관찰은 현장에서 곧바로 쓰이는 기준이다. 무작정 반복을 줄이기보다 이 지점을 기본값으로 두는 편이 안전하다.
- 코드북을 k-평균 군집화로 한 번 정해 두는 것보다, 모델과 코드북을 함께 학습해 서로 다가가게 하는 방식이 더 낫다는 점이 흥미롭다. 인코더에는 대표 벡터 근처의 값을 내도록 손실을 주고, 코드북은 지수 이동 평균으로 조금씩 끌어당긴다.
- 쓰이지 않는 대표 벡터를 그냥 두지 않고 실제 데이터가 몰린 곳으로 옮기는 무작위 재시작은, 낭비되는 표현 용량을 회수하는 단순하고 효과적인 장치다.
자주 묻는 질문
일반적인 양자화와 잔차 벡터 양자화는 무엇이 다른가?
일반 양자화는 각 숫자의 표현 비트 수를 줄이는 것이라 값이 100개면 여전히 100개가 남는다. 잔차 벡터 양자화는 벡터 전체를 코드북 번호 몇 개로 바꾸므로 값의 개수 자체가 줄어든다.
반복 횟수는 어떻게 정하는가?
반복이 많을수록 원본에 가까워지고 용량은 커진다. EnCodec에서는 2·4·8·16·32회를 쓸 수 있고 각각 초당 1.5·3·6·12·24킬로비트에 해당하며, 발표자는 6킬로비트 부근부터 원본과 구분하기 어렵다고 평가한다.
코드북의 대표 벡터는 어떻게 학습하는가?
인코더가 이미 학습돼 있다면 k-평균 군집화로 정할 수 있고 EnCodec도 이를 첫 단계로 쓴다. 이후에는 코드북을 지수 이동 평균으로 입력 벡터 쪽으로 조금씩 옮기고, 인코더에는 대표 벡터에 가까운 값을 내도록 하는 손실을 주며, 한 번도 쓰이지 않는 대표 벡터는 데이터가 몰린 위치로 옮긴다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗