官术网_书友最值得收藏!

如圖 1-1 所示,語言人工智能的發展歷史涉及許多技術進展和模型,這些技術和模型的目標是使計算機能夠表示和生成語言。

圖 1-1:語言人工智能的歷史一瞥

然而,對計算機來說,語言是一個復雜的概念。文本本質上是非結構化的,當用 0 和 1(單個字符)表示時就會失去其含義。因此,在語言人工智能的發展歷程中,人們一直非常關注如何以結構化的方式表示語言,使計算機能夠更容易地使用。圖 1-2 展示了語言人工智能任務的示例。

圖 1-2:通過處理文本輸入,語言人工智能可以完成多種任務

語言人工智能歷史始于一種名為詞袋(bag-of-words)的技術,這是一種表示非結構化文本的方法 2。它早在 20 世紀 50 年代就被提出,但直到 2000 年前后才開始流行。

2Fabrizio Sebastiani.“Machine Learning in Automated Text Categorization.”ACM Computing Surveys (CSUR) 34.1 (2002): 1-47.

詞袋模型的工作原理如下。假設我們有兩個句子需要創建數值表示。詞袋模型的第一步是分詞(tokenization),即將句子拆分成單個詞或子詞(詞元,token),如圖 1-3 所示。

圖 1-3:通過在空格處分割,每個句子被拆分成詞(詞元)

最常見的分詞方法是通過空格分割來把句子分割成詞。然而,這種方法也有其缺點,因為某些語言(如漢語)的詞之間沒有空格。在下一章中,我們將深入探討分詞技術以及它如何影響語言模型。如圖 1-4 所示,在分詞之后,我們將每個句子中所有不同的詞組合起來,創建一個可用于表示句子的詞表(vocabulary)。

圖 1-4:通過保留兩個句子中所有不同的詞來創建詞表

使用詞表,我們只需計算每個句子中詞出現的次數,就創建了一個詞袋。因此,詞袋模型旨在以數字形式創建文本的表示(representation),也稱為向量或向量表示,如圖 1-5 所示。在本書中,我們將這類模型稱為表示模型(representation model)。

雖然詞袋是一種經典方法,但這不代表它現在就完全過時了。在第 5 章中,我們將探討如何將它與最新的語言模型結合使用。

圖 1-5:通過計算單個詞出現的次數創建詞袋,這些值被稱為向量表示

詞袋雖然是一種優雅的方法,但存在一個明顯的缺陷。它僅僅把語言視為一個幾乎字面意義上的“詞袋”,而忽略了文本的語義特性和含義。

word2vec(詞向量)于 2013 年發布,是首批成功利用嵌入(embedding)這個概念來捕捉文本含義的技術之一 3。嵌入是數據的向量表示,試圖捕捉數據的含義。為此,word2vec 通過在大量文本數據(如整個維基百科)上訓練來學習詞的語義表示。

3Tomas Mikolov et al.“Efficient Estimation of Word Representations in Vector Space.”arXiv preprint arXiv:1301.3781 (2013).

為了生成這些語義表示,word2vec 利用了神經網絡(neural network)技術。神經網絡由處理信息的多層互連節點組成。如圖 1-6 所示,神經網絡可以有多個“層”,每個連接都有一定的權重,這些權重通常被稱為模型的參數

圖 1-6:神經網絡由互連的多層節點組成,每個連接都是一個線性方程

利用這些神經網絡,word2vec 觀察在給定句子中哪些詞傾向于出現在其他詞旁邊,進而據此生成詞嵌入。我們首先為詞表中的每個詞分配一個向量嵌入,比如說每個詞有 50 個隨機初始化的值。然后在每個訓練步驟中,我們從訓練數據中取出詞對(pairs of words),用模型嘗試預測它們是否可能在句子中相鄰,如圖 1-7 所示。

圖 1-7:訓練神經網絡來預測兩個詞是否為相鄰詞。在此過程中,詞嵌入會根據真實標注進行更新

在訓練過程中,word2vec 會學習詞與詞之間的關系,并將這些信息提煉到詞嵌入中。如果兩個詞各自的相鄰詞集合有更大的交集,它們的詞嵌入向量就會更接近,反之亦然。在第 2 章中,我們將深入探討 word2vec的訓練過程。

上述過程訓練出的詞嵌入能夠捕捉詞的含義,但這究竟意味著什么?為了說明這種現象,讓我們稍作簡化,設想我們有幾個詞的詞嵌入,比如 apple(蘋果)和 baby(嬰兒)。詞嵌入試圖通過表示詞的屬性來捕捉其含義。例如,baby 這個詞在“newborn”(新生兒)和“human”(人類)這些屬性上的得分可能很高,而 apple 在這些屬性上的得分則較低。

如圖 1-8 所示,詞嵌入可以用多種屬性來表示一個詞的含義。由于嵌入向量的大小是固定的,這些屬性需要經過精心選擇,以構建用來代表詞的“心智表征”的抽象表示。

圖 1-8:詞嵌入的值代表用于表征這個詞的屬性。我們可以簡單地將維度理解為概念(實際上并非如此,但這有助于理解)

在實踐中,這些屬性通常相當抽象,很少與單一實體或人類可識別的概念相關。然而,這些屬性組合在一起對計算機來說是有意義的,是將人類語言轉換為計算機語言行之有效的方式。

詞嵌入非常有用,因為它使我們能夠衡量兩個詞的語義相似度。使用各種距離度量方法,我們可以判斷一個詞與另一個詞的接近程度。如圖 1-9 所示,如果我們將這些詞嵌入壓縮成二維表示,你會發現含義相似的詞往往會更接近。在第 5 章中,我們將探討如何將這些詞嵌入壓縮到 n 維空間。

圖 1-9:相似詞的詞嵌入在高維空間中會彼此靠近

如圖 1-10 所示,有許多類型的嵌入,如詞嵌入和句子嵌入,它們用于表示不同層次的抽象(詞與句子)。

圖 1-10:可以為不同類型的輸入創建嵌入

例如,詞袋模型在文檔層面創建嵌入,因為一個嵌入表示的是整個文檔。相比之下,word2vec 為每個詞生成一個嵌入。

在本書中,嵌入將發揮核心作用,因為它們在許多用例中得到了應用,如分類(見第 4 章)、聚類(見第 5 章)以及語義搜索和檢索增強生成(retrieval augmented generation,RAG)(見第 8 章)。在第 2 章中,我們將首先深入探討詞元嵌入(token embedding)。

word2vec的訓練過程會創建靜態的、可下載的詞表示。例如,bank 這個詞無論在什么上下文中使用,都會有相同的詞嵌入。然而,bank 既可以指銀行,也可以指河岸。它的含義應該根據上下文而變化,因此它的嵌入也應該根據上下文而變化。

使用 RNN(recurrent neural network,循環神經網絡),可以實現文本編碼的一個步驟。這些神經網絡的變體可以將序列作為補充輸入進行建模。

為此,這些 RNN 被用于兩個任務:編碼,也就是表示輸入句子;解碼,也就是生成輸出句子。圖 1-11 說明了這個概念,展示了如何將“I love llamas”(我喜歡美洲駝)這個英語句子翻譯成荷蘭語“Ik hou van lama's”。

圖 1-11:兩個 RNN(解碼器和編碼器)將輸入序列從英語翻譯成荷蘭語

該架構中的每個步驟都是自回歸(auto-regressive)的。如圖 1-12 所示,在生成下一個詞時,該架構需要使用所有先前生成的詞作為輸入。

圖 1-12:每個之前輸出的詞元都被用作生成下一個詞元的輸入

上述編碼步驟旨在盡可能準確地表示輸入,以嵌入的形式生成上下文,作為解碼器的輸入。為了生成這種表示,它將嵌入作為詞的輸入,這意味著我們可以使用 word2vec 作為初始表示。在圖 1-13 中,我們可以觀察到這個過程。請注意輸入是如何按順序一次處理一個詞的,輸出也是如此。

圖 1-13:使用 word2vec 嵌入,生成用于表示整個序列的上下文嵌入

然而,這種上下文嵌入方式存在局限性,因為它僅用一個嵌入向量來表示整個輸入,使得處理較長的句子變得困難。2014 年,研究人員提出了注意力(attention)解決方案,大大改進了原始架構 4。注意力允許模型關注輸入序列中彼此相關(相互“注意”)的部分,并放大它們的信號,如圖 1-14 所示。注意力機制通過選擇性地聚焦于句子中最關鍵的詞,來突出其重要性。

4Dzmitry Bahdanau, Kyunghyun Cho, and Yoshua Bengio.“Neural Machine Translation by Jointly Learning to Align and Translate.”arXiv preprint arXiv:1409.0473 (2014).

例如,輸出詞 lama's 是荷蘭語中 llamas(美洲駝)的意思,這就是為什么兩者之間的注意力 5 很高。反之,lama's 和 I 這兩個詞之間的注意力較低,因為它們的相關性不大。在第 3 章中,我們將深入討論注意力機制。

5即注意力權重或分數,后者均用這種簡化表達。——編者注

圖 1-14:注意力機制使模型能夠“注意”序列中彼此相關程度更高或者更低的部分

通過在解碼步驟中添加這些注意力機制,RNN 可以為輸入序列中的每個詞生成與潛在輸出相關的信號。這并不僅僅是將上下文嵌入傳遞給解碼器,而是傳遞所有輸入詞的隱藏狀態。這個過程如圖 1-15 所示。

圖 1-15:在生成 Ik、hou 和 van 這些詞之后,解碼器的注意力機制使其能夠關注到 llamas 這個詞,進而生成它的荷蘭語譯文 lama's

因此,在生成“Ik hou van lama's”的過程中,RNN 會追蹤它在進行翻譯時主要關注的詞。相比 word2vec,基于注意力的RNN 架構可以通過“關注”整個句子,更好地表征文本的序列特性及其上下文。然而,這種序列特性不利于模型訓練過程中的并行化。

2017 年發表的著名論文“Attention is All You Need”6 首次探討了注意力機制的真正威力,以及驅動 LLM 展現出驚人能力的核心所在。作者提出了一種被稱為 Transformer(跟“變形金剛”是同一個英文單詞)的網絡架構,它完全基于注意力機制,摒棄了此前提到的RNN。與 RNN 相比,Transformer 支持并行訓練,這大大加快了訓練速度。

6Ashish Vaswani et al“. Attention is All You Need.”Advances in Neural Information Processing Systems 30 (2017).

在 Transformer 中,編碼和解碼組件相互堆疊,如圖 1-16 所示。這種架構仍然是自回歸的,每個新生成的詞都被模型用于生成下一個詞。

圖 1-16:Transformer 由堆疊的編碼器和解碼器塊組合而成,輸入依次流經每個編碼器和解碼器

我們看到,編碼器和解碼器塊都圍繞著注意力機制 7 展開,而不是利用帶有注意力特征的RNN。Transformer 中的編碼器塊由兩部分組成:自注意力(self-attention)和前饋神經網絡(feed-forward neural network),如圖 1-17 所示。

7原始的Transformer 論文將注意力分為自注意力和交叉注意力。自注意力表示解碼器層在生成一個詞元時,與它之前已經生成的詞元序列之間的關系,以及編碼器層處理的輸入序列內部的關系;而交叉注意力表示編碼器層處理的輸入序列和解碼器層處理的輸出序列之間的關系。從 GPT 開始,如今的大模型幾乎都采用僅解碼器架構,這意味著它們只使用自注意力機制。——譯者注

圖 1-17:編碼器塊圍繞自注意力來生成中間表示

與之前的注意力方法相比,自注意力可以關注單個序列內部的不同位置,從而更高效且準確地表示輸入序列,如圖 1-18 所示。它可以一次性查看整個序列,而不是一次處理一個詞元。

圖 1-18:自注意力機制能關注到輸入序列的所有部分,使其可以在單個序列內同時“查看”前后文內容

與編碼器相比,解碼器多了一個注意力層,用于關注編碼器的輸出(以便找到輸入中相關的部分)。如圖 1-19 所示,這個過程類似于我們之前討論過的RNN 注意力解碼器。

圖 1-19:解碼器具有一個附加的注意力層,用于關注編碼器的輸出

如圖 1-20 所示,解碼器中的自注意力層會掩碼未來的位置,這樣在生成輸出時就只會關注之前的位置,從而避免信息泄露。

圖 1-20:僅關注之前的詞元以避免“看到未來”

編碼器、解碼器這些模塊共同構成了 Transformer 架構,是語言人工智能中許多影響深遠的模型(如 BERT 和 GPT-1)的基礎,我們將在本章后面詳細介紹。在本書中,我們使用的大多數模型是基于 Transformer的。

關于 Transformer 架構,遠不止我們目前探索的這些內容。在第 2 章和第 3 章中,我們將深入探討 Transformer 模型如此成功的諸多原因,包括多頭注意力(multi-head attention)、位置嵌入(positional embeddings)和層歸一化(layer normalization)。

原始的Transformer 模型是一個編碼器 - 解碼器架構,雖然非常適合翻譯任務,但難以用于其他任務,比如文本分類。

2018 年,研究人員提出了一種名為 BERT(bidirectional encoder representations from Transformers,基于 Transformer的雙向編碼器表示)的新架構,它可以應用于各種任務,并在未來幾年成為語言人工智能的基石 8。如圖 1-21 所示,BERT 是一個僅編碼器架構,專注于語言表示。這意味著它只使用編碼器,完全移除了解碼器。

8Jacob Devlin et al.“BERT: Pre-Training of Deep Bidirectional Transformers for Language Understanding.”arXiv preprint arXiv:1810.04805 (2018).

圖 1-21:BERT 基座模型的架構,包含 12 個編碼器

這些編碼器模塊與我們之前看到的相同:在自注意力層之后,接上前饋神經網絡。輸入中包含一個附加詞元——[CLS](分類詞元),用于表示整個輸入。通常,我們使用 [CLS] 詞元作為輸入嵌入(input embedding),用于在特定任務(如分類)上進行模型微調。

這些堆疊起來的編碼器很難訓練,因此 BERT 采用了一種被稱為掩碼語言建模(masked language modeling)的技術來解決這個問題(見第 2 章和第 11 章)。如圖 1-22 所示,該方法會掩碼部分輸入,讓模型預測被掩碼的部分。這樣的預測任務雖然困難,但能讓 BERT 為輸入序列創建更準確的(中間)表示。

圖 1-22:用掩碼語言建模方法訓練 BERT 模型

這種架構和訓練過程使 BERT 及相關架構在表示依賴上下文的文本方面表現十分出色。BERT 類模型通常用于遷移學習(transfer learning),這包括首先針對語言建模進行預訓練(pretraining),然后針對特定任務進行微調(fine-tuning)。例如,通過在整個維基百科的文本數據上訓練 BERT,它學會了理解文本的語義和上下文性質。然后,如圖 1-23 所示,我們可以使用該預訓練模型,針對特定任務(如文本分類)進行微調。

圖 1-23:在掩碼語言模型上預訓練 BERT 后,我們針對特定任務對其進行微調

預訓練模型的一個巨大優勢是大部分訓練工作已經完成。針對特定任務的微調通常計算量較小,且需要的數據更少。此外,BERT 類模型架構在處理過程中的幾乎每一步都會生成嵌入,這使得 BERT 模型成為通用特征提取器,無須針對特定任務進行微調。

像 BERT 這樣的僅編碼器模型將在本書的多個章節中使用。多年以來,它們一直被用于常見任務,包括分類任務(見第 4 章)、聚類任務(見第 5 章)和語義搜索(見第 8 章)。

在本書中,我們將僅編碼器模型稱為表示模型(representation model),以區別于僅解碼器模型;將僅解碼器模型稱為生成模型(generative model)。需要注意的是,表示模型和生成模型的主要區別并不在于底層架構和工作方式。表示模型主要關注語言的表示,例如創建嵌入,而通常不生成文本;相比之下,生成模型主要關注生成文本,通常不會被訓練用于生成嵌入。

表示模型和生成模型及其組件的區別也會體現在本書的大多數圖片中。表示模型用藍綠色表示,配有一個小向量圖標(表示其關注向量和嵌入);而生成模型用粉紅色表示,配有一個小對話圖標(表示其生成能力)。

與 BERT的僅編碼器架構類似,2018 年出現了一種用于處理生成任務的僅解碼器架構—— GPT9(生成式預訓練 Transformer,現在被稱為 GPT-1,以區別于后續版本)。GPT 因其生成能力而得名。如圖 1-24 所示,它與 BERT 編碼器堆疊架構類似,堆疊了多個解碼器塊。

9Alec Radford et al.“Improving Language Understanding by Generative Pre-Training”, (2018).

圖 1-24:GPT-1 架構。GPT-1 使用了僅解碼器架構,去掉了編碼器注意力塊

GPT-1 在 7000 本圖書和 Common Crawl(一個大型網頁數據集)上進行訓練。最終模型包含 1.17 億個參數。每個參數都是一個數值,代表著模型對語言的理解。

假設其他條件相同,我們預計更多的參數能顯著提升語言模型的能力和性能。考慮到這一點,我們已經看到新發布的模型越來越大,模型規模穩步提升。如圖 1-25 所示,GPT-2 有 15 億個參數 10,GPT-3 則有 1750 億個參數 11

10Alec Radford et al.“Language Models are Unsupervised Multitask Learners.”OpenAI Blog 1.8 (2019): 9.

11Tom Brown et al.“Language Models are Few-Shot Learners.”Advances in Neural Information Processing Systems 33 (2020): 1877-1901.

圖 1-25:GPT 模型的規模迅速增長

這些生成式僅解碼器模型,特別是“更大”的模型,通常被稱為大語言模型(LLM)。正如我們將在本章后面討論的,LLM 這個術語不僅僅指代生成模型(僅解碼器),也包括表示模型(僅編碼器)。

生成式 LLM 作為一種序列到序列(sequence-to-sequence,Seq2Seq)的文本生成系統,其核心機制是接收文本輸入并嘗試自動補全。盡管自動補全功能很實用,但這類模型真正的強大之處在于經過訓練成為聊天機器人。與其只是補全文本,不如將它們訓練得能夠回答問題。通過微調這些模型,我們可以創建能夠遵循人類指示的指令模型(instruct model)或對話模型(chat model)。

如圖 1-26 所示,由此創建的模型接收用戶查詢(提示詞,prompt),輸出最可能符合該提示詞的響應。因此,你經常會聽到生成模型被稱為補全模型(completion model)。

圖 1-26:生成式 LLM 接收輸入并嘗試補全。對于指令模型來說,則不僅僅是自動補全,而是試圖回答問題

這些補全模型的一個要素是所謂的上下文長度(context length),也稱為上下文窗口(context window)。如圖 1-27 所示,上下文長度代表模型可以處理的最大詞元數量。如果我們有較大的上下文長度,就可以將整個文檔傳遞給 LLM。需要注意的是,由于這些模型的自回歸特性,當生成新的詞元時,當前的上下文長度會增加。

圖 1-27:上下文長度是 LLM 能處理的最長上下文

LLM 對 AI 領域產生了巨大影響,隨著 ChatGPT(GPT-3.5)的發布、普及和媒體關注,一些人將 2023 年稱為“生成式 AI 元年”。當我們提到 ChatGPT 時,我們實際上指的是這款產品而非其底層模型。它最初由 GPT-3.5 LLM 驅動,此后又發展出了幾個性能更強的版本,如 GPT-412

12OpenAI,“GPT-4 Technical Report.”arXiv preprint arXiv:2303.08774 (2023).

在生成式 AI 元年,產生影響力的模型不只是 GPT-3.5。如圖 1-28 所示,開源和專有的LLM 都以驚人的速度走入大眾視野。這些開源基座模型通常被稱為基礎模型(foundation model),可以針對特定任務,比如遵循指令進行微調。

圖 1-28:生成式 AI 元年全景圖。注意:圖中仍有許多模型未列出

除了廣受歡迎的Transformer 架構外,還出現了一些有前景的新架構,如 Mamba13 和 RWKV14。這些新型架構試圖在達到 Transformer 級別的性能的同時,還有額外的優勢,比如更大的上下文窗口或更快的推理速度。

13Albert Gu and Tri Dao.“Mamba: Linear-Time Sequence Modeling with Selective State Spaces.”arXiv preprint arXiv:2312.00752 (2023).
另參見“A Visual Guide to Mamba and State Space Models”,這是一份關于 Mamba 作為 Transformer 架構替代方案的圖解和可視化指南。

14Bo Peng et al.“RWKV: Reinventing RNNs for the Transformer Era.”arXiv preprint arXiv:2305.13048 (2023).

這些模型和架構的發展是 LLM 領域進展的縮影,由此可見,2023 年確實是 AI 發展突飛猛進的一年。我們竭盡全力才能跟上語言人工智能領域內外的眾多進展。

主站蜘蛛池模板: 清苑县| 东宁县| 长寿区| 宁国市| 东宁县| 东兰县| 南雄市| 余干县| 长宁区| 吴堡县| 合山市| 石嘴山市| 新安县| 民丰县| 通榆县| 腾冲县| 根河市| 开远市| 临猗县| 莒南县| 永川市| 永宁县| 利津县| 福泉市| 石家庄市| 鄱阳县| 青浦区| 万年县| 桐庐县| 辉南县| 怀安县| 佛山市| 清徐县| 延长县| 惠水县| 来安县| 新河县| 乡城县| 临泽县| 昆明市| 孙吴县|