毫無疑問,卷積神經網路(CNN)在在深度學習領域的開發和研究中發揮了重要作用。然而,研究人員經常會遇到這樣一個情景:過於封閉的理論世界和完美的資料集。不幸的是,追求在精度上的提升分數,與實際用途(真實世界)相去甚遠。考慮到資料集的噪聲有限,設計的演算法往往在資料集上完美預測,然而在現實世界中的表現可能很差。
1 Problem:they kind of suck!
“對抗性”輸入,或輸入的微小變化,卷積神經網路特別容易感到困惑。事實證明確實如此。
不久前,在2020年,網路安全公司McAfee展示了Mobileye(特斯拉和其他汽車製造商使用的汽車智慧系統)可能會被愚弄,只需將一條寬約2英寸的黑色膠帶塗上一條速度限制,即可將速度提高50 MPH標誌。來自包括華盛頓大學和加州大學伯克利分校在內的等大學的研究人員發現,將道路標誌識別模型引入停車位標誌上的一些噴漆或貼紙後,CNN就會完全被愚弄了,所有這些都是完全自然和非惡意的改動。
更為重要的是,卷積神經網路確實不擅長對影象的尺度和旋轉進行泛化,更不用說三維檢視的不同角度了。
2 CNN & Pooling
要了解為什麼卷積神經網路在跨視角和角度進行泛化時會有如此大的麻煩,首先必須瞭解為什麼卷積神經網路完全起作用,以及卷積和池化層有何特別之處。
卷積層是在整個影象上應用相同的過濾器(可以將其視為某種“特徵檢測器”,用於尋找線條或其他特徵),因此不受平移影響。無論物件是出現在左上角還是右下角,都將被檢測到,因為卷積層會穿過整個影象。池化層有助於“合併”每個區域內的發現,以進一步平滑。使用卷積層和池化層,可以在不同區域,甚至輕微傾斜和縮放時都可以識別到目標。
另一方面,卷積層無法捕捉縮放。如下左圖所示,紅色方框代表卷積過濾器,當它遇到“鳥”時會產生高啟用。如下右圖所示,在放大的影象中,由於濾波器的大小是有限的,因此任何位置都不能產生高啟用。
同樣,卷積層也不適用於旋轉。卷積過濾器只是一個權值矩陣,如果某些畫素與其他值相關的特定值,則它會生成高值。因為過濾器是固定的,並且以自上而下的左右移動的方式移動,所以它無法識別從不同方向檢視的影象。
處理這個問題的標準方法是使用資料擴充,但這也不是一個好的解決方案。卷積神經網路只是簡單地記住一個物體也可能以那個近似的方向和大小出現,而不是必然地泛化到所有的視點。
此外,cnn將影象解析為一個整體,而不是多個物件的組合。沒有對不同實體及其關係的顯式表示,這意味著它不能識別以前從未見過的物件。因此,它需要一種暴力的方式來識別影象,為每個單獨的畫素記住更豐富和更詳細的影象表示,而不是檢視它的各個部分(例如薄輪胎+車架+把手=腳踏車)。
很大程度上這是因為卷積神經網路不像人類那樣識別影象。是的,在標準資料集的完美環境下,或者在旋轉和尺度不常變化的簡單任務中,cnn表現良好。然而,隨著我們對影象處理的要求越來越高,我們需要升級。
3 Future
解決不變性問題的一種方法是透過Spatial Transformer,它在預測之前定義軸和影象邊界。這有助於透過注意力機制糾正縮放(第一排)和旋轉(第二排)失衡,以及噪音(第三排)。
事實上,它可以消除複雜的扭曲,這是非常有價值的,因為三維視點的複雜性超出了旋轉和縮放變換。
其他一些結構,如Scale-invariant Convolutional Neural Network (SiCNN)等等。
更著名的是,Geoff Hinton提出了一個膠囊網路,它明確地建立了透過層次結構識別單個部件的思想,他認為這是自然的、人類的識別方法。
Hinton指出,計算機視覺的任務實際上是反求計算機圖形學。圖形程式使用基於位置不變矩陣計算空間結構的層次模型。視點只是矩陣乘法。
因此,影象識別網路的目標應該是找到視點表示和“內在”物件表示之間的聯絡,這與視點無關。
每個膠囊被委託給這些內在物件中的一個,並透過強制模型學習特徵方差來識別它們,而不管它們是從哪個角度觀察的。膠囊對空間資訊進行編碼,並且只進行“協議路由”,這意味著網路只會將較低層次的特徵(如眼睛、鼻子和嘴唇)傳送到更高層,前提是它們的內容相似。
顯然,這與卷積神經網路完全不同。然而,也許正是這種影象識別的轉變,才有必要擺脫為資料集設計的時代,轉而實現更智慧、更健壯的模型,在日益複雜和需求日益增長的現實世界任務中表現更好。