首頁 >科技週邊 >人工智慧 >從GPT-3開始,續寫Transformer龐大家族系譜

從GPT-3開始,續寫Transformer龐大家族系譜

WBOY
WBOY轉載
2023-04-30 23:34:10651瀏覽

最近,大語言模型軍備戰爭佔據了朋友圈的大部分篇幅,關於這些模型能做什麼和有什麼商業價值,已經有很多文章探討。然而,身為一個在人工智慧領域浸淫多年的小小研究員,我更關注的是這場軍備競賽背後的技術原理,以及這些模型是如何工程化並造福人類的。相較於看這些模式怎樣賺錢和工程化以便為更多人帶來好處,我更想探索的是這個現象背後的原因,以及在AI 取代人類之前,我們這些研究員還能為實現「被AI 取代然後光榮退休” 做些什麼。

三年前,當 GPT-3 在科技界掀起軒然大波時,我曾試著以史書的方式剖析 GPT 背後的龐大家族。我按時間順序梳理了 GPT 背後的技術脈絡(圖 1),並試圖解釋 GPT 的成功背後的技術原理。今年,GPT-3 的小兒子 ChatGPT 似乎更加聰明,能夠用聊天的方式與人交流,這讓更多人了解了自然語言處理領域的最新進展。在這個歷史性的時刻,身為 AI 史官,我們或許應該花點時間回顧一下最近幾年發生了什麼事。第一篇文章是以GPT-3 作為起點,所以這個系列其實是對於後GPT 時代的記錄(後GPT 書),而在探索GPT 家族的變化時,我意識到大多數故事都與Transformer 有關,因此這篇文章的名字就是Transformer 世家。

從GPT-3開始,續寫Transformer龐大家族系譜

圖1.  GPT 舊族譜

前情回顧

在正式開始介紹Transformer 世家前,我們先按照圖1 回顧過去發生了什麼事。從Word Embedding [1,2] 開始,向量(一串數字)以一種奇特但有效的方式將文字的語義包含了進來,圖2 展示這種表徵方式的說明:用數字表示的(國王- 男人女人= 女王)。以此為基礎,這龐大的 NLP(自然語言處理)家族就創立了。

從GPT-3開始,續寫Transformer龐大家族系譜

#圖2.  Word2Vec 圖示(King - Man Woman = Queen)

在這之後,他的大兒子ELMo [3] 發現了語境的重要性,例如以下兩句話:

「喔!你買了我最愛的披薩,我愛死你了!」

「啊,我可真愛死你了!你把我最愛的披薩給蹭到地上了?」

「我愛死你了」 的意思顯然不同。 ELMo 順利的通過 “給定一個模型一串詞,然後讓模型預測下一個詞和上一個詞(前後文語境)” 解決了這個問題。

與此同時,Word Embedding 的一個遠房表親發現了另一個問題—— 人在理解一句話的時候,是會有重點的關註一部分詞的,一個很明顯的現象就是我們在讀自己母語的時候很多錯字會被輕易地忽略掉,這是因為我們在理解這段話的時候注意力並不在這上面。因此,他提出了 Attention(注意力)機制 [4],但此時的 Attention 機制很初期,並不能單獨運作,因此只能依附在類似 RNN,LSTM 這種序列模型上。圖 3 展示了 attention 機制與 RNN 的結合過程,也說明了為什麼 Attention 本身無法單獨運作。這裡簡單說一下NLP 模型的工作過程,首先我們有一句話,例如“我愛你中國”,這就是五個字符,可以變成圖3 裡的x_1-x_5,然後每個字符會變成剛剛所說的word embedding (一串數字),也就是圖3 裡的h_1-h_5,然後他們再最後變成輸出,例如「I love China」(翻譯任務),也就是圖3 裡的x_1'-x_3' 。圖 3 剩下沒說的部分就是 attention 機制了,也就是圖 3 裡的 A,他相當於給每個 h 賦予了一個權重,這樣我們就知道在轉換當前這個詞的時候,哪些字比較重要了。具體的細節可以參考我最開始寫的那篇文章(從 word2vec 開始,說下 GPT 龐大的家族系譜 )。可以看出,這裡的數位表徵是整個任務的基礎,這也是為什麼 Attention 機制無法單獨運作的原因。

從GPT-3開始,續寫Transformer龐大家族系譜

圖3.  早期照片- Attention 與RNN 強強聯合(source: Attention for RNN Seq2Seq Models (1.25x speed recommended) - YouTube)

此時,作為驕傲的皇族直系親屬,Transformer 不認可這種依附他人的工作方式,在論文「Attention is all you need」(你只需要注意力機制就夠了)[5] 中提出了自己獨立的方式, 將“注意力機制” 加了一個字變成了“自註意力機制”,只用注意力機制就能生成那串數字。我們用中醫開藥來說明這個改變。最開始的Attention 機轉可以說是每種材料的劑量,但是最終去拿藥的時候,藥品是存在RNN 或LSTM 這種採藥者手裡的,我們開出的藥方當然也要基於藥房(RNN、 LSTM)裡有什麼藥。 Transformer 所做的只是將採藥權要了回來(加入了 value 矩陣),然後換了一種開藥方的方式(加入 key 和 query 矩陣)。此時,Source 可以看作一個中藥鋪子的儲物箱,儲物箱裡的藥品由地址Key(藥品名)和值Value(藥品)組成,目前有個Key=Query(藥方)的查詢,目的是取出儲物箱裡對應的Value 值(藥品),也就是Attention 數值。透過Query 和儲物箱內元素Key 的地址進行相似性比較來尋址,之所以說是軟尋址,指的是我們不只從儲物箱裡面找出一中藥物,而是可能從每個Key地址都會取出內容,取出內容的重要性(量的多少)根據Query 和Key 的相似性來決定,之後對Value 進行加權求和,這樣就可以取出最終的Value 值(一副中藥),也即Attention值。所以不少研究人員將 Attention 機制看作軟尋址的一種特例,這也是非常合理的 [6]。

從此之後,Transformer 正式開始帶領家族走向繁榮。

Transformer 繼位

其實從圖1 也可以看出,transformer 就是爺爺家族裡子嗣最旺盛的一支了,也證實了當年」Attention is all you need」 這個題目狂的確實有理有據。雖然剛剛講過他提出的自註意力機制是什麼,前面那篇文章(從word2vec 開始,說下GPT 龐大的家族系譜 ) 已經詳細講過transformer 的演化過程了,這裡還是快速給新來的同學回顧一下transformer 這個架構到底是什麼。

簡單來說,我們可以將Transformer 看作一個“演員”,對這個“演員” 來說,編碼器就像是演員的記憶,負責將台詞轉化為一個中間表示(抽象成腦海裡我們不知道是什麼的東西,也就是演員的理解),而解碼器則像是演員的表演,負責將腦海裡的理解轉化成螢幕上的展示。這裡面最重要的自註意力機制則充當了演員的專注力,能夠自動調整演員在不同位置的注意力,從而更好地理解所有台詞,使其在不同的情境中表演得更加自然流暢。

更具體一點來說,我們可以將 Transformer 看作一個大型 「語言處理工廠」。在這個工廠中,每個工人(編碼器)都負責處理輸入序列中的一個位置(比如說一個字),對其進行加工和轉換,然後將其傳遞給下一個工人(編碼器)。每個工人都有一份詳細的工作說明書(自註意力機制),其中詳細描述如何處理當前位置的輸入以及如何與前面的位置建立關聯。在這個工廠中,每個工人都可以同時處理自己的任務,因此整個工廠可以有效地處理大量的輸入資料。

Transformer 一登場,直接因為其強大的實力和兩個爭氣的兒子(BERT 和 GPT)毫無懸念的奪下皇位。 BERT (Bidirectional Encoder Representations from Transformers) [1] 繼承了 Transformer 的 Encoder 部分,贏得了前半程比賽,但因為其限制性,在通用性上輸給了 GPT。老實的 GPT (Generative Pre-trained Transformer)[7-10] 繼承了 Decoder 部分,老實實從頭學起,學習人類的交流方式,最終在後半程實現了反超。

當然,Transformer 的野心顯然不止於此,”Attention is all you need”,指的不只是 NLP 領域。在介紹 GPT 和 BERT 之間的恩怨情仇之前,先看看他們老當益壯的父親都做了些什麼吧。

新族譜- 諸侯林立

「父親,時代變了。我們家族會因為我的努力,走上真正的輝煌。」

——Transformer

在了解了Transformer 的機制之後,我們可以來看看在Transformer 的強力發展下,Transformer 世家現在發展到什麼程度了(新族譜)。從前面的 “演員” 例子可以看出,Transformer 代表了一種符合人類邏輯的學習方式,因此它不僅可以處理文字,還可以處理圖像。圖 2 總結了 Transformer 世家強大的家族背景。除了讓 GPT 和 BERT 在最開始的 NLP(自然語言處理)領域繼續開疆裂土外,Transformer 也開始涉足電腦視覺領域。它的小兒子(Google提出的 ViT 等)也在這個領域發光發熱。 2021 年,Vision Transformer 迎來了大爆發,一大批基於 Vision Transformer 的工作席捲了電腦視覺任務。自然而然地,作為一個世家,Transformer 家族總是會互通有無,連接文字和圖像(AI 作畫)的 CLIP 應運而生。 2022 年底,Stable Diffusion 在 ChatGPT 之前風光無限。除此之外,CLIP 也為 Transformer 世家打開了多模態的新大門。除了文字和圖像,文字是否也能做音樂,是否也能畫圖?多模態和多任務 Transformer 也應運而生。總之,每個領域都是一個諸侯,一個 NLP 領域白手起家的 Transformer,在努力發展後成了可以分封諸侯的 「周王」。

諸侯林立,當是盛世。

從GPT-3開始,續寫Transformer龐大家族系譜

 圖4.  Transformer 世家日益繁榮的家族族譜

牛刀小試- Vision Transformer [12]

在說GPT 之前,還是要先說說Transformer 做出的第一個大膽嘗試- 那就是讓小兒子去摻和CV 領域。先看小兒子生平:

  • 其父親 Transformer 出生於 2017 年一篇叫做 Attention is All You Need 的論文中。
  • 2019 年,Google 提出了 Vision Transformer(ViT)的架構,可以直接處理影像,而不需要使用卷積層(CNN)。論文題目一如既往的直白:「An image is worth 16x16 words」(一張圖片就是 16*16 個字)。如圖5 所示,它的基本思想是把輸入的圖像分成一系列的小塊,每個小塊可以理解成過去處理文章時候的一個文字,然後把這些小塊轉換成向量,就像在普通的Transformer 中處理文字一樣。如果說在自然語言處理(NLP)領域,Transformer 的注意力機制試圖捕捉文本中不同單字之間的關係,那麼在電腦視覺(CV)領域,ViT 則試圖捕捉圖像中不同部分之間的關係。

從GPT-3開始,續寫Transformer龐大家族系譜

################15.  ViT 如何處理圖片(source: Are Transformers better than CNN's at Image Recognition? | by Arjun Sarkar | Towards Data Science)##################在那之後,各種基於Transformer 的模型層出不窮,而且在相應的任務上都取得了超越CNN 的成績。那 Transformer 的優勢是什麼呢,我們先回到電影的例子上,看看 Transformer 和 CNN 的差異:######

想像你是一位導演,要拍攝一部電影,你需要給演員安排好位置,把不同的元素放在合適的位置上,比如說,將演員放在適當的背景下,使用合適的光線,使整個畫面看起來和諧美觀。對 CNN 來說,它像是一個專業的攝影師,會逐像素地拍攝每一幀畫面,然後從中提取出一些邊緣、紋理等低層次特徵。然後,它將這些特徵組合起來,形成更高層次的特徵,例如人臉、動作等,最終得到一幀畫面。隨著電影的進行,CNN 會不斷重複這個過程,直到完成整部電影的拍攝。

而對ViT 來說,它像是一個藝術指導,會把整個畫面看作是一個整體,考慮到背景、光線、顏色等因素,為每個演員分配合適的位置和角度,創造出完美的畫面。然後,ViT 會把這些資訊匯總成一個向量,並使用多層感知器對它們進行處理,最終得到一幀畫面。隨著電影的進行,ViT 會不斷重複這個過程,直到完成整部電影的創作。

回到影像處理任務上,假設我們有一張 224x224 像素的貓的圖片,我們想要用一個神經網路對它進行分類。如果我們使用傳統的捲積神經網絡,它可能會採用多個卷積層和池化層來逐漸縮小影像的大小,最終得到一個較小的特徵向量,然後透過全連接層進行分類。這種方法的問題是,在卷積和池化的過程中,我們會逐漸失去影像中的信息,因為我們不能同時考慮所有像素點之間的關係。此外,由於卷積和池化層的順序限制,我們無法進行全域的資訊互動。相較之下,如果我們使用 Transformer 和 self-attention 機制來處理這個影像,我們可以直接將整個影像視為一個序列,並對它進行 self-attention 計算。這種方法不會遺失任何像素點之間的關係,並且可以進行全域的資訊互動。

此外,由於self-attention 運算是可並行化的,因此我們可以同時處理整個影像,大大加快了運算速度 。舉個例子,假設我們有一個句子:「I like to eat ice cream」, 其中包含 6 個單字。現在假設我們正在使用一個基於自註意力機制的模型來理解這個句子,Transformer 可以:

  • 最小化每層的總計算複雜度:基於自註意力在機制的模型中,我們只需要計算每個單字與所有其他單字之間的注意力權重,這樣每一層的計算量只取決於輸入長度而不是隱藏層的大小。在這個例子中,輸入長度為 6 個單詞,因此每一層的計算複雜度只取決於這 6 個單字的數量。
  • 最大化可並行化的計算量:基於自註意力機制的模型可以同時計算每個單字與其他所有單字之間的注意力權重,因此計算可以高度並行化,從而加速模型的訓練和推論。

然而,ViT 需要大規模資料集和高解析度影像才能發揮其全部潛力,因此,雖然Vision Transformers 在CV 領域表現不凡,CNN 在電腦視覺領域的應用和研究仍然更為廣泛,並且在目標檢測和分割等任務中具有優勢。

但沒關係,你做的已經夠好了,你父親涉足 CV 的初衷也不是為了取代 CNN,他有更宏大的目標。

這個目標的基礎,就是前面我說的 「此外」。

初露崢嶸- CLIP [13]

#前面我說過,Transformer 還有更宏大的目標,那就是“大模型”,超級超級大的模型。除了我在前一篇文章裡說的 transformer 可以更好地獲得全局資訊外,更小的運算複雜度和更好的平行度成為了支撐大模型的基礎。

2021 年,除了Vision Transformer 有了長足進展以外,GPT 那一支還在緊鑼密鼓的籌備GPT3.5,閒不下來的勞模Transformer 又引領了一個新的高潮—— 連結文本和圖像。這個高潮也為 “大模型” 計劃打響了除 NLP 領域外的第一槍。此時,Transformer 在視覺任務上的缺點,在這裡反而變成了優勢。 「ViT 需要大規模資料集和高解析度影像才能發揮其全部潛力 「如果換個說法,就是 「ViT 可以處理大規模資料集和高解析度影像」。

老規矩,先說 CLIP 是什麼。

CLIP 的全名是 Contrastive Language-Image Pre-Training,很明顯其基本想法就是傳統 CV 領域裡的對比學習 (Contrastive learning)。當我們學習新知識時,我們會閱讀不同的書籍和文章,並獲得大量的資訊。但是,我們並不是只記住了每個書籍或文章中的所有單字和句子。相反,我們會試圖找到這些資訊之間的相似性和差異。例如,我們可能會注意到在不同的書中,某個主題的描述方式和關鍵概念的表達方式可能會有所不同,但它們所描述的概念本質上是相同的。這種尋找相似性和差異的方式就是對比學習的基本想法之一。我們可以將每本書或文章視為不同的樣本,而相同主題的書籍或文章可以被視為來自同一類別的不同實例。在對比學習中,我們會訓練模型來學習如何區分這些不同類別的樣本,以此來學習它們的相似性和差異性。

接下來更學術一點,假設你想訓練一個模型來辨識汽車品牌。你可以有一組標籤的汽車圖像,每個圖像都有一個品牌標籤,例如 「賓士」、「BMW」、「Audi」 等等。在傳統的監督式學習中,您可以將圖像和品牌標籤一起輸入模型,並讓模型學習如何預測正確的品牌標籤。

但在對比學習中,你可以使用未標記的圖像來訓練模型。假設你有一組未標記的汽車影像,你可以將這些影像分成兩組:正樣本和負樣本。正樣本是同一品牌的不同角度的圖像,而負樣本是不同品牌的圖像。接下來,就可以使用對比學習來訓練模型,以便將同一品牌的正樣本彼此靠近,而將不同品牌的負樣本彼此遠離。這樣,模型可以學會從圖像中提取品牌特定的特徵,而不必明確地告訴它每個圖像的品牌標籤。

很明顯,這是一個自監督學習模型,CLIP 也是一個類似的自監督學習模型,只不過它的目標是將語言和圖像聯繫起來,從而使電腦能夠理解文字和圖像之間的關係。

想像你正在學習一組詞彙表,其中每個單字都有其定義和對應的圖像。對於每個單字和其對應的圖像,你可以將它們視為一對(pair)。你的任務是找出這些單字和圖像之間的相互關係,即哪些單字與哪些圖像匹配,哪些不匹配。

如圖 6 所示,對於對比學習演算法而言,這些單字和圖像對就是所謂的 「anchor」(錨定樣本)和 「positive」(正樣本)。 「anchor」 指的是我們想要學習的對象,而 “positive” 則是與 “anchor” 相符的樣本。與之相對的是 “negative”(負樣本),即與 “anchor” 不符的樣本。

在對比學習中,我們將 “anchor” 和 “positive” 組成一對,並嘗試將它們區分開來。同時,我們也會將 “anchor” 和 “negative” 組成一對,並嘗試將它們區分開來。這個過程可以理解為是在尋找 “anchor” 和 “positive” 之間的相似性,以及在排除 “anchor” 和 “negative” 之間的相似性。

從GPT-3開始,續寫Transformer龐大家族系譜

圖 6. 比較學習(Contrastive Learning)圖示 [14]。 Anchor 就是原始影像,positives 一般是經過裁切、旋轉後的原始影像,或是已知的相同類別的影像,negatives 可以被簡單粗暴的定義為未知的影像(有可能是同一類別),或是已知的不同類別的圖像。

為了達到這個目標,CLIP 首先對大量的圖像和文字進行預訓練,然後使用預訓練的模型進行下游任務,例如分類、檢索和生成等。 CLIP 模型採用了一種新的自我監督學習方法,即同時處理文字和圖像,透過訓練來學習如何將它們連結起來。它在文字和圖像之間共享注意力機制,並使用一組簡單的可調參數來學習這個映射。它使用的是基於 transformer 的文字編碼器和基於 CNN 的圖像編碼器,然後計算圖像和文字嵌入之間的相似度。 CLIP 透過使用對比學習目標來學習關聯圖像和文本,該目標最大化資料中存在的圖像 - 文本對之間的一致性,並最小化隨機採樣的圖像 - 文本對之間的一致性。

從GPT-3開始,續寫Transformer龐大家族系譜

圖 7. CLIP 圖示 [13]。相較之下圖 6,可以簡單理解成圖 6 中的 positive 和 negative 都是文字了。

舉個例子,如果我們想用CLIP 來辨識一張圖片是否為"紅色的沙灘",我們可以輸入這個文字描述和一張圖片,CLIP 將產生一個向量對來表示它們的聯繫。如果這個向量對的距離很小,那就表示這張圖片可能是 "紅色的沙灘",反之則不是。透過這種方法,CLIP 可以實現影像分類和影像搜尋等任務。

回到全稱,CLIP 的最後一個詞是pretraining,所以其本質還是預訓練模型,但是它可以用於涉及匹配圖像和文本的各種下游任務,例如圖像分類、零樣本學習和圖像描述生成等。例如,CLIP 可用於將圖像分類為自然語言標籤給出的類別,例如 “狗的照片” 或 “風景畫”。 CLIP 也可用於透過使用以 CLIP 提取的圖像特徵為條件的語言模型來為圖像產生說明文字。此外,CLIP 可用於透過使用以 CLIP 提取的文字特徵為條件的生成模型從文字生成圖像。

DALL-E & Stable Diffusion

在 CLIP 的幫助下,一個新的諸侯崛起了 - 他叫 AIGC(AI generated content)。其實 ChatGPT 本質上也是 AIGC 的一種,但在這個小節,我們主要說的是 AI 作畫。先來看看AI 作畫這個小家族的發展史:

  • 2021.01,OpenAI 發布DALL-E [15](AI 作畫軟體),它改進了GPT-3從而讓GPT-3 產生圖像,而不是文字(Image Transformer Network)
  • 幾乎同時(2021.01),OpenAI 發布CLIP [13]
  • #2021.05,Google Brain 和DeepMind 發表Stable diffusion [17],並持續迭代新版本。它採用 frozen CLIP 文字編碼器來根據文字提示調整模型。 Stable diffusion 將影像生成過程分解為運行時的 「擴散」(diffusion)過程。從僅有的噪聲開始,它逐漸修正圖像,直到沒有任何噪聲,讓其更接近提供的文本描述。 
  • 2022.04,DALL-E-2 [16] 發佈。它可以根據自然語言的描述創建逼真的圖像和藝術品。 DALL-E-2 採用由先驗和解碼器組成的兩部分模型。先驗是一個 GPT-3 模型,根據文字提示產生 CLIP 影像嵌入。解碼器是一個擴散模型,根據 CLIP 嵌入產生影像。 DALL-E-2 也可以進行 outpainting, inpainting,以及對現有影像的變更。

這個家族的脈絡可見一斑,大哥 CLIP 連結了圖像和文本,其雙胞胎兄弟 DALL-E 順勢提出了文本到圖像的任務。為了改進這個任務,一個遠房表親 Stable diffusion 改進了生成圖像的演算法,最後 DALL-E-2 取長補短,結合了 GPT-3,CLIP 以及 stable diffusion 的優勢,完成了自己的 AI 作畫系統。

對於最開始的 DALL-E, 假設你是一位畫家,而 DALL-E 就是你的工具箱。在這個比喻中,工具箱中有兩個主要的工具:一個是畫筆,另一個是調色盤。

畫筆是 DALL-E 的解碼器,它可以將給定的文字描述轉換為一張圖像。調色盤則是 DALL-E 的編碼器,它可以將任意的文字描述轉換為一個特徵向量。

當你得到一句文字描述時,你會先用調色盤來產生一個特徵向量。然後你就可以拿起畫筆,並使用特徵向量來產生一張與描述相符的圖像。當你需要細節時,你會使用更精細的畫筆,反之則會使用更粗糙的畫筆。

與畫家不同的是,DALL-E 使用的是神經網絡,而不是畫筆和調色板。這個神經網路使用了一個名為 Image Transformer Network 的結構。在生成圖像時,DALL-E 使用先前提到的 GPT-3 模型產生與文字描述相對應的 CLIP 圖像嵌入。然後,DALL-E 使用束搜尋演算法產生一系列可能的圖像,這些圖像與輸入的文字描述相匹配,並將它們送入一個解碼器來產生最終的圖像。這種嵌入向量是透過使用稱為對比學習的技術來訓練的,該技術可以將相似的圖像和文字嵌入到相鄰的空間中,以便更容易將它們組合起來。 注意,這裡 DALLE 並沒有直接包含 CLIP,但它使用了 CLIP 的文字和圖像嵌入來訓練變換器和 VAE

至於在生成影像過程中使用的束搜尋演算法,實際上是一種貪心搜尋演算法,它可以在有限的候選集合中找到最優的序列。束搜尋的基本概念是,每次擴展目前序列時,只保留機率最高的 k 個候選(k 稱為束寬度),並捨棄其他低機率的候選。這樣可以減少搜尋空間,提高效率和準確度。 DALLE 中使用束搜尋產生影像的具體步驟如下:

  • 將輸入的文字描述編碼為向量,並作為變換器模型的初始輸入。
  • 從一個特殊的開始符號開始,逐像素地產生影像序列。每次產生一個像素時,都用變換器模型預測下一個像素的機率分佈,並從中選擇機率最高的 k 個候選像素,作為目前序列的延伸。
  • 對每個延伸後的序列,計算其累積機率,並保留機率最高的 k 個序列,捨棄其他序列。
  • 重複步驟 2 和 3,直到產生一個特殊的結束符號或達到最大長度限制。
  • 傳回機率最高的序列作為最終產生的影像。

同樣一幅畫,stable diffusion 是怎麼畫的呢?當我們想要畫一幅藝術作品時,通常需要一個好的構圖和一些具體的元素來建構。 Stable diffusion 就是這樣一種產生影像的方法,它將影像生成的過程分成了兩個部分:擴散過程和重構過程。擴散過程可以想像成是將一堆零散的畫筆、顏料和畫板混合在一起,慢慢地在畫板上創造出越來越多的元素。在這個過程中,我們並不知道最終畫面會是什麼樣子,也無法確定每個元素最終的位置。但是,我們可以逐漸添加和調整這些元素,直到整幅畫完成。然後,輸入的文字描述就像是我們對於要畫的作品的大致描述,透過束搜尋演算法來在文字描述和生成的圖像之間進行精細的匹配。這個過程就像是我們不斷地修改​​和調整元素,讓它們更能配合我們想要的畫面。最終,生成的圖像將與文字描述緊密匹配,呈現我們想像中的藝術作品。

如圖 8 所示,這裡的擴散模型是一種生成模型,它透過逐漸向資料添加噪聲,然後逆向恢復原始資料的過程來學習資料的分佈。 stable diffusion 使用了一個預先訓練的變分自編碼器(VAE)來將影像編碼成低維潛在向量,並使用一個基於變換器的擴散模型來從潛在向量產生影像。 stable diffusion 還使用了一個凍結的 CLIP 文字編碼器來將文字提示轉換成圖像嵌入,從而對擴散模型進行條件化。

從GPT-3開始,續寫Transformer龐大家族系譜

圖 8. Stable Diffusion 流程。首先是上面的箭頭,一張圖片被不斷加入噪聲,最後變成純噪聲圖,然後走下面的箭頭,逐漸消除噪聲,然後重建最開始的圖片。 (來源:From DALL・E to Stable Diffusion: how do text-to-image generation models work? | Tryolabs)

值得注意的是,Stable Diffusion 中的擴散過程是一種隨機的過程,因此每次生成的圖像都會有所不同,即使是相同的文字描述。這種隨機性使得產生的影像更加多樣化,同時也增加了演算法的不確定性。為了讓生成的影像更加穩定,Stable Diffusion 使用了一些技巧,例如在擴散過程中加入逐步增加的噪聲,以及使用多次重構過程來進一步提高影像品質。

Stable Diffusion 在DALL-E 的基礎上有了很大的進步:

  • 解析度:stable diffusion 可以生成高達1024×1024 像素的影像,而DALL-E 目前只能產生256×256 像素的影像。
  • 速度:stable diffusion 需要進行多次迭代才能產生影像,因此速度較慢。 DALL-E 則可以一次產生影像,因此速度較快。
  • 靈活性:stable diffusion 可以對現有的圖像進行擴充、修補和變化,而 DALL-E 只能從文字提示產生圖像。
  • 真實性:stable diffusion 可以產生更真實和細緻的圖像,尤其是在複雜和抽象的描述下。 DALL-E 則可能會產生一些不符合物理法則或常識的圖像。

這也是為什麼 DALL-E-2 也將擴散模型加入其模型中去了。

潛伏的強者- GPT3.5 [18] 

#& Instruct GPT [19]

在其他諸侯把改革開展的如火如荼的時候,GPT 這一支也一直默默努力著。開頭說過,GPT-3 剛發布的時候已經有很強的能力了,但是使用方式不那麼“非技術人員友好”,所以掀起的浪花都是在技術界,這些本就不算很熱烈的浪花,又因為它不低的收費而日益消散。

Transformer 十分不滿意,GPT 想了想,那就改革吧!

第一個響應改革號召,踏出第一步的是GPT 3.5:

「我比較笨,想不出什麼好辦法改革,那就先把基礎打牢吧。」

#於是,GPT3.5 基於GPT-3 ,使用了一種叫做Text Code 的訓練數據,即在文字資料的基礎上,增加了一些程式碼的資料。簡單來說,就是用了更大的資料集。這樣可以使模型更好地理解和產生程式碼,提高模型的多樣性和創造性。 Text Code 是一種基於文字和程式碼的訓練數據,它是由 OpenAI 從網路上收集並整理的。它包括兩部分:文本和代碼。文本是一些用自然語言描述的內容,如文章、評論、對話等。程式碼是一些用程式語言寫的內容,如 Python、Java、HTML 等。

Text Code 訓練資料可以讓模型更好地理解和產生程式碼,提高模型的多樣性和創造性。例如,在程式設計任務中,模型可以根據文字描述產生相應的程式碼,並且程式碼具有較高的正確性和可讀性。在內容生成任務中,模型可以根據程式碼描述產生相應的文本,並且文本具有較高的一致性和有趣性。 Text Code 訓練資料也可以讓模型更好地處理多語言,多模態,多領域的資料和任務。例如,在語言翻譯任務中,模型可以根據不同語言之間的對應關係,進行準確且流暢的翻譯。在圖像生成任務中,模型可以根據文字或程式碼描述,產生相應的圖像,並且圖像具有較高的清晰度和逼真度。

第二個響應號召的是Instruct GPT,他發現了新的問題:

「要跟人類打成一片,我們就需要更有效的聽取他們的意見。」

#

於是,出現了大名鼎鼎的新晉外援,也就是 RLHF 訓練策略。 RLHF 是一種基於強化學習的訓練策略,它的全名為 Reinforcement Learning from Human Feedback。它的核心思想是在訓練過程中,給模型一些指令,並根據模型的輸出給予獎勵或懲罰。這樣可以使模型更好地遵循指令,提高模型的可控性和可信度。其實 GPT-3.5 也有人類回饋(Human Feedback),那加入了強化學習(Reinforcement learning)之後,發生了什麼改變呢?

  • GPT3.5 的人類回饋是直接用於微調模型的參數,而Instruct GPT 的RLHF 是用來訓練一個獎勵模型,然後用這個獎勵模型來指導模型的行為。
  • GPT3.5 的人類回饋是基於單一輸出的評價,而 Instruct GPT 的 RLHF 是基於多個輸出之間的比較。
  • GPT3.5 的人類回饋只進行了一次,而Instruct GPT 的RLHF 可以進行多次迭代,不斷收集新的比較數據,訓練新的獎勵模型,優化新的策略。

也就是說,更少的人力投入,但是為模型帶來了更大的效益。

從GPT-3開始,續寫Transformer龐大家族系譜

#圖9. RLHF 流程(圖源:GPT-4 (openai.com))

#如圖9 所示,RLHF 訓練策略分為兩個階段:預訓練和微調。在預訓練階段,模型使用和 GPT-3 相同的資料集進行無監督學習,學習語言的基本知識和規律。在微調階段,模型使用一些手動標註的資料進行強化學習,學習如何根據指令產生適當的輸出。

人工標註的資料包括兩個部分:指令和回饋。指令是一些用自然語言描述的任務,如 “寫一首關於春天的詩” 或 “給我一個關於狗的笑話”。回饋是一些用數字表示的評分,如 “1” 表示很差,“5” 表示很好。回饋是由人類標註者根據模型的輸出給出的,反映了模型輸出的品質和合理性。

在微調階段,模型使用一個稱為 Actor-Critic 的演算法進行強化學習。 Actor-Critic 演算法包含兩個部分:Actor 和 Critic。 Actor 是一個生成器,它根據指令產生輸出。 Critic 是一個評估器,它根據回饋評估輸出的獎勵值。 Actor 和 Critic 之間相互協作和競爭,不斷地更新自己的參數,以提高獎勵值。

RLHF 訓練策略可以讓模型更能遵循指示,提高模型的可控性和可信度。例如,在寫作任務中,模型可以根據指令產生不同風格和主題的文本,並且文本具有較高的連貫性和邏輯性。在對話任務中,模型可以根據指令產生不同情緒和語氣的回复,並且回复具有較高的相關性和禮貌性。

終於,經過前輩們的改革積累,GPT 家族裡更靈活的小兒子ChatGPT 覺得是時候了,順勢基於Instruct GPT 推出了更貼合人類交流方式的對話模式,直接在人類社會掀起巨大的浪花(幾億用戶),而且它又是免費的,GPT 家族經過幾年的蟄伏,終於一鳴驚人,成為Transformer 世家最受寵的皇子,直接在繼位之爭上一舉奪魁,成為太子。

同時,對ChatGPT 來說,太子還不是全部,ChatGPT 繼承了Transformer 巨大的野心:

「現在的局面太亂了,強大的王朝不需要這麼多諸侯,是時候統一他們了。“

統一諸侯– 大模型時代

GPT-4:” 這個時代,是大模型的時代,我說的。」(bushi)

#

現在的 ChatGPT 已經是基於 GPT-4 的大門面了。 GPT-4 因為懼怕於其競爭對手的快速反應,其實大部分技術細節都是封閉的。但從其功能上,已經看出 GPT 家族統一各諸侯的野心了,除了文字對話以外,GPT-4 也加入了 AI 作圖功能。 GPT 家族從過去幾年的蟄伏經驗中悟出了一個道理,大模型即正義,並想將這個道理推廣到各個領域。

如果深究這個道理背後的底氣,那可能就是大模型訓練的方式吧。 GPT-3 是目前​​最大的語言模型之一,它擁有1750 億個參數,比其前身GPT-2 多了100 倍,比之前最大的同類NLP 模型要多10 倍,也可以算是大預言模型的先驅者了。

所以,我們先來看看GPT-3 的模型架構和訓練方法是如何實現這樣的規模和性能的:

  • 分散式訓練:GPT-3 使用了分散式訓練的方法,即將模型和資料分散在多個運算節點上,並透過通訊協定進行協調和同步。這樣可以利用多個節點的運算資源和記憶體空間,加速模型訓練的過程,並支援更大規模的模型和資料。
  • GPT-3 使用了約 2000 個 GPU 節點來進行分散式訓練,每個節點都有 多個 GPU,每個 GPU 都有 相同 的記憶體。
  • GPT-3 使用了兩種分散式訓練的方法:資料並行和模型並行。
  • 資料並行是指將資料分成多個子集,每個節點處理一個子集,並在每個節點上更新模型的參數,然後在所有節點間同步參數。
  • 模型並行是指將模型分成多個部分,每個節點處理一個部分,並在每個節點上計算部分的輸出和梯度,然後在所有節點間傳遞輸出和梯度。
  • GPT-3 使用了一種混合的資料並行和模型並行的方法,即在每個節點內部使用資料並行,在不同節點之間使用模型並行。這樣可以充分利用 GPU 的運算能力和通訊頻寬,同時減少通訊開銷和記憶體佔用。
  • 啟動函數檢查點:GPT-3 使用了一種稱為激活函數檢查點的技術,即在模型的前向傳播過程中, #只保存部分層的激活函數的值,而不是所有層的值#。這樣可以節省顯存空間,因為激活函數的值佔據了大部分的顯存。在模型的反向傳播過程中,如果需要用到某些層的激活函數的值,就重新計算它們,而不是從顯存中讀取。這樣可以犧牲一些計算時間來換取更多的顯存空間,從而支援更大規模的模型和批次大小。
  • 稀疏注意力機制:GPT-3 使用了一種叫做稀疏注意力機制的技術,即在計算自註意力時,只考慮部分輸入序列中的詞,而不是所有字。這樣可以減少計算量和記憶體佔用,因為自註意力的複雜度和輸入序列的長度成平方關係。 GPT-3 使用了一種基於局部視窗和全局區塊的稀疏注意力機制,即將輸入序列劃分為多個區塊,並且每個區塊只與相鄰的幾個區塊進行注意力計算,同時每個區塊還與一些隨機選擇的全局塊進行注意力計算。這樣可以確保模型既能捕捉局部訊息,又能捕捉全局訊息,同時也能降低計算複雜度和記憶體佔用。

看到這裡,ChatGPT 眉頭微皺,似乎有些不滿意GPT-3 的方案:「這還不夠。」

##"大模型確實是當下的趨勢,但是不應該只是為了競爭而盲目追求規模。在訓練大模型之前,我們需要考慮更多的細節和技術挑戰,才能確保其能夠穩定、高效地運行,並產生有用的結果。"

「首先,選擇合適的訓練超參數和模型初始化非常關鍵。學習率、批次大小、迭代次數等超參數的選擇對模型的收斂速度、穩定性和性能影響重大。而模型初始化則決定了訓練開始前的權重值,會影響到最終結果的品質。這些參數需要根據經驗實驗或理論分析進行仔細調整,以確保模型的最佳表現。」#

“其次,为了获得高吞吐量并避免瓶颈,我们需要优化训练过程中的各个环节,比如硬件配置、网络带宽、数据加载速度和模型架构等。优化这些环节可以显著提高模型的处理速度和效率。例如,使用更快的存储设备或数据格式可以减少数据加载时间;使用更大的批量大小或梯度累积可以减少通信开销;使用更简单或更稀疏的模型可以减少计算时间等等。”

“最后,训练大模型时可能会遇到各种不稳定和失败的情况,例如数值错误、过拟合、硬件故障、数据质量问题等等。为了避免或恢复这些问题,我们需要密切监控模型的行为和性能,并使用调试工具和技术来识别和修复任何错误或缺陷。此外,我们还可以使用各种安全措施和防护机制,如裁剪、正则化、丢弃、噪声注入、数据过滤、数据增强等等,以提高模型的鲁棒性和可靠性。”

“在这个时代,大模型的确是重要的,但是仅仅是追求规模并不能让模型产生有用的结果。只有经过深思熟虑的训练和优化,才能让大模型真正发挥其潜力,为人类带来更多的价值。”

太子说得对。

没落的强诸侯 - BERT

最后,瘦死的骆驼比马大,虽然 BERT 最近被 GPT 压过风头,但毕竟是曾经的强诸侯,在 GPT 势不可挡的发展下,BERT 依然保留了自己的一份封地。当谈及自然语言处理模型的时候,BERT(Bidirectional Encoder Representations from Transformers)一度是非常受欢迎的模型,因为它在很多任务上都表现得非常出色。当它第一次发布时,它几乎是无人能敌的,甚至比 GPT 更为成功。这是因为 BERT 的设计与 GPT 有着不同的目标和优势。

BERT 的目标是将上下文建模的能力推到一个全新的高度,以便更好地支持下游任务,例如文本分类和问答。它通过训练一个双向 Transformer 编码器来实现这个目标。这个编码器能够同时考虑输入序列的左侧和右侧,从而获得更好的上下文表示,因此 BERT 能够对上下文更好地进行建模,提高了模型在下游任务中的表现。

但是,随着时间的推移,GPT 系列模型的出现使得 GPT-3 在多项任务上超越了 BERT。一个可能的原因是 GPT 系列的模型在设计上更加专注于生成性任务,比如文本生成和对话系统,而 BERT 则更注重分类和问答任务。此外,GPT 系列模型使用了更大的参数和更多的数据进行训练,这也使得它们能够在更广泛的任务上取得更好的表现。

当然,BERT 仍然是一个非常有用的模型,特别是对于一些需要对文本进行分类或回答问题的任务。而 GPT 系列的模型则更适合用于生成性任务,例如文本生成和对话系统。总体来说,这两个模型都有它们独特的优势和局限性,我们需要根据具体任务的需求来选择适合的模型。 

夺嫡之争 - 来势汹汹的 Segment Anything Model (SAM) [20]

前面说过,在大哥 GPT 默默努力的时候,劳模 Transformer 在 CV 领域(ViT)和多模态领域 (CLIP) 都掀起了不小的浪花,但是最终都成为了经验宝宝,被老父亲 Transformer 教给了受宠的太子 GPT,最终成就了 GPT-4 的所谓大一统。

骨子里流淌着 Transformer 血液的 ViT 和 CLIP 当然很不开心:“王侯将相宁有种乎?大哥不是学我们吗,我们也可以学他。” 

“但是,他在 NLP 领域太强大了,我们要找个新的战场。”

于是,SAM 横空出世。在官网,他们自己是这么描述的:

Segment Anything Model (SAM): a new AI model from Meta AI that can "cut out" any object, in any image, with a single click

簡單來說,我們可以將 SAM 看作一個高效的 “影像剪輯大師”,它能夠透過各種輸入提示來精確地識別和分割影像中的各種物件。例如,當我們在圖像中用滑鼠點擊一個點時,SAM 會像一個經驗豐富的畫家一樣,自動剪下該點所在的物件;當我們輸入「貓」 這個字時,SAM 就會像一個聰明的偵探一樣,自動找出並剪切出圖像中所有的貓;當我們給SAM 一個目標檢測框時,SAM 就會像一個熟練的手術醫生一樣,準確地剪切出框內的對象。 SAM 的 零樣本泛化能力使其成為一個真正的「通用剪輯大師」。這意味著無論是常見的對象,如汽車、樹木和建築,還是罕見的對象,如恐龍、外星人和魔法棒,SAM 都可以毫不費力地識別和剪切。這種強大的能力源自於其先進的模型設計和龐大的資料集。我從原論文選了四張很複雜的場景實例(圖 10),說明了 SAM 到底可以做什麼。

從GPT-3開始,續寫Transformer龐大家族系譜

圖 10. SAM 的效果實例。圖片裡每個顏色的東西你都可以剪輯提取出來,相當於一個高效的 PS 大師(圖像剪輯大師)。

簡單來說,以前別人跟我們眉飛色舞地提需求的時候,我們總要無奈地問一句,先等一下,你們能提供什麼樣的數據?現在不需要了,至少在 CV 領域,已經更貼近非技術人群對 AI 的理解了

為了實現上面說的強大能力,我們來看看ViT 和CLIP 是如何大聲密謀的:

ViT: 「我雖然之前主要是做圖像分類任務,但我的架構同樣適用於圖像分割。因為我是利用Transformer 架構將圖像分解成一系列塊然後對其進行並行處理的,如果集成我的優勢,SAM 就可以繼承我並行處理和全局注意力的優勢,從而實現高效的圖像分割。」

CLIP:「好呀,那我就帶著我聯合訓練的方法入股,基於這個思想, SAM 也可以處理不同類型的輸入提示(問題提示和視覺提示)。」

#於是,SAM 的模型架構成型了(圖11),ViT 用來做image encoder(影像編碼器),而CLIP 來編碼prompt(提示)的訊息。想法是好的,具體該怎麼做呢 —— 當然是學習大哥啦!

「我們想要利用預先訓練的語言模型來做圖像分割任務,就像用文字提示(prompt)來讓語言模型產生或預測文字一樣。有了CLIP,我們的提示就可以很豐富了,可以是一些point (點)、box(框)、mask,還有Text (文本),它們告訴語言模型要在圖像中分割出什麼。我們的目標就是,給定任何提示,都能得到一個有效的分割mask (分割結果)。有效的mask 意味著,即使提示有歧義(比如說襯衫還是人),輸出也應該是其中一個對象的合理mask。這就像大哥GPT (語言模型)對一個有歧義的提示也能給出一個連貫的回應一樣。我們選擇這個任務,因為它可以讓我們用一種自然的方式來預訓練語言模型,並且透過提示來實現零樣本遷移到不同的分割任務上。」

從GPT-3開始,續寫Transformer龐大家族系譜

#圖11. SAM 模型架構

至於結果,前面提到的其強大能力已經證實了這個想法的可行性。但是,不得不提的是,雖然 SAM 確實不再需要重新訓練模型,但像 chatGPT 剛推出時一樣,他還是有一些限制的。在論文的Limitation 部分,作者頁明確指出了SAM 的一些限制和不足,例如在細節、連結性、邊界等方面的缺陷,以及在互動式分割、即時性、文字提示、語義和全景分割等任務上的挑戰,同時也承認了一些領域專用工具的優勢。

舉個例子,我在demo 裡做了兩個簡單的測試:一個是醫療影像領域的病灶檢測,因為病灶太小了,很難檢測到;第二個是人像切割,切出來的人像乍看不錯,但髮絲還是不是很自然,仔細看還是看得出來切割痕跡。

當然,這畢竟是個很好的開始,這小哥倆創業未半,還在努力,要啥自行車?所以,這場奪嫡的結果如何,還是讓我們拭目以待吧!

總結 

Transformer 世家的龐大家族顯然不是這篇文章可以說明的,當談到基於Transformer 的成果時,我們可以看到這個領域的持續創新:Vision Transformer(ViT)展示了Transformer 在電腦視覺領域的成功應用,它可以直接處理影像像素數據,不需要手工特徵工程。 DALL-E 和 CLIP 則將 Transformer 應用於影像生成和影像分類任務,展示了它在視覺語義理解中的優越表現。 Stable Diffusion 則提出了一個穩定的擴散過程,可以對機率分佈進行建模,這可以應用於影像分割、生成等任務。這些成果共同揭示出 Transformer 模型的廣泛應用前景,讓我們不得不承認,未來某一天,可能真的」Attention is all you need」。

總之,我們可以從這些成果中看到人工智慧領域持續創新的活力。無論是 GPT 或 BERT,或是 Vision Transformer、DALL-E、CLIP、Stable diffusion 等,這些成果都代表著人工智慧領域的最新進展。

而大考(ChatGPT)當前,現在的情景大概是這樣的:

學霸們這學期好好上課,翻開書本我就能回想起當時那堂課老師說這個知識點時的音容笑貌,甚至開始規劃下學期的學習計畫。

偽學霸們天天到課,佔據前排,打開課本卻是一臉懵逼,開始跟學渣們一起“一天一本書,一周一學期”,唯一的差別就是課本不是全新的,對課本內容還有一點點記憶,不算是在完全的學習新知識。

 至於真正的學渣們… 

#「知識來,知識來,知識從四面發八方來」

其實我倒覺得,不管是偽學霸還是學渣,都應該在期末考面前保持冷靜,看看這學期講了什麼,找學霸們借一下筆記,甚至可以選擇緩考。對學霸們來說,快是水到渠成的。對偽學霸和學渣們來說,快是有害的。

在人工智慧領域的競爭中,持續創新是至關重要的。因此,作為研究員,我們應該密切關注這個領域的最新發展,並保持謙虛和開放的心態,以促進人工智慧領域的不斷進步。

以上是從GPT-3開始,續寫Transformer龐大家族系譜的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除