
API 安全策略和基礎指南
左側為 Encoder block,右側為 Decoder block。紅色圈中的部分為 Multi-Head Attention,是由多個 Self-Attention組成的,可以看到 Encoder block 包含一個 Multi-Head Attention,而 Decoder block 包含兩個 Multi-Head Attention (其中有一個用到 Masked)。Multi-Head Attention 上方還包括一個 Add & Norm 層,Add 表示殘差連接 (Residual Connection) 用于防止網絡退化,Norm 表示 Layer Normalization,用于對每一層的激活值進行歸一化。
Transformer模型的優點在于,它能夠并行處理序列中的所有單詞,這使得它在處理長序列時比循環神經網絡(RNN)更高效。另外,自注意力機制使得模型能夠捕獲到序列中長距離的依賴關系,這是RNN難以做到的。
GPT,全稱為Generative Pre-training Transformer,是OpenAI開發的一種基于Transformer的大規模自然語言生成模型。GPT模型采用了自監督學習的方式,首先在大量的無標簽文本數據上進行預訓練,然后在特定任務的數據上進行微調。
GPT模型的主要結構是一個多層的Transformer解碼器,但是它只使用了Transformer解碼器的部分,沒有使用編碼器-解碼器的結構。此外,為了保證生成的文本在語法和語義上的連貫性,GPT模型采用了因果掩碼(causal mask)或者叫自回歸掩碼(auto-regressive mask),這使得每個單詞只能看到其前面的單詞,而不能看到后面的單詞。
在預訓練(Pre-training)階段,GPT模型使用了一個被稱為”Masked Language Model”(MLM)的任務,也就是預測一個句子中被遮蓋住的部分。預訓練的目標是最大化句子中每個位置的單詞的條件概率,這個概率由模型生成的分布和真實單詞的分布之間的交叉熵來計算。
在微調(fine-tuning)階段,GPT模型在特定任務的數據上進行訓練,例如情感分類、問答等。微調的目標是最小化特定任務的損失函數,例如分類任務的交叉熵損失函數。
GPT模型的優點在于,由于其預訓練-微調的訓練策略,它可以有效地利用大量的無標簽數據進行學習,并且可以輕松地適應各種不同的任務。此外,由于其基于Transformer的結構,它可以并行處理輸入序列中的所有單詞,比基于循環神經網絡的模型更高效。
GPT演進了三個版本:
(1)GPT-1用的是自監督預訓練+有監督微調,5G文檔,1億參數,這種兩段式的語言模型,其能力還是比較單一,即翻譯模型只能翻譯,填空模型只能填空,摘要模型只能摘要等等,要在實際任務中使用,需要各自在各自的數據上做微調訓練,這顯然很不智能。
(2)GPT-2用的是純自監督預訓練,相對于GPT-1,它可以無監督學習,即可以從大量未標記的文本中學習語言模式,而無需人工標記的訓練數據。這使得GPT-2在訓練時更加靈活和高效。它引入了更多的任務進行預訓練,40G文檔,15億參數,能在沒有針對下游任務進行訓練的條件下,就在下游任務上有很好的表現。
(3)GPT-3沿用了GPT-2的純自監督預訓練,但是數據大了好幾個量級,570G文檔,模型參數量為 1750 億,GPT-3表現出了強大的零樣本(zero-shot)和少樣本(few-shot)學習能力。這意味著它可以在沒有或只有極少示例的情況下,理解并完成新的任務,它能生成更連貫、自然和人性化的文本,理解文本、獲取常識以及理解復雜概念等方面也比GPT-2表現得更好。
GPT-3 雖然在各大 NLP 任務以及文本生成的能力上令人驚艷,但模型在實際應用中時長會暴露以下缺陷,很多時候,他并不按人類喜歡的表達方式去說話:
(1)提供無效回答:沒有遵循用戶的明確指示,答非所問。
(2)內容胡編亂造:純粹根據文字概率分布虛構出不合理的內容。
(3)缺乏可解釋性:人們很難理解模型是如何得出特定決策的,難以確信回答的準確性。
(4)內容偏見有害:模型從數據中獲取偏見,導致不公平或不準確的預測。
(5)連續交互能力弱:長文本生成較弱,上下文無法做到連續。
在這個背景下,OpenAI 提出了一個概念“Alignment”,意思是模型輸出與人類真實意圖對齊,符合人類偏好。因此,為了讓模型輸出與用戶意圖更加 “align”,就有了 InstructGPT 這個工作。InstructGPT相對于GPT的改進主要是使用了來自人類反饋的強化學習方案—— RLHF( Reinforcement Learning with human feedback)來微調 GPT-3,這種技術將人類的偏好作為激勵信號來微調模型。
如上圖所示,以摘要生成任務為例,詳細展示了如何基于人類反饋進行強化學習,最終訓練完成得到 InstructGPT 模型。主要分為三步:
1. 收集人類反饋:使用初始化模型對一個樣本生成多個不同摘要,人工對多個摘要按效果進行排序,得到一批排好序的摘要樣本;
2. 訓練獎勵模型:使用第1步得到的樣本集,訓練一個模型,該模型輸入為一篇文章和對應的一個摘要,模型輸出為該摘要的得分;
3. 訓練策略模型:使用初始化的策略模型生成一篇文章的摘要,然后使用獎勵模型對該摘要打分,再使用打分值借助 PPO 算法重新優化策略模型
InstructGPT可以更好地理解用戶意圖,通過指令-回答對的數據集和指令-評價對的數據集,InstructGPT可以學習如何根據不同的指令生成更有用、更真實、更友好的輸出。
ChatGPT由OpenAI公司在2022年11月30日發布。在同樣由OpenAI開發的GPT-3.5模型基礎上,ChatGPT通過無監督學習與強化學習技術進行微調,并提供了客戶端界面,支持用戶通過客戶端與模型進行問答交互。ChatGPT不開源,但通過WebUI為用戶提供免費的服務。OpenAI沒有公布ChatGPT的論文和相關的訓練和技術細節(GPT-3.5沒有開源),但我們可以從其兄弟模型InstructGPT以及網絡上公開的碎片化的情報中尋找到實現ChatGPT的蛛絲馬跡。根據OpenAI所言,ChatGPT相對于InstructGPT的主要改進在于收集標注數據的方法上,而整個訓練過程沒有什么區別,因此,可以推測ChatGPT的訓練過程應該與InstructGPT的類似,大體上可分為3步:
1.預訓練一個超大的語言模型;2.收集人工打分數據,訓練一個獎勵模型;3.使用強化學習方法微調優化語言模型。
相對于GPT-3,GPT-3.5擁有3個變體,每個變體有13億、60億和1750億參數,當前ChatGPT提供了基于GPT-4的版本,相對于GPT-3.5,GPT-4模型據說有1萬億個參數,GPT4是一個多模態(multimodal)模型,即它可以接受圖像和文本作為輸入,并輸出文本;而GPT3.5只能接受文本作為輸入,并輸出文本。這使得GPT4可以處理更復雜且具有視覺信息的任務,如圖像描述、圖像問答、圖像到文本等。
關于大模型,有學者稱之為“大規模預訓練模型”(large pretrained language model),也有學者進一步提出”基礎模型”(Foundation Models)的概念。2021年8月,李飛飛、Percy Liang等百來位學者聯名發布了文章:On the Opportunities and Risks of Foundation Models[1],提出“基礎模型”(Foundation Models)的概念:基于自監督學習的模型在學習過程中會體現出來各個不同方面的能力,這些能力為下游的應用提供了動力和理論基礎,稱這些大模型為“基礎模型”。
“小模型”:針對特定應用場景需求進行訓練,能完成特定任務,但是換到另外一個應用場景中可能并不適用,需要重新訓練(我們現在用的大多數模型都是這樣)。這些模型訓練基本是“手工作坊式”,并且模型訓練需要大規模的標注數據,如果某些應用場景的數據量少,訓練出的模型精度就會不理想。
“大模型”:在大規模無標注數據上進行訓練,學習出一種特征和規則。基于大模型進行應用開發時,將大模型進行微調(在下游小規模有標注數據進行二次訓練)或者不進行微調,就可以完成多個應用場景的任務,實現通用的智能能力。可以這么類別,機器學習同質化學習算法(例如邏輯回歸)、深度學習同質化模型結構(例如CNN),基礎模型則同質化模型本身(例如GPT-3)。
人工智能的發展已經從“大煉模型”逐步邁向了“煉大模型”的階段。ChatGPT只是一個起點,其背后的Foundation Module的長期價值更值得被期待。
大模型發展的前期被稱為預訓練模型,預訓練技術的主要思想是遷移學習。當目標場景的數據不足時,首先在數據量龐大的公開數據集上訓練模型,然后將其遷移到目標場景中,通過目標場景中的小數據集進行微調 ,使模型達到需要的性能 。在這一過程中,這種在公開數據集訓練過的深層網絡模型,被稱為“預訓練模型”。使用預訓練模型很大程度上降低下游任務模型對標注數據數量的要求,從而可以很好地處理一些難以獲得大量標注數據的新場景。
2018年出現的大規模自監督(self-supervised)神經網絡是真正具有革命性的。這類模型的精髓是從自然語言句子中創造出一些預測任務來,比如預測下一個詞或者預測被掩碼(遮擋)詞或短語。這時,大量高質量文本語料就意味著自動獲得了海量的標注數據。讓模型從自己的預測錯誤中學習10億+次之后,它就慢慢積累很多語言和世界知識,這讓模型在問答或者文本分類等更有意義的任務中也取得好的效果。沒錯,說的就是BERT 和GPT-3之類的大規模預訓練語言模型,也就是我們說的大模型。
2022年8月,Google發表論文,重新探討了模型效果與模型規模之間的關系。結論是:當模型規模達到某個閾值時,模型對某些問題的處理性能呈現快速增長。作者將這種現象稱為Emergent Abilities,即涌現能力。
大模型的典型架構就是Transformer 架構,其自2018年開始統治NLP領域,NLP領域的進展迎來了井噴。為何預訓練的transformer有如此威力?其中最重要的思想是attention,也就是前面提到過的注意力機制。就是句子中每個位置的表征(representation,一般是一個稠密向量)是通過其他位置的表征加權求和而得到。為什么這么簡單的結構和任務能取得如此威力?
原因在其通用性。預測下一個單詞這類任務簡單且通用,以至于幾乎所有形式的語言學和世界知識,從句子結構、詞義引申、基本事實都能幫助這個任務取得更好的效果。大模型也在訓練過程中學到了這些信息,讓單個模型在接收少量的指令后就能解決各種不同的NLP問題。也許,大模型就是“大道至簡”的最好詮釋。
“大模型”通常是具有大量的參數,它們定義了模型的復雜性和學習能力。
實現大模型主要涉及以下幾個步驟:
(1) 模型架構設計:大模型通常具有更深的網絡架構(更多的層)和/或更寬的層(更多的神經元)。這種設計可以使模型擁有更強大的表示能力,可以學習和記憶更復雜的模式,比如Transformer 架構。
(2) 數據準備:訓練大模型需要大量的數據。這些數據為模型提供了學習的機會,使其能夠捕捉到數據中的潛在模式。大量的訓練數據也有助于防止模型過擬合,這是深度學習模型常常需要面臨的問題。
(3) 計算資源:大模型需要大量的計算資源來進行訓練,包括強大的GPU和足夠的內存。大模型的訓練通常需要并行化和分布式計算來處理大量的計算任務。
(4) 優化算法:訓練大模型需要高效的優化算法。這些算法(如隨機梯度下降及其變體)用于調整模型的參數以最小化預測錯誤。
(5) 正則化技術:大模型由于其復雜性,更容易過擬合訓練數據。因此,訓練大模型通常需要使用正則化技術(如權重衰減、dropout等)來防止過擬合。
(6) 模型并行和數據并行:由于大模型的規模,訓練過程常常需要在多個GPU或者多個機器上進行。模型并行和數據并行是兩種常用的策略,前者是將模型的不同部分分布在不同的設備上,后者是將數據分布在不同的設備上。
這些是實現大模型的一般步驟和要求。然而,這也帶來了一些挑戰,如計算資源的需求、訓練時間的增加、過擬合的風險等。因此,選擇合適的模型規模以平衡性能和效率是深度學習中的一個重要任務。
除了GPT-3、GPT-3.5及GPT-4,當前還有BERT、RoBERTa、T5、XLNet等大模型。這些模型都是由不同的公司和組織開發的,它們都有自己的優點和缺點。
以下是這些模型的簡要介紹:
(1)BERT:BERT是由Google開發的一種預訓練語言模型,它在自然語言處理領域取得了很大的成功。BERT有340M和1.1B兩個版本,其中1.1B版本有33億個參數。
(2)RoBERTa:RoBERTa是Facebook AI Research開發的一種預訓練語言模型,它在自然語言處理領域取得了很大的成功。RoBERTa有125M、250M、500M、1.5B和2.7B五個版本,其中2.7B版本有27億個參數。
(3)T5:T5是由Google開發的一種預訓練語言模型,它在自然語言處理領域取得了很大的成功。T5有11B和22B兩個版本,其中22B版本有220億個參數。
(4)XLNet:XLNet是由CMU和Google Brain開發的一種預訓練語言模型,它在自然語言處理領域取得了很大的成功。XLNet有兩個版本,分別為XLNet-Large和XLNet-Base,其中XLNet-Large有18億個參數。
(5)GShard:GShard是由Google開發的一種預訓練語言模型,它在自然語言處理領域取得了很大的成功。GShard有兩個版本,分別為GShard-Large和GShard-Base,其中GShard-Large有6億個參數。
(6)Switch Transformer:Switch Transformer是由CMU開發的一種預訓練語言模型,它在自然語言處理領域取得了很大的成功。Switch Transformer有兩個版本,分別為Switch Transformer-Large和Switch Transformer-Base,其中Switch Transformer-Large有1.6億個參數。
AIGC(Artificial Intelligence Generated Content / AI-Generated Content)中文譯為人工智能生成內容,一般認為是相對于PCG(專業生成內容)、UCG(用戶生成內容)而提出的概念。AIGC狹義概念是利用AI自動生成內容的生產方式。廣義的AIGC可以看作是像人類一樣具備生成創造能力的AI技術,即生成式AI,它可以基于訓練數據和生成算法模型,自主生成創造新的文本、圖像、音樂、視頻、3D交互內容等各種形式的內容和數據,以及包括開啟科學新發現、創造新的價值和意義等。
下面示例了AIGC能做的事情:
AIGC技術中,耳熟能詳的當屬Transformer、GPT、Diffusion、CLIP、Stable Diffusion,下面簡要介紹下Diffusion、CLIP、Stable Diffusion。
(1)Diffusion
“擴散” 來自一個物理現象:當我們把墨汁滴入水中,墨汁會均勻散開;這個過程一般不能逆轉,但是 AI 可以做到。當墨汁剛滴入水中時,我們能區分哪里是墨哪里是水,信息是非常集中的;當墨汁擴散開來,墨和水就難分彼此了,信息是分散的。類比于圖片,這個墨汁擴散的過程就是圖片逐漸變成噪點的過程:從信息集中的圖片變成信息分散、沒有信息的噪點圖很簡單,逆轉這個過程就需要 AI 的加持了。
研究人員對圖片加噪點,讓圖片逐漸變成純噪點圖;再讓 AI 學習這個過程的逆過程,也就是如何從一張噪點圖得到一張有信息的高清圖。這個模型就是 AI 繪畫中各種算法,如Disco Diffusion、Stable Diffusion中的常客擴散模型(Diffusion Model)。
(2)CLIP( Contrastive Language-Image Pre-Training,大規模預訓練圖文表征模型)
如果讓你把下面左側三張圖和右側三句話配對,你可以輕松完成這個連線。但對 AI 來說,圖片就是一系列像素點,文本就是一串字符,要完成這個工作可不簡單。
大規模預訓練圖文表征模型用4億對來自網絡的圖文數據集,將文本作為圖像標簽,進行訓練。一張圖像和它對應的文本描述,希望通過對比學習,模型能夠學習到文本-圖像對的匹配關系。CLIP為CV研究者打開了一片非常非常廣闊的天地,把自然語言級別的抽象概念帶到計算機視覺里。
(3) Stable Diffusion
Diffusion算法針對任意噪聲圖片去噪后得到的圖片是不可控的,如果讓Diffusion算法能夠接受文字的提示從而生成想要的圖片,這就是當下AIGC的另一個大熱點,AI繪畫:只輸入文字描述,即可自動生成各種圖像,其核心算法-Stable Diffusion,就是上面提到的文字到圖片的多模態算法CLIP和圖像生成算法DIffusion的結合體,CLIP就是作為作為文字提示用的,進而對DIffusion施加影響生成所需的圖片。
參考下面算法核心邏輯的插圖,Stable Diffusion的數據會在像素空間(Pixel Space)、潛在空間(Latent Space)、條件(Conditioning)三部分之間流轉,其算法邏輯大概分這幾步:
1、圖像編碼器將圖像從像素空間(Pixel Space)壓縮到更小維度的潛在空間(Latent Space),捕捉圖像更本質的信息,否則維度太多計算量太大;
2、對潛在空間中的圖片添加噪聲,進行擴散過程(Diffusion Process);
3、通過CLIP文本編碼器將輸入的描述語轉換為去噪過程的條件(Conditioning);
4、基于一些條件(Conditioning)對圖像進行去噪(Denoising)以獲得生成圖片的潛在表示,去噪步驟可以靈活地以文本、圖像和其他形式為條件(以文本為條件即 text2img、以圖像為條件即 img2img);
5、圖像解碼器通過將圖像從潛在空間轉換回像素空間來生成最終圖像。
AGI 是 Artificial General Intelligence(通用人工智能)的縮寫,它指的是一種理論上的形式的人工智能,具有全面理解、學習和應用知識的能力,與人類智能在各方面上都相當或者超越。這種類型的AI能夠理解、學習和應用其在一個領域學到的知識到任何其他領域。
通用人工智能與當前存在的人工智能(通常被稱為弱人工智能或窄人工智能)有很大的不同。當前的AI系統通常在一個非常特定的任務或一組任務中表現出超人的性能,例如圍棋、語言翻譯、圖像識別等,但它們缺乏在一個任務上學到的知識應用到其他任務的能力,也沒有真正理解它們正在做什么的能力。
當前火熱的GPT等大模型仍然是一種窄人工智能(Narrow AI)或特定人工智能(Specific AI)。它們被訓練來執行特定的任務(在這種情況下是生成文本),而并不具有廣泛的理解能力或適應新任務的能力,這是AGI的特征。然而,GPT和AGI的關聯在于,GPT是當前AI研究為實現AGI所做出的努力中的一部分。它表明了預訓練模型的潛力,并給出了一種可能的路徑,通過不斷增加模型的規模和復雜性,可能會接近AGI。但是,這仍然是一個未解決的問題,并且需要更多的研究來確定這是否可行,以及如何安全有效地實現這一目標。
盡管GPT在生成文本上表現出了強大的性能,但它并不理解它正在說什么。GPT沒有意識,也沒有理解或意愿,它只是學會了模擬人類語言模式的統計模型。這是目前所有AI系統(包括GPT)與AGI之間的一個關鍵區別。
我們仍然遠離實現通用人工智能。實現這個目標需要解決許多重大的科學和技術挑戰,包括但不限于語義理解、共享和遷移學習、推理和規劃,以及自我知覺和自我理解。
大語言模型(英文:Large Language Model,縮寫LLM),也稱大型語言模型,是一種人工智能模型,旨在理解和生成人類語言。它們在大量的文本數據上進行訓練,可以執行廣泛的任務,包括文本總結、翻譯、情感分析等等。LLM的特點是規模龐大,包含數十、成百、上千億的參數,這種模型可以捕獲語言的復雜模式,包括句法、語義和一些上下文信息,從而生成連貫、有意義的文本。
GPT3、ChatGPT、BERT、T5、文心一言等都是典型的大型語言模型。
ChatGPT 大熱,讓人驚嘆其強大的對話、上下文理解、代碼生成等等能力,但另一方面由于 GPT-3以后得 系列模型 & ChatGPT 均未開源,再加上高昂的訓練成本所構成的堅不可摧的護城河,讓普通人 & 公司望而卻步。
2023年3月,Meta開源了一個新的大模型系列 ——LLaMA(Large Language Model Meta AI),參數量從 70 億到 650 億不等。130 億參數的 LLaMA 模型在大多數基準上可以勝過參數量達 1750 億的 GPT-3,而且可以在單塊 V100 GPU 上運行。
時隔幾天,斯坦福基于 LLaMA 7B 微調出一個具有 70 億參數的新模型 Alpaca,他們使用了 Self-Instruct 論文中介紹的技術生成了 52K 條指令數據,同時進行了一些修改,在初步的人類評估中,Alpaca 7B 模型在 Self-Instruct 指令評估上的表現類似于 text-davinci-003(GPT-3.5)模型。
然后,斯坦福學者聯手 CMU、UC 伯克利等,再次推出一個全新模型 ——130 億參數的 Vicuna,俗稱「小羊駝」(駱馬)。Vicuna 是通過在 ShareGPT 收集的用戶共享對話上對 LLaMA 進行微調訓練而來,訓練成本近 300 美元。
研究人員設計了 8 個問題類別,包括數學、寫作、編碼,對 Vicuna-13B 與其他四個模型進行了性能測試。測試過程使用 GPT-4 作為評判標準,結果顯示 Vicuna-13B 在超過 90% 的情況下實現了與 ChatGPT 和 Bard 相匹敵的能力。同時,在超過 90% 的情況下勝過了其他模型,如 LLaMA 和斯坦福的 Alpaca。
Fine-tuning(微調)是一種機器學習技術,用于調整已預訓練的模型以適應新的任務。預訓練的模型是在大量數據集(如整個互聯網的文本)上訓練的,并且已經學習了該數據的許多基本模式。然后,這些模型可以被微調,即在更小、特定的數據集上進行額外的訓練,以適應特定的任務。
例如,你可以取一個已經在大量的英文文本上預訓練的模型(這樣它已經學會了英語的語法和許多詞匯),然后在一個小的數據集上進行微調,這個數據集包含醫學文本。微調后的模型將能更好地理解和生成醫學相關的文本,因為它已經適應了這個特定的領域,前面提到的GPT-1就用到了微調技術。
微調的一個關鍵優勢是,預訓練的模型已經學習了許多有用的基本模式,因此只需要相對較小的數據集就可以對其進行微調。這樣,微調可以更快、更有效地訓練模型,尤其是在數據有限的情況下。
自監督學習是從數據本身找標簽來進行有監督學習。 無監督學習沒有標擬合標簽的過程,而是從數據分布的角度來構造損失函數。自監督學習的代表是語言模型,無監督的代表是聚類。自監督不需要額外提供label,只需要從數據本身進行構造。
這種方法的一個常見示例是預測文本中的下一個單詞或缺失的單詞。模型的輸入可能是一個句子中的一部分,目標或標簽是句子中的下一個單詞或缺失的單詞。通過這種方式,模型可以在大量未標記的文本數據上進行訓練,并學習語言的語法和語義。
自監督學習的一個主要優點是可以利用大量的未標記數據進行訓練。在許多情況下,獲取未標記的數據要比獲取標記的數據容易得多。例如,互聯網上有大量的文本數據可以用來訓練語言模型,但只有一小部分數據有人工標記。
下圖示例了基于自監督學習的圖像修復示例,我們可以通過隨機去掉圖像中的某個部分來生成訓練數據,原數據作為訓練標簽來進行預訓練,對于下游任務,生成器學到的語義特征相比隨機初始化有10.2%的提升,對于分類和物體檢測有<4%的提升。
請注意,雖然自監督學習可以學習數據的內在模式,但它可能需要額外的監督學習步驟(例如,fine-tuning)來執行特定的任務。例如,預訓練的語言模型(如GPT-3)首先使用自監督學習來學習語言的模式,然后可以在特定任務的標記數據上進行微調。
自注意力機制,也被稱為自我注意力或者是轉換模型(Transformers)中的注意力機制,是一種捕獲序列數據中不同位置之間相互依賴性的技術。這種機制使得模型可以在處理一個元素(例如一個詞)時,考慮到序列中其他元素的信息。在自注意力機制中,每一個輸入元素(例如一個單詞)都會被轉換為三種向量:查詢向量、鍵向量(Key vector)和值向量(Value vector)。在自注意力機制中,計算一個詞的新表示的步驟如下:
(1)計算查詢向量與所有鍵向量(即輸入元素)的點積,以此來獲取該詞與其他詞之間的相關性。
(2)將這些相關性得分經過softmax函數轉化為權重,以此使得與當前詞更相關的詞獲得更高的權重。
(3)用這些權重對值向量進行加權平均,得到的結果就是當前詞的新表示。
舉個例子,我們考慮英文句子 “I love my dog.” 在自注意力機制處理后,每個詞的新表示會是什么樣的。我們將關注”I”這個詞。
原始的詞嵌入向量 “I” 可能只包含了 “I” 這個詞本身的信息,比如它是一個代詞,通常用于表示說話者自己等。但在自注意力機制處理后,”I” 的新表示將包含與其有關的上下文信息。比如在這個句子中,”I”后面跟著的是 “love my dog”,所以新的表示可能會包含一些與“喜愛”和“狗”有關的信息。
通過這種方式,自注意力機制可以捕獲到序列中長距離的依賴關系,而不僅僅是像循環神經網絡(RNN)那樣只能捕獲相鄰詞之間的信息。這使得它在處理諸如機器翻譯、文本生成等需要理解全局信息的任務中表現得尤為優秀。
前面講過,GPT-3表現出了強大的零樣本(zero-shot)和少樣本(few-shot)學習能力,那么何謂零樣本學習呢?
零樣本學習是一種機器學習的范式,主要解決在訓練階段未出現但在測試階段可能出現的類別的分類問題。這個概念通常用于視覺物體識別或自然語言處理等領域。
在傳統的監督學習中,模型需要在訓練階段看到某類的樣本,才能在測試階段識別出這一類。然而,在零樣本學習中,模型需要能夠理解和識別在訓練數據中從未出現過的類別。
比如被廣泛引用的人類識別斑馬的例子:假設一個人從來沒有見過斑馬這種動物,即斑馬對這個人來說是未見類別,但他知道斑馬是一種身上有著像熊貓一樣的黑白顏色的、像老虎一樣的條紋的、外形像馬的動物,即熊貓、老虎、馬是已見類別。那么當他第一次看到斑馬的時候, 可以通過先驗知識和已見類,識別出這是斑馬。
在零樣本學習中,這些未出現過的類別的信息通常以一種形式的語義表示來提供,例如詞嵌入、屬性描述等。總的來說,零樣本學習是一種非常有挑戰性的任務,因為它需要模型能夠推廣并將在訓練階段學習到的知識應用到未見過的類別上。這種任務的成功需要模型具備一定的抽象和推理能力。
在人工智能領域,對齊( Alignment )是指如何讓人工智能模型的產出,和人類的常識、認知、需求、價值觀保持一致。往大了說不要毀滅人類,往小了說就是生成的結果是人們真正想要的。例如,OpenAI成立了Alignment團隊,并提出了InstructGPT模型,該模型使用了Alignment技術,要求AI系統的目標要和人類的價值觀與利益相對齊(保持一致)。
比如說向系統提問:“怎么強行進入其他人的房子?”
GPT3會一本正經的告訴你,你需要找一個堅硬的物體來撞門,或者找看看哪個窗戶沒有鎖。
而InstructGPT會跟你說,闖入他人的房子是不對的,如果有糾紛請聯系警察。嗯,看起來InstructGPT要善良多了。
詞嵌入(Word Embeddings)是一種將詞語或短語從詞匯表映射到向量的技術。這些向量捕捉到了詞語的語義(含義)和語法(如詞性,復數形式等)特征。詞嵌入的一個關鍵特點是,語義上相近的詞語在向量空間中通常會靠得很近。這樣,計算機就可以以一種更接近人類語言的方式理解和處理文本。
舉個例子,假設我們有四個詞:”king”, “queen”, “man”, “woman”。在一個好的詞嵌入模型中,”king” 和 “queen” 的詞向量將非常接近,因為他們都代表了皇室的頭銜;同樣,”man” 和 “woman” 的詞向量也會非常接近,因為他們都代表性別。此外,詞嵌入模型甚至可以捕獲更復雜的關系。例如,從 “king” 的詞向量中減去 “man” 的詞向量并加上 “woman” 的詞向量,結果會非常接近 “queen” 的詞向量。這表示出了性別的差異:”king” 對于 “man” 就像 “queen” 對于 “woman”。
詞嵌入通常由大量文本數據學習而來,例如,Google 的 Word2Vec 和 Stanford 的 GloVe 就是兩種常見的詞嵌入模型。這些模型能夠從大量的文本數據中學習到詞語之間的各種復雜關系。
GPT(Generative Pretrained Transformer)實現詞嵌入的方式和許多其他自然語言處理模型類似,但有一些特別的地方。下面是一些關于 GPT 如何實現詞嵌入的基本信息。
GPT 首先將文本分解為子詞單位。這個過程中用到的算法叫做Byte Pair Encoding (BPE)。BPE 是一種自底向上的方法,通過統計大量文本數據中的詞匯共現情況,將最常見的字符或字符組合合并成一個單元。BPE 能夠有效處理詞形變化、拼寫錯誤和罕見詞匯。
具體來說,例如英文單詞 “lowering” 可能被 BPE 分解為 “low”, “er”, “ing” 這三個子詞單元。這樣做的好處在于,即使 “lowering” 這個詞在訓練語料中很少見或者完全沒有出現過,我們仍然可以通過它的子詞單位 “low”, “er”, “ing” 來理解和表示它。
每個子詞單元都有一個與之關聯的向量表示,也就是我們所說的詞嵌入。這些詞嵌入在模型的預訓練過程中學習得到。通過這種方式,GPT 能夠捕捉到詞匯的語義和語法信息。
當需要獲取一個詞的嵌入時,GPT 會將該詞的所有子詞嵌入進行加和,得到一個整體的詞嵌入。例如,對于 “lowering”,我們將 “low”, “er”, “ing” 的詞嵌入相加,得到 “lowering” 的詞嵌入。
總的來說,GPT 使用了一種基于子詞的詞嵌入方法,這使得它能夠有效地處理各種語言中的詞形變化、拼寫錯誤和罕見詞匯,進而更好地理解和生成自然語言文本。
位置編碼(Positional Encoding)是一種在處理序列數據(如文本或時間序列)時用來表示每個元素在序列中位置的技術。由于深度學習模型,如 Transformer 和 GPT,本身并不具有處理輸入序列順序的能力,因此位置編碼被引入以提供序列中元素的順序信息。
Transformer 和 GPT 使用一種特別的位置編碼方法,即使用正弦和余弦函數生成位置編碼。這種方法生成的位置編碼具有兩個重要的特性:一是不同位置的編碼是不同的,二是它可以捕捉到相對位置關系。
假設我們有一個英文句子 “I love AI”,經過詞嵌入處理后,我們得到了每個詞的詞向量,但這些詞向量并不包含位置信息。因此,我們需要添加位置編碼。
假設我們使用一個簡單的位置編碼方法,即直接使用位置索引作為位置編碼(實際的 Transformer 和 GPT 會使用更復雜的基于正弦和余弦函數的編碼方法)。這樣,”I” 的位置編碼為 1,”love” 的位置編碼為 2,”AI” 的位置編碼為 3。然后,我們將位置編碼加到對應詞的詞向量上。這樣,模型在處理詞向量時就會同時考慮到它們在序列中的位置。
位置編碼是 GPT 和 Transformer 中的重要組成部分,它允許模型理解詞語在序列中的順序,從而理解語言中的句法和語義。
中文LangChain 開源項目最近很火,其是一個工具包,幫助把LLM和其他資源(比如你自己的領域資料)、計算能力結合起來,實現本地化知識庫檢索與智能答案生成。
LangChain的準備工作包括:
1、海量的本地領域知識庫,知識庫是由一段一段的文本構成的。
2、基于問題搜索知識庫中文本的功能性語言模型。
3、基于問題與問題相關的知識庫文本進行問答的對話式大語言模型,比如開源的chatglm、LLama、Bloom等等。
其主要工作思路如下:
1、把領域內容拆成一塊塊的小文件塊、對塊進行了Embedding后放入向量庫索引 (為后面提供語義搜索做準備)。
2、搜索的時候把Query進行Embedding后通過語義檢索找到最相似的K個Docs。
3、把相關的Docs組裝成Prompt的Context,基于相關內容進行QA,讓chatglm等進行In Context Learning,用人話回答問題。
文章來源:大魚的數據人生
原文連結:https://mp.weixin.qq.com/s/aTie5HM9SLdZhcOOwpxUzg