「模仿學習」只會套話?解釋微調+130億參數Orca:推理能力打平ChatGPT
自ChatGPT API開放後,大量的研究都選擇利用ChatGPT和GPT-4等大型基礎模型(LFM)的輸出作為訓練數據,然後透過模仿學習來提升小模型的能力。
但由於模仿訊號流在表面、訓練資料量不夠大、缺乏嚴格的評估標準等問題,小模型的實際表現被高估了。
從效果來看,小模型更傾向於模仿LFM的輸出風格,而非推理過程。
論文連結:https://arxiv.org/pdf/2306.02707.pdf
為了回應這些挑戰,微軟最近發布了一篇長達51頁論文,提出了一個130億參數的Orca模型,可以學習模仿LFMs的推理過程。
研究人員為大模型設計了豐富的訓練訊號,使得Orca可以從GPT-4中學習到解釋痕跡、逐步的思考過程、複雜的指令等,並由ChatGPT的教師協助指導;並透過採樣和選擇來挖掘大規模且多樣化的模仿數據,可以進一步提升漸進式學習效果。
在實驗評估中,Orca超過了其他SOTA指令微調模型,在BigBench Hard(BBH)等複雜的零樣本推理基準中實現了比Vicuna-13B翻倍的性能表現,在AGIEval上也實現了42%的性能提升。
此外,Orca在BBH基準上還實現了與ChatGPT持平的性能,在SAT、LSAT、GRE和GMAT等專業和學術考試中只有4%的表現差距,並且都是在沒有思維鏈的零樣本設定下測量的。
研究結果表明,讓模型從逐步解釋中學習,無論這些解釋是由人類還是更高級的人工智慧模型產生的,都是提高模型能力和技能的一個有前景的研究方向。
解釋微調(Explanation Tuning)
#資料集建構
在訓練資料中,每個實例都包含三個部分,分別是係統訊息、使用者查詢和LFM回覆。
系統訊息(system message)放置在提示中開頭的部分,提供給LFM基本的上下文、引導以及其他相關的細節。
系統訊息可以用來改變回覆的長度、描述AI助理的性格、建立可接受和不可接受的LFM行為,並確定AI模型的回應結構。
######研究人員手工製作了16個系統資訊來設計LFM不同類型的回复,可以產生創造性的內容以及解決資訊查詢問題,最重要的是能夠根據提示生成解釋和逐步推理的答案。 ######################## 使用者查詢(user query)###定義了希望LFM執行的實際任務。 ############為了獲得大量的、多樣化的用戶查詢,研究人員利用FLAN-v2集合,從中抽取500萬個用戶查詢(FLAN-5M),並收集ChatGPT的回應;接著進一步從500萬條指令中抽出100萬條指令(FLAN-1M),收集GPT-4的回覆。 ############FLAN-v2集合由五個子集合組成,分別是CoT、NiV2、T0、Flan 2021和Dialogue,其中每個子集包含多個任務,每個任務都是一個查詢的集合。 ######每個子集合都與多個學術資料集相關,並且每個資料集都有一個或多個任務,主要關注零樣本和少樣本的查詢。
在這項工作中,研究人員只取樣訓練Orca的零樣本查詢,並且沒有從Dialogue子集中取樣,因為這些查詢往往缺乏背景,無法從ChatGPT中獲得有用的回覆。
讓ChatGPT扮演Teaching Assistant
先在FLAN-5M資料上訓練Orca (ChatGPT增強),隨後在FLAN-1M上進行第二階段的訓練(GPT-4增強)。
以ChatGPT作為中間的教師助手主要有兩個原因:
1. 能力差距
雖然GPT-4的參數量沒有公開,但130億參數的Orca肯定比GPT-4小很多倍,而ChatGPT和Orca之間的能力差距更小,更適合作為中間教師,並且這種方式已經被證明可以提高更小的學生模型在知識蒸餾中的模仿學習表現。
這種方式也可以看作是一種漸進式學習或課程學習,學生首先從較容易的例子中學習,然後再學習較難的例子,假定了較長的回覆會比較短的回覆更難模仿,可以從更大規模的教師模型中改進推理和逐步解釋能力。
2. 成本與時間
#從Azure OpenAI API進行大規模資料收集時會受到一些限制,包括每分鐘請求的速率限制,防止流量過大;由於服務延遲問題,每分鐘可用的token數量有限;提示長度和token補全的金錢成本。
相比之下,ChatGPT API比GPT-4終端更快、更便宜,所以從ChatGPT收集了比GPT-4多5倍的數據。
從ChatGPT和GPT-4對應到不同系統訊息的回覆長度分佈中可以觀察到,GPT-4的回覆平均比ChatGPT長1.5倍,使得Orca能夠逐步從教師解釋的複雜性中學習,並透過消融實驗證明了教師幫助的影響。
訓練
#在分詞階段,研究者利用LLaMA的位元組對編碼(BPE)分詞器來處理輸入的樣本,其中多位數字會被分割成多個單數字,並回落到位元組來分解未知的UTF-8字元。
為了處理可變長度的序列,在LLaMA分詞器的詞彙表中引入了一個填充詞[[PAD]],最終的詞彙表包含32001個token
為了優化訓練過程並有效利用可用的運算資源,研究人員利用了packing技術,將多個輸入實例串聯成一個序列後再訓練模型。
在packing的過程中,串聯序列的總長度不超過max_len=2048 tokens,對輸入的樣本進行隨機打亂後將分成幾組,每組串聯序列的長度最多為max_len
考慮到訓練資料中增強指令的長度分佈,每個序列的打包係數為2.7
為了訓練Orca,研究人員選擇只計算教師模型生成token的損失,也就是說學習生成以系統資訊和任務指令為條件的回复,可以確保模型專注於從最相關和最有資訊的token中學習,提高了訓練過程的整體效率和效果。
最後在20個裝有80GB記憶體的NVIDIA A100 GPU上訓練Orca,先在FLAN-5M(ChatGPT增強)上訓練4個epoch,花了160個小時;然後在FLAN-1M(GPT -4增強)上繼續訓練4個epoch
由於流量限制、終端負載以及回复的長度問題,從GPT-3.5-turbo(ChatGPT)和GPT-4的多個終端收集資料分別花了2週和3週的時間。
實驗部分
研究人員主要驗證了Orca在推理上的能力。
在AGIEval的實驗中可以看到,Orca的表現與Text-da-Vinci-003相當,並實現了ChatGPT 88%的性能表現,不過明顯落後於GPT-4
對於分析和推理任務,Vicuna的表現明顯更差,只保留了62%的ChatGPT質量,表明這種開源語言模型的推理能力很差。
雖然Orca與Text-da-Vinci-003的表現相當,但仍比ChatGPT低5分,Orca在與數學相關的任務(在SAT、GRE、GMAT中)上與ChatGPT表現出較大的差距。
與Vicuna相比,Orca顯示出更強的性能,在每個類別上都超過了Vicuna,平均有42%的相對提高。
GPT-4的表現遠遠超過了所有其他模型,但在這個基準中仍有很大的提升空間,目前所有模型的性能都明顯低於人類的得分。
Orca的效能根據系統資訊的類型有很大的不同,對於訓練的模型來說,空的系統訊息往往效果很好。
Orca在不同任務的325個樣本中超越了ChatGPT(Orca-beats-ChatGPT範例),其中大部分來自LogiQA(29% ),而其他LSAT任務和SAT-英文任務各佔不到10%
#在Big-Bench Hard Results資料集上的推理評估結果顯示,Orca在所有任務中的綜合表現上略好於ChatGPT,但明顯落後GPT-4;比Vicuna表現高出113%
##
以上是「模仿學習」只會套話?解釋微調+130億參數Orca:推理能力打平ChatGPT的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。

使用C 中的chrono庫可以讓你更加精確地控制時間和時間間隔,讓我們來探討一下這個庫的魅力所在吧。 C 的chrono庫是標準庫的一部分,它提供了一種現代化的方式來處理時間和時間間隔。對於那些曾經飽受time.h和ctime折磨的程序員來說,chrono無疑是一個福音。它不僅提高了代碼的可讀性和可維護性,還提供了更高的精度和靈活性。讓我們從基礎開始,chrono庫主要包括以下幾個關鍵組件:std::chrono::system_clock:表示系統時鐘,用於獲取當前時間。 std::chron

交易所內置量化工具包括:1. Binance(幣安):提供Binance Futures量化模塊,低手續費,支持AI輔助交易。 2. OKX(歐易):支持多賬戶管理和智能訂單路由,提供機構級風控。獨立量化策略平台有:3. 3Commas:拖拽式策略生成器,適用於多平台對沖套利。 4. Quadency:專業級算法策略庫,支持自定義風險閾值。 5. Pionex:內置16 預設策略,低交易手續費。垂直領域工具包括:6. Cryptohopper:雲端量化平台,支持150 技術指標。 7. Bitsgap:

在C 中處理高DPI顯示可以通過以下步驟實現:1)理解DPI和縮放,使用操作系統API獲取DPI信息並調整圖形輸出;2)處理跨平台兼容性,使用如SDL或Qt的跨平台圖形庫;3)進行性能優化,通過緩存、硬件加速和動態調整細節級別來提升性能;4)解決常見問題,如模糊文本和界面元素過小,通過正確應用DPI縮放來解決。

C 在實時操作系統(RTOS)編程中表現出色,提供了高效的執行效率和精確的時間管理。 1)C 通過直接操作硬件資源和高效的內存管理滿足RTOS的需求。 2)利用面向對象特性,C 可以設計靈活的任務調度系統。 3)C 支持高效的中斷處理,但需避免動態內存分配和異常處理以保證實時性。 4)模板編程和內聯函數有助於性能優化。 5)實際應用中,C 可用於實現高效的日誌系統。

在C 中測量線程性能可以使用標準庫中的計時工具、性能分析工具和自定義計時器。 1.使用庫測量執行時間。 2.使用gprof進行性能分析,步驟包括編譯時添加-pg選項、運行程序生成gmon.out文件、生成性能報告。 3.使用Valgrind的Callgrind模塊進行更詳細的分析,步驟包括運行程序生成callgrind.out文件、使用kcachegrind查看結果。 4.自定義計時器可靈活測量特定代碼段的執行時間。這些方法幫助全面了解線程性能,並優化代碼。

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。

C 中使用字符串流的主要步驟和注意事項如下:1.創建輸出字符串流並轉換數據,如將整數轉換為字符串。 2.應用於復雜數據結構的序列化,如將vector轉換為字符串。 3.注意性能問題,避免在處理大量數據時頻繁使用字符串流,可考慮使用std::string的append方法。 4.注意內存管理,避免頻繁創建和銷毀字符串流對象,可以重用或使用std::stringstream。
