<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          論文聽讀: ICML 2020 Hinton 提出自監(jiān)督學習框架

          共 3817字,需瀏覽 8分鐘

           ·

          2020-08-29 07:33

          ? 本音頻由算法生成,請對照文字閱讀。

          今天介紹一篇由 Hinton 大佬在今年 ICML 會議上提出的工作。近年來人工智能吸引了大量資本的追捧,但也要求它能夠落地。而當前能夠落地的往往是監(jiān)督學習,依賴大量的標注數據。然而,在實際中,很多應用場景是很難獲得海量的標注數據,因此無監(jiān)督學習將是大勢所趨。

          不管是計算機視覺、自然語言處理,還是其他應用領域,無監(jiān)督學習一直在進步。例如,在計算機視覺領域,很多自監(jiān)督學習方法被提出來用于學習圖像的表示。雖然性能不斷提升,但始終遜于監(jiān)督方法。這篇論文提出的 SimCLR,雖然作為自監(jiān)督學習方法,但在 ImageNet 分類上卻超越了監(jiān)督方法。這是怎么做到的呢?

          1快速解讀

          我們可以回憶一下小時候認識這個世界的經歷。對于出現在我們視野里的事物,一般不會有大量實例供我們學習,但我們能夠輕易記住并識別它們?;蛟S人腦有一套特殊的機制科學家還沒發(fā)現,但有一點或許起著一定作用,那就是對比

          比如看到貓貓狗狗,不需要大量實例,我們就能區(qū)別它們。怎么做到的呢?不清楚,或許另外一點也在發(fā)揮著作用,那就是聯想。人腦有很強的聯想能力,即使是看到一張貓的靜態(tài)照片,我們也可以發(fā)揮想象,得到一系列貓可能的樣子,包括形狀、大小和紋理等。

          這對應于計算機來說,就是數據增強。但是我們不能把貓聯想成老虎或者獅子啥的,因此需要有所限制,即保持一定相似性的數據增強。怎么給計算機增加這個限制呢?可以兩兩比較,同類間的相似性高于非同類間的相似性。接下來的任務就是設計具體的網絡和損失函數,然后用數據去自監(jiān)督訓練。

          以上是本號對這篇論文的簡單解讀,下面是對該論文的動機和算法細節(jié)的詳細解讀,花十分鐘可以快速理解該論文的要點。

          2引言

          為了讓計算機自監(jiān)督學習,有必要想一下我們小時候是怎么學習的。記得小時候的課本上有這樣的題目,

          讓小朋友看左邊動物的圖像,然后在右邊找出同類。

          這樣的練習是為了讓孩子通過對比更好地識別一個物體。那我們能用類似的方式來教機器學習物體的表示嗎?

          事實證明,我們可以通過一種所謂的對比學習來教會機器分辨相似和不同的物體。

          3機器對比學習

          要讓機器學會對比學習,需要完成以下三件事,

          ?1?相似和非相似圖像對

          我們需要相似和非相似的圖像樣本對來訓練模型。

          監(jiān)督學習需要人手動制作這樣的圖像對。為了實現算法自動化,我們可以利用自監(jiān)督學習。但是我們如何表示它呢?

          ?2?獲得圖像的表示

          需要某種機制來讓機器得到圖像的表示。

          ?3?量化圖像對相似性

          需要一個機制來計算兩個圖像的相似性。

          4SimCLR 框架

          SimCLR 框架,正如全文所示,非常簡單。取一幅圖像,對其進行隨機變換,得到一對增廣圖像 。該對中的每個圖像都通過編碼器以獲得圖像的表示。然后用一個非線性全連通層來獲得圖像表示 ,其任務是最大化相似圖像的 兩種表征之間的相似性。

          ?手把手例子

          讓我們通過一個示例來一探 SimCLR 框架的究竟。首先,我們有一個包含數百萬未標記圖像的訓練庫。

          1、數據增強

          首先,從原始圖像集生成批大小為 N 的 batch。為了簡單起見,我們取一批大小為 N = 2 的數據。在論文中,他們使用 8192 大小的 batch。

          論文中定義了一個隨機變換函數 ,該函數取一幅圖像并應用 random (crop + flip + color jitter + grayscale)

          對于這個 batch 中的每一幅圖像,使用隨機變換函數得到一對圖像。因為我們這里 batch 大小為 2,所以總共得到 2N = 4 張圖像。

          2、圖像表示

          圖像對中增強過的圖像都通過一個編碼器來獲得圖像表示。所使用的編碼器是通用的,可用其他架構替換。下面顯示的兩個編碼器權值共享,我們得到向量 。

          在文中,作者使用 ResNet-50 架構作為 ConvNet 編碼器。輸出是一個 2048 維的向量

          3、投影頭

          兩個增強圖像的表示 經過一系列非線性層 Dense -> Relu -> Dense 作非線性變換,投影得到 。文中稱為投影頭,用 表示。

          4、模型調優(yōu)

          對于 batch 中的每個增強圖像,我們得到其嵌入向量 。

          用這些嵌入計算損失,步驟如下:

          1、計算余弦相似性

          現在,用余弦相似度計算圖像的兩個增強圖像之間的相似度。對于兩個增強的圖像 ,用它們的投影表示 計算余弦相似度。

          其中 是可調參數。它可以縮放輸入,并擴大余弦相似度的范圍 。

          使用上述公式計算 batch 中所有增強圖像兩兩之間的余弦相似度。如圖所示,在理想情況下,增強后的貓圖像之間的相似度會很高,而貓和大象圖像之間的相似度會比較低。

          2、計算損失

          SimCLR 使用了一種對比損失,稱為 NT-Xent 損失。

          首先,將 batch 的增強對逐個取出。

          接下來,使用 softmax 函數來得到這兩個圖像的相似性概率。

          這個 softmax 計算在類似的情況經常見到,但這也是這個算法的巧妙之處。等后面最小化損失函數之后就知道了,這里相當于希望兩張增強貓的圖像具有最相似的概率。那么其他圖像呢?與左邊這張增強貓圖像的相似概率不計算了嗎?是的,這一點也比較重要,就是 batch 中所有其它圖像都被為看成不相似的圖像(負樣本對),因此不需要像其它方法那樣引入專門的架構。

          然后,通過取上述計算的對數的負數來計算這個圖像對的損失。這個公式就是噪聲對比估計 NCE 損失,

          在圖像位置互換的情況下,我們再次計算同一對圖像的損失。

          最后,我們計算 N=2 的所有配對的損失并取平均值。

          基于這種損失,編碼器和投影頭表示法會隨著訓練得到改善,最終使得相似圖像的表示在空間中更接近。

          ?下游任務

          一旦 SimCLR 模型被訓練在對比學習任務上,可以用于遷移學習。為此,使用來自編碼器的表示,而不是從投影頭獲得的表示。得到的表示可以用在像 ImageNet 圖像分類等下游任務上。

          ?結果比較

          論文聲稱 SimCLR 比之前 ImageNet 上的自監(jiān)督方法更好。下圖顯示了在 ImageNet 上基于不同自監(jiān)督方法學習表示訓練的線性分類器的 top-1 精度。SimCLR 以粗體顯示,灰色的 表示有監(jiān)督的 ResNet50。

          • ImageNet ilsvrc-2012 上,實現了 76.5% 的 top-1 準確率,比之前的 SOTA 自監(jiān)督方法 Contrastive Predictive Coding 提高了 7%,與有監(jiān)督的 ResNet50 相當。

          • 當訓練 1% 的標簽時,它達到 85.8% 的 top-5 精度,超過了 AlexNet,但使用的標簽數據少了 100 倍。

          思考:?SimCLR 只是自監(jiān)督學習了圖像的表示,并沒有直接識別分類,上面比較的線性分類器還是在一定程度上依賴監(jiān)督學習。如果直接用 SimCLR 的編碼表示再加 KNN 作無監(jiān)督分類呢?

          再看一下不同的 batch size 對性能的影響。簡單理解就是對于對比學習來說,訓練時 batch size 越大,一下子涉及的負樣本數量就越多,越利于收斂。

          ?SimCLR 代碼

          本文作者的 Tensorflow 官方實現版本放在 GitHub 上。他們還為使用 Tensorflow Hub 的 ResNet50 架構的 1 倍、2 倍和 3 倍變體提供了預訓練模型[1]。

          有各種非官方的 SimCLR PyTorch 實現,它們已經在小型數據集上測試過,比如 CIFAR-10[2]STL-10[3]

          5小結

          簡而言之,每張圖像可以變換出不同視角 view,而數據增強好比讓機器聯想出不同的 view。但還要求同一張圖像的不同 view 在 latent space 里盡量靠近,而不同圖像的 view 在 latent space 里盡量遠離,因此需要設計相應的損失函數。
          總之,SimCLR 為計算機視覺的自監(jiān)督學習提供了一個強有力的框架,值得深入研究和應用。
          ?思 考 題

          最后提一個問題,投影頭將表示變換成投影表示,然后再用投影表示計算相似度。這個投影頭起到什么作用呢?是不是必需的呢?文中的圖 8. 給出了部分答案。

          ?參考資料?

          [1]

          預訓練模型: https://github.com/google-research/simclr#pre-trained-models-for-simclrv1

          [2]

          CIFAR-10: https://github.com/leftthomas/SimCLR

          [3]

          STL-10: https://github.com/Spijkervet/SimCLR

          [4]

          論文: https://arxiv.org/pdf/2002.05709.pdf

          [5]

          代碼: https://github.com/google-research/simclr

          [6]

          參考1: https://amitness.com/2020/03/illustrated-simclr/

          [7]

          參考2: https://zhuanlan.zhihu.com/p/107269105



          瀏覽 104
          1點贊
          評論
          1收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          1點贊
          評論
          1收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  www.1800av | 欧美视频一区在线观看 | 中文在线成人а√天堂官网 | 日日撸夜夜操 | 东方成人av |