1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 5406字,需瀏覽 11分鐘

         ·

        2021-06-03 10:24

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

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

        極市導(dǎo)讀

         

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

        在之前的文章中講過unsupervised learning主要分為生成式和判別式,那么unsupervised pretrain自然也分為生成式和判別式。目前CV和NLP都出現(xiàn)了非常強大的無監(jiān)督預(yù)訓(xùn)練,并且在生成式和判別式都各有造詣,本文主要想歸納一下CV和NLP各自領(lǐng)域的生成式和判別式的代表作及設(shè)計思路。其中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的方法,先獨立訓(xùn)練從左到右和從右到左的LSTM,然后將兩部分輸出conate得到的features直接應(yīng)用于下游任務(wù)。

        fine-tuning方法

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

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

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

        Input/Output Representations

        為了BERT更好的應(yīng)用于下游任務(wù),BERT預(yù)訓(xùn)練的時候輸入可以模糊表示,比如既可以表示成單個句子也可以表示成一對句子(<Question,Answer>)。輸入的第一個token總是特指classification token [CLS],對應(yīng)的輸出位置用來做分類任務(wù)。一對句子作為輸入時,表示成單個序列,通過特殊的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è)計了兩種無監(jiān)督任務(wù)進行預(yù)訓(xùn)練,可以更好的應(yīng)用到下游任務(wù)。

        Task #1:Masked LM

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

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

        Task #2:Next Sentence Prediction(NSP)

        很多下游任務(wù)是需要理解句子對之間的關(guān)系的,為了幫助下游任務(wù)更好的理解句子對之間的關(guān)系,BERT還設(shè)計了另一個預(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),實際上就是一個二分類模型。如上面左圖所示,C被用于NSP任務(wù)進行二分類。

        iGPT

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

        iGPT首先將輸入圖片resize然后reshape成1維序列。然后選擇兩種方法進行預(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)容對缺失部分進行補充,看起來非常的邏輯自洽啊,tql

        SimCLR

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

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

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

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

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

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

        偽代碼如下:

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

        SimCSE

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

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

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

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

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

        另外,SimCSE還有各種消融實驗和可視化分析,非常精彩,建議看原文細(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ù)因為確定性更高,生成式無監(jiān)督預(yù)訓(xùn)練方法可以非常好進行預(yù)測(如BERT),而由于CV任務(wù)不確定性更高,導(dǎo)致需要設(shè)計更自由靈活的方法,對比方法相比于生成方法自由度更高,可能更加適合CV任務(wù)作為無監(jiān)督預(yù)訓(xùn)練方法。

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

        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)


        本文亮點總結(jié)


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

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

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

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

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


        極市干貨
        YOLO教程:一文讀懂YOLO V5 與 YOLO V4大盤點|YOLO 系目標(biāo)檢測算法總覽全面解析YOLO V4網(wǎng)絡(luò)結(jié)構(gòu)
        實操教程:PyTorch vs LibTorch:網(wǎng)絡(luò)推理速度誰更快?只用兩行代碼,我讓Transformer推理加速了50倍PyTorch AutoGrad C++層實現(xiàn)
        算法技巧(trick):深度學(xué)習(xí)訓(xùn)練tricks總結(jié)(有實驗支撐)深度強化學(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)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術(shù)交流群


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



        覺得有用麻煩給個在看啦~  
        瀏覽 71
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            好爽又高潮又大免费视频 | 尹人大香蕉网 | 色黄视频在线播放 | 亚洲一区无码在线观看 | 东京热AV无码国产东京热AⅤ | 好爽好紧军人h男男小说 | 男女生互操 | 国产在线xx | 豆花免费跳转入口官网 | 伊人久久成人精品 |