上車!帶你一文了解GPT-2模型(transformer語言模型可視化)

2021-01-08 讀芯術

全文共9517字,預計學習時長28分鐘

來源:Pexels

今年,各種機器學習的應用程式紛紛湧現。其中OpenAI GPT-2能夠創作出邏輯清晰且激情盎然的文章,遠遠超出了人們對當前語言模型創造力的預期,給公眾留下了深刻的印象。GPT-2並不是專門寫小說的語言架構——結構與僅含解碼器的transformer相似,但它實則是基於transformer的語言模型,規模巨大,在海量的數據集上進行訓練。本文將介紹能讓模型生成結果的架構,深入到自注意力(self-attention)層,接著會講一些僅含解碼器的transformer在語言建模之外的應用。

我之前寫過Illustrated Transformer一文,本文是對其的補充,將會更加直觀地解釋transformer的內部操作,以及是如何從初級階段演變的。希望本文使用的可視化語言會讓後文中基於transformer模型的解釋更為簡單,畢竟這些模型的內部操作會不斷演變。

目錄

· 第一部分:GPT2和語言模型

o 什麼是語言模型

o 語言模型中的transformer

o 與BERT的區別

o Transformer模塊的演變歷程

o 速成課:揭開GPT-2的面紗

o 進一步深入了解

o 小結: GPT-2

· 第二部分:詳解自注意力機制

o 不使用掩模的自注意力機制

o 1. 創建查詢、鍵和值向量

o 2. 注意力得分

o 3. 求和

o 掩模自注意力機制

o GPT-2的掩模自注意力機制

o 超越語言模型

o 你已經完成了!

· 第三部分:超越語言模型

o 機器翻譯

o 概述

o 遷移學習

o 音樂生成

第一部分:GPT2和語言模型

到底什麼是語言模型?

什麼是語言模型

通過Illustrated Word2vec,我們已經看了語言模型的樣子——其實就是一種機器學習模型,在看到句子的某部分後可以預測後面的文字。最常見的語言模型就是在手機上打字的時候,系統會依據所輸內容自動推薦接下來的文字。

在這個意義上,可以說GPT-2實則就是比手機內語言系統更龐大、更複雜的應用程式,其功能就是預測文字。OpenAI 的研究員為了實驗研究,從網上收集了40GB大的數據集(名為WebText),對GPT-2進行了訓練。就存儲大小而言,筆者使用的鍵盤軟體SwiftKey佔手機內存的78MB。而訓練的GPT-2中規模最小的也需500MB空間才能存儲其所有參數,最大的所需空間是其13倍,那也就是說存儲空間將不止6.5GB。

對GPT-2進行實驗,有一個很妙的方式——使用AllenAI GPT-2文件資源管理器。通過GPT-2,將會顯示10個可能的詞組以及各自的概率。你可以選擇一個單詞,看看接下來的那些預測,然後繼續編輯文章。

語言模型中的transformer

正如Illustrated Transformer一文中所介紹的,transformer模型最初由編碼器(encoder)和解碼器(decoder)組成——兩個都是所謂的transformer模塊的堆棧。該架構之所以合適是因為能夠處理機器翻譯,而機器翻譯是編碼-解碼架構在過去取得成功的一處問題。

後續的很多調查都發現架構要麼隱藏編碼器,要麼隱藏解碼器,而且只用一個transformer模塊的堆棧——堆得儘可能高,輸入海量的訓練文本,再進行大量運算。

這些模塊能堆多高呢?事實證明這是能區分不同規模GPT2模型的主要因素:

如圖所示,小規模的 GPT-2 模型堆疊了 12 層,中等規模的是24 層,大規模的是36 層,還有一個特大規模的堆疊了48 層。

與BERT的區別

機器人第一定律

機器人不得傷害人,也不得見人受到傷害而袖手旁觀。

GPT-2是通過transformer解碼器模塊構建的,而BERT是通過transformer的編碼器模塊構建的。下文會探討它們之間的差異,但其中最主要的一個就是GPT2會像傳統的語言模型一樣,每次輸出一個詞。我們可以試著激發一個訓練過的GPT2,令其背誦機器人第一定律:

這些模型實際操作的流程就是每次生成詞(token)後,將其添加到輸入序列。新的序列就會作為模型下一步的輸入內容。該理念稱為「自回歸(auto-regression)」,也是促成RNN高效的理念之一。

GPT2以及後來的一些模型比如TransformerXL和XLNet本質上講都是自回歸模型。但BERT是個例外,沒有自回歸,不過可以結合上下文來創作更好的文章。XLNet的出現讓自回歸重回公眾的視野,與此同時,人們也找到了另一種可以結合上下文創作的途徑。

Transformer模塊的演變歷程

最初的transformer論文介紹了兩種transformer模塊:

編碼器模塊

首先映入眼帘的是編碼器模塊:

如圖所示,原始 transformer論文中的編碼器模塊可以接受長度不超過最大序列長度(如 512 個詞)的輸入。如果序列長度小於該限制,就在其後填入預先定義的空白詞。

解碼器模塊

其次是解碼器模塊,帶有來自編碼器模塊的一個小構架模型——該層允許關注編碼器的特定片段:

兩個模塊的自注意力層之間的主要區別在於後者生成新詞的過程——不是像BERT那樣把單詞改為[mask],而是幹擾自注意力層的計算,阻止來自正在計算部分右側詞所傳遞的信息。

舉個例子,從下圖中可以看出如果要強調#4詞的路徑,只可以處理當前和先前的詞:

BERT中的自注意力和GPT-2中的掩模自注意力(masked self-attention)的區別很明顯,這點很關鍵。一般的自注意力模塊允許某位置右側的詞計算時處於最大值。而掩模自注意力會阻止這種情況發生:

僅含解碼器的模塊

延續著先前的論文,一篇名為Generating Wikipedia bySummarizing Long Sequences的論文提出了另一種能夠生成語言建模的transformer模塊排序。該模型摒棄了transformer的編碼器,所以,可以稱其為「Transformer-Decoder」。它是早期基於transformer的語言模型,由6個transformer 解碼器模塊組建的堆棧構成:

解碼器模塊都相同。筆者對第一個展開了講解,可以看出它的自注意力層是經過掩模處理的。要注意模型現在可以處理高達4000個詞的序列,相較於最初只能處理512個的成績來說是一個華麗的升級。

這些模塊與原始的解碼器模塊極其相似,除了沒有第二個自注意力層。在有深度自注意力層的字符級語言模型中檢測到了相似的語言架構——可以創建一次預測一個字母或字符的語言模型。

而OpenAI GPT-2模型使用的就是這些僅含解碼器模塊。

速成課:揭開GPT-2的面紗

仔細觀察你會發現,這些內容深深地印刻在我的大腦裡。電閃雷鳴,讓我感到痴狂。

——Budgie

用一個訓練過的GPT-2試試手,看看它到底是怎麼操作的。

該GPT-2可生成1024個詞,每個詞都會穿過路徑中所有的解碼器模塊。

運行已訓練過的GPT-2模型的最簡單的辦法就是讓它自己動起來,用行話講就是生成無條件樣本或者給它一個提示符,令其就某一話題展開論述,也被稱為生成交互式條件示例。前者可以輕鬆掌控詞來創造單詞(訓練的模型使用<|endoftext|> 作為起始詞,不如就叫它<s>吧)。

模型中只含有一個輸入的詞,所以激活的路徑也就別無他選詞會相繼通過所有層,於是會有向量隨之產生。該向量可根據模型的詞彙進行評分,所有詞彙也都是模型知道的,GPT-2中詞彙量達5萬。這種情況下,選擇概率最高的詞——the。但我們當然可以打亂這一切——要知道有時候一直點輸入鍵盤推薦的第一個字很有可能就會陷入循環模式,而這時唯一能夠打破局面的操作就是點擊推薦的第二或第三個字,這裡也一樣。GPT-2中有一個參數被稱為top-k,它能夠讓模型對首選單詞以外的詞彙進行採樣,此時top-k=1。

下一步,將第一步的輸出結果添加到輸入序列,讓模型進行下一輪預測:

注意,第二個路徑是計算中唯一激活的。GPT-2每層都會保留對第一個詞的解釋,並將其用於處理第二個詞。GPT-2不會根據第二個詞再去解釋第一個詞。

進一步深入了解

輸入編碼

這有更多的細節以便更好地了解模型。從輸入開始,正如之前討論的其他自然語言處理模型,該模型會在嵌入矩陣中查找輸入的詞,嵌入矩陣是獲取的訓練模型一部分的組件之一。

每行都是一個詞嵌入向量:這一串數字都代表一個單詞或含義。不同大小的GPT2模型中的數字規模是存在差異的,最小模型嵌入的規格是768每單詞或詞。

所以一開始,我們就在嵌入矩陣中查看了起始詞。先合併位置編碼(該信號會指示transformer 模塊序列中單詞的順序),再將詞傳遞到第一個模塊中。矩陣作為訓練模型的一部分,是由輸入的1024個位置上的位置編碼向量組成的。

到目前,已經為大家講解了輸入的文字在傳遞到第一個transformer 模塊之前是如何處理的,以及構成訓練的GPT-2模型的權值矩陣。

給第一個transformer模塊發送文字就意味著會查詢其嵌入內容,並將位置編碼向量添加到位置1處。

來一場堆棧之旅

現在,第一個模塊可以讓詞先通過自注意力層,緊接著將其遞交到神經網絡層。第一個transformer 模塊一旦接受處理了詞,就會把處理的向量結果送去堆棧,等待下一個模塊的加工。雖然每一個模塊中的處理過程都不同,但其內部的自注意力層和神經網絡子層都有著各自的權重。

回顧自注意力機制

語言離不開語境,比如這個第二定律:

機器人第二定律

機器人必須服從人給予它的命令,當命令與第一定律衝突時例外。

筆者已強調了句子中有三處單詞與其他單詞有聯繫。如果不結合語境是無法理解或者處理單詞的,所以在模型處理這句話時,了解語境是必要的:

· 這句話是講機器人的

· 這樣的命令是定律早期的一部分,也即「人類發出的指令」

· 第一定律就是指整個第一定律

自注意力層的流程就是這樣。如同烘培一樣,它會在加工特定文字之前對其關聯詞進行預處理(再傳遞給神經網絡層)。其方式就是對每個單詞在語段中的相關度進行評分,然後把結果向量加起來。

例如,頂部的transformer模塊的自注意力層在處理「it」時,將重點放在了「robot」上。那麼傳遞給神經網絡層的向量將是三個單詞中每個單詞的向量乘以其分數的總和。

自注意力機制處理

自注意力機制會貫穿於語段中每個詞的處理路徑。其中重要的組件是三個向量:

· Query(查詢):展示了當前的單詞,該單詞會使用鍵給其他單詞評分。我們只需要注意目前正在處理的詞的查詢。

· Key(鍵):鍵向量就像段中所有單詞的標籤,是搜索相關詞彙時的匹配項。

· Value(值):值向量是實際單詞的體現,給每個單詞的相關度評過分後,加起來的值就會用來表示當前的單詞。

該過程可大致理解為在文件櫃裡進行搜索。查詢就如同寫有搜索主題的便利貼,鍵是裡面的文件夾名稱。對著便利貼尋找標籤時,會提取文件夾中的內容,這些內容就是值向量。如果所找值不是一個,而是無數文件夾中的各個值,就要另當別論了。

將查詢向量乘以每個鍵向量,得到的值即為每個文件夾對應的分數(從專業角度講:乘指的是向量點乘,乘積會通過 softmax 函數處理)。

將值與其分數相乘,再求總和——得出自注意力層結果。

該加權向量值的結果,會讓模型將50%的注意力都放在詞語「robot」上,30%的注意力放在「a」上,還有19%會在「it」上。

模型輸出

當頂層模塊生成輸出向量(內部自注意力層的結果,其後為神經網絡層)時,模型會將該向量與嵌入矩陣相乘。

回想一下,嵌入矩陣中的每一行都會對應模型內的某個單詞的嵌入。通過該乘法得到的最終結果可以視為模型中每個詞相應的分數。

可以只選擇分數最高(top_k = 1)的詞,當然如果把其他單詞也考慮在內結果會更好。因此,最穩妥的辦法就是在整個單詞表中以單詞的分數為概率將其選出作為樣本(自然而然,分數越高被選出的可能性越大)。最好是將top_k設置為40,讓模型考慮40個分數最高的單詞。

這樣模型就完成了一次迭代,最後輸出一個單詞。直到整個文本(1024個詞)生成或序列末詞出現,迭代才算結束

小結:GPT-2

有關GPT2的運行講到這裡已經差不多了,如果你比較好奇它內部的自注意力層發生了什麼,接下來這部分將是你的福利。筆者的創作之初是想介紹更多可視語言來描述自注意力層,這樣在後期檢查和描述對transformer模型的介紹時會更輕鬆一些(看看TransformerXL模型和XLNet)。

筆者在文章中做了一些簡化處理,大家留意一下:

· 在此文中,「單詞(word)」和「詞(token)」兩者都是指的同一個事物。但實際上,GPT2會使用字節對編碼(BytePair Encoding)創建詞彙表中的詞(token),所以詞(token)也是單詞的一部分。

· 例子中運行的GPT2是處於幹擾/評估模式的。這就是為什麼一次只處理一個單詞。在訓練模型的時候,會選擇更長序列的文本以及多項詞實現一次性處理。同時,處理的批量(512)比評估時的更大。

· 為了更好的調整圖像中的空間大小,筆者將自由旋轉、轉換向量。

· 會使用很多標準化層,這一點非常重要。其中一些已經在講Illustrated Transformer時提到過,但本文會更側重於自注意力的講解。

· 例如:有很多次筆者都需要有更多的box來代表向量。筆者將這個比為「放大」,請看:

第二部分:詳解自注意力層

文章開篇,已經呈現了這個圖片,讓大家了解自注意力層是如何應用並處理單詞it的:

這一部分,我們將聚焦於它是如何運行的。注意,會嘗試一種方式儘可能讓大家理解每個單詞都發生了什麼。所以展示多個單個的向量原因也在此。實際的操作就是將大型矩陣相乘,但筆者想把重點放在感知上,從單詞層面感知其中的變化。

自注意力層(不使用掩模)

先看在編碼器模塊中進行計算的原始自注意力層。可以看一次只能處理四個詞的transformer模塊的模擬模型。

會經歷三個主要步驟:

為每個路徑創建查詢、鍵和值向量。對每個輸入詞,用其查詢向量給其他鍵向量評分。在向量值與相關分數相乘後將所有數想加。

1. 創建查詢、鍵和值向量

我們來看第一個路徑。將取其查詢與所有的鍵做對比。這樣每個鍵都會得到一個分數。在自注意力層的第一步就是給每個詞的路徑計算三個向量:查詢向量、鍵向量、值向量(不用管目前的頭部注意力)。

2. 注意力得分

三個向量已具備,步驟2隻用查詢向量和鍵向量。因為關注的是第一個詞,所以將其查詢向量與其他所有的鍵向量相乘,最終結果就是四個詞各自的分數。

3. 求和

現在可以將注意力得分與值向量相乘。分數高的值將佔結果向量的大部分比重,在那之前會將所有相乘的結果相加求和。

分數越低,呈現的值向量的透明度越高。從中可以看出乘以小數量後會削減向量值。

假如每個路徑的操作一致,最終會得到一個代表詞的向量,包含合適的語境。這些都會傳到下一層中(前饋神經網絡):

詳解掩模自注意力機制

看過了transformer的自注意力步驟,現在開始介紹掩模自注意力機制(masked self-attention)。除了第二步與自注意力不同,其餘都相同。假設模型只輸入了兩個詞,觀察第二個詞。這種情況下,最後兩個詞會經過掩模處理,所以模型在評分階段會進行幹預。基本上會經常給後面出現的詞評分為0,如此一來模型的最高值就不會出現在這些後出現的詞中:

通常會將其作為矩陣(稱作注意力掩模)進行操作,設想四個單詞的序列(如「robot must obey oders」),在語言模型的場景中,該序列會分為四步驟進行處理——一個單詞對應一個步驟(假設每個單詞都是一個詞)。這些模型是批處理的,所以可以給這個模型提供四個為一批的單詞序列,然後將整個序列當作一批來處理(四步走)。

在矩陣表格中,通過查詢矩陣與鍵矩陣相乘計算得出了分數。下面是該過程的可視化,除了單詞,不過會有與該單詞相關聯的查詢(或鍵)向量:

相乘過後,將注意力都放在注意力掩模三角區域。我們想要進行掩模處理的數都變成了負無窮或者非常大的負數(比如GPT2中的-10億)。

然後在每一行都應用softmax函數,生成用於自注意力層的實際注意力得分:

該分數表格傳達的信息就是:

在模型處理數據集中的第一個例子(第一行,僅包含一個單詞robot)時,100%的注意力都會在該單詞上。處理數據集中的第二個例子(第二行,含有單詞「robot must」)的過程中,在遇到單詞「robot」時,48%的注意力會分給它,而剩下52%的注意力將聚焦到「must」上。等等

GPT-2 中的掩模自注意力機制

評估時間:一次處理一個詞

GPT-2模型的操作也能像掩模自注意力那樣。但是在評估期間,我們的模型只能在每次迭代之前增添一個新詞,而對於那些已經處理過的詞,再在之前的路徑中重新計算自注意力層是無用的。

這種情況下,處理第一個詞

(忽視<s>)

GPT-2模型會保存詞a的鍵向量和值向量。每個自注意力層都會為此詞保留各自的鍵向量和值向量:

到下一次迭代,在模型處理單詞robot時,不需要生成詞 a的查詢向量、鍵向量和值向量,直接利用第一次迭代生成的就可以:

GPT-2 自注意力: 1- 創建查詢、鍵和值

假如模型正在處理單詞it,討論最底層的模塊,那麼輸入的就會是it的嵌入式+slot#9的位置編碼:

Transformer中的每一個模塊都有自己的權重(後面會有詳解)。首先遇到的就是權重矩陣,這個將會用於創建查詢向量、鍵向量和值向量。

自注意力層將輸入的內容與權重矩陣相乘(並且添加了一個向量偏差,這裡沒有講)

相乘得到的向量其實就是單詞 it的查詢向量、鍵向量和值向量的串聯。

將輸入的向量與注意權重相乘(以及添加向量偏差)得到該詞的鍵向量、值向量和查詢向量。

GPT-2自注意力: 1.5-細分 頭部注意力

在先前的例子中,我們直接剖析了自注意力層,並沒有考慮到「多頭(multi-head)」。現在不著重看這一部分的概念是有好處的。自注意力層多次在查詢(Q)、鍵(K)、值(V)向量的不同部分進行操作。「細分」頭部注意力就是重新將長的向量塑造為矩陣。小的GPT2模型有12個頭部,會構成重塑矩陣的第一維度:

之前已經探討過一個注意層的運行過程了。可以這樣思考多個頭部注意力(如果我們只將12個頭部注意力中的3個進行可視化):

GPT-2 自注意力: 2- 計算注意力得分

既然我們只關注一個頭部注意力(其他的操作都一樣),現在可以繼續打分:

現在詞可以針對其他詞的所有鍵進行打分(這在之前迭代時的頭部注意力 #1過程中計算過):

GPT-2 自注意力機制: 3- 總和

正如之前所見,現在將每個值與其分數相乘,然後相加,針對頭部注意力 #1生成自注意力的結果:

GPT-2 自注意力: 3.5- 合併頭部注意力

處理各種頭部注意力的方式就是一開始將所有事物連結成一個向量:

但是向量還不足以傳送到下一層。需要先將這個惹人厭的東西變為同質的事物。

GPT-2 自注意力: 4- 映射

讓模型學會如何最大程度將自注意力層的結果繪製成向量,前饋神經網絡可以處理。接下來出場的就是第二大權重矩陣,它會把頭部注意力的結果映射到自注意力子層的輸出向量中:

現在已經有了可以送到下一層向量了:

GPT-2全連接神經網絡: 第一層

全連接神經網絡中,模塊在自注意力層呈現合適的語境之前會處理輸入的詞。它包含兩層。第一層有模型大小的四倍(小的GPT2模型是768,那該網絡將會達到768*4=3072)。為什麼會是4倍呢?這其實就是原始transformer操作的(模型尺寸為512,圖層1為2048)。這似乎給transformer模型創造了足夠大的空間去處理截止到目前所需進行的任務。

(沒有展示向量偏差)

GPT-2全連接神經網絡: 第二層 – 映射到模型尺寸

第二層會將第一層得到的結果映射到模型尺寸上(小的GPT2模型尺寸大小為768)。相乘的結果就是transformer模塊處理該詞的結果。

(沒有顯示向量偏差)

你做到了!

這就是有關transformer模塊的最詳細的解讀了!現在你已經差不多了解了transformer語言模型內部是如何運行的。概括一下,輸入向量遇到了這些權重矩陣:

並且每個模塊都有各自成套的權重。另一方面,模型只有一個詞嵌入矩陣和一個位置編碼矩陣:

想看所有的模型參數,筆者在這裡幫大家匯總一下:

出於一些原因,這些加起來最多是1 億 2,400 萬個參數而非1 億 1,700 萬個。筆者也不知是為什麼,不過這些似乎出現在了發布的代碼中。(如果錯了請及時糾正)

第三部分: 超越語言模型

僅含解碼器的transformer一直發揮著勝於語言模型的作用。很多的應用程式都可以體現出其成功之處,類似於上述可視化的都可以對其進行描述。文章到了最後就以一些應用程式為結尾吧。

機器翻譯

不需要編碼器進行翻譯。同一個任務,由僅含解碼器的transformer即可完成:

概述

這個就是第一個僅含解碼器的transformer的訓練任務——讀一篇維基百科的文章(在內容之前沒有引言),然後進行概括總結。文章開篇的部分會當作訓練數據集中的標籤:

本文依據維基百科的文章對模型進行了訓練,所以訓練過的模型可以實現對文章的總結:

遷移學習

在論文「Sample Efficient TextSummarization Using a Single Pre-Trained Transformer」中,僅含解碼器的transformer是第一個在語言模型上進行預訓練的,然後才完成的概述任務。結果證明在遇到有限的數據集時,它比預訓練的僅含編碼器-解碼器transformer效果要好。

GPT2的論文也展示了在語言模型中預訓練後的模型的概括結果。

音樂生成

音樂transformer使用僅含解碼器的transformer生成富有動感和韻律的音樂。「音樂模型」就像語言模型——讓模型以一種無人監管的方式學習音樂,從而有自己的輸出(我們將其稱為「隨機工作(rambling)」)。

你可能會好奇這種情況下音樂是如何產生的。記住一點,語言模型可以通過角色、單詞、或者詞的向量體現完成。有了音樂能力(現在就想鋼琴),需要呈現筆記,也要求快速——測量鋼琴鍵按下去有多難。

曲子的呈現只是曲子只是一系列獨熱向量之一,midi文件可以轉換為下面這種格式。文章有下列輸入順序的例子:

獨熱向量對於該輸入序列會呈現下面這種效果:

筆者喜歡把這些呈現出來,展示音樂transformer中自注意力層。

這段作品中出現了反覆出現的三角輪廓。查詢向量位於後一個峰值,它關注前面所有峰值的高音,直到樂曲的開頭。本圖顯示了一個查詢向量(所有注意力線來源)和正要處理的以前的記憶(突出了有更高 softmax函數概率的音符)。注意力線的顏色對應於不同的注意力頭,而寬度對應於 softmax函數概率的權重。

想要進一步了解這種音符的表徵,請觀看以下視頻:https://www.youtube.com/watch?v=ipzR9bhei_o

總結

這就是GPT2的學習之旅,也探索了它的母模型——僅含解碼器的transformer。筆者希望通過這篇文章大家可以能夠更好地了解自注意力機制。

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • 圖解OpenAI的秘密武器GPT-2:可視化Transformer語言模型
    在隨後的許多研究工作中,這種架構要麼去掉了encoder,要麼去掉了decoder,只使用其中一種transformer堆棧,並儘可能高地堆疊它們,為它們提供大量的訓練文本,並投入大量的計算機設備,以訓練其中一部分語言模型,這一研究需要花費數十萬美元,就像在研究AlphaStar時也投入了數百萬美元的資金。
  • 熱門的模型跨界,Transformer、GPT做CV任務一文大盤點
    已經落地的產品層出不窮,其後的算法模型你又了解多少呢?有些模型不僅在自己的領域表現出色,更能跨界出圈。近幾年,NLP 領域的算法勢如破竹,不斷取得新突破,CV 領域同樣不斷取得創新。新工具、新算法、新算力等不斷迭代更新,在各自領域大放異彩。如果說將 NLP 領域的模型應用到 CV 領域,或反之,那效果該如何呢?模型跨界是否可行?答案是肯定的。
  • 完全圖解GPT-2:看完這篇就夠了(一)
    它在文本生成上有著驚豔的表現,其生成的文本在上下文連貫性和情感表達上都超過了人們對目前階段語言模型的預期。僅從模型架構而言,GPT-2 並沒有特別新穎的架構,它和只帶有解碼器的 transformer 模型很像。然而,GPT-2 有著超大的規模,它是一個在海量數據集上訓練的基於 transformer 的巨大模型。GPT-2 成功的背後究竟隱藏著什麼秘密?
  • Transformers2.0讓你三行代碼調用語言模型,兼容TF2.0和PyTorch
    近日 HuggingFace 公司開源了最新的 Transformer2.0 模型庫,用戶可非常方便地調用現在非常流行的 8 種語言模型進行微調和應用,且同時兼容 TensorFlow2.0 和 PyTorch 兩大框架,非常方便快捷。
  • transformer預訓練模型
    OpenAI GPT-2的英語模型gpt2-medium24個層,1024個隱藏節點,16個heads,345M參數量。OpenAI GPT-2的英語模型gpt2-large36個層,1280個隱藏節點,20個heads,774M參數量。OpenAI GPT-2的英語模型gpt2-xl48個層,1600個隱藏節點,25個heads,1558M參數量。
  • 完全圖解GPT-2:看完這篇就夠了(二)
    你成功處理完單詞「it」了!我們儘可能詳細地介紹了 transformer 模塊。現在,你已經基本掌握了 transformer 語言模型內部發生的絕大部分情況了。第三部分:語言建模之外只包含解碼器的 transformer 不斷地表現出在語言建模之外的應用前景。在許多應用程式中,這類模型已經取得了成功,它可以用與上面類似的可視化圖表來描述。在文章的最後,讓我們一起來回顧一下其中的一些應用。
  • 模型壓縮95%,MIT韓松等人提出新型Lite Transformer
    這樣的專門化配置使得模型在三個語言任務上都比原版 transformer 有所提升,這三個任務分別是機器翻譯、文本摘要和語言建模。在資源有限的情況下(500M/100M MACs),Lite Transformer 在 WMT』14 英法數據集上的 BLEU 值比分別比 transformer 高 1.2/1.7。
  • GPT-2沒什麼神奇的,PyTorch 就可以復現代碼
    ——Jeffrey Friedl 在《Mastering Regular Expressions》一書中寫道              GPT-2 一開始看起來像是魔術,它的看起來太美麗了,但希望我能為你解釋魔術,在你讀完這篇文章時揭示所有的技巧,這是我的目標。使那些熱衷於理解 GPT-2 模型是如何工作的人更好理解。
  • 超越SOTA Transformer模型,哈佛、FAIR提出基於殘差能量模型的文本...
    比如我們可以訓練一個分類器去區分真實文本和語言模型生成的文本,而且可以達到非常高的準確率 [1,2]。那麼,一個自然的問題是,我們能否使用這個分類器去提高文本生成的質量,以期達到更加以假亂真的水平呢?這就是本文的研究問題。
  • ...利用基於遷移學習策略的transformer 模型進行Heck反應預測
    作者以經典的小數據-Heck人名反應為代表,證明了遷移學習這一方法在反應預測任務上具有強大性能,同時進一步擴展了transformer這一語言翻譯模型在化學領域的應用,突破性地解決了有限數據預測的難題,為後續的人工智慧輔助化學研發提供了重要的現實依據。1研究背景Transformer模型是谷歌公司於2017年研發的一種語言翻譯模型。
  • |利用基於遷移學習策略的transformer 模型進行Heck...
    作者以經典的小數據-Heck人名反應為代表,證明了遷移學習這一方法在反應預測任務上具有強大性能,同時進一步擴展了transformer這一語言翻譯模型在化學領域的應用,突破性地解決了有限數據預測的難題,為後續的人工智慧輔助化學研發提供了重要的現實依據。
  • visreg:帶你玩遍模型可視化
    但是,並不是所有的報告都面向專業人士,所以能用最通俗易懂的統計圖形呈現估計結果,會讓更多的人理解模型分析結果。接下來,要介紹的就是visreg包,這個包簡單易用,幾乎支持了所有的回歸分析模型,同時支持各種各樣的ggplot2包提供的geom_*圖層和其他擴展主題,是進行模型可視化的利器。使用之前,請先安裝必要的包。
  • Transformer-XL 語言模型
    但是 Transformer 在學習長距離依賴信息的能力仍然有一些限制,Transformer-XL 是一種語言模型,可以提高 Transformer 學習長期依賴信息的能力。1. vanilla Transformer在介紹 Transformer-XL 之前,我們先了解另一種基於 Transformer 的訓練語言模型的方法 vanilla Transformer,對 Transformer 不熟悉的童鞋可以參考之前的文章Transformer 模型詳解。
  • 一天star量破千,特斯拉AI總監寫了個GPT的Pytorch訓練庫
    2018 誕生的 GPT,1.17 億參數;2019 年 GPT-2,15 億參數;2020 年 GPT-3,1750 億參數。短短一年時間,GPT 模型的參數量就呈指數級增長。GPT-3 發布後不久,OpenAI 即向社區開放了商業 API,鼓勵大家使用 GPT-3 嘗試更多的實驗。然而,API 的使用需要申請,而且你的申請很有可能石沉大海。
  • 淺談Transformer模型中的位置表示
    ,這裡暫且按下不表。2. 相對位置表示Relative Position Representations[2](下文簡稱為 RPR) 一文中認為,RNN 通常依靠其循環機制,結合 t 時刻的輸入和前一時刻的隱層狀態
  • 向圖像進擊的Transformer! OpenAI提出Image GPT實現高質量圖像補全和樣本生成
    一、從語言跨界圖像的GPT在語言領域,像GPT-2和BERT等依賴於詞預測的非監督學習算法非常成功,在多個語言相關任務上取得了最好的表現。其中一個重要的原因在於下遊任務(數據)是以自然的文本方式呈現的:答案往往伴隨著問題(問答任務),文章往往伴隨著總結(文本摘要任務)。
  • LaBSE:一套支持109種語言的新語言不可知論內嵌模型
    據外媒報導,自transformer架構誕生以來,自然語言處理(NLP)和自然語言生成(NLG)領域就受益匪淺。Transformer模型如BERT及其衍生物已經被應用到一系列領域中,包括情緒分析和分類。
  • 從word2vec開始,說下GPT龐大的家族系譜
    了解了語言模型的概念,上面問題出現的原因就不難理解了——模型看到的是前文,看不到後文。為了解決這個問題,ELMo 就用雙向 LSTM 來獲取雙向語境。同時,上面涉及的問題不只是雙向語境問題,還有一個很嚴重的問題——詞嵌入不應該是不變的。也就是說,不同的句子裡同一個詞可能有不同的意思,那麼詞嵌入肯定也該不一樣。
  • CNN 模型的可視化
    大家都了解卷積神經網絡 CNN,但是對於它在每一層提取到的特徵以及訓練的過程可能還是不太明白,所以這篇主要通過模型的可視化來神經網絡在每一層中是如何訓練的。我們知道,神經網絡本身包含了一系列特徵提取器,理想的 feature map 應該是稀疏的以及包含典型的局部信息。
  • 在深度學習頂會ICLR 2020上,Transformer模型有什麼新進展?
    架構改進了解transformer模型的最近更新。ALBERT:用於語言表徵自監督學習的輕量BERT模型Transformer模型在很大程度上已過參數化,因為這是在很多NLP任務中表現優異的一種有效方式。