譯者 | 崔皓
審校 | 孫淑娟
一、開篇
大型語言模型(LLMs)是為產生文本而訓練的深度學習模型。憑借令人印象深刻的能力,LLMs已經成為現代自然語言處理(NLP)的佼佼者。傳統意義上,它們是由學術機構和大型科技公司(如OpenAI、微軟和英偉達)預先訓練而成的。它們中的大多數隨后被提供給公眾使用。這種即插即用的方法是向大規模的人工智能應用邁出的重要一步--企業現在可以專注于為特定的使用案例微調現有的LLM模型,而不是花費大量資源來訓練具有一般語言知識的模型。
然而,為應用挑選合適的模型仍舊是很棘手的。用戶和其他利益相關者必須在一個充滿活力的語言模型和相關的創新場景中做出選擇。這些改進涉及語言模型的不同組成部分,包括其訓練數據、預訓練目標、架構和微調方法--每一個方面都可以寫一本書。在所有這些研究的基礎上,圍繞著語言模型的營銷和人工智能的光環使事情變得更加模糊不清。
本文解釋了LLMs背后的主要概念和原則。其目的是為非技術性的利益相關者提供一個直觀的理解,以及一種與開發者和人工智能專家高效互動的語言。為了擴大覆蓋面,文章包括了植根于大量NLP相關出版物的分析。雖然我們不會深入研究語言模型的數學細節,但這些可以很容易從參考文獻中檢索到。
文章的結構如下:首先,將語言模型置于不斷發展的NLP環境中。第二部分解釋了LLMs是如何建立和預訓練的。最后,會描述微調過程并提供了一些關于模型選擇的指導。
二、語言模型的世界
1.彌合人機差距
語言是人類思維的迷人技能--它是知識交流的通用協議,并表達主觀想法,如意圖、意見和情感。在人工智能的歷史上,已經有多波研究用數學手段來接近("建模")人類語言。在深度學習時代之前,表征是基于簡單的代數和概率概念,如單詞的單熱表征、序列概率模型和遞歸結構。隨著過去幾年深度學習的發展,語言表征的精度、復雜性和表現力都有所提高。
2018年,BERT作為第一個基于新Transformer架構的LLM被推出。從那時起,基于Transformer的LLM獲得了強勁的發展勢頭。語言建模由于其通用性特別具有吸引力。雖然許多現實世界的NLP任務,如情感分析、信息檢索和信息提取不需要產生語言,但假設一個產生語言的模型也有技能來解決各種更專業的語言挑戰。
2.尺寸問題
學習發生在參數的基礎上--在訓練過程中優化的變量,以達到最佳預測質量。隨著參數數量的增加,模型能夠獲得更細化的知識并改善其預測。自2017-2018年引入第一批LLM以來,我們看到了參數大小的指數級爆炸--雖然突破性的BERT是用340M的參數訓練的,但2022年發布的模型Megatron-Turing NLG是用530B的參數訓練的--增加了超過一千倍。
圖1:語言模型的參數大小隨時間呈指數增長
因此,主流通過使用不斷增大的參數數量來嘩眾取寵。然而,有批評的聲音指出,模型性能的增長速度與模型規模的增長速度不一致。另一方面,模型預訓練會留下相當大的碳足跡??s減規模顯得刻不容緩,它使語言建模的進展更具有可持續性。
3.語言模型的生命周期
LLM的遠景是富有競爭性的,創新是短暫的。下圖顯示了2018-2022年時間段內最受歡迎的前15名LLM 模型,以及他們在一段時間內的占有率。
圖2:前15個最受歡迎語言模型的提及率和占有率
我們可以看到,大多數模型在相對較短的時間內就不那么流行了。為了保持領先,用戶應該監測當前的創新,并評估升級是否值得。
大多數LLM都遵循一個類似的生命周期:首先,在 "上游",模型被預先訓練。由于對數據量和計算量的要求很高,它大多是大型科技公司和大學的特權。最近,也有一些合作出現(例如BigScience研討會),以共同推進LLM領域的發展。少數資金充足的初創公司,如Cohere和AI21實驗室,也提供預先訓練好的LLM。
在發布之后,模型被專注于應用的開發者和企業在 "下游 "采用和部署。在這個階段,大多數模型需要一個額外的微調步驟以適應特定的領域和任務。其他的,如GPT-3,則更方便,因為它們可以在預測期間直接學習各種語言任務(零次或幾次預測)。
最后,時間敲響了大門,一個更好的模型出現在拐角處--要么有更多的參數,更有效地使用硬件,要么對人類語言的建模有更根本的改進。帶來實質性創新的模型可以催生出整個模型家族。例如,BERT在BERT-QA、DistilBERT和RoBERTa中繼續存在,這些都是基于原始架構的。
在接下來的章節中,我們將探討這個生命周期的前兩個階段--預訓練和為部署而進行的微調。
三、預訓練:LLM是如何誕生的
大多數團隊和NLP從業者不會參與LLM的預訓練,而是參與其微調和部署。然而,要成功地挑選和使用一個模型,重要的是要了解 "引擎蓋 "下發生了什么。在這一節中,我們將看一下LLM的基本成分。
- 訓練數據
- 輸入表示
- 訓練前的目標
- 模型結構(編碼器-解碼器)
每一項都不僅會影響到選擇,也會影響到LLM的微調和部署。
1.訓練數據
用于LLM訓練的數據大多是涵蓋不同風格的文本數據,如文學、用戶生成的內容和新聞數據。在看到各種不同的文本類型后,產生的模型會意識到語言的細節。除文本數據外,代碼也經常被用作輸入,教導模型生成有效的程序和代碼片段。
不出所料,訓練數據的質量對模型的性能有直接影響--也對模型所需的大小有影響。如果用更加聰明的方式準備訓練數據,就可以提高模型的質量,同時減少其數據的容量。一個例子是T0模型,它比GPT-3小16倍,但在一系列基準任務上勝過它。訣竅就在這里:它不只是使用任何文本作為訓練數據,而是直接使用任務公式,從而使其學習信號更加集中。圖3說明了一些訓練實例。
圖3:T0在廣泛明確的語言任務上進行訓練
關于訓練數據的最后說明:我們經常聽說語言模型是以無監督的方式訓練的。雖然這種方式極具吸引力,但在技術上是錯誤的。相反,格式良好的文本已經提供了必要的學習信號,使我們省去了繁瑣的手工數據注釋過程。要預測的標簽對應于一個句子中的過去和/或未來的詞。因此,注釋是自動發生的,而且是大規模的,使得該領域的相對快速進展成為可能。
2.輸入表示
一旦訓練數據被集合起來,我們需要將其打包成模型可以應用的形式。神經網絡是用代數結構(向量和矩陣)來輸入的,而語言的最佳代數表示是一個持續的探索--從簡單的詞組到包含高度差異化的語境信息。每一個新的步驟都會增加自然語言的復雜度,暴露出當前表示法的局限性。
語言的基本單位是單詞。在NLP的初期,這就產生了詞包表示法,即把文本中的所有詞都扔在一起,而不考慮它們的排序。請看這兩個例子。
在詞包世界里,這些句子會得到完全相同的表述,因為它們由相同的詞組成。顯然,這只包含了它們意義的一小部分。
序列表征容納了關于詞序的信息。在深度學習中,序列的處理最初是在順序感知的循環神經網絡(RNN)中實現的。然而,再往前走一步,語言的基本結構不是純粹的順序,而是分層的。換句話說,我們談論的不是列表,而是樹。相距較遠的詞實際上可以比相鄰的詞有更強的句法和語義聯系。請看下面的例子。
這里,她指的是那個女孩。當一個RNN到達句子的結尾并最終看到她時,它對句子開頭的記憶可能已經在消退,因此不允許它恢復這種關系。
為了解決這些長距離的依賴性,人們提出了更復雜的神經結構,以建立一個更有區別的語境記憶。其想法是將與未來預測有關的詞保留在記憶中,而忘記其他的詞。這是長短時記憶(LSTM)單元和門控循環單元(GRU)的貢獻。然而,這些模型并不針對要預測的具體位置進行優化,而是針對通用的未來背景。此外,由于其復雜的結構,它們的訓練速度甚至比傳統的RNN更慢。
最后,人們摒棄了遞歸,提出了注意力機制,并將其納入Transformer架構中。注意力允許模型在預測過程中在不同的詞之間來回關注。每個詞都根據其與要預測的特定位置的相關性進行加權。對于上述句子,一旦模型到達 "她 "的位置,girl的權重就會高于at,盡管它在線性順序中要遠得多。
到目前為止,注意力機制最接近人類大腦在信息處理過程中的生物運作。研究表明,注意力可以學習層次化的句法結構,包括一系列復雜的句法現象。它還允許并行計算這一更快、更有效的訓練。
3.培訓前的目標
有了適當的訓練數據表示,我們的模型就可以開始學習。有三個用于預訓練語言模型的通用目標:序列到序列的轉換、自動回歸和自動編碼。所有這些都要求模型掌握廣泛的語言學知識。
編碼器-解碼器架構以及Transformer模型所解決的原始任務是序列到序列的轉換:一個序列被轉換為不同表示框架中的序列。經典的序列到序列的任務是機器翻譯,但其他任務,如總結,也經常以這種方式來表述。請注意,目標序列不一定是文本--它也可以是其他非結構化數據,如圖像,以及結構化數據,如編程語言。序列到序列的LLMs的一個例子是BART系列。
第二個任務是自動回歸,這也是最初的語言建模目標。在自動回歸中,模型學習根據以前的標記來預測下一個輸出(token)。學習信號受到企業單向性的限制--模型只能使用來自預測令牌的右邊或左邊的信息。這是一個主要的限制,因為單詞既可以取決于過去,也可以取決于未來的位置。作為一個例子,考慮一下寫的動詞如何在兩個方向上影響下面的句子。
在這里,紙的位置被限制為可寫的東西,而學生的位置被限制為人類,或者,無論如何,另一個能夠寫作的智能實體。
今天的頭條新聞中的許多LLM都是自回歸的,包括GPT系列、PaLM和BLOOM。
第三項任務--自動編碼--解決了單向性的問題。自動編碼與經典詞嵌入的學習非常相似。首先,我們通過在輸入中隱藏一定比例的標記(通常是10-20%)來破壞訓練數據。然后,該模型學習根據周圍的環境重建正確的輸入,同時考慮到前面和后面的標記。自動編碼器的典型例子是BERT系列,其中BERT代表來自變形器的雙向編碼器表示法。
4.模型結構(編碼器-解碼器)
語言模型的基本構成部分是編碼器和解碼器。編碼器將原始輸入轉化為高維代數表示,也稱為 "隱藏 "向量。等一下--隱藏的?嗯,實際上在這一點上沒有什么大的秘密。當然,你可以看一下這個表示,但一個冗長的數字向量不會向人傳達任何有意義的東西。這需要我們的模型的數學智能來處理它。解碼器以一種可理解的形式再現隱藏的表示,如另一種語言、編程代碼、圖像等。
圖4:編碼器-解碼器結構的基本模式
編碼器-解碼器架構最初是為遞歸神經網絡引入的。自從引入基于注意力的Transformer模型以來,傳統的遞歸已經失去了它的流行,而編碼器-解碼器的想法卻一直存在。大多數自然語言理解(NLU)任務依賴于編碼器,而自然語言生成(NLG)任務需要解碼器,序列到序列的轉換需要這兩個組件。
我們不會在這里討論Transformer架構和關注機制的細節。對于那些想掌握這些細節的人來說,要準備好花大量的時間去琢磨它。
四、在現實世界中使用語言模型
1.微調
語言建模是一項強大的上游任務--如果你有一個成功的語言模型,恭喜你--這是一個智能模型。相反,NLP大多被用于更有針對性的下游任務,如情感分析、問題回答和信息提取。這就是應用遷移學習和重用現有語言知識以應對更具體挑戰的時候。在微調過程中,模型的一部分被 "凍結",其余部分則用特定領域或任務的數據進一步訓練。
明確的微調增加了LLM部署道路上的復雜性。它還會導致模型爆炸,即每個業務任務都需要自己的微調模型,從而升級到無法維護的各種模型。因此,人們已經努力使用少量或零次學習來擺脫微調步驟(例如在GPT-3中)。這種學習是在預測過程中發生的:向模型提供 "提示"--任務描述和可能的幾個訓練實例--以指導其對未來實例的預測。
雖然實施起來要快得多,但零次或少量學習的便利因素被其較低的預測質量所抵消。此外,許多這樣的模型需要通過云端API訪問。在開發初期,這可能是一個受歡迎的機會--然而,在更高級的階段,它可能變成另一個不需要的外部依賴。
2.為下游任務挑選合適的模型
看著人工智能市場上不斷供應的新語言模型,為特定的下游任務選擇合適的模型并與最先進的技術保持同步是很棘手的。
研究論文通常以特定的下游任務和數據集作為每個模型的基準。標準化的任務套件,如SuperGLUE和BIG-bench,可以針對眾多的NLP任務進行統一的基準測試,并提供一個比較的基礎。不過,我們應該記住,這些測試是在一個高度受控的環境中準備的。到今天為止,語言模型的泛化能力相當有限--因此,轉移到現實生活中的數據集可能會大大影響模型的性能。評估和選擇一個合適的模型應該包括在盡可能接近生產數據的數據上進行實驗。
作為一條經驗法則,預訓練目標提供了一個重要的提示:自回歸模型在文本生成任務中表現良好,如對話式人工智能、問題回答和文本總結,而自動編碼器擅長 "理解 "和結構化語言,例如用于情感分析和各種信息提取任務。理論上,只要收到適當的提示,用于零點學習的模型可以執行各種任務--然而,它們的準確率通常低于經過微調的模型。
為了使事情更加具體,下圖顯示了流行的NLP任務是如何與NLP文獻中突出的語言模型相關聯的。這些關聯是根據多種相似性和聚合度量計算的,包括嵌入相似性和距離加權共同發生。得分較高的模型-任務對,如BART/文本總結和LaMDA/對話式人工智能,表明基于歷史數據的良好匹配。
圖5:語言模型和下游任務之間的關聯強度
五、主要收獲
在這篇文章中,我們已經涵蓋了LLM的基本概念和正在發生創新的主要層面。下表提供了最受歡迎的LLM的主要特征摘要。
表1:最受歡迎的大型語言模型的特征摘要
讓我們總結一下選擇和LLM的一般準則。
1.在評估潛在模式時,要清楚在人工智能旅程中的位置。
- 在開始的時候,用通過云API部署的LLM做實驗可能是一個好主意。
- 一旦找到了產品與市場的契合點,考慮在你這邊托管和維護你的模型,以便有更多的控制權,并進一步提高模型的性能,以滿足你的應用。
2.為了與你的下游任務保持一致,人工智能團隊應該根據以下標準創建一個模型的短名單。
以下游任務為重點,對學術文獻中的成果進行基準測試
預培訓目標和下游任務之間的一致性:考慮為NLGU進行自動編碼,為NLG進行自動回歸。
以前報告的這種模型-任務組合的經驗。
3.對入圍的模型進行測試,以了解真實世界的任務和數據集,從而對性能有一個初步的感覺。
4.在大多數情況下,有可能通過專門的微調達到更好的質量。然而,如果你沒有內部技術能力或預算進行微調,或者你需要覆蓋大量的任務,可以考慮少數/零次學習。
5.LLM的創新和趨勢是短暫的。在使用語言模型時,要注意它們的生命周期和LLM領域的整體活動,并注意加強你的游戲機會。
最后,要意識到LLMs的局限性。雖然它們有驚人的、類似于人類的產生語言的能力,但它們的整體認知能力與我們人類相比是有差距的。這些模型的世界知識和推理能力嚴格限制在它們在語言表面發現的信息。它們也不能把事實放在時間上,可能會不眨眼地給你提供過時的信息。如果你正在構建一個依賴于生成最新甚至是原始知識的應用程序,請考慮將你的LLM與額外的多模態、結構化或動態知識源相結合。
原文鏈接:https://www.topbots.com/choosing-the-right-language-model/
譯者介紹
崔皓,51CTO社區編輯,資深架構師,擁有18年的軟件開發和架構經驗,10年分布式架構經驗。