1. 引言
人工智能和機器學習,都是由場景和需求驅動的。找不到運用場景的機器學習技術,也沒有生命力。越有挑戰(zhàn)性的場景,越能激發(fā)人們用機器學習尋找解決方案的激情和動力。人們總是在問題中尋找解決方案,砥礪前行。
最近在嘗試梳理機器學習的相關內容,發(fā)現知識量巨大,信息龐雜,需要梳理一個主線,才能更好理解相關概念。所以很多研究機器學習的技術,都是順著如下的脈絡來展開的:
1. 我們準備解決什么問題?
2. 我們準備按照什么方式進行訓練學習?
3. 我們準備選定什么樣的模型來應對?
4. 針對模型,我們應該采取什么樣特定架構或網絡?
5. 針對這個模型和網絡,我們將采用什么樣的算法?
6. 這個算法有什么優(yōu)勢和劣勢?
這幾個維度的問題解答,相信能涵蓋絕大多數人對機器學習某些特定場景的技術和知識領域的理解。近期看了很多關于機器學習、自然語言處理以及GPT相關技術的文章,有一些心得體會,今天準備按照上述問題的脈絡,分享給大家,希望能有所幫助。
2. 自然語言處理NLP(Natural Language Processing)
人類,作為智能生物,交流是離不開自然語言的。如何讓機器理解人的語言,并能正常和人類進行語言互動,就成為迫切需要解決的重要問題。不管是文字類,還是語音類,都會存在所謂的語義分析理解、情感分析、機器翻譯問題。從自然語言處理的過程來看,不免要經歷:分詞和詞性標注、詞法分析、句法分析、實體識別、語義角色標注、句法語義分析、情感分析、語法歸納和機器翻譯等等。人類差不多有7000種活躍的語言,其中有文字支撐的,特別是在很多消費電子產品里能正常切換使用的,不過百種。不過這也足夠給自然語言處理帶來巨大的挑戰(zhàn)。不同文化背景,可能意味著完全不同的詞語分割、模糊和引發(fā)歧義的語義、或嚴格或寬松的語法靈活性,以及俗語、諺語等等,甚至會牽扯到各種圖形學和圖像識別的技術。
3. 大模型(Large language model)
既然是自然語言處理,就一定離不開語言模型。我們現在聽的很多的所謂大模型,就是大型語言模型的簡稱,英文是LLM,也就是 Large language model的縮寫。大模型也沒有什么神秘的,無非就是“大”。目前對于這個多“大”才算是大模型,還沒有一個官方權威的界定。但經驗上來講,大模型通常指的是至少具有數百萬參數的深度學習模型。而類似GPT-4的參數已經達到了170萬億的量級。上圖是近年來已有的大模型LLM(大于100億參數)的時間線。黃色標記此大模型已經開源。
大模型一般是通用模型,在廣泛任務中表現出色,而且通常大模型已經在大型語料庫上進行了“預訓練”。
只要是語言模型,不管是大還是小,其實都是一個基于統(tǒng)計學的模型。不管人們怎么去包裝,把這個說成是“推理”,但目前的技術就是建立在概率基礎上的。無非就是根據給定的輸入文本,預測下一個可能的單詞或字符序列。通過分析大量的文本數據,學習詞匯的出現概率和上下文之間的關系,從而能夠生成連貫的文本或評估給定文本的合理性。
4. 大模型的最小單元Token
語言模型最基礎的模型是詞袋模型(Bag-of-Words Model)。作為一種簡化的文本表示方法,將文本看作是一個袋子(或集合)中的詞語的無序集合,忽略了詞語的順序和語法結構。在詞袋模型中,每個文檔或句子被表示為一個向量,向量的每個維度對應一個詞語,維度的值表示該詞語在文檔中出現的次數或其他統(tǒng)計信息。詞袋模型假設詞語的出現是獨立的,只關注詞語的頻率和出現情況,忽略了詞語之間的順序和上下文信息。這種模型簡化了文本的表示和處理,常用于文本分類、信息檢索等任務。但是對于自然語言生成就無能為力了。在此基礎上將連續(xù)的文本流切分成有意義的單元,以便于模型對其進行處理和理解,這就是Token化(Tokenization)。"token"是指文本中的最小單位或基本元素。它可以是一個單詞、一個字、一個字符或其他語言單位,根據任務和需求而定。下圖就是GPT-3的標記化(Tokenization)示例:
在大模型中,token 的選擇和處理方式往往是根據具體任務和訓練數據來確定的。在訓練一個通用模型時,可以使用更粗粒度的 tokenization 方法,如將單詞作為 token。而在某些特定任務,如命名實體識別(Named Entity Recognition)或語言翻譯(Machine Translation)中,可能需要更細粒度的 tokenization,以便更好地捕捉特定領域或語言的信息。
不同語言的Token也會有很大差別。拿英文和漢語為例,在英語中,通常將單詞作為 token,而在漢語中,單個漢字級別的 tokenization 更為常見。漢語中的詞匯通常沒有復數形式、時態(tài)變化或進行時等形態(tài)變化,因此,對于一些任務,如詞性標注或命名實體識別,將單個詞作為 token 可能更加合適。而在英語中,單詞的不同形式(如單數和復數、時態(tài)等)可能被視為不同的 token。漢語中的合成詞較為常見,可以通過將多個單字組合而成。因此,在處理漢語時,可能需要將合成詞進行拆分,將其組成部分作為單獨的 token 進行處理。而在英語中,合成詞的形式較少,單詞本身就可以作為一個獨立的 token。在英語中,單詞之間由空格或標點符號分隔,因此可以相對容易地進行單詞級別的 tokenization。而在漢語中,字詞之間沒有明確的分隔符,需要進行中文分詞來將連續(xù)的漢字序列劃分為有意義的詞匯。所以在漢字處理上,比英文多了分詞這個步驟。
5. 無監(jiān)督學習(Unsupervised learning)
有了模型,我們接下來思考的就是,應該用什么方式進行訓練?語言模型帶有很強的內容生成屬性和靈活性,也就是不存在唯一解。這種模型,就絕對不能采用老是想著最優(yōu)策略的強化學習方式。而且,訓練這種語言模型,也不適合用通過使用標記的訓練數據來學習從輸入到輸出的映射關系的監(jiān)督學習(Supervised learning),因為人類語言信息量太大,標記不過來。而最理想的方式就是從未標記的數據中學習數據的隱藏結構、模式或分布的無監(jiān)督學習(Unsupervised learning)。當然,也不排除所謂的同時利用有標簽和無標簽的數據來進行學習的半監(jiān)督學習(Semi-supervised learning),或者從無監(jiān)督任務中自動生成標簽來進行學習。通過設計任務或目標函數,利用數據樣本中的已知信息進行預測或重構的自我監(jiān)督學習(Self-supervised learning)。
既然是無監(jiān)督學習為主,那么應該采用什么樣的網絡架構來學習合適呢?
6. 反饋神經網絡(Feedback Neural Networks)
當然是神經網絡。最早人們想到的用于語言模型處理的神經網絡是反饋神經網絡(Feedback Neural Networks)。存在反饋連接,信息可以從后續(xù)時間步驟傳遞回前面的時間步驟。可以對動態(tài)系統(tǒng)的行為進行建模和預測,如控制系統(tǒng)、運動軌跡預測等。我們必須承認,在處理時序任務方面反饋神經網絡著實表現出色,如語音識別、自然語言處理中的語言模型、機器翻譯等。
大家一般會想到的反饋神經網絡就是循環(huán)神經網絡(Recurrent Neural Networks,RNN),是一類具有循環(huán)連接的神經網絡,能夠保留先前狀態(tài)的信息,主要由循環(huán)層和激活函數組成。作為一種遞歸的神經網絡,適用于處理序列數據的任務,如自然語言處理、語音識別、時間序列分析等。如果用于處理文本,它的核心思想是在處理每個輸入時,將前一個時刻的隱藏狀態(tài)傳遞給當前時刻,并結合當前輸入進行計算。這種遞歸的結構使得RNN能夠捕捉到序列中的上下文信息。
然而,傳統(tǒng)的RNN在處理長序列時會面臨梯度消失(Vanishing Gradient)和梯度爆炸(Exploding Gradient)的問題。梯度消失指的是在深層神經網絡中,反向傳播過程中梯度逐漸變小,并最終變得非常接近于零的現象。當網絡層數較多時,梯度在每一層中都會乘以網絡參數的權重,因此,如果權重小于1,則梯度會指數級地逐漸減小,導致在淺層網絡中梯度無法有效傳遞到較深的層,從而使得較深層的參數更新緩慢或停止更新,影響網絡的訓練效果。梯度爆炸指的是在深層神經網絡中,反向傳播過程中梯度逐漸增大,并最終變得非常大的現象。當網絡層數較多時,梯度在每一層中都會乘以網絡參數的權重,如果權重大于1,則梯度會指數級地逐漸增大,導致在淺層網絡中梯度變得非常大,進而導致網絡參數更新過大,使得網絡無法收斂。不管是梯度消失,還是梯度爆炸問題,都會導致深層神經網絡的訓練變得困難,甚至無法收斂到有效的結果。
于是人們又改進了循環(huán)神經網絡,設計了一個變體長短期記憶網絡(Long Short-Term Memory,LSTM),用于解決傳統(tǒng)RNN在處理長期依賴問題上的挑戰(zhàn)。LSTM通過引入門控單元結構,可以更有效地處理和記憶長期依賴關系。LSTM通過引入門控機制來解決梯度消失和梯度爆炸的問題。LSTM單元包含遺忘門(forget gate)、輸入門(input gate)和輸出門(output gate)。LSTM通過這些門的控制,可以有選擇性地遺忘和更新信息,能夠更好地捕捉長期依賴關系,有助于控制信息的流動和記憶的更新,從而解決了梯度消失和梯度爆炸的問題。
7. Transformer轉換器
上述的LSTM看似完美,其實也有硬傷。傳統(tǒng)的循環(huán)神經網絡(RNN)或長短期記憶網絡(LSTM)都屬于反饋神經網絡(Feedback Neural Networks),在處理序列數據時是逐步進行的,每個時間步依賴于前一個時間步的計算結果。這種順序計算導致了計算的串行性,無法同時進行多個計算。而且這種局部信息交互的方式可能無法充分利用整個序列中的上下文信息。盡管LSTM緩解了梯度消失或梯度爆炸的問題,但仍然存在一定的限制。
而新的技術Transformer又打破了僵局。Transformer是前饋神經網絡(Feedforward Neural Networks)。前饋神經網絡中,信息只沿著前向的方向傳遞,沒有循環(huán)連接。適用于各種監(jiān)督學習和無監(jiān)督學習任務,如分類、回歸、特征提取等。Transformer作為一種基于自注意力機制的模型,用于處理序列數據,能夠在每個位置對輸入序列的所有位置進行注意力計算。這使得模型能夠根據輸入序列的不同部分自適應地分配注意力權重,能夠在一個序列中捕捉到不同位置之間的依賴關系,更加靈活地捕捉關鍵信息。由于Transformer是基于注意力機制的前饋神經網絡,可以在一次前向傳播中同時處理整個序列,因此可以進行更有效的并行計算。這使得Transformer摒棄了傳統(tǒng)的遞歸結構,而是采用了并行計算的方式,在處理長序列時更為高效。Transformer由編碼器和解碼器組成,編碼器負責將輸入序列編碼成一系列特征表示,解碼器則根據這些特征表示生成目標序列,Transformer通過注意力機制使每個位置都能夠在編碼和解碼階段獲得序列中所有位置的信息,實現了全局的信息交互,能夠更好地捕捉上下文關系。使得它可以廣泛應用于機器翻譯和生成式任務中。
8. 生成式與訓練轉換器GPT(Generative Pre-trained Transformer)
而大家熟知的GPT正是使用了最后這個Transformer技術。其實這也是GPT名字的由來。GPT是生成式與訓練轉換器(Generative Pre-trained Transformer)的縮寫。GPT通過對提出的問題進行預測(Generate)來生成一篇回答。GPT不是在一次預測中輸出整篇回答,而是首先預測回答的第一個字,然后將預測的第一個字與問題連接起來,形成一個延長一個字的輸入句子,并再次輸入給GPT。GPT進行第二次預測,得到回答的第二個字,然后將這個字續(xù)在輸入句子后,再次輸入給GPT,以此類推。這個過程一直重復進行,直到GPT預測出"結束符"(或達到約定的最大長度,此時回答過程結束,GPT生成了一篇完整的回答。這種逐步地一個字一個字生成整篇回答的過程被稱為"自回歸"—— Auto-Regression。在自回歸過程中,GPT進行多次預測而不僅僅是一次預測。因此,使用過ChatGPT的用戶可能會發(fā)現它在回答問題時逐字逐字地產生輸出,速度較慢。這是因為大型的GPT模型進行一次預測(輸出一個字)本身就需要一定的時間。
9. 轉換器(Transformer)與注意力(Attention)
從內部實現細節(jié)來看,輸入句子首先通過一系列堆疊在一起的Transformer組件。下一層Transformer的輸出作為上一層Transformer的輸入。GPT看到的"字"是數值化的表示,即一組向量。整個語言中有V個字(字表)。GPT為每個字分配一個向量,這些向量也是GPT的參數。輸入句子中的每個字向量被傳遞給第一個Transformer,它對每個字生成一個向量??梢詫⑦@個過程看作是Transformer對每個字向量進行了"變形"。下一層Transformer將其輸出的字向量傳遞給上一層Transformer,直到最頂層的Transformer為句子中的每個字生成一個向量。通過多層Transformer的處理,字向量在傳遞過程中發(fā)生了變化,這些變化可以視為Transformer對字向量進行了"變形"。更重要的是,在這個變形的過程中,每個字的向量融合了上下文中所有字的信息。這就是Transformer中的Attention(注意力)組件的作用。Attention首先利用每個字的向量計算出query向量、key向量和value向量。query向量和key向量指示了這個字與其他字(包括自身)如何相關聯,而value向量則包含了字本身的含義信息。Attention使用query向量和所有字的key向量計算出對應的注意力得分,這個得分表示這個字在多大程度上將注意力分配給其他字。然后,Attention使用這些注意力得分對所有字的value向量進行加權求和,得到對于該字的輸出向量??梢哉J為,Attention改變了該字的向量,使得變化后的向量通過不同的注意力權重融合了上下文中所有字的信息。
GPT的全部參數包括:
-
N個Transformer中組合多個Attention頭的輸出矩陣,以及全連接神經網絡的參數(包括多個權重矩陣和偏置向量);
-
每個Transformer中H個Attention頭的Q、K和V矩陣;
-
預測下一個字的全連接神經網絡的參數(包括多個權重矩陣和偏置向量);
-
初始的字向量。
正是這些參數使得GPT模型具有我們希望它具備的行為。例如,一個Attention頭的Q、K和V矩陣,其中V矩陣對輸入給Attention的字向量進行線性變換,得到該字的value向量,這種線性變換在某種程度上表達了該字某個方面的含義(抽象)。Q和K矩陣分別對字向量進行線性變換,得到該字的query和key向量,也編碼了該字與其他字相關聯的信息。再例如,位于Transformer之上的預測神經網絡,其參數編碼了如何根據句子的表示(即最后一個字的向量)來預測下一個字的信息。
10. GPT是如何訓練出來的?
所有這些參數都是通過“訓練”得到的。一開始,這些參數被初始化為隨機值,此時它們沒有任何含義和功能,GPT也無法很好地預測下一個字。訓練者準備了一個龐大的語料庫,其中包含許多合法的句子。從合法句子中隨機選擇一部分作為訓練樣本,以最后一個字作為標簽,將前面的字作為輸入,從而構造了一個訓練樣本。許多這樣的訓練樣本構成了訓練集。
將訓練樣本的句子輸入到GPT中,GPT將預測下一個字,準確地說是生成字表中所有字的概率分布。然后將正確的下一個字(標簽)與GPT的輸出進行比較,計算出誤差(交叉熵損失)。接下來,在GPT模型上執(zhí)行反向傳播,使用梯度下降法或其變體更新GPT的所有參數。
通過逐個樣本地(實際上是一批樣本)進行這一過程的迭代,即“計算誤差+反向傳播+更新參數”,最終調整GPT的參數使誤差最小化。此時,GPT能夠很好地預測句子的下一個字,訓練完成。
通過對GPT技術的揭秘,今天我們深入了解了生成式模型的訓練之道。相信大家能清晰看到從自然語言處理(NLP)到生成式與訓練轉換器(GPT)的技術發(fā)展脈絡。隨著技術的不斷進步,人們對大模型的期望也在增加。特別是如何處理不同語言和文化背景下的多樣性,克服詞語分割、語義模糊和語法靈活性等挑戰(zhàn),以實現全球范圍內的語言處理能力。同時,這種大模型的能力如何擴展到多媒體,多模態(tài)領域以及如何在各種專業(yè)領域發(fā)揮更好的作用,讓人們產生更多的期待。
相信,通過不斷的研究和探索,AIGC大模型將在自然語言處理領域發(fā)揮越來越重要的作用,為人們提供更好的語言交流和理解體驗,進而推動人工智能的發(fā)展邁上新的臺階。
-
開源技術
+關注
關注
0文章
389瀏覽量
7962 -
OpenHarmony
+關注
關注
25文章
3727瀏覽量
16390
原文標題:河套IT TALK94:(原創(chuàng))GPT技術揭秘:探索生成式模型的訓練之道
文章出處:【微信號:開源技術服務中心,微信公眾號:共熵服務中心】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論