一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入卷積神經(jīng)網(wǎng)絡(luò)背后的數(shù)學(xué)原理

8g3K_AI_Thinker ? 來源:YXQ ? 2019-04-25 14:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在計算機神經(jīng)視覺技術(shù)的發(fā)展過程中,卷積神經(jīng)網(wǎng)絡(luò)成為了其中的重要組成部分,本文對卷積神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)原理進行了介紹。

文章包括四個主要內(nèi)容:卷積、卷積層、池化層以及卷積神經(jīng)網(wǎng)絡(luò)中的反向傳播原理。在卷積部分的介紹中,作者介紹了卷積的定義、有效卷積和相同卷積、跨步卷積、3D卷積。

在卷積層部分,作者闡述了連接切割和參數(shù)共享對降低網(wǎng)絡(luò)參數(shù)學(xué)習(xí)量的作用。在池化層部分,作者介紹了池化的含義以及掩膜的使用。

自動駕駛智能醫(yī)療、智能零售,這些曾被認為不可能實現(xiàn)的事情,在計算機視覺技術(shù)的幫助下,終于在最近成為了現(xiàn)實。今天,自動駕駛和自動雜貨店的夢想不再像以前那樣遙不可及。

事實上,每天我們都在使用計算機視覺技術(shù)幫助我們用人臉解鎖手機,或者對即將發(fā)布到社交媒體上的照片進行自動修飾。

在計算機視覺技術(shù)應(yīng)用這一巨大成功的背后,卷積神經(jīng)網(wǎng)絡(luò)(CNN)可能是其中最重要的組成部分。

在本文中,我們將逐步理解,神經(jīng)網(wǎng)絡(luò)是如何與 CNN 特有的思想?yún)f(xié)作的。本文章包含了相當復(fù)雜的數(shù)學(xué)方程式,但如果您對線性代數(shù)和微積分不熟悉,請不要氣餒。

我的目標不是讓您記住那些公式,而是讓您從直覺上去理解這些公式背后隱藏的意義。

01

前言

在之前的系列中,我們學(xué)習(xí)了密集連接的神經(jīng)網(wǎng)絡(luò)(densely connected neural networks)。

這些網(wǎng)絡(luò)的神經(jīng)元被分成組,形成連續(xù)的層,相鄰的兩個層之間的神經(jīng)元相互連接。下圖展示了一個密集連接的神經(jīng)網(wǎng)絡(luò)的示例。

Figure 1.Densely connected neural network architecture

當我們解決分類問題時,如果我們的特征是一組有限的并有明確定義的特征,這種方法是很有效的——例如,根據(jù)足球運動員在比賽期間所記錄的統(tǒng)計數(shù)據(jù),預(yù)測該運動員的位置。

但是,當使用照片來進行預(yù)測時,情況會變得更加復(fù)雜。我們當然可以將每個像素的亮度視為一個單獨的特征,并將其作為輸入傳遞給我們的密集網(wǎng)絡(luò)(dense network)。

不幸的是,為了使神經(jīng)網(wǎng)絡(luò)能夠處理典型的智能手機照片,該網(wǎng)絡(luò)必須包含數(shù)千萬甚至數(shù)億個神經(jīng)元。

我們也可以通過縮小照片的尺寸來進行處理手機照片,但是這樣做會使我們丟失很多有價值的信息。

可以發(fā)現(xiàn),這種傳統(tǒng)策略的性能很差,因此我們需要一種新的、更加聰明的方法來盡可能多地使用數(shù)據(jù),并同時減少必要的計算和參數(shù)的數(shù)量。CNN 閃亮登場的時候到了。

02

數(shù)字圖像的數(shù)據(jù)結(jié)構(gòu)

首先花一點時間來解釋一下數(shù)字圖像的存儲方式。數(shù)字圖像實際上是巨大的數(shù)字矩陣。矩陣中的每個數(shù)字對應(yīng)于其像素的亮度。

在 RGB 模型中,彩色圖像由三個矩陣組成,分別對應(yīng)三個顏色通道——紅,綠,藍。而在黑白圖像中,我們只需要一個矩陣。

矩陣中的每個數(shù)字的取值區(qū)間都是 0 到 255。該范圍是存儲圖像信息的效率(256個值剛好適合1個字節(jié))與人眼的靈敏度(我們區(qū)分同種顏色的灰度級別的數(shù)量極限)之間的折衷。

Figure 2.Data structure behind digitalimages

03

卷積

核卷積(kernel convolution)不僅僅用于 CNN,它還是許多其他計算機視覺算法的關(guān)鍵要素。

核卷積就是將一個小數(shù)字矩陣(濾波器,也稱作 kernel 或 filter)在圖像上進行滑動,并根據(jù) kernel 的值,對圖像矩陣的值進行轉(zhuǎn)換的過程。對圖像經(jīng)過卷積操作后得到的輸出稱為特征映射(feature map)。

特征映射的值的計算公式如下,其中 f 代表輸入圖像,h 代表濾波器 。結(jié)果矩陣的行數(shù)和列數(shù)分別用 m 和 n 表示。

Figure 3.Kernel convolution example

將 kernel 放在選定的像素上后,我們從 kernel 中依次取出每個值,并將它們成對地與圖像中的相應(yīng)值相乘。

最后,我們將每個核運算后的結(jié)果元素相加,并將求和結(jié)果放在輸出特征圖中的正確位置上。

上圖從微觀角度詳細地展示了這一運算的過程,但在完整圖像上實施該運算的結(jié)果可能更加有趣。圖4展示了使用幾個不同 kernel 的卷積結(jié)果。

Figure 4.Finding edges with kernel convolution

04

有效卷積&相同卷積(Valid and Same Convolution)

正如我們在圖3中看到的,當我們使用 3x3 的 kernel 對 6x6 圖像執(zhí)行卷積時,我們得到 4x4 的特征映射。

這是因為在這個圖像中,只有16個位置可以將 kerenl 完整地放在這張圖像中。由于每次執(zhí)行卷積時我們的圖像都會縮小,因此在我們的圖像完全消失之前,我們只能進行有限次數(shù)的卷積。

另外,如果對 kernel 在圖像中移動的過程進行觀察,我們就會發(fā)現(xiàn)圖像外圍像素的影響遠小于圖像中心像素的影響。

這樣會導(dǎo)致我們失去圖像中包含的一些信息。下圖展示了像素位置的改變對特征圖的影響。

Figure 5.Impact of pixelposition

為了解決這兩個問題,我們可以使用額外的邊框來填充圖像(padding)。例如,如果使用 1像素進行填充,我們將圖像的大小增加到 8x8,因此使用 3x3 的 kernel 的卷積,其輸出尺寸將為 6x6 。

在實踐中,我們通常用零值來填充額外的邊界。根據(jù)是否使用填充,我們將處理兩種類型的卷積—— Valid 和 Same。

Valid —— 使用原始圖像,Same —— 使用原始圖像并使用它周圍的邊框,以便使輸入和輸出的圖像大小相同。

在第二種情況下,填充寬度應(yīng)滿足以下等式,其中 p 是填充尺寸,f 是 kernel 尺寸(通常是奇數(shù))。

05

跨步卷積(Strided Convolution)

Figure 6.Example of strided convolution

在前面的例子中,我們總是每次將 kernel 移動一個像素,即步長為1。步長也可以視為卷積層的超參數(shù)之一。

圖 6 展示了使用更大步長時的卷積運算。在設(shè)計 CNN 架構(gòu)時,如果希望感知域重疊較少,或者希望讓特征圖的空間維度更小,我們可以增加步長。

輸出矩陣的尺寸(考慮填充和步長時)可以使用以下公式計算。

06

過渡到第三個維度

體積卷積(Convolution over volume)是一個非常重要的概念,這不僅使我們能夠處理彩色圖像,而且更為重要的是,我們能夠在單層網(wǎng)絡(luò)中使用多個 kernel 。

第一個規(guī)則是 kernel 和圖像必須具有相同數(shù)量的通道。一般而言,圖像的處理過程和圖3的示例非常相似,但是這次我們是將三維空間中的值對相乘。

如果想在同一個圖像上使用多個 kernel,首先我們要分別對每個 kernel 執(zhí)行卷積,然后將結(jié)果從頂層向下進行疊加,最后將它們組合成一個整體。

輸出張量的尺寸(可以稱為3D矩陣)滿足以下等式,其中:n?- 圖像大小,f ?- 濾波器大小,nc ?- 圖像中的通道數(shù),p - 填充大小,s - ?步幅大小,nf? - kernel 的數(shù)量。

Figure 7.Convolution overvolume

07

卷積層

接下來我們將用前面學(xué)到的知識來構(gòu)建 CNN 的一個層。我們將要用到的方法幾乎與構(gòu)建密集神經(jīng)網(wǎng)絡(luò)時用到的相同,唯一有區(qū)別的地方是,我們不再使用簡單的矩陣乘法,而是使用卷積。

前向傳播包括兩個步驟。第一步是計算中間值 Z:首先將前一層的輸入數(shù)據(jù)與張量 W(包含濾波器)進行卷積,然后將運算后的結(jié)果加上偏差 b 。

第二步是將中間值 Z 輸入到非線性激活函數(shù)中(使用 g 表示該激活函數(shù))。下面展示了矩陣形式的數(shù)學(xué)公式。

如果您對公式中的任何部分不太清楚,我強烈推薦您去閱讀一下我之前的文章,文中詳細討論了密集連接的神經(jīng)網(wǎng)絡(luò)的具體內(nèi)容。

下文的插圖很好地展示了公式中各張量的維數(shù),以助于理解。

Figure 8.Tensors dimensions

連接切割和參數(shù)共享(Connections Cutting and Parameters Sharing)

在本文的開頭曾提到,由于需要學(xué)習(xí)大量的參數(shù),密集連接的神經(jīng)網(wǎng)絡(luò)在處理圖像方面的能力很差,而卷積卻為該問題提供了一種解決方案,下面我們一起來看看卷積是如何優(yōu)化圖像處理的計算的。

在下圖中,我們用一種略微不同的方式對 2D 卷積進行了可視化——用數(shù)字 1-9 標記的神經(jīng)元構(gòu)成輸入層,用于接收輸入圖像的像素亮度,單元 A-D 表示經(jīng)過卷積計算后得到的特征映射。

最后,I-IV 表示來自 kernel 的后續(xù)值,這些值是需要網(wǎng)絡(luò)進行學(xué)習(xí)的。

Figure 9.Connections cutting and parameters sharing

現(xiàn)在,讓我們關(guān)注卷積層的兩個非常重要的屬性。第一,從圖中可以看到,并非兩個相鄰層中的所有神經(jīng)元都相互連接。

例如,神經(jīng)元 1 僅影響 A 的值。第二,我們可以發(fā)現(xiàn)一些神經(jīng)元使用了相同的權(quán)重。這兩個屬性意味著在 CNN 中我們需要學(xué)習(xí)的參數(shù)要少得多。

值得一提的是,kernel 中的任一單值都會影響輸出特征映射的每一個元素——這在反向傳播的過程中是至關(guān)重要的。

08

卷積層的反向傳播(Convolutional Layer Backpropagation)

任何曾經(jīng)試圖從頭開始編寫神經(jīng)網(wǎng)絡(luò)的人都知道,前向傳播還不到最終成功的一半。當你開始向回推算時,真正的樂趣才剛剛開始。

如今,我們不需要為反向傳播而煩惱——因為深度學(xué)習(xí)框架已經(jīng)為我們做好了,但是我覺得有必要弄明白它背后發(fā)生的事情。

就像在密集連接的神經(jīng)網(wǎng)絡(luò)中一樣,我們的目標是計算導(dǎo)數(shù),然后在梯度下降的過程中,用這些導(dǎo)數(shù)去更新我們的參數(shù)值。

在下面的計算中,我們將用到鏈式法則 —— 這在我之前的文章中提到過。我們想要評估參數(shù)的變化對結(jié)果特征映射的影響,以及隨之對最終結(jié)果的影響。

在開始詳細討論之前,我們需要將數(shù)學(xué)符號統(tǒng)一 —— 為了表示方便,我不會使用偏導(dǎo)數(shù)的完整符號,而是用下面提到的縮符號。

但是請記住,當我使用這種表示法時,這將始終代表著成本函數(shù)的偏導(dǎo)。

Figure 10.Input and output data for a single convolution layer in forward and backward propagation

我們的任務(wù)是計算 dW [1] 和 db [l] (它們是與當前層參數(shù)相關(guān)的導(dǎo)數(shù)),以及 dA[l-1](它將被傳遞給前一層)。

如圖10所示,dA[l] 作為輸入,張量 dW 和 W,db 和 b 以及 dA 和 A 的維度分別相同。第一步是求激活函數(shù)關(guān)于輸入張量的導(dǎo)數(shù),將其結(jié)果記為 dZ [1] 。根據(jù)鏈式法則,該運算的結(jié)果將在后面用到。

現(xiàn)在,我們需要處理卷積自身的反向傳播。為了實現(xiàn)這個目標,我們將利用一個稱為全卷積的矩陣運算,該運算的可視化解釋如下圖所示。

請注意,在此過程中我們要使用 kernel,而我們之前用到的 kernel 是該 kernel 旋轉(zhuǎn)了180度所得到的。

該操作可以用以下公式表示,其中 kernel 由 W 表示,dZ[m,n] 是一個標量,該標量屬于從前一層所獲得的偏導(dǎo)數(shù)。

Figure 11.Full convolution

09

池化層(Pooling Layers)

除了卷積層之外,CNN 經(jīng)常使用一個稱為池化層的網(wǎng)絡(luò)層,它們主要用于減小張量的大小并加快計算速度。

這個層的結(jié)構(gòu)很簡單,我們只需要將圖像劃分成不同的區(qū)域,然后對每個部分執(zhí)行一些操作即可。

例如,對于最大池化層(Max Pool Layer),我們從每個區(qū)域中選擇一個最大值,并將其放在輸出中的相應(yīng)位置即可。

與卷積層的情況一樣,我們有兩個超參數(shù)——kernel 的尺寸和步長。

最后值得一提是,如果要為多通道圖像執(zhí)行池化操作,則每個通道都應(yīng)該分別執(zhí)行池化操作。

Figure 12.Max poolingexample

10

池化層的反向傳播(Pooling Layers Backpropagation)

在本文中,我們僅討論最大池化的反向傳播(max pooling backpropagation),但是通過將該方法稍作調(diào)整,便可運用到其他所有類型的池化層。

由于在池化層這種類型的層中,我們不用更新任何參數(shù),我們的任務(wù)只是適度地分配梯度值。

前文講到,在最大池化的前向傳播中,我們從每個區(qū)域中選擇最大值并將它們傳輸?shù)较乱粚印?/p>

因此很明顯,在反向傳播期間,梯度不會影響未在前向傳播中使用的矩陣元素。

在實際操作中,該過程是通過創(chuàng)建一個掩膜(mask)來實現(xiàn)的,該掩膜會記住在前向傳播中所使用的元素的位置,隨后我們就可以用該掩膜來傳遞梯度。

Figure 13.Max pooling backwardpass

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標題:深入卷積神經(jīng)網(wǎng)絡(luò)背后的數(shù)學(xué)原理

文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    卷積神經(jīng)網(wǎng)絡(luò)如何監(jiān)測皮帶堵料情況 #人工智能

    卷積神經(jīng)網(wǎng)絡(luò)
    jf_60804796
    發(fā)布于 :2025年07月01日 17:08:42

    無刷電機小波神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)子位置檢測方法的研究

    摘要:論文通過對無刷電機數(shù)學(xué)模型的推導(dǎo),得出轉(zhuǎn)角:與三相相電壓之間存在映射關(guān)系,因此構(gòu)建了一個以三相相電壓為輸人,轉(zhuǎn)角為輸出的小波神經(jīng)網(wǎng)絡(luò)來實現(xiàn)轉(zhuǎn)角預(yù)測,并采用改進遺傳算法來訓(xùn)練網(wǎng)絡(luò)結(jié)構(gòu)與參數(shù),借助
    發(fā)表于 06-25 13:06

    BP神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)的比較

    BP神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)在多個方面存在顯著差異,以下是對兩者的比較: 一、結(jié)構(gòu)特點 BP神經(jīng)網(wǎng)絡(luò) : BP神經(jīng)網(wǎng)絡(luò)是一種多層的前饋
    的頭像 發(fā)表于 02-12 15:53 ?670次閱讀

    人工神經(jīng)網(wǎng)絡(luò)的原理和多種神經(jīng)網(wǎng)絡(luò)架構(gòu)方法

    所擬合的數(shù)學(xué)模型的形式受到大腦中神經(jīng)元的連接和行為的啟發(fā),最初是為了研究大腦功能而設(shè)計的。然而,數(shù)據(jù)科學(xué)中常用的神經(jīng)網(wǎng)絡(luò)作為大腦模型已經(jīng)過時,現(xiàn)在它們只是能夠在某些應(yīng)用中提供最先進性能的機器學(xué)習(xí)模型。近年來,由于
    的頭像 發(fā)表于 01-09 10:24 ?1196次閱讀
    人工<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的原理和多種<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>架構(gòu)方法

    卷積神經(jīng)網(wǎng)絡(luò)的實現(xiàn)工具與框架

    卷積神經(jīng)網(wǎng)絡(luò)因其在圖像和視頻處理任務(wù)中的卓越性能而廣受歡迎。隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,多種實現(xiàn)工具和框架應(yīng)運而生,為研究人員和開發(fā)者提供了強大的支持。 TensorFlow 概述
    的頭像 發(fā)表于 11-15 15:20 ?671次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的參數(shù)調(diào)整方法

    卷積神經(jīng)網(wǎng)絡(luò)因其在處理具有空間層次結(jié)構(gòu)的數(shù)據(jù)時的卓越性能而受到青睞。然而,CNN的成功很大程度上依賴于其參數(shù)的合理設(shè)置。參數(shù)調(diào)整是一個復(fù)雜的過程,涉及到多個超參數(shù)的選擇和優(yōu)化。 網(wǎng)絡(luò)架構(gòu)參數(shù)
    的頭像 發(fā)表于 11-15 15:10 ?1209次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)在自然語言處理中的應(yīng)用

    自然語言處理是人工智能領(lǐng)域的一個重要分支,它致力于使計算機能夠理解、解釋和生成人類語言。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(CNNs)作為一種強大的模型,在圖像識別和語音處理等領(lǐng)域取得了顯著成果
    的頭像 發(fā)表于 11-15 14:58 ?807次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的比較

    在深度學(xué)習(xí)領(lǐng)域,神經(jīng)網(wǎng)絡(luò)模型被廣泛應(yīng)用于各種任務(wù),如圖像識別、自然語言處理和游戲智能等。其中,卷積神經(jīng)網(wǎng)絡(luò)(CNNs)和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)是兩種常見的模型。 1. 結(jié)構(gòu)差異 1.1 傳統(tǒng)
    的頭像 發(fā)表于 11-15 14:53 ?1878次閱讀

    深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)模型

    深度學(xué)習(xí)近年來在多個領(lǐng)域取得了顯著的進展,尤其是在圖像識別、語音識別和自然語言處理等方面。卷積神經(jīng)網(wǎng)絡(luò)作為深度學(xué)習(xí)的一個分支,因其在圖像處理任務(wù)中的卓越性能而受到廣泛關(guān)注。 卷積神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 11-15 14:52 ?846次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的基本原理與算法

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)是一類包含卷積計算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Networks
    的頭像 發(fā)表于 11-15 14:47 ?1784次閱讀

    RNN模型與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的區(qū)別

    神經(jīng)網(wǎng)絡(luò)是機器學(xué)習(xí)領(lǐng)域中的一種強大工具,它們能夠模擬人腦處理信息的方式。隨著技術(shù)的發(fā)展,神經(jīng)網(wǎng)絡(luò)的類型也在不斷增加,其中循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)(如前饋
    的頭像 發(fā)表于 11-15 09:42 ?1129次閱讀

    傅里葉變換的數(shù)學(xué)原理

    傅里葉變換的數(shù)學(xué)原理主要基于一種將函數(shù)分解為正弦和余弦函數(shù)(或復(fù)指數(shù)函數(shù))的線性組合的思想。以下是對傅里葉變換數(shù)學(xué)原理的介紹: 一、基本原理 傅里葉級數(shù) :對于周期性連續(xù)信號,可以將其表示為傅里葉
    的頭像 發(fā)表于 11-14 09:27 ?1753次閱讀

    關(guān)于卷積神經(jīng)網(wǎng)絡(luò),這些概念你厘清了么~

    神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中非常有效。卷積層使用一種被稱為卷積數(shù)學(xué)運算來識別像素值數(shù)組的模式。卷積發(fā)生在隱藏層中,如圖3所示。
    發(fā)表于 10-24 13:56

    matlab 神經(jīng)網(wǎng)絡(luò) 數(shù)學(xué)建模數(shù)值分析

    matlab神經(jīng)網(wǎng)絡(luò) 數(shù)學(xué)建模數(shù)值分析 精通的可以討論下
    發(fā)表于 09-18 15:14

    如何構(gòu)建多層神經(jīng)網(wǎng)絡(luò)

    構(gòu)建多層神經(jīng)網(wǎng)絡(luò)(MLP, Multi-Layer Perceptron)模型是一個在機器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域廣泛使用的技術(shù),尤其在處理分類和回歸問題時。在本文中,我們將深入探討如何從頭開始構(gòu)建一個多層神經(jīng)網(wǎng)絡(luò)模型,包括模型設(shè)計、
    的頭像 發(fā)表于 07-19 17:19 ?1569次閱讀