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>

        這可能是最簡單又有效的自監(jiān)督學(xué)習(xí)方法了

        共 3881字,需瀏覽 8分鐘

         ·

        2021-03-31 20:34

        點擊上方“程序員大白”,選擇“星標”公眾號

        重磅干貨,第一時間送達

        轉(zhuǎn)載自 | 夕小瑤的賣萌屋

        文 | 王珣@知乎

        從Kaiming的MoCo和Hinton組Chen Ting的SimCLR開始,自監(jiān)督學(xué)習(xí)(SSL)成了計算機視覺的熱潮顯學(xué)。凡是大佬大組(Kaiming, VGG,MMLAB等),近兩年都是搞了幾個自監(jiān)督方法的。從一開始的新奇興奮地看著Arxiv上新發(fā)布的SSL方法(像MoCo, SwAV, BYOL, SimSiam等這些方法著實有趣),但是有一些相關(guān)的文章多少有些泛濫了,讓人有些眼花繚亂。最近FAIR的一個工作,著實讓我眼前一亮,覺得好有意思,頗為嘆服。關(guān)鍵的是這個方法特別簡單,應(yīng)當可以稱之為最簡單的SSL。

        論文題目:
        Barlow Twins: Self-Supervised Learning via Redundancy Reduction

        論文鏈接:
        https://arxiv.org/abs/2103.03230.pdf

        藉此機會,我也自己梳理一下SSL在這不到兩年的時間里的個人認為比較重要的認知變化的節(jié)點:從SimCLR,MoCo為起點,以這篇BarLow Twins為暫時的終點。從這個歷史線上去看SSL的發(fā)展非常有趣:計算機視覺圈子對于SSL的認知在不斷打臉的過程中不斷深入。

        1.首先是2020年初的SimCLR

        這個文章的核心貢獻有二:一是提供了使用google的豐富的計算資源和強大的工程能力,使用高達4096的mini-batch size,把SSL的效果推到了supervised方法差不多的效果(預(yù)訓(xùn)練模型做下游任務(wù));二是細致地整理了一些對SSL效果提升很有用的tricks: 如更長的訓(xùn)練,多層MLP的projector以及更強的data augmentations。這些有用的trick在后來的SSL的論文中一直被沿用,是SSL發(fā)展的基石,而第一個點,則是指出了大batch-size出奇跡,為未來的論文指出了改進的路,或者樹立了一個進擊的靶子。

        2.MoCo 共有兩版本

        原始版本是2019年末放出來的。在SimCLR出現(xiàn)后之后,又吸收SimCLR的幾個SSL小技巧,改進出了V2版,但是整體方法的核心是沒有變化的,V2僅僅是一個2頁試驗報告。相比于SimCLR大力出奇跡,愷明設(shè)計了一個巧妙的momentum encoder 和 dynamic queue 去獲得大量的負樣本。這里的momentum encoder 采用了動量更新機制,除了文章本身的分析,另一層的理解是:其實momentum encoder相當于是teacher, 而dynamic里是來自不同mini-batch的樣本,所以teacher需要在時間維度上對于同一個樣本的輸出具有一致性,否則,要學(xué)習(xí)的encoder 也就是student,會沒有一個穩(wěn)定的學(xué)習(xí)目標,難以收斂;當然另一方面,teacher 也不能一直不變,如果teacher一直不變,student就是在向一個隨機的teacher學(xué)習(xí)。綜上,動量更新機制是一個相當好理解的選擇。

        階段小結(jié)

        拋開細節(jié),SimCLR和MoCo的核心點,都是認為negatives(負樣本) 非常重要,一定要有足夠多的負樣本,只不過實現(xiàn)方式略有不同。SimCLR 拿著TPU,直接把batch size搞到4096,一力降十會;愷明則是巧妙設(shè)計Momentum機制,避開了硬件工程的限制,做出了可以飛入尋常百姓家的MoCo。再次重申,這時候的認識,還是停留在需要大量的負樣本,來提升SSL model的效果這個歷史局限里。

        3.BYOL 是Deep Mind 在2020年發(fā)布的工作

        文章的核心點就是要破除負樣本迷信 ,BYOL認為不使用負樣本,照樣可以訓(xùn)練出效果拔群的SSL model。但是如果直接拋棄負樣本,只拉近正樣本對的話,model 會容易陷入平凡解:對于任意樣本,輸出同樣的embedding。為了在沒有負樣本的幫助下,解決這個問題。BYOL 在Projector之上,增加了一個新的模塊,取名Predictor。整體可以理解為在MoCo的基礎(chǔ)上,但是不再直接拉近正樣本對(即同一個樣本,不同增強后的輸出)的距離,而是通過Predictor去學(xué)習(xí)online encoder 到 target encoder (即moco里的momentum encoder)的映射。另外,對target network梯度不會傳遞,即Stop-Gradient。(注:在MoCo中,momentum encoder也是沒有梯度回傳的,不過MoCo這么沒有給momentum encoder回傳梯度是因為queue里面的負樣本來自過去的mini-batch,其計算圖已經(jīng)丟失,沒有辦法回傳梯度,而如果只回傳正樣本對的梯度,會很不合理。而BYOL是只考慮正樣本對,如果梯度對于online encoder 和 target encoder都回傳,不存在這個不合理的點,因此,Stop-Gradient是BYOL的一個特別的設(shè)計。)

        4.SimSiam 是在BYOL的再次做減法

        這里在BYOL的基礎(chǔ)上去除了momentum更新的target encoder, 直接讓target encoder = online encoder。指出了predictor+stop-gradinent 是訓(xùn)練出強大SSL encoder的一個充分條件。

        再次的階段小結(jié)

        在這個階段,認識進展到了可以沒有負樣本的階段,但是不使用負樣本,模型就會有陷入平凡解的風(fēng)險。為此,BYOL設(shè)計了predictor 模塊,并為之配套了stop-gradient技巧;SimSiam通過大量的試驗和控制變量,進一步做減法,去除了momentum update。讓模型進一步變得簡單。再次總結(jié),就是predictor模塊,避免了直接拉近正樣本對,對于梯度的直接回傳,讓模型陷入平凡解。BYOL 和 SimSiam 在方法上都是很不錯的,試驗也做得很可信充分,可是對于方法的解釋并沒有那么深刻置信,可能要尋求一個扎實的解釋也確實很難??梢詤⒁姡?em>https://spaces.ac.cn/archives/7980),也是另一個角度的解釋,頗為有趣合理。此時已經(jīng)進入到了擺脫了負樣本了,但是在不使用負樣本的情況,要想成功訓(xùn)練好一個SSL model,需要引入新的trick: 即predictor+stop-gradient。這樣子來看,難免有點像左手換右手的無用功,但是整體的技術(shù)認識是進步了很多的。

        5.最后,終于到了這次的主角:Barlow Twins

        在不考慮數(shù)據(jù)增強這種大家都有的trick的基礎(chǔ)上, Barlow Twins 既沒有使用負樣本,沒有動量更新,也沒有predictor和stop gradient的奇妙操作。Twins 所做的是換了一種視角去學(xué)習(xí)表示,從embeddig本身出發(fā),而不是從樣本出發(fā)。優(yōu)化目標是使得不同視角下的特征的相關(guān)矩陣接近恒等矩陣,即讓不同的維度的特征盡量表示不同的信息,從而提升特征的表征能力。這種做法,和以前傳統(tǒng)降維(如PCA)的方法是有共通之處的,甚至優(yōu)化的目標可以說非常一致。

        ▲Barlow Twins 模型整體圖

        設(shè)模型為,其模型參數(shù)記為。

        對于不同的視角下的輸入,分別輸出的特征, 其中

        那么Twins 方法和以上的基于正負樣本對的所有方法的區(qū)別,不嚴格(拋去特征normalize,BN等操作來說)的來說,可以用一句話,或者說兩個式子來概括。

        過去的方法大多基于InfoNCE loss 或者類似的對比損失函數(shù),其目的是為了是的樣本相關(guān)陣接近恒等矩陣,即

        而Twins的目的是為了讓特征相關(guān)陣接近恒等,即:

        對于對比損失類方法,比如SimCLR或MoCo需要很大的Batchsize或者用queue的方式去模擬很大的batchsize, 而Twins需要極大的特征維度(8192)。這種特性和以上兩個公式是完全對應(yīng)且對稱的。一個需要大,一個需要大。

        ▲Barlow Twins 的核心在于提出了圖中新的損失函數(shù)

        總結(jié)

        從歷史線上來看,從SimCLR和MoCo說一定要有大量的負樣本,到BYOL和SimSiam通過神奇操作(stop-grad+predictor)驗證了負樣本并非不可或缺,最終到了Twins切換了一直以來從對比學(xué)習(xí)去訓(xùn)練SSL的視角,轉(zhuǎn)向從特征本身出發(fā),推開了另一扇大門。對比而言,相比于最簡單的裸InfoNCE,Twins僅僅是換了一個loss function (+大維度的特征)。不過,大的維度相比于增加batchsize的代價要小得多,就是多占一點的顯存。


        國產(chǎn)小眾瀏覽器因屏蔽視頻廣告,被索賠100萬(后續(xù))

        年輕人“不講武德”:因看黃片上癮,把網(wǎng)站和786名女主播起訴了

        中國聯(lián)通官網(wǎng)被發(fā)現(xiàn)含木馬腳本,可向用戶推廣色情APP

        張一鳴:每個逆襲的年輕人,都具備的底層能力


        關(guān)


        ,學(xué)西學(xué)學(xué)質(zhì),結(jié),關(guān)[],學(xué)習(xí)!


        瀏覽 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>
            初尝禁果hd未删减版 | 九九九在线 | 日韩午夜精品人妻无码一区二区 | 东北老女人操逼视频 | 无码一区二区波多野结衣播放搜索 | 亚洲成人性生活免费视频 | 黄色片XXX | 丫头14第一次真紧h文 | 开心激情网五月天 | 久久久欧美成人片免费看网站主播 |