-
當前位置:首頁 > 創(chuàng)意學院 > 技術 > 專題列表 > 正文
gpt模型開源嗎知乎
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于gpt模型開源嗎知乎的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
ChatGPT國內(nèi)免費在線使用,能給你生成想要的原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
你只需要給出你的關鍵詞,它就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端,官網(wǎng):https://ai.de1919.com
本文目錄:
一、chatgpt數(shù)據(jù)哪里來的
ChatGPT使用了大量的自然語言文本數(shù)據(jù)來訓練模型,這些文本數(shù)據(jù)包括各種來源,例如維基百科、新聞報道、社交媒體、電子書籍、論壇帖子等等。
ChatGPT模型的訓練數(shù)據(jù)來源于大量的公共語料庫,如維基百科、新聞報道、社交媒體等,并通過多層的Transformer模型進行預訓練。在預訓練階段,模型通過學習上下文之間的關系,學會了語言的基本語法、語義和知識,從而可以生成連貫、合理、自然的文本。
ChatGPT模型是一種無監(jiān)督學習的模型,不需要對輸入數(shù)據(jù)進行人工標注和指導,也不需要針對特定任務進行有監(jiān)督學習。這種無監(jiān)督學習的特點,使得ChatGPT模型可以應用于各種自然語言處理任務,如對話系統(tǒng)、文本生成、語言翻譯等,并且具有很高的靈活性和擴展性。
總之,ChatGPT的GPT全文是一種基于自注意力機制的預訓練語言模型,它通過學習大量的公共語料庫,可以生成具有語言邏輯性和語義的自然文本。
ChatGPT簡介
ChatGPT是美國人工智能研究實驗室OpenAI新推出的一種人工智能技術驅動的自然語言處理工具,使用了Transformer神經(jīng)網(wǎng)絡架構,也是GPT-3.5架構,這是一種用于處理序列數(shù)據(jù)的模型,擁有語言理解和文本生成能力,尤其是它會通過連接大量的語料庫來訓練模型。
這些語料庫包含了真實世界中的對話,使得ChatGPT具備上知天文下知地理,還能根據(jù)聊天的上下文進行互動的能力,做到與真正人類幾乎無異的聊天場景進行交流。ChatGPT不單是聊天機器人,還能進行撰寫郵件、視頻腳本、文案、翻譯、代碼等任務。
二、gpt2模型文本分類
GPT-2 模型可以用于文本分類任務,但需要對模型進行微調(diào),以適應不同的分類任務。以下是使用 GPT-2 模型進行文本分類的基本步驟:
準備數(shù)據(jù)集:首先需要準備一個文本分類的數(shù)據(jù)集,其中包含帶有標簽的文本數(shù)據(jù)??梢允褂霉_的數(shù)據(jù)集,例如 IMDb 電影評論數(shù)據(jù)集、20 Newsgroups 新聞數(shù)據(jù)集等,也可以自己收集和標注數(shù)據(jù)。
加載模型:使用 Python 編程語言和相應的深度學習框架(例如 PyTorch、TensorFlow 等)加載 GPT-2 模型??梢允褂妙A訓練的模型,也可以從頭開始訓練一個新的模型。
準備數(shù)據(jù):將數(shù)據(jù)集中的文本轉換為模型可以處理的格式。可以使用一些預處理技術,例如分詞、詞向量化、序列填充等。
定義模型結構:在加載預訓練模型的基礎上,需要添加一個分類層,以輸出分類結果??梢赃x擇不同的分類層結構,例如全連接層、卷積神經(jīng)網(wǎng)絡等。
訓練模型:使用準備好的數(shù)據(jù)集和定義好的模型結構,對模型進行微調(diào),以適應特定的分類任務??梢允褂靡恍﹥?yōu)化算法和訓練技巧,例如隨機梯度下降、學習率調(diào)整、正則化等。
測試模型:在訓練完成后,使用測試集對模型進行評估,計算模型的準確率、召回率、F1 值等指標,以確定模型的性能。
預測新數(shù)據(jù):使用訓練好的模型對新的文本數(shù)據(jù)進行分類,輸出相應的標簽。
需要注意的是,GPT-2 模型通常用于生成文本任務,其主要優(yōu)勢在于生成高質量、連貫的語言模型。在文本分類任務中,如果數(shù)據(jù)集較小,可能無法發(fā)揮 GPT-2 模型的優(yōu)勢,因此可以考慮使用更簡單、更輕量級的模型,例如卷積神經(jīng)網(wǎng)絡、循環(huán)神經(jīng)網(wǎng)絡等。
三、只需要十分之一數(shù)據(jù),就能通關四大視覺任務,居然還開源了
Github鏈接:https://github.com/opengvlab
家人們,你們有沒有這種苦惱?
搬一次家就換一次家具,那些又貴又重的家具既不好搬運,又不好全部帶走。
下一次又重新購置一遍家具,浪費錢不說,關鍵是來來回回都做一樣的事情!家具還沒用過幾次,利用率不高呀!
這種搬家的苦惱,就好比AI領域,做幾個任務就需要開發(fā)幾個高度定制的模型,不僅所需的數(shù)據(jù)采集量非常大,每次還都得從頭標注。既提不起數(shù)據(jù)的學習效率,又耗費巨大的數(shù)據(jù)獲取成本。
光是AI前端研究就耗費如此巨大的精力,更別提應用場景中數(shù)以萬計的長尾任務。
那怎么辦?
做一款通用的深度學習模型,才是關鍵。
1 通用,才是技術根本
目前,通用語言模型(GLM)已經(jīng)取得了令人矚目的進展,比如BERT、T5和GPT-3,它們在應對廣泛的語言下游任務時已經(jīng)游刃有余。
相形之下,通用視覺模型(GVM)的研究遲遲未交出一份令人滿意的答卷。
以往的大多數(shù) GVM 研究主要利用一種監(jiān)督信號來源,如 ViT-G/14 采用有標簽監(jiān)督,SEER 采用樣本的不同增強之間的對比學習,CLIP采用圖片文本對進行監(jiān)督。如果是在單個監(jiān)督信號下進行的預訓練,這幾種范式確實能夠生成在固定場景下表現(xiàn)良好的模型。但如果用在場景多元、任務多樣的下游場景,這些模型就難以勝任了。
比如現(xiàn)在最火的自動駕駛, 汽車 處于移動狀態(tài),既要看到路況,又要看到紅綠燈,還要注意行人,甚至在智能座艙興起后,還要和語言技術、LBS場景服務協(xié)同,這么多的感知數(shù)據(jù)與協(xié)同任務,這么多隨機的新任務,無論在體量還是維度方面,都對視覺模型的要求極大提高。
這時,打造一款通用視覺模型,降低研發(fā)門檻,尤其是學術界的時間成本、資金成本,才能暢享下游的極致場景體驗。
去年11月,上海人工智能實驗室聯(lián)合商湯 科技 、香港中文大學、上海交通大學發(fā)布通用視覺技術體系“書生”(INTERN),一套持續(xù)學習框架,用于系統(tǒng)化解決當下人工智能視覺領域中存在的任務通用、場景泛化和數(shù)據(jù)效率等一系列瓶頸問題。
前不久,上海人工智能實驗室聯(lián)合商湯 科技 發(fā)布通用視覺開源平臺OpenGVLab,面向學術界和產(chǎn)業(yè)界開放其超高效預訓練模型、超大規(guī)模公開數(shù)據(jù)集,以及業(yè)內(nèi)首個針對通用視覺模型的評測基準。
這些開源技術,究竟有何魔力?
2 大力出奇跡,打造通用視覺模型
“書生” (INTERN),就是練就通用視覺能力的底層技術。
從技術實現(xiàn)上講,“書生”技術體系由由七大模塊組成,包括三個基礎設施模塊和四個訓練階段構成。
書生(INTERN)結構圖
首先,通用視覺數(shù)據(jù)系統(tǒng)。
這是一個超大規(guī)模的精標數(shù)據(jù)集,擁有100億個樣本和各種監(jiān)督信號,并依照四大視覺任務分別設置了四個數(shù)據(jù)子集:多模態(tài)數(shù)據(jù)GV-D- 10B分類標注的GV-Dc-36M、檢測標注的GV-Dd-3M、分割標注的GV-Ds-143K。
另外,這一數(shù)據(jù)集還包含11.9萬的標簽系統(tǒng),不僅涵蓋了自然界的眾多領域和目前計算機視覺研究中的幾乎所有標簽,還擴充了大量細粒度標簽,涵蓋各類圖像中的屬性、狀態(tài)等。
而這,就是書生“大力出奇跡”的一大注腳。
其次,通用視覺模型結構。
它是由一個具有CNN和Transformer的統(tǒng)一搜索空間構建而成。
為何要建立這樣的混合結構?要知道,多年來,卷積神經(jīng)網(wǎng)絡(CNN)一直主導著視覺表征學習,并在圖像分類、目標檢測和語義分割等下游任務中表現(xiàn)出穩(wěn)定的可遷移性。但最近幾年,Vision Transformer (ViT)僅使用普通的Transformer結構就能作為圖像編碼模型在ImageNet-1k上取得媲美 CNN 的性能,在大規(guī)模數(shù)據(jù)集上 ViT 更是展示出比 CNN 更大的潛力。
盡管ViT在性能上有優(yōu)點,但純Transformer網(wǎng)絡相比卷積神經(jīng)網(wǎng)絡缺乏某些歸納偏置(inductive biases),因此需要更多的數(shù)據(jù)和計算資源。此外,自注意的計算成本相對于輸入的數(shù)量是平方的,限制了對高輸入分辨率的應用。因此,將CNN和Transformer和MLP結合起來,平衡效率和有效性兩個方面,才是模型通用的關鍵。
這種兼具更好的泛化能力和更高的模型容量的模型結構名為MetaNet。在MetaNet網(wǎng)絡結構族里面進行網(wǎng)絡結構搜索,從而得到最優(yōu)的一個模型訓練結構。
統(tǒng)一搜索的MetaNet架構:Conv和Trans分別表示卷積和Transformer。C和S為每一階輸出通道數(shù)和步幅。
具體來看,MetaNet不僅基于強化學習 的PPO算法提出了統(tǒng)一搜索架構,并且,為了避免傳統(tǒng)的下采樣模塊會成為模型性能的瓶頸,“書生“結合了包含 local-global-DSM (LG_DSM) 和 global-DSM (G-DSM)的context-aware down-sampling modules (DSM),用來代替原本的下采樣模塊。
因此,在淺層,模型依然使用卷積來提取特征,但在深層,模型卻能將Transformer模塊和LG-DSM結合使用,以便于更好地提取全局信息。
同時,書生還基于最大的MetaNet-B15蒸餾出了多達13種不同的模型結構,共24種不同的模型權重,現(xiàn)已全部開源。
這些模型結構基本涵蓋了現(xiàn)有市面上大部分的主流backbone,不僅能夠很輕易地遷移到所需要的算法框架作為新網(wǎng)絡預訓練的初始化,而且只需要更短的訓練時間就可以達到比原來更好的訓練效果。
MetaNet 模型與其他模型結構比較,結果如下:
基于卷積、Transformer和兩者混合的結構,分別用C,T和H表示,可以看出,在圖像分類性能上,MetaNet系列的MN-B1,MN-B4和MN-B7,和其他的SOTA模型相比,不僅有更高的精度,還有更低的FLOPS和參數(shù)量。
除了分類任務,把MetaNet做為檢測和分割的backbone,在COCO數(shù)據(jù)集上使用Mask R-CNN結構訓練,結果發(fā)現(xiàn):在模型參數(shù)量更小的前提下,MN-B4比Swin-T精度高出2到4個點。另外還在ADE20K數(shù)據(jù)集上進行了語義分割任務,MN-B4的mIoU指標比Swin-T高出5個點之多。
上述兩個實驗結果表明,MetaNet系列模型結構,在模型精度與計算量之間,都達到了新的SOTA!
最后,通用視覺評測基準。
視覺評測基準GV-B ,就像是一個「擂臺」。
如下表所示,測評基準收集了 26 個下游任務數(shù)據(jù)集,囊括了 4 種視覺任務類型:分類,檢測,分割和深度估計。
在設置上,該基準引入了百分比樣本(percentage-shot),只需要選取整個數(shù)據(jù)集的一部分,例如 10%、20% ,對比縮小下游任務的訓練數(shù)據(jù)量后的模型性能。
與傳統(tǒng)的少樣本設置相比,這種百分比樣本設置可以很好地保留原始數(shù)據(jù)集的長尾分布等屬性,并減輕對樣本選擇的敏感性。因為有一些數(shù)據(jù)集樣本類別分布不平衡,比如下表中的VOC07+12,百分比數(shù)據(jù)的劃分方式卻會繼承這種分布情況。
右側三列avg,min和max,分別表示在10%的數(shù)據(jù)中,不同類別樣本數(shù)量的平均值,最小值和最大值。
結合上述數(shù)據(jù)集和任務類型,論文選取了一些具有代表性的模型來做評測對比。為了比較公平性,該對比使用了這些模型的官方預訓練權重。這些模型包括:
有了超大精標數(shù)據(jù)集、模型結構,以及評測基準后,已經(jīng)是萬事俱備,只欠訓練。
書生作為中國古代讀書人的經(jīng)典形象,代表著一個通過不斷學習、不斷成長進而擁有各方面才能的人格化角色:從基礎的知識技能學習開始,到對多種專業(yè)知識觸類旁通,進而成長為擁有通用知識的通才。借此意象,“書生”(INTERN)系統(tǒng)可通過持續(xù)學習,舉一反三,逐步實現(xiàn)通用視覺領域的融會貫通,最終實現(xiàn)靈活高效的模型部署。
下面就來看看,這套系統(tǒng)是如何通過訓練,一步步從生手變成專家再到多面手,最終在各種任務中大顯身手。
第一階段,訓練的是基礎能力,被稱為“基礎模型”(Amateur)。
然而CLIP需要400M的圖像-文本對進行前訓練,囿于極大的數(shù)據(jù)量,CLIP很難進一步發(fā)展。但“書生”提出了一種新的訓練范式,DeCLIP(Data efficient CLIP ),能夠同時使用來自圖像-文本、圖像-圖像和文本-文本對的監(jiān)督信號進行模型預訓練,從而更有效地實現(xiàn)通用性。
此外,為了充分利用大規(guī)模多模態(tài)數(shù)據(jù)獲取基礎模型的優(yōu)勢,這一階段提出了Upstream-Amateur (Up-A)視覺語言預訓練框架,同時挖掘模態(tài)內(nèi)和跨模態(tài)知識。
這一訓練框架分為兩個預訓練階段:Upstream-Amateur for Global Representation (Up-A-G)和Upstream-Amateur for Local Representation (Up-A-L)。
其中,Up-A-G(左)使用群體監(jiān)督功能,從更豐富的監(jiān)督中學習。Up-A-L(右)采用局部自我監(jiān)督學習方法,對訓練好的視覺-語言模型進行調(diào)整,從而提高自身在密集預測CV任務中的表現(xiàn)。
Upstream-Amateur的框架
得益于這些內(nèi)在的監(jiān)督,DeCLIP-ResNet50可以在ImageNet上實現(xiàn)60.4%的zero-shot 精度第一。這比CLIP-ResNet50高出0.8%,數(shù)據(jù)使用量少了81%。當遷移到下游任務時,DeCLIP-ResNet50在11個視覺數(shù)據(jù)集中有8個優(yōu)于CLIP。
更關鍵的是,訓練完成的Upstream-Amateur為后續(xù)的訓練階段提供了一個很高的起點。
第二階段,訓練的是專業(yè)能力,被稱為“專家模型”(Expert)。
Up-A階段得到的基礎模型,在一般的視覺識別問題上顯示出優(yōu)異的性能。但要完全掌握檢測、分割等更具體的任務,還需要在每個任務中進行更專業(yè)的預訓練,這就促成了第二個階段的到來,專家模型。
對于每個專家,“書生”采用了一種簡單的多頭設計,每個頭是一個特定數(shù)據(jù)集的子網(wǎng)絡,從一個公共的、共享的“主干”分支出來。比如Up-E (C)、Up-E (D)和Up-E (S),分別用于圖像分類、對象檢測和語義分割。
第三階段,訓練的是組合能力,被稱為“通才模型”(Generalist)。
上述的多任務是指不同數(shù)據(jù)集(如ImageNet和CIFAR)的一個視覺問題(如分類),或一個數(shù)據(jù)集的多個視覺問題(如分類和檢測)。但關鍵是,如何將專家整合到一個統(tǒng)一的模型中,獲得一個更加通用的視覺模型。因此,在預訓練“專家”階段之后,又將“通才”作為第三個預訓練階段,以進一步統(tǒng)一特征表示。
“書生”提出了一個新的范式,名為“混合參數(shù)共享”,從而開發(fā)一個名為“多面手”的通才模型。
具體來說,由于專家捕獲的知識是相互關聯(lián)的,當專家的特征融合為一個共享的表示形式時,再利用基于軟共享的跨任務知識轉移和基于硬共享的通用表示學習的方法,在不引入任務沖突的情況下在專家之間傳遞信息(特征轉移),從而進一步提高了多任務訓練的模型(專家)性能,即“通才”能力。
在結構上,通才模型是所有專家的一個相互關聯(lián)的版本,因此可以把每個“專家主干”稱為“通才分支”。此外,我們還可以根據(jù)訓練相應專家的任務將通才中的每個分支分為圖像、補丁和像素。但無論是軟共享還是硬共享,都意味著從專家模型到通才模型的一次躍升。
在經(jīng)歷了前三個訓練階段模塊后,終于來到最后的任務遷移階段 (Adaptation)。
這個階段屬于技術鏈條的下游,用來解決各式各樣不同類型的任務,而這也是最考驗“書生”舉一反三能力的時刻。它需要在這個階段把之前學到的通用知識,融會貫通地應用到不同特定任務中。
在此之前,很多遷移學習方法確實取得了很多進步,但問題是,這些方法既沒有利用上游預訓練中的隱含信息,也沒有考慮到下游數(shù)據(jù)在少鏡頭場景中的不足。
因此,“書生”提出了一種Multi-stage Fine-tuning (MF)方法,緩解在數(shù)據(jù)較少的情況下傳輸?shù)睦щy,再通過將上游數(shù)據(jù)編碼成生成模型,即VQ-GAN,可以將預訓練的模型轉移到多個任務和領域,而無需每次都使用上游數(shù)據(jù),而這也使得“書生”更具通用性和可擴展性。
多級微調(diào)(MF)概述:VQ-GAN模型首先在第一階段使用上游數(shù)據(jù)進行訓練,然后在第二階段由它重構下游數(shù)據(jù)。在此之后,第三階段只對新增任務的特定參數(shù)進行重新表示的圖像訓練,第四階段則通過下游數(shù)據(jù)對整個模型進行微調(diào)。
至此,一個具有持續(xù)學習能力的通用視覺模型終于出世。
而具體有哪些提升,不如看一下更直觀的實驗數(shù)據(jù)對比!
3 一網(wǎng)打盡視覺領域四大任務
視覺領域,任務繁多,主流任務包含分類、目標檢測、語義分割、深度估計四大類型。
在這四大任務中,最強大的視覺模型還是去年OpenAI發(fā)布的CLIP模型。但相比較而言,“書生”則在準確率和數(shù)據(jù)使用效率上都有所提升。
1、精度表現(xiàn)
通過對“書生”訓練出的模型在GV-B上的評測對比,發(fā)現(xiàn)經(jīng)過多階段預訓練的MetaNet精度表現(xiàn)優(yōu)異。
在ImageNet等26個最具代表性的下游場景中, “書生”在分類、目標檢測、語義分割及深度估計等四大任務上,平均錯誤率分別降低了40.2%、47.3%、34.8%和9.4%。
書生(INTERN)與CLIP-R50x16在不同樣本量上的性能對比,正確率展示
2、數(shù)據(jù)使用效率
“書生”在數(shù)據(jù)效率方面的提升尤為矚目:只需要1/10的下游數(shù)據(jù),就能超過CLIP基于完整下游數(shù)據(jù)訓練的準確度。
以CLIP-R50x16和Up-G MN-B15在GV-B的評測對比為例,分別在分類、目標檢測、語義分割、深度估計四大類型的26個下游任務數(shù)據(jù)集上進行了評測,僅使用了10%數(shù)據(jù)進行訓練的Up-G MN-B15模型,在絕大部分數(shù)據(jù)集上都能比使用了全部訓練數(shù)據(jù)的CLIP-R50有更好的精度表現(xiàn)。這表明,經(jīng)過多階段預訓練的MetaNet具有極強的泛化能力,能夠在僅有少量的訓練樣本情況下,達到SOTA的精度表現(xiàn)。
在下游視覺場景中,小樣本訓練帶來的是極高的訓練速度,以及極低的訓練成本。
例如在花卉種類識別任務上,“書生“只需要每一類型的花卉提供兩個訓練樣本,就能實現(xiàn)99.7%的準確率。
這個花卉數(shù)據(jù)集由102種英國常見的花組成,每個類別有40至258張圖片。其中包含有很大的比例、姿勢和光線變化。
102個類別的花卉數(shù)據(jù)集:
https://www.robots.ox.ac.uk/~vgg/data/flowers/102/index.html
4 通用視覺平臺,已正式開源
如此強大的通用視覺訓練模型已經(jīng)正式開源!
更關鍵的是,連同上述講到的標簽數(shù)據(jù)集、網(wǎng)絡結構以及評測基準,均在OpenGVLab被統(tǒng)一打包開源。
其中的網(wǎng)絡結構除了MetaNet,還包含大家普遍使用的ResNet, MobileNet, ViT, EfficientNet等,以滿足不同場景的應用,賦能計算機視覺。
然而,「書生」的布局不止于此。
OpenGVLab將與上海人工智能實驗室此前發(fā)布的OpenMMLab、OpenDILab一道,共同構筑開源體系OpenXLab,持續(xù)推進通用人工智能的技術突破和生態(tài)構建。
一位已經(jīng)使用過此次開源平臺的自動駕駛算法研究員表示:“書生系列模型充分覆蓋了從移動可部署的小模型,到超大規(guī)模自研結構,為行業(yè)帶來了希望,尤其是它的收斂速度,大幅節(jié)省了訓練開銷,是技術落地的一大助推器?!?
不僅是自動駕駛領域,智慧城市、智慧醫(yī)療、智慧交通,以及千千萬萬其他的智能化領域,都將獲得通用視覺模型帶來的技術紅利。
一位騰訊研究員大贊OpenGVLab:“能把這么大的工作開源出來真的是業(yè)界良心。簡單用了一下,確實比CLIP要更fine-grained(細粒度更高)?!?
而來自學界的師生也對此感慨有加:“OpenGVLab集成了大量各種量級的state-of-the-art(先進)模型,使用起來更得心應手,省去了對不同codebase、不同模型繁瑣調(diào)研的煩惱。”
換句話說,當那些代碼和公式脫去了枯燥乏味的外衣,人們才發(fā)現(xiàn)了真正的創(chuàng)造力。而這,也是技術創(chuàng)新與平臺開源的魅力所在。
往近了說,用這款通用視覺模型打比賽,怕不是獎金多到飛起!在技術生產(chǎn)力的道路上,又誕生了一個致富小妙招!
目前,“書生”技術報告《INTERN: A New Learning Paradigm Towards General Vision》已在arXiv平臺發(fā)布。
論文地址:arxiv.org/abs/2111.08687
四、BERT詳解(附帶ELMo、GPT 介紹)
首先我會詳細闡述 BERT 原理,然后簡單介紹一下 ELMO 以及 GPT
BERT 全稱為 B idirectional E ncoder R epresentation from T ransformer,是 Google 以 無監(jiān)督的方式利用大量無標注文本 「煉成」的語言模型,其架構為 Transformer 中的 Encoder(BERT=Encoder of Transformer)
我在 Transformer 詳解 中已經(jīng)詳細的解釋了所有 Transformer 的相關概念,這里就不再贅述
以往為了解決不同的 NLP 任務,我們會為該任務設計一個最合適的神經(jīng)網(wǎng)絡架構并做訓練,以下是一些簡單的例子
不同的 NLP 任務通常需要不同的模型,而設計這些模型并測試其 performance 是非常耗成本的(人力,時間,計算資源)。如果有一個能 直接處理各式 NLP 任務的通用架構 該有多好?
隨著時代演進,不少人很自然地有了這樣子的想法,而 BERT 就是其中一個將此概念付諸實踐的例子
Google 在預訓練 BERT 時讓它同時進行兩個任務:
1. 漏字填空
2. 下個句子預測
對正常人來說,要完成這兩個任務非常簡單。只要稍微看一下前后文就知道完形填空任務中 [MASK] 里應該填 退了 ;而 醒醒吧 后面接 你沒有妹妹 也十分合理(?)
接下來我會分別詳細介紹論文中這兩個任務的設計細節(jié)
在 BERT 中,Masked LM(Masked Language Model)構建了語言模型,簡單來說,就是 隨機遮蓋或替換 一句話里面的任意字或詞,然后讓模型通過上下文預測那一個被遮蓋或替換的部分,之后 做 Loss 的時候也只計算被遮蓋部分的 Loss ,這其實是一個很容易理解的任務,實際操作如下:
這樣做的好處是,BERT 并不知道 [MASK] 替換的是哪一個詞,而且 任何一個詞都有可能是被替換掉的,比如它看到的 apple 可能是被替換的詞 。這樣強迫模型在編碼當前時刻詞的時候 不能太依賴當前的詞 ,而要考慮它的上下文,甚至根據(jù)上下文進行 "糾錯"。比如上面的例子中,模型在編碼 apple 時,根據(jù)上下文 my dog is,應該 把 apple 編碼成 hairy 的語義而不是 apple 的語義
我們首先拿到屬于上下文的一對句子,也就是兩個句子,之后我們要在這兩個句子中加一些特殊的 token: [CLS]上一句話[SEP]下一句話[SEP] 。也就是在句子開頭加一個 [CLS] ,在兩句話之間和句末加 [SEP] ,具體地如下圖所示
可以看到,上圖中的兩句話明顯是連續(xù)的。如果現(xiàn)在有這么一句話 [CLS] 我的狗很可愛 [SEP] 企鵝不擅長飛行 [SEP] ,可見這兩句話就 不是連續(xù)的 。在實際訓練中,我們會讓這兩種情況出現(xiàn)的數(shù)量為** 1:1**
Token Embedding 就是正常的詞向量,即 PyTorch 中的 nn.Embedding()
Segment Embedding 的作用是用 embedding 的信息讓模型 分開上下句 ,我們給上句的 token 全 0,下句的 token 全 1,讓模型得以判斷上下句的起止位置,例如
Position Embedding 和 Transformer 中的不一樣,不是三角函數(shù),而是 學習出來的
BERT 預訓練階段實際上是將上述兩個任務結合起來,同時進行,然后將所有的 Loss 相加,例如
BERT 的 Fine-Tuning 共分為 4 種類型,以下內(nèi)容、圖片均來自臺大李宏毅老師 Machine Learning 課程 (以下內(nèi)容 圖在上,解釋在下)
為什么要用CLS?
這里李宏毅老師有一點沒講到,就是為什么要用第一個位置,即 [CLS] 位置的 output。這里我看了網(wǎng)上的一些博客,結合自己的理解解釋一下。因為 BERT 內(nèi)部是 Transformer,而 Transformer 內(nèi)部又是 Self-Attention, 所以 [CLS] 的 output 里面肯定含有整句話的完整信息 ,這是毋庸置疑的。但是 Self-Attention 向量中,自己和自己的值其實是占大頭的,現(xiàn)在假設使用 的 output 做分類,那么這個 output 中實際上會更加看重 ,而 又是一個有實際意義的字或詞,這樣難免會影響到最終的結果。但是 [CLS] 是沒有任何實際意義的,只是一個占位符而已,所以就算 [CLS] 的 output 中自己的值占大頭也無所謂。當然你 也可以將所有詞的 output 進行 concat,作為最終的 output
首先將問題和文章通過 [SEP] 分隔,送入 BERT 之后,得到上圖中黃色的輸出。此時我們還要訓練兩個 vector,即上圖中橙色和黃色的向量。首先將橙色和所有的黃色向量進行 dot product,然后通過 softmax,看哪一個輸出的值最大,例如上圖中 對應的輸出概率最大,那我們就認為 s=2
同樣地,我們用藍色的向量和所有黃色向量進行 dot product,最終預測得 的概率最大,因此 e=3。最終,答案就是 s=2,e=3
你可能會覺得這里面有個問題,假設最終的輸出 s>e 怎么辦,那不就矛盾了嗎?其實在某些訓練集里,有的問題就是沒有答案的,因此此時的預測搞不好是對的,就是沒有答案
以上就是 BERT 的詳細介紹,參考以下文章
ELMo是Embedding from language Model的縮寫,它通過無監(jiān)督的方式對語言模型進行預訓練來學習單詞表示
這篇論文的想法其實非常簡單,但是效果卻很好。它的思路是用 深度的雙向 Language Model 在大量未標注數(shù)據(jù)上訓練語言模型 ,如下圖所示
在實際任務中,對于輸入的句子,我們使用上面的語言模型來處理它,得到輸出向量,因此這可以看作是一種 特征提取 。但是 ELMo 與普通的 Word2Vec 或 GloVe 不同,ELMo 得到的 Embedding 是 有上下文信息 的
具體來說,給定一個長度為 N 的句子,假設為 ,語言模型會計算給定 的條件下出現(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)的特定任務,我們會把不同層的隱狀態(tài)組合起來,具體組合的參數(shù)是根據(jù)不同的特定任務學習出來的,公式如下:
GPT 得到的語言模型參數(shù)不是固定的,它會根據(jù)特定的任務進行調(diào)整(通常是微調(diào)),這樣的到的句子表示能更好的適配特定任務。它的思想也很簡單,使用 單向 Transformer 學習一個語言模型 ,對句子進行無監(jiān)督的 Embedding,然后 根據(jù)具體任務對 Transformer 的參數(shù)進行微調(diào) 。GPT 與 ELMo 有兩個主要的區(qū)別:
這里解釋一下上面提到的 單向 Transformer 。在 Transformer 的文章中,提到了 Encoder 與 Decoder 使用的 Transformer Block 是不同的。在 Decoder Block 中,使用了 Masked Self-Attention ,即句子中的每個詞都只能對 包括自己在內(nèi)的前面所有詞進行 Attention ,這就是單向 Transformer。GPT 使用的 Transformer 結構就是將 Encoder 中的 Self-Attention 替換成了 Masked Self-Attention ,具體結構如下圖所示
訓練的過程也非常簡單,就是將 n 個詞的詞嵌入 ( ) 加上位置嵌入 ( ),然后輸入到 Transformer 中,n 個輸出分別預測該位置的下一個詞
這里的位置編碼沒有使用傳統(tǒng) Transformer 固定編碼的方式,而是動態(tài)學習的
Pretraining 之后,我們還需要針對特定任務進行 Fine-Tuning。假設監(jiān)督數(shù)據(jù)集合 的輸入 是一個詞序列 ,輸出是一個分類的標簽 ,比如情感分類任務
我們把 輸入 Transformer 模型,得到最上層最后一個時刻的輸出 ,將其通過我們新增的一個 Softmax 層(參數(shù)為 )進行分類,最后用 CrossEntropyLoss 計算損失,從而根據(jù)標準數(shù)據(jù)調(diào)整 Transformer 的參數(shù)以及 Softmax 的參數(shù) 。這等價于最大似然估計:
正常來說,我們應該調(diào)整參數(shù)使得 最大,但是 為了提高訓練速度和模型的泛化能力 ,我們使用 Multi-Task Learning,同時讓它最大似然 和
這里使用的 還是之前語言模型的損失(似然),但是使用的數(shù)據(jù)不是前面無監(jiān)督的數(shù)據(jù) ,而是使用當前任務的數(shù)據(jù) ,而且只使用其中的 ,而不需要標簽
針對不同任務,需要簡單修改下輸入數(shù)據(jù)的格式,例如對于相似度計算或問答,輸入是兩個序列,為了能夠使用 GPT,我們需要一些特殊的技巧把兩個輸入序列變成一個輸入序列
ELMo 和 GPT 最大的問題就是 傳統(tǒng)的語言模型是單向的 —— 我們根據(jù)之前的歷史來預測當前詞。但是我們不能利用后面的信息。比如句子 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 理論上是可以同時關注到這兩個詞的,但是根據(jù)前面的介紹,為了使用 Transformer 學習語言模型,必須 用 Mask 來讓它看不到未來的信息 ,所以它也不能解決這個問題的
根據(jù)上文內(nèi)容預測下一個可能跟隨的單詞,就是常說的自左向右的語言模型任務,或者反過來也行,就是根據(jù)下文預測前面的單詞,這種類型的LM被稱為自回歸語言模型。(GPT,ELMO)GPT 就是典型的自回歸語言模型。ELMO盡管看上去利用了上文,也利用了下文,但是本質上仍然是自回歸LM,這個跟模型具體怎么實現(xiàn)有關系。ELMO是做了兩個方向(從左到右以及從右到左兩個方向的語言模型),但是是分別有兩個方向的自回歸LM,然后把LSTM的兩個方向的隱節(jié)點狀態(tài)拼接到一起,來體現(xiàn)雙向語言模型這個事情的。所以其實是兩個自回歸語言模型的拼接,本質上仍然是自回歸語言模型。
自回歸語言模型有優(yōu)點有缺點,缺點是只能利用上文或者下文的信息,不能同時利用上文和下文的信息,當然,貌似ELMO這種雙向都做,然后拼接看上去能夠解決這個問題,因為融合模式過于簡單,所以效果其實并不是太好。它的優(yōu)點,其實跟下游NLP任務有關,比如生成類NLP任務,比如文本摘要,機器翻譯等,在實際生成內(nèi)容的時候,就是從左向右的, 自回歸語言模型天然匹配這個過程 。而Bert這種DAE模式,在生成類NLP任務中,就面臨訓練過程和應用過程不一致的問題,導致 生成類的NLP任務到目前為止都做不太好 。
自回歸語言模型只能根據(jù)上文預測下一個單詞,或者反過來,只能根據(jù)下文預測前面一個單詞。相比而言,Bert通過 在輸入X中隨機Mask掉一部分單詞 ,然后預訓練過程的主要任務之一是根據(jù)上下文單詞來預測這些被Mask掉的單詞,如果你對Denoising Autoencoder比較熟悉的話,會看出,這確實是典型的DAE的思路。那些被Mask掉的單詞就是在輸入側加入的所謂噪音。類似Bert這種預訓練模式,被稱為DAE LM。
這種DAE LM的優(yōu)缺點正好和自回歸LM反過來,它能比較自然地融入雙向語言模型,同時看到被預測單詞的上文和下文,這是好處。缺點是啥呢? 主要在輸入側引入[Mask]標記,導致預訓練階段和Fine-tuning階段不一致的問題 ,因為Fine-tuning階段是看不到[Mask]標記的。DAE嗎,就要引入噪音,[Mask] 標記就是引入噪音的手段,這個正常。
XLNet的出發(fā)點就是:能否 融合自回歸LM和DAE LM兩者的優(yōu)點 。就是說如果站在自回歸LM的角度,如何引入和雙向語言模型等價的效果;如果站在DAE LM的角度看,它本身是融入雙向語言模型的,如何拋掉表面的那個[Mask]標記,讓預訓練和Fine-tuning保持一致。當然,XLNet還講到了一個Bert被Mask單詞之間相互獨立的問題。
以上就是關于gpt模型開源嗎知乎相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀: