學習一個像小鼠一樣工作的 CNN
雷鋒網 (公眾號:雷鋒網) AI 科技評論按:當前的基於 CNN 的影像識別模型確實能在許多工中得到很高的識別準確率、也得到了許多實際應用,但 CNN 模型的泛化性和魯棒性仍然遠遜於人類視覺 —— 面對經過細微修改的、或者帶有噪聲的影像,人類的視覺識別幾乎不受影響,而 CNN 的識別準確率則可能大幅波動;場景和視角也能顯著影響 CNN 的表現,更別提從很少的樣本學習物體識別了。
如果說「視覺智慧」的至高水準是具有不變性的神經表徵,以及影像經過複雜變換以後仍然能夠識別處理的泛化能力的話,人類的/生物的視覺系統顯然具有視覺智慧,而現代的 CNN 並不具備;研究生物視覺系統中視覺智慧的來源、並嘗試在人工設計的視覺系統中重現它,近些年來都是神經科學領域以及機器學習領域的熱門研究課題。
最近,NeurIPS 2019 論文《Learning From Brains How to Regularize Machines》(從大腦學習如何做機器的正則化)就在這個問題上做出了有趣的嘗試。此前我們介紹過 ,他們從人腦的 fMRI 成像解碼重現出眼睛看到的畫面。但根據大腦的神經活動直接影響人工神經網路學習表徵的過程,從而影響模型在分類任務中的表現,這個方法就相當新穎有趣。雷鋒網 AI 科技評論把論文主要內容介紹如下。
再次嘗試模仿生物視覺系統
在這篇論文中,作者們重點比較了視覺智慧其中的一個方面:面對對抗性攻擊和噪聲干擾的魯棒性。對抗性攻擊可以對給定影像做微小的修改就讓 CNN 模型以很高的置信度把物體識別為另外一個類別,噪聲則普遍地影響 CNN 的識別準確率。面對相同的干擾,生物視覺系統的表現幾乎不受影響。這很可能表明,不僅 CNN 缺乏生物視覺系統中那種高階的場景理解能力,CNN 識別物體時使用的視覺特徵也可能和生物視覺系統完全不同。
遺憾的是,生物神經網路和人造神經網路的工作機理有很大區別,即便我們能從生物視覺系統中解碼出不同級別的視覺特徵,我們也很難把它直接複製到人造神經網路中去。有一些研究者對生物視覺系統做過直接的研究,比如紐約大學教授 Eero Simoncelli 從紋理和層次化感知的角度做過研究和實驗( ),但他的理論也沒辦法直接拿來改進 CNN。
不過,想要模仿生物神經網路中的特徵,我們也許不是完全束手無策:我們在訓練神經網路時會引入各種隱式的歸納偏倚,以及使用不同的正則化方法,它們能對網路的引數空間增加限制,以及引導改變模型學習和使用特徵的方式,最終對模型的魯棒性和泛化性產生影響。雖然現階段的神經網路訓練中我們很難事先就明確各種選用的偏倚的影響,而且模型學習到的模式也時常無法泛化到訓練資料範圍之外,但這起碼是一個有希望的突破口。
一個從側面起到幫助的事情是,近期有許多研究表明,經過任務中訓練的 CNN 網路的感知表徵和靈長類動物大腦中測量到的表徵訊號有相似之處。作者們就大膽假設,如果能讓人工神經網路的表徵和生物視覺系統的受激神經活動體現出的表徵更為相似,就有可能對 CNN 的表現產生正面的影響 —— 比如和生物視覺系統一樣面對有噪聲、有變化的影像也有較穩定的表現。
學習小鼠的視覺系統
這篇論文的作者們就是引入額外的偏倚,對模型進行正則化(引導),讓模型學習到的模式與生物視覺系統的模式更為相近。具體來說,作者們直接測量了小鼠看到各種不同的複雜自然場景時,大腦中視覺皮質的神經響應。然後,作者們在訓練 CNN 時也不再採用傳統的僅以識別率為核心的訓練目標,而是鼓勵卷積特徵的啟用模式於生物神經訊號的模式更為相近,也就是讓 CNN 學習更接近生物視覺系統的特徵表徵。
測量小鼠
作者們在幾天的時間內、在多隻小鼠身上重複進行了許多輪主要視覺皮層的掃描。在實驗中,小鼠的頭部被固定,身體可以在履帶上跑步。研究者們從 ImageNet 資料集中抽取了 5100 張不同的影像並轉換為灰度色彩,解析度降低到 64x36,然後展示給小鼠看(小鼠的視覺能力不如人類強,而且對彩色不敏感);其中的 5000 張只展示一次(測量一次),100 張展示 10 次(測量 10 次),這樣每隻小鼠的每輪實驗一共有 6000 組測量資料。
選擇小鼠作為實驗動物的主要原因是,針對小鼠的基因改造方法比較多比較成熟,能讓作者們同時測量 8000 個不同神經單元的訊號。固然,足夠複雜、足夠接近人類的其它靈長目動物的視覺系統是理想的研究物件,但畢竟難度較大,而且視覺系統對小鼠來說仍然是重要的感知輸入途徑,仍然有測量意義。
作者們根據測量到的訊號計算訊雜比,對重複實驗中採集到的訊號進行平均處理,以及根據影像-測量訊號對設計了一個降噪模型,最終對原始測量資料進行了有效的降噪,得到可靠的神經訊號特徵以便後續實驗使用。然後,作者們在降噪後的資料上建立了 5000x5000 的相似性矩陣,並把它作為正則化 CNN 網路的目標。
相似性矩陣:圖中的點表示橫座標對應的影像和縱座標對應的影像讓小鼠產生的神經訊號的詳細程度,淺色的點表示相似程度較高,也就是在生物視覺系統看來它們是更相似的兩張影像;深色的點表示相似程度較低
CNN 訓練
作者們選用了一個 18 層的 ResNet 模型作為要模仿小鼠的 CNN 模型主幹,要讓它在學習影像分類任務的同時,模仿小鼠視覺系統的啟用模式。
典型的 CNN 分類任務訓練中,要最佳化的損失只有一項任務損失,比如交叉熵損失。為了讓 CNN 模仿小鼠,作者們增加了一項相似性損失。具體的工作模式是:
-
網路可以接收一張或者兩張影像作為輸入
-
如果輸入是單張影像,模型會透過額外的一層全連線層輸出類別分類結果 —— 計算交叉熵損失
-
如果輸入是兩張(一組)影像,模型會分別計算兩張影像啟用的卷積特徵,然後計算第 1、5、9、13、17 層中的啟用特徵的相似性。作者們透過一個正則化帶權重加合器計算一個最終的相似性結果,然後和小鼠上測量的訊號相似性比較,計算相似性損失,從而引導網路學習小鼠的神經訊號模式。
這樣,作者們就透過正則化的方式,讓原始的 CNN 模型學習到和生物視覺系統更為相近的視覺表徵。
實驗結果
在結果對比部分,作者們首先把帶有相似性損失訓練的「生物視覺 CNN」(基於 ResNet18)和正常訓練的幾個模型做對比,而且是在轉換為灰度的 CIFAR 影像上進行測試。完全沒有額外正則化的 ResNet18 對於沒有新增噪聲的影像取得了最高的識別準確率,但隨著新增噪聲,準確率迅速下降;在測試中的最高噪聲下,「生物視覺 CNN」的準確率仍然有 50%,遠高於其他的模型;也就是說模型魯棒性得到了顯著提升。
作為對照試驗,作者們也測試了不同程度的「模仿生物視覺」,比如用隨機的相似性矩陣做正則化,以及用 VGG19 的 conv3-1 層的相似性矩陣做正則化,表現仍然不如「生物視覺 CNN」,但利用了 VGG19 的層的是最相似的。
另外還有一組對照實驗是,作者們用未經過降噪的小鼠神經訊號測量資料直接做正則化,發現模型魯棒性的提升很小;作者們認為原因是原始神經訊號有高度變化/隨機性,這說明了降噪步驟的重要性。
在包含了多種對抗性攻擊方法的對抗性影像識別測試中,「生物視覺 CNN」的表現也遠好於其他的模型。
結論和討論
我們常說神經科學可以為機器學習帶來啟發,但是我們一直缺少能讓神經生理學的研究成果直接轉化成人工神經網路的方法。在這篇論文中,作者們展示了一種利用神經訊號測量資料的正則化方法,它能給神經網路模型增加偏倚,讓模型學習到的表徵和小鼠大腦(生物視覺系統)的視覺表徵更為相近,提高網路在推理任務中的魯棒性。作者們認為,未來如果能讓人工神經網路的視覺表徵和生物視覺系統中 V1 以上的視覺皮層之間的相似性進一步提高的話,模型的魯棒性、泛化性表現也能跟著繼續提高。這些從生物大腦實際模仿學習到的表徵有可能能夠幫助機器學習演算法的表現更接近人類視覺系統的表現。
針對方法,作者們使用的表徵相似性方法是一種較為通用的方法,他們的原始訊號降噪方法也幫助改進了生物視覺表徵的評估(把視覺相關的訊號進行解耦,以及把單獨出現的神經訊號轉換為可靠的、降噪後的神經訊號)。還有一種讓 CNN 模型模仿生物神經表徵的方法是,在訓練執行任務的 CNN 模型時,從網路的中間層上聯合訓練一個線性讀出器,讓它直接從影像特徵預測生物神經響應。不過,作者們認為他們選用的方法有更高的限制以及引導力度,因為 CNN 中有大量的仿形變換都可以被線性讀出器補償,在提高預測神經響應的準確率的同時,對 CNN 學習到的表徵的影響卻很小。
在這篇論文中作者們主要測量了「生物視覺 CNN」的魯棒性,但顯然,這個方向的研究的長遠目標是利用模仿生物視覺的視覺表徵,在領域遷移、小樣本學習等等更多方面都帶來改進。作者們未來也會在視覺系統的其它表現、以及更多的相似性限制方面做更多的探索。
另外,雖然方法設計以及實驗結果表明模仿生物視覺特徵能帶來改進,但具體學習到了生物視覺表徵的哪個方面還是一個有待探究的問題,這也是這項研究背後最值得做深入探究的問題。如果能夠弄清具體的影響原理,可以不再借助大規模神經訊號採集實驗,而直接根據這些原理設計以及訓練機器學習模型 —— 這也就是這條研究路線的至高目標。
閱讀論文原文:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2665330/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【深度學習】像玩樂高一樣拆解Faster R-CNN:詳解目標檢測的實現過程深度學習ASTCNN
- 像追女神一樣學好java~Java
- 深度學習入門實戰(一):像Prisma一樣演算法生成梵高風格畫像深度學習演算法
- 居然可以像玩遊戲一樣學Git遊戲Git
- 谷歌“學習機器人”:機器像人腦一樣思考谷歌機器人
- 歸納+記憶:讓機器像人一樣從小樣本中學習
- 技術Leader:像李雲龍一樣打造學習型團隊
- 如何連線一個像 MSSQL 或者 orcale 一樣的外部資料庫SQL資料庫
- DeepMind綜述深度強化學習中的快與慢,智慧體應該像人一樣學習強化學習智慧體
- 怎樣才能做一個合格的PM?我正在學習...
- 《科學》封面重磅論文:人工智慧終於能像人類一樣學習人工智慧
- 翻譯 | 像 JavaScript 一樣思考JavaScript
- 像 IDE 一樣使用 VimIDE
- PaperView:像紙一樣摺疊View
- 像寶石一樣的Java原子類Java
- 像玩樂高一樣拆解Faster R-CNN:詳解目標檢測的實現過程ASTCNN
- [譯] 建立一個像科幻小說一樣的虛擬世界:設計一個全球性的虛擬世界虛擬世界
- 像外行一樣思考,像專家一樣實踐——科研成功之道(修訂版)
- 像打怪升級一樣學 Android--Skill Tree 分享Android
- 8個酷炫的GitHub技巧,讓你看起來像大佬一樣!Github
- 像使用 Laravel Query 一樣的搜尋 ElasticsearchLaravelElasticsearch
- 像bootstrap一樣的去做web程式設計bootWeb程式設計
- 讀《像javascript一樣思考》筆記JavaScript筆記
- 像Event Emitter一樣使用Web WorkerMITWeb
- 像物件一樣對待資料物件
- 創新就要像小孩一樣思考
- 像特斯拉創始人一樣思考
- 像Windows 一樣地查詢 (轉)Windows
- 做獨立遊戲要像擺攤一樣遊戲
- 我猜你需要一個像vue-cli一樣的後端(node)腳手架Vue後端
- 故事樣設計——怎樣像使用者一樣思考?
- 一文讀懂最近流行的CNN架構(附學習資料)CNN架構
- 【經濟學原理】像經濟學家一樣思考——思維導圖
- 深度學習目標檢測(object detection)系列(一) R-CNN深度學習ObjectCNN
- 機器學習線上手冊:像背託福單詞一樣學機器學習機器學習
- 像大牛一樣寫程式碼: 31個Android 開發者工具Android
- 第一個JavaScript的例子學習JavaScript
- 作為一個新人,怎樣學習嵌入式LinuxLinux