文章目錄[隱藏]
如何使用1B參數的小模型吊打GPT3.5!
簡介
大型語言模型 (LLM) 通過利用思維鏈 (CoT) 提示生成中間推理鏈作為(wei) 推斷答案的基本原理,在複雜推理上表現出了令人印象深刻的性能。然而現有的 CoT 研究主要集中在語言模態上。我們(men) 提出 Multimodal-CoT(多模態思維鏈推理模型),它將語言(文本)和視覺(圖像)模態結合到一個(ge) 兩(liang) 階段框架中,該框架將基本原理生成和答案推理分開。通過這種方式,答案推理可以利用基於(yu) 多模態信息的更好的生成原理。使用 Multimodal-CoT,作者提出的模型在 對ScienceQA 數據集進行評估,結果顯示在少於(yu) 10 億(yi) 個(ge) 參數下比之前 LLM(GPT-3.5)高出 16 個(ge) 百分點(75.17%→91.68% )的準確率。
論文地址:https://arxiv.org/abs/2302.00923
代碼地址:https://github.com/amazon-science/mm-cot
本文研究在小於(yu) 10 億(yi) 參數的情況下就產(chan) 生了性能提升,是如何做到的呢?簡單來講,本文提出了包含視覺特征的 Multimodal-CoT,通過這一範式(Multimodal-CoT)來尋找多模態中的 CoT 推理。
1、什麽是COT
COT全稱為(wei) Chain-of-Thought,定義(yi) 是在應對推理任務時,在給出最終答案之前所產(chan) 生的中間推理步驟,載體(ti) 是一係列的短句子 。簡單來說,思維鏈是一種離散式提示學習(xi) ,更具體(ti) 地,大模型下的上下文學習(xi) (即不進行訓練,將例子添加到當前樣本輸入的前麵,讓模型一次輸入這些文本進行輸出完成任務),相比於(yu) 之前傳(chuan) 統的上下文學習(xi) ,即通過x1,y1,x2,y2,....x_test作為(wei) 輸入來讓大模型補全輸出y_test,思維鏈多了中間的一些閑言碎語絮絮叨叨,以下麵這張圖為(wei) 例子:
上圖展示了在 CoT 誕生之前是怎樣使用標準的 prompting 方法來求解推理任務的。首先這是一個(ge) 少樣本學習(xi) 的方法,需要給出一些問題和答案的樣例,然後拚接這正想要求解的問題,最後再拚接一個(ge) 字符串“A:”之後輸入到大語言模型中,讓大語言模型進行續寫(xie) 。大語言模型會(hui) 在所提供的問題和答案的樣例中學習(xi) 如何求解,結果發現很容易出錯,也就是上麵提到的大語言模型在推理任務上很容易遇到瓶頸
上圖展示了 CoT 的做法,CoT 與(yu) Standard prompting 唯一的區別就是,CoT 在樣例中在給出問題的同時,不僅(jin) 給出了答案,在答案之前還給出了人為(wei) 寫(xie) 的中間推理步驟。在把問題、中間推理步驟和答案的若幹樣例拚接上所想要求解的問題和字符串“A”,再輸入到語言模型之後,語言模型會(hui) 自動地先續寫(xie) 中間推理步驟,有了這些推理步驟之後,它就會(hui) 更容易地給出正確答案,也就是能夠更好地解決(jue) 推理這類的問題
2、研究背景
2.1 使用LLM進行CoT推理
最近,CoT 已被廣泛用於(yu) 激發多步LLM 的推理能力。具體(ti) 來說,CoT 技術鼓勵 LLM 生成用於(yu) 解決(jue) 問題的中間推理鏈,主要技術有Zero-SHot-CoT、Few-Shot-CoT、Manual-CoT、Auto-CoT
優化推理演示
Few-Shot-CoT的性能比較依賴於(yu) 演示的質量,使用不同人員編寫(xie) 的演示例子在符號推理任務中產(chan) 生的準確性浮動比較大。除了手工製作演示之外,最近的研究還研究了調整演示選擇過程的方法,比如Auto-CoT。除此之外,還有作者提出了基於(yu) 複雜性的語言模型中的強化學習(xi) (RL)和多模態思維鏈推理策略,已經獲得有效的論證,比如GPT-3.5。
優化推理鏈
優(you) 化推理鏈的一個(ge) 常用的方法是問題分解,有人提出了最小到最大的提示,將複雜問題分解為(wei) 子問題,然後依次解決(jue) 這些子問題。因此,對先前解決(jue) 的子問題的答案有助於(yu) 解決(jue) 一個(ge) 給定的子問題。
2.2 通過微調模型引出CoT推理
最近的一個(ge) 興(xing) 趣是通過微調語言模型來引出CoT推理。在一個(ge) 帶有CoT注釋的大規模數據集上對Encoder-Decoder結構的T5模型進行了微調。然而,當使用CoT來推斷答案時,可以觀察到性能的急劇下降,即在答案(推理)之前生成推理鏈,相反,CoT隻被用作答案之後的解釋。後續有人通過對一個(ge) 更大的教師模型產(chan) 生的思維鏈輸出的學生模型來微調知識蒸餾,該方法在算術、常識和符號推理任務方麵都表現出了性能的提高。具體(ti) 論文和代碼可以查閱《Large Language Models Are Reasoning Teachers》:論文鏈接:https://arxiv.org/pdf/2212.10071.pdf
項目地址:https://github.com/itsnamgyu/reasoning-teacher
3、多模態CoT的挑戰
現有研究表明,CoT推理能力可能以一定規模出現在語言模型中,例如超過1000億(yi) 個(ge) 參數。然而,在1b模型中引出這種推理能力仍然是一個(ge) 未解決(jue) 的挑戰,更不用說在多模態場景中了。本篇論文工作的重點是1b模型,因為(wei) 它們(men) 可以用消費者級gpu(例如,32G內(nei) 存)進行微調和部署。在本節中,作者進行了一些列實驗,研究了為(wei) 什麽(me) 1b模型在CoT推理中失敗,並研究如何設計一個(ge) 有效的方法來克服挑戰。
3.1 CoT的作用
首先,作者在ScienceQA基準測試上微調了CoT推理的純文本基線,采用UnifiedQABase作為(wei) 文本主體(ti) 模型。3我們(men) 的任務被建模為(wei) 一個(ge) 文本生成問題,其中模型將文本信息作為(wei) 輸入,並生成由基本原理和答案組成的輸出序列。如圖1所示的一個(ge) 示例,該模型將問題文本(Q)、上下文文本(C)和多個(ge) 選項(M)的標記串聯起來作為(wei) 輸入。
為(wei) 了研究CoT的影響,我們(men) 將其性能與(yu) 三種變量進行了比較:(i)直接預測答案(QCM→A)(無CoT);(ii)推理+預測答案(QCM→RA);(iii)預測答案+解釋(QCM→AR)。
令人驚訝的是,我們(men) 觀察到,如果模型在答案之前預測原因或者原理(QCM→RA),準確率下降↓了12.54%(80.40%→67.86%)。結果表明,這些理論原理不一定有助於(yu) 預測正確的答案。在其他研究中也觀察到類似的現象,其中合理的原因可能是模型在獲得所需的答案之前超過了最大長度限製,或提前停止生成預測。然而,我們(men) 發現生成的輸出(RA)的最大長度總是小於(yu) 400個(ge) 字符,這低於(yu) 語言模型的長度限製(即UnifiedQABase中的512個(ge) )。因此,它值得更深入地研究為(wei) 什麽(me) 這些理論原理會(hui) 影響答案推理效果。
3.2 模型被“幻覺”推理誤導
為(wei) 了深入研究推理如何影響答案預測,我們(men) 將CoT問題分為(wei) 兩(liang) 個(ge) 階段,推理生成和答案預測。我們(men) 計算出了推理生成和答案預測的RougeL分數和準確性。表3顯示了基於(yu) 兩(liang) 階段框架的結果。雖然兩(liang) 階段基線模型獲得了91.76的RougeL分數,但答案推理精度僅(jin) 為(wei) 70.53%。與(yu) 表2中的QCM→A(80.40%)相比,結果顯示,在兩(liang) 階段框架中生成的基本原理並沒有提高答案的準確性。
然後,我們(men) 隨機抽樣50個(ge) 錯誤案例,發現該模型傾(qing) 向於(yu) 產(chan) 生誤導答案推斷的幻覺理由。如圖2所示,
模型(左部分)產(chan) 生幻覺,“一個(ge) 磁鐵的南極最靠近另一塊磁鐵的南極”。我們(men) 發現,這些錯誤在錯誤情況中發生的比例為(wei) 64%
3.3 多模態有助於實現有效的基本推理
我們(men) 推測,這種幻覺推理現象是由於(yu) 缺乏必要的來執行有效的多模態cot的視覺環境。為(wei) 了注入視覺信息,一種簡單的方法是將成對的圖像轉換為(wei) 標題然後在兩(liang) 個(ge) 階段的輸入中附加標題。然而,如表3所示,使用標題隻能產(chan) 生邊際的性能提高(↑0.59%)。然後,我們(men) 通過將視覺特征合並到語言模型中來探索一種高級技術。具體(ti) 地說,我們(men) 將成對的圖像輸入DETR模型來提取視覺特征。
然後我們(men) 在輸入解碼器之前 將視覺特征和語言表示融合。有趣的是,有了視覺特征,理論基礎生成的RougeL得分已經提高到96.97%(QCM→R),這相應地有助於(yu) 更好的回答準確率達到84.91%(QCMR→A)。有了這些有效的理由,幻覺現象就得到了緩解,其中62.5%的幻覺錯誤已經被糾正所示,視覺特征確實有利於(yu) 產(chan) 生有效的理由,並有助於(yu) 準確的答案推斷。由於(yu) 表3中的兩(liang) 階段方法(QCMR→A)比表2中的所有單階段方法都有更好的性能,因此我們(men) 在多模態-cot框架中選擇了雙階段方法。
4、多模態COT
總的來說,我們(men) 需要一個(ge) 可以生成文本特征和視覺特征並利用它們(men) 生成文本響應的模型。又已知文本和視覺特征之間存在的某種交互,本質上是某種共同注意力機製,這有助於(yu) 封裝兩(liang) 種模態中存在的信息,這就讓借鑒思路成為(wei) 了可能。為(wei) 了完成所有這些,作者選擇了 T5 模型,它具有編碼器 - 解碼器架構,並且如上所述,DETR 模型用於(yu) 生成視覺特征。
class T5ForMultimodalGeneration(T5ForConditionalGeneration): _keys_to_ignore_on_load_missing = [ r"encoder.embed_tokens.weight", r"decoder.embed_tokens.weight", r"lm_head.weight", ] _keys_to_ignore_on_load_unexpected = [ r"decoder.block.0.layer.1.EncDecAttention.relative_attention_bias.weight", ]
def __init__(self, config: T5Config, patch_size, padding_idx, save_dir):
super().__init__(config)
self.model_dim = config.d_model
self.padding_idx = padding_idx
self.out = open(os.path.join(save_dir, 'gate.txt'), 'w')
self.shared = nn.Embedding(config.vocab_size, config.d_model)
self.patch_num, self.patch_dim = patch_size
self.image_dense = nn.Linear(self.patch_dim, config.d_model)
self.mha_layer = torch.nn.MultiheadAttention(embed_dim=config.hidden_size, kdim=config.hidden_size, vdim=config.hidden_size, num_heads=1, batch_first=True)
self.gate_dense = nn.Linear(2*config.hidden_size, config.hidden_size)
self.sigmoid = nn.Sigmoid()
encoder_config = copy.deepcopy(config)
encoder_config.is_decoder = False
encoder_config.use_cache = False
encoder_config.is_encoder_decoder = False
self.encoder = T5Stack(encoder_config, self.shared)
decoder_config = copy.deepcopy(config)
decoder_config.is_decoder = True
decoder_config.is_encoder_decoder = False
decoder_config.num_layers = config.num_decoder_layers
self.decoder = T5Stack(decoder_config, self.shared)
self.lm_head = nn.Linear(config.d_model, config.vocab_size, bias=False)
# Initialize weights and apply final processing self.post_init()
# Model parallel self.model_parallel = False
self.device_map = None
4.1 編碼器
模型F (X)同時接受語言和視覺輸入,並通過以下功能得到文本表示和圖像特征:
T5 模型的編碼器負責生成文本特征,但 T5 模型的解碼器並沒有利用編碼器產(chan) 生的文本特征,而是使用作者提出的共同注意式交互層(co-attention-styled interaction layer)的輸出。
拆解來看,假設是 T5 編碼器的輸出。 是 DETR 的輸出。第一步是確保視覺特征和文本特征具有相同的隱藏大小,以便我們(men) 可以使用注意力層。
4.2 交互層
在獲得語言和視覺表示後,我們(men) 使用單頭注意網絡將文本字符與(yu) 圖像像素相關(guan) 聯,其中查詢(Q)、鍵(K)和值(V)為(wei) , 和 ,其中注意力輸出被定義(yi) 為(wei) :
然後,我們(men) 應用門控融合機製如去融合文本和視覺特征
hidden_states = encoder_outputs[0] image_embedding = self.image_dense(image_ids) image_att, _ = self.mha_layer(hidden_states, image_embedding, image_embedding) merge = torch.cat([hidden_states, image_att], dim=-1) gate = self.sigmoid(self.gate_dense(merge)) hidden_states = (1 - gate) * hidden_states + gate *
4.3 解碼層
最後,解碼器將融合的輸出輸入transformers,預測目標Y。算法1顯示了多模態COT的完整過程。
5、實驗結果
作者使用 UnifiedQA 模型的權重作為(wei) T5 模型的初始化點,並在 ScienceQA 數據集上對其進行微調。他們(men) 觀察到他們(men) 的 Multimodal CoT 方法優(you) 於(yu) 所有以前的基準,包括 GPT-3.5。有趣的地方在於(yu) ,即使隻有 2.23 億(yi) 個(ge) 參數的基本模型也優(you) 於(yu) GPT-3.5 和其他 Visual QA 模型!這突出了擁有多模態架構的力量。
作者還展示了他們(men) 的兩(liang) 階段方法優(you) 於(yu) 單階段方法。
6 實驗結論
文本深刻研究了多模態CoT的問題,提出了多模態cot,它將語言和視覺模式整合到一個(ge) 兩(liang) 階段的框架中,將基本推理生成和答案預測分開,因此答案推理可以利用從(cong) 多模態信息中更好地生成的基本推理。通過多模態cot,結果表明該方法在ScienceQA基準上的準確率超過GPT-3.5 有16個(ge) 百分點。
這篇論文帶來的最大收獲是多模態特征在解決(jue) 具有視覺和文本特征的問題時是多麽(me) 強大。
作者展示了利用視覺特征,即使是小型語言模型(LM)也可以產(chan) 生有意義(yi) 的思維鏈 / 推理,而幻覺要少得多,這揭示了視覺模型在發展基於(yu) 思維鏈的學習(xi) 技術中可以發揮的作用。
從(cong) 實驗中,我們(men) 看到以幾百萬(wan) 個(ge) 參數為(wei) 代價(jia) 添加視覺特征的方式,比將純文本模型擴展到數十億(yi) 個(ge) 參數能帶來更大的價(jia) 值。
6、參考資料
超越GPT 3.5的小模型來了!
Chain of Thought論文、代碼和資源【論文精讀】 - 嗶哩嗶哩
思維鏈(Chain-of-thoughts)作為(wei) 提示 - 知乎<
Chain of Thought 開山之作論文詳解 - 知乎
思維鏈微調Fine-tune-CoT方法:大型語言模型教小模型一步一步推理 - 智源社區
有了Fine-tune-CoT方法,小模型也能做推理,完美逆襲大模型 - 智源社區
首個(ge) 標注詳細解釋的多模態科學問答數據集,深度學習(xi) 模型推理有了思維鏈-51CTO.COM
上海交大&亞(ya) 馬遜|語言模型的多模態思想鏈推理 - 智源社區
評論已經被關(guan) 閉。