首頁 >科技週邊 >人工智慧 >為NLP選擇正確的語言模型

為NLP選擇正確的語言模型

PHPz
PHPz轉載
2023-04-14 14:04:031110瀏覽

譯者| 崔皓

審校| 孫淑娟

一、開篇

為NLP選擇正確的語言模型

大型語言模型(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的參數訓練的--增加了超過一千倍。

為NLP選擇正確的語言模型

圖1:語言模型的參數大小隨時間呈指數增長

因此,主流透過使用不斷增加的參數數量來譁眾取寵。然而,有批評的聲音指出,模型表現的成長速度與模型規模的成長速度不一致。另一方面,模型預訓練會留下相當大的碳足跡。縮減規模顯得刻不容緩,它使語言建模的進展更具永續性。

3.語言模型的生命週期

LLM的遠景是富有競爭性的,創新是短暫的。下圖顯示了2018-2022年時間內最受歡迎的前15名LLM 模型,以及他們在一段時間內的佔有率。

為NLP選擇正確的語言模型

圖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說明了一些訓練實例。

為NLP選擇正確的語言模型

圖3:T0在廣泛明確的語言任務上進行訓練

關於訓練資料的最後說明:我們常聽到語言模型是以無監督的方式訓練的。雖然這種方式極具吸引力,但在技術上是錯誤的。相反,格式良好的文字已經提供了必要的學習訊號,使我們省去了繁瑣的手動資料註釋過程。要預測的標籤對應於一個句子中的過去和/或未來的單字。因此,註釋是自動發生的,而且是大規模的,使得該領域的相對快速進展成為可能。

2.輸入表示

一旦訓練資料被集合起來,我們需要將其打包成模型可以應用的形式。神經網路是用代數結構(向量和矩陣)來輸入的,而語言的最佳代數表示是一個持續的探索--從簡單的詞組到包含高度差異化的語境資訊。每一個新的步驟都會增加自然語言的複雜度,暴露出目前表示法的限制。

語言的基本單位是單字。在NLP的初期,這就產生了詞包表示法,即把文本中的所有詞都扔在一起,而不考慮它們的排序。請看這兩個例子。

在詞包世界裡,這些句子會得到完全相同的表達,因為它們是由相同的字組成。顯然,這只包含了它們意義的一小部分。

序列表徵容納了關於詞序的資訊。在深度學習中,序列的處理最初是在順序感知的循環神經網路(RNN)中實現的。然而,再往前走一步,語言的基本結構不是純粹的順序,而是分層的。換句話說,我們談論的不是列表,而是樹。相距較遠的詞實際上可以比相鄰的詞有更強的句法和語義聯繫。請看下面的例子。

這裡,她指的是那個女孩。當一個RNN到達句子的結尾並最終看到她時,它對句子開頭的記憶可能已經在消退,因此不允許它恢復這種關係。

為了解決這些長距離的依賴性,人們提出了更複雜的神經結構,以建立一個更有區別的語境記憶。其想法是將與未來預測有關的詞保留在記憶中,而忘記其他的詞。這是長短時記憶(LSTM)單元和門控循環單元(GRU)的貢獻。然而,這些模型並非針對要預測的特定位置進行最佳化,而是針對通用的未來背景。此外,由於其複雜的結構,它們的訓練速度甚至比傳統的RNN更慢。

最後,人們摒棄了遞歸,提出了注意力機制,並將其納入Transformer架構中。注意力允許模型在預測過程中在不同的字詞之間來回關注。每個字都根據其與要預測的特定位置的相關性進行加權。對於上述句子,一旦模型到達 "她 "的位置,girl的權重就會高於at,儘管它在線性順序中要遠得多。

到目前為止,注意力機制最接近人類大腦在資訊處理過程中的生物運作。研究表明,注意力可以學習層次化的句法結構,包括一系列複雜的句法現象。它還允許並行計算這項更快、更有效的訓練。

3.訓練前的目標

有了適當的訓練資料表示,我們的模型就可以開始學習。有三個用於預訓練語言模型的通用目標:序列到序列的轉換、自動回歸和自動編碼。所有這些都要求模型掌握廣泛的語言學知識。

編碼器-解碼器架構以及Transformer模型所解決的原始任務是序列到序列的轉換:一個序列被轉換為不同表示框架中的序列。經典的序列到序列的任務是機器翻譯,但其他任務,如總結,也經常以這種方式來表達。請注意,目標序列不一定是文字--它也可以是其他非結構化數據,如圖像,以及結構化數據,如程式語言。序列到序列的LLMs的一個例子是BART系列。

第二個任務是自動迴歸,這也是最初的語言建模目標。在自動迴歸中,模型學習根據先前的標記來預測下一個輸出(token)。學習訊號受到企業單向性的限制--模型只能使用來自預測令牌的右邊或左邊的資訊。這是一個主要的限制,因為單字既可以取決於過去,也可以取決於未來的位置。作為一個例子,考慮一下寫的動詞如何在兩個方向上影響下面的句子。

為NLP選擇正確的語言模型

在這裡,紙的位置被限制為可寫的東西,而學生的位置被限制為人類,或者,無論如何,另一個能夠寫作的智慧實體。

今天的頭條新聞中的許多LLM都是自回歸的,包括GPT系列、PaLM和BLOOM。

第三項任務--自動編碼--解決了單向性的問題。自動編碼與經典詞嵌入的學習非常相似。首先,我們透過在輸入中隱藏一定比例的標記(通常是10-20%)來破壞訓練資料。然後,該模型學習根據周圍的環境重建正確的輸入,同時考慮到前面和後面的標記。自動編碼器的典型例子是BERT系列,其中BERT代表來自變形器的雙向編碼器表示法。

4.模型結構(編碼器-解碼器)

語言模型的基本組成部分是編碼器和解碼器。編碼器將原始輸入轉換為高維代數表示,也稱為 "隱藏 "向量。等一下--隱藏的?嗯,實際上在這一點上沒有什麼大的秘密。當然,你可以看一下這個表示,但一個冗長的數字向量不會向人傳達任何有意義的東西。這需要我們的模型的數學智慧來處理它。解碼器以一種可理解的形式再現隱藏的表示,如另一種語言、程式碼、圖像等。

為NLP選擇正確的語言模型

圖4:編碼器-解碼器結構的基本模式

編碼器-解碼器架構最初是為遞歸神經網路引入的。自從引入基於注意力的Transformer模型以來,傳統的遞歸已經失去了它的流行,而編碼器-解碼器的想法卻一直存在。大多數自然語言理解(NLU)任務依賴編碼器,而自然語言生成(NLG)任務需要解碼器,序列到序列的轉換需要這兩個元件。

我們不會在這裡討論Transformer架構和關注機制的細節。對於那些想掌握這些細節的人來說,要準備好花大量的時間去琢磨它。

四、在現實世界中使用語言模型

1.微調

語言建模是一項強大的上游任務--如果你有一個成功的語言模型,恭喜你--這是一個智慧模型。相反,NLP大多被用於更有針對性的下游任務,如情緒分析、問題回答和資訊提取。這就是應用遷移學習和重複使用現有語言知識以應對更具體挑戰的時候。在微調過程中,模型的一部分被 "凍結",其餘部分則以特定領域或任務的資料進一步訓練。

明確的微調增加了LLM部署道路上的複雜性。它還會導致模型爆炸,即每個業務任務都需要自己的微調模型,從而升級到無法維護的各種模型。因此,人們已經努力使用少量或零次學習來擺脫微調步驟(例如在GPT-3中)。這種學習是在預測過程中發生的:向模型提供 "提示"--任務描述和可能的幾個訓練實例--以指導其對未來實例的預測。

雖然實施起來要快得多,但零次或少量學習的便利因素被其較低的預測品質所抵消。此外,許多這樣的模型需要透過雲端API存取。在開發初期,這可能是一個受歡迎的機會--然而,在更高級的階段,它可能變成另一個不必要的外部依賴。

2.為下游任務挑選合適的模型

看著人工智慧市場上不斷供應的新語言模型,為特定的下游任務選擇合適的模型並與最先進的技術保持同步是很棘手的。

研究論文通常以特定的下游任務和資料集作為每個模型的基準。標準化的任務套件,如SuperGLUE和BIG-bench,可以針對眾多的NLP任務進行統一的基準測試,並提供一個比較的基礎。不過,我們應該記住,這些測試是在一個高度控制的環境中準備的。到目前為止,語言模型的泛化能力相當有限——因此,轉移到現實生活中的資料集可能會大大影響模型的效能。評估和選擇一個合適的模型應該包括在盡可能接近生產數據的數據上進行實驗。

作為一條經驗法則,預訓練目標提供了一個重要的提示:自回歸模型在文本生成任務中表現良好,如對話式人工智能、問題回答和文本總結,而自動編碼器擅長"理解"和結構化語言,例如用於情緒分析和各種資訊提取任務。理論上,只要收到適當的提示,用於零點學習的模型可以執行各種任務--然而,它們的準確率通常低於經過微調的模型。

為了讓事情更加具體,下圖顯示了流行的NLP任務是如何與NLP文獻中突出的語言模型相關聯的。這些關聯是根據多種相似性和聚合度量計算的,包括嵌入相似性和距離加權共同發生。得分較高的模型-任務對,如BART/文字總結和LaMDA/對話式人工智慧,顯示基於歷史資料的良好匹配。

為NLP選擇正確的語言模型

圖5:語言模型與下游任務之間的關聯強度

#五、主要收穫

在這篇文章中,我們已經涵蓋了LLM的基本概念和正在發生創新的主要層面。下表提供了最受歡迎的LLM的主要特徵摘要。

為NLP選擇正確的語言模型

表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年分散式架構經驗。

以上是為NLP選擇正確的語言模型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除