<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          CV和NLP中的無監(jiān)督預(yù)訓(xùn)練(生成式BERT/iGPT和判別式SimCLR/SimCSE)

          共 5406字,需瀏覽 11分鐘

           ·

          2021-06-03 10:24

          ↑ 點(diǎn)擊藍(lán)字 關(guān)注極市平臺

          作者丨陀飛輪
          來源丨h(huán)ttps://zhuanlan.zhihu.com/p/372744750
          編輯丨極市平臺

          極市導(dǎo)讀

           

          本文歸納了一下CV和NLP各自領(lǐng)域的生成式和判別式的代表作及設(shè)計(jì)思路 >>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿

          在之前的文章中講過unsupervised learning主要分為生成式和判別式,那么unsupervised pretrain自然也分為生成式和判別式。目前CV和NLP都出現(xiàn)了非常強(qiáng)大的無監(jiān)督預(yù)訓(xùn)練,并且在生成式和判別式都各有造詣,本文主要想歸納一下CV和NLP各自領(lǐng)域的生成式和判別式的代表作及設(shè)計(jì)思路。其中CV的生成式以iGPT為例,判別式以SimCLR為例;NLP的生成式以BERT為例,判別式以SimCSE為例。有意思的是,iGPT的靈感來源于BERT,而SimCSE的靈感來源于SimCLR,這充分展現(xiàn)了CV和NLP兩個方向相互哺育,相輔相成的景象。

          BERT

          BERT之前主要有兩種主流的無監(jiān)督預(yù)訓(xùn)練方法:feature-based和fine-tuning。

          feature-based方法

          之前的ELMo無監(jiān)督預(yù)訓(xùn)練屬于feature-based的方法,先獨(dú)立訓(xùn)練從左到右和從右到左的LSTM,然后將兩部分輸出conate得到的features直接應(yīng)用于下游任務(wù)。

          fine-tuning方法

          GPT和BERT屬于fine-tuning方法,fine-tuning方法預(yù)訓(xùn)練的features不直接應(yīng)用于下游任務(wù),需要針對下游任務(wù)進(jìn)行fine-tuning。

          GPT使用從左到右的單向Transformer進(jìn)行預(yù)訓(xùn)練,然后針對下游任務(wù)進(jìn)行fine-tuning。

          BERT使用雙向Transformer進(jìn)行預(yù)訓(xùn)練,相較于GPT,更加充分的利用上下文信息,然后針對下游任務(wù)進(jìn)行fine-tuning。

          Input/Output Representations

          為了BERT更好的應(yīng)用于下游任務(wù),BERT預(yù)訓(xùn)練的時(shí)候輸入可以模糊表示,比如既可以表示成單個句子也可以表示成一對句子(<Question,Answer>)。輸入的第一個token總是特指classification token [CLS],對應(yīng)的輸出位置用來做分類任務(wù)。一對句子作為輸入時(shí),表示成單個序列,通過特殊的token [SEP]來分開不同句子,并且對每個輸入token加上一個可學(xué)習(xí)的embedding來指示屬于句子A還是屬于句子B。如上面左圖所示,將input embedding表示為E,token [CLS]對應(yīng)的輸出向量是C,第i個input token的輸出是

          其中input embedding由Position Embeddings、Segment Embeddings和Token Embeddings三部分相加得到。Position Embeddings指示不同token的順序,Segment Embeddings指示不同token屬于哪個句子,Token Embeddings指示不同token的語義信息。

          Pre-training BERT

          BERT設(shè)計(jì)了兩種無監(jiān)督任務(wù)進(jìn)行預(yù)訓(xùn)練,可以更好的應(yīng)用到下游任務(wù)。

          Task #1:Masked LM

          為了訓(xùn)練一個深度雙向的Transformer,BERT以一定比例隨機(jī)mask掉一些輸入tokens,然后對這些masked tokens進(jìn)行預(yù)測,這個任務(wù)稱之為Masked LM(MLM),靈感來源于完形填空任務(wù),通過上下文預(yù)測masked的word是什么,最終BERT采用了隨機(jī)mask掉15%的輸入tokens。

          雖然Masked LM任務(wù)可以獲得一個雙向的預(yù)訓(xùn)練模型,但是預(yù)訓(xùn)練和fine-tuning存在著gap,因?yàn)閒ine-tuning的時(shí)候,輸入是不存在[MASK]token的,為了緩解這種問題,實(shí)際訓(xùn)練的時(shí)候不總是采用[MASK] token來替換。其中[MASK] token有80%的概率被選中,random token有10%的概率被選中,還有10%的概率不改變token。

          Task #2:Next Sentence Prediction(NSP)

          很多下游任務(wù)是需要理解句子對之間的關(guān)系的,為了幫助下游任務(wù)更好的理解句子對之間的關(guān)系,BERT還設(shè)計(jì)了另一個預(yù)訓(xùn)練任務(wù)next sentence prediction(NSP)。具體的,選擇句子A和句子B作為預(yù)訓(xùn)練的輸入,有50%的概率B是A的下一個句子(標(biāo)記為IsNext),有50%的概率B不是A的下一個句子(標(biāo)記為NotNext),實(shí)際上就是一個二分類模型。如上面左圖所示,C被用于NSP任務(wù)進(jìn)行二分類。

          iGPT

          iGPT和BERT思路非常類似,只不過iGPT是在圖像上進(jìn)行的。

          iGPT首先將輸入圖片resize然后reshape成1維序列。然后選擇兩種方法進(jìn)行預(yù)訓(xùn)練,其中Autoregressive的目標(biāo)是預(yù)測next pixel prediction(類似GPT單向模型),BERT的目標(biāo)是masked pixel prediction(類似BERT的MLM任務(wù))。最后,iGPT用linear probes(直接使用feature,類似feature-based的方法)或著fine-tuning兩種方法來評估學(xué)習(xí)到的特征。

          iGPT可以通過圖像的上下文信息預(yù)測出masked的pixel,跟BERT有著異曲同工之妙。

          看一下iGPT的生成效果,iGPT可以通過已知的上下文內(nèi)容對缺失部分進(jìn)行補(bǔ)充,看起來非常的邏輯自洽啊,tql

          SimCLR

          SimCLR是一種非常簡單直接的self-supervised方法。SimCLR框架流程如下:

          1.對于每張輸入圖片隨機(jī)進(jìn)行數(shù)據(jù)增強(qiáng)得到兩個不同的views,同一張圖的兩個views可以認(rèn)為是positive pair。

          2.每張輸入圖片的兩個views通過相同的encoder產(chǎn)生兩個表示向量。

          3.每張輸入圖片的兩個表示向量通過相同的projection head產(chǎn)生兩個最終的向量。

          4.最后對一個batch得到的最終向量進(jìn)行對比學(xué)習(xí),拉近positive pair,排斥negative pair。

          對比學(xué)習(xí)的函數(shù)如下:

          偽代碼如下:

          一個batch有N個圖片,通過不同的數(shù)據(jù)增強(qiáng)產(chǎn)生2N個views,一個positive pair可以交換位置得到兩個loss,因此可以將一對positive pair的loss寫成positive pair交換位置的兩個loss之和的平均值,那么總的loss則是2N個views的loss的平均值。

          SimCSE

          看到計(jì)算機(jī)視覺的self-supervised大獲成功之后,自然語言處理也開始嘗試self-supervised。其中SimCSE的方法非常的簡單有效,在Sentence Embeddings的任務(wù)中大幅度超過之前的方法。

          SimCSE名字應(yīng)該是借鑒了SimCLR。SimCSE提出了兩種方法,一種是Unsupervised SimCSE,另一種是Supervised SimCSE。

          Unsupervised SimCSE的整體框架和SimCLR基本上保持一致。如圖(a)所示,將同一個句子通過兩種隨機(jī)的mask得到兩個postive pair(實(shí)線),不同句子的mask句子是negative pair(虛線),然后通過對比學(xué)習(xí)的方法,拉近positive pair,排斥negative pair。其中隨機(jī)mask句子其實(shí)就是句子的數(shù)據(jù)增強(qiáng),SimCSE實(shí)驗(yàn)發(fā)現(xiàn)隨機(jī)mask掉10%效果最好。

          Supervised SimCSE的positive pair和negative pair是有標(biāo)注的。其中不同句子的entailment和contradiction都是negative pair,只有相同句子的entailment是positive pair。如圖(b)所示,第一個句子跟自己的entailment是positive pair(實(shí)線),跟其他句子的entailment/contradiction都是positive pair(虛線)。

          上圖align表示positive pair拉近的能力(越小越好),uniform表示negative pair排斥的能力(越小越好)。最終SimCSE可視化分析發(fā)現(xiàn),Unsup. SimCSE可以得到更好的align和uniform,SimCSE通過有標(biāo)注的監(jiān)督信號,可以進(jìn)一步的提升align和uniform。

          另外,SimCSE還有各種消融實(shí)驗(yàn)和可視化分析,非常精彩,建議看原文細(xì)細(xì)品味

          總結(jié)

          下面引用lecun的一張圖,談一談對CV和NLP中無監(jiān)督預(yù)訓(xùn)練的看法

          lecun通過Low dim -> High dim、Discrete -> Continuous和Less uncertainty -> More uncertainty三個維度來表示CV和NLP中不同無監(jiān)督方法的位置。文本是離散的,不確定性低,維度低;而圖像是連續(xù)的,不確定性高,維度高模態(tài)的不同,導(dǎo)致了無監(jiān)督的處理方式上的不同。

          NLP任務(wù)因?yàn)榇_定性更高,生成式無監(jiān)督預(yù)訓(xùn)練方法可以非常好進(jìn)行預(yù)測(如BERT),而由于CV任務(wù)不確定性更高,導(dǎo)致需要設(shè)計(jì)更自由靈活的方法,對比方法相比于生成方法自由度更高,可能更加適合CV任務(wù)作為無監(jiān)督預(yù)訓(xùn)練方法。

          猜測未來NLP領(lǐng)域生成式和判別式會出現(xiàn)并存的局面,sentence級別任務(wù)傾向于使用判別式,word級別任務(wù)傾向于使用生成式。而CV領(lǐng)域判別式會占主導(dǎo)地位,一方面由于圖像是二維的,生成式計(jì)算量會更龐大,另一方面判別式的自由度會更高一些。

          Reference

          [1] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

          [2] Generative Pretraining from Pixels

          [3] A Simple Framework for Contrastive Learning of Visual Representations

          [4] SimCSE: Simple Contrastive Learning of Sentence Embeddings

          [5] Self-supervised learning: The dark matter of intelligence (facebook.com)


          本文亮點(diǎn)總結(jié)


          1.GPT和BERT屬于fine-tuning方法,fine-tuning方法預(yù)訓(xùn)練的features不直接應(yīng)用于下游任務(wù),需要針對下游任務(wù)進(jìn)行fine-tuning。

          2.為了BERT更好的應(yīng)用于下游任務(wù),BERT預(yù)訓(xùn)練的時(shí)候輸入可以模糊表示,比如既可以表示成單個句子也可以表示成一對句子(<Question,Answer>)。輸入的第一個token總是特指classification token [CLS],對應(yīng)的輸出位置用來做分類任務(wù)。

          如果覺得有用,就請分享到朋友圈吧!

          △點(diǎn)擊卡片關(guān)注極市平臺,獲取最新CV干貨

          公眾號后臺回復(fù)“83”獲取朱思語:基于深度學(xué)習(xí)的視覺稠密建圖和定位播鏈接~


          極市干貨
          YOLO教程:一文讀懂YOLO V5 與 YOLO V4大盤點(diǎn)|YOLO 系目標(biāo)檢測算法總覽全面解析YOLO V4網(wǎng)絡(luò)結(jié)構(gòu)
          實(shí)操教程:PyTorch vs LibTorch:網(wǎng)絡(luò)推理速度誰更快?只用兩行代碼,我讓Transformer推理加速了50倍PyTorch AutoGrad C++層實(shí)現(xiàn)
          算法技巧(trick):深度學(xué)習(xí)訓(xùn)練tricks總結(jié)(有實(shí)驗(yàn)支撐)深度強(qiáng)化學(xué)習(xí)調(diào)參Tricks合集長尾識別中的Tricks匯總(AAAI2021
          最新CV競賽:2021 高通人工智能應(yīng)用創(chuàng)新大賽CVPR 2021 | Short-video Face Parsing Challenge3D人體目標(biāo)檢測與行為分析競賽開賽,獎池7萬+,數(shù)據(jù)集達(dá)16671張!


          CV技術(shù)社群邀請函 #

          △長按添加極市小助手
          添加極市小助手微信(ID : cvmart2)

          備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳)


          即可申請加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群


          每月大咖直播分享、真實(shí)項(xiàng)目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與 10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~



          覺得有用麻煩給個在看啦~  
          瀏覽 70
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产成人三级 | 超级人人干 | 欧美性爱少妇极度另类 | 美日韩在线视频 | www.欧美精品 |