用於社會變革的聊天機器人/大型語言模型理論
介紹性影片
- Google 的 LLM 是什麼 - 一個關於 LLM 能夠做什麼的簡單 5 分鐘介紹。
- 蘋果的 LLM 是什麼 (WWDC) - 一個關於嵌入、標記和 LLM 的精彩介紹,前 6 分鐘。然後轉入主題,即多語言模型。
- 從頭開始構建 LLM - 一個很好的影片介紹,配合部落格,將從零到全面構建 LLM 的過程概念化(100 萬美元后!)。
- 微軟的 chatGPT 訓練基礎設施,以及類似的超高吞吐量應用程式。
- 使用 DeepSpeed 最佳化訓練
- InfiniBand 用於實現驚人的網路吞吐量
- ONNX 用於在網路之間移動模型(還可以檢視 CRIU 以瞭解檢查點機制的工作原理)。
- 英偉達的 張量核心 代替 GPU 進行計算
講座
- 神經網路簡介 - 斯坦福 CS224N。一個關於神經網路的很好的數學概述。
- 擴充套件語言模型 - 斯坦福 CS224N 客座講座。一個關於 LLM 能力提升的總體展望。
- 構建知識表示 - 斯坦福 CS224N 客座講座。對於理解我們的向量檢索方法非常有用,但從更廣闊的視角來看。
- 點積具有快速最近鄰搜尋演算法(亞線性)。
- 重新排序通常是必要的,因為點積不一定是那麼具有表達能力。
- 並非所有向量集都易於索引,“病態”,為了提高效能,可以將它們“散開”,例如
- 社會智慧 NLP 系統 - 很棒!深入探討了社會如何影響語言,以及如何破壞我們的模型。
- LangChain 與助手 API - 一個關於兩個用於更深入的聊天機器人計算的介面的很好概述。
- LLM 應用程式的新興架構,從企業的角度來看,架構及其使用。涵蓋了使用向量搜尋的 RAG、助手以及 LLM 模型精煉的一般工作流程。
- 從頭開始構建 GPT - 由 Andrej Karpathy 提供的關於 chatGPT 的絕佳介紹,瞭解其確切的工作原理(Torch)。
- GPT 中的標記化,由 Andrej Karpathy 提供的精彩介紹,他在這個領域還有很多其他優秀的講座。
課程
教科書
- 駭客語言模型指南,作者:Jeremy Howard
- 程式設計師的實用深度學習
- 理解深度學習,以及這個很好的介紹性演講
- Dahl, D. A. (2023). 使用 Python 進行自然語言理解: 將自然語言技術、深度學習和大型語言模型相結合,在計算機系統中建立類似人類的語言理解能力。Packt 出版社。
- Sinan Ozdemir. (2023). 大型語言模型快速入門指南: 使用 ChatGPT 和其他 LLM 的策略和最佳實踐。Addison-Wesley 專業。
- Zhao, W. X. 等人。(2023)。大型語言模型綜述 (arXiv:2303.18223)。arXiv。
- 這並不完全是一本教科書,但它有 122 頁密集的參考材料,內容豐富,不應被視為一次性閱讀的資源。
在資訊檢索的上下文中,重新排序是一個兩步過程,用於增強搜尋結果的相關性。以下是如何通常工作的
- 第一步檢索:在初始階段,使用快速高效的方法檢索一組廣泛的文件。這通常使用基於嵌入的檢索完成,其中文件和查詢在多維空間中表示為向量。這裡的目標是撒開一張大網,快速檢索大量候選文件集,並且計算成本相對較低。
- 第二階段重排序:第一階段檢索到的文件將在第二階段重新評估,以提高搜尋結果的準確性。此階段涉及計算量更大的演算法,通常由語言模型(如大型語言模型)驅動,該演算法更全面地考慮了搜尋查詢的上下文。此步驟會重新排序(重新排名)第一階段的結果,將更相關的文件提升到更高位置,而將不太相關的文件降級。
重排序步驟是搜尋結果相關性與所需計算資源之間的權衡。透過將其用作第二階段,系統旨在平衡基於嵌入的檢索的速度和效率以及基於大型語言模型的檢索的深度和相關性。這種組合方法可以生成既相關又可以在可接受的時間範圍內和成本內生成的結果集。
斯坦福自然語言處理小組一直在研究文字中的矛盾檢測,併為此建立了矛盾資料集。他們對 PASCAL RTE 資料集進行了矛盾標註,針對推理進行了三元決策標記:"YES"(蘊含)、"NO"(矛盾)和 "UNKNOWN"(不蘊含,但不是矛盾)。此外,他們還建立了一個語料庫,其中矛盾來自對 RTE2 測試資料的負標記,並收集了一組在“野外”出現的矛盾。
- Uray, Martin (2018). "探索矛盾檢測的神經模型".
{{cite journal}}: Cite journal requires|journal=(幫助) - Tawfik, Noha S.; Spruit, Marco R. (2018). "生物醫學文獻中的自動矛盾檢測". 在 Petra Perner (ed.) (ed.). 機器學習和資料探勘在模式識別中的應用. Vol. 10934. Cham: Springer International Publishing. pp. 138–148. ISBN 978-3-319-96135-4 978-3-319-96136-1. 檢索於 2023-11-16.
{{cite book}}:|editor=has generic name (幫助); Check|isbn=value: length (幫助) - Hsu, Cheng; Li, Cheng-Te; Saez-Trumper, Diego; Hsu, Yi-Zhan (2021-11-16), WikiContradiction:檢測維基百科中的自相矛盾文章, arXiv, 檢索於 2023-11-16
- Li, Luyang; Qin, Bing; Liu, Ting (2017-05-24). "利用矛盾特定詞嵌入進行矛盾檢測". 演算法. 10 (2): 59. doi:10.3390/a10020059. ISSN 1999-4893. 檢索於 2023-11-16.
- Al Jallad, Khloud; Ghneim, Nada. "ArNLI:阿拉伯自然語言推理用於蘊含和矛盾檢測".
{{cite journal}}: Cite journal requires|journal=(幫助)
讓我們深入瞭解大型語言模型 (LLM) 的世界。它們是旨在理解、使用和生成人類語言的先進計算機程式。想象它們就像巨大的圖書館,裡面裝滿了各種各樣的書籍,涵蓋了你能想到的每一個主題。就像一個知道如何在這些書中找到每條資訊的圖書管理員一樣,LLM 可以在這浩瀚的知識中進行導航,為我們提供見解、答案,甚至生成新內容。
它們是如何實現這一點的呢?LLM 建立在複雜的演算法和數學模型之上。它們從大量文字中學習——從小說和新聞文章到科學論文和社交媒體帖子。這個學習過程涉及識別語言中的模式:單詞和句子是如何構建的,想法是如何連線的,以及不同的表達方式是如何傳達相同含義的。
每個 LLM 都有數百萬,有時甚至數十億個引數——這些是模型的旋鈕和撥盤。每個引數都在理解語言的微小方面發揮作用,比如句子的語氣、單詞的含義或段落的結構。當你與 LLM 互動時,它會使用這些引數來解碼你的請求並生成準確且相關的響應。
LLM 最迷人的方面之一是它們的通用性。它們可以以不同的風格寫作,從正式報告到隨意對話。它們可以回答事實性問題,創作富有想象力的故事,甚至編寫程式碼。這種適應性使它們在各個領域和應用中都非常有用。
LLM 是我們與機器互動方式的突破。它們帶來了以前無法達到的理解和響應能力,使我們與計算機的互動更加自然和直觀。隨著它們的不斷發展,它們不僅在改變我們使用技術的方式,而且還在擴充套件它所能實現的界限。
在本章中,我們將深入探討大型語言模型 (LLM) 的世界。從基本定義和概念開始,我們將追蹤它們的 historical development 以瞭解它們是如何演變成今天的先進模型的。我們將深入研究使 LLM 能夠運作的關鍵組成部分,包括神經網路架構、它們的訓練過程以及語言建模和預測的複雜性。最後,我們將研究 LLM 的基本應用,如自然語言理解和生成,涵蓋對話代理、情感分析、內容創作和語言翻譯等領域。本章旨在對 LLM 提供清晰全面的理解,展示其能力及其在各個領域產生的變革性影響。
神經網路的基礎
為了真正理解大型語言模型 (LLM) 的概念,我們必須首先了解神經網路,它是其背後的核心技術。神經網路是受人腦啟發的機器學習的一個子集。它們由多層節點(或“神經元”)組成,每個節點都能執行簡單的計算。當這些神經元相互連線並分層時,它們可以處理複雜的資料。在 LLM 的語境中,這些網路分析和處理語言資料。LLM 中神經網路的結構
- 輸入層:這是模型接收文字資料的層。每個單詞或字元都用數字表示,通常是一個向量,它是一系列數字,捕捉了該單詞的本質。
- 隱藏層:這是進行大部分處理的地方。在 LLM 中,隱藏層通常非常複雜,允許模型識別語言中的錯綜複雜的模式。模型具有的層越多(或“深度”越大),它對語言的理解就越細緻入微。
- 輸出層:此層生成最終的輸出,它可以是對句子中下一個單詞的預測、將文字分類為不同類別或其他語言任務。
訓練大型語言模型
訓練 LLM 包括向其提供大量文字資料。在這個過程中,模型會對文字做出預測(比如猜測句子中下一個單詞)。然後,它會將自己的預測與實際文字進行比較,調整引數(神經元的權重和偏差)以提高準確性。這個過程會重複無數次,使模型能夠從錯誤中學習並提高其語言理解能力。引數:LLM 的構建塊
神經網路中的引數是在訓練過程中模型調整的方面。在大型語言模型 (LLM) 中,這些引數非常多,通常數以億計甚至更多。它們使模型能夠捕捉和記憶語言的細微差別,從基本語法到複雜的文風元素。從資料到語言理解
透過訓練,大型語言模型 (LLM) 發展出理解上下文、語法和語義的能力。這不僅僅是詞語識別,而是理解語言如何在不同情況下構建和使用。它們可以檢測出諷刺、幽默和情緒等微妙之處,即使對於人類來說也是一項挑戰。用大型語言模型 (LLM) 生成語言
經過訓練後,大型語言模型 (LLM) 可以生成文字。它們透過預測給定文字片段中的下一個詞來實現這一點。這種能力不僅僅是簡單地重複學習的資料,而是對模型內化的語言模式進行智慧的綜合。
透過理解這些基本概念,我們開始將大型語言模型 (LLM) 不僅僅視為工具或程式,而是視為模擬人類智慧中最複雜方面的一些高階系統。本節為更深入地探索其歷史發展、關鍵組成部分以及它們所支援的變革性應用奠定了基礎。
大型語言模型 (LLM) 的旅程始於計算語言學早期基於規則的系統。這些早期的模型可以追溯到 20 世紀 50 年代和 60 年代,基於為語法和語法制定的手工規則集。20 世紀 80 年代後期和 90 年代統計模型的出現標誌著一個重大轉變。這些模型使用機率來預測詞語序列,為現代語言建模奠定了基礎。
2000 年代見證了從統計模型到基於機器學習方法的轉變。這一時期在語言建模中引入了神經網路,但這些早期的網路相對簡單,通常侷限於特定任務,如詞性標註或命名實體識別。重點主要放在改進語言處理的特定方面,而不是發展全面的語言理解。
2010 年代初深度學習和詞嵌入的引入徹底改變了自然語言處理 (NLP)。像 Word2Vec 這樣的模型提供了一種將詞語表示為向量空間的方法,捕捉了詞語之間的語義關係。這一時期還見證了更復雜的神經網路架構的發展,例如長短期記憶 (LSTM) 網路,它們更善於處理語言的順序性。
2017 年引入 Transformer 模型是一個劃時代的時刻。Transformer 模型最初在一篇名為“注意力就是你所需要的一切”的論文中提出,它放棄了迴圈層,轉而使用注意力機制。這允許進行更多並行處理,並顯著提高了語言模型的效率和有效性。大型語言模型 (LLM) 的興起
在 Transformer 模型取得成功之後,語言模型的規模迅速擴大。值得注意的模型包括 OpenAI 的 GPT 系列、Google 的 BERT 以及其他模型,如 XLNet 和 T5。這些模型擁有龐大的引數數量(達到數十億),展現出前所未有的語言理解和生成能力。它們經過了對各種廣泛資料集的訓練,使它們能夠以高超的熟練程度執行各種語言任務。
最近的發展:不斷增強的能力和規模
大型語言模型 (LLM) 發展的最新階段的特點是模型規模和能力的進一步提高。像 GPT-3 及其後續模型這樣的模型在引數數量和語言理解的深度方面突破了界限。這些模型在生成連貫且與上下文相關的文字、回答複雜問題、翻譯語言甚至建立與人寫的文字無法區分的內容方面表現出非凡的能力。
架構大型語言模型 (LLM),例如基於 Transformer 架構的模型,代表了自然語言處理領域的重大進步。Transformer 模型是在論文“注意力就是你所需要的一切”中提出的,已成為大多數現代大型語言模型 (LLM) 的核心。
- 基於 Transformer 的大型語言模型 (LLM) 的架構非常複雜,由多個層和元件組成,這些層和元件協同工作以處理和生成語言。這種架構的關鍵元素包括
- 輸入嵌入層:該層將輸入文字轉換為數值向量。輸入文字中的每個詞語或標記都表示為高維空間中的一個向量。這個過程對於模型處理語言資料至關重要。
- 位置編碼:除了詞語嵌入之外,Transformer 模型還將位置編碼新增到輸入嵌入中,以捕捉句子中詞語的順序。這一點很重要,因為模型本身不像 RNN(迴圈神經網路)那樣按順序處理詞語。
- 編碼器和解碼器層:Transformer 模型具有編碼器-解碼器結構。編碼器處理輸入文字,解碼器生成輸出文字。每個編碼器和解碼器都包含多個層。
- 編碼器中的每一層都包含兩個子層:一個多頭自注意力機制和一個簡單的逐位置全連線前饋網路。
- 解碼器中的每一層也包含兩個子層,但包含一個額外的第三個子層,用於對編碼器輸出進行注意力操作。
- 自注意力機制:該機制允許模型權衡輸入句子中不同詞語的重要性。它使模型能夠捕捉到整個句子的上下文資訊,這是 Transformer 模型的關鍵特徵。
- 多頭注意力:該元件將注意力機制拆分為多個頭,允許模型同時關注不同表示子空間中不同位置的資訊。
- 前饋神經網路:這些網路分別且相同地應用於每個位置。它們由帶有啟用函式的全連線層組成。
- 歸一化和丟棄層:這些層用於 Transformer 架構的其他元件之間,以穩定和規範化訓練過程。
輸出層:最終的解碼器輸出被轉換為一個預測的詞語或標記,通常使用 softmax 層生成一個可能的輸出機率分佈。
Transformer 架構是高度可並行的,與 RNN 或 LSTM 等舊架構相比,使其能夠更有效地訓練大型資料集。這種效率是基於 Transformer 的模型可以擴充套件到擁有大量引數並處理大量語言資料的原因之一。
有關 Transformer 架構的更多詳細資訊,請參閱 維基百科 Transformer 頁面.
神經網路架構思想圖 論文,其中很好地闡述了思維鏈提示和樹形思維提示。
Hadi 等人 (2023) 的 44 頁調查報告 [1] 為此提供了一個可靠且最新的資源。