AI VIDEO BRIEFING
QPrompt 논문 리뷰: 프롬프트 양자화로 CLIP 같은 비전-언어 모델의 일반화 성능을 끌어올리는 방법
CLIP 같은 비전-언어 모델의 프롬프트를 연속값 대신 이산 코드북으로 양자화하면 학습하지 않은 클래스에서 성능이 오른다. 양자화 오류를 일반화에 유리한 노이즈로 활용한 QPrompt 논문 리뷰를 정리했다.

핵심 메시지
쉽게 이해하기
CLIP처럼 이미지와 텍스트를 함께 학습한 비전-언어 모델은 분류뿐 아니라 세그멘테이션, 객체 위치 찾기, 시각 질의응답, 원샷 학습까지 폭넓게 처리한다. 문제는 이 모델을 특정 과제에 맞게 미세조정하는 단계다. 발표자는 CoOp처럼 텍스트 프롬프트를 학습시키는 방식이 학습 데이터에는 잘 맞지만, 처음 보는 클래스나 분포가 달라진 상황에서는 과적합과 망각으로 성능이 쉽게 무너진다고 지적했다.
QPrompt의 출발점은 조금 뜻밖의 실험이다. 학습 과정에 가우시안 노이즈를 0에서 0.1까지 넣어 보니, 이미 학습한 클래스에서는 노이즈가 적을수록 정확도가 높았지만 학습하지 않은 새 클래스에서는 정반대로 노이즈가 큰 쪽이 가장 좋은 성능을 냈다. 즉 적당한 크기의 오류가 특정 데이터에 대한 특화와 일반화 사이에서 균형을 잡아 준다는 뜻이다.
저자들은 이 노이즈를 인위적으로 넣는 대신 양자화 과정에서 생기는 오류로 대체했다. 양자화 오류를 최소화하는 데만 매달리던 기존 연구와 달리, 오히려 일반화를 방해하지 않는 수준의 오류를 남겨 두는 쪽을 택한 것이다. 프롬프트 가중치의 분포를 관찰해 보니 학습을 거듭해도 모양이 거의 변하지 않았고 양극단의 이상치도 없었기 때문에, 가중치를 묶어 k-means로 군집화하고 그 중심값을 코드북에 기록하는 방식이 잘 들어맞았다.
학습 시에는 정규화로 평균과 분산을 구한 뒤 k-means 양자화를 적용하고 다시 역정규화한다. 양자화된 값은 계단 모양이라 미분이 불가능하므로, 양자화 학습에서 흔히 쓰는 기법으로 그래디언트를 흘려보내 학습을 이어 간다. 저장 측면에서도 가중치를 16비트 그대로 두는 대신 낮은 비트 수로 표현하고 중심값만 따로 보관하면 되므로, 가중치 개수가 훨씬 많은 현실에서는 사실상 양자화한 만큼 공간이 줄어든다.
여기에 한 가지 장치가 더 붙는다. k-means는 계산 비용이 큰 데다 자주 다시 돌리면 노이즈가 지나치게 줄어 일반화에 오히려 손해다. 그래서 가중치 분포 사이의 KL 발산을 재고, 정해 둔 임계값을 넘을 때만 클러스터링을 다시 수행하는 적응형 방식을 제안했다. 실험은 새 클래스 예측, 도메인 일반화, 데이터셋 교체, 퓨샷 학습 네 갈래로 진행됐고, 양자화를 적용한 버전이 더 적은 저장 공간을 쓰면서도 모든 구간에서 가장 좋은 성능을 보였다.
주요 인사이트
- 노이즈는 무조건 제거해야 할 대상이 아니다. 학습 데이터에 대한 정확도와 처음 보는 데이터에 대한 일반화가 서로 다른 방향을 가리킬 때, 적당한 오류는 정규화 장치로 작동한다.
- 양자화를 '성능을 조금 깎아 비용을 아끼는 기술'로만 보던 시각을 뒤집는다. 양자화 오류 자체가 일반화에 쓸모 있는 자원이라면, 압축과 성능 향상을 동시에 얻을 수 있다.
- 프롬프트 가중치의 분포가 학습 내내 거의 변하지 않는다는 관찰이 설계 전체를 떠받친다. 정규화·역정규화를 학습 전후에 그대로 재사용해도 되고, 재클러스터링을 아껴도 되는 근거가 모두 여기서 나온다.
- 양자화 대상을 텍스트 프롬프트로 좁힌 덕분에 대상 파라미터 양이 적어, 학습 중 양자화를 반영하는 비용을 감당할 수 있었다.
- 이 기법은 독립된 새 모델이 아니라 기존 프롬프트 튜닝 방법 위에 얹는 형태라서, 이미 쓰고 있는 파이프라인에 비교적 쉽게 붙일 수 있다.
자주 묻는 질문
프롬프트를 양자화한다는 것이 구체적으로 무슨 뜻인가요?
프롬프트를 자유로운 연속 임베딩 벡터로 학습시키는 대신, k-means로 뽑아 둔 중심값들의 코드북에서 골라 쓰도록 제한하는 것입니다. 표현 가능한 값의 후보가 줄어들면서 모델이 특정 학습 데이터에 지나치게 맞춰지는 경향이 완화됩니다.
노이즈가 크면 성능이 나빠지는 것 아닌가요?
이미 학습한 클래스에서는 그렇습니다. 발표에서 소개된 실험을 보면 노이즈가 커질수록 학습 클래스의 정확도는 떨어졌습니다. 하지만 학습하지 않은 새 클래스에서는 노이즈가 큰 설정이 가장 좋은 성능을 냈고, 논문은 이 중간 지점을 노린 것입니다.
클러스터링을 매번 다시 하지 않는 이유는 무엇인가요?
세 가지 이유가 제시됩니다. k-means는 계산량이 많고, 자주 갱신하면 일반화에 도움이 되는 노이즈가 지나치게 줄어들며, 가중치 분포가 거의 변하지 않아 다시 돌려도 결과가 크게 달라지지 않기 때문입니다. 그래서 KL 발산이 임계값을 넘을 때만 재클러스터링합니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗