从动力学角度看优化算法:为什么SimSiam不退化?
?PaperWeekly 原創 ·?作者|蘇劍林
單位|追一科技
研究方向|NLP、神經網絡
自 SimCLR [1] 以來,CV 中關于無監督特征學習的工作層出不窮,讓人眼花繚亂。這些工作大多數都是基于對比學習的,即通過適當的方式構造正負樣本進行分類學習的。
然而,在眾多類似的工作中總有一些特立獨行的研究,比如 Google 的 BYOL [2] 和最近的 SimSiam [3],它們提出了單靠正樣本就可以完成特征學習的方案,讓人覺得耳目一新。但是沒有負樣本的支撐,模型怎么不會退化(坍縮)為一個沒有意義的常數模型呢?這便是這兩篇論文最值得讓人思考和回味的問題了。
其中 SimSiam 給出了讓很多人都點贊的答案,但筆者覺得 SimSiam 也只是把問題換了種說法,并沒有真的解決這個問題。筆者認為,像 SimSiam、GAN 等模型的成功,很重要的原因是使用了基于梯度的優化器(而非其他更強或者更弱的優化器),所以不結合優化動力學的答案都是不完整的。在這里,筆者嘗試結合動力學來分析 SimSiam 不會退化的原因。
SimSiam
在看 SimSiam 之前,我們可以先看看 BYOL,來自論文 Bootstrap your own latent: A new approach to self-supervised Learning [4]?,其學習過程很簡單,就是維護兩個編碼器 Student 和 Teacher,其中 Teacher 是 Student 的滑動平均,Student 則又反過來向 Teacher 學習,有種“左腳踩右腳”就可以飛起來的感覺。示意圖如下:
▲ BYOL示意圖
而 SimSiam 則來自論文 Exploring Simple Siamese Representation Learning [5]?,它更加簡單,直接把 BYOL 的滑動平均去掉了:
▲?SimSiam示意圖
事實上,SimSiam 相當于將 BYOL 的滑動平均參數 設置為 0 了,這說明 BYOL 的滑動平均不是必須的。為了找出算法中的關鍵部分,SimSiam 還做了很多對比實驗,證實了 stop_gradient 算子以及 predictor 模塊 是 SimSiam 不退化的關鍵。為了解釋這個現象,SimSiam 提出了該優化過程實際上相當于在交替優化:
其中 x 代表訓練樣本而 代表數據擴增。這部分內容網上已有不少解讀,直接讀原論文也不困難,因此就不詳細展開了。
動力學分析
然而,筆者認為,將 SimSiam 算法的理解轉換成 的交替優化的理解,只不過是換了種說法,并沒有作出什么實質的回答。因為很明顯,目前 也存在退化解,模型完全可以讓所有的 都等于同一個向量,然后 輸出同一個常數向量。不回答 的交替優化為什么不退化,那也等于沒有回答問題。
下面筆者將列舉出自認為是 SimSiam 不退化的關鍵因素,并且通過一個簡單的例子表明回答不退化的原因需要跟動力學結合起來。當然,筆者這部分的論述其實也是不完整的,甚至是不嚴謹的,只是拋磚引玉地給出一個新的視角。
2.1 深度圖像先驗
首先,很早之前人們就發現一個隨機初始化的 CNN 模型就可以直接用來提取視覺特征,效果也不會特別差,該結論可以追溯到 2009 年的論文 What is the best multi-stage architecture for object recognition? [6]?,這可以理解為 CNN 天然具有處理圖像的能力。
后來這個特性被起了一個高大上的名字,稱為“深度圖像先驗”,出自論文 Deep Image Prior [7]?,里邊做了一些實驗,表明從一個隨機初始化的 CNN 模型出發,不需要任何監督學習,就可以完成圖像補全、去噪等任務,進一步確認了 CNN 天然具有處理圖像的能力這個特性。
按照筆者的理解,“深度圖像先驗”源于三點:
1. 圖像的連續性,是指圖像本身就可以直接視為一個連續型向量,而不需要像 NLP 那樣要學習出 Embedding 層出來,這意味著我們用“原始圖像 +K 鄰近”這樣簡單粗暴的方法就可以做很多任務了;
2. CNN的架構先驗,指的是 CNN 的局部感知設計確實很好地模擬了肉眼的視覺處理過程,而我們所給出的視覺分類結果也都是基于我們的肉眼所下的結論,因此兩者是契合的;
3. 良好的初始化,這不難理解,再好的模型配上全零初始化了估計都不會 work,之前的文章從幾何視角來理解模型參數的初始化策略 [8] 也簡單討論過初始化方法,從幾何意義上來看,主流的初始化方法都是一種近似的“正交變換”,能盡量地保留輸入特征的信息。
2.2 不退化的動力學
還是那句話,深度圖像先驗意味著一個隨機化的 CNN 模型就是一個不是特別差的編碼器了,于是我們接下來要做的事情無非可以歸結為兩點:往更好地方向學、不要向常數退化。
往更好地方向學,就是通過人為地設計一些先驗信號,讓模型更好地融入這些先驗知識。SimSiam、BYOL 等讓同一張圖片做兩種不同的數據擴增,然后兩者對應的特征向量盡量地相似,這便是一種好的信號引導,告訴模型簡單的變換不應當影響我們對視覺理解,事實上,這也是所有對比學習方法所用的設計之一。
不同的則是在“不要向常數退化”這一點上,一般的對比學習方法是通過構造負樣本來告訴模型哪些圖片的特征不該相近,從而讓模型不退化;但是 SimSiam、BYOL 不一樣,它們沒有負樣本,實際上它們是通過將模型的優化過程分解為兩個同步的、但是快慢不一樣的模塊來防止退化的。還是以 SimSiam 為例,它的優化目標可以寫為:
然后用梯度下降來優化,對應的動力學方程組是:
上式已經注明了有無 stop_gradient 算子所帶來的差別。簡單來說,如果添加了 stop_gradient 算子,那么 就少了第二項,這時候 和 都共同包含因子 ,由于 更靠近輸出層,并且初始化的 也是一個不差的編碼器,因此開始學習的時候, 會被優化得更快,越靠近輸入層的優化得越慢。
也就是說, 是快動力學部分, 則是慢動力學部分,那么相對而言, 會更快速地收斂到 0,這意味著 會很快地變得很小,由于 也包含 這一項,所以 跟著變得小,在它退化之前,推動它退化的力都已經微乎其微了,也就不會退化了。
相反,如果有第二項 (不管是補充上它還是只保留它),那么就相當于添加了一個“快速通道”,使得它變為快速項,就算 ,但由于第二項在,還會繼續推動著它退化。
舉個簡單的具體例子,我們考慮:
簡單起見這里的 都是標量,對應動力學方程是:
假設 (隨便選的),那么兩者的演變是:
▲?停掉第二個θ的梯度▲?不停掉第二個θ的梯度
可以看到,停掉第二個 的梯度后, 和 的方程是相當一致的, 迅速趨于 1,同時 穩定到了一個非 0 值(意味著沒退化)。相當,如果補充上 的第二項,或者干脆只保留第二項,結果都是 迅速趨于 0,而 則無法趨于 1 了,這意味著主導權被 占據了。
這個例子本身沒多大說服力,但是它簡單地揭示了動力學的變化情況:
predictor()的引入使得模型的動力學分為了兩大部分,stop_gradient 算子的引入則使得 encoder 部分()的動力學變慢,并且增強了 encoder 與 predictor 的同步性,這樣一來,predictor 以“迅雷不及掩耳之勢”擬合了目標,使得 encoder 還沒來得及退化,優化過程就停止了。
看近似展開
當然,詮釋千萬種,皆是“馬后炮”,真正牛的還是發現者,我們充其量也就是蹭掉熱度而已。這里再多蹭一下,分享筆者從另外一個視角看的 SimSiam。文章開頭說了,SimSiam 論文提出了通過目標(1)的交替優化來解釋 SimSiam,這個視角就是從目標(1)出發,進一步深究一下它不退化的原因。
如果固定 ,那么對于目標(1)來說,很容易解出 的最優值為:
代入(1),就得到優化目標為:
我們假定 是“小”的向量,那么在 x 處做一階展開得到 :
其中 是同一張圖片在所有數據擴增手段下的平均結果,注意它通常不等于 x。類似地,如果是不加 stop_gradient 也不加 predictor 的 SimSiam,那么損失函數近似為:
在式(8)中,每個 減去了 ,可以證明這個選擇能使得損失函數最小;而在式(9)中,每個 減去的是另一個擴增結果 ,會導致損失函數本身和估計的方差都大大增大。
那是不是意味著,不加 stop_gradient、不加 predictor 會失敗的原因,是因為它的損失函數以及方差過大呢?注意到在一階近似下有 ,那如果優化目標換成:
是不是就不會退化了?筆者也沒有驗證過,不得而知,正在研究相關內容的讀者不妨驗證一下。這里還引申出一個相關的問題,經過這樣訓練好的編碼器,究竟用 還是 作為特征好呢?
當然,這部分的討論都是建立在“ 是小的向量”這個假設的基礎上的,如果它不成立,那么這一節內容就是白說了。
文末小結
本文試圖從動力學角度給出筆者對 BYOL、SimSiam 算法不退化的理解,很遺憾,寫到一半的時候發現之前頭腦中構思的一些分析無法自圓其說了,于是刪減了一些內容,并補充了一個新的角度,盡量讓文章不“爛尾”,至于求精,那是說不上了。權當筆記分享在此,如有不當之處,還望讀者海涵斧正。
參考文獻
[1] https://arxiv.org/abs/2002.05709
[2] https://arxiv.org/abs/2006.07733
[3] https://arxiv.org/abs/2011.10566
[4] https://arxiv.org/abs/2006.07733
[5] https://arxiv.org/abs/2011.10566
[6] https://ieeexplore.ieee.org/document/5459469
[7] https://arxiv.org/abs/1711.10925
[8] https://kexue.fm/archives/7180
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的从动力学角度看优化算法:为什么SimSiam不退化?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AI框架你只会调包,这种想法很危险!
- 下一篇: 男姓高,女姓权叫什么网名?