在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 一文讀懂自監(jiān)督學(xué)習(xí)

            一文讀懂自監(jiān)督學(xué)習(xí)

            發(fā)布人:計算機視覺工坊 時間:2022-11-19 來源:工程師 發(fā)布文章
            作者丨Sherlock

            來源丨Smarter 


            導(dǎo)讀:最近 self-supervised learning 變得非?;?,首先是 kaiming 的 MoCo 引發(fā)一波熱議,然后最近 Yann 在 AAAI 上講 self-supervised learning 是未來。所以覺得有必要了解一下 SSL,也看了一些 paper 和 blog,最后決定寫這篇文章作為一個總結(jié)。


            圖片 


            一、什么是 Self-Supervised Learning

             

            首先介紹一下到底什么是 SSL,我們知道一般機器學(xué)習(xí)分為監(jiān)督學(xué)習(xí),非監(jiān)督學(xué)習(xí)和強化學(xué)習(xí)。而 self-supervised learning 是無監(jiān)督學(xué)習(xí)里面的一種,主要是希望能夠?qū)W習(xí)到一種通用的特征表達用于下游任務(wù)。其主要的方式就是通過自己監(jiān)督自己,比如把一段話里面的幾個單詞去掉,用他的上下文去預(yù)測缺失的單詞,或者將圖片的一些部分去掉,依賴其周圍的信息去預(yù)測缺失的 patch。


            根據(jù)我看的文章,現(xiàn)在 self-supervised learning 主要分為兩大類:1. Generative Methods;2. Contrastive Methods。下面我們分別簡要介紹一下這這兩種方法。


            二、Generative Methods


            首先我們介紹一下 generative methods。這類方法主要關(guān)注 pixel space 的重建誤差,大多以 pixel label 的 loss 為主。主要是以 AutoEncoder 為代表,以及后面的變形,比如 VAE 等等。對編碼器的基本要求就是盡可能保留原始數(shù)據(jù)的重要信息,所以如果能通過 decoder 解碼回原始圖片,則說明 latent code 重建的足夠好了。


            圖片

            source: [Towards Data Science](https://towardsdatascience.com/generating-images-with-autoencoders-77fd3a8dd368)

            這種直接在 pixel level 上計算 loss 是一種很直觀的做法,除了這種直接的做法外,還有生成對抗網(wǎng)絡(luò)的方法,通過判別網(wǎng)絡(luò)來算 loss。


            對于 generative methods,有一些問題,比如:


            1. 基于 pixel 進行重建計算開銷非常大;

            2. 要求模型逐像素重建過于苛刻,而用 GAN 的方式構(gòu)建一個判別器又會讓任務(wù)復(fù)雜和難以優(yōu)化。


            從這個 blog 中我看到一個很好的例子來形容這種 generative methods。對于一張人民幣,我們能夠很輕易地分辨其真假,說明我們對其已經(jīng)提取了一個很好的特征表達,這個特征表達足夠去刻畫人民幣的信息, 但是如果你要我畫一張一模一樣的人民幣的圖片,我肯定沒法畫出來。通過這個例子可以明顯看出,要提取一個好的特征表達的充分條件是能夠重建,但是并不是必要條件,所以有了下面這一類方法。

            圖片

            source:[blog](https://ankeshanand.com/blog/2020/01/26/contrative-self-supervised-learning.html) 
            三、Contrasive self-supervised learning


            除了上面這類方法外,還有一類方法是基于 contrastive 的方法。這類方法并不要求模型能夠重建原始輸入,而是希望模型能夠在特征空間上對不同的輸入進行分辨,就像上面美元的例子。


            這類方法有如下的特點:1. 在 feature space 上構(gòu)建距離度量;2. 通過特征不變性,可以得到多種預(yù)測結(jié)果;3. 使用 Siamese Network;4. 不需要 pixel-level 重建。正因為這類方法不用在 pixel-level 上進行重建,所以優(yōu)化變得更加容易。當然這類方法也不是沒有缺點,因為數(shù)據(jù)中并沒有標簽,所以主要的問題就是怎么取構(gòu)造正樣本和負樣本。


            目前基于 contrastive 的方法已經(jīng)取得了很好的緊張,在分類任上已經(jīng)接近監(jiān)督學(xué)習(xí)的效果,同時在一些檢測、分割的下游任務(wù)上甚至超越了監(jiān)督學(xué)習(xí)作為 pre-train的方法。


            下面是這兩類方法的總結(jié)圖片。


            圖片

            source: [blog](https://ankeshanand.com/blog/2020/01/26/contrative-self-supervised-learning.html)


            四、為什么需要 self-supervised learning


            上面我們講了什么是 self-supervised learning,那么為什么我們需要自監(jiān)督學(xué)習(xí)呢,以及它能夠給我們帶來哪些幫助?


            在目前深度學(xué)習(xí)發(fā)展的情況下,對于監(jiān)督學(xué)習(xí),我們希望使用更少的標注樣本就能夠訓(xùn)練一個泛化能力很好的模型,因為數(shù)據(jù)很容易獲取,但是標注成本卻是非常昂貴的。而在強化學(xué)習(xí)中,需要大量的經(jīng)驗對 agent 進行訓(xùn)練,如果能搞減少 agent 的嘗試次數(shù),也能夠加速訓(xùn)練。除此之外,如果拿到一個好的特征表達,那么也有利于做下游任務(wù)的 fintuen和 multi-task 的訓(xùn)練。


            最后我們總結(jié)一下監(jiān)督學(xué)習(xí)和自監(jiān)督學(xué)習(xí)的特點,其中 supervised learning 的特點如下:


            1. 對于每一張圖片,機器預(yù)測一個 category 或者是 bounding box

            2. 訓(xùn)練數(shù)據(jù)都是人所標注的

            3. 每個樣本只能提供非常少的信息(比如 1024 個 categories 只有 10 bits 的信息)


            于此對比的是,self-supervised learning 的特點如下:


            1. 對于一張圖片,機器可以預(yù)任何的部分

            2. 對于視頻,可以預(yù)測未來的幀

            3. 每個樣本可以提供很多的信息


            所以通過自監(jiān)督學(xué)習(xí),我們可以做的事情可以遠超過監(jiān)督學(xué)習(xí),也難怪 Yann 未來看好 self-supervised learning。目前出現(xiàn)的性能很好的文章主要是基于 contrastive 的方法,所以下面我們介紹幾篇基于 contrastive 方法的文章。


            五、Contrastive Predictive Coding 


            第一篇文章是 Representation Learning with Contrastive Predictive Coding(https://arxiv.org/abs/1807.03748)。這篇文章主要是通過 contrastive 的方式在 speech, images, text 和 在reinforcement learning 中都取得了很好的效果。


            從前面我們知道,由一個原始的 input 去建模一個 high-level representation 是很難的,這也是自監(jiān)督學(xué)習(xí)想做的事情。其中常用的策略是:future,missing 和 contextual,即預(yù)測未來的信息,比如 video 中當前幀預(yù)測后面的幀;丟失的信息或者是上下文的信息,比如 NLP 里面的 word2vec 和 BERT。


            對于一個目標 x 和他的上下文 c 來說,直接去建模輸出 p(x|c) 會損失很多信息,將 target x 和 context c 更合適的建模方式是最大化他們之間的 mutual information,即下面的公式:




            優(yōu)化了他們之間的互信息,即最大化 ,說明 要遠大于 ,即在給定 context c 的情況下, 要找到專屬于 c 的那個 x,而不是隨機采樣的 x。


            基于這個觀察,論文對 density ratio 進行建模,這樣可以保留他們之間的互信息




            對于這個 density ratio,可以構(gòu)建左邊的函數(shù) f 去表示它,只要基于函數(shù) f 構(gòu)造下面的損失函數(shù),優(yōu)化這個損失函數(shù)就等價于優(yōu)化這個 density ratio,下面論文會證明這一點。




            而這個損失函數(shù),其實就是一個類似交叉熵的函數(shù),分子是正樣本的概率,分母是正負樣本的概率求和。


            下面我們證明如果能夠最優(yōu)化這個損失函數(shù),則等價于優(yōu)化了 density ratio,也就優(yōu)化了互信息。


            首先將這個 loss 函數(shù)變成概率的形式,最大化這個正樣本的概率分布,然后通過 bayesian 公式進行推導(dǎo),其中 X 是負樣本,和 以及 c 都無關(guān)。



            通過上面的推導(dǎo),可以看出優(yōu)化這個損失函數(shù)其實就是在優(yōu)化 density ratio。論文中把 f 定義成一個 log 雙線性函數(shù),后面的論文更加簡單,直接定義為了 cosine similarity。




            有了這個 loss,我們只需要采集正負樣本就可以了。對于語音和文本,可以充分利用了不同的 k 時間步長,來采集正樣本,而負樣本可以從序列隨機取樣來得到。對于圖像任務(wù),可以使用 pixelCNN 的方式將其轉(zhuǎn)化成一個序列類型,用前幾個 patch 作為輸入,預(yù)測下一個 patch。

            圖片source: [blog]

            (https://ankeshanand.com/blog/2020/01/26/contrative-self-supervised-learning.html)

            圖片

            source:[ Representation Learning with Contrastive Predictive Coding](https://arxiv.org/abs/1807.03748)
            六、Deep InfoMax


            通過上面的分析和推導(dǎo),我們有了這樣一個通用的框架,那么 deep infomax 這篇文章就非常好理解了,其中正樣本就是第 i 張圖片的 global feature 和中間 feature map 上個的 local feature,而負樣本就是另外一張圖片作為輸入,非常好理解。

            圖片source: [Learning deep representations by mutual information estimation and maximization](https://arxiv.org/abs/1808.06670)
            七、Contrastive MultiView Coding


            除了像上面這樣去構(gòu)建正負樣本,還可以通過多模態(tài)的信息去構(gòu)造,比如同一張圖片的 RGB圖 和 深度圖。CMC 這篇 paper 就是從這一點出發(fā)去選擇正樣本,而且通過這個方式,每個 anchor 不僅僅只有一個正樣本,可以通過多模態(tài)得到多個正樣本,如下圖右邊所示。

            圖片

            source: [Contrastive Multiview Coding](http://arxiv.org/abs/1906.05849)


            現(xiàn)在我們能夠拿到很多正樣本,問題是怎么獲得大量的負樣本,對于 contrastive loss 而言,如何 sample 到很多負樣本是關(guān)鍵,mini-batch 里面的負樣本太少了,而每次對圖片重新提取特征又非常的慢。雖然可以通過 memory bank 將負樣本都存下來,但是效果并不好,所以如何節(jié)省內(nèi)存和空間獲得大量的負樣本仍然沒有很好地解決。 


            八、MoCo


            有了上面這么多工作的鋪墊,其實 contrastive ssl 的大框架已經(jīng)形成了,MoCo 這篇文章也變得很好理解,可以把 target x 看成第 i 張圖片的隨機 crop,他的正樣本通過一個 model ema 來得到,可以理解為過去 epochs 對這張圖片的 smooth aggregation。而負樣本則從 memory bank 里面拿,同時 memory bank 的 feature 也是通過 model ema 得到,并且通過隊列的形式丟掉老的 feature。

            圖片source: [Momentum Contrast for Unsupervised Visual Representation Learning](https://arxiv.org/abs/1911.05722)


            MoCo 通過工程的方式,和一些 trick,比如 model ema 和 shuffleBN 來解決之前沒法很好 sample 負樣本的問題。 


            九、SimCLR


            最近,hinton 組也放了一篇做 ssl 的 paper,其實都是用的同一套框架,也沒有太多的 novelty。雖然摘要里面說可以拋棄 memory bank,不過細看論文,訓(xùn)練的 batchsize 需要到幾千,要用32-128 cores 的 TPU,普通人根本用不起。


            不過這篇文章系統(tǒng)地做了很多實驗,比如探究了一下數(shù)據(jù)增強的影響,以及的 projection head 的影響等,不過也沒有從理論上去解釋這些問題,只是做了實驗之后獲得了一些結(jié)論。 


            十、Results


             圖片source: [A Simple Framework for Contrastive Learning of Visual Representations](https://arxiv.org/abs/2002.05709)


            最后展示了不同方法的結(jié)果,可以看到在性能其實已經(jīng)逼近監(jiān)督學(xué)習(xí)的效果,但是需要 train 4x 的時間,同時網(wǎng)絡(luò)參數(shù)也比較大。


            雖然性能沒有超過監(jiān)督學(xué)習(xí),不過我認為這仍然給了我們很好的啟發(fā),比如訓(xùn)練一個通用的 encoder 來接下游任務(wù),或者是在 cross domain 的時候只需要少量樣本去 finetune,這都會給實際落地帶來收益。


            Reference

            contrastive self-supervised learning,https://ankeshanand.com/blog/2020/01/26/contrative-self-supervised-learning.html

            deep infomax 和 深度學(xué)習(xí)中的互信息,https://zhuanlan.zhihu.com/p/46524857


            本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。


            *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。

            LCD顯示屏相關(guān)文章:lcd顯示屏原理


            led顯示器相關(guān)文章:led顯示器原理


            lcd相關(guān)文章:lcd原理
            全息投影相關(guān)文章:全息投影原理


            關(guān)鍵詞: AI

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉