1. 語言模型的原理和技術發展
1.1. 引言——從 RNN 到 ChatGPT
自然語言處理(Natural Language Processing,NLP)是電腦科學、人工智慧和語言學領域的一個交叉學科,主要研究如何讓電腦能夠理解、處理、生成和模擬人類語言的能力,從而實現與人類進行自然對話的能力。通過自然語言處理技術,可以實現機器翻譯、問答系統、情感分析、文本摘要等多種應用。隨著深度學習技術的發展,人工神經網路和其他機器學習方法已經在自然語言處理領域取得了重要的進展。
自然語言處理的發展可追溯到 20 世紀 50 年代,當時電腦科學家開始嘗試通過電腦程序來實現對自然語言的理解和生成。早期研究主要關注規則和基於知識的方法,如編寫語法規則和詞典來進行句子分析。20 世紀 80 年代,隨著計算能力的提高和大量語料庫的出現,統計方法在自然語言處理領域逐漸占據主導地位。這一時期,許多基於統計的機器翻譯、分詞、詞性標註等方法相繼出現。進入 21 世紀,尤其是近十幾年,深度學習技術的發展極大地推動了自然語言處理的進步。
從 2010 年,Tomas Mikolov 及其合作者提出了基於循環神經網路(RNN)的語言模型開始,自然語言處理進入了高速發展時期。2015 年 Dzmitry Bahdanau 等人在論文《Neural machine translation by jointly learning to align and translate》中提出的注意力機制,使語言模型可以學習到詞和詞之間更深層次的依賴關係,從而更好地理解和生成語句。著名的 Transformer 結構就廣泛採用了注意力機制,引領了後續自然語言處理技術的發展。
以谷歌在 2018 年提出的 BERT 為代表的預訓練語言模型,再次將自然語言處理的發展推進到了一個新的階段。預訓練語言模型利用無監督學習在大規模語料庫上進行預訓練,生成一個通用的語言模型,然後在特定任務上進行微調,在數據利用、任務泛化、模型性能方面都有顯著提升。OpenAI 發布的 GPT-3 模型,參數量達到 1750 億,其智能湧現能力標誌著人工智慧模型的自然語言處理能力進入了下一個階段。最新發布的 GPT-4.0 版本,參數規模達到了萬億 以上,由單純的語言模型進一步發展為可以處理來自不同模態(圖像、語音、文本等)資訊的多模態大模型。本章將按時間順序介紹語言模型的各發展階段,以及各階段具有代表性的技術原理。
1.2. 自回歸語言模型
1.2.1. 循環神經網路-RNN
1.2.1.1. 循環神經網路
循環神經網路(RNN)於 2010 年被首次應用於語言模型的訓練,其基本結構即為基本的隱變量自回歸模型。RNN 模型在每一個時間步都進行隱變量計算,並基於計算得到的隱變量對本時間步的輸出進行預測。對於每一個時間步,RNN 的隱變量與上一個時間步使用相同的定義,結合當前時間步的輸入資訊循環地計算新的隱變量。於是基於循環計算的隱狀態神經網路被命名為循環神經網路。
1.2.2. 長短期記憶網路-LSTM 與門控循環單元-GRU
為了解決循環神經網路模型存在的長期依賴問題,研究人員先後提出了長短期記憶網路(long short-term memory,LSTM)以及其簡化的變體——門控循環單元(gated recurrent unit,GRU)。相較於前文所介紹的循環神經網路,LSTM 與 GRU 對於長序列問題的處理效果更佳,並在在自然語言處理、語音識別、時間序列預測等領域得到了更加廣泛地應用。
1.2.2.1. 長短期記憶網路-LSTM
LSTM 是一種改進的 RNN,旨在有效地處理和捕捉長期依賴關係的序列數據,它的核心思想是引入一種特殊的內部狀態機制,以更好地處理長序列,並避免梯度消失問題。LSTM 引入了記憶單元(memory cell)來管理隱狀態中記錄的資訊,通過幾個門結構對其進行控制:輸出門(output gate)用來從單元中輸出條目;輸入門(input gate)用於控制數據的讀入;遺忘門(forget gate)用於重置記憶單元的內容。這三種門結構相配合的機制可以決定什麼時候該對隱狀態輸入的資訊作記憶,什麼時候忽略。同為隱藏層的輸出,記憶單元僅用於網路內部資訊的維護,隱狀態則會傳遞到輸出層用於預測當前時間步的輸出結果。
1.2.2.2. 門控循環單元-GRU
相比於 LSTM,門控循環單元(GRU)是一個稍微簡化的變體。通常,GRU 能夠提供與 LSTM 同等的效果,且收斂的速度更快。
1.2.3. 編碼器-解碼器架構
將輸入序列轉換成輸出序列的序列轉換模型(sequence transduction)在各類現代人工智慧應用中發揮著至關重要的作用。機器翻譯是序列轉換模型的一個核心問題,也是語言模型最常用和最成功的基準測試。機器翻譯的數據集是由源語言和目標語言的文本序列對組成,其輸入和輸出都是長度可變的序列。編碼器-解碼器(encoder-decoder)架構正是為了處理這種類型的輸入和輸出而設計的,是形成不同序列轉換模型的基礎,對語言模型的後續發展也起到了重要的作用。
編碼器-解碼器架構主要由編碼器(encoder)和解碼器(decoder)兩個組件組成。編碼器將長度可變的輸入序列轉換為具有固定長度的中間狀態(通常被稱為上下文向量或編碼向量)。輸入序列中的每個元素經過編碼器的神經網路層進行處理,逐步地講資訊傳遞到隱狀態中,最終構建出上下文向量。編碼器的隱藏狀態則被用作解碼器的初始狀態。 解碼器則接受編碼器生成的上下文向量以及目標序列的起始標記,按時間步逐步地生成目標序列的元素,直至生成完整的目標序列。通常,由解碼器生成的當前時間步的輸出元素,會作為其下一個時間步的輸入傳遞到解碼器中,以繼續生成序列的下一個元素。
編碼器-解碼器架構的主要應用包括機器翻譯、文本摘要、對話生成和語音識別等。它的核心思想是將不定長的輸入序列映射到固定長度的上下文向量,再從上下文向量生成不定長的輸出序列,這使得它適用於多種序列到序列的任務。這一架構的發展對於自動化生成任務和自然語言理解任務的進展產生了深遠的影響。
1.3. 注意力機制
雖然使用 LSTM、GRU 等結構的語言模型能通過隱藏的記憶單元捕捉序列的時序資訊,但依然存在一些問題。將輸入序列的所有資訊都壓縮到一個固定長度的隱狀態中,會造成資訊的缺失,當輸入句子長度很長時,模型的性能急劇下降。另外,在解碼器生成目標序列的過程中,編碼器對其初始化的資訊會隨著生成過程逐漸被「遺忘」。有研究者為了解決此類問題提出了增加上下文資訊的 RNN 序列模型,在解碼器的每一個時間步都將編碼器壓縮的整個句子資訊與解碼當前的 token 一起輸入解碼器中,防止源端的上下文資訊隨著目標序列的增長而衰減。但是這樣依舊存在一個問題:序列到序列模型解碼端不同時間步的 token 應該得到同樣的上下文資訊嗎?答案顯然是不。以語言翻譯為例:目標語句翻譯過程中,當前詞元與源語句不同位置上的詞元的相關程度明顯不同,而由編碼器壓縮得到的上下文資訊無法提供這些資訊。在這樣的背景下,注意力機制就應運而生了。
2015 年 Dzmitry Bahdanau 等人在論文《Neural machine translation by jointly learning to align and translate》中提出的注意力機制(Attention Mechanism),用於對輸入資訊的不同部分賦予不同的權重,使語言模型可以學習到詞和詞之間更深層次的依賴關係,從而更好地理解和生成語句。引入注意力機制後,語言模型的性能得到了大幅度的提升。
2017 年 Vaswani 等人發表了《Attention is all you need》,提出了基於自注意力機制(self-attention mechanism)的,消除了傳統 RNN 循環結構的 Transformer 結構。Transformer 結構提高了模型的並行性,帶來了顯著的性能提升。同時,隨著機器學習算力的發展,Transformer 在大規模文本語料庫上進行預訓練並對特定下游任務進行微調,引領了後續的 BERT、GPT 等預訓練模型和大語言模型的發展。總之,Transformer 模型的出現標誌著自然語言處理領域的一次革命,它的成功還擴展到了電腦視覺等其他領域,為多模態任務提供了新的可能性。
1.3.1. 注意力機制
對於人類來說,從各種感官系統接收到的資訊遠遠超過了大腦能夠完全處理的水平。「注意力」代表了大腦當前處理資訊的傾向性,將更多的時間和資源用於處理某一部分資訊。自然環境中的物體給人的各種感官帶來的資訊都不相同。在非自主的情況下,人們通常將注意力集中在具有突出性的感官資訊中,比如某些具有鮮艷突出顏色、發出刺耳噪音或產生奇特的香/臭味的物體。這些對人造成非自主性的注意力提示的物品,對人來說不一定有價值。為了完成當前的任務要求,人們會通過自主性的意志提示,將注意力集中於與任務相關的目標上,控制大腦處理資訊的資源投入以更好地完成任務。
人工智慧領域中的注意力機制從本質上來講,與人類的自主性注意力機制相似,核心是通過基於任務的提示,將注意力集中於小部分重要資訊,忽略大部分干擾資訊。深度學習中的注意力機制本質上是一個查詢的過程,主要包括三個概念:查詢(query)、鍵(key)和值(value),key和 value 是成對存在的。如果用文獻檢索作為例子解釋它們的作用,那麼所有 key-value 對的集合就相當於整個資料庫,key 相當於每份資料的關鍵字和摘要,value 相當於每份資料的具體內容,query 則相當於查詢者對目標資料的描述。在檢索時,將 query 與所有 key 進行匹配和比較,找到相關性高的 key 對應的 value 作為查詢的結果。實際上,注意力機制中 query、key 和 value的概念更加抽象,最終的輸出結果是以 key 與 query 的依賴關係為權重的,個 key 所對應的 value 的加權和。
1.3.2. Transformer 架構
1.3.2.1. 自注意力機制
注意力機制用於將一個元素(query)與其他元素(key-value)進行匹配,以生成一個加權的匯總資訊。以機器翻譯問題為例,引入注意力機制可以將解碼器每一個時間步的輸出作為 query,與編碼器的每一個時間步的隱狀態進行匹配,獲得一個以與 query 的相關性為權重的加權隱狀態作為上下文資訊,作為編碼器的補充輸入進行下一個時間步的輸出預測,提高翻譯任務的準確度。這意味著解碼器需要在每一個時間步都對輸入序列的所有位置進行全局的權重計算,這在長的輸入序列上會產生較高的計算複雜度,導致模型訓練和推理的效率下降。因此,通常會採用固定窗口等限制方法來控制每個位置與其他位置的相關性,這就導致了與傳統語言模型類似的長距離依賴問題,模型很難準確捕捉到遠距離位置之間的依賴關係。
自注意力機制(self-attention mechanism)將輸入序列中的每個元素視為 query、key 和 value,計算輸入序列中的每個元素與其他元素的相關性,可以有效地捕捉序列內部不同元素之間的依賴關係和相關性。在計算注意力權重時,每個位置的注意力都是相互獨立的,這使得自注意力機制能夠充分利用現代硬體(如 GPU 或 TPU)的並行計算能力。這種並行計算的優勢在處理長序列時尤為重要,因為它極大地提高了計算效率,使得模型能夠更快速地進行訓練和推理。
1.3.2.2. Transformer 的整體架構
2017 年 Vaswani 等人發表了《Attention is all you need》,提出了基於自注意力機制(self-attention mechanism)的,消除了傳統 RNN 循環結構的 Transformer 結構,極大程度地提高了模型計算的並行性,帶來了非常顯著的性能提升。下面會對 Transformer 模型結構進行簡要的介紹。
1.3.2.3. 多頭注意力機制
除了前面介紹的自注意力機制,Vaswani 等人還提出了多頭注意力(multi-head attention)機制並將其應用在 Transformer 塊中。多頭注意力機制旨在讓模型能夠通過對相同的 query、key 和 value,基於相同的注意力機制學習到不同的行為,並根據不同行為的組合捕捉序列內各種範圍的依賴關係。
具體的實現方法是,通過對輸入數據進行獨立學習,獲得 query、key 和 value 的多組線性投影(linear projections),再將每一組投影后的 query、key 和 value 送入各自獨立的注意力層中。最後將所有注意力層的輸出連接後,進行一次總體的線性投影,產生最終的輸出結果。每一組的投影變換和注意力層都是互相獨立和並行的,這樣的每一個注意力層都被稱作一個頭(head),因此這種方法被稱作多頭注意力機制。
1.3.2.4. 殘差連接
殘差連接(Residual Connection)是構建深度神經網路的重要工具,對深度神經網路的訓練和性能具有諸多方面的好處,其概念最初來自何愷明等人提出的殘差網路(ResNet)。ResNet 在 2015 年的 ImageNet 大規模機器視覺識別挑戰賽奪冠,並深刻地影響了後來的深度網路的設計。
這兩者看似差別不大,而在實踐中,殘差映射擁有許多優勢。在深度神經網路中,當梯度反向傳播時,它需要經過多個層次的權重矩陣。這些權重矩陣通常包含非線性激活函數,如 ReLU、sigmoid 等。這些激活函數可能導致梯度消失,使得梯度減小到接近零,從而阻礙了資訊的傳遞。殘差連接通過直接將輸入資訊與輸出資訊相加,將原始輸入作為跳躍連接傳遞給後續層次,從而繞過了大部分的權重矩陣和激活函數。這種直接傳遞保持了梯度的相對大小,減少了梯度消失的風險。殘差連接降低了梯度消失問題的影響,同時殘差映射的擬合相比於直接映射更容易優化,訓練難度更低,這就代表著能夠設計層次更深、更複雜的網路,進而提高模型的性能。
殘差連接能夠使深度神經網路模型具有一定程度的可恢復性。即使一個殘差塊中的權重沒有成功學到有用的特徵,殘差連接仍然可以傳遞原始輸入資訊,因為它們直接相加。這種恢復性使得模型更具容錯性,即使某些部分的網路沒有學到有效的表示,仍然可以在後續層次中修正錯誤。與傳統 NLP「寬而淺」的模型結構不同,Transformer 是基於 block 的堆疊結構,屬於「窄而深」的網路結構,可以充分利用殘差連接來達到優化網路的目的。
1.3.2.5. 詞嵌入和位置編碼
NLP 技術中的詞嵌入用來將文本序列的基本單元「詞」映射為機器能夠理解的「詞向量」。最簡單的詞向量表示方法是獨熱向量(one-hot vector)。假設詞典中不同詞的數量(詞典大小)為 N,每個詞對應一個從 0 到 N-1 的不同整數(索引)。
1.3.2.6. 基於位置的前饋神經網路
除了注意力層之外,Transformer 的編碼器和解碼器中的每個 block 都包含一個全連接前饋網路層,被命名為稱為基於位置的前饋神經網路(position-wise feed-forward network)。這個基於位置的前饋網路的關鍵在於,在處理序列數據時,它為每個位置的元素分別應用相同的變換,而不是將所有位置的元素視為相同。這意味著它能夠捕獲不同位置的不同特徵和局部資訊。序列元素的位置資訊通過上一小節中介紹的位置編碼來引入。
從網路結構上看,基於位置的前饋神經網路就是一個全連接網路,每個 FFN 層中包括兩次線性變換,兩次變換之間有一個非線性函數 ReLU 進行激活。雖然線性變換在不同位置上是相同的,但它們在每一層之間使用不同的參數。
1.4. 預訓練語言模型
1.4.1. 預訓練詞嵌入模型
上一節簡單介紹過詞嵌入的概念,簡單概括就是使用一個詞嵌入矩陣,將詞典中所有詞元的獨熱向量表示映射為固定維度且能計算不同詞元相似性的向量表示,其重點在於如何獲得一個有效的投影矩陣。針對一個詞典訓練一個有效的詞嵌入矩陣需要不小的算力和時間成本。因此沒有必要對於每一個新模型都重新對詞嵌入模塊進行訓練,只需要預先訓練一個有效的詞嵌入矩陣(word embedding),直接應用在新模型中就可以達到不錯的效果,這就是最初的預訓練模型。比如 word2vec 模型和 GloVe(Global Vectors,全局向量)模型,都是預訓練詞嵌入模型。
將訓練好的 word embedding 應用到下游任務的過程,相當於使用該詞嵌入矩陣對被訓練的網路的第一層進行權重初始化。後續訓練模型主要有兩種方式,區別在於是否鎖定 embedding 層的權重參數。採用凍結參數的方法(Frozen)訓練時,顧 名思義將 embedding 層的參數鎖定,訓練過程中映射矩陣不發生更新。採用微調法(Fine-Tuning)訓練時,不鎖定 embedding 層的參數,訓練時根據目標任務的數據集更新權重。
Frozen 訓練相當於將預訓練的 embedding 層當成一個字典,用於直接地將獨熱向量轉化為帶有語義關係的詞向量。這與一些詞庫的作用是類似的,區別在於詞庫直接存儲詞元文本到詞向量的映射關係,Frozen 的 embedding 則更有利於批量數據的並行計算。Fine-Tuning 訓練則相當於提供了一組相當不錯的權重初始化參數值,能夠有效地降低模型訓練的成本,對於下游任務的模型效果也有一定的幫助。
1.4.2. 上下文有關的預訓練詞嵌入模型
word2vec 和 GloVe 都簡單地給同一個詞分配一個預訓練詞向量,而不考慮詞的上下文。然而,自然語言中存在相當多的一次多義現象,在不同的上下文語境中,詞的含義可能大不相同。因此,上下文無關的詞向量表示具有明顯的局限性。
1.4.3. 通用預訓練模型:GPT
儘管 ELMo 顯著改進了各種自然語言處理任務的解決方案,但每個解決方案仍然依賴於一個特定於任務的架構。然而,為每一個自然語言處理任務設計一個特定的架構實際上並不是一件容易的事。GPT(Generative Pre Training,生成式預訓練)模型為上下文有關的詞表示設計了任務無關的通用模型。GPT 建立在 Transformer 解碼器的基礎上,預訓練了一個用於表示文本序列的自回歸語言模型。當將 GPT 應用於下游任務時,語言模型的輸出將被送到一個附加的線性輸出層,以預測任務的標籤。與 ELMo 凍結預訓練模型的參數不同,GPT 在下游任務的監督學習過程中對預訓練 Transformer 解碼器中的所有參數進行微調。
GPT 模型與 ELMo 模型的工作過程類似,也分成兩個階段:1.利用語言模型進行無 監督預訓練;2.通過有監督的微調(Fine-tuning)解決下游任務。GPT 使用 Transformer 模型的解碼器塊作為特徵抽取器,其特點在與遮蔽的自注意力層具有的自回歸特性,只提取上下文中的「上文」資訊作為特徵。對於不同的下游任務如分類、包涵判斷、相似判斷、多選等。之後統一進入 Transformer 塊進行特徵提取,最後根據任務類型通過線性層設計完成結果輸出。
同為預訓練,GPT 的 Fine-tuning 模式與 ELMo 的 Feature-based Pre-Training 模式區別在於:ELMo 模型是一種詞嵌入模型,它的目的在於生成詞的上下文有關表示,而不執行特定的任務。應用於下游任務時,需要設計一個處理該任務的模型來使用 ELMo 生成的詞向量。訓練下游任務時,鎖定 ELMo 的雙向 LSTM 模型的參數進行訓練。而 GPT 模型是一種自回歸語言模型,其本身就是一個能夠處理文本生成任務的模型。應用於其他下游任務時,需要根據任務特點對 GPT 模型的結構進行改造(較小的改動),使用預訓練的 GPT 模型進行參數初始化後,對整個模型進行不鎖參的微調訓練,以適應具體的任務特點。
1.4.4. 預訓練模型集大成者:BERT
ELMo 與 GPT 兩者各有優勢。ELMo 模型的優勢在於其雙向架構能夠同時提取到目標詞元上下文兩個方向上的特徵,而 GPT 只能提取到順序的特徵;GPT 模型的優勢在於其通用性,對於不同的下游任務只需要對原本的模型進行相當小的結構調整,而 ELMo 則需要設計處理下游任務的模型結構。2018 年 Google 的 Devlin 等人提出的 BERT(Bidirectional Encoder Representations from Transformers)則集合了兩種方法之長,得到了比前兩者更優秀的表現。
1.5. 大語言模型:智能湧現
在 2018 年推出了 GPT 模型之後,OpenAI 又沿著原本的技術路線於 2019、2020 年推出了後兩代的 GPT 模型。GPT-2 相比於 GPT,在結構上基本沒有變化,仍舊使用 Transformer 解碼器來深入挖掘語言模型的潛力。為了挖掘語言模型的通用性,GPT-2 在訓練模式上放棄了下游任務的微調,而是採用純無監督學習進行預訓練。在完成下游任務時,不再根據人物特點對輸入的數據進行改造,而是讓模型自己識別任務的目標。GPT-2 試圖實現 zero-shot 的效果,這是相當具有新意度的目標,但實現起來也是相當困難。GPT-2 將參數量增大到了 15 億仍沒有達到性能提升的瓶頸,這激勵了 OpenAI 團隊繼續做大 GPT 模型的規模。到了 GPT-3 模型問世,參數量達到 1750 億,終於展現出了相當炸裂的效果,其智能湧現能力標誌著人工智慧模型的自然語言處理能力進入了下一個階段。
1.5.1. 不微調的預訓練語言模型
對於 OpenAI 團隊來說,GPT 模型在公布的短短 4 個月時間就被 Google 的團隊在更大的訓練集上訓練出來的更大規模的 BERT 模型擊敗。這讓他們意識到通過增大規模挖掘語言模型的性能仍有很大的空間,因此他們堆積了更多的 Transformer 塊,訓練了一個擁有 15 億參數的模型。然而,僅僅增加模型的規模不足以作為一項有新意的研究。因此,OpenAI 在訓練方式上做出了改變,並且對模型提出了更具有新意的目標——實現一個 zero-shot 的模型。
Zero shot 指語言模型要達到這樣的一個效果:對於一個自然語言處理任務,僅使用自然語言對任務進行描述,不提供任何樣例,更不針對該類任務進行任何監督訓練或微調,讓模型自己理解任務的描述並完成任務。GPT-2 的核心觀點也體現在其論文的標題中「Language Models are Unsupervised Multitask Learners」,一個優秀的語言模型是不需要經過監督學習就可以完成多種任務的。這樣的語言模型已經非常接近於人們觀念中的強人工智慧了,可惜這個目標對於當時的技術來說過於超前,以 GPT-2 模型的規模還遠未達到能夠完成 zero-shot 的程度。
雖然 GPT-2 的性能距離其提出的目標還有很大的差距,但在 OpenAI 團隊的實驗中,隨著規模的增大,模型在閱讀理解、翻譯、問答等 NLP 任務中的表現仍在以一個接近對數增長的趨勢增加。這表明通過增大模型規模還能繼續提升模型的性能,模型參數數量級的跨越式增長也成了後續幾代 GPT 的必備特徵。
1.5.2. 提示學習-Prompt
GPT-2 在探索模型 zero-shot 能力的時候,採用了在輸入上添加任務相關提示詞的方式。回過頭看,GPT-2 此時的做法不小心推開了提示學習的大門,啟發了自然語言處理繼「傳統機器學習模型範式」、「神經網路範式」、「『預訓練 微調』範式」之後的「第四範式」——「『預訓練 提示 預測』範式」的發展。2020 年,OpenAI 在論文《Language Models are Few-Shot Learners》,也就是 GPT-3 的論文帶領了提示學習(prompt learning)的發展——提示學習的核心思想是通過構造一種「提示」(prompt)來引導預訓練模型在特定任務上給出正確的輸出。這與直接提供標準問題格式的訓練數據不同,提示學習試圖以更自然的方式利用模型預訓練時學到的知識和技能。
提示學習的關鍵在於找到有效的提示,這些提示能夠激活預訓練模型中的知識,使其能夠更好地執行下游任務。例如,在一個情感分析任務中,而不是直接問模型一個句子的情感,我們可能會添加一個提示:「這段話的態度是[MASK]的。」,然後讓模型預測填充在[MASK]處的詞,比如「積極」或「消極」。與其說提示學習是一種訓練方法,不如說是在人工智慧的理解能力還不完善的階段中探索如何與模型溝通的過程,本質是給任務找到一個讓模型能夠更準確理解的表達方式。
最初的提示學習採用人工提示(Manual Prompts),需要研究人員根據任務和模型知識構造有效的提示。這種方法的優點是可以利用人類的直覺和專業知識來引導模型,但缺點是耗時且可能無法找到最優提示。隨著研究的進展,出現了自動生成提示(Automatic Prompts)的方法。這些方法使用搜索算法、強化學習或者梯度下降等技術來自動尋找或優化提示,以提高模型在特定任務上的表現。
1.5.3. 大語言模型的智能湧現——GPT-3.5 和 ChatGPT
人工智慧領域對於湧現能力(Emergent Abilities)的定義為,如果模型的某種能力僅在大模型上表現,而不能在小模型中表現出來,即稱為「湧現能力」。換言之,湧現能力是模型規模超過某一閾值時才能擁有的特性,也就是人們常說的「量變產生質變」。這種現象通常出現在如 GPT-3或更大規模的語言模型中,當模型的參數數量大幅增加,使得模型能夠學習到更加複雜和抽象的模式。
在模型規模變大的過程中,某些能力的提升並不是線性的。即在特定的規模閾值之前,模型的能力提升相對平緩;一旦超過這個閾值,能力會突然大幅提升。湧現往往意味著質的變化,模型不僅在量上做了擴展,還可能獲得了原本沒有的新功能,例如更好的推理能力、更準確的翻譯能力,甚至是創造力和幽默感的展現。湧現能力的出現通常是不可預測的,研究者無法準確預知哪種能力會在何時何種規模的模型中出現。
比如上一小節提到的 GPT-3 的上下文學習能力,當模型的參數規模增大到 1750 億時,模型突然展現出了該能力。上下文學習的能力來源及為什麼上下文學習可以泛化,仍然難以溯源。實際上,初代的 GPT-3 的功能並沒有後面的 ChatGPT 展現出來的這麼強,但後來的實驗證明,初代 GPT-3 有著非常強的潛力。這些潛力後來被代碼訓練、指令微調(instruction tuning)和基於人類反饋的強化學習(reinforcement learning with human feedback,RLHF)解鎖,最終體的 ChatGPT 展示出極為強大的湧現能力。
1.5.3.1. 代碼訓練和指令微調
在 GPT-3 進化到 GPT-3.5 的過程中,OpenAI 主要在兩個方向上的探索取得了成果:在代碼上訓練(Training on code)和指令微調(Instruction Tuning)。Codex 是 OpenAI 為了擴展 GPT-3 的代碼能力訓練的一個大語言模型,最初的目標功能為代碼補全。最初的 Codex 模型使用了 GitHub 上的大量開源代碼作為數據集對 120 億參數的小規模 GPT-3 進行了微調訓練,但最終得到的模型效果並不算太好,這個模型後面演變成了 OpenAI API 中的「code-cushman-001」模型。
在另一個方向上,OpenAI 為了讓大語言模型能夠更好地理解人類發布的任務,對 GPT-3 進行了指令微調(Instruction Tuning)訓練。傳統的語言模型通常是通過大量文本數據進行預訓練,從而學習語言的基礎結構和知識。然而,它們不總是能夠理解和執行複雜的用戶指令。指令微調通過對模型進行額外的訓練,使其更好地遵循用戶的指令來完成特定任務。OpenAI 僱傭一批標註人員對訓練集中的數據標註了指令,標註後的數據集中的每一個樣本包括「輸入」、「指令」、「標籤」三個部分。用這個訓練集對 GPT-3 模型進行有監督微調得到了初始版本的 InstructGPT 模型,在 OpenAI API 中的代號為「Instruct-davinvi-beta」和「text-davinci-001」兩個模型接口。
從 2020 年 7 月到 2022 年 4 月,OpenAI 投入了大量的資源從代碼訓練和指令微調兩個方向來增強 GPT-3 的性能,直到完成了代號為「code-davinci-002」的 Codex 模型版本。雖然此版本模型被用做 Codex 產品,但其針對自然語言的性能已經達到了下一個水平,從這個版本開始,GPT 產品進入了 GPT-3.5 階段。「code-davinci-002」和「text-davinci-002」是 GPT-3.5 模型的初始版本,其中「text-davinci-002」是由「code-davinci-002」經過有監督指令微調得到的(更符合人類的表達習慣),這兩個模型分別用於代碼和文本。除了代碼生成與理解能力以外,它們比初代 GPT-3 具有更多的「湧現」能力:
響應人類指令:GPT-3 模型的輸出主要是訓練集中常見的句子。GPT-3.5 模型會針對指令或提示詞生成更合理的答案(而不是相關但無用的句子)。這種能力是指令微調的直接產物。
泛化到沒有見過的任務:當用於調整模型的指令數量超過一定的規模時,模型就可以在從沒見過的新指令上也能生成有效的回答。相當於解鎖了模型在 zero-shot 場景上的能力,這種泛化能力指令的規模達到一定程度的時候自動出現的,與模型規模導致的「湧現」有類似的特徵。
使用思維鏈(Chain-of-Thought)進行複雜推理:思維鏈推理能力相當重要,被學術界認為是大語言模型「湧現」能力的代表。而使用思維鏈進行複雜推理的能力並非來自指令微調,而是很可能來自在大量代碼數據集上的訓練。這也有一定的解釋空間:面向過程的編程類似於人類逐步解決問題,面向對象的編程類似於人類將問題分解。
思維鏈的基本概念是模仿人類解決問題時的思維過程。在處理複雜問題時,人們通常會一步步推導出結果。這些步驟包括構建問題的中間表徵、進行邏輯推理、計算或回憶知識點等。這個過程為模型提供了一個更加清晰的路徑來解決問題,並有助於它更好地理解問題的結構和所需的解決方案。在應用思維鏈的技術時,模型被訓練以生成詳細的解釋或描述它是如何一步步達到最終答案的。例如,當問到一個數學問題時,模型不僅會給出最終的答案,還會展示出得到這個答案的具體步驟。這使得最終的答案更可信,也更容易被用戶理解和驗證。
思維鏈作為大模型「湧現」的重要代表,具有以下幾個優勢:(1)可解釋性:通過生成一系列推理步驟,思維鏈增強了模型的可解釋性。用戶可以看到模型是如何逐步得出答案的,這在教育或需要解釋的場合尤其有用。(2)準確性:推理過程有助於模型集中注意力於任務的關鍵部分,可能提高模型在解決複雜任務上的準確率。(3)學習和調試:展示中間步驟也方便開發者和研究人員理解模型的行為,從而對模型進行調整和改進。
1.5.3.2. 基於人類反饋的強化學習
「text-davinci-002」版本的 GPT-3.5 模型雖然已經具有非常出眾的性能,但要作為公開發布的產品還具有諸多隱患,歷史上因為模型輸出具有爭議性的響應導致產品下架的例子有很多。通過語料庫訓練出來的大語言模型對於現代社會的敏感話題並沒有特別的認知,OpenAI 在《Training language models to follow instructions with human feedback》文章中提出了基於人類反饋的強化學習(Reinforcement Learning with Human Feedback,RLHF)來應對這個問題。實際上這是 InstructGPT 相對於 GPT-3 的研究,OpenAI 將其應用到 GPT-3.5 上得到了 ChatGPT。
InstructGPT 中,基於人類反饋的強化學習的訓練過程主要分為三個階段:
(1)有監督的微調(Supervised Fine-Tuning)在這一步中,OpenAI 人工收集了 1.3 萬條 prompts 用於訓練,這些 prompts 一部分是從用戶向 GPT-3 提問中(GPT-3 的 API)篩選出來的,另一部分是由僱傭的標籤員寫出來的。再由標籤員將 prompts 的答案也寫出來,作為標籤,放到 GPT-3 模型里做有監督的微調,得到一個微調後的模型(下面簡稱為「SFT」)。
(2)人工對模型輸出進行標註,訓練強化學習獎勵模型(Reward Model)使用另外 3.3 萬條 prompts 作為 SFT 的輸入,得到一批輸出(這些 prompts 也包括從 GPT-3 的 API 篩選以及標籤員人工生成)。再由標籤員對 SFT 多次 生成的輸出進行排序。使用 prompts 與人工排序後的答案作為訓練集,訓練一個獎勵模型。該獎勵模型的作用是對 prompts 輸入 SFT 後得到的輸出進行評分,這些得分需要符合標籤員做出的排序。
1.5.4. 大模型智能湧現能力的來源
上文提到了關於大語言模型的「湧現」能力,是模型規模超過一定閾值後才能夠擁有的。學術界目前還沒有對大模型產生「湧現」現象的原因做出解釋和論證,只有基於測試和比較的分析結果。本小結將解答一部分關於「湧現」能力的疑問。模型需要多大規模才會出現「湧現」?Yao Fu 等人在文章《How does GPT Obtain its Ability?Tracing Emergent Abilities of Language Models to their Sources》給出了兩個數字:620 億和 1750 億。
以思維鏈作為判斷模型出現「湧現」能力的標準:(1)模型至少需要 620 億,思維鏈的效果才能大於標準的提示詞方法。(2)模型至少需要 1750 億(GPT3 的規模),思維鏈的效果才能大於精調小模型的效果。
代碼訓練、指令微調、RLHF 等調整對模型做了什麼,產生了不同的「湧現」能力?在文章《How does GPT Obtain its Ability?Tracing Emergent Abilities of Language Models to their Sources》中,作者仔細檢查了 GPT-3.5 系列的能力範圍,並追溯了它們所有突現能力的來源。
初代 GPT-3 模型通過預訓練獲得生成能力、世界知識和上下文學習能力。然後通過指令微調的模型分支獲得了遵循指令和能泛化到沒有見過的任務的能力。經過代碼訓練的分支模型則獲得了代碼理解的能力,作為代碼訓練的副產品,模型同時潛在地獲得了複雜推理的能力。結合這兩個分支,「code-davinci-002」似乎是具有所有強大能力的最強 GPT-3.5 模型。接下來通過有監督的指令微調和 RLHF 通過犧牲模型能力換取與人類對齊,即對齊稅。RLHF 使模型能夠生成更翔實和公正的答案,同時拒絕其知識範圍之外的問題。
對於採用不同的訓練方法調整 GPT-3 模型所引發的這些新的「湧現」能力,到底是這些方法給模型「注入」了新的能力,還是預訓練模型本身就具備了這些能力的潛力,只是被調整後「解鎖」了?對於鎖定模型參數的調整,比如提示學習,這個問題的答案顯然是「解鎖」。而對於不鎖參的調整,這其實主要取決於訓練樣本的數據量。
舉個例子,在 GPT-3 進化到 GPT-3.5 的過程中,採用在代碼上訓練的方式給模型「注入」了代碼生成能力和思維鏈複雜推理能力,這兩個能力實際上是通過代碼訓練注入的。因為其代碼訓練集的規模達到了與文本語料庫相近的量級,後幾代模型的訓練集也都包括相當一部分比例的代碼。因此,代碼訓練可以視為一種偏邏輯的自然語言對預訓練語料庫的補充。
而在 GPT-3.5 調教到 ChatGPT 的過程中使用的基於人類反饋的強化學習方法,則應該別認定為「解鎖」了模型本來就具備的能力(多輪對話、安全中立表達等)。因為在 InstructGPT 論文中披露的訓練數據,prompts 的量級只有 10 萬以內,這與預訓練模型本身的訓練集規模相差甚遠,微調對權重的改變並不能起到「注入」知識的效果。此外,經過 RLHF 調教的 ChatGPT 實際上在「解鎖」了新的能力的同時,也「隱藏」了一部分原有能力的表現。這實際上也表明,小數據規模的微調訓練對於大語言模型來說,只能改變其原有能力的側重點。
如果想要繼續發展大模型的「湧現」能力,應該怎麼做?在通過微調無法「解鎖」模型的更多能力時(或者「解鎖」了新能力但無法兼顧原有能力的性能),只能夠更大的語料庫訓練更深的預訓練模型。
2. 大語言模型的應用與展望
在當今的人工智慧領域,大語言模型的興起無疑是其中的一顆璀璨明珠。它們不僅重新定義了機器理解和生成語言的能力,而且其應用範圍的廣泛性正在觸及社會的每一個角落。本章旨在探討大語言模型的應用,它們如何成功適配於特定領域的需求,以及多模態大模型在未來的應用前景和潛在的發展方向。
首先,我們將探討大語言模型的實際應用。這些模型以其卓越的文本生成和理解能力,已經在文學創作、編程、法律諮詢等多個領域展現出了其價值。通過自然語言處理技術,它們能夠從大規模數據中提煉資訊,為決策提供支持,甚至在某些情況下,替代專業人士進行工作。
其次,文章將分析大語言模型如何根據不同領域的特定需求進行調整和適配。在醫療、金融、教育等領域,模型不僅要理解專業術語,還要適應特定的應用場景和數據處理需求。我們會看到,通過微調和定製化訓練,這些模型如何更精確地服務於特定的行業。
最後,我們將討論多模態大模型的應用與展望。隨著技術的發展,單一模態的輸入已無法滿足日益複雜的需求。多模態模型通過整合文本、圖像、聲音等多種資訊來源,為我們提供了一個更為豐富和綜合的世界理解。從增強現實到自動駕駛汽車,多模態模型正開闢著人工智慧的新天地。
通過本章,我們將了解大語言模型和多模態模型在現實世界中的應用,探索它們在各個領域的適配過程,以及它們將如何繼續推動技術的邊界,影響未來的發展趨勢。
2.1. 大語言模型的應用
在當今資訊化社會的蓬勃發展中,大型語言模型的崛起標誌著人工智慧領域的一次重大突破。它們不僅僅是簡單的技術產品,更是人類語言理解和創造能力的一個顯著躍進。大型語言模型如 GPT 和 BERT 等,憑藉其強大的自然語言處理能力,正在重新定義多個行業的工作方式,為人類活動開闢了新的道路。這些模型通過分析和學習網際網路上海量級的文本數據,已經掌握了生成、總結、提取、聚類、分類、檢索和改寫等多種複雜的語言處理功能。在這個基礎上,大 型語言模型已經被應用於各種場景,如創作高質量文章、提供法律和醫療文檔的諮詢、自動化客戶服務回復,甚至輔助編程和數據分析。它們的出現,使得從繁複的文本中提取資訊、生成新內容以及對現有內容進行再加工變得前所未有地高效和精準。
對於企業來說,語言模型正變得不可或缺,它們能夠處理大量的客戶數據,提供個性化的服務,同時優化操作流程,減少成本。在教育領域,這些模型不僅為學生提供定製化學習內容,而且還能評估學習成果,甚至幫助教師設計課程。在媒體和娛樂行業,內容的創作和改寫變得更加多元和富有創意,使得個性化的內容推薦成為可能。本節將探討大型語言模型的這些核心功能以及它們的實際應用案例,從而揭示它們如何影響並改善我們的工作和生活。隨著技術的進步和應用的深入,我們的工作效率能夠在人工智慧的推動下不斷提高。本節中的各種功能仍有無數的應用有待發掘,本文旨在提供一些靈感。
大語言模型(Large Language Modal,LLM)的核心能力大致分為:生成(Generate)、總結(Summarize)、聚類(Cluster)、提取(Extract)、分類(Classify)、檢索(Search)與改寫(Rewrite)七部分。本節將介紹這些能力並列舉一些應用,同時對部分能力在 ChatGPT 上嘗試並附帶了實際響應結果。
1、生成(Generate)
生成是 LLM 最核心的能力。當談論到 LLM 時,首先可能想到的是其能夠生成原始且連貫的文本內容。其能力的建立來源於對大量的文本進行訓練,並捕捉了語言的內在聯繫與人類的使用模式。充分利用模型的生成能力可以完成對話式(chat)&生成式(completion)應用。對於對話式應用,典型應用為聊天機器人,用戶輸入問題,LLM 對問題進行響應回答。對於生成式應用,典型應用為文章續寫、摘要生成。比如,我們在寫一段營銷文案時,我們寫一部分上下文,LLM 可以在此基礎上對文案進行續寫,直至完成整個段落或整片文章。大型語言模型在文本生成方面的能力是它們最為人稱道的特性之一。它們不僅可以生成高質量的自然語言文本,而且還能在一定程度上模擬特定風格或作者的寫作方式。此外,它們能夠生成結構化的輸出,比如編寫可執行的編程代碼或者格式化良好的報告。
應用場景:在內容創作領域,比如自動撰寫新聞稿、博客文章或社交媒體帖子,大型語言模型可以大幅度提高效率。對於程式設計師來說,這些模型可以輔助編寫代碼,提供代碼補全或者整段代碼生成。在創意寫作方面,它們可以幫助作家克服創作障礙,提供靈感,甚至生成完整的詩歌或小說草稿。在沒有提供更多資訊的情況下,讓 ChatGPT 生成一篇關於氣候變化影響的文章,模型僅用了十幾秒就完成了任務。
2、總結(Summarize)
總結是 LLM 的重要能力。通過 Prompt Engineering,LLM 可對用戶輸入的文本提煉總結。在工作中我們每天會處理大量會議、報告、文章、郵件等文本內容,LLM 總結能力有助於快速獲取關鍵資訊,提升工作效率。利用其總結提煉能力可以產生許多有價值應用。比如,每次參加線上或線下會議,會後需形成會議記錄,並總結會議重要觀點與執行計劃。LLM 利用完備的語音記錄可完成會議內容與重要觀點的總結。大型語言模型的文本總結能力允許它們處理大量資訊,並從中提取關鍵點。這些模型通過理解文本的整體內容和上下文關係,可以生成簡潔的摘要,這對於那些需要快速獲取資訊精華的人非常有用。
應用場景:在企業環境中,模型可以用來生成會議記錄的摘要,或者將長篇報告壓縮成高層管理者的簡報。在學術研究中,自動生成文獻綜述或研究報告摘要可以節省研究人員大量的時間。新聞機構可以使用這些模型來提供新聞故事的快速摘要,供忙碌的讀者閱讀。提供一篇研究報告,讓 ChatGPT 總結內容給出摘要,用時不超過一分鐘。
3、提取(Extract)
文本提取是通過 LLM提取文本中的關鍵資訊。比如命名實體提取,利用 LLM 提取文本中的時間、地點、人物等資訊,旨在將文本關鍵資訊進行結構化表示。除此之外,還可用於提取摘錄合同、法律條款中的關鍵資訊。語言模型在資訊提取方面的應用基於其能夠識別和解析文本中的特定數據點。它們可以精確地從無結構數據中識別出人名、地點、日期等實體,並且能夠從複雜的文本中提取關鍵的事實和數字。
應用場景:在法律行業,這些模型可以從複雜的合同文檔中提取關鍵條款和條件。在醫療領域,模型可以從病人的臨床筆記中提取關鍵的健康資訊,輔助醫生和護士快速獲取病人的關鍵數據。對於商業情報,模型能夠從各種報告和新聞文章中提取市場數據和競爭情報。提供一家公司的招股說明書,讓 ChatGPT 回答文檔中的相關資訊,用時兩分鐘以 內。從結果上來看,模型能夠準確回答一些欄位匹配度高的問題,但對於 PDF 文件中的表格資訊,讀取的完整度並不高(只列出了四家客戶)。同時,對於任務要求中「完整年度」的理解並不正確。將問題改為「該公司最近一個完整年度,產品銷售的前三大客戶是哪些公司?」,甚至無法定位到相關表格。說明 ChatGPT 對於一個大文檔(大於 5MB)的資訊讀取,能夠做到「提取」資訊,但並不能足夠精確地「理解」所有資訊。
4、分類(Classify)
分類旨在通過 LLM 對文本類別劃分。大模型對文本內容分類的優勢在於強語義理解能力與小樣本學習能力。也就是說其不需要樣本或需要少量樣本學習即可具備強文本分類能力。而這與通過大量語料訓練的垂域模型相比,在開發成本與性能上更具優勢。比如,網際網路社交媒體每天產生大量文本數據,商家通過分析文本數據評估對於公眾對於產品的反饋,政府通過分析平台數據評估公眾對於政策、事件的態度。語言模型能夠將文本歸類到預先定義的類別中,這基於對文本內容的深層語義理解。這些模型可以被訓練來識別文本的主題、情感傾向,甚至是作者的意圖。
應用場景:在企業中,模型可以用於自動對客戶查詢進行分類,以便將其分派給最合適的服務代表。在網路安全領域,它們可以分類電子郵件以識別垃圾郵件和網路釣魚嘗試。教育技術領域可以利用分類功能來評估學生的開放式回答和作文。
5、聚類(Cluster)
通過對大量文本數據進行語義分析,大型語言模型可以將主題或內容相似的文本分組在一起。這種聚類能力使得它們可以識別模式和關聯,甚至在沒有明確標籤的情況下也能進行。
應用:在客戶服務領域,聚類技術可以幫助企業對顧客反饋進行分類,以便更有效地響應並解決問題。在內容管理系統中,它可以幫助自動整理和歸檔文檔。而在社交媒體分析中,聚類可以用來追蹤特定話題的趨勢或者公眾情緒的變化。上一個新聞分類樣例中,ChatGPT 按照任務要求的條件(新聞情緒)將這些新聞進行了聚類。
6、檢索(Search)
文本檢索是根據給定文本在目標文檔中檢索出相似文本。最常用的是搜尋引擎,我們希望搜尋引擎根據輸入返回高度相關的內容或鏈接。而傳統方式採用關鍵詞匹配,只有全部或部分關鍵詞在檢索文檔中命中返回目標文檔。這對於檢索質量是不利的,原因是對於關鍵詞未匹配但語義高度相關的內容沒有召回。在檢索應用中,LLM 的優勢在於能夠實現語義級別匹配。大型語言模型可以理解自然語言查詢,從而檢索和返回相關資訊。它們能夠解析查詢的語義,搜索大規模的文本數據集,並找到與查詢意圖最匹配的結果。
應用:在線搜尋引擎可以利用這些模型提供更準確的搜索結果。企業可以使用這些工具從內部文檔庫中檢索特定的商業文檔。而圖書館和檔案館可以使用語言模型來幫助研究人員和公眾找到特定的歷史記錄或文檔。檢索與前面的提取有一部分類似之處,區別在於被檢索資料庫的規模,由於數據規模的限制不在此處展示樣例。
7、改寫(Rewrite)
文本改寫是通過 LLM 對輸入文本按照要求進行潤色、糾錯。常見的應用為文本糾錯,例如,在稿件撰寫、編輯時可能出現詞語拼寫錯誤、句子語法錯誤,利用通過 LLM 與提示詞工程(Prompt Engineering)自動對文本內容糾錯。此外,還可用其對文章進行潤色處理,使文章在表述上更加清晰流暢。同時,可以還可 LLM 進行文本翻譯。改寫是指將文本轉換為具有不同風格或結構的新版本,同時保持原有資訊的功能。語言模型能夠理解原文的意圖和語義,然後以新的方式重新表達相同的資訊。
應用場景:在出版和媒體行業,模型可以幫助編輯改寫文章,以適應不同的讀者群體或出版標準。教育領域中,可以將複雜的學術材料改寫為更易理解的語言,使之適合更廣泛的受眾。對於多語言內容製作者,語言模型可以將一種風格或方言的文本轉換成另一種,以適應不同地區的語言習慣。在編程開發中可以使用改寫功能將某種編程語言編寫的程序代碼改寫成另一種。我讓 ChatGPT 使用魯迅的風格改寫前面的樣例中生成的關於氣候變化的文章。模型用了極短的時間將文章改寫成了文言文,效果非常驚艷。但我追加了對魯迅寫作風格提示並要求 ChatGPT 改寫為白話文後,效果並不好。
2.2. 大模型的領域適配
大型通用語言模型通過使用廣泛的數據源進行訓練,在許多通用任務上表現出色。然而,這些模型可能不足以處理特定行業或專業領域(如醫學、法律或工程)中常用的專業術語和複雜概念。通過領域適配,模型可以減少對專業術語的誤解或錯誤解釋,避免誤導和資訊不準確的問題,更準確地理解和生成這些領域特有的語言,增強資訊的相關性和準確性,從而為用戶提供更相關和精確的回答。此外,針對特定領域的用戶,他們對資訊的準確性和深度有更高的要求,領域適配可以為他們提供更定製化、更符合其特定需求的服務。在某些領域,如醫療和金融,遵守行業規範和法律合規性尤為重要,領域適配在這方面起著關鍵作用。
領域適配主要包括以下幾個過程:
(1)數據收集和篩選:這是領域適配的第一步。收集與特定行業或專業領域 (如醫學、法律、金融等)相關的數據。這些數據可能包括專業文章、行業報告、技術文檔、專業論壇的討論等。重點是獲得涵蓋領域內專業術語和特定語境的高質量數據。
(2)數據預處理和清洗:獲得數據後,需要對其進行預處理和清洗,以確保數據的質量。這可能包括去除無關資訊、標準化術語、更正錯誤等。這一步驟對於提高模型學習的效率和準確性至關重要。
(3)微調或遷移學習:接下來,使用特定領域的數據對現有的大型語言模型進行微調。這個過程涉及在特定領域數據上繼續訓練模型,以便模型更好地理解和生成與該領域相關的語言和資訊。
(4)驗證和評估:微調後,需要評估模型在領域特定任務上的性能。這可能包括使用專業的測試集來檢查模型對專業術語的理解、回答領域相關問題的準確性等。根據評估結果,可能需要進行進一步的調整和優化。
(5)持續疊代和更新:領域知識和專業術語可能會隨時間發展和變化。因此,領域適配是一個持續的過程,需要定期更新模型,以包含最新的領域知識和數據。
(6)合規性和倫理考量:在某些領域,尤其是醫療和法律,還需要考慮合規性和倫理問題,確保模型的輸出不違反行業規範和法律規定。
通過上述領域適配的過程,大型通用語言模型能夠更有效地服務於特定行業和專業領域。這不僅提高了模型在處理專業術語和複雜概念時的準確性和效率,還確保了資訊的相關性和深度,滿足了特定用戶群體的高標準要求。同時,考慮到合規性和倫理的重要性,尤其在敏感領域如醫療和法律,這種適配過程也保證了模型輸出的安全性和合法性。因此,領域適配不僅是提升模型性能的技術手段,也是確保其廣泛適用性和可靠性的關鍵步驟。
2.3. 多模態大模型
ChatGPT 於近期開放了其多模態接口,以 GPT-4 為代表的多模態大模型再次成為前沿熱點。多模態大模型不僅打破了僅限於單一感官輸入的束縛,還賦予了機器對世界的感知能力,一個更接近人類的多維視角。通過整合視覺、聽覺、文本等多種資訊來源,多模態模型在理解複雜的環境和人類行為上展現出無與倫比的潛力。
本節將探討常見的多模態任務,以及多模態模型在各個行業中的應用。隨著技術的不斷進步,多模態模型不僅正在改變我們與機器交流的方式,更是在重塑我們對世界的理解和互動。考慮到篇幅與理解難度,本文僅對多模態學習的原理做簡要介紹。
多模態學習(Multimodal Machine Learning,MML)是指利用來自多種不同數據源或類型的資訊進行學習的過程。在這種學習方法中,不同模態的數據被綜合考慮,以更全面地理解和分析問題。多模態學習的關鍵是探索和利用不同模態數據之間的關係,以提高預測準確性、數據理解和決策質量。
論文《Multimodal Machine Learning:A Survey and Taxonomy》列舉了多模態學習中的五個主要的研究方向:
(1)表徵(Representation):如何表示和總結多模態數據,以利用不同模態的互補性和冗餘性。由於多模態數據的異質性,構建這樣的表徵是具有挑戰性的,主要分為兩類表徵方法:聯合表徵(Joint Representations)和協同表徵(Coordinated Representation)。聯合表徵將多種模態的表示融合映射到一個統一的向量空間中;協同表徵則是將不同模態映射到不同的向量空間,但映射後的向量之間滿足一定的約束關係。
(2)翻譯/映射(Translation/Mapping):如何將數據從一種模態轉換(映射)到另一種模態,比如將文字描述「貓」轉化為圖像。這個過程經常是開放的或主觀的,因為不同模態之間的關係往往是多元的,「貓」的文本對應的圖 像有千萬個正確答案,自然界中不同品種的貓、動畫中的二次元貓(甚至路由器的光貓)都能夠算作正確的轉換。
(3)對齊(Alignment):對來自同一個實例的不同模態資訊的子分支/元素尋找對應關係,包括時間序列對齊、視覺詞彙對齊等。這需要測量不同模態之間的相似性並處理可能的長期依賴性和模糊性。
(4)融合(Fusion):將來自兩種或更多模態的資訊結合起來進行預測。不同模態提供的資訊可能具有不同的預測力和噪聲拓撲,並可能至少在一種模態中缺失數據。按照融合的層次,可以將多模態融合分為 pixel level、feature level 和 decision level 三類,分別對應對原始數據進行融合、對抽象的特徵進行融合和對決策結果進行融合。
(5)協同學習(Co-learning):在模態之間、它們的表示和預測模型之間轉移知識。協同學習探索了從一個數據資源豐富的模態中學到的知識如何幫助訓練在另一個數據資源相對貧瘠的模態上的計算模型。
多模態任務在許多現實領域中有廣泛的應用場景,涵蓋了從健康醫療到教育、娛樂和安全等多個方面。以下是一些應用的領域和具體場景:
(1)醫療:a)醫學影像分析:結合醫學圖像(如 MRI、CT 掃描)和患者的電子健康記錄來提高診斷的準確性和效率。b)患者監測:使用傳感器收集的數據(如心率、運動數據)監測健康狀況。
(2)交通:a)自動駕駛汽車:結合來自攝像頭、雷達和其他傳感器的數據來實現安全的車輛導航和決策。b)交通監控:使用攝像頭和聲音傳感器來監控和管理交通流量。
(3)娛樂:a)增強現實(AR)和虛擬現實(VR):結合視覺、聽覺和觸覺反饋,為用戶提供沉浸式的體驗。b)電影和遊戲製作:使用多模態數據來創造更逼真和互動的視覺效果。
(4)安全:a)監控系統:結合影片監控和音頻數據來提高安全監控的效能。b)欺詐檢測:分析交易記錄、用戶行為和通信內容,以識別和防範欺詐活動。
(5)服務:a)智能助手:結合語音、文本和圖像處理來提供更加全面和個性化的用戶體驗。b)用戶分析:通過分析用戶的語音、文字和情感反應來提供更有效的客戶支持。
OpenAI 在最新發布的技術報告《The Dawn of LMMs:Preliminary Explorations with GPT-4V(ision)》中提供了 GPT-4V 這個大型多模態模型的全面分析,涵蓋了其處理不同輸入模式的能力,與人類互動的方法,以及在多種智力和情感測試中的表現。GPT-4V 能夠處理單文本輸入、單一「圖像-文本」對輸入以及交錯的圖像-文本輸入等多種模式的輸入。在性能方面,GPT-4V 具有不俗的「視覺-語言」、時間和影片理解、抽象視覺推理以及情緒識別能力。在應用方面,報告列舉出了一系列 GPT-4V 的應用場景,包括差異發現、工業、醫療、汽車保險、定製字幕、圖像生成、GUI 導航等等。
GPT 系列模型 GPT-1/2/3/4 僅接受文本輸入-文本輸出,在第四代已經展現出了非常強大的文本理解和生成能力。到 GPT-4V 能夠接受「圖片-文字」混合輸入-文本輸出,也展現出了強大的圖像理解能力,後續「圖文交錯」的輸出能力就成為了很自然的發展方向。以及,結合其他諸如影片、音頻和其他傳感器數據模態的輸入/輸出,將繼續擴展大語言模型的能力。
向更遠處展望,人類的感官除了視覺、聽覺,還包括嗅覺、觸覺、味覺等等。因此,人類能夠感知的模態除了文本、圖像、聲音,還包括氣味、觸感、味覺感受等。當多模態大模型發展到能夠涵蓋人類能夠感知的所有模態,從而模擬和理解人類的全面感知體驗時,我們可能就距離實現真正高等級的人工智慧僅一步之遙。這種全方位的感知能力將極大地推動人工智慧在理解複雜世界、情感智能和更自然人機交互等方面的進步。
3. 大語言模型在量化投資領域的應用與前景
在過去的幾十年裡,量化投資作為金融領域的一大創新,不僅改變了市場的操作方式,也重新定義了投資決策過程。隨著人工智慧和大數據技術的迅猛發展,尤其是大語言模型的出現,這一領域是否能夠迎來新的變革?這些模型不僅能夠處理和分析傳統的數值數據,還能深入挖掘新聞報道、社交媒體帖子、公司財報等文本資訊中的寶貴情報。在這一章中,我們將探討大語言模型如何在量化投資中被用於數據整理和分析、市場情緒分析、風險預測、投資策略的生成和優化,以及這一技術如何作為投資者的輔助帶來效率的提升。
3.1. 強大的資訊提取與總結能力
在當今資訊爆炸的時代,我們每天都要處理大量的數據和資訊,其中包括文本文檔、表格、音頻和影片文件。這些資訊的管理和處理不僅耗時,而且往往需要高度的集中注意力和組織能力。ChatGPT 等大模型作為先進的語言處理工具,不僅能夠理解和生成自然語言文本,還能夠對各種文件類型進行分析和總結。無論是將長篇的報告精煉成簡明的摘要,還是從複雜的表格中提取關鍵數據,甚至是從音影片內容中抓取重要資訊,ChatGPT 都能夠以其獨特的智能處理方式,大大減輕工作負擔。本節將介紹如何利用 ChatGPT 來高效地處理各種類型的文件,實現資訊的快速提取和整理。
3.1.1. 文檔內容讀取
ChatGPT 已經於近日為 Plus 用戶開放了文件上傳功能,處理 PDF 等文本文檔的工作得到了極大的簡化。過去想要使用 ChatGPT 讀取 PDF 文檔,需要用戶自己編程將 PDF 文件中的文字提取成 text 數據,進行分詞、根據LMM接口 token 上限分塊、調用詞嵌入進行向量化等預處理後,將上下文(context)和問題(question)輸入 LLM,才能得到答案,構建過程相當繁瑣。現在僅需在網頁版 ChatGPT4 問答輸入欄中上傳 DPF 附件,並附上提問即可,操作非常簡便。
3.1.2. 音影片內容讀取
ChatGPT4 向用戶提供了上傳音影片文件的功能,但也許是因為今日開放的新功能較多導致用戶流量增長過大,迫於維護的壓力,OpenAI 關閉了 ChatGPT4 的網路接口。因此其無法通過谷歌語音識別服務接口進行音影片的語音識別,導致無法直接通過上傳音影片文件進行分析總結。通過 ChatGPT 的回答也可以得知,其對於音影片文件的分析也是先通過語音識別將文件轉換為文本,再進行文本資訊的分析和處理的。這是因為當前版本的 GPT-4V 模型無法接受音頻模態的輸入。
此外,通過提供影片鏈接給 ChatGPT 讓其對影片內容分析也因為網路接口的關閉暫時無法進行,這個任務在 GPT-4V 模型開放之初是能夠完成的。對於音影片處理,在 ChatGPT 開放多模態功能之前,也需要編寫代碼並藉助 langchain 等 LLM 應用開發框架,通過語音識別或字幕生成等處理後,再將文本投 入 LLM 模型中完成任務。如今這個過程被 OpenAI 併入了 ChatGPT 功能之中。
3.1.3. 表格資訊整理
對於表格類型的數據分析,只要提問準確,ChatGPT 的分析速度和準確程度都非常高。對於表格中不存在的數據,ChatGPT 也會給出「無法回答」的響應。如果我補充條件「公司名稱所在的地點一般就是公司的註冊地」,則模型會返回將表格中名稱帶有「深圳」的公司名單。
3.2. 強大的文本分析與分類能力
在金融領域,存在大量的文本類金融數據,其中包含著海量資訊。投資研究者需要對這些資訊進行檢索、篩選、分析,最終得出投資建議或決策。對於這些文本類數據的處理是相當耗時耗力的,從中提取有用資訊的效率並不高。大語言模型具有強大的文本分析與分類能力,以及人類所不具備的自動化、大批量處理數據的優勢。那麼用語言模型進行文本類金融數據的分析,是大語言模型的一個很自然的應用方向。
3.2.1. 文本類金融數據
文本類金融數據主要包括以下幾種:(1)公司財務報告:這包括年報、季度報告、利潤表、資產負債表和現金流量表等。這些報告提供了公司的財務狀況、經營成果和財務健康狀況的詳細資訊。(2)新聞和新聞稿:金融市場新聞、公司新聞稿以及與經濟、政治事件相關的新聞都會對金融市場產生影響。這些資訊通常用於情緒分析和市場預測。(3)市場分析報告:這些報告由分析師或研究機構發布,提供對特定行業、市場或公司的深入分析。(4)社交媒體內容:投資者和消費者在社交媒體上的討論和意見也被視為重要的文本數據源,各大社交平台上的帖子和評論可以用來衡量公眾對某個公 司或市場的看法。(5)監管文件:政府或監管機構發布的文件,包括公司的註冊聲明、年度報告、重大事件報告等。(6)公司通訊和演講:公司領導的公開演講、新聞發布會、投資者日活動和電話會議記錄等。
這些數據對於金融分析、投資決策和市場研究非常重要。之前國內外已有使用語言模型對文本數據進行情緒分析、另類因子構造等方面的研究,本文不再詳細介紹。
3.2.2. 文本數據的批量分析處理
針對文本類金融數據,LLM 的應用包括但不限於以下幾個方面:(1)情感分析:LLM 可以分析公司財報、新聞稿、社交媒體內容等,以識別其中的情感傾向,如積極、消極或中性。情感得分可以幫助量化投資者評估市場情緒,預測股價變動。(2)趨勢識別和預測:通過分析歷史數據和市場新聞,LLM 可以識別潛在的市場趨勢和模式。這些資訊可以用於預測市場動態和制定投資策略。(3)風險評估:分析公司的財務報告和新聞發布,以評估潛在的風險因素。例如,利用 LLM 分析財報中的隱藏資訊,如非標準會計處理,可能揭示潛在的財務問題。
相比於人類,LLM 的主要優勢在於分析數據的數量和處理任務的速度。LLM 能夠以人類無法達到的速度將海量資訊提取、分類,快速地統計出投資者所需要的指標。使用 LLM 對文本數據進行批量處理需要針對特定任務進行編程,可以藉助 langchain 等應用框架調取所需要的接口,更方便地調用 LLM 的模型完成所需要的任務。LangChain 是一個開源的 Python 框架,旨在幫助開發者更容易、更快速地構建和部署基於 LLM 的應用程序。它提供了一系列工具和組件,使開發者可以更加便捷地利用 LLM 的能力。關於 langchain 框架的使用,在其中文官網上有詳細的快速入門指南,結合下面即將介紹的 ChatGPT 的代碼輔助功能,更加易於上手。
3.3. 強大的代碼生成與修改能力
3.3.1. 代碼生成
GPT4 作為生成式模型,其最強大的功能自然為生成。在經過大量代碼數據的預訓練以及後續調教後,ChatGPT 的代碼生成能力也相當強。我以一名量化分析師的身份要求 ChatGPT 幫我生成一份 Python 代碼,使用 RNN 模型來根據股票過去的股價走勢預測未來的股價,以下是 ChatGPT 的回答。
ChatGPT 很快提供了構建模型的流程,並提供了一個基本的代碼框架(因為我提供的需求並不夠具體),甚至在最後加上了風險提示。代碼生成功能能夠給量化研究者帶來極大的便利(尤其是針對缺少經驗的行業新人)。由於具體任務的任務需求、數據結構、接口等等方面的多樣性,ChatGPT 難以生成完全適配任務並且能夠直接正確運行的代碼,因此目前很難直接代替研究員完成工作。
3.3.2. 代碼注釋
量化研究員的行業和崗位性質,導致多數人無法也不會選擇將精力過多地投入到編寫程序的相關技術棧上。電腦技術、編程語言種類繁多,即使是一個專業的算法/軟體開發工程師,也無法精通所有編程技術。而實際工作中的任務有各種各樣的需求,想要完成諸如前後端開發、資料庫維護、網頁爬蟲等子任務需要較高的學習成本。電腦作為高度開源的行業,有大量開發者在開源平台、論壇上共享其過去完成的工作。但這些工作多數需要有紮實的相關知識儲備才能夠理解甚至復現,ChatGPT 幾乎消除了這個門檻。
當需要快速完成一項不屬於自己技術棧的任務時,可以通過檢索與任務目標類似的開源項目代碼,交由 ChatGPT 做逐行注釋,能夠大幅度減少學習和理解的成本,結合公開文檔能夠快速修改源代碼並應用於自己的任務中。我要求 ChatGPT 對上一小節生成的代碼進行逐行注釋,以下是部分回答結果。
ChatGPT 相當詳盡乃至繁瑣地對代碼的每一部分做了注釋,解釋了每段代碼的功能、變量的含義以及參數的作用等等。這對於使用不熟悉的編程語言進行編程的場景相當友好,能夠節省大量的時間。此外,也可以要求 ChatGPT 直接將注釋添加在代碼段中(方便複製)。
3.3.3. 代碼糾錯與debug
ChatGPT 具有文本糾錯的功能,這在代碼上也同樣適用。然而糾錯並不是常用的做法,在實際場景中更加常見的情形是發生了代碼運行出錯的情況。ChatGPT 對於 debug 也能夠提供相當優秀的建議,可以直接將報錯資訊複製(或截圖)上傳,ChatGPT 會給出響應的回答。Debug 需要模型已知錯誤代碼的上下文,因此在提問時,需要將發生運行錯誤的代碼段作為上下文提示一併輸入,才能夠得到更加具體和準確的建議。
3.4. 未來發展方向
OpenAI 在北美時間 2023 年 11 月 6 日的首屆開發者大會上,向所有 Plus 用戶發布 了 GPTs 項目,這將會引發 LLM 應用的井噴式發展。GPTs 是針對特定目的定製的 ChatGPT,OpenAI 將允許所有人通過指令詞、額外的知識、動作這三種能力去定製自己的 GPTs,製作完成後作者還可以發布上線,允許所有人使用。最關鍵的是,製作一個 GPTs 看起來是個再簡單不過的事了,不需要任何的代碼知識,只需要用對話形式表達需求就可以完成一個定製的 GPT 應用。
用戶可以通過 Create 界面使用自然語言描述出自己想要定製的 GPTs,或者通過在 Configure 界面配置 GPTs 的各種功能,也可以在 Create 中完成描述後根據具體情況修改配置,最終得到一個專屬的人工智慧問答助手。
以 ChatGPT 為代表的多模態大模型的各種應用正在向各行各業快速地發展。本團隊將繼續跟蹤大模型技術的技術與應用發展情況,繼續跟蹤和探索 ChatGPT 等產品在金融和量化投資領域的應用與前景。