AI바라기의 인공지능

VLM : 빠른 논문 리뷰 : Understanding Complexity in VideoQA via Visual Program Generation 본문

논문리뷰

VLM : 빠른 논문 리뷰 : Understanding Complexity in VideoQA via Visual Program Generation

AI바라기 2026. 4. 14. 15:37

용어 설명

  • VideoQA (Video Question Answering): 주어진 비디오 내용에 대해 자연어로 묻는 질문에 답을 하는 task.
  • Visual Program Generation (CodeGen): 자연어 질문을 처리하기 위해 LLM을 사용하여 파이썬과 같은 실행 가능한 모듈형 코드(프로그램)를 생성하는 방식.
  • Cyclomatic Complexity: 소프트웨어 공학에서 사용하는 코드 복잡도 지표로, 프로그램 소스 코드 내에서 선형적으로 독립적인 경로(제어 흐름)의 수를 의미함.
  • AST (Abstract Syntax Tree): 프로그래밍 코드의 추상 구문 트리. 코드의 구조와 논리를 계층적으로 표현한 형태.
  • Subtree Analysis: AST 내에서 반복적으로 나타나는 특정 논리 패턴(Subtree)을 찾아내고, 이 패턴이 모델의 성능 저하와 통계적으로 어떤 상관관계가 있는지 분석하는 기법.
  • CodePlexity: 이 논문에서 제안한 새로운 질문 복잡도 측정 지표. 생성된 코드의 구조뿐만 아니라, 의미론적 내용(특정 Subtree의 존재 여부)까지 고려하여 모델이 어려워하는 질문을 예측하는 데이터 기반 학습 알고리즘.
  • PEG (Performance Extremity Gap) / mPEG: 복잡도 추정 지표가 모델에게 '가장 쉬운 질문'과 '가장 어려운 질문'을 얼마나 잘 구분해 내는지 정량적으로 평가하기 위해 논문에서 고안한 평가 지표.

Purpose of the Paper

  • 기존 VideoQA benchmark들은 사람의 직관(human expertise)에 의존하여 '어려운' 질문을 설계하는 top-down 방식을 취했으나, 사람은 기계(ML models)가 실제로 어떤 문제를 어려워하는지 정확히 예측하지 못한다는 한계가 있었음.
  • 본 연구는 자연어 질문 자체를 분석하는 대신, 질문을 해결하기 위해 생성된 코드(Visual Program)의 복잡성을 질문의 난이도를 추정하는 프록시(proxy)로 사용하는 bottom-up, 데이터 기반의 새로운 접근 방식을 제안함.

Key Contributions

  • 코드 복잡도와 모델 성능의 상관관계 입증 (Novelty: 자연어 기반이 아닌 중간 매개체인 코드 활용)
    • 인간의 난이도 예측이나 자연어 기반 지표(Dependency Tree Depth 등)보다 생성된 코드의 복잡도(Cyclomatic Complexity 등)가 최신 VideoQA 모델들의 실제 실패 확률과 훨씬 더 강력한 상관관계를 가짐을 증명함.
  • 새로운 복잡도 추정 지표 CodePlexity 제안 (Novelty: 단순 구조를 넘어선 의미론적 패턴 마이닝)
    • 단순히 코드의 길이나 제어 흐름만 보는 것을 넘어, 코드를 AST로 변환 후 특정 architecture들에 공통적인 실패를 유발하는 구체적인 코드 패턴(Subroutines)을 찾아내어 학습하는 알고리즘을 개발함.
  • 자동화된 고난도 Benchmark 생성 (Novelty: 모델의 약점을 능동적으로 찌르는 bottom-up 데이터셋 구축)
    • 제안된 CodePlexity 지표를 필터로 활용하여, LLM이 생성한 대량의 질문 후보군 중 기계가 가장 어려워할 질문들만 선별해 낸 CodePlex-QA라는 새로운 benchmark를 자동으로 구축함.

Experimental Highlights

  • Human vs. Code 예측력 비교: NExT-QA 데이터셋에서 사람은 중간 난이도로 평가한 질문들을 기계는 가장 어려워하는 등 예측 궤적이 빗나갔으나, 코드 복잡도는 뚜렷한 음의 상관관계(복잡할수록 정답률 하락)를 보임.
  • CodePlexity 성능 (mPEG 평가): 7개의 state-of-the-art zero-shot VideoQA 모델을 평가한 결과, CodePlexity는 GPT-4나 BERT를 이용한 자연어 기반 텍스트 평가 지표보다 압도적으로 높은 mPEG 점수(예: InternVideo에서 26.6, Tarsier에서 24.9)를 기록하며 최고의 예측력을 달성함.
  • Subtree 분석을 통한 모델 약점 발견: 다양한 모델들이 공통으로 실패하는 8개의 주요 Subtree 패턴을 발견함. 구체적으로 특정 조건이 충족된 '이후'를 추적하는 복잡한 루프(fine-grained temporal reasoning)와 특정 객체의 공간적 관계를 추적하는 코드 패턴에서 최신 모델들이 여전히 취약함을 입증함.
  • CodePlex-QA의 파괴력: 새로 구축된 CodePlex-QA는 기존 NExT-QA 대비 모델들의 성능을 대폭 하락시킴 (예: SeViLA ZS 모델의 정확도가 64.2%에서 43.7%로 하락). 경험적으로 기존 벤치마크보다 1.9배 더 어려운 수준을 달성함.

Limitations and Future Work

  • Limitations:
    • VideoQA의 전체 난이도를 결정하는 두 축(Video의 복잡도와 Question의 복잡도) 중, 본 연구는 Question의 복잡도(코드를 통해)만 집중하여 분석함.
    • 분석의 해상도(granularity)가 사전에 정의된 CodeGen 모델의 API 함수 수준에 종속됨.
  • Future Work:
    • 화면에 등장하는 상호작용 entity의 수를 추적하는 등 비디오 자체의 시각적 복잡도를 정밀하게 측정하는 기법을 개발하고, 이를 본 논문의 CodePlexity와 결합하여 Task 전체의 복잡도를 완벽하게 추정하는 연구로 확장할 수 있음.

Overall Summary

이 논문은 인간의 직관에 의존하던 기존 VideoQA benchmark 설계의 한계를 지적하고, 질문을 해결하기 위해 기계가 스스로 작성한 중간 단계인 '코드(Visual Program)'의 복잡성을 분석하여 질문의 실제 난이도를 정확히 예측하는 프레임워크를 제시했습니다. 특히 AST 구조를 분석해 모델들의 공통적인 약점 패턴을 찾아내는 CodePlexity 지표를 제안하고, 이를 통해 기존보다 1.9배 어려운 CodePlex-QA 데이터셋을 자동으로 구축해냈습니다. 이는 모델을 평가하는 데이터셋 구축 방식을 top-down 휴리스틱에서 bottom-up 데이터 기반 방식으로 전환시켰다는 점에서, 향후 Multimodal reasoning 분야의 발전과 평가에 매우 중요한 영향을 미칠 연구입니다.


쉬운 설명

수능 출제위원이 "이 문제는 학생들이 어려워하겠지?"라고 감으로 문제를 내는 대신, 학생들의 **'풀이 과정(수식 전개 과정)'**을 분석하여 "조건문이 2번 이상 겹치거나 특정 공식을 순서대로 써야 하는 구조일 때 오답률이 급증한다"는 구체적인 데이터를 찾아내는 것과 같습니다.

즉, 자연어 질문 텍스트만 쳐다보는 것이 아니라, 기계가 그 질문을 풀기 위해 논리적으로 전개한 '코드(Code)'의 복잡성과 **특정 약점 패턴(Subtree)**을 분석하여 진짜 어려운 문제가 무엇인지 가려내고, 이를 역이용해 기계의 약점만 집요하게 파고드는 고난도 모의고사를 알고리즘이 스스로 척척 만들어낸 연구입니다.

 

 

 

 

 

더보기

비디오의 난이도를 파악하는 것이 최종 목표

그걸 코드로 했는데

무슨 코드냐면 
여러가지 비디오 정보를 처리하는 api 들을 언제 어떤 순서로 사용할지에 대한 코드를 짜게됨
약간 바이퍼 gpt 스타일 ㄷㄷ

그래서 코드를 통해 정답을 도출

얼마나 복잡하게 꼬여있는가가 난이도에 더 큰 영향을 미침
API를 그냥 일자로 10번 호출하는 것보다, **"만약(if) 화면에 자동차가 나타나면, 그때부터 프레임을 반복해서(for) 돌려보고, 멈추면(break) 빠져나와라"**처럼 제어문(Control flow)이 복잡해질수록 AI가 훨씬 더 헤매고 정답률이 떨어짐

최신 AI들이 공통적으로 추풍낙엽처럼 틀리는 **특정 코드 패턴(서브루틴)**들이 있다는 걸 발견


CodePlexity
작은 논리 조각들에 원핫 인코딩 하고 로지스틱 태워서 정답률 뽑게함. 
그럼 특정 코드들이 줄줄이 들어갔을때 줄줄히 오답이면 아 이거 패턴이다!

할 수 있게됨


3점 / 5점
잘 만든 벤치마크, 난이도도 좋다