日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CV和NLP中的无监督预训练(生成式BERT/iGPT和判别式SimCLR/SimCSE)

發布時間:2024/7/5 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CV和NLP中的无监督预训练(生成式BERT/iGPT和判别式SimCLR/SimCSE) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文 | Smarter

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

BERT

BERT之前主要有兩種主流的無監督預訓練方法:feature-based和fine-tuning。

feature-based方法

之前的ELMo無監督預訓練屬于feature-based的方法,先獨立訓練從左到右和從右到左的LSTM,然后將兩部分輸出conate得到的features直接應用于下游任務。

fine-tuning方法

GPT和BERT屬于fine-tuning方法,fine-tuning方法預訓練的features不直接應用于下游任務,需要針對下游任務進行fine-tuning。GPT使用從左到右的單向Transformer進行預訓練,然后針對下游任務進行fine-tuning。BERT使用雙向Transformer進行預訓練,相較于GPT,更加充分的利用上下文信息,然后針對下游任務進行fine-tuning。

Input/Output Representations

為了BERT更好的應用于下游任務,BERT預訓練的時候輸入可以模糊表示,比如既可以表示成單個句子也可以表示成一對句子(<Question,Answer>)。輸入的第一個token總是特指classification token [CLS],對應的輸出位置用來做分類任務。一對句子作為輸入時,表示成單個序列,通過特殊的token [SEP]來分開不同句子,并且對每個輸入token加上一個可學習的embedding來指示屬于句子A還是屬于句子B。如上面左圖所示,將input embedding表示為E,token [CLS]對應的輸出向量是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設計了兩種無監督任務進行預訓練,可以更好的應用到下游任務。

Task 1:Masked LM

為了訓練一個深度雙向的Transformer,BERT以一定比例隨機mask掉一些輸入tokens,然后對這些masked tokens進行預測,這個任務稱之為Masked LM(MLM),靈感來源于完形填空任務,通過上下文預測masked的word是什么,最終BERT采用了隨機mask掉15%的輸入tokens。雖然Masked LM任務可以獲得一個雙向的預訓練模型,但是預訓練和fine-tuning存在著gap,因為fine-tuning的時候,輸入是不存在[MASK]token的,為了緩解這種問題,實際訓練的時候不總是采用[MASK] token來替換。其中[MASK] token有80%的概率被選中,random token有10%的概率被選中,還有10%的概率不改變token。

Task 2:
Next Sentence Prediction(NSP)

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

iGPT

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

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

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

看一下iGPT的生成效果,iGPT可以通過已知的上下文內容對缺失部分進行補充,看起來非常的邏輯自洽啊,tql!

SimCLR

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

  • 對于每張輸入圖片隨機進行數據增強得到兩個不同的views,同一張圖的兩個views可以認為是positive pair。

  • 每張輸入圖片的兩個views通過相同的encoder產生兩個表示向量。

  • 每張輸入圖片的兩個表示向量通過相同的projection head產生兩個最終的向量。

  • 最后對一個batch得到的最終向量進行對比學習,拉近positive pair,排斥negative pair。

  • 對比學習的函數如下:

    偽代碼如下:

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

    SimCSE

    看到計算機視覺的self-supervised大獲成功之后,自然語言處理也開始嘗試self-supervised。其中SimCSE的方法非常的簡單有效,在Sentence Embeddings的任務中大幅度超過之前的方法。SimCSE名字應該是借鑒了SimCLR。SimCSE提出了兩種方法,一種是Unsupervised SimCSE,另一種是Supervised SimCSE。

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

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

    上圖align表示positive pair拉近的能力(越小越好),uniform表示negative pair排斥的能力(越小越好)。最終SimCSE可視化分析發現,Unsup. SimCSE可以得到更好的align和uniform,SimCSE通過有標注的監督信號,可以進一步的提升align和uniform。(ps:align和uniform概念可以看我之前的文章Self-Supervised: 如何避免退化解)

    另外,SimCSE還有各種消融實驗和可視化分析,非常精彩,建議看原文細細品味

    總結

    下面引用lecun的一張圖,談一談對CV和NLP中無監督預訓練的看法:

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

    NLP任務因為確定性更高,生成式無監督預訓練方法可以非常好進行預測(如BERT),而由于CV任務不確定性更高,導致需要設計更自由靈活的方法,對比方法相比于生成方法自由度更高,可能更加適合CV任務作為無監督預訓練方法。

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

    尋求報道、約稿、文案投放:
    添加微信xixiaoyao-1,備注“商務合作”

    后臺回復關鍵詞【入群

    加入賣萌屋NLP/IR/Rec與求職討論群

    后臺回復關鍵詞【頂會

    獲取ACL、CIKM等各大頂會論文集!

    ?

    [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] https://ai.facebook.com/blog/self-supervised-learning-the-dark-matter-of-intelligence/

    總結

    以上是生活随笔為你收集整理的CV和NLP中的无监督预训练(生成式BERT/iGPT和判别式SimCLR/SimCSE)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。