안녕하세요. 이번에는 MACD: Model-Aware Contrastive Decoding via Counterfactual Data for Video-LLMs 논문을 읽어보았습니다. 생성형AI 과제를 하면서 CD(Contrastive Decoding)이라는 방법론에 관심을 부쩍 가지게 되었는데 해당 방법론을 action으로 확장할 수 없을까? 싶게 만드는 논문이었던 것 같습니다. 그럼 리뷰 시작하겠습니다.
1. Introduction
Video-LLM은 video QA, reasoning, captioning에서 좋은 성능을 보여주고 있지만, 여기서도 환각이 계속 문제가 됩니다. 환각의 경우 시각 단서가 약하거나 모호할 때 주로 발생하며 object-level 불확실성과 데이터셋 편향이 이를 악화시킨다고 합니다. 이미지 쪽에서 보던 문제가 시간축이 붙으면서 그대로 따라온 거라고 보시면 되겠습니다.
이걸 완화하는 방법으로 contrastive decoding(CD)이 효과적인 해법으로 자리잡았는데요. 두 개의 서로 다른 view에서 나온 log-likelihood 차이로 후보 토큰의 순위를 매기고, 원본 데이터 쪽에서 더 그럴듯한 토큰만 남기는 방식입니다. 학습 없이 대조 view만으로 옳은 토큰을 골라낼 수 있다는 게 장점이죠.
여기서 주목할 점이 있다면, CD의 성공은 보조 perturbed 데이터의 품질에 달려 있다는 것입니다. 그 데이터가 모델의 약점을 제대로 포착해야 CD가 환각을 줄일 수 있다는 거죠.
문제는 기존 방법 대부분이 random perturbation으로 perturbed pair를 만든다는 점입니다. 가우시안 노이즈를 더하거나 프레임을 떨어뜨리는 식인데요. 이런 변형은 모델이 무엇을 모르는지, 본 논문의 경우 languag bias를 줄의고자 했는데 language 정보가 들어있는 query와 무엇이 관련 있는지와 전혀 연결되어 있지 않습니다. 그러니 환각을 유발하는 시각적 요인과 매칭된다는 보장이 없고, 결과적으로 불안정하거나 오히려 성능이 떨어지는 경우가 생긴다는 겁니다.
그래서 저자들이 제안하는 건 model-aware pipeline입니다. 핵심은 counterfactual 데이터를 Video-LLM 자신의 피드백으로 만든다는 것인데요. Video-LLM의 gradient를 계산해서 query reconstruction loss를 최대화하도록 perturbation 전략을 조정합니다. 이렇게 하면 모델이 필요로 하는 핵심 정보가 지워진 새로운 비디오가 만들어지고, 그게 곧 그 모델의 약점을 직접 반영하게 되는 거죠. 그 샘플과 대조하면 모델은 자기가 필요로 하는 핵심 정보와 관련된 토큰에 상대적으로 더 높은 확률을 주게 됩니다.
전체 흐름을 정리하면 이렇습니다. 비디오와 query가 주어지면 (1) detector(YOLOv11)로 모든 물체를 찾고 각 물체와 각 프레임에 soft mask를 할당한 뒤, (2) 마스킹된 비디오를 Video-LLM에 넣어 질의에 대한 next token prediction loss를 구하고, 그 gradient로 soft mask를 loss가 커지는 방향으로 갱신합니다. (3) 여러 스텝 최적화가 끝나면 나온 counterfactual 비디오를 원본과 함께 넣어서 contrastive decoding으로 최종 답을 받습니다.
Contribution을 정리하면 다음과 같습니다.
- Video-LLM 자신의 피드백을 활용해 counterfactual 비디오 데이터를 구성하는 model-aware data augmentation 방식 제안.
- 해당 방식으로 object-level과 frame-level counterfactual 데이터를 함께 구성해 contrastive decoding을 크게 개선.
- 다양한 벤치마크와 모델에서 환각이 줄고 태스크 정확도가 향상됨을 실험으로 확인.
2. Preliminary
Video-LLM은 비디오 $V = (x_{1:T})$와 텍스트 query q를 받아 response 토큰 $y_{1:m}$을 생성합니다.

CD는 base 분포와 reference 분포를 비교해서 다음 토큰을 뽑습니다. 스텝 n에서 토큰 t의 점수는 이렇습니다.

$p_\theta$와 $p_\phi$는 각각 원본 비디오와 perturbed 비디오를 조건으로 한 분포입니다. $V_{ref}$는 보통 노이즈가 끼거나 마스킹된 비디오이고요. 이렇게 하면 마스킹된 부분이 뒷받침하던 토큰은 $p_\phi$에서 낮아지고, 결과적으로 $S_n(t)$에서 확률이 올라갑니다.
3. Method

Figure 1을 통해 방법론 pipeline을 확인할 수 있습니다. 왼쪽 위가 원본 비디오와 query인데, 벨루가 영상에 “What is the beluga doing to the child?”를 묻습니다. 왼쪽 아래가 counterfactual construction 파트로 gradient 기반 최적화를 통해 초기 마스크 강도 r_1, \dots, r_n을 r_1^*, \dots, r_n^*으로 갱신하고, object mask와 frame mask가 적용된 counterfactual 비디오가 만들어집니다. 오른쪽이 contrastive decoding 입니다.
CD 파트를 보시면 원본 비디오에서 Vocalising이 높게 나오기는 했으나 다른 것들도 비슷하게 높게 나오는 것을 확인할 수 있습니다. 다만 counterfactual 비디오에서는 Vocalizing만 9.6에서 5.0으로 크게 떨어지고 나머지는 거의 그대로입니다. 모델이 의존하는 증거를 지웠을 때 확률값이 떨어지는 토큰이 그 증거에 근거하고 있던 토큰이라는 것을 알 수 있습니다. 그래서 대조 후에는 Vocalizing만 살아남고 최종 출력이 “The beluga is vocalizing at the child.”가 됩니다.
앞서서 설명드린 것처럼 방법은 세 단계로 동작하고, 백본은 계속 frozen이라 training-free입니다.
3.1 Counterfactual Data Augmentation
첫 단계는 object-aware masked 데이터를 만드는 것입니다. 비디오와 질의가 주어지면 물체를 검출하고 프레임을 추적한 뒤 마스크를 씌웁니다. 마스크 바깥 픽셀은 그대로 둡니다.
Object detection은 프레임마다 수행되어 bounding box, class label, confidence score를 뽑습니다. 그리고 프레임별 결과를 IoU 중첩과 motion cue를 결합한 heuristic으로 시간축에서 연결해서, object track을 만듭니다. 각 track은 경계가 부드러워진 soft mask로 정제되는데, 이게 gradient 기반 갱신에 적합하도록 하기 위한 처리입니다. temporal smoothing으로 짧은 occlusion을 메우고 놓친 검출도 채웁니다. 겹치는 물체는 confidence로 정규화해서 전체 커버리지를 넘지 않게 하고, 불안정하거나 품질이 낮은 track은 제거합니다.
여기서 저자들이 강조한 것이 있는데, 작거나, 가려져 있거나, 함께 등장하는 물체는 그대로 유지한다는 것입니다. 이런 것들이 환각의 원천이기 때문이라고 하네요. 제거 대상이 아니라 오히려 보존 대상이라는 게 포인트인거 같습니다.
형식적으로 입력 비디오 $V = \{x_t\}_{t=1}^{T}$와 query q에 대해 YOLOv11 기반 detector가 object 집합 $O = \{o_k\}_{k=1}^{K}$를 만들고, 각각은 프레임별 마스크 $m_k^t \in [0,1]^{H \times W}$를 가집니다.
Masked data collection 단계에서는 각 물체 $o_k$가 soft mask $m_k^o$와 mask strength $r_k$를 갖고, 서로 다른 물체의 마스크는 픽셀 단위 union으로 합쳐집니다.

여기에 추가로 object mask 외에 비디오 안의 일부 프레임을 교란하는 temporal frame mask M^f도 함께 씁니다. 최종 마스킹 비디오는 이렇습니다.

r이 마스크 강도를 조절하는데요. 다음 섹션에서 이를 최적화 합니다.
3.2 Model-Aware Contrastive Data Optimization
해당 섹션이 본 논문의 메인이라고 보면 되겠는데요. 핵심은 간단한데요. 어떤 영역을 가렸을 때 태스크 난이도가 올라간다면, 그 영역이 결정적인 증거를 담고 있다는 것입니다.
그래서 Video-LLM이 텍스트 입력을 재구성하는 loss를 최대화하도록 r을 최적화합니다. query q의 n번째 토큰에 대한 prediction loss는 이렇습니다.

그리고 r은 gradient ascent로 갱신됩니다.

여기서 중요하게 봐야할 점이 있는데 바로 왜 answer가 아니라 query-side loss로 최적화 했는지 입니다. 두가지 이유가 있는데요. 첫 번째는. 추론 시점에는 정답이 없습니다. 정답을 쓰면 MACD가 oracle intervention이 되어버립니다. 두번째로, 모델이 잠정적으로 내놓은 답 자체가 이미 환각을 담고 있어서, 답을 조건으로 한 최적하는 신뢰하기 어렵습니다. 반면 입력 query는 디코딩 전에 이미 존재하고, label이 필요없는 고정된 semantic anchor 역할을 합니다. 그래서 query-side loss를 “upstream evidence-sensitivity obejctive”로 사용합니다. 제거했을 때 query 재구성이 어려워지는 영역을 현재 video-query 쌍에 대해 task에 결정적인 증거로 사용하겠다는 거죠.
최적화가 진행되면 마스킹했을 때 loss 증가가 큰 물체는 더 강한 마스크를 받고 무관한 영역은 자연스럽게 낮아집니다. 그다음 연속값 $r_k$를 세 단계로 이산화합니다.

r_0 = 0.75로 설정했다고 합니다. 태스크에 중요한 물체는 1로 완전히 가려지고, 무관한 물체는 0으로 떨어지고, 동률이면 초기값을 유지합니다.
3.3 Contrastive Decoding
마지막으로 masked view를 CD에 넣습니다. 원본 V가 main view, $V_d(r^*)$가 contrastive view입니다.

대조는 모든 토큰에 대해 계산되므로, 차이가 공간적으로 마스킹된 물체와 시간적으로 마스킹된 프레임의 의미를 반영하게 됩니다. 그리고 샘플링 시 낮은 가중치의 무관한 토큰이 뽑히는 걸 막는 제약을 겁니다.

4. Experiments

Table 1이 6개의 백본에 대해서 4개의 벤치마크 전체 결과입니다.
저자들의 주장은 MACD가 모든 백본과 벤치마크에서 Baseline, VCD, SID를 일관되게 능가한다는 것인데요. 표를 뜯어보면 대체로 그렇습니다. 구체적으로 짚으면, Qwen3-VL-2B의 EventHallusion에서 F1이 0.68에서 0.91, Accuracy가 0.60에서 0.82로 크게 오르는 것을 볼 수 있습니다.
SID가 특정 조건에서 무너지는 이유를 저자들이 설명하길, SID는 디코더 앞쪽에서 중요도가 낮은 visual token을 억제해 counterfactual을 내부적으로 만드는데, 이 과정에서 유용한 단서까지 제거되어 모델이 “no”나 일반적인 답변 쪽으로 편향된다는 겁니다. Qwen2.5-VL-7B의 Recall 0.18을 통해 이를 확인할 수 있습니다.
모델 크기에 따른 패턴도 있는데, 작은 VLM일수록 이득이 크다는 것입니다. 저자들의 설명에 따르면, 이런 모델들이 과하게 의존하는 허위 prior를 MACD의 model-aware counterfactual이 정확히 제거했기 때문이라는 설명이고요. 반대로 Baseline이 이미 높은 Precision을 달성하는 강한 백본에서는 Precision을 떨어뜨리지 않으면서 Recall을 추가로 회복하는 정도라고 합니다.

Table 2가 ablation입니다. EventHallusion에서 Qwen2.5-VL-3B를 백본으로 ablation으로 변형해봤는데요.
full MACD가 F1 0.79, Acc 0.71로 성능부분에서 가장 높은 것을 볼 수 있습니다. 저자들의 해석은 노이즈 변형들(4~6행)이 증거를 제거하는 게 아니라 분산만 키워서 대조가 노이즈해지고, 그 결과 Precision과 Recall이 함께 오르지 못한다고 하네요.

CHAIR 계열 지표를 넘어 물체 환각을 직접 재기 위해, EventHallusion 위에 POPE 형식의 yes/no 질문을 구성한 video-adapted POPE 평가입니다.
Accuracy가 0.72에서 0.85, F1이 0.70에서 0.80으로 오르고, 신뢰구간도 (0.65, 0.79)에서 (0.79, 0.91)로 이동하는 것을 볼 수 있습니다.
지금까지 MACD 논문 리뷰를 마쳐봤습니다. VCD라는 베이스가되는 논문에서 이어서 읽어봤는데, 대조 디코딩이라는 틀이 어디까지 확장될 수 있는지가 훨씬 잘 보였습니다. 지금까지 읽어주셔서 감사합니다.
안녕하세요 주연님 좋은 글 감사합니다.
제가 이해한게 맞는지 점검하고자 질문이 있는데. 얘기해주신 파이프라인인
” 전체 흐름을 정리하면 이렇습니다. 비디오와 query가 주어지면 (1) detector(YOLOv11)로 모든 물체를 찾고 각 물체와 각 프레임에 soft mask를 할당한 뒤, (2) 마스킹된 비디오를 Video-LLM에 넣어 질의에 대한 next token prediction loss를 구하고, 그 gradient로 soft mask를 loss가 커지는 방향으로 갱신합니다. (3) 여러 스텝 최적화가 끝나면 나온 counterfactual 비디오를 원본과 함께 넣어서 contrastive decoding으로 최종 답을 받습니다. ”
이 부분에서 처음에 모든 물체를 골라서 soft mask 를 할당하는 이유는 그게 질문과 가장 관련이 높을 확률이 높아서라고 생각하면 될까요? 그러다 model 의 next token prediction 과정에서 gradient가 많이 튀는 부분으로 mask 를 계속 업데이트하면 되니, 결국 질문에 관련된 부분으로 mask가 옮겨갈거라고 설계한 방법으로 이해하면 될지 궁금합니다.
저자의 세팅이 non-object centric한 query에서도 잘 동작할지가 궁금한건데, reconstruction loss 자체를 mask 없이 랜덤하게 noise를 생성한 후 gradient 의 흐름으로 첫 masking 영역 자체를 찾아가는 방식도 가능할 것 같은데 object-level mask를 먼저 두는 이유가 궁금합니다.