「神經網絡就像任性的小孩」港中文MMLab博士揭開OpenSelfSup自監督學習的秘密

2021-03-02 新智元








編輯:鵬飛

【新智元導讀】自然的場景理解是一項艱巨的任務。任務複雜多樣,不同方法各有各的專用訓練代碼,難以結合、復用和改進。評價方案不統一,不同的方法難以在公平環境下對比;動輒百萬千萬的訓練數據量,訓練效率是個大問題。港中文MMLab開源自監督表徵學習代碼庫OpenSelfSup,號稱「一行命令跑評測」,並在各大Benchmark上驗證了復現結果。

香港中文大學近年來在機器學習方面的成就,甚至蓋過了大部分的理工科院校,這一點厲害了。尤其是在自監督學習方面,不知不覺的就走在了學術研究的前排。

最近,港中文MMLab開源自監督表徵學習代碼庫OpenSelfSup,號稱「一行命令跑評測」,並在各大Benchmark上驗證了復現結果。

OpenSelfSup 使用 PyTorch 實現,支持基於分類、重建、聚類、memory bank、contrastive learning 的多種自監督學習框架。目前收錄了 Relative Location、Rotation Prediction、DeepCluster、OnlineDeepCluster、NPID、MoCo、SimCLR 等一系列表現較好的自監督表徵學習方法,後續還將陸續跟進學術界最新算法。

OpenSelfSup推出後受到不少人關注,但也有不少人對如何上手這個代碼庫表示有一些疑惑。新智元邀請香港中文大學多媒體實驗室的詹曉航博士,為我們解讀關於自監督學習的歸納、思考和展望。

自監督學習是指用於機器學習的標註(ground truth)源於數據本身,而非來自人工標註。如下圖,自監督學習首先屬於無監督學習,因此其學習的目標無需人工標註。其次,目前的自監督學習領域可大致分為兩個分支。

第一個是用於解決特定任務的自監督學習,例如上次討論的場景去遮擋,以及自監督的深度估計、光流估計、圖像關聯點匹配等。另一個分支則用於表徵學習。有監督的表徵學習,一個典型的例子是ImageNet分類。而無監督的表徵學習中,最主要的方法則是自監督學習。典型的方法包括:解決Jigsaw Puzzles、運動傳播、旋轉預測,以及最近很火的MoCo等等。

圖一,自監督學習和其他學習類型的關係

判斷一個工作是否屬於自監督學習,除了無需人工標註這個標準之外,還有一個重要標準,就是是否學到了新的知識。舉個簡單的例子,例如image inpainting是否屬於自監督學習?

如果一篇image inpainting的論文,其主要目的是提升inpainting的效果,那麼它就不屬於自監督學習,雖然它無需額外標註。但是如果它的目的是藉助inpainting這個任務來學習圖像的特徵表達,那麼它就是自監督學習(參考論文:Context Encoders)。

如下圖,以自監督表徵學習為例,我們通常需要設計一個自監督的proxy task,我們期望在解決這個proxy task的過程中,CNN能學到一些圖像高級的語義信息。然後我們將訓練好的CNN遷移到其他目標任務,例如圖像語義分割、物體檢測等等。

圖二,典型的自監督表徵學習流程

那麼,自監督的proxy task有哪些呢?如下圖,第一行中的思路是將圖像以某種方式破壞,然後用神經網絡來學習恢復原圖的過程。然而,將圖像破壞,可能帶來預訓練的domain和目標任務domain不一致的問題。而第二行中的proxy  tasks則無需破壞原圖,因此避免了domain的問題。第三行中的方法是利用運動信息等多模態信息來學習圖像特徵。當然除了圖中這些例子之外,還有各種各樣其他有趣的自監督任務。

圖三,自監督proxy tasks的例子

1. 先驗

我們的世界是在嚴格的物理、生物規則下運行的,那麼對這個世界的觀測結果(圖像)也必然存在一些先驗規律。例如圖像上色任務,就是利用了物體類別和物體顏色分布之間的關聯;image inpainting,則是利用了物體類別和形狀紋理之間的關聯;旋轉預測任務,利用了物體類別和其朝向之間的關聯。通過挖掘更多的先驗,我們也能設計自己的自監督學習任務。

那麼什麼樣的先驗更有效呢?結論是,低熵的先驗。如下圖,左邊的運動預測任務(ICCV 2015: Dense Optical Flow Prediction From a Static Image) ,是從單張圖片中直接預測運動場,其利用的先驗是物體的運動傾向性。

而運動傾向性是比較歧義的,例如人在半蹲狀態,難以預測下一時刻會站起來還是繼續下蹲。因而,運動傾向性是一個高熵的先驗。而右圖的運動傳播任務(CVPR 2019: Self-Supervised Learning via Conditional Motion Propagation),從給定的稀疏運動來恢復完整運動場,利用的則是物體的運動學屬性先驗。

運動學屬性,例如頭部是剛體,四肢是鉸接體等,是較為確定的先驗,那麼這就是一個低熵的先驗。從實驗結果也可以發現,在transfer到分割任務上,運動傳播比運動預測更好。

圖四,運動預測和運動傳播的對比

2. 連貫性

圖片具有空間連貫性,視頻具有時空連貫性。那麼就可以利用這些特點來設計自監督任務。如下圖:

圖五,利用數據空間、時間連貫性的自監督任務

3. 數據內部結構

目前很火的基於contrastive learning的方法,我們可以將它們統一為instance discrimination任務。如下圖,這類任務通常對圖片做各種變換,然後優化目標是同一張圖片的不同變換在特徵空間中儘量接近,不同圖片在特徵空間中儘量遠離。

圖六,instance discrimination任務

對於這類任務,下圖提供了兩種可能的優化後的特徵空間。這兩種結果都是符合instance discrimination優化目標的,即同一張圖片的不同變換在特徵空間中儘量接近,不同圖片在特徵空間中儘量遠離。

然而,我們發現,實際的優化結果更偏向於第二種而非第一種,也就是說,雖然我們在解決instance discrimination的過程中並沒有用的物體的類別標籤,但是在優化後的特徵空間中,同類的物體還是相對能夠靠攏。這就證明了,數據之間是具有結構性和關聯性的。Instance discrimination則是巧妙地利用了這種結構性和關聯性。

圖七,instance discrimination的兩種可能的優化後的特徵空間

1.捷徑(shortcuts)

以jigsaw puzzles為例,如下圖,如果我們讓劃分的patch之間緊密挨著,那麼神經網絡只需要判斷patch的邊緣是否具有連續性,就可以判斷patch的相對位置,而不需要學到高級的物體語義信息。這就是一種捷徑,我們在設計任務的過程中需要避免這樣的捷徑。

圖八,解決jigsaw puzzles時,patch之間不能緊密挨著

避免的方式也很簡單,我們只需要讓patch之間產生一些隨機的間隔就行,如下圖。

圖9,讓patch之間產生隨機間隔

Solving jigsaw puzzles的其他捷徑還包括色差、彗差、畸變、暗角等可以指示patch在圖像中的相對位置的信息。解決方案除了想辦法消除這些畸變外,還可以讓patch儘量靠近圖像中心。

圖10,色差、彗差、畸變、暗角等可利用的捷徑

2.歧義性(Ambiguity)

大多數利用先驗來設計的自監督任務都會面臨歧義性問題。例如colorization中,一種物體的顏色可能是多種多樣的,那麼從灰度圖恢復顏色這個過程就具有ambiguity;再例如在rotation prediction中,有的物體並沒有一個通常的朝向(例如俯拍放在桌上的圓盤子)。有不少已有工作在專門解決特定任務的歧義性問題,例如CVPR 2019的Self-Supervised Representation Learning by Rotation Feature Decoupling。另外就是設計低熵的先驗,因為低熵的先驗也具有較低的歧義性。

3.任務難度

圖11,solving jigsaw puzzles中的不同難度

神經網絡就像一個小孩,如果給他太簡單的任務,他學不到有用的知識,如果給他太難的任務,他可能直接就放棄了。設計合理的難度也是一個需要考慮的方面。

如何上手?OpenSelfSup: 通用的自監督表徵學習代碼庫

上手自監督學習是一件非常有難度的事情,主要體現在3個方面:

由於自監督學習任務複雜多樣,不同方法各有各的專用訓練代碼,難以結合、復用和改進

評價方案不統一,不同的方法難以在公平環境下對比

動輒百萬千萬的訓練數據量,訓練效率是個大問題

針對這些問題,香港中文大學多媒體實驗室和南洋理工大學開源了一套通用的自監督學習代碼庫,連結如下:

https://github.com/open-mmlab/OpenSelfSup

1.統一的框架

這套代碼庫設計了一個統一的代碼框架,支持基於分類、重建、聚類、memory bank、contrastive learning的多種自監督學習模式,目前收錄了Relative Location, Rotation Prediction, DeepCluster, OnlineDeepCluster, NPID, MoCo, SimCLR等一系列表現較好的自監督表徵學習方法。

2.標準化的評測方案

OpenSelfSup目前支持ImageNet/Place205 Linear Classification, ImageNet Semi-Supervised Classification, PASCAL VOC07 Linear SVM, PASCAL VOC / COCO Object Detection等多個標準的評測方案。

3.高效率的分布式訓練

OpenSelfSup中收錄的算法全部都實現了多機多卡的分布式訓練。

4.容易上手

環境配置,數據配置都有from scratch的腳本或者詳細的指導,簡單易行。訓練和測試現有算法,都只需要一行命令搞定。

5.模塊化設計:高度靈活性和可擴展性

OpenSelfSup用config文件來定義各種參數和模塊,方便參數調節和模塊修改。採用高度模塊化的設計,使得開發自己的自監督學習算法變得非常方便。

config中還支持一些較複雜的調整,比如data augmentation的組合、learning rate schedule、獨立調整某些網絡參數的優化參數等。例如,你希望單獨調整head中fully-connected layer的momentum和learning rate,或者backbone中某幾層的weight decay等等,可以在config中optimizer: paramwise_option下用正則表達式篩選出對應網絡參數然後指定這些值,而不需要改動代碼。如下是DeepCluster中指定head (fc layer)的momentum為0的設置。

具體介紹,可參考:

https://zhuanlan.zhihu.com/p/148782886

這個總結主要基於自己的思考,也許不一定非常到位,權當拋磚引玉。最後,希望大家都能夠設計出有趣又有用的自監督學習任務,為這個領域添磚加瓦。


本文的作者詹曉航,本科畢業於清華大學,目前是香港中文大學多媒體實驗室三年級博士生,指導老師是Chen Change Loy、林達華和湯曉鷗教授。

曾在CVPR、ECCV等計算機視覺頂級會議上發表論文十餘篇,包括五篇第一作者論文。另外曾獲國家獎學金、清華大學本科優秀畢業生、Hong Kong PhD Fellowship、Facebook自監督學習挑戰賽冠軍等榮譽。

他的博士期間主要研究方向為無監督學習,具體工作涵蓋人臉聚類、自監督場景理解、無監督表徵學習等。

個人主頁:

https://xiaohangzhan.github.io/

相關焦點

  • 港中文開源OpenSelfSup: Open-MMLab自監督表徵學習代碼庫
    >本文作者:Xiaohang Zhanhttps://zhuanlan.zhihu.com/p/148782886本文已由原作者授權,不得擅自二次轉載前言自監督的表徵學習領域近幾個月來獲得了顯著的突破,特別是隨著Rotation Prediction, DeepCluster, MoCo, SimCLR等簡單有效的方法的誕生,大有超越有監督表徵學習的趨勢。
  • 一行命令跑評測,港中文MMLab開源自監督表徵學習代碼庫OpenSelfSup
    自監督表徵學習發展迅速,但也存在諸多問題。近日,香港中文大學多媒體實驗室(MMLab)和南洋理工大學的研究者開源了一套統一的自監督學習代碼庫 OpenSelfSup。近幾個月來自監督表徵學習領域獲得了顯著突破,特別是隨著 Rotation Prediction、DeepCluster、MoCo、SimCLR 等簡單有效的方法的誕生,自監督表徵學習大有超越有監督表徵學習的趨勢。
  • 港中文-商湯OpenMMLab開源全景圖!
    這些庫大部分都基於深度學習 PyTorch 框架,算法緊跟前沿,方便易用,文檔較為豐富,無論對於研究還是工程開發的朋友都很值得了解。項目主頁:http://openmmlab.org/本文帶領大家細數各個代碼庫,相信總有一款適合你!
  • 73歲Hinton老爺子構思下一代神經網絡:屬於無監督對比學習
    2018 年,他與 Yoshua Bengio、Yann LeCun 因對深度學習領域做出的巨大貢獻而共同獲得圖靈獎。自 20 世紀 80 年代開始,Geoffrey Hinton 就開始提倡使用機器學習方法進行人工智慧研究,他希望通過人腦運作方式探索機器學習系統。受人腦的啟發,他和其他研究者提出了「人工神經網絡」(artificial neural network),為機器學習研究奠定了基石。
  • 【無監督學習最新研究】簡單的「圖像旋轉」預測,為圖像特徵學習提供強大監督信號
    」編譯:嗯~是阿童木呀、KABUDA、EVA【新智元導讀】在論文中,研究人員訓練卷積神經網絡來識別被應用到作為輸入的圖像上的二維旋轉。近年來,在計算機視覺中廣泛採用的深度卷積神經網絡(LeCun等人於1998年提出),在這一領域取得了巨大的進步。具體來說,通過在具有大量手動標記數據的目標識別(Russakovsky等人於2015年提出)或場景分類(Zhou等人於2014年提出)任務上對卷積神經網絡進行訓練,它們成功學習到了適合於圖像理解任務的強大視覺表徵。
  • 事後解釋VS自解釋,牛津CS博士小姐姐134頁畢業論文探索神經網絡內部構造
    如何解釋深度神經網絡對於人工智慧的發展具有重要的作用,也吸引了越來越多學界和業界人士的注意。在這篇長達 134 頁的博士論文中,一位來自牛津大學的計算機科學博士生對這一課題進行了深入的探討,帶我們走進深度神經網絡的世界。近年來,深度神經網絡正在計算機視覺、自然語言處理和語音識別等多種領域發揮著重要作用,推動了人工智慧的發展。
  • Yann Lecun自監督學習指南(附114頁Slides全文下載)
    2018年11月08日,他來到加州大學聖巴巴拉分校,為在場師生作了一場關於自監督學習的前沿報告,近日他在twitter上公開了報告的全程錄像以及Slides全文,現為大家編譯如下。動物學習新任務所需要的訓練樣本,以及與世界的互動都非常的少。我們甚至能在30個小時的練習中,學會如何駕駛飛機。那麼人類和動物是如何進行有效的學習呢?這裡將提出一個假設:即預測模型中的自監督學習,是人工智慧方法中必不可少的一部分。
  • 【深度學習】詳細的神經網絡架構圖
    人們常常通過反向傳播(back-propagation)來訓練 FFNN,從而讓該網絡獲得配對的數據集——「輸入的內容」和「我們想要得到的輸出」。這被稱為監督學習(supervised learning),其相反的方法被稱為無監督學習(unsupervised learning),其中我們只需要給出輸入然後讓網絡自己填補空白。
  • 「Coursera」深度學習導論 1-1 課程介紹 | 課程筆記
    - 無監督表徵學習第5周 - 深度學習文本處理第6周 - 結課項目本文是第1周的第1份課程筆記。第4周 自編碼器(AE)將圖片編碼為向量神經網絡有一個概念叫神經表徵(neural representations),也就是說,神經網絡能通過學習,將輸入數據轉化為維度更低的向量,這些更低維的向量就包含了輸入數據的語義(semantic)。
  • 港中文MMLab開源MMFashion工具箱
    開源地址:https://github.com/open-mmlab/mmfashion我們在v0.1版本中實現了服飾領域的三大主流任務:1)服飾屬性預測;2)給定服飾找同款;3)服飾關鍵點定位。我們將在後續版本中增加服飾語義分割和服飾推薦這兩個任務。
  • LSTM、GRU與神經圖靈機:詳解深度學習最熱門的循環神經網絡
    這是「非傳統的」,比如循環神經網絡[X(i-1), X(i)] -> y(i)和所有的前饋網絡範式一樣,問題的關鍵是如何將輸入層連接到輸出層(包括反饋激活),然後訓練該結構使其收斂。每個 RNN 都是無監督訓練的,可以預測下一個輸入。然後只有產生錯誤的輸入會被前饋,將新信息傳送到該層次結構中的下一個 RNN,然後以更慢的、自組織的時間尺度進行處理。事實表明不會有信息丟失,只是會有壓縮。該 RNN stack 是數據的一個「深度生成模型(deep generative model)。這些數據可以根據其壓縮形式重建。
  • 神經網絡之父Geoffrey Hinton傑弗裡·欣頓 跨過人工智慧寒冬談深度學習
    系統會對句子的含義進行理解,隨後輸入另一個神經網絡中,後者會輸出另一種語言的句子。在這個過程中,系統不會涉及編程或語言規則,此外,神經網絡甚至還能自行掌握主動句及被動句的區別。神經網絡特點:「並沒有人告訴神經網絡這兩個概念是什麼,就像小孩一樣,你不會告訴他們『這個是主動,這個是被動。』過段時間,他們自然就明白了。神經網絡也是如此。」
  • 港中文開源視頻動作分析庫MMAction,目標檢測庫算法大更新
    點擊文末「閱讀原文」立刻申請入群~本文轉載自公眾號:機器之心近日,香港中文大學多媒體實驗室(MMLab)OpenMMLab 發布動作識別和檢測庫 MMAction,同時也對去年發布的目標檢測工具箱 mmdetection 進行了升級,提供了一大批新的算法實現。
  • 《神經網絡和深度學習》系列文章四:神經網絡的結構
    本節譯者:哈工大SCIR碩士生 徐偉 (https://github.com/memeda)聲明:我們將在每周一,周四,周日定期連載該書的中文翻譯,如需轉載請聯繫wechat_editors@ir.hit.edu.cn,未經授權不得轉載。
  • 想入門深度學習?先弄懂這八個神經網絡架構再說!
    Geoffrey Hinton 毫無疑問是深度學習領域的教父,在課程中給出了非凡的見解。在這篇博客文章中,我想分享我認為任何機器學習研究人員都應該熟悉的八個神經網絡架構,以促進他們的工作。一般來說,這些架構可分為三類:1. 前饋神經網絡這是實際應用中最常見的神經網絡類型。第一層是輸入,最後一層是輸出。如果有多個隱藏層,我們稱之為「深度」神經網絡。
  • 業界 想揭開深度學習隱藏層的神秘面紗?試試Tensor Flow的神經網絡遊樂場
    引言:為計算機構建一個複雜的神經網絡是人工智慧的關鍵,但人腦的這一活動卻被「隱藏層」籠罩在神秘的面紗中。
  • 用Transformer振興CNN骨幹網絡,港大、騰訊等聯合提出視覺自監督表徵學習CARE
    自監督表徵學習近兩年十分火熱。機器學習界的三位泰鬥 Geoffroy Hinton、 Yann Lecun 、 Yoshua Bengio 一致認為自監督學習有望使 AI 產生類人的推理能力,其中 Hinton 與 Lecun 近兩年也在 ICML / NeurIPS 中發表自監督表徵學習的研究工作。
  • GMIS 2017大會鄧力主題演講:無監督學習的最新進展
    中國科學院自動化研究所複雜系統管理與控制國家重點實驗室主任王飛躍為本次大會做了開幕式致辭,他表示:「未來,人工智慧將幫助人類戰勝各種困難」。鄧力老師表明監督學習,即給機器輸入、輸出一對數據,讓它自己去學習,這種情況下它肯定有一個映射了,一對輸入輸出就像一個老師,老師教給這個機器如何進行識別或預測。
  • 華人小哥控訴機器學習「四大Boring」,CS博士:深有同感,正打算退學
    但實際情況是,由於「時間限制」和其他優先級事項,只能做到最簡單、有效的算法。這時候,為了滿足作者的「成就感」,就會在附帶項目中進行一些「瘋狂」的想法,即使這些想法根本不起作用。最後一個部分,就是「滅火」(Fire-fighting),處理各種意外情況。這大概是所有工程師都不願意看到的點了吧。在整個交付過程中,不管是外部、甲方爸爸的要求還是內部溝通不暢、能力不足等各種人為Bug,用作者的話來講,「就是一場噩夢」。
  • 淺談圖上的自監督學習——對比學習
    ,對其中「Contrastive Learning」的內容進行一些解讀,包括一些自監督學習的思路。原始的監督學習、無監督學習,都被目所能及的一切所約束住,無法泛化,導致任務效果無法提升,正是因為自監督探索的是更本質的聯繫,而不是表像的結果,所以其效果通常出乎意料的好。自監督學習的前兩類方法,其核心想法其實都是想去探索事物的本質。