VLM : 논문리뷰 : Visual Program Distillation:Distilling Tools and Programmatic Reasoning into Vision-Language Models
Abstract
"누가 오른쪽에 있는 악기를 발명했는가?"와 같은 복잡한 visual task를 해결하려면 공간 이해, 악기 인식, 사전 지식 검색 등 여러 skills를 조합해야 합니다. 최근 연구에서는 large language model (LLM)을 사용하여 이러한 task를 specialized vision model을 호출하는 실행 가능한 program으로 분해함으로써 가능성을 보여주었습니다. 그러나 생성된 program은 오류가 발생하기 쉽습니다. 필요한 단계를 생략하거나, 불필요한 단계를 포함하거나, specialized model이 잘못된 출력을 제공할 때 복구할 수 없습니다. 또한 여러 model을 로드해야 하므로 latency가 높아지고 계산 비용이 많이 듭니다.
저희는 single forward pass로 복잡한 visual task를 해결할 수 있는 vision-language model (VLM)을 생성하는 instruction tuning framework인 Visual Program Distillation (VPD)을 제안합니다. VPD는 LLM을 사용하여 여러 후보 program을 샘플링하여 추론 능력을 distill합니다. 그런 다음 이러한 program을 실행하고 확인하여 올바른 program을 식별합니다. 올바른 각 program을 reasoning 단계에 대한 language description으로 변환한 다음 VLM으로 distill합니다. 광범위한 실험을 통해 VPD가 VLM의 counting, 공간 관계 이해 및 compositional reasoning 능력을 향상시키는 것으로 나타났습니다. VPD로 훈련된 PaLI-X는 이전의 모든 VLM보다 성능이 뛰어나 MMBench, OK-VQA, A-OKVQA, TallyQA, POPE, Hateful Memes를 포함한 복잡한 vision task에서 state-of-the-art 성능을 달성했습니다. 사람 주석자를 통한 평가에서도 VPD가 model 응답의 사실성과 일관성을 향상시키는 것으로 확인되었습니다. 마지막으로 콘텐츠 조정에 대한 실험을 통해 VPD가 데이터가 제한된 실제 애플리케이션에 적용하는 데에도 도움이 된다는 것을 보여줍니다.
주요 문제:
- 복잡한 visual task (예: "오른쪽 악기 발명가는?")는 공간 이해, 객체 인식, 지식 검색 등 다양한 skill을 요구함.
- 기존 방법 (LLM으로 task를 program으로 분해)은 오류 발생률이 높고, 여러 모델 로딩으로 인해 비효율적임.
제안하는 해결책:
- Visual Program Distillation (VPD): single forward pass로 복잡한 visual task를 해결하는 VLM 생성하는 instruction tuning framework.
- LLM으로 여러 후보 program을 샘플링 후 실행 및 검증하여 올바른 program 식별.
- 올바른 program을 language description으로 변환하여 VLM에 distill.
주요 결과:
- VPD는 VLM의 counting, 공간 관계 이해, compositional reasoning 능력 향상시킴.
- VPD로 훈련된 PaLI-X는 MMBench, OK-VQA, A-OKVQA 등 다양한 benchmark에서 SOTA 달성.
- 사람 평가 결과, VPD는 model 응답의 사실성과 일관성 향상시킴.
- 콘텐츠 조정 실험에서 VPD는 데이터 제한적인 실제 환경 적용에 유용함을 보임.
핵심:
- VPD는 LLM의 추론 능력을 활용하여 VLM의 성능을 향상시키는 새로운 방법 제시.
- 복잡한 visual task를 효율적으로 해결하는 데 기여.
Introduction
Vision-language model (VLM)은 많은 computer vision task를 위한 pretrained backbone이 되었지만, 여전히 많은 visual reasoning task를 해결하지 못하고 있습니다. 심지어 GPT-4V와 같은 state-of-the-art (SOTA) proprietary vision-language model조차도 counting과 spatial reasoning을 포함하는 task에서는 제대로 수행되지 않습니다. counting (TallyQA), compositional reasoning (GQA), 외부 지식을 이용한 reasoning (OK-VQA, A-OKVQA)에 어려움을 겪고 있습니다. 이러한 task의 대부분은 VLM이 compositional reasoning을 수행해야 하는데, 이는 여전히 해결되지 않은 과제입니다. 예를 들어, "오른쪽에 있는 악기를 발명한 사람은 누구인가?"라는 질문에 답하려면 object를 식별하고, 오른쪽에 있는 object를 찾기 위해 spatial reasoning을 적용하고, 악기를 인식하고, 발명가를 검색하기 위해 사전 지식에 접근하는 등 여러 skills를 조합해야 합니다.
반면에 large language model (LLM)은 복잡하고 compositional task를 해결하는 code를 생성하는 데 탁월한 성능을 보여주었습니다. 여러 최근 논문에서는 LLM을 사용하여 각 단계가 reasoning 단계에 해당하는 program을 생성합니다. 이 program은 specialized "tool" (또는 specialized vision model)을 호출하여 각 reasoning 단계를 명시적으로 실행합니다. 위의 질문에 대해 program은 "object detector" tool을 호출하여 모든 object를 식별하고 분리하고, "fine-grained object classification" tool을 호출하여 악기를 인식하고, "knowledge-based question answering" tool을 호출하여 발명가를 검색합니다.
Figure 1. Visual Program Distillation (VPD)을 소개합니다. VPD는 vision-language model (VLM) training을 위해 tool과 LLM에서 생성된 program을 활용하여 cross-modal reasoning data를 합성하는 framework입니다. VPD는 specialist model (예: detection, depth estimation)의 skills과 LLM의 reasoning 능력을 VLM으로 distill합니다. VPD로 훈련된 저희의 generalist model인 PaLI-X-VPD (55B)는 광범위한 task에서 이전 VLM보다 성능이 뛰어나면서 사람이 해석할 수 있고 충실한 reasoning 단계를 생성합니다.
혁신적이기는 하지만 명시적 program을 생성하는 것은 실제로 계산 비용이 많이 들고 오류가 발생하기 쉬우며 end-to-end model보다 성능이 떨어집니다. program을 실행하려면 여러 tool을 로드하고 실행해야 하므로 latency가 높아지고 계산 비용이 많이 듭니다. 또한 생성된 program에서 필요한 단계가 생략되거나 불필요한 단계가 포함될 수 있습니다. program이 정확하더라도 vision model 호출에서 잘못된 출력이 생성될 수 있으며, 전체 program은 이러한 오류에서 복구할 수 없습니다. 실제로 실험 결과에 따르면 visual program은 여전히 end-to-end fine-tuned model보다 성능이 떨어집니다.
또 다른 연구 분야는 LLM의 instruction-following 능력을 VLM으로 distill하는 visual instruction tuning입니다. LLM에 image caption과 bounding box annotation을 제공하여 VLM을 fine-tune하는 데 사용되는 query와 answer를 생성합니다. 그러나 이 방법에는 중요한 한계가 있습니다. image caption에서 fine-grained visual information이 누락될 수 있으며 LLM은 bounding box와 같은 custom vision representation에 대해 일관되지 않은 출력을 생성하는 경향이 있습니다. 결과적으로 기존의 instruction-tuned VLM은 복잡한 visual reasoning이 필요한 task에서 여전히 어려움을 겪고 있습니다.
Figure 2. Visual Program Distillation (VPD) 개요. VPD는 LLM과 specialized vision tool을 사용하여 vision-language model (VLM)을 위한 충실한 chain-of-thought (CoT) training data를 생성합니다. multimodal input이 주어지면 4단계 data synthesis pipeline은 query에 답하는 CoT를 생성합니다. 위의 예에서 합성된 CoT는 모든 버스 찾기, 각 버스가 노란색인지 확인, 개수를 합하여 최종 답변 도출과 같은 일련의 reasoning 단계를 포함합니다. 또한 CoT에는 object detection에서 제공하는 grounding information도 포함되어 있습니다.
이 연구에서는 vision-language model에 복잡한 cross-modal reasoning capabilities를 유도하는 새로운 distillation 방법인 Visual Program Distillation (VPD)을 제시합니다. 이름에서 알 수 있듯이 VPD는 두 가지 주요 insight를 결합하여 각 부분의 합을 능가하는 training paradigm을 제공합니다.
(1) tool을 사용하는 visual program의 발전과
(2) chain-of-thought reasoning을 통한 distillation의 최근 혁신을 기반으로 합니다.
복잡한 visual task의 labeled training dataset이 주어지면 VPD는 올바른 program을 생성한 다음 reasoning 단계를 vision-language model로 distill합니다. 잘못된 답변을 제공하는 program을 사용하지 않도록 VPD는 LLM에 여러 후보 program을 생성하고 모든 program을 실행하도록 합니다. labeled data를 사용할 수 있는 경우 실행 시 올바른 답변을 생성하는 program을 필터링합니다. 따라서 program은 여러 vision tool로 구성되고 실행 가능하며 실행 시 올바른 답변을 생성합니다. 다음으로 VPD는 올바른 program을 natural language chain-of-thought instruction으로 다시 작성하고 step-by-step distillation을 사용하여 reasoning 능력을 VLM에 주입합니다.
저희의 최고의 instruction-tuned model인 PaLI-X-VPD (55B)는 8개의 classical VQA task와 2개의 zero-shot multimodal benchmark에서 새로운 SOTA 결과를 기록했습니다. 저희 model은 최근 PaLI-X가 수립한 SOTA를 능가하기도 합니다. 중요한 것은 사람 평가자를 통해 품질 평가를 수행한 결과 PaLI-X-VPD가 instruction-tuning data를 사용하여 훈련된 model에 비해 더 일관되고 충실한 rationale을 생성하는 것으로 나타났습니다. 또한 PaLI-3(5B)을 사용한 실험을 통해 VPD가 소규모 model의 성능도 향상시키는 것으로 나타났습니다. 마지막으로 Hateful Memes에 대한 실험을 통해 VPD가 label을 사용할 수 없는 경우에도 새로운 task에 적응하는 데 도움이 된다는 것을 보여줍니다.
주요 문제:
- VLM의 한계:
- 많은 computer vision task의 backbone으로 사용되지만, 복잡한 visual reasoning task (e.g., counting, spatial reasoning, 외부 지식 활용) 해결에 어려움을 겪음.
- SOTA 모델 (GPT-4V 포함) 조차도 TallyQA, GQA, OK-VQA 등의 benchmark에서 좋은 성능을 보이지 못함.
- Compositional reasoning 능력 부족.
- 기존 해결책의 한계:
- LLM 기반 program 생성:
- 계산 비용 높음 (여러 tool 로딩 및 실행).
- 오류 발생 빈번 (필요 단계 누락, 불필요 단계 포함, vision model 오류).
- end-to-end model 보다 성능 낮음.
- Visual instruction tuning:
- Image caption 정보 부족.
- LLM의 bounding box 등 custom vision representation 처리 능력 부족.
- 복잡한 visual reasoning task 해결 어려움.
- LLM 기반 program 생성:
제안하는 해결책:
- Visual Program Distillation (VPD): VLM에 복잡한 cross-modal reasoning 능력을 주입하는 새로운 distillation 방법.
- 핵심 아이디어:
- Tool 기반 visual program 활용.
- Chain-of-thought reasoning 기반 distillation.
- 작동 방식:
- LLM으로 여러 후보 program 생성 및 실행.
- 정답을 생성하는 program 선택.
- 선택된 program을 natural language chain-of-thought instruction으로 변환.
- Step-by-step distillation을 통해 VLM에 reasoning 능력 주입.
- 핵심 아이디어:
주요 기대 효과:
- VLM의 visual reasoning 능력 향상.
- 다양한 visual task에서 SOTA 달성.
- 사람이 이해 가능하고 충실한 reasoning 단계 생성.
- 소규모 모델에도 적용 가능.
- 새로운 task (e.g., Hateful Memes) 적응에 도움.
2. Related work
VPD는 모든 vision-language model을 개선하기 위한 일반적인 방법이며, 제안된 framework의 단계로 automatic program generation과 chain-of-thought data를 사용한 training을 포함합니다. 이러한 각 연구 분야에 대해 논의합니다.
Vision-language models (VLMs)
최근의 대부분의 generative VLM은 pretrained visual encoder, pretrained LLM, 두 modality 간의 connector라는 공통적인 구조를 공유합니다. 이러한 모델은 다양한 task에서 얻은 대규모 image-text pair로 훈련되어 두 modality에 적응합니다. 또한 LLM에서 생성된 visual instruction으로 tuning되어 모델이 사용자의 다양한 instruction을 따를 수 있도록 합니다. 일부 모델은 visually grounded task에서 VLM을 개선하기 위해 pre-training data에 bounding box를 포함합니다. bounding box는 일반적으로 COCO 및 Visual Genome에서 가져옵니다. 기존 연구와 달리 저희의 방법은 제공된 dense annotation에 의존하지 않습니다. LLM에서 생성된 code와 specialized vision tool을 사용하여 자체적인 visual instruction-tuning data를 생성합니다.
Visual programming and agents
Large language model (LLM)의 발전과 함께, 최근 연구에서는 LLM을 tool을 사용하여 복잡한 reasoning task를 해결하기 위한 interface로, 그리고 vision task를 위한 agent로 사용하기 시작했습니다. 이러한 연구 라인에서 저희와 가장 관련성이 높은 것은 VisProg와 ViperGPT입니다. VisProg와 ViperGPT는 LLM을 활용하여 specialized vision tool에 대한 일련의 호출이 포함된 실행 가능한 program을 생성합니다. 다양한 vision task에서 SOTA zero-shot 성능을 달성하는 동시에 다재다능하고 해석 가능합니다.
Training and inference with chain-of-thought
Chain-of-Thought (CoT)는 LLM 성능을 향상시키기 위한 일반적인 접근 방식이 되었습니다. Program-of-Thoughts (PoT) 및 Faithful CoT와 같은 최근 연구에서는 inference를 두 단계로 분할하여 이 framework을 더욱 개선합니다. 첫 번째는 LLM으로 program을 생성하는 것이고, 두 번째는 program을 실행하는 것입니다. 이 접근 방식은 더 나은 정확도를 달성하고 reasoning 단계에서 hallucination을 줄입니다. 또한 CoT는 language model을 훈련하는 데에도 사용됩니다. Distill step-by-step, PaD, SCOTT는 LLM에서 생성된 CoT로 더 작은 language model을 훈련하여 모델 성능과 reasoning 일관성을 향상시킬 수 있음을 보여줍니다. Mammoth는 CoT와 PoT rationale의 hybrid로 LLM을 훈련하여 수학 문제에 대한 SOTA 모델을 달성합니다.
주요 내용:
- VPD는 모든 vision-language model의 성능 향상을 위한 일반적인 방법임.
- VPD는 automatic program generation과 chain-of-thought data를 사용한 training을 포함.
- 관련 연구 분야는 다음과 같음.
1. Vision-language models (VLMs)
- 최근 generative VLM은 pretrained visual encoder, pretrained LLM, 두 modality 간의 connector로 구성됨.
- 대규모 image-text pair로 훈련하여 두 modality에 적응.
- LLM에서 생성된 visual instruction으로 tuning하여 사용자 instruction을 따를 수 있도록 함.
- visually grounded task를 위해 bounding box를 pre-training data에 포함하기도 함.
- VPD는 기존 연구와 달리 dense annotation에 의존하지 않고 LLM과 vision tool을 사용하여 자체적인 instruction-tuning data를 생성.
2. Visual programming and agents
- LLM을 tool을 사용한 복잡한 reasoning task 해결을 위한 interface 또는 vision task를 위한 agent로 사용하는 연구가 진행 중임.
- VisProg와 ViperGPT는 LLM을 활용하여 vision tool에 대한 호출이 포함된 실행 가능한 program을 생성하는 연구임.
- VPD는 이러한 연구들과 관련성이 높음.
3. Training and inference with chain-of-thought
- Chain-of-Thought (CoT)는 LLM 성능 향상을 위한 일반적인 접근 방식임.
- Program-of-Thoughts (PoT) 및 Faithful CoT는 LLM으로 program을 생성하고 실행하는 두 단계 inference를 통해 정확도를 높이고 hallucination을 줄임.
- CoT는 language model 훈련에도 사용됨.
- Distill step-by-step, PaD, SCOTT는 LLM에서 생성된 CoT로 더 작은 language model을 훈련하여 성능과 일관성을 향상시킴.
- Mammoth는 CoT와 PoT를 혼합하여 LLM을 훈련하여 수학 문제에 대한 SOTA 모델을 달성.
3. Visual Program Distillation (VPD)
LLM에서 생성된 program의 reasoning power와 vision tool의 low-level image understanding 능력을 single vision-language model로 distill하는 일반적인 model-agnostic framework인 VPD를 소개합니다 (Fig. 2). VPD는 기본적으로 다음 두 가지 주요 단계로 구성됩니다.
- Program generation and verification: 텍스트 query q와 visual input i가 주어지면 VPD는 먼저 vision module과 tool을 사용하여 query를 해결하는 program을 생성한 다음 program execution trace를 chain-of-thought c로 변환합니다 (§3.1).
- Distilling step-by-step: 이전 단계에서 생성된 visual input i, 텍스트 query q, chain-of-thought c는 vision-language model (VLM)으로 distill됩니다 (§3.2).
3.1. Program generation and verification
training data synthesis pipeline은 Fig. 2의 파란색 상자에 나와 있으며 네 단계로 구성됩니다. visual input i와 그 내용에 대한 텍스트 query q, 그리고 사용 가능한 경우 ground truth answer y로 구성된 샘플 (i, q, y)이 주어지면 다음 단계를 순차적으로 수행합니다.
- Program generation with LLM: q가 주어지면 π(q) = {z1, z2, ..., zk}인 k개의 후보 program 목록을 생성합니다. 여기서 π는 program generation function을 나타냅니다.
- Program execution with vision modules: execution engine ϕ를 사용하여 각 program zi를 실행하여 최종 결과 ϕ(i, zi) = ˆyi를 얻습니다. 그러나 program execution 중에 모든 intermediate function call과 output을 기록하는 execution trace ti를 유지 관리합니다. 이 단계가 끝나면 program, 결과, execution trace 목록 {(z1, yˆ1, t1), ...,(zk, yˆk, tk)}을 생성합니다.
- Program filtering: 이전 단계의 k개의 후보 program 중에서 정답이 있는 single tuple (z, y, t ˆ )을 유지합니다.
- Converting program execution traces into chain-of-thought rationales: LLM을 사용하여 t를 CoT c로 다시 작성합니다.
이제 위의 각 단계에 대해 자세히 설명합니다.
Program generation.
최근 연구와 유사한 접근 방식을 program generation 단계에 채택하고 PaLM-2를 LLM으로 사용하여 주어진 query q에 대한 후보 program을 생성합니다. ViperGPT에서 사용하는 것과 동일한 종류의 텍스트 prompt를 사용하여 PaLM-2에 프롬프트합니다. 이 프롬프트에는 사용 가능한 vision module에 대한 자세한 설명과 query q가 포함되어 있습니다 (Appendix §D의 프롬프트). LLM은 다음 단계에서 실행될 Python function definition을 직접 출력할 것으로 예상됩니다. 그러나 실험에서 top-k program의 성공률이 top-1 program보다 훨씬 높다는 것을 발견했습니다. 따라서 program z를 하나만 샘플링하는 기존 연구와 달리 ground truth answer y를 사용할 수 있는 경우 LLM decoding을 위한 temperature T를 설정하고 LLM에서 top-k 후보 program {z1, z2, ..., zk} 목록을 샘플링합니다. 그런 다음 이후 단계에서 올바른 program z를 하나 필터링합니다. §4.2의 ablation에서 볼 수 있듯이 이는 성능 향상에 매우 중요합니다. 모든 실험에서 T = 0.5 및 k = 5를 사용합니다. unlabeled data의 경우 k = 1이고 filtering 단계를 건너뛸 수 있습니다.
Program execution with vision modules.
ViperGPT와 동일한 execution engine ϕ를 사용합니다. LLM에서 생성된 program zi는 visual input i를 입력으로 받는 Python function입니다. LLM은 program을 텍스트 sequence로 출력하지만 execution engine ϕ는 이를 Python program으로 해석하고 실행하여 return result yˆi를 얻을 수 있습니다. 또한 ϕ는 program zi의 execution trace ti도 기록합니다. execution trace ti는 모든 vision module call, 입력, 출력에 대한 기록을 유지합니다. program에 다음 tool을 사용합니다. 간단한 visual query의 경우 PaLI-X, object detection의 경우 PaLI-X detection (OWLv2에서 distill), depth estimation의 경우 Google Cloud Depth API, 외부 지식의 경우 PaLM-2.
Program filtering.
§1에서 설명했듯이 visual program은 다양한 이유로 오류가 발생하기 쉽습니다. program이 잘못되었을 수 있으며 execution process에서 추가 오류가 발생할 수 있습니다. 이러한 문제를 극복하기 위해 program filtering 단계를 사용합니다. 먼저 top-k program을 샘플링하고 각 program을 실행하려고 시도합니다. 이 과정에서 execution에 실패한 program은 즉시 삭제됩니다. labeled data의 가용성에 따라 전략을 달리하여 나머지 program을 추가로 필터링합니다. human label을 사용할 수 있는 task의 경우 program output yˆi가 human label y와 일치하는 경우 입력 샘플당 정답이 있는 single program을 선택합니다. 이 경우 visual program pipeline은 CoT rationale annotator처럼 작동합니다. 잠재적인 문제 중 하나는 일부 task answer가 모호하다는 것입니다. 예를 들어 "말은 어디에 있습니까?"와 같은 질문의 경우 "산"과 "산들"이라는 답변이 모두 맞습니다. 에서 사용한 방법을 채택하고 LLM을 사용하여 program output이 올바른지 확인합니다 (자세한 내용은 §D 참조). 질문당 올바른 program이 두 개 이상 있는 경우 program 생성 LLM ϕ에서 제공하는 점수에 따라 가장 높은 점수를 받은 program을 선택합니다. 테스트를 통과한 program이 없는 경우 평가된 샘플이 낭비되지 않습니다. fine-tuning 단계에서 관련 CoT 없이 정답 y를 supervision으로 사용합니다. human-rated answer를 사용할 수 없는 경우 가장 높은 점수를 받은 실행 가능한 program을 직접 사용합니다.
Converting program execution traces into chain-of-thought rationales.
filtering 단계 후 각 visual input i와 query q에 대해 최대 하나의 program z와 execution result yˆ 및 trace t를 선택합니다. 대부분의 기존 VLM은 자연어 텍스트로 pretrained되었으며 code로 pretrained되지 않았으므로 LLM을 사용하여 execution trace t를 VLM distillation을 위한 자연어 CoT c로 다시 작성합니다. 몇 가지 예는 §A에 나와 있습니다. 구체적으로 기존 연구와 유사하게 입력 (q, z, t)을 CoT로 변환하는 방법에 대한 예를 20개 작성하고 이를 PaLM-2에 프롬프트하기 위한 few-shot으로 사용합니다. PaLM-2는 in-context learning을 수행하고 새로운 예에 대한 CoT를 생성합니다. §D에 구체적인 예가 포함되어 있습니다.
3.2. Distilling step-by-step
이 단계에서는 §3.1에서 생성된 training data로 backbone VLM을 fine-tune하여 생성된 program의 knowledge와 reasoning 단계를 single end-to-end model로 distill합니다. VLM이 여러 유형의 task (예: free-form VQA, multiple choice)에 대해 합성된 데이터로 동시에 fine-tune되는 multitask 방식으로 이를 수행합니다.
f를 VLM model이라고 하겠습니다. 동일한 VLM architecture가 이러한 모든 task를 해결할 수 있지만 task에 적응하려면 다르게 프롬프트해야 합니다. 기존 연구에 따라 각 task에 대한 instruction을 수동으로 설계합니다. 예를 들어 free-form VQA query의 경우 instruction은 "단일 단어 또는 구로 답변"이고 multiple-choice query의 경우 "주어진 선택 항목에서 옵션 문자로 직접 답변"을 사용합니다. fine-tuning 중에 모든 task에 대해 생성된 training sample을 single dataset으로 결합하므로 다양한 유형의 task를 고려하여 각 샘플을 해당 task별 프롬프트 p로 augment합니다.
이러한 instruction과 §3.1에서 생성된 데이터를 사용하여 training dataset D = {(ij , qj , yˆj , cj , pj )}N j=1을 종합합니다. 여기서 N은 총 샘플 수이고 ij는 visual input이고 qj는 텍스트 query이고 yˆi는 visual program output이고 cj는 CoT rationale입니다.
f를 훈련하여 label과 rationale을 모두 예측하기 위한 손실을 최소화합니다. Fig. 2의 빨간색 상자와 같이 와 유사하게 output label yˆj와 rationale cj를 예측하는 것을 두 가지 별도의 최적화 목표로 취급합니다. 그러나 VLM
은 open-ended text generation model이므로 짧은 답변을 원하는지 rationale이 포함된 긴 답변을 원하는지 나타내기 위해 추가 프롬프트가 필요합니다. 따라서 CoT를 생성하기 위한 프롬프트 끝에 접미사 sc = "Explain the rationale to answer the question"을 추가하고 짧은 답변에는 task instruction pj를 사용합니다. 최적화 목표는 다음과 같습니다.
L = Llabel + Lrationale (1)
ΣNj=1 ℓ(f(ij , qj , pj ), yˆj ) + ℓ(f(ij , qj , sc), cj ) (2)
여기서 ℓ은 label (일반적으로 짧음)과 rationale (일반적으로 김)의 가중치가 비슷하도록 sequence length로 정규화된 cross entropy loss입니다. Lrationale은 VLM이 program execution trace와 유사한 충실한 reasoning 단계를 생성하도록 가르치고 VLM이 label을 더 잘 예측하는 데 도움이 되는 label yˆ 이상의 정보를 전달합니다. 테스트하는 동안 rationale generation은 필요하지 않습니다. p를 사용하여 짧은 output label을 직접 얻고 필요한 경우 sc를 사용하여 사람이 해석할 수 있는 reasoning 단계를 얻도록 task instruction을 조정할 수 있습니다.
3. Visual Program Distillation (VPD) 정리 노트
목표:
- LLM으로 생성된 program의 추론 능력과 vision tool의 low-level image understanding 능력을 하나의 VLM으로 distill.
주요 단계:
- Program generation and verification:
- LLM (PaLM-2)을 사용하여 vision module과 tool을 이용해 query를 해결하는 program 생성.
- Program execution trace를 chain-of-thought (CoT)로 변환.
- Distilling step-by-step:
- 생성된 visual input, 텍스트 query, CoT를 VLM으로 distill.
3.1 Program generation and verification 상세:
- Program generation with LLM:
- LLM에 query를 제공하여 여러 후보 program 생성 (top-k 샘플링).
- 개선점: 기존 연구와 달리 top-k program을 샘플링하여 성공률을 높임.
- Program execution with vision modules:
- Execution engine을 사용하여 각 program을 실행하고 결과 및 execution trace 기록.
- 사용 tool: PaLI-X, PaLI-X detection, Google Cloud Depth API, PaLM-2
- Program filtering:
- 실행 가능한 program 중 정답을 생성하는 program을 선택.
- 개선점: program 오류 및 실행 오류를 줄이기 위해 filtering 단계 도입.
- labeled data가 있는 경우: 정답과 일치하는 program 선택.
- labeled data가 없는 경우: 가장 높은 점수의 program 선택.
- Converting program execution traces into chain-of-thought rationales:
- LLM을 사용하여 program execution trace를 자연어 CoT로 변환.
- 방법: 소량의 예시를 사용하여 PaLM-2를 few-shot learning.
3.2 Distilling step-by-step 상세:
- Multitask fine-tuning: 여러 task에 대해 합성된 데이터로 VLM을 fine-tuning.
- Task-specific instruction: 각 task에 맞는 instruction을 수동으로 설계.
- Loss function: label 예측과 rationale 생성을 위한 두 가지 loss를 사용하여 최적화.
- L = Llabel + Lrationale
- Rationale prompting: rationale 생성을 위한 추가적인 프롬프트 사용.
- 추론: rationale 생성 없이 짧은 답변 또는 사람이 이해할 수 있는 reasoning 단계를 출력하도록 task instruction 조정.
핵심:
- VPD는 LLM과 vision tool을 활용하여 VLM의 추론 능력을 향상시키는 새로운 framework.
- Program 생성, 실행, filtering, 변환, distilling 과정을 통해 효과적인 knowledge transfer를 가능하게 함.
4. Experiments
이 섹션에서는 VPD를 사용하여 generalist VLM을 훈련함으로써 VPD의 효과를 입증합니다. 서로 다른 scale의 두 가지 VLM, PaLI-3 (5B)와 PaLI-X (55B)에 대해 이를 시도합니다. 자세한 실험 설정은 §4.1에 나와 있습니다. 정성적으로 VPD로 fine-tune된 모델은 Fig. 3에 나와 있듯이 program처럼 단계별로 추론하는 능력을 보여주며 사람 평가 결과 (§4.3)에서도 뒷받침됩니다. 정량적 결과는 PaLI-3-VPD와 PaLI-X-VPD가 generalist 및 per-task fine-tuning 설정 (§4.2) 모두에서 광범위한 task에 대해 새로운 SOTA를 달성했음을 보여줍니다. 또한 성능 향상의 원인에 대한 자세한 분석을 수행합니다 (§4.2). 마지막으로 모델에서 생성된 rationale의 품질에 대한 사람 평가를 수행하고 VPD 없이 훈련된 instruction-tuned model에서 생성된 rationale과 비교합니다 (§4.3).
4.1. Experimental setup
Backbone models. base model로 두 가지 state-of-the-art VLM, PaLI-3 (5B)와 PaLI-X (55B)를 사용합니다. 둘 다 이미지와 텍스트를 입력으로 받아 텍스트를 출력으로 생성합니다. 간략하게 하기 위해 각각에 대해 수행된 단계를 설명할 때 "PaLI model"이라고 합니다.
Data for Generalist Models. pretrained PaLI model을 두 가지 유형의 dataset으로 fine-tune하여 generalist VLM으로 만듭니다. 즉, 특정 task에 대한 추가 훈련 없이 모든 task에서 비교적 잘 수행되는 모델입니다. (1) Self-Instruct 방식으로 생성된 Multimodal Instruction-Tuning (MMIT) task. LLM에 image caption이 제공되면 해당 이미지에 대한 task input과 원하는 output을 생성합니다. MMIT task에 대한 자세한 내용은 에서 다룹니다. 이러한 task는 광범위한 일반적인 사용 사례를 다루지만 이 연구에서 사용되는 특정 in-domain task는 포함하지 않습니다. (2) Academic task-oriented VQA task. image caption에는 이미지의 visual information에 대한 대략적인 설명만 포함되어 있으며 task를 해결하는 데 중요한 세부 정보가 누락될 수 있습니다. 또한 LLM은 이러한 data curation process 중에 hallucination을 일으킬 가능성이 높습니다. VLM의 정확도를 더욱 높이기 위해 academic task-oriented VQA task로 PaLI model을 fine-tune합니다. data mixture는 general VQA (VQAv2), optical character recognition (OCRVQA), compositional question and reasoning (GQA), counting (TallyQA), 외부 지식을 포함하는 VQA (OK-VQA 및 A-OKVQA)를 포함한 광범위한 VQA task의 subset을 다룹니다. task에는 텍스트 query와 짧은 expected label이 포함되어 있습니다. §3.1의 pipeline을 사용하여 이러한 label에 대한 CoT reasoning 단계를 합성하고 Equation 1의 손실로 PaLI model을 tuning합니다. 때때로 pipeline이 정답을 생성하는 program을 찾지 못하는 경우가 있습니다. 이 경우 Lrationale을 0으로 설정하고 Llabel만 유지합니다. §4.2에서는 filtering 단계 후 유지되는 program 수를 보여줍니다. training data mixture에 대한 자세한 내용은 §B에 있습니다.
Data for specialist models. VPD로 generalist model을 fine-tune하는 동안 각 task의 training data의 subset만 사용합니다. 각 개별 task에 대한 모델의 능력을 평가하기 위해 training split에서 각 개별 task에 대해 PaLI-3-VPD와 PaLI-X-VPD를 계속 fine-tune합니다.
Training setup. PaLI-3과 PaLI-X는 모두 encoder-decoder architecture를 따릅니다. 여기서 이미지는 visual encoder를 통해 visual token으로 encode된 다음 UL2 model로 전달됩니다. 리소스 제약으로 인해 LoRA를 사용하여 두 PaLI model을 모두 fine-tune합니다. 특히 UL2 transformer의 encoder와 decoder 모두에 대해 attention block과 MLP block의 각 linear layer에 LoRA weight를 추가합니다. 자세한 training 내용은 §B에 있습니다.
Evaluation setup. 다양한 VQA task와 최근의 zero-shot VLM benchmark를 포함한 광범위한 task에 대해 모델을 평가합니다. A-OKVQA에는 multiple-choice (MC)와 direct answer (DA)의 두 가지 종류의 질문이 포함되어 있습니다. 둘 다에 대한 결과를 보고합니다. TallyQA에는 object relationship, attribute identification, reasoning을 포함하는 복잡한 counting 질문이 포함되어 있습니다. simple과 complex의 두 가지 평가 partition이 있습니다. TextVQA는 텍스트 읽기에 중점을 둡니다. zero-shot task에서 모델을 평가하기 위해 이를 포함합니다. VQA task 외에도 두 가지 인기 있는 VLM benchmark에서 모델을 테스트합니다. POPE는 VLM hallucination에 중점을 두고 있으며 이미지에 object가 있는지 여부에 대한 binary 질문을 포함합니다. MMBench는 광범위한 fine-grained 능력 (예: object localization, attribute recognition, spatial relationship)을 테스트하는 강력하고 포괄적인 VLM benchmark입니다. evaluation set과 metric에 대한 자세한 내용은 §B에 있습니다.
Baselines. VPD로 fine-tune된 두 가지 PaLI model을 PaLI-3-VPD 및 PaLI-X-VPD라고 하고 다양한 baseline과 비교합니다. VPD의 효과를 평가하기 위해 data mixture에서 합성된 CoT를 제거하고 동일한 hyper-parameter와 단계로 PaLI model을 훈련합니다. 이러한 model을 PaLI-3 Instruct 및 PaLI-X Instruct라고 합니다. 공정한 비교를 위해 이러한 model은 VPD variant와 동일한 이미지와 텍스트 query에서 ground truth answer를 예측하기 위한 동일한 supervised loss로 훈련됩니다. 또한 최신 SOTA vision-language model과도 비교합니다. 이러한 VLM은 pretrained visual encoder와 LLM으로 초기화된 다음 image-text pair, LLM에서 생성된 데이터, academic task로 훈련됩니다.
목표:
- VPD를 사용하여 generalist VLM을 훈련하고 그 효과를 검증.
- 다양한 task에서 VPD가 VLM의 성능을 향상시키는지 확인.
실험 방법:
- Backbone 모델: PaLI-3 (5B) & PaLI-X (55B)
- Generalist 모델 훈련 데이터:
- Multimodal Instruction-Tuning (MMIT) tasks: 다양한 사용 사례를 포괄하는 LLM 생성 데이터.
- Academic task-oriented VQA tasks: VQAv2, OCRVQA, GQA, TallyQA, OK-VQA, A-OKVQA 등 다양한 VQA task의 subset.
- 핵심: VPD pipeline을 사용하여 CoT reasoning 단계를 합성하고 모델을 fine-tuning.
- Specialist 모델 훈련 데이터: 각 task의 training data subset을 사용하여 fine-tuning.
- 훈련 설정:
- Encoder-decoder architecture (UL2 transformer)
- LoRA를 사용하여 fine-tuning.
- 평가 설정:
- 다양한 VQA task (A-OKVQA, TallyQA, TextVQA)
- VLM benchmark (POPE, MMBench)
- Baseline 모델:
- PaLI-3 Instruct & PaLI-X Instruct: VPD 없이 instruction-tuning data로만 훈련된 모델.
- 최신 SOTA vision-language models.
주요 결과:
- 정성적 결과: VPD로 fine-tune된 모델은 program처럼 단계별로 추론하는 능력을 보임 (Fig. 3).
- 정량적 결과: PaLI-3-VPD와 PaLI-X-VPD는 다양한 task에서 SOTA를 달성.
- 성능 향상 분석: VPD의 효과를 분석하고 성능 향상의 원인을 파악.
- Human evaluation: VPD로 훈련된 모델이 더 일관되고 충실한 rationale을 생성함을 확인.
핵심:
- VPD는 다양한 VQA task 및 VLM benchmark에서 VLM의 성능을 향상시키는 효과적인 방법.
- VPD는 LLM과 vision tool의 능력을 결합하여 VLM의 추론 능력을 향상시킴.
- VPD는 generalist VLM 뿐만 아니라 specialist VLM에도 적용 가능.
- 학습 시 입력으로 question, image, answer (정답)을 LLM에게 제공하여, 주어진 질문과 이미지에 대해 정답에 해당하는 코드를 생성하도록 시킴.
- top-k 샘플링을 통해 최대 20개의 코드 후보를 생성. (논문에서 K=5)
- 생성된 각 프로그램을 실행해 보고, 코드 실행 결과가 answer와 일치하는 코드만 남김.
- 코드 실행에 실패하거나 정답에 맞지 않는 코드는 모두 제외.
- 올바른 코드의 실행 결과(execution trace)를 LLM을 이용하여 자연어 CoT로 변환하고, 이 CoT와 추가 프롬프트를 함께 VLM에 전달하여 정답을 출력하게 함."
- 이때, 학습 시에는 VLM이 최종 답변과 함께 추론 과정 (CoT)도 생성하도록 추가 프롬프팅.
- Loss는 최종 정답(answer)과 비교하고 추론 과정 역시 loss로 사용해서 두개의 합을 최종 loss로 사용. (논문에는 자세하게 나와있지 않지만 넘겨준 CoT가 그대로 정답 rationale로 사용되는 것 같음.)
- CoT는 정답과 일관된 추론 경로를 따르도록 간접적으로 학습되며, 모델이 최종 정답에 도달할 수 있도록 최적화.