HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運營
CASE 服務(wù)案例
NEWS 熱點資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    gpt3訓(xùn)練過程(gpt-3訓(xùn)練)

    發(fā)布時間:2023-03-13 09:41:29     稿源: 創(chuàng)意嶺    閱讀: 84        問大家

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于gpt3訓(xùn)練過程的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。

    ChatGPT國內(nèi)免費在線使用,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端

    官網(wǎng):https://ai.de1919.com

    本文目錄:

    gpt3訓(xùn)練過程(gpt-3訓(xùn)練)

    一、BERT詳解(附帶ELMo、GPT 介紹)

    首先我會詳細闡述 BERT 原理,然后簡單介紹一下 ELMO 以及 GPT

    BERT 全稱為 B idirectional E ncoder R epresentation from T ransformer,是 Google 以 無監(jiān)督的方式利用大量無標(biāo)注文本 「煉成」的語言模型,其架構(gòu)為 Transformer 中的 Encoder(BERT=Encoder of Transformer)

    我在 Transformer 詳解 中已經(jīng)詳細的解釋了所有 Transformer 的相關(guān)概念,這里就不再贅述

    以往為了解決不同的 NLP 任務(wù),我們會為該任務(wù)設(shè)計一個最合適的神經(jīng)網(wǎng)絡(luò)架構(gòu)并做訓(xùn)練,以下是一些簡單的例子

    不同的 NLP 任務(wù)通常需要不同的模型,而設(shè)計這些模型并測試其 performance 是非常耗成本的(人力,時間,計算資源)。如果有一個能 直接處理各式 NLP 任務(wù)的通用架構(gòu) 該有多好?

    隨著時代演進,不少人很自然地有了這樣子的想法,而 BERT 就是其中一個將此概念付諸實踐的例子

    Google 在預(yù)訓(xùn)練 BERT 時讓它同時進行兩個任務(wù):

    1. 漏字填空

    2. 下個句子預(yù)測

    對正常人來說,要完成這兩個任務(wù)非常簡單。只要稍微看一下前后文就知道完形填空任務(wù)中 [MASK] 里應(yīng)該填 退了 ;而 醒醒吧 后面接 你沒有妹妹 也十分合理(?)

    接下來我會分別詳細介紹論文中這兩個任務(wù)的設(shè)計細節(jié)

    在 BERT 中,Masked LM(Masked Language Model)構(gòu)建了語言模型,簡單來說,就是 隨機遮蓋或替換 一句話里面的任意字或詞,然后讓模型通過上下文預(yù)測那一個被遮蓋或替換的部分,之后 做 Loss 的時候也只計算被遮蓋部分的 Loss ,這其實是一個很容易理解的任務(wù),實際操作如下:

    這樣做的好處是,BERT 并不知道 [MASK] 替換的是哪一個詞,而且 任何一個詞都有可能是被替換掉的,比如它看到的 apple 可能是被替換的詞 。這樣強迫模型在編碼當(dāng)前時刻詞的時候 不能太依賴當(dāng)前的詞 ,而要考慮它的上下文,甚至根據(jù)上下文進行 "糾錯"。比如上面的例子中,模型在編碼 apple 時,根據(jù)上下文 my dog is,應(yīng)該 把 apple 編碼成 hairy 的語義而不是 apple 的語義

    我們首先拿到屬于上下文的一對句子,也就是兩個句子,之后我們要在這兩個句子中加一些特殊的 token: [CLS]上一句話[SEP]下一句話[SEP] 。也就是在句子開頭加一個 [CLS] ,在兩句話之間和句末加 [SEP] ,具體地如下圖所示

    可以看到,上圖中的兩句話明顯是連續(xù)的。如果現(xiàn)在有這么一句話 [CLS] 我的狗很可愛 [SEP] 企鵝不擅長飛行 [SEP] ,可見這兩句話就 不是連續(xù)的 。在實際訓(xùn)練中,我們會讓這兩種情況出現(xiàn)的數(shù)量為** 1:1**

    Token Embedding 就是正常的詞向量,即 PyTorch 中的 nn.Embedding()

    Segment Embedding 的作用是用 embedding 的信息讓模型 分開上下句 ,我們給上句的 token 全 0,下句的 token 全 1,讓模型得以判斷上下句的起止位置,例如

    Position Embedding 和 Transformer 中的不一樣,不是三角函數(shù),而是 學(xué)習(xí)出來的

    BERT 預(yù)訓(xùn)練階段實際上是將上述兩個任務(wù)結(jié)合起來,同時進行,然后將所有的 Loss 相加,例如

    BERT 的 Fine-Tuning 共分為 4 種類型,以下內(nèi)容、圖片均來自臺大李宏毅老師 Machine Learning 課程 (以下內(nèi)容 圖在上,解釋在下)

    為什么要用CLS?

    這里李宏毅老師有一點沒講到,就是為什么要用第一個位置,即 [CLS] 位置的 output。這里我看了網(wǎng)上的一些博客,結(jié)合自己的理解解釋一下。因為 BERT 內(nèi)部是 Transformer,而 Transformer 內(nèi)部又是 Self-Attention, 所以 [CLS] 的 output 里面肯定含有整句話的完整信息 ,這是毋庸置疑的。但是 Self-Attention 向量中,自己和自己的值其實是占大頭的,現(xiàn)在假設(shè)使用 的 output 做分類,那么這個 output 中實際上會更加看重 ,而 又是一個有實際意義的字或詞,這樣難免會影響到最終的結(jié)果。但是 [CLS] 是沒有任何實際意義的,只是一個占位符而已,所以就算 [CLS] 的 output 中自己的值占大頭也無所謂。當(dāng)然你 也可以將所有詞的 output 進行 concat,作為最終的 output

    首先將問題和文章通過 [SEP] 分隔,送入 BERT 之后,得到上圖中黃色的輸出。此時我們還要訓(xùn)練兩個 vector,即上圖中橙色和黃色的向量。首先將橙色和所有的黃色向量進行 dot product,然后通過 softmax,看哪一個輸出的值最大,例如上圖中 對應(yīng)的輸出概率最大,那我們就認(rèn)為 s=2

    同樣地,我們用藍色的向量和所有黃色向量進行 dot product,最終預(yù)測得 的概率最大,因此 e=3。最終,答案就是 s=2,e=3

    你可能會覺得這里面有個問題,假設(shè)最終的輸出 s>e 怎么辦,那不就矛盾了嗎?其實在某些訓(xùn)練集里,有的問題就是沒有答案的,因此此時的預(yù)測搞不好是對的,就是沒有答案

    以上就是 BERT 的詳細介紹,參考以下文章

    ELMo是Embedding from language Model的縮寫,它通過無監(jiān)督的方式對語言模型進行預(yù)訓(xùn)練來學(xué)習(xí)單詞表示

    這篇論文的想法其實非常簡單,但是效果卻很好。它的思路是用 深度的雙向 Language Model 在大量未標(biāo)注數(shù)據(jù)上訓(xùn)練語言模型 ,如下圖所示

    在實際任務(wù)中,對于輸入的句子,我們使用上面的語言模型來處理它,得到輸出向量,因此這可以看作是一種 特征提取 。但是 ELMo 與普通的 Word2Vec 或 GloVe 不同,ELMo 得到的 Embedding 是 有上下文信息

    具體來說,給定一個長度為 N 的句子,假設(shè)為 ,語言模型會計算給定 的條件下出現(xiàn) 的概率:

    傳統(tǒng)的 N-gram 模型 不能考慮很長的歷史 ,因此現(xiàn)在的主流是使用 多層雙向 LSTM 。在時刻 ,LSTM 的第 層會輸出一個隱狀態(tài) ,其中 , 是 LSTM 的層數(shù)。最上層是 ,對它進行 softmax 之后得到輸出詞的概率

    類似的,我們可以用 一個反向 來計算概率:

    通過這個 LSTM,我們可以得到 。我們的損失函數(shù)是這兩個 LSTM 的 加和 :

    這兩個 LSTM 有各自的參數(shù) 和 ,而 Word Embedding 參數(shù) 和 Softmax 參數(shù) 是共享的

    為了用于下游(DownStream)的特定任務(wù),我們會把不同層的隱狀態(tài)組合起來,具體組合的參數(shù)是根據(jù)不同的特定任務(wù)學(xué)習(xí)出來的,公式如下:

    GPT 得到的語言模型參數(shù)不是固定的,它會根據(jù)特定的任務(wù)進行調(diào)整(通常是微調(diào)),這樣的到的句子表示能更好的適配特定任務(wù)。它的思想也很簡單,使用 單向 Transformer 學(xué)習(xí)一個語言模型 ,對句子進行無監(jiān)督的 Embedding,然后 根據(jù)具體任務(wù)對 Transformer 的參數(shù)進行微調(diào) 。GPT 與 ELMo 有兩個主要的區(qū)別:

    這里解釋一下上面提到的 單向 Transformer 。在 Transformer 的文章中,提到了 Encoder 與 Decoder 使用的 Transformer Block 是不同的。在 Decoder Block 中,使用了 Masked Self-Attention ,即句子中的每個詞都只能對 包括自己在內(nèi)的前面所有詞進行 Attention ,這就是單向 Transformer。GPT 使用的 Transformer 結(jié)構(gòu)就是將 Encoder 中的 Self-Attention 替換成了 Masked Self-Attention ,具體結(jié)構(gòu)如下圖所示

    訓(xùn)練的過程也非常簡單,就是將 n 個詞的詞嵌入 ( ) 加上位置嵌入 ( ),然后輸入到 Transformer 中,n 個輸出分別預(yù)測該位置的下一個詞

    這里的位置編碼沒有使用傳統(tǒng) Transformer 固定編碼的方式,而是動態(tài)學(xué)習(xí)的

    Pretraining 之后,我們還需要針對特定任務(wù)進行 Fine-Tuning。假設(shè)監(jiān)督數(shù)據(jù)集合 的輸入 是一個詞序列 ,輸出是一個分類的標(biāo)簽 ,比如情感分類任務(wù)

    我們把 輸入 Transformer 模型,得到最上層最后一個時刻的輸出 ,將其通過我們新增的一個 Softmax 層(參數(shù)為 )進行分類,最后用 CrossEntropyLoss 計算損失,從而根據(jù)標(biāo)準(zhǔn)數(shù)據(jù)調(diào)整 Transformer 的參數(shù)以及 Softmax 的參數(shù) 。這等價于最大似然估計:

    正常來說,我們應(yīng)該調(diào)整參數(shù)使得 最大,但是 為了提高訓(xùn)練速度和模型的泛化能力 ,我們使用 Multi-Task Learning,同時讓它最大似然 和

    這里使用的 還是之前語言模型的損失(似然),但是使用的數(shù)據(jù)不是前面無監(jiān)督的數(shù)據(jù) ,而是使用當(dāng)前任務(wù)的數(shù)據(jù) ,而且只使用其中的 ,而不需要標(biāo)簽

    針對不同任務(wù),需要簡單修改下輸入數(shù)據(jù)的格式,例如對于相似度計算或問答,輸入是兩個序列,為了能夠使用 GPT,我們需要一些特殊的技巧把兩個輸入序列變成一個輸入序列

    ELMo 和 GPT 最大的問題就是 傳統(tǒng)的語言模型是單向的 —— 我們根據(jù)之前的歷史來預(yù)測當(dāng)前詞。但是我們不能利用后面的信息。比如句子 The animal didn’t cross the street because it was too tired 。我們在編碼 it 的語義的時候需要同時利用前后的信息,因為在這個句子中, it 可能指代 animal 也可能指代 street 。根據(jù) tired ,我們推斷它指代的是 animal 。但是如果把 tired 改成 wide ,那么 it 就是指代 street 了。傳統(tǒng)的語言模型,都 只能利用單方向的信息 。比如前向的 RNN,在編碼 it 的時候它看到了 animal 和 street ,但是它還沒有看到 tired ,因此它不能確定 it 到底指代什么。如果是后向的 RNN,在編碼的時候它看到了 tired ,但是它還根本沒看到 animal ,因此它也不能知道指代的是 animal 。 Transformer 的 Self-Attention 理論上是可以同時關(guān)注到這兩個詞的,但是根據(jù)前面的介紹,為了使用 Transformer 學(xué)習(xí)語言模型,必須 用 Mask 來讓它看不到未來的信息 ,所以它也不能解決這個問題的

    根據(jù)上文內(nèi)容預(yù)測下一個可能跟隨的單詞,就是常說的自左向右的語言模型任務(wù),或者反過來也行,就是根據(jù)下文預(yù)測前面的單詞,這種類型的LM被稱為自回歸語言模型。(GPT,ELMO)GPT 就是典型的自回歸語言模型。ELMO盡管看上去利用了上文,也利用了下文,但是本質(zhì)上仍然是自回歸LM,這個跟模型具體怎么實現(xiàn)有關(guān)系。ELMO是做了兩個方向(從左到右以及從右到左兩個方向的語言模型),但是是分別有兩個方向的自回歸LM,然后把LSTM的兩個方向的隱節(jié)點狀態(tài)拼接到一起,來體現(xiàn)雙向語言模型這個事情的。所以其實是兩個自回歸語言模型的拼接,本質(zhì)上仍然是自回歸語言模型。

    自回歸語言模型有優(yōu)點有缺點,缺點是只能利用上文或者下文的信息,不能同時利用上文和下文的信息,當(dāng)然,貌似ELMO這種雙向都做,然后拼接看上去能夠解決這個問題,因為融合模式過于簡單,所以效果其實并不是太好。它的優(yōu)點,其實跟下游NLP任務(wù)有關(guān),比如生成類NLP任務(wù),比如文本摘要,機器翻譯等,在實際生成內(nèi)容的時候,就是從左向右的, 自回歸語言模型天然匹配這個過程 。而Bert這種DAE模式,在生成類NLP任務(wù)中,就面臨訓(xùn)練過程和應(yīng)用過程不一致的問題,導(dǎo)致 生成類的NLP任務(wù)到目前為止都做不太好

    自回歸語言模型只能根據(jù)上文預(yù)測下一個單詞,或者反過來,只能根據(jù)下文預(yù)測前面一個單詞。相比而言,Bert通過 在輸入X中隨機Mask掉一部分單詞 ,然后預(yù)訓(xùn)練過程的主要任務(wù)之一是根據(jù)上下文單詞來預(yù)測這些被Mask掉的單詞,如果你對Denoising Autoencoder比較熟悉的話,會看出,這確實是典型的DAE的思路。那些被Mask掉的單詞就是在輸入側(cè)加入的所謂噪音。類似Bert這種預(yù)訓(xùn)練模式,被稱為DAE LM。

    這種DAE LM的優(yōu)缺點正好和自回歸LM反過來,它能比較自然地融入雙向語言模型,同時看到被預(yù)測單詞的上文和下文,這是好處。缺點是啥呢? 主要在輸入側(cè)引入[Mask]標(biāo)記,導(dǎo)致預(yù)訓(xùn)練階段和Fine-tuning階段不一致的問題 ,因為Fine-tuning階段是看不到[Mask]標(biāo)記的。DAE嗎,就要引入噪音,[Mask] 標(biāo)記就是引入噪音的手段,這個正常。

    XLNet的出發(fā)點就是:能否 融合自回歸LM和DAE LM兩者的優(yōu)點 。就是說如果站在自回歸LM的角度,如何引入和雙向語言模型等價的效果;如果站在DAE LM的角度看,它本身是融入雙向語言模型的,如何拋掉表面的那個[Mask]標(biāo)記,讓預(yù)訓(xùn)練和Fine-tuning保持一致。當(dāng)然,XLNet還講到了一個Bert被Mask單詞之間相互獨立的問題。

    二、GPT和GPT2

    GPT用的是transformer decoder

    fine-tuning的輸入:最后一個詞的向量。

    GPT采用單向transformer可以解決Bert無法解決的生成文本任務(wù)。

    一個字一個字往出蹦的形式

    通常我們會用特定的網(wǎng)絡(luò)結(jié)構(gòu)去給任務(wù)建模,構(gòu)建通用NLP模型,對p(output | input, task)建模。output ,input, task三者都用向量表示。

    把第二階段替換由Finetuning有監(jiān)督,換成了無監(jiān)督做下游任務(wù),因為它扔進去了好多任務(wù)數(shù)據(jù),且有提示詞。

    問題1 :GPT2把第二階段的Finetuning做有監(jiān)督地下游NLP任務(wù),換成了 無監(jiān)督地做下游任務(wù) 。為什么這樣做?一種看法認(rèn)為,只是GPT作者想說明在第一階段Transformer學(xué)到了很多通用的包含各個領(lǐng)域的知識。

    問題2:為什么GPT 2.0仍然固執(zhí)地用單向語言模型,而不是雙向語言模型呢?

    Bert的論文認(rèn)為,Bert的有效性主要是因為使用了雙向語言模型。

    1.生成內(nèi)容后續(xù)單詞這種模式,單向語言模型更方便;

    2、想證明通過增加數(shù)據(jù)量和模型結(jié)構(gòu),單向模型未必輸雙向模型。

    問題3:GPT2訓(xùn)練好的語言模型,如何無監(jiān)督適應(yīng)下游任務(wù),比如文本摘要,怎么知道是在做文本摘要任務(wù)呢?

    首先,所有任務(wù)都采取相同的往出蹦字的輸出模式。GPT2.0給出了一種新穎的生成式任務(wù)的做法,就是一個字一個字往出蹦,然后拼接出輸出內(nèi)容作為翻譯結(jié)果或者摘要結(jié)果。GPT-2的輸入也會加入提示詞,比如輸入格式是 文本+TL;DR:,GPT-2模型就會知道是做摘要工作了。

    三、chatgpt的gpt全文是怎樣的。

    ChatGPT是一款大型預(yù)訓(xùn)練語言模型,它基于GPT(Generative Pre-trained Transformer)算法進行訓(xùn)練。GPT是一種基于自注意力機制(Self-Attention)的序列生成模型,它可以學(xué)習(xí)輸入序列中不同位置之間的依賴關(guān)系,進而生成具有語言邏輯性的連續(xù)文本。

    ChatGPT模型的訓(xùn)練數(shù)據(jù)來源于大量的公共語料庫,如維基百科、新聞報道、社交媒體等,并通過多層的Transformer模型進行預(yù)訓(xùn)練。在預(yù)訓(xùn)練階段,模型通過學(xué)習(xí)上下文之間的關(guān)系,學(xué)會了語言的基本語法、語義和知識,從而可以生成連貫、合理、自然的文本。

    ChatGPT模型是一種無監(jiān)督學(xué)習(xí)的模型,不需要對輸入數(shù)據(jù)進行人工標(biāo)注和指導(dǎo),也不需要針對特定任務(wù)進行有監(jiān)督學(xué)習(xí)。這種無監(jiān)督學(xué)習(xí)的特點,使得ChatGPT模型可以應(yīng)用于各種自然語言處理任務(wù),如對話系統(tǒng)、文本生成、語言翻譯等,并且具有很高的靈活性和擴展性。

    總之,ChatGPT的GPT全文是一種基于自注意力機制的預(yù)訓(xùn)練語言模型,它通過學(xué)習(xí)大量的公共語料庫,可以生成具有語言邏輯性和語義的自然文本。

    四、怎樣利用chatgpt降重

    1. 先新建一個可訓(xùn)練的模型,然后用chatgpt訓(xùn)練這個模型,而不是重新訓(xùn)練一個更大的模型。

    2. 在訓(xùn)練過程中,可以從數(shù)據(jù)集中刪除一些重復(fù)的句子或不相關(guān)的句子,以減輕模型的大小。

    3. 使用小的mini-batch大小來減小批處理中的計算負擔(dān)。

    4. 使用預(yù)先訓(xùn)練好的預(yù)料,可以通過初始化模型去除多余的重復(fù)句子,在訓(xùn)練時保留較少的模型參數(shù)。

    5. 采用更有效的訓(xùn)練算法,例如采用一種迭代優(yōu)化算法、優(yōu)化模型結(jié)構(gòu),以及利用regularization策略。

    以上就是關(guān)于gpt3訓(xùn)練過程相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。


    推薦閱讀:

    gpt分區(qū)安裝win7無法激活(gpt分區(qū)不能激活)

    chatGPT蘋果(ChatGPT蘋果手機怎么下載)_1

    chatGPT需要付費嗎-(potato chat要錢嗎)_1

    商家上百度地圖要收費嗎(店鋪上百度地圖還要收費-)

    國內(nèi)高檔女裝有哪些品牌(國內(nèi)高檔女裝品牌前十名)