時至今日,我們目前討論的模型在處理表格數據時仍然是合適的選擇。通過表格,我們的意思是數據由對應于示例的行和對應于特征的列組成。對于表格數據,我們可能會預期我們尋求的模式可能涉及特征之間的相互作用,但我們不假設任何關于特征如何相互作用的先驗結構。
有時,我們確實缺乏知識來指導更巧妙的架構的構建。在這些情況下,MLP 可能是我們能做的最好的。然而,對于高維感知數據,這種無結構網絡可能會變得笨拙。
例如,讓我們回到我們正在運行的區分貓和狗的例子。假設我們在數據收集方面做得很徹底,收集了一個百萬像素照片的注釋數據集。這意味著網絡的每個輸入都有一百萬個維度。即使大幅減少到一千個隱藏維度,也需要一個完全連接的層,其特征是106×103=109 參數。除非我們有大量的 GPU、分布式優化的人才和非凡的耐心,否則學習這個網絡的參數可能是不可行的。
細心的讀者可能會反對這一論點,因為百萬像素分辨率可能不是必需的。然而,雖然我們可能能夠擺脫 10 萬個像素,但我們的隱藏層大小 1000 嚴重低估了學習良好圖像表示所需的隱藏單元數量,因此實際系統仍需要數十億個參數。此外,通過擬合如此多的參數來學習分類器可能需要收集龐大的數據集。然而今天,人類和計算機都能夠很好地區分貓和狗,這似乎與這些直覺相矛盾。這是因為圖像展現出豐富的結構,人類和機器學習模型都可以利用這些結構。
7.1.1. 不變性
想象一下,我們想要檢測圖像中的物體。這似乎是合理的,無論我們使用什么方法來識別物體,都不應該過分關注物體在圖像中的精確位置。理想情況下,我們的系統應該利用這些知識。豬通常不會飛,飛機通常不會游泳。盡管如此,我們仍然應該認出一只豬出現在圖像的頂部。我們可以從兒童游戲“威利在哪里”中得到一些啟發(如圖7.1.1所示)。游戲由許多充滿活動的混亂場景組成。沃爾多出現在每個地方的某個地方,通常潛伏在一些不太可能的位置。讀者的目標是找到他。盡管他的著裝很有特色,但由于大量的干擾因素,這可能出奇地困難。然而,Waldo 長什么樣子并不取決于Waldo 所在的位置。我們可以使用 Waldo 檢測器掃描圖像,該檢測器可以為每個補丁分配一個分數,指示該補丁包含 Waldo 的可能性。事實上,許多目標檢測和分割算法都是基于這種方法(Long et al. , 2015)。CNN 將這種空間不變性的思想系統化,利用它以更少的參數學習有用的表示。
現在,我們可以通過列舉一些必要條件來指導我們設計適用于計算機視覺的神經網絡架構,從而使這些直覺更加具體:
-
在最早的層中,我們的網絡應該對相同的補丁做出類似的響應,無論它出現在圖像中的什么位置。這個原理稱為平移不變性(或平移等變性)。
-
網絡的最早層應該關注局部區域,而不考慮遠處區域的圖像內容。這就是局部性原則。最終,可以聚合這些局部表示以在整個圖像級別進行預測。
-
隨著我們的進行,更深的層應該能夠捕捉圖像的更遠距離的特征,類似于自然界中更高層次的視覺。
讓我們看看這如何轉化為數學。
7.1.2. 約束 MLP
首先,我們可以考慮一個帶有二維圖像的 MLP X作為輸入及其直接隱藏的表示 H類似地表示為矩陣(它們在代碼中是二維張量),其中X和 H具有相同的形狀。讓它沉入其中。我們現在不僅將輸入設想為具有空間結構,而且將隱藏表示設想為具有空間結構。
讓[X]i,j和[H]i,j表示位置處的像素(i,j)分別在輸入圖像和隱藏表示中。因此,為了讓每個隱藏單元接收來自每個輸入像素的輸入,我們將從使用權重矩陣(就像我們之前在 MLP 中所做的那樣)切換到將我們的參數表示為四階權重張量W. 假設U包含偏差,我們可以將全連接層正式表示為
從開關W到V現在完全是裝飾性的,因為兩個四階張量中的系數之間存在一對一的對應關系。我們只是重新索引下標(k,l)這樣k=i+a和l=j+b. 換句話說,我們設 [V]i,j,a,b=[W]i,j,i+a,j+b. 指數a和b遍歷正偏移和負偏移,覆蓋整個圖像。對于任何給定位置(i, j) 在隱藏表示中[H]i,j,我們通過對像素求和來計算它的值x, 以 (i,j)并加權
評論
查看更多