卷積神經(jīng)網(wǎng)絡在機器學習中非常重要。如果你想做計算機視覺或圖像識別任務,你根本離不開它們。但是很難理解它們是如何工作的。
在這篇文章中,我們將討論卷積神經(jīng)網(wǎng)絡背后的機制、它的優(yōu)點和應用領域。
什么是神經(jīng)網(wǎng)絡?
首先,讓我們復習一下神經(jīng)網(wǎng)絡(Neural Networks, NN)的一般工作原理。
任何神經(jīng)網(wǎng)絡,從簡單的感知器到巨大的企業(yè)人工智能系統(tǒng),都由模仿人腦神經(jīng)元的節(jié)點組成。這些細胞緊密相連。節(jié)點也是如此。
神經(jīng)元通常被組織成獨立的層。神經(jīng)網(wǎng)絡的一個例子是前饋神經(jīng)網(wǎng)絡。數(shù)據(jù)從輸入層通過一組隱藏層僅沿一個方向移動,就像水通過過濾器一樣。
系統(tǒng)中的每個節(jié)點都連接到上一層和下一層中的某些節(jié)點。節(jié)點從其前面的層接收信息,對其執(zhí)行某些操作,并將信息發(fā)送到下一層。
每個傳入連接都分配有一個權重。這是一個數(shù)字,節(jié)點在從不同節(jié)點接收數(shù)據(jù)時將輸入乘以該數(shù)字。
節(jié)點通常使用多個傳入值。 然后,它將所有內(nèi)容總結在一起。
有幾種可能的方法可以決定是否應將輸入傳遞到下一層。例如,如果使用單位階躍函數(shù),則如果節(jié)點的值低于閾值,則節(jié)點不會將數(shù)據(jù)傳遞到下一層。如果數(shù)字超過閾值,節(jié)點將向前發(fā)送數(shù)字。然而,在其他情況下,神經(jīng)元可以簡單地將輸入投影到某個固定值段中。
當神經(jīng)網(wǎng)絡首次被訓練時,它的所有權重和閾值都是隨機分配的。一旦訓練數(shù)據(jù)被饋送到輸入層,它就會穿過所有層,最終到達輸出。在訓練期間,將調(diào)整權重和閾值,直到具有相同標簽的訓練數(shù)據(jù)始終提供相似的輸出。這稱為反向傳播。你可以在 TensorFlow Playground 中看到它是如何工作的。
簡單 NN 有什么問題?
常規(guī)的人工神經(jīng)網(wǎng)絡不能很好地擴展。例如,在通常用于訓練計算機視覺模型的數(shù)據(jù)集 CIFAR 中,圖像的大小僅為 32x32 像素,并且具有 3 個顏色通道。這意味著該神經(jīng)網(wǎng)絡第一隱藏層中的單個全連接神經(jīng)元將具有 32x32x3 = 3072 個權重。它仍然是可管理的。但是現(xiàn)在想象一個更大的圖像,例如,300x300x3。它將有 270000 個權重(訓練需要如此多的計算能力)!
像這樣的龐大神經(jīng)網(wǎng)絡需要大量資源,但即便如此,仍然容易過度擬合,因為大量的參數(shù)使其能夠只記住數(shù)據(jù)集。
卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks, CNN)使用參數(shù)共享。特定特征圖中的所有神經(jīng)元共享權重,這使得整個系統(tǒng)的計算強度降低。
CNN 是如何工作的?
卷積神經(jīng)網(wǎng)絡只是使用卷積的神經(jīng)網(wǎng)絡。為了理解原理,我們將首先使用二維卷積。
什么是卷積?
卷積是一種數(shù)學運算,允許合并兩組信息。在 CNN 的情況下,卷積應用于輸入數(shù)據(jù)以過濾信息并生成特征圖。
此濾波器也稱為內(nèi)核或特征檢測器,其尺寸可以是 3x3。為了執(zhí)行卷積,內(nèi)核遍歷輸入圖像,一個又一個元素地執(zhí)行矩陣乘法。每個感受野(發(fā)生卷積的區(qū)域)的結果都寫在特征圖中。
我們繼續(xù)滑動濾波器,直到特征圖完成。
填充(Padding )和步幅(Striding )
在我們進一步討論之前,討論填充和步幅也很有用。這些技術通常用于 CNN:
-
填充:填充通過將假像素添加到矩陣的邊框來擴展輸入矩陣。這樣做是因為卷積減小了矩陣的大小。例如,當篩選器經(jīng)過 5x5 矩陣時,它會變成 3x3 矩陣。
-
步幅:經(jīng)常發(fā)生的情況是,在使用卷積層時,您需要獲得小于輸入的輸出。實現(xiàn)此目的的一種方法是使用池化層。實現(xiàn)此目的的另一種方法是使用步幅。Striding 背后的想法是在內(nèi)核滑過時跳過某些區(qū)域:例如,每 2 或 3 個像素跳過一次。它降低了空間分辨率,使網(wǎng)絡的計算效率更高。
填充和步幅可以幫助更準確地處理圖像。
對于現(xiàn)實生活中的任務,卷積通常在 3D 中執(zhí)行。大多數(shù)圖像具有 3 個維度:高度、寬度和深度,其中深度對應于顏色通道 (RGB)。因此,卷積濾波器也需要是三維的。以下是相同操作在 3D 中的外觀。
卷積層中有多個濾波器,每個濾波器都會生成一個濾波器映射。因此,圖層的輸出將是一組相互堆疊的濾波器映射。
例如,填充 30x30x3 矩陣并通過 10 個過濾器將生成一組 10 個 30x30x1 矩陣。 將這些貼圖堆疊在一起后,我們將得到一個 30x30x10 的矩陣。
這是我們卷積層的輸出。
這一過程可以重復:CNN 通常具有多個卷積層。
3 層 CNN
CNN 的目標是減少圖像,以便更容易處理,而不會丟失對準確預測有價值的特征。
卷積層、池化層和全連接層有三種層。
-
卷積層負責識別像素中的特征。
-
池化層負責使這些功能更加抽象。
-
全連接層負責使用獲取的特征進行預測。
卷積層
我們已經(jīng)在上面描述了卷積層的工作原理。它們位于 CNN 的中心,使它們能夠自主識別圖像中的特征。
但是通過卷積過程會產(chǎn)生大量數(shù)據(jù),這使得訓練神經(jīng)網(wǎng)絡變得困難。要壓縮數(shù)據(jù),我們需要進行池化。
池化層
池化層從卷積層接收結果并將其壓縮。池化層的濾波器始終小于特征映射。通常,它采用 2x2 正方形(圖像塊)并將其壓縮為一個值。
2x2 濾波器會將每個特征圖中的像素數(shù)減少到大小的四分之一。如果特征映射的大小為 10×10,則輸出映射將為 5×5。
可以使用多個不同的函數(shù)進行池化。這些是最常見的:
-
最大池化。它計算特征圖的每個圖像塊的最大值。
-
平均池化。它計算特征圖上每個圖像塊的平均值。
使用池化層后,您將獲得池化特征圖,它們是輸入中檢測到的特征的匯總版本。 池化層提高了 CNN 的穩(wěn)定性:如果之前像素的最輕微波動都會導致模型錯誤分類,那么現(xiàn)在卷積層檢測到的輸入中特征位置的微小變化將導致特征在同一位置的池化特征圖。
現(xiàn)在我們需要將輸入展平(將其轉換為列向量)并將其傳遞給常規(guī)神經(jīng)網(wǎng)絡進行分類。
全連接層
平坦化的輸出被饋送到前饋神經(jīng)網(wǎng)絡,并且在訓練的每次迭代中應用反向傳播。 該層為模型提供了最終理解圖像的能力:每個輸入像素和每個輸出類之間存在信息流。
卷積神經(jīng)網(wǎng)絡的優(yōu)點
卷積神經(jīng)網(wǎng)絡有幾個優(yōu)點,使其可用于許多不同的應用。
特征學習
CNN 不需要手動特征工程:它們可以在訓練過程中掌握相關特征。 即使您正在處理全新的任務,您也可以使用預先訓練的 CNN,并通過向其提供數(shù)據(jù)來調(diào)整權重。 CNN 將根據(jù)新任務進行調(diào)整。
計算效率
由于卷積過程,CNN 的計算效率比常規(guī)神經(jīng)網(wǎng)絡高得多。 CNN 使用參數(shù)共享和降維,使得模型的部署變得簡單快捷。 它們可以經(jīng)過優(yōu)化以在任何設備上運行,甚至在智能手機上。
高精度
目前最先進的圖像分類神經(jīng)網(wǎng)絡不是卷積網(wǎng)絡。 然而,在圖像和視頻識別以及類似任務的大多數(shù)情況和任務中,CNN 已經(jīng)統(tǒng)治了很長一段時間。 它們通常比非卷積神經(jīng)網(wǎng)絡表現(xiàn)出更高的準確性,特別是當涉及大量數(shù)據(jù)時。
卷積神經(jīng)網(wǎng)絡的缺點
然而,CNN 并不完美。即使它看起來是一個非常聰明的工具,它仍然容易受到對抗性攻擊。
對抗性攻擊
對抗性攻擊是向網(wǎng)絡提供 “壞” 示例(即以特定方式略微修改圖像)以導致錯誤分類的情況。即使是像素的輕微變化也會讓 CNN 發(fā)瘋。例如,犯罪分子可以欺騙基于 CNN 的人臉識別系統(tǒng),并在鏡頭前通過而不被識別。
數(shù)據(jù)密集型訓練
為了讓 CNN 展示他們的神奇力量,他們需要大量的訓練數(shù)據(jù)。這些數(shù)據(jù)不容易收集和預處理,這可能會成為更廣泛采用該技術的障礙。這就是為什么即使在今天也只有少數(shù)好的預訓練模型,如 GoogleNet,VGG,Inception,AlexNet。大多數(shù)由全球公司擁有。
卷積神經(jīng)網(wǎng)絡的用途是什么?
卷積神經(jīng)網(wǎng)絡用于許多行業(yè)。以下是它們在實際應用中使用的一些常見示例。
圖像分類(Image classification)
卷積神經(jīng)網(wǎng)絡通常用于圖像分類。通過識別有價值的特征,CNN 可以識別圖像上的不同物體。這種能力使它們在醫(yī)學上很有用,例如,用于 MRI 診斷。CNN 也可用于農(nóng)業(yè)。這些網(wǎng)絡從 LSAT 等衛(wèi)星接收圖像,并可以使用這些信息根據(jù)耕種水平對土地進行分類。因此,這些數(shù)據(jù)可用于預測場地的肥力水平或制定最佳利用農(nóng)田的策略。手寫數(shù)字識別也是 CNN 最早用于計算機視覺的應用之一。
物體檢測(Object detection)
自動駕駛汽車、人工智能監(jiān)控系統(tǒng)和智能家居經(jīng)常使用 CNN 來識別和標記物體。 CNN 可以識別照片上的物體,并實時對其進行分類和標記。 這就是自動駕駛汽車如何繞過其他汽車和行人,以及智能家居如何識別戶主的臉部。
視聽匹配(Audio visual matching)
YouTube,Netflix 和其他視頻流服務使用視聽匹配來改進其平臺。有時用戶的請求可能非常具體,例如,“關于太空僵尸的電影”,但搜索引擎應該滿足這種奇特的請求。
對象重建(Object reconstruction)
您可以使用 CNN 對數(shù)字空間中的真實對象進行 3D 建模。目前,有 CNN 模型僅基于一個圖像創(chuàng)建 3D 面部模型。類似的技術可用于創(chuàng)建數(shù)字孿生,這在建筑、生物技術和制造業(yè)中很有用。
語音識別(Speech recognition)和自然語言處理(Natural Language Processing)等
盡管 CNN 經(jīng)常用于處理圖像,但它并不是它們唯一可能的用途。CNN 也可以幫助語音識別和自然語言處理。例如,F(xiàn)acebook 的語音識別技術基于卷積神經(jīng)網(wǎng)絡。
總結
總而言之,卷積神經(jīng)網(wǎng)絡是計算機視覺和類似領域的一個很棒的工具,因為它們能夠識別原始數(shù)據(jù)中的特征。
他們可以識別訓練數(shù)據(jù)中不同像素之間的聯(lián)系,并使用這些信息自行設計特征,從低級(邊緣、圓圈)到高級(面部、手部、汽車)構建。
問題是這些特征對人類來說可能變得相當難以理解。此外,圖像中的野生像素有時會導致新的令人驚訝的結果。文章來源:http://www.zghlxwxcb.cn/news/detail-505469.html
希望本篇博客對你學習卷積神經(jīng)網(wǎng)絡有所幫助!如果覺得文章不錯或能幫助到你學習,可以點贊??收藏??評論??+關注哦??????!后續(xù)會持續(xù)更新機器學習相關內(nèi)容。文章來源地址http://www.zghlxwxcb.cn/news/detail-505469.html
到了這里,關于面向初學者的卷積神經(jīng)網(wǎng)絡的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!