卷積神經網絡 (CNN) 初學者指南
已發表: 2021-07-05在過去的十年中,人工智能和更智能的機器取得了巨大的增長。 該領域產生了許多專門研究人類智能不同方面的子學科。 例如,自然語言處理試圖理解和建模人類語音,而計算機視覺旨在為機器提供類似人類的視覺。
由於我們將討論卷積神經網絡,因此我們的重點將主要放在計算機視覺上。 計算機視覺旨在使機器能夠像我們一樣看待世界,並解決與圖像識別、圖像分類等相關的問題。 卷積神經網絡用於實現計算機視覺的各種任務。 它們也被稱為 CNN 或 ConvNet,它們遵循類似於人類大腦中神經元的模式和連接的架構,並受到大腦中發生的各種生物過程的啟發,以使交流發生。
目錄
卷積神經網絡的生物學意義
CNN 的靈感來自我們的視覺皮層。 它是大腦皮層的區域,參與我們大腦的視覺處理。 視覺皮層具有對視覺刺激敏感的各種小細胞區域。
這個想法在 1962 年由 Hubel 和 Wiesel 在一項實驗中得到擴展,發現不同的不同神經元細胞對特定方向的不同邊緣的存在做出反應(被激發)。 例如,一些神經元會在檢測水平邊緣時觸發,其他神經元會在檢測對角邊緣時觸發,而其他一些神經元會在檢測到垂直邊緣時觸發。 通過這個實驗。 Hubel 和 Wiesel 發現神經元以模塊化的方式組織起來,所有的模塊一起產生視覺感知。
這種模塊化方法——系統內的專用組件具有特定任務的想法——是構成 CNN 的基礎。
解決了這個問題,讓我們繼續討論 CNN 如何學習感知視覺輸入。
卷積神經網絡學習
圖像由單個像素組成,這是數字 0 到 255 之間的表示。因此,您看到的任何圖像都可以通過使用這些數字轉換為適當的數字表示——這也是計算機處理圖像的方式。
以下是使 CNN 學習圖像檢測或分類的一些主要操作。 這將使您了解學習是如何在 CNN 中進行的。
1.卷積
卷積在數學上可以理解為兩個不同函數的組合積分,以找出不同函數的影響或如何相互修改。 以下是如何用數學術語定義它:
卷積的目的是檢測圖像中不同的視覺特徵,如線條、邊緣、顏色、陰影等。 這是一個非常有用的屬性,因為一旦你的 CNN 了解了圖像中特定特徵的特徵,它就可以在圖像的任何其他部分識別該特徵。
CNN 利用內核或過濾器來檢測任何圖像中存在的不同特徵。 內核只是經過訓練以檢測特定特徵的不同值的矩陣(在人工神經網絡世界中稱為權重)。 過濾器在整個圖像上移動以檢查是否檢測到任何特徵的存在。 過濾器執行卷積操作以提供最終值,該值表示存在特定特徵的可信度。
如果圖像中存在特徵,則卷積運算的結果是具有高值的正數。 如果該特徵不存在,則卷積運算會產生 0 或非常低值的數字。
讓我們通過一個例子更好地理解這一點。 在下圖中,已經訓練了一個過濾器來檢測加號。 然後,過濾器通過原始圖像。 由於原始圖像的一部分包含訓練過濾器的相同特徵,因此存在特徵的每個單元格中的值都是正數。 同樣,卷積運算的結果也會產生很大的數。
但是,當相同的過濾器通過具有不同特徵和邊緣集的圖像時,卷積運算的輸出會更低——這意味著圖像中沒有任何明顯的加號存在。
因此,對於具有曲線、邊緣、顏色等各種特徵的複雜圖像,我們需要 N 個這樣的特徵檢測器。
當這個過濾器通過圖像時,會生成一個特徵圖,它基本上是輸出矩陣,用於存儲這個過濾器在圖像不同部分的捲積。 在許多過濾器的情況下,我們最終會得到一個 3D 輸出。 此過濾器應具有與輸入圖像相同數量的通道,以便進行卷積操作。
此外,可以使用步幅值以不同的間隔在輸入圖像上滑動過濾器。 步幅值告知過濾器應該在每一步移動多少。
因此,可以使用以下公式確定給定卷積塊的輸出層數:
2.填充
使用卷積層時的一個問題是,一些像素往往會在原始圖像的周邊丟失。 由於通常使用的過濾器很小,每個過濾器丟失的像素可能很少,但是當我們應用不同的捲積層時,這會累加起來,導致很多像素丟失。
填充的概念是在 CNN 的過濾器處理圖像時向圖像添加額外的像素。 這是在圖像處理中幫助過濾器的一種解決方案——通過用零填充圖像來為內核提供更多空間來覆蓋整個圖像。 通過向過濾器添加零填充,CNN 的圖像處理更加準確和準確。
檢查上面的圖像——通過在輸入圖像的邊界添加額外的零來完成填充。 這可以在不丟失任何像素的情況下捕獲所有不同的特徵。
3.激活圖
特徵圖需要通過本質上是非線性的映射函數。 特徵圖包含一個偏置項,然後通過非線性的激活(ReLu)函數。 該功能旨在為 CNN 帶來一定程度的非線性,因為被檢測和檢查的圖像本質上也是非線性的,由不同的對象組成。
4. 池化階段
一旦激活階段結束,我們將繼續進行池化步驟,其中 CNN 對卷積特徵進行下採樣,這有助於節省處理時間。 這也有助於減少圖像的整體大小、過度擬合以及在卷積神經網絡被輸入大量信息時可能出現的其他問題——尤其是當這些信息與圖像的分類或檢測不太相關時。
池化基本上有兩種類型——最大池化和最小池化。 在前者中,根據設定的步幅值在圖像上傳遞一個窗口,並且在每個步驟中,將窗口中包含的最大值匯集到輸出矩陣中。 在 min pooling 中,最小值匯集在輸出矩陣中。
作為輸出結果形成的新矩陣稱為池化特徵圖。
在最小和最大池中,最大池的一個好處是它允許 CNN 專注於少數具有高值的神經元,而不是專注於所有神經元。 這種方法使得過度擬合訓練數據的可能性很小,並使整體預測和泛化順利進行。
5. 展平
池化完成後,圖像的 3D 表示現在已轉換為特徵向量。 然後將其傳遞給多層感知器以產生輸出。 查看下圖以更好地理解展平操作:
如您所見,矩陣的行被連接成一個特徵向量。 如果存在多個輸入層,則連接所有行以形成更長的扁平特徵向量。
6. 全連接層(FCL)
在這一步中,扁平化的地圖被饋送到神經網絡。 神經網絡的完整連接包括輸入層、FCL 和最終輸出層。 全連接層可以理解為人工神經網絡中的隱藏層,除了與隱藏層不同的是,這些層是全連接的。 信息通過整個網絡,計算出一個預測誤差。 然後,此錯誤作為反饋(反向傳播)通過系統發送,以調整權重並改進最終輸出,使其更準確。
從上述神經網絡層獲得的最終輸出通常不會加起來為 1。 這些輸出需要降低到 [0,1] 範圍內的數字——然後將代表每個類別的概率。 為此,使用了 Softmax 函數。
從密集層獲得的輸出被饋送到 Softmax 激活函數。 通過這種方式,所有最終輸出都映射到一個向量,其中所有元素的總和為 1。
全連接層的工作原理是查看前一層的輸出,然後確定與特定類最相關的特徵。 因此,如果程序預測圖像中是否包含貓,它將在代表四條腿、爪子、尾巴等特徵的激活圖中具有較高的值。 同樣,如果程序正在預測其他內容,它將具有不同類型的激活圖。 全連接層負責處理與特定類和權重密切相關的不同特徵,以便權重與前一層之間的計算是準確的,並且您可以獲得不同輸出類的正確概率。
CNN 工作的快速總結
以下是 CNN 如何工作並幫助計算機視覺的整個過程的快速總結:
- 圖像中的不同像素被饋送到卷積層,在那裡執行卷積操作。
- 上一步生成捲積映射。
- 這個映射通過一個整流函數來產生一個整流映射。
- 使用不同的捲積和激活函數對圖像進行處理,以定位和檢測不同的特徵。
- 池化層用於識別圖像的特定、不同部分。
- 池化層被展平並用作全連接層的輸入。
- 全連接層計算概率並給出[0,1]範圍內的輸出。
綜上所述
CNN 的內部功能非常令人興奮,為創新和創造打開了很多可能性。 同樣,人工智能下的其他技術也很吸引人,並試圖在人類能力和機器智能之間發揮作用。 因此,來自世界各地的人們,屬於不同的領域,正在意識到他們對這個領域的興趣,並且正在邁出第一步。
幸運的是,人工智能行業非常受歡迎,並且不會根據你的學術背景來區分。 您所需要的只是技術知識和基本資格,一切就緒!
如果您想掌握 ML 和 AI 的精髓,理想的做法是參加專業的 AI/ML 計劃。 例如,我們的機器學習和人工智能執行計劃是數據科學有志者的完美課程。 該計劃涵蓋統計和探索性數據分析、機器學習和自然語言處理等主題。 此外,它還包括超過 13 個行業項目、25 個以上的現場會議和 6 個頂點項目。 本課程最好的部分是您可以與來自世界各地的同齡人互動。 它促進思想交流,並幫助學習者與來自不同背景的人建立持久的聯繫。 我們的 360 度職業幫助正是您在 ML 和 AI 之旅中脫穎而出所需要的!