解密Prompt系列33. LLM之圖表理解任務-多模態篇

风雨中的小七發表於2024-07-06

上一章我們介紹了純文字模態的表格理解任務,這一章我們聚焦多模態圖表資料。先討論下單純使用prompt的情況下,圖片和文字模態哪種表格模型理解的效果更好更好,再說下和表格相關的圖表理解任務的微調方案。

Prompt:表格模態哪家強

使用prompt對比SO他的文字模型和多模態模型,哪個在表格理解任務上效果更好,可以借鑑以下兩篇論文,前者使用了已有的TableQA Benchmark,後者新構建的TableVQA Benchmark。

Table as Text or Image

  • TableVQA-Bench: A Visual Question Answering Benchmark on Multiple Table Domains

這是一篇實驗性論文,有如下幾個實驗變數

  • 不同的開源(llama2)閉源(GPT3.5,GPT4,Gmini)模型
  • 不同格式的文字表格資料:純文字逗號分割(vanilla)類,行號標註類,括號陣列類,行json,列json等5種
  • 不同格式的圖片表格資料:純表格圖片(Vanilla),每列一種顏色,每行一種顏色等3種
  • 不同的prompt方案:vanilla,COT,和專家prompt(假設你是一個XX專家)

Clipboard_2024-06-19-08-28-59.png

論文使用了以下6個資料集的混合,分別對TableQA,Table Fact-check,Table-to-text等任務進行評估。

image

直接來看實驗結論吧

  1. 圖片和文字的效果在不同資料集上存在差異,Gmini和GPT4,當使用Vanilla的表格文字和表格圖片時,在FinQA上圖片顯著更好,而在TabFact和WikiTQ上文字顯著更好。論文猜測的點是FinQA的上文更長,導致文字表徵模型容易混淆資訊,而WikiTQ和TabFact是維基百科的資料,文字模型可能在預訓練時見過才導致的效果更好。對比並不太充分,這麼看感覺圖片和文字的效果還是要在實際使用的場景上去做測試。

image

  1. 不論是圖片和文字模態,COT都能帶來顯著的效果提升,文字prompt上一章微軟的另一篇論文中已經說過了,這裡只看圖片的實驗結果,下圖列(V,E,COT)分別是vanilla,ExPert和COT,行(VV,CC,RC)分別是圖片無顏色,列高亮,和行高亮

image

更多文字模態的結論和前一章微軟的論文有所重合這裡了就不多說了,圖片和文字的對比感覺不太充分,我們再看下下面的另一篇論文

TableVQA-Bench

  • TableVQA-Bench: A Visual Question Answering Benchmark on Multiple Table Domains
  • https://github.com/naver-ai/tablevqabench?tab=readme-ov-file

第二篇論文我們說下新出爐不久的TableVQA評估集,論文提出了新的多模態表格評估資料集。和以上論文的資料集存在重合,不過更細緻地給出了資料集構建的細節,以及論文的結論也和前文存在差異。

評估集由以下三個資料集構成(點選連結可以看到資料)

  • VWTQ:從維基百科表格問答的資料集WTQ,透過wiki網頁連結獲取原始表格的HTML截圖得到圖片,並透過Table Renderer對錶格屬性進行修改,降低維基百科在預訓練中的資料洩露問題再透過截圖獲取圖片資料(VWTQ-Syn)
  • VTabFact: 表格事實檢查的另類QA問題,這裡未提供原始html,因此使用csv資料轉換成偽html,再使用Table Renderer進行屬性修改和截圖
  • FinTabNetQA: 本身是TSR任務,因此論文使用GPT4和HTML作為輸入構建了QA對

上面提到的Table Renderer其實就是隨機修改表格的HTML樣式,例如加入cell color,調整文字對齊,修改邊界樣式,給表格加背景色等等。

基於以上評估集,論文對眾多開源和商用MLLM進行了整體評估,結果如下

  • 在3個資料集上:文字模態>圖轉文>圖片模態:這裡的TabFact和WTQ資料集和上面一篇的論文重合,上面論文這兩個資料集也是文字>圖片,但並未測試前面論文中圖片模態表現更好的FinQA資料集。
  • 當圖片模態效果不好時不妨試試先進行TSR模態轉換: 論文還測試了用GPT-4V把圖片模態轉換成文字模態再用GPT-4進行回答的折中模式,效果比圖片模態有提升

Clipboard_2024-06-19-07-51-38.png

我們結合兩篇論文來看,在當前的prompt水平上,整體上還是文字模態的表格要更好些,但確實可能存在不同上下文和表格型別上表現不同的差異性~

說完純prompt的方案,我們再來看下圖表理解相關的微調方案,這裡的微調方案更多是針對圖表資料中的圖,例如餅圖,時序圖,直方圖等等分別介紹ChartLlama和TinyChart兩篇論文,還有一些相關的論文像ChartInstruct,ChartX,ChartAssistant會列在最後感興趣的大家自己去看吧~

Chart SFT

ChartLlama

  • https://tingxueronghua.github.io/ChartLlama/
  • ChartLlama: A Multimodal LLM for Chart Understanding and Generation

ChartLlam的核心其實是給了一套構建多模態圖表指令理解資料集的方案。然後基於構建的資料集在Llava-1.5上進行了微調訓練。Llava-1.5是由VIT-L/14@336px作為影像編碼器,兩層MLP作為投影層,Llama作為LLM。這裡ChartLlama只對Projection層和Llama層進行了微調。

既然以構建大規模,多樣性的圖表理解資料為主,那我們就重點說下資料構建的細節。分成以下三個步驟

Clipboard_2024-06-21-08-55-33.png

  • step1: Chart Data生成
    這裡包含從頭讓GPT4直接構建和從已有資料中合成。以下prompt用於GPT直接生成資料,論文透過隨機取樣主題(預先生成了100+主題短語),資料趨勢,表格的行數和列數,以及圖片型別。這部分除了生成資料,還會生成資料的描述在最後的推理部分幫助模型理解資料。第一部分的核心其實是如何避免模型生成毫無意義的低質量資料

image

  • Step2: 基於ChartData繪製圖片
    基於以上獲得的資料,論文使用GPT4的程式碼能力,生成matplotlib的繪圖程式碼從而生成圖片。為了程式碼生成的準確率,論文會隨機取樣可以成功執行的程式碼作為In-Context上文,並加入相關函式的documentation作為上文。這裡除了生成程式碼同時還會生成圖片描述,在最後的推理部分幫助模型理解圖片。但整體上感覺只使用matplotlib比較容易導致這一步構建的圖片本身的樣式相對單一。

image

  • step3:QA對樣本生成
    獲得圖片後,就可以進行QA對的樣本生成了。這裡模型的輸入會包括原始資料,前兩部分生成的資料和圖片的描述,以及問題型別。這裡論文涵蓋了TableQA,Summarization,資料抽取,圖示描述,程式碼生成和圖片編輯等豐富的問題型別。最終構建了總共160K的指令樣本

image

微調和效果部分就不細說了在後面的TinyChart裡面會有ChartLlama的效果資料。

TinyChart

  • TinyChart: Efficient Chart Understanding with Visual Token Merging and Program-of-Thoughts Learning

除了ChartLlama後面還有過很多篇論文但多數也是構建不同的資料,在不同的模型上去訓練,這裡我們再看一篇針對效率提升的論文。

TinyChart使用了更高效的畫素合併和Program-of-Thoguhts讓3B的MLLM一舉超越了13B的ChartLLama。TinyChart的整體模型結構也是傳統的MMLM,由Vision Transformer Encoder,Connector和LLM構成,下面我們主要說下提升效率的影像元素合併,以及提升效果的PoT

Visual Token Merging

圖片編碼器的輸入會先把圖片壓縮到固定畫素(N),然後裁剪成多個大小為(P)的區域作為視覺模型的token輸入。因此視覺模型的token數=(N//p)^2。考慮到Chart圖表理解往往需要用到圖片中的文字等資訊,因此必須使用高畫素的圖片。而畫素N的提升會帶來輸入token平方級的增長。這裡論文提出可以透過相似token合併來降低每一層的token量級。

這裡其實用到了chart圖表本身的圖片特徵,例如餅圖和直方圖等圖片會在區域性存在大量的同色色塊,以及空白,因此在裁剪的區域上可以再做一層相似合併。

這裡合併使用了token的self-attention的cosine similar來作為相似度度量,然後使用了二分圖匹配演算法,有點好奇為啥是用這個方案而不直接用矩陣。就是把所有token分兩堆,然後男嘉賓(左邊一堆)去找最喜歡(相似)的女嘉賓(右邊一堆),保留最有眼緣(最相似)的r對嘉賓(token)進行合併。這裡token合併並不一定是相鄰token。

Clipboard_2024-06-20-08-42-49.png

同時考慮到合併後參與attention計算的元素會減少,因此論文加入了被合併的元素數來調整scale。

\[Attention = softmax(\frac{QK^T}{\sqrt{d}} + logs)V \]

直觀來看下Token Merge的效果,這裡論文展示了Transformer最後一層中最大的十組Merged Token,基本上都是白色背景,或者純色的色塊。

Clipboard_2024-06-21-08-07-31.png

Program-of-Thought

為了提升模型在解決圖表問題中數學計算等邏輯推理問題的效果,論文在訓練時加入了讓模型推理生成多步python程式碼的Program-of-Thought樣本。而在推理時論文,會透過簡單的關鍵詞判斷,如果涉及計算類問題,就選擇讓模型進行程式碼推理的prompt,否則使用文字推理的prompt。

這裡論文分別透過模板和GPT進行了Chart-POT資料集的構建,總共構建了140,584條樣本(question,POT Answer),每個answer包含完整帶comment的python程式碼。包含chartQA,chart-to-text,chart-to-table,chart指令理解等幾種任務,其中

  • Template-Base
    這裡論文從PlotQA中選了40個問題,然後手工編寫了對應的Python程式碼模版,之後從每個data-table中隨機取樣欄位和數值填入模版。總共構建了119,281個樣本對
  • GPT-Base
    儘管以上模版的樣本對量級很大,但多樣性非常有限,因此論文還使用以上template生成的q+code樣本對作為In-Context上文,讓GPT3.5基於文字化的表格資料進行回答構建。因為生成的python numpy程式碼,因此可以直接intrepreter執行檢測輸出是否正確。總共構建了21303個樣本。

樣本demo如下

Clipboard_2024-06-20-08-59-49.png

之後基於以上的樣本,TinyChart是基於TinyLlava,包含SIGCLIP作為影像Encoder,Phi-2作為作為LLM,然後分別在512*512,以及768*768的畫素上進行全模型的微調。

效果如下,因為表格理解類任務的樣本豐富度相對有限,所以在同領域的效果提升會比較明顯,所以這個結果嘛看看就好~

論文還做了消融實驗,對比了POT的加入,確實能有效提升模型在計算類問題上的效果,以及更高的解析度配合TokenMerge可以推理效率持平的情況下提升模型效果。

Clipboard_2024-06-21-07-53-08.png

其他相關論文

  • ChartAssisstant: A Universal Chart Multimodal Language Model via Chart-to-Table Pre-training and Multitask Instruction Tuning
  • ChartInstruct: Instruction Tuning for Chart Comprehension and Reasoning
  • ChartX & ChartVLM: A Versatile Benchmark and Foundation Model for Complicated Chart Reasoning
  • MMC: Advancing Multimodal Chart Understanding with Large-scale Instruction Tuning

想看更全的大模型相關論文梳理·微調及預訓練資料和框架·AIGC應用,移步Github >> DecryPrompt

相關文章