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

    自己完成gpt3訓練(gpt-3訓練)

    發(fā)布時間:2023-03-13 10:14:49     稿源: 創(chuàng)意嶺    閱讀: 99        問大家

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

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

    你只需要給出你的關鍵詞,它就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端,官網(wǎng):https://ai.de1919.com

    本文目錄:

    自己完成gpt3訓練(gpt-3訓練)

    一、05-ELMo/BERT/GPT-NLP預訓練模型

    這里可以參考CSDN上的文章-BERT原理和實踐: https://blog.csdn.net/jiaowoshouzi/article/category/9060488

    在解釋BERT,ELMO這些預訓練模型之前,我們先看一下很久之前的計算機是如何讀懂文字的?

    每個字都有自己的獨特的編碼。但是這樣是有弊端的,字和字之間的關聯(lián)關系是無法得知的,比如計算機無法知道dog和cat都是動物,它反而會覺得bag和dog是比較相近的。

    所以后來就有了Word Class,將一系列的詞進行分類然后讓一類詞語和一類詞語之間更有關聯(lián),但是這樣的方法太過于粗糙,比如dog,cat,bird是一類,看不出哺乳動物鳥類的區(qū)別。

    在這個基礎之上,我們有了Word Embedding,Word Embedding我們可以想象成是一種soft的word class,每個詞都用向量來表示,它的向量維度可能表示這個詞匯的某種意思,如圖中dog,cat,rabbit的距離相比其他更近。那么word embendding是如何訓練出來的,是根據(jù)每個詞匯的上下文所訓練的。

    每個句子都有bank的詞匯,四個bank是不同的token,但是同樣的type。(注:token-詞例, type-詞型, class-詞類 or token是出現(xiàn)的總次數(shù)(還有種理解是token是具有一定的句法語義且獨立的最小文本成分。 ),type是出現(xiàn)的不同事物的個數(shù)。)

    對于典型的Word Embedding認為,每個詞type有一個embedding,所以就算是不同的token只要是一樣的type那么word embedding就是一樣的,語義也就是一樣的。

    而事實上并非如此,1,2句bank指的是銀行,3,4為水庫。所以我們希望讓機器給不同意思的token而且type還一致,給予不同的embedding。在這個問題上,之前的做法是從字典中去查找這個詞包含幾種意思,但是這樣的做法顯然跟不上現(xiàn)實中詞語的一些隱含的含義。比如bank有銀行的意思,與money一起是銀行的意思,而與blood一起卻是血庫的意思。

    所以我們想讓機器今天進一步做到每一個word token都可以有自己的embedding(之前是每個type有一個embedding或者有固定的一個或多個embedding),那么怎么知道一個word應該有怎樣的embedding呢?我們可以取決于該詞的上下文,上下文越相近的token它們就會越相近的embedding。比如之前提到的bank,下面兩個句子它們的word token的embedding可能是相近的,而和上面的word token的embedding是相遠的。

    所以我們想使用一種能夠基于上下文的Contextual word Embedding來解決一詞多義的問題。

    這里使用ELMO可以做到這件事情,即每個word token擁有不同的word embedding。(右上角動物是芝麻街(美國公共廣播協(xié)會(PBS)制作播出的兒童教育電視節(jié)目)里的角色)。

    它是基于RNN的預訓練模型,它只需要搜集大量語料(句子)且不需要做任何標注,就可以訓練這個基于RNN的語言模型,預測下一個token是什么,學習完了之后就得到了上下文的embedding。因為我們可以將RNN的隱藏層中的某一節(jié)點拿出來(圖中橙藍色節(jié)點),它就是輸入當前結點的詞匯的word embedding。

    從當計算識別到<BOS>,模型訓練開始。首先輸入"潮水",然后當作輸入輸出"退了",退了當做輸入輸出"就"。

    假設當前要得到”退了”這個詞的上下文embedding,首先,因為前邊的RNN只考慮到了前文而沒有考慮到后文,所以這里就使用了同前文一樣的反向的RNN。然后,它從句尾開始進行,比如給它喂”知道”,它就要預測”就”,給它喂”就”,它就要預測”退了”。這時候就不僅考慮每個詞匯的前文,還會考慮每個詞的后文。最后將正向和逆向得到的兩個不同的上下文embedding(因為方向不同訓練結果也不一樣)拼接起來。

    現(xiàn)在我們訓練的程度都會越來越深度,當層數(shù)增加,這樣就會產(chǎn)生Deep的RNN,因為很多層,而且每一層都會產(chǎn)生上下文Embedding,那么我們到底應該使用哪一層?每一層這種深度LSTM中的每個層都可以生成潛在表示(方框處)。同一個詞在不同的層上會產(chǎn)生不同的Embedding,那么我們應該使用哪一層呢?ELMo的策略是每一層得到的上下文embedding都要。

    在上下文embedding的訓練模型中,每個詞輸入進去都會有一個embedding輸出來。但是在ELMo中,每個詞匯輸入進去,都會得到不止一個embedding,因為每層的RNN都會給到一個embedding,ELMo將它們統(tǒng)統(tǒng)加起來一起使用。

    以圖中為例,這里假設ELMo有兩層RNN,這里是將α1(黃色,第一層得到的embedding)和α2(綠色,第二層得到embedding)加起來得到藍色的embedding,并做為接下來要進行不同任務的輸入。

    但是這里存在一些問題,α1和α2是學習得到的,而且它是根據(jù)當前要進行的任務(如QA,POS of tagging ),然后根據(jù)接下來要進行的這些任務一起被學習出來。所以就導致不同任務導向下的α1和α2也不一樣。

    ELMo的論文中提到,在不同任務下(SRL,Coref,SNLI,SQuAD,SST-5)。藍色的上下文embedding在經(jīng)過token(這里為沒有經(jīng)過上下文的embedding),LSTM1,LSTM2后,它在不同階段需要的weight也不一樣。

    BERT相當于是Transformer的Encoder部分,它只需要搜集大量的語料去從中學習而不經(jīng)過標注(不需要label),就可以將Encoder訓練完成。如果之前要訓練Encoder,我們需要通過一些任務來驅動學習(如機器翻譯)。

    BERT就是句子給進去,每個句子給一個embedding。

    這里可以回憶下,Transformer的Enoder中有self-attention layer,就是給進去一個sequence,輸出也得到一個sequence。

    雖然圖中使用是用詞作為單元進行輸入,但是在使用BERT進行中文的訓練時,字會是一個更好的選擇。比如,我們在給BERT進行輸入時,用one-hot給詞進行編碼,但是詞在中文中數(shù)量龐大,會導致維度過高。但是,字的話相對會少很多,特別是中文(大約幾千個,可以窮舉)。這樣以字為單位進行輸入會占很大優(yōu)勢。

    共有兩種方法,一種是Mask LM遮蓋語言模型,另一種是Next Sentence Prediction下一句預測。

    下面用上圖的例子來理解BERT是怎么樣來進行填空的:

    1)這里假設在所有句子中的詞匯的第2個位置上設置一個<MASK>;

    2)接下來把所有的詞匯輸入BERT,然后每個輸入的token都會得到一個embedding;

    3)接下來將設置為<MASK>的embedding輸入到Linear Multi-class Classifier中中,要求它預測被<MASK>的詞匯是哪個詞匯?

    但是這個Linear Multi-class Classifier它僅僅是一個線性分類器,所以它的能力十分弱,這也就需要在之前的BERT模型中需要將它的層數(shù)等參數(shù)設計的相當好,然后得到非常出色的representation,便于線性分類器去訓練。

    那么我們怎么知道最后得到的embedding是什么樣的呢?如果兩個<MASK>下的詞匯(輸入時設置的<MASK>和最后預測的<MASK>)都放回原來的位置而且沒有違和感(就是語句還算通順),那它們就有類似的embedding(比如退下和落下)。

    如圖中,給定兩個句子1)醒醒吧 和 2)你沒有妹妹。其中特殊符號[SEP]是告訴BERT兩個句子的分隔點在哪里。

    特殊符號[CLS]一般放在句子的開頭,它用來告訴BERT從這開始分類任務,[CLS]輸入BERT后得到embedding然后通過Linear Binary Classifier得出結果說明:經(jīng)過BERT預測后現(xiàn)在我們要預測的兩個句子是接在一起 or 不應該被接在一起。

    這里可能會有疑問,為什么不將[CLS]放在句尾,等BERT訓練完兩個句子再輸出結果?

    對于上圖中的任務,BERT現(xiàn)在要做的事情就是給定兩個句子,讓BERT輸出結果這兩個句子是不是應該接在一起?

    所以在語料庫的大量句子中,我們是知道哪些句子是可以接在一起的,所以也需要我們告訴BERT哪些句子是接在一起的。

    Linear Binary Classifier和BERT是一起被訓練的,通過預測下一句這個任務,我們就可以把將BERT部分的最優(yōu)參數(shù)訓練出來。

    現(xiàn)在我們知道了任務一和任務二,在原論文中兩種任務是要同時進行的,這樣才能將BERT的性能發(fā)揮到最佳。

    現(xiàn)在我們知道了BERT要做什么事情,那么我們要如何去使用它?共有四種方法。論文中是將【BERT模型和接下來你要進行的任務】結合在一起做訓練。

    第一種,假設當前任務是Input一個sentence,out一個class,舉例來說輸入一句話來判斷分類。

    訓練流程:1)將做要分類的句子丟給BERT;

    2)需要在句子開始加上分類的特殊符號,這個特殊符號經(jīng)過BERT輸出的embedding經(jīng)過線性分類器,輸出結果為當前的句子屬于的類別是真還是假。BERT和Linear Classifier的參數(shù)一起進行學習;

    3)這里的Linear Classifier是Trained from Scratch是白手起家從頭開始,即它的參數(shù)隨機初始化設置,然后開始訓練;

    4)而BERT則是加上Fine-tune微調(diào)策略(一種遷移學習方式*),例如Generative Pre-trained Transformer(OpenAI GPT生成型預訓練變換器)(Radford等,2018),引入了最小的任務特定參數(shù),并通過簡單地微調(diào)預訓練參數(shù)在下游任務中進行訓練。

    *這里不得不提一下遷移學習中的Fine-tune,這里可以參考csdn的一篇文章: https://blog.csdn.net/u013841196/article/details/80919857

    ( https://arxiv.org/abs/1805.12471 )

    第二種,假設當前任務是input一個sentence,輸出這個句子中的每個詞匯屬于正例還是負例。舉例現(xiàn)在的任務是slot filling填槽任務(填槽指的是為了讓用戶意圖轉化為用戶明確的指令而補全信息的過程)(另一種解釋是從大規(guī)模的語料庫中抽取給定實體(query)的被明確定義的屬性(slot types)的值(slot fillers))(槽可以理解為實體已明確定義的屬性),輸入的句子是 arrive Taipei on November 2nd輸出的槽是other dest on time time

    訓練流程:

    1)將句子輸入BERT,句子中的每個詞匯都會映射出一個embedding;

    2)每個詞匯的embedding輸入Linear Classifier,輸出結果;

    3)Linear Classifier 白手起家和Bert微調(diào)的方式一起去做學習。

    第三種,假設當前任務是input輸入兩個句子,輸出class。舉例現(xiàn)在要進行自然語言預測,讓機器根據(jù)premise前提,預測這個hypothesis假設是True還是False還是unknown不知道。實際上,我們可以把這個任務當成三分類問題。

    訓練過程:

    1)在一個sentence前設置特殊符號[CLS],然后在要輸入的兩個sentence中間設置[SEP]分隔符號;

    2)將兩個sentence連同特殊符號一起輸入到BERT中;

    3)將[CLS]輸入BERT后得到的embedding,再把它輸入linear Classifier中,得到class。

    如圖所示,假設gravity的token序號是17,即 ,我們現(xiàn)在有一個問題通過QA Model后得到的s=17,e=17,那么答案就是 為gravity;

    同理,假設within a cloud的序號順序是77到79,即 到 ,我們現(xiàn)在有一個問題通過QA Model后得到的s=77,e=79,那么答案就是 為within a cloud。

    https://arxiv.org/abs/1905.05950

    https://openreview.net/pdf?id=SJzSgnRcKX

    這張圖顯示了BERT從0-24層的層數(shù)在針對不同的NLP任務上的表現(xiàn)。

    https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

    而所謂的GPT,它其實就是Transformer的Decoder。

    我們簡單的描述下GPT的訓練過程:這里我們input<BOS>這個token和潮水,想要GPT預測輸出“退了”這個詞匯。

    1)首先輸入[BOS](begin of sentence)和潮水,通過Word Embedding再乘上matrix W變成a 1到a 4,然后把它們丟進self-attention 層中,這時候每一個input都分別乘上3個不同的matrix產(chǎn)生3個不同的vector,分別把它們命名為q,k,v。

    q代表的是query (to match others用來去匹配其它的向量)

    k代表的是key (to be matched用來去被query匹配的向量)

    v代表的是value(information to be extracted用來被抽取的信息的向量)

    2)現(xiàn)在要做的工作就是用每個query q 去對每個 key k做attention(吃2個向量,輸出就是告訴你這2個向量有多么匹配或者可以說輸入兩個向量輸出一個分數(shù)alpha(而怎么去吃2個向量output一個分數(shù),有很多不同的做法))。這里要預測潮水的下一個詞,所以乘 , 乘上 , 乘上 再經(jīng)過soft-max分別得到 到 。

    3)我們用 和每一個v相乘, 和 相乘加上 和 相乘。以此類推并相加,最終得到 。

    4)然后經(jīng)過很多層的self-attention,預測得到”退了”這個詞匯。

    同理,現(xiàn)在要預測”退了”的下一個詞匯,按照前面的流程可以得到 ,然后經(jīng)過很多層的self-attention層,得到”就”這個詞匯。

    GPT的神奇之處在于它可以在完全沒有訓練數(shù)據(jù)的情況下,就可以做到閱讀理解,摘要,翻譯。折線圖中顯示了它在參數(shù)量上升的情況下,F(xiàn)1的值的效果。

    1.Transformer的問題:

    word Embedding 無上下文

    監(jiān)督數(shù)據(jù)太少

    解決方法:

    Contextual Word Embedding

    2.ELMo( E mbeddings from L anguages Mo del)

    - 多層雙向的LSTM的NNLM

    - RNN-based language models(trained from lots of sentences)

    ELMo的問題:

    Contextual Word Embedding作為特征

    不適合特定任務

    3.OpenAI GPT的改進

    根據(jù)任務Fine-Tuning

    使用Transformer替代RNN/LSTM

    OpenAI GPT的問題:

    單向信息流的問題

    Pretraining(1)和Fine-Tuning(2)不匹配

    解決辦法:

    Masked LM

    NSP Multi-task Learning

    Encoder again

    Tips:

    - 使用中文模型

    - max_seq_length可以小一點,提高效率

    - 內(nèi)存不夠,需要調(diào)整train_batch_size

    - 有足夠多的領域數(shù)據(jù),可以嘗試Pretraining

    二、GPT和GPT2

    GPT用的是transformer decoder

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

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

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

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

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

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

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

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

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

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

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

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

    三、chatgpt是什么縮寫

    chatgpt是Generative Pretrained Transformer for Chatting的縮寫。

    Generative Pre-trained Transformer生成型預訓練變換模型。

    GPT是”Generative Pre-trained Transformer“生成型預訓練變換模型的縮寫,目的是為了使用深度學習生成人類可以理解的自然語言。目前我們討論的GPT一般指的是GPT-3,顯而易見,在之前還有GPT-2和GPT。

    GPT-3是由人工智能公司OpenAI訓練與開發(fā),該模型設計基于谷歌開發(fā)的變換語言模型。GPT-3的神經(jīng)網(wǎng)絡包含1750億個參數(shù),為有史以來參數(shù)最多的神經(jīng)網(wǎng)絡模型。OpenAI于2020年5月發(fā)表GPT-3的論文,微軟在2020年9月22日宣布取得了GPT-3的獨家授權。

    ChatGPT: 為對話而優(yōu)化的語言模型。

    按照OpenAI官方的說法“我們已經(jīng)訓練了一個名為 ChatGPT 的模型,它以對話的方式進行交互。對話模式使 ChatGPT 能夠回答連續(xù)的問題、承認錯誤、質(zhì)疑不正確的前提并拒絕不恰當?shù)恼埱蟆?/p>

    ChatGPT 是InstructGPT的兄弟模型,InstructGPT模型被訓練為遵循對話中的指令并提供詳細的響應?!?/p>

    聊天機器人ChatGPT。

    ChatGPT是基于GPT3.5優(yōu)化的一個模型,可以理解為是一個通用聊天機器人。根據(jù) OpenAI 的說法,GPT-3.5通過吸收大量來自網(wǎng)絡的內(nèi)容,包括成千上萬的維基百科條目、社交媒體帖子和新聞文章,來學習句子、單詞和部分單詞之間的關系。

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

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

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

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

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

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


    推薦閱讀:

    什么軟件能自己做字體

    怎樣向別人推銷自己的產(chǎn)品(怎樣向別人推銷自己的產(chǎn)品話術)

    在手機上設計畫圖的軟件(手機上可以自己畫畫的軟件)

    園林景觀設計教程視頻(園林景觀設計教程視頻講解)

    上海屋頂景觀設計品牌(上海屋頂景觀設計品牌排行榜)