ChatGPT 成功背後的祕密,開源了?!
人工智能(Artificial Intelligence, AI)最近取得了巨大的進展,特別是大語言模型(Large Language Models, LLMs),比如最近火爆全網的 ChatGPT 和 GPT-4。GPT 模型在各項自然語言處理任務上有着驚人的效果。
正所謂「大力出奇跡」,把參數量調「大」能提高模型性能已經成爲了大家的普遍共識。但是僅僅增加模型參數就夠了嗎?仔細閱讀 GPT 的一系列論文後就會發現,僅僅增加模型參數是不夠的。它們的成功在很大程度上還歸功於用於訓練它們的大量和高質量的數據。
在本文中,我們將從數據爲中心的人工智能視角去分析一系列 GPT 模型(之後會用 Data-centric AI 以避免囉嗦)。Data-centric AI 大體上可以分爲三個目標:
-
訓練數據開發(training data development)
-
推理數據開發(inference data development)
-
數據維護(data maintenance)。
本文將討論 GPT 模型是如何實現(或者可能即將實現)這三個目標的。
綜述論文:https://arxiv.org/abs/2303.10158
短篇介紹:https://arxiv.org/abs/2301.04819
GitHub 資源:https://github.com/daochenzha/data-centric-AI
什麼是大語言模型?什麼又是 GPT 模型?
這章將簡單介紹下大語言模型和 GPT 模型,對它們比較熟悉的讀者可以跳過。大語言模型指的是一類自然語言處理模型。顧名思義,大語言模型指的是比較「大」的(神經網絡)語言模型。語言模型在自然語言處理領域已經被研究過很久了,它們常常被用來根據上文來推理詞語的概率。例如,大語言模型的一個基本功能是根據上文預測缺失詞或短語的出現概率。我們常常需要用到大量的數據去訓練模型,使得模型學到普遍的規律。
GPT 模型是由 OpenAI 開發的一系列大語言模型,主要包括 GPT-1,GPT-2,GPT-3,InstructGPT 以及最近上線的 ChatGPT/GPT-4。就像其他大語言模型一樣,GPT 模型的架構主要基於 Transformer,以文本和位置信息的向量爲輸入,使用注意力機制來建模詞之間的關係。
之後的 GPT 系列模型結構大體上都與 GPT-1 類似,主要區別在於更多參數(更多層,更多隱含層維度等等)。
什麼是 Data-centric AI?
Data-centric AI 是一種搭建 AI 系統的新理念,被吳恩達老師大力倡導。我們這裏引用下他給出的定義:
Data-centric AI is the discipline of systematically engineering the data used to build an AI system. — Andrew Ng
傳統的搭建 AI 模型的方法主要是去迭代模型,數據相對固定。比如,我們通常會聚焦於幾個基準數據集,然後設計各式各樣的模型去提高預測準確率。這種方式我們稱作以模型爲中心(model-centric)。然而,model-centric 沒有考慮到實際應用中數據可能出現的各種問題,例如不準確的標籤,數據重複和異常數據等。準確率高的模型只能確保很好地「擬合」了數據,並不一定意味着實際應用中會有很好的表現。
與 model-centric 不同,Data-centric 更側重於提高數據的質量和數量。也就是說 Data-centric AI 關注的是數據本身,而模型相對固定。採用 Data-centric AI 的方法在實際場景中會有更大的潛力,因爲數據很大程度上決定了模型能力的上限。
需要注意的是,「Data-centric」與「Data-driven」(數據驅動),是兩個根本上不同的概念。後者僅強調使用數據去指導 AI 系統的搭建,這仍是聚焦於開發模型而不是去改變數據。
Data-centric AI 框架包括三個目標:
-
**訓練數據開發(training data development)**旨在構建足夠數量的高質量數據,以支持機器學習模型的訓練。
-
**推理數據開發(inference data development)**旨在構建模型推理的數據,主要用於以下兩個目的:
-
評估模型的某種能力,比如構建對抗攻擊( Adversarial Attacks)數據以測試模型的魯棒性
-
解鎖模型的某種能力,比如提示工程(Prompt Engineering)
-
**數據維護(data maintenance)**旨在確保數據在動態環境中的質量和可靠性。在實際生產環境(production environment)中,我們並不是只訓練一次模型,數據和模型是需要不斷更新的。這個過程需要採取一定的措施去持續維護數據。
爲什麼 Data-centric AI 是 GPT 模型取得成功的重要原因?
數月前,Yann LeCun 發文稱 ChatGPT 在技術上並不是什麼新鮮事物。的確如此,ChatGPT 和 GPT-4 中使用的方法,比如 Transformer、「從人類反饋中進行的強化學習」(Reinforcement Learning from Human Feedback,RLHF)等都不是什麼新技術。即便如此,ChatGPT 還是取得了以前的模型無法企及的驚人效果。那麼,是什麼推動了它的成功?
毋庸置疑,增加模型參數的數量對 GPT 模型的成功至關重要,但這只是其中的一個原因。通過詳細閱讀 GPT-1、GPT-2、GPT-3、InstructGPT 和 ChatGPT/GPT-4 論文中有關數據的描述,我們可以明顯看出 OpenAI 的工程師們花了極大心血去提高數據的質量和數量。以下,我們用 Data-centric AI 框架從三個維度進行分析。
訓練數據開發:從 GPT-1 到 ChatGPT/GPT-4,通過更好的數據收集(data collection)、數據標註(data labeling)和數據準備(data preparation)策略,用於訓練 GPT 模型的數據數量和質量都得到了顯著提高。以下括號中標識了每個具體策略對應到 Data-centric AI 框架中的子目標。
-
GPT-1:訓練使用了 BooksCorpus 數據集。該數據集包含 4629.00 MB 的原始文本,涵蓋了各種類型的書籍,如冒險、奇幻和浪漫等。
-
用到的 Data-centric AI 策略:無。
-
結果:預訓練之後,在下游任務微調可以提高性能。
-
GPT-2:訓練使用了 WebText 數據集。這是 OpenAI 的一個內部數據集,通過從 Reddit 上抓取出站鏈接創建而成。
-
僅篩選並使用 Reddit 上至少獲得 3 個 karma 及以上的鏈接(數據收集)
-
用 Dragnet 和 Newspaper 這兩個工具去提取純文本(數據收集)
-
用了一些啓發式策略做了去重和數據清洗,具體策略論文沒有提到(數據準備)
-
用到的 Data-centric AI 策略:
-
結果:經過篩選後,獲得了 40 GB 的文本(大概是 GPT-1 所用數據的 8.6 倍)。GPT-2 即便在沒有微調的情況下也能取得很不錯的效果。
-
GPT-3:訓練主要使用了 Common Crawl,一個很大但質量不算很好的數據集。
-
訓練一個分類器來過濾掉低質量的文檔。這裏比較有意思的是,OpenAI 把 WebText 當作標準,基於每個文檔與 WebText 之間的相似性來判斷質量高低(數據收集)
-
使用 Spark 的 MinHashLSH 對文檔進行模糊去重(數據準備)
-
把之前的 WebText 擴展下也加了進來,還加入了 books corpora 和 Wikipedia 數據(數據收集)
-
用到的 Data-centric AI 策略:
-
結果:在對 45TB 的純文本進行質量過濾後,獲得了 570GB 的文本(僅選擇了 1.27% 的數據,可見對質量把控的力度很大,過濾完後的文本大約是 GPT-2 的 14.3 倍)。訓練得到的模型比 GPT-2 更強了。
-
InstructGPT:在 GPT-3 之上用人類反饋去微調模型,使得模型與人類期望相符。
-
使用人類提供的答案來用有監督的方式微調模型。OpenAI 對標註人員的選擇極爲嚴苛,對標註者進行了考試,最後甚至會發問卷確保標註者有比較好的體驗。要是我的研究項目需要人工標註,能有人理我就不錯了,更別談考試和問卷(數據標註)
-
收集比較數據(人類對產生的答案根據好壞程度排序)來訓練一個獎勵模型,然後基於該獎勵模型使用「從人類反饋中進行的強化學習」(Reinforcement Learning from Human Feedback,RLHF)來微調(數據標註)
-
用到的 Data-centric AI 策略:
-
結果:InstructGPT 產生的結果更加真實、有更少的偏見、更符合人類的預期。
ChatGPT/GPT-4:至此,產品走向了商業化,OpenAI 不再「Open」,不再披露具體細節。已知的是 ChatGPT/GPT-4 在很大程度上遵循了以前 GPT 模型的設計,並且仍然使用 RLHF 來調整模型(可能使用更多、更高質量的數據 / 標籤)。鑑於 GPT-4 的推理速度比 ChatGPT 慢很多,模型的參數數量大概率又變多了,那麼也很有可能使用了一個更大的數據集。
從 GPT-1 到 ChatGPT/GPT-4,所用的訓練數據大體經歷了以下變化:小數據(小是對於 OpenAI 而言,對普通研究者來說也不小了)-> 大一點的高質量數據 -> 更大一點的更高質量數據 -> 高質量人類(指能通過考試的標註者)標註的高質量數據。模型設計並沒有很顯著的變化(除了參數更多以順應更多的數據),這正符合了 Data-centric AI 的理念。從 ChatGPT/GPT-4 的成功,我們可以發現,高質量的標註數據是至關重要的。在 AI 的任何子領域幾乎都是如此,即便是在很多傳統上的無監督任務上,標註數據也能顯著提高性能,例如弱監督異常檢測。OpenAI 對數據和標籤質量的重視程度令人髮指。正是這種執念造就了 GPT 模型的成功。這裏順便給大家推薦下朋友做的可視化文本標註工具 Potato,非常好用!
https://github.com/davidjurgens/potato
推理數據開發:現在的 ChatGPT/GPT-4 模型已經足夠強大,強大到我們只需要調整提示(推理數據)來達到各種目的,而模型則保持不變。例如,我們可以提供一段長文本,再加上特定的指令,比方說「summarize it」或者「TL;DR」,模型就能自動生成摘要。在這種新興模式下,Data-centric AI 變得更爲重要,以後很多 AI 打工人可能再也不用訓練模型了,只用做提示工程(prompt engineering)。
當然,提示工程是一項具有挑戰性的任務,它很大程度上依賴於經驗。這篇綜述很好地總結了各種各樣的方法,有興趣的讀者可以繼續閱讀。與此同時,即使是語義上相似的提示,輸出也可能非常不同。在這種情況下,可能需要一些策略去降低輸出的方差,比如 Soft Prompt-Based Calibration。
大語言模型的推理數據開發研究仍處於早期階段。我相信在不久的將來,很多其他任務中用到過的推理數據開發方法也會逐漸被遷移到大語言模型中,例如構建對抗攻擊(Adversarial Attacks)數據以測試模型的魯棒性。
數據維護:作爲一款商業產品,ChatGPT/GPT-4 一定不是僅僅訓練一次就結束了,而是會被持續更新和維護。我們在外部沒辦法知道 OpenAI 數據維護具體是如何進行的。因此,我們只能推測。OpenAI 可能採取瞭如下策略:
-
持續數據收集:當我們使用 ChatGPT/GPT-4 時,我們輸入的提示和提供的反饋可以被 OpenAI 用來進一步提升他們的模型。在此過程中,模型開發者需要設計監測數據質量的指標和維護數據質量的策略,以收集更高質量的數據。
-
數據理解工具:開發各種工具來可視化和理解用戶數據可以幫助更好地理解用戶需求,並指導未來的改進方向。
-
高效數據處理:隨着 ChatGPT/GPT-4 用戶數量的迅速增長,高效的數據管理系統需要被開發,以幫助快速獲取相關數據進行訓練和測試。
從大語言模型的成功中我們能學到什麼?
大語言模型的成功可以說是顛覆性的。展望未來,我做幾個預測:
-
Data-centric AI 變得更加重要。經過了多年的研究,模型設計已經相對比較成熟,特別是在 Transformer 出現之後(目前我們似乎還看不到 Transformer 的上限)。提高數據的數量和質量將成爲未來提高 AI 系統能力的關鍵(或可能是唯一)途徑。此外,當模型變得足夠強大時,大多數人可能不需要再訓練模型。相反,我們只需要設計適當的推理數據(提示工程)便能從模型中獲取知識。因此,Data-centric AI 的研究和開發將持續推動未來 AI 系統的進步。
-
大語言模型將爲 Data-centric AI 提供更好的解決方案。許多繁瑣的數據相關工作目前已經可以藉助大語言模型更高效地完成了。例如,ChatGPT/GPT-4 已經可以編寫可以運行的代碼來處理和清洗數據了。此外,大語言模型甚至可以用於創建訓練數據。例如,最近的研究表明,使用大語言模型合成數據可以提高臨牀文本挖掘模型的性能。
-
數據和模型的界限將變得模糊。以往,數據和模型是兩個分開的概念。但是,如今當模型足夠強大後,模型成爲了一種「數據」或者說是數據的「容器」。在需要的時候,我們可以設計適當的提示語,利用大語言模型合成我們想要的數據。這些合成的數據反過來又可以用來訓練模型。這種方法的可行性在 GPT-4 上已經得到了一定程度的驗證。在報告中,一種被稱作 rule-based reward models(RBRMs)的方法用 GPT-4 自己去判斷數據是否安全,這些標註的數據反過來又被用來訓練獎勵模型來微調 GPT-4。有種左右手互搏的感覺了。我不禁在想,之後的模型會通過這種方式實現自我進化嗎?細思極恐……
回想起五年前,我還在糾結「如何才能提高文本分類的準確率」,多次失敗的經歷曾讓我一度懷疑自然語言處理和 AI 沒有半點關係。如今 ChatGPT/GPT-4 驚人的能力讓我提前見證了歷史!
未來 AI 的發展將走向何方?大語言模型的進展日新月異,經常看到一些研究自然語言處理的朋友們擔心大模型的出現會不會讓 AI 科研無路可走了。我認爲完全不需要有這種擔心。技術永遠是不斷進步的。新技術的出現不可避免會取代舊的技術(這是進步),但同時也會催生更多新的研究方向。比如,近年來深度學習的飛速發展並沒有讓傳統機器學習的研究無路可走,相反,提供了更多的可供研究的方向。
同時,AI 一個子領域的突破勢必會帶動其他子領域的蓬勃發展,這其中就有許多新的問題需要研究。比如,以 ChatGPT/GPT-4 爲代表的大模型上的突破很可能會帶動計算機視覺的進一步提升,也會啓發很多 AI 驅動的應用場景,例如金融、醫療等等。
無論技術如何發展,提高數據的質量和數量一定是提高 AI 性能的有效方法,Data-centric AI 的理念將越來越重要。
那麼大模型就一定是達成通用人工智能的方向嗎?我持保留態度。縱觀 AI 發展歷程,各個 AI 子領域的發展往往是螺旋上升、相互帶動的。這次大模型的成功是多個子領域的成功碰撞出的結果,例如模型設計(Transformer)、Data-centric AI(對數據質量的重視)、強化學習(RLHF)、機器學習系統(大規模集羣訓練)等等,缺一不可。在大模型時代,我們在 AI 各個子領域依然都大有可爲。比如,我認爲強化學習相比大模型可能有更高的上限,因爲它能自我迭代,可能不久的將來我們將見證由強化學習引領的比 ChatGPT 更驚豔的成果。
在這個 AI 發展日新月異的時代,我們需要不斷學習。我們對 Data-centric AI 這個領域進行了總結,希望能幫助大家快速高效地瞭解這個領域,相關鏈接見本文開頭。鑑於 Data-centric AI 是一個很大的領域,我們的總結很難面面俱到。歡迎感興趣的讀者去指正、補充。
作者:一堆廢紙
來源:https://zhuanlan.zhihu.com/p/617057227
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/CW67AZ_UqT8vvjPZt1iHGA