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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

BYOL与SimSiam的区别,为什么SimSiam不退化?

發布時間:2024/1/3 综合教程 54 生活家
生活随笔 收集整理的這篇文章主要介紹了 BYOL与SimSiam的区别,为什么SimSiam不退化? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自SimCLR以來,CV中關于無監督特征學習的工作層出不窮,讓人眼花繚亂。這些工作大多數都是基于對比學習的,即通過適當的方式構造正負樣本進行分類學習的。然而,在眾多類似的工作中總有一些特立獨行的研究,比如Google的BYOL和最近的SimSiam,它們提出了單靠正樣本就可以完成特征學習的方案,讓人覺得耳目一新。但是沒有負樣本的支撐,模型怎么不會退化(坍縮)為一個沒有意義的常數模型呢?這便是這兩篇論文最值得讓人思考和回味的問題了。

其中SimSiam給出了讓很多人都點贊的答案,但筆者覺得SimSiam也只是把問題換了種說法,并沒有真的解決這個問題。筆者認為,像SimSiam、GAN等模型的成功,很重要的原因是使用了基于梯度的優化器(而非其他更強或者更弱的優化器),所以不結合優化動力學的答案都是不完整的。在這里,筆者嘗試結合動力學來分析SimSiam不會退化的原因。

SimSiam#

在看SimSiam之前,我們可以先看看BYOL,來自論文《Bootstrap your own latent: A new approach to self-supervised Learning》,其學習過程很簡單,就是維護兩個編碼器Student和Teacher,其中Teacher是Student的滑動平均,Student則又反過來向Teacher學習,有種“左腳踩右腳”就可以飛起來的感覺。示意圖如下:

BYOL示意圖

而SimSiam則來自論文《Exploring Simple Siamese Representation Learning》,它更加簡單,直接把BYOL的滑動平均去掉了:

SimSiam示意圖

事實上,SimSiam相當于將BYOL的滑動平均參數τ設置為0了,這說明BYOL的滑動平均不是必須的。為了找出算法中的關鍵部分,SimSiam還做了很多對比實驗,證實了stop_gradient算子以及predictor模塊hφ(z)是SimSiam不退化的關鍵。為了解釋這個現象,SimSiam提出了該優化過程實際上相當于在交替優化

其中xx代表訓練樣本而TT代表數據擴增。這部分內容網上已有不少解讀,直接讀原論文也不困難,因此就不詳細展開了。

動力學分析#

然而,筆者認為,將SimSiam算法的理解轉換成L(θ,η)L(θ,η)的交替優化的理解,只不過是換了種說法,并沒有作出什么實質的回答。因為很明顯,目前L(θ,η)L(θ,η)也存在退化解,模型完全可以讓所有的ηxηx都等于同一個向量,然后FθFθ輸出同一個常數向量。不回答L(θ,η)L(θ,η)的交替優化為什么不退化,那也等于沒有回答問題。

下面筆者將列舉出自認為是SimSiam不退化的關鍵因素,并且通過一個簡單的例子表明回答不退化的原因需要跟動力學結合起來。當然,筆者這部分的論述其實也是不完整的,甚至是不嚴謹的,只是拋磚引玉地給出一個新的視角。

深度圖像先驗#

首先,很早之前人們就發現一個隨機初始化的CNN模型就可以直接用來提取視覺特征,效果也不會特別差,該結論可以追溯到2009年的論文《What is the best multi-stage architecture for object recognition?》,這可以理解為CNN天然具有處理圖像的能力。后來這個特性被起了一個高大上的名字,稱為“深度圖像先驗”,出自論文《Deep Image Prior》,里邊做了一些實驗,表明從一個隨機初始化的CNN模型出發,不需要任何監督學習,就可以完成圖像補全、去噪等任務,進一步確認了CNN天然具有處理圖像的能力這個特性。

按照筆者的理解,“深度圖像先驗”源于三點:

1、圖像的連續性,是指圖像本身就可以直接視為一個連續型向量,而不需要像NLP那樣要學習出Embedding層出來,這意味著我們用“原始圖像+K鄰近”這樣簡單粗暴的方法就可以做很多任務了;

2、CNN的架構先驗,指的是CNN的局部感知設計確實很好地模擬了肉眼的視覺處理過程,而我們所給出的視覺分類結果也都是基于我們的肉眼所下的結論,因此兩者是契合的;

3、良好的初始化,這不難理解,再好的模型配上全零初始化了估計都不會work,之前的文章《從幾何視角來理解模型參數的初始化策略》也簡單討論過初始化方法,從幾何意義上來看,主流的初始化方法都是一種近似的“正交變換”,能盡量地保留輸入特征的信息。

不退化的動力學#

還是那句話,深度圖像先驗意味著一個隨機化的CNN模型就是一個不是特別差的編碼器了,于是我們接下來要做的事情無非可以歸結為兩點:往更好地方向學、不要向常數退化。

往更好地方向學,就是通過人為地設計一些先驗信號,讓模型更好地融入這些先驗知識。SimSiam、BYOL等讓同一張圖片做兩種不同的數據擴增,然后兩者對應的特征向量盡量地相似,這便是一種好的信號引導,告訴模型簡單的變換不應當影響我們對視覺理解,事實上,這也是所有對比學習方法所用的設計之一。

不同的則是在“不要向常數退化”這一點上,一般的對比學習方法是通過構造負樣本來告訴模型哪些圖片的特征不該相近,從而讓模型不退化;但是SimSiam、BYOL不一樣,它們沒有負樣本,實際上它們是通過將模型的優化過程分解為兩個同步的、但是快慢不一樣的模塊來防止退化的。還是以SimSiam為例,它的優化目標可以寫為

然后用梯度下降來優化,對應的動力學方程組是

上式已經注明了有無stop_gradient算子所帶來的差別。簡單來說,如果添加了stop_gradient算子,那么dθ/dt就少了第二項,這時候dφ/dt和dθ/dt都共同包含因子?l/?h,由于hφhφ更靠近輸出層,并且初始化的fθfθ也是一個不差的編碼器,因此開始學習的時候,hφhφ會被優化得更快,越靠近輸入層的優化得越慢。也就是說,dφ/dt是快動力學部分,dθ/dt則是慢動力學部分,那么相對而言,dφ/dt會更快速地收斂到0,這意味著?l/?h會很快地變得很小,由于dθ/dt也包含?l/?h這一項,所以dθ/dt跟著變得小,在它退化之前,推動它退化的力都已經微乎其微了,也就不會退化了。相反,如果有第二項?l/?f*?f/?θ(不管是補充上它還是只保留它),那么就相當于添加了一個“快速通道”,使得它變為快速項,就算?l/?h=0,但由于第二項在,還會繼續推動著它退化。

舉個簡單的具體例子,我們考慮

簡單起見這里的φ,θφ,θ都是標量,對應動力學方程是

假設φ(0)=0.6,θ(0)=0.1φ(0)=0.6,θ(0)=0.1(隨便選的),那么兩者的演變是:

停掉第二個θ的梯度

不停掉第二個θ的梯度

可以看到,停掉第二個θθ的梯度后,φφ和θθ的方程是相當一致的,φφ迅速趨于1,同時θθ穩定到了一個非0值(意味著沒退化)。相當,如果補充上dθ/dt的第二項,或者干脆只保留第二項,結果都是θθ迅速趨于0,而φφ則無法趨于1了,這意味著主導權被θθ占據了。

這個例子本身沒多大說服力,但是它簡單地揭示了動力學的變化情況:

predictor(φφ)的引入使得模型的動力學分為了兩大部分,stop_gradient算子的引入則使得encoder部分(θθ)的動力學變慢,并且增強了encoder與predictor的同步性,這樣一來,predictor以“迅雷不及掩耳之勢”擬合了目標,使得encoder還沒來得及退化,優化過程就停止了。

看近似展開#

當然,詮釋千萬種,皆是“馬后炮”,真正牛的還是發現者,我們充其量也就是蹭掉熱度而已。這里再多蹭一下,分享筆者從另外一個視角看的SimSiam。文章開頭說了,SimSiam論文提出了通過目標(1)(1)的交替優化來解釋SimSiam,這個視角就是從目標(1)(1)出發,進一步深究一下它不退化的原因。

如果固定θθ,那么對于目標(1)(1)來說,很容易解出ηxηx的最優值為

代入(1)(1),就得到優化目標為

我們假定T(x)?xT(x)?x是“小”的向量,那么在xx處做一階展開得到

其中xˉ=ET[T(x)]xˉ=ET[T(x)]是同一張圖片在所有數據擴增手段下的平均結果,注意它通常不等于xx。類似地,如果是不加stop_gradient也不加predictor的SimSiam,那么損失函數近似為

在式(8)(8)中,每個T(x)T(x)減去了xˉxˉ,可以證明這個選擇能使得損失函數最小;而在式(9)(9)中,每個T1(x)T1(x)減去的是另一個擴增結果T2(x)T2(x),會導致損失函數本身和估計的方差都大大增大。

那是不是意味著,不加stop_gradient、不加predictor會失敗的原因,是因為它的損失函數以及方差過大呢?注意到在一階近似下有ηx≈Fθ(xˉ)ηx≈Fθ(xˉ),那如果優化目標換成

是不是就不會退化了?筆者也沒有驗證過,不得而知,正在研究相關內容的讀者不妨驗證一下。這里還引申出一個相關的問題,經過這樣訓練好的編碼器,究竟用Fθ(x)Fθ(x)還是Fθ(xˉ)Fθ(xˉ)作為特征好呢?

當然,這部分的討論都是建立在“T(x)?xT(x)?x是小的向量”這個假設的基礎上的,如果它不成立,那么這一節內容就是白說了。

下文末小結#

本文試圖從動力學角度給出筆者對BYOL、SimSiam算法不退化的理解,很遺憾,寫到一半的時候發現之前頭腦中構思的一些分析無法自圓其說了,于是刪減了一些內容,并補充了一個新的角度,盡量讓文章不“爛尾”,至于求精,那是說不上了。權當筆記分享在此,如有不當之處,還望讀者海涵斧正。

來源:https://spaces.ac.cn/archives/7980

歡迎轉載,轉載請保留頁面地址。幫助到你的請點個推薦。

總結

以上是生活随笔為你收集整理的BYOL与SimSiam的区别,为什么SimSiam不退化?的全部內容,希望文章能夠幫你解決所遇到的問題。

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