AI바라기의 인공지능

VLM/LLM : 논문리뷰 : MMCode: Evaluating Multi-Modal Code Large Language Models withVisually Rich Programming Problems 본문

논문리뷰

VLM/LLM : 논문리뷰 : MMCode: Evaluating Multi-Modal Code Large Language Models withVisually Rich Programming Problems

AI바라기 2024. 9. 19. 15:20

Abstract

프로그래밍은 종종 상세하고 복잡한 명세를 코드로 변환하는 작업을 수반하며, 이 과정에서 개발자들은 일반적으로 시각적 보조 도구를 활용하여 개념을 더 효과적으로 전달합니다.

 

최근 Large Multimodal Models의 발전은 시각적 추론 및 수학적 작업에서 놀라운 능력을 보여주었지만, 이러한 모델들이 시각적 요소를 효과적으로 해석하여 코드를 생성할 수 있는지에 대한 연구는 거의 없습니다. 이를 위해, 시각적으로 풍부한 맥락에서 알고리즘 문제 해결 능력을 평가하기 위한 최초의 multimodal 코딩 데이터셋인 MMCode를 소개합니다. MMCode는 개의 코드 경쟁 웹사이트에서 수집된 실제 프로그래밍 과제에서 얻은 개의 질문과 개의 이미지를 포함하며, 추론 능력에 대한 극도의 요구로 인해 상당한 어려움을 제시합니다. 실험 결과는 현재 최첨단 모델들이 이러한 문제를 해결하는 데 어려움을 겪고 있음을 보여줍니다. 이 결과는 강력한 vision-code 모델의 부재를 강조하며, MMCode가 이 분야의 향후 연구에 영감을 줄 수 있기를 바랍니다. 데이터 및 코드는 공개적으로 사용 가능합니다.

 

 

 

 

 

 

Introduction

프로그래밍은 주로 요구 사항을 충족시키는 것을 목표로 하며, 종종 상세하고 복잡한 명세를 실행 가능한 코드로 변환하는 것을 수반합니다. 이러한 노력에서, 인간 개발자들은 효과적인 의사소통과 개념에 대한 더 나은 이해를 돕기 위해 이미지 및 다이어그램과 같은 시각적 보조 도구를 정기적으로 사용합니다.

 

최근 자동 코드 생성 도구는 Code Large Language Models (Code LLMs)의 상당한 발전에 힘입어 상당한 관심을 끌고 있습니다. 이러한 모델들은 전례 없이 놀라운 코딩 능력을 보여주었으며, 잠재적으로 생산성 향상, 인간 오류 감소 및 코딩 기술 민주화에 도움을 줄 수 있습니다. 그럼에도 불구하고, 이러한 모델들은 텍스트 전용 입력을 처리하는 것으로 제한되어 이미지를 통해 제공되는 풍부한 정보를 해석하는 능력이 부족합니다.

 

밀접하게 관련된 개발에서, 이 분야는 또한 GPT-4V 및 Gemini를 필두로 많은 강력한 Large Multimodal Models (LMMs)의 등장을 목격했으며, 이는 텍스트와 이미지의 양식을 연결하는 데 있어 중요한 발전을 나타냅니다. 수학적 추론, 인식 및 추론, 그리고 지시 따르기에서 이러한 모델들을 평가하는 여러 연구가 있지만, 코드 생성을 위한 LMM 평가에는 눈에 띄는 격차가 있습니다.

 

우리의 실험은 현재 LMM들이 MMCode의 작업을 해결하는 데 상당히 어려움을 겪고 있음을 보여주었습니다. 가장 강력한 LMM인 GPT-4V와 Gemini는 텍스트 설명과 이미지에 대한 깊은 추론 요구 사항 때문에 만족스럽지 못한 합격률을 기록했습니다. Open-source LMM들은 이미지의 추상적인 의미를 이해하지 못하기 때문에 무시할 수 있는 수준의 합격률을 보였습니다. 이러한 결과는 현재 LMM들이 코드 생성을 위해 multimodal 정보를 해석하고 활용하는 능력에 상당한 결함이 있음을 보여주며, 이 분야에서 더 많은 발전이 필요하다는 것을 강조합니다. 우리는 MMCode가 향후 Code LMM의 발전을 평가하고 이 분야의 연구에 영감을 주는 중요한 벤치마크 역할을 할 것이라고 믿습니다.

 

 

Related Works

2.1 Code Large Language Models

Large Language Models (LLMs)는 최근 몇 년 동안 상당한 발전을 이루었으며, 이전에는 달성할 수 없었던 기능과 응용 분야에서 놀라운 진전을 보여주었습니다. 인간과 같은 텍스트를 이해하고 생성하는 능력이 향상됨에 따라, Code LLMs로 알려진 특수 모델들이 등장하여 프로그래밍 코드에 특히 초점을 맞추었습니다. 대규모 코드 데이터 코퍼스에 대해 훈련된 이러한 모델들은 프로그래밍 컨텍스트를 이해하고 구문적으로 정확하며 논리적으로 건전한 코드 스니펫을 생성하는 능력을 습득했습니다. 그러나 이러한 도구의 중요한 한계는 이미지 입력을 처리할 수 없다는 점이며, 이는 텍스트 또는 코드 기반으로만 상호 작용하는 환경으로 응용 프로그램을 제한합니다. 이러한 결함은 시각적 데이터 해석이 필요한 시나리오에서 사용을 불가능하게 합니다.

 

2.2 Coding Benchmarks

Code Large Language Models의 빠른 발전과 함께, 수많은 벤치마크와 데이터셋들이 Code LLM의 놀라운 발전을 목격해 왔습니다. 이러한 벤치마크는 코드 완성, 편집 및 번역과 같은 다양한 코드 관련 작업을 다룹니다. 우리의 연구와 가장 관련 있는 APPS 및 CodeContests는 실제 프로그래밍 연습 및 콘테스트 코딩 웹사이트의 코딩 문제를 벤치마크로 활용했습니다. 최근 TACO는 콘테스트 문제에 대한 포괄적인 컬렉션을 제공했습니다. 그러나 TACO는 필요한 프로그래밍 기술 (예: Dynamic Programming 및 Tree Algorithms)별로 문제를 클러스터링하는 것을 목표로 하는 반면, MMCode는 multimodal language model의 문제 해결 능력을 평가하기 위해 이미지가 증강된 질문에 중점을 둡니다.

 

2.3 Reasoning-Intense Visual Question Answering

시각적 맥락을 가진 LMM의 추론 능력을 평가하기 위한 몇 가지 연구들이 등장했습니다. ScienceQA는 다양한 과학 주제에 대한 multimodal 객관식 질문으로 구성되어 있으며, multi-hop 추론 능력을 측정하도록 설계되었습니다. MMMU는 다양한 학문 분야에 대한 대학 수준의 질문을 제공합니다. MathVista는 다양한 수학 추론 능력을 필요로 하는 작업을 포함하여 multi-modal 입력을 사용한 수학 문제 해결을 강조합니다. OlympiadBench는 챌린징한 Olympiad 수준의 수학 및 물리 경시 대회 문제 세트를 제공합니다. PuzzleVQA는 모델의 추론 능력이 추상적인 그림에 일반화되는지 평가하기 위해 패턴에 대한 LMM 벤치마크를 제공합니다. 우리의 연구는 복잡한 문제에 대한 솔루션 코드 생성을 필요로 한다는 점에서 차별화되며, 이는 LMM의 long-horizon 추론 능력을 벤치마킹합니다.

 

 

MMCode

이 섹션에서는 MMCode의 소스 및 수집 파이프라인을 소개합니다. 수집 파이프라인은 개의 단계로 구성됩니다:

) Raw data collection;

) automatic filtering;

) human filtering 및

) annotation.

다음 섹션에서 소개될 이 파이프라인은 MMCode를 위해 수집된 데이터의 품질과 다양성을 보장합니다.

 

3.1 Data Sources

MMCode의 질문들은 AtCoder, Aizu, CodeChef, CodeForces, CodeWars, Project Euler, Geeksforgeeks, HackerRank, Leetcode 및 Open Kattis를 포함한 개의 코딩 플랫폼에서 수집되었습니다. 더 자세한 정보는 Appendix D.에서 찾을 수 있습니다.

데이터 소스는 경쟁, 취업 면접, 튜토리얼 등 다양한 특성과 목적을 보여줍니다. 특히, Project Euler는 해결하기 위해 수학 및 컴퓨터 프로그래밍 기술의 조합을 필요로 하는 과제들을 모아놓은 것으로 구별됩니다. 결과적으로 MMCode는 이러한 소스의 다양성으로부터 혜택을 얻어 다양한 난이도, 스타일 및 기술 요구 사항을 가진 프로그래밍 문제를 제공합니다.

 

3.2 Data Collection Pipeline

Raw Data Collection. 10개 플랫폼 각각에 대해 별도의 웹 크롤러를 개발하여 문제 설명을 가져왔습니다. 그런 다음 HTML 요소를 통일된 규칙에 따라 일반 텍스트로 변환하여 깔끔하고 읽기 쉽게 만들었습니다. 또한, 문제 이름, 시간 제한, 메모리 제한과 같은 메타데이터도 가능한 경우 수집했습니다. 추가적인 유연한 사용을 위해 원시 HTML 코드도 데이터셋에 포함시켰다는 점에 유의해야 합니다.

만약 설명 안에 이미지(<img> 태그)가 포함되어 있다면, 이미지를 저장하고 PNG 형식으로 변환했습니다. <img> 태그는 마크다운 이미지 태그로 대체되어 텍스트에 삽입되었습니다 (예: ![image](1.png)). 하나의 질문에 여러 이미지가 포함될 수 있고, 이미지가 주변 텍스트 섹션과 밀접하게 관련될 수 있기 때문에 텍스트에서 이미지의 위치를 유지하는 것이 중요합니다. 이러한 방식은 시각적 요소와 텍스트 요소가 더 나은 이해를 위해 조화롭게 통합되어 내용의 응집성과 일관성을 보장합니다.

플랫폼 디자인 및 정책 변경으로 인해 자동 테스트 케이스를 얻는 것이 어려워졌기 때문에, 가능한 경우 TACO 데이터셋의 풍부한 정보를 재사용했습니다. 크롤링된 질문과 TACO에 있는 질문을 URL을 통해 매칭했습니다. 구체적으로, 가장 큰 두 데이터 소스인 CodeForces와 Aizu에서 문제 설명과 테스트 케이스를 포함한 모든 질문을 크롤링했습니다. 또한 이전 데이터셋에는 없는 새로운 플랫폼인 Project Euler도 포함시켰습니다. 다른 플랫폼의 경우 TACO의 데이터를 재사용하고 질문 설명을 가져와 이미지를 추가했습니다.

초기 데이터 분석 결과, 얻어진 질문의 18.8%가 이미지를 포함하고 있었으며, 이는 multimodal 코딩 벤치마크를 만들고자 하는 우리의 동기를 뒷받침합니다.

 

Automated Filtering.

이 단계에서 우리의 초기 단계는 관련 이미지가 없는 질문들을 제외하는 것을 포함했습니다. 그 후, 데이터 품질을 보장하기 위해 다양한 후처리 단계를 적용했습니다. PILLOW 라이브러리를 사용하여 로드할 수 없는 이미지가 있는 질문들을 필터링했습니다. 또한, 알파 채널이 있는 PNG를 배경을 흰색으로 채워 순수 RGB 형식으로 변환했는데, 이는 이미지의 텍스트를 식별하는 데 중요합니다. 이렇게 하면 서로 다른 모델들이 투명 색상을 해석하는 데 있어 다른 동작을 보이는 것을 방지할 수 있습니다. 마지막으로, 데이터셋에 있는 모든 질문 쌍에 대해 엄격한 5-gram 유사성 검사를 수행하여 유사도 점수가 0.80보다 큰 유사한 문제들을 제거했습니다. 이 과정을 통해 데이터셋에서 33개의 질문이 제거되었습니다.

 

Human Filtering.

이 단계에서는 먼저 수집된 데이터의 품질 범위를 파악하기 위해 샘플 질문에 대한 예비 검사를 수행했습니다. 주요 노이즈 원인은 독자들의 흥미를 끌려고 하지만 질문 해결에 도움이 되는 정보나 암시를 제공하지 않는 티저 이미지였습니다. 이러한 이미지들은 대부분 Open Kattis 및 CodeForces에서 유래되었으며, 질문의 배경에 대한 사진, 애니메이션 스크린샷 등으로 구성되어 있습니다. 예시는 Appendix D.10에 나와 있는데, 질문은 개발자 협력에 관한 것이지만 이미지는 프로그래머의 일상 업무에 대한 유머러스한 만화입니다. 또한 이미지에 웹사이트 로고 및 UI 요소가 혼합되어 있는 경우도 발견되었는데, 이는 아마도 질문 작성자의 조판 실수 때문일 것입니다.

이 문제를 해결하기 위한 편리한 해결책은 GPT-4V 및 Gemini와 같은 대형 LMM을 사용하여 이미지가 질문 해결에 유용한지 판단하는 것입니다. 그러나 이러한 방법은 데이터에 편향을 도입할 수 있습니다. 따라서 우리는 사람의 노동을 선택하여 이러한 관련 없는 이미지를 걸러내기로 결정했습니다. 데이터셋의 모든 이미지를 수동으로 검사하여 노이즈가 있는 이미지를 제거했습니다. 이미지가 관련 없다고 판단되었지만 질문에 있는 유일한 이미지가 아닌 경우, 해당 이미지와 해당 마크다운 태그만 텍스트에서 제거했습니다. 질문 자체는 이 과정 후에 남아 있는 이미지가 없는 경우에만 제거됩니다.

 

Annotation.

이 단계에서는 다양한 유형의 이미지에서 모델 성능에 대한 더 자세한 분석을 용이하게 하기 위해 MMCode의 이미지를 뚜렷한 범주로 분류합니다. 이미지는 코딩 콘테스트 문제 해결에 풍부한 경험을 가진 전문 인간 코더들이 검토하고 논의했습니다. 이러한 숙고 끝에 이미지는 Linear Data Structure, Tree, Graph, 2D Geometry, 3D Geometry, Chessboard, Map, Patterns, Math, Table, Pseudocode 및 Others의 12가지 유형으로 세심하게 분류되었습니다. Gemini Pro Vision은 대략적인 레이블을 생성하는 데 활용됩니다. 카테고리에 대한 자세한 설명은 Appendix B에 나열되어 있습니다.

이러한 상세한 분류는 다양한 유형의 시각 정보가 모델에 의해 어떻게 처리되고 해석되는지에 대한 집중적인 분석을 가능하게 하여 잠재적으로 코딩 컨텍스트에서 모델의 능력을 식별하고 개선하는 데 도움을 줄 수 있습니다.

 

 

3.3 Data Splits

이전 절차를 수행한 후, 우리는 이미지 개와 함께 질문 개를 가진 데이터셋을 얻었습니다. 질문의 긴 특성과 이미지를 표현하는 데 필요한 추가 토큰을 고려할 때, 전체 데이터셋에 대한 평가는 비용이 많이 들 수 있습니다. MathVista를 따라, 테스트 세트를 작게 유지하기로 의식적인 결정을 내렸습니다. 결과적으로, 테스트 세트로 질문 개를 샘플링했고, 이미지 카테고리 레이블을 수정하기 위해 신중한 human inspection을 적용했습니다.

 

3.4 Testing Pipeline

엄격한 답변 확인을 위해 MMCode에는 실행 기반 테스트 파이프라인이 채택되었습니다. 그림 1에서 보듯이, 평가자는 모델이 생성한 코드를 컴파일하려고 시도한 다음, sandbox에서 시간 제한 실행을 수행합니다. 프로그램의 출력은 테스트 케이스의 ground truth 답변과 비교되며, 모든 숨겨진 테스트 케이스를 통과하는 경우에만 솔루션이 정확하다고 판단됩니다.

 

 

 

 

Data Analysis

이 섹션에서는 MMCode에 대한 포괄적인 탐색을 수행하고, MMCode에 대한 미묘한 이해를 제공하기 위해 통계적 속성을 소개합니다.

 

Problem Length. MMCode에 통합된 데이터 소스의 다양성은 그림 2a에서 볼 수 있듯이 문제 길이에 상당한 차이를 초래합니다. 질문의 평균 길이는 2,256자에 달하며, 25번째, 50번째 및 75번째 백분위수는 각각 1,516, 2,127 및 2,791입니다. 이는 MMCode에 제시된 질문의 뚜렷한 스타일과 난이도에 기인할 수 있습니다. 어떤 질문은 지시 사항을 간결하고 직접적으로 설명하는 반면, 다른 질문은 문제의 맥락적 배경을 자세히 설명합니다.

 

Image Count per Problem. MMCode를 이전 데이터셋과 차별화하는 주목할 만한 특징은 질문당 여러 이미지를 포함한다는 것입니다. 평균적으로 각 질문에는 1.87개의 이미지가 연결되어 있으며, 25번째 백분위수는 1개의 이미지를, 75번째 백분위수는 2개의 이미지를 가집니다. 이러한 수치는 텍스트 내용과 섞여 있으며, 이를 이해하는 것은 종종 순서에 따라 달라지므로 모델에게 큰 어려움을 제시합니다.

 

Image Position. 그림 3b에서 보듯이, MMCode 문제의 이미지는 텍스트의 어느 위치에나 나타날 수 있지만, 꼬리 부분에 집중되어 있습니다. 이는 많은 이미지가 샘플 입력 및 출력을 직관적으로 묘사하고 설명하기 위해 그려지기 때문이며, 이들은 대부분 텍스트 끝 부분에 위치합니다.

 

Image Type. 그림 3a는 섹션 3.2에서 소개된 분류 기준에 따른 이미지 범주의 비율을 보여줍니다. Graph, Math 및 2D Geometry가 데이터셋의 절반 이상을 차지하는 대다수를 형성하며, 각각 20.9%, 17.9% 및 15.3%를 차지합니다. Others로 분류된 기타 이미지는 데이터셋의 약 1/10을 차지하며 높은 수준의 이질성을 나타냅니다. Tree는 9.9%로 그 뒤를 잇습니다. 나머지 그룹은 약 1/4을 차지하며 MMCode의 다양성을 보여줍니다.