人工智能技術(shù)及應(yīng)用 課件 ch2-神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第1頁(yè)
人工智能技術(shù)及應(yīng)用 課件 ch2-神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第2頁(yè)
人工智能技術(shù)及應(yīng)用 課件 ch2-神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第3頁(yè)
人工智能技術(shù)及應(yīng)用 課件 ch2-神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第4頁(yè)
人工智能技術(shù)及應(yīng)用 課件 ch2-神經(jīng)網(wǎng)絡(luò)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

2神經(jīng)網(wǎng)絡(luò)基礎(chǔ)NEURALNETWORKFUNDAMENTALSChapter02本章目錄生物神經(jīng)網(wǎng)絡(luò)和神經(jīng)元模型01人工神經(jīng)網(wǎng)絡(luò)02卷積神經(jīng)網(wǎng)絡(luò)032.1生物神經(jīng)網(wǎng)絡(luò)和神經(jīng)元模型人工神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的重要基礎(chǔ),人工神經(jīng)網(wǎng)絡(luò)是以人腦神經(jīng)網(wǎng)絡(luò)為原型設(shè)計(jì)出來(lái)的。人類的大腦皮層包含大約1011個(gè)神經(jīng)元。每個(gè)神經(jīng)元通過(guò)突觸與大約103個(gè)其他神經(jīng)元連接,如圖所示,形成一個(gè)高度復(fù)雜和靈活的動(dòng)態(tài)網(wǎng)絡(luò)。基于這種想法,1943年,神經(jīng)生理學(xué)和控制論科學(xué)家McCulloch和計(jì)算神經(jīng)學(xué)科學(xué)家Pitts參考了人類神經(jīng)元的結(jié)構(gòu),發(fā)表了抽象的神經(jīng)元模型——MP模型(McCulloch-Pittsmodel)。大腦神經(jīng)突觸2.1生物神經(jīng)網(wǎng)絡(luò)和神經(jīng)元模型神經(jīng)元模型是一個(gè)包含輸入,輸出與計(jì)算功能的模型。輸入可以類比為神經(jīng)元的樹(shù)突,而輸出可以類比為神經(jīng)元的軸突,計(jì)算則可以類比為細(xì)胞核。下圖是一個(gè)典型的神經(jīng)元模型:包含有3個(gè)輸入,1個(gè)輸出,以及2個(gè)計(jì)算功能。*代表進(jìn)行乘法運(yùn)算,+代表進(jìn)行加法運(yùn)算。無(wú)符號(hào)的則代表進(jìn)行普通連接,即值傳遞。用a來(lái)表示輸入,用w來(lái)表示權(quán)值。前半部分的有向箭頭可以這樣理解:在初端,傳遞的信號(hào)大小仍然是a,端中間有權(quán)重參數(shù)w,經(jīng)過(guò)這個(gè)權(quán)重參數(shù)后的信號(hào)會(huì)變成a*w,因此在連接的末端,信號(hào)的大小就變成了a*w。神經(jīng)元模型計(jì)算公式為:

2.1生物神經(jīng)網(wǎng)絡(luò)和神經(jīng)元模型對(duì)神經(jīng)元模型進(jìn)行一些擴(kuò)展,如右圖所示。首先將sum函數(shù)與sgn函數(shù)合并到一個(gè)計(jì)算模塊內(nèi),代表神經(jīng)元的內(nèi)部計(jì)算。其次,輸出z變?yōu)槎鄠€(gè),以便作為下一層神經(jīng)元的輸入。最后說(shuō)明,一個(gè)神經(jīng)元可以引出多個(gè)代表輸出的有向箭頭,但值都是一樣的。神經(jīng)元可以看作一個(gè)計(jì)算與存儲(chǔ)單元。計(jì)算是神經(jīng)元對(duì)其的輸入進(jìn)行計(jì)算功能。存儲(chǔ)是神經(jīng)元會(huì)暫存計(jì)算結(jié)果,并傳遞到下一層。當(dāng)我們用“神經(jīng)元”組成網(wǎng)絡(luò)來(lái)描述網(wǎng)絡(luò)中的某個(gè)“神經(jīng)元”時(shí),我們更多地會(huì)用“單元”(unit)來(lái)指代。同時(shí)由于神經(jīng)網(wǎng)絡(luò)的表現(xiàn)形式是一個(gè)有向圖,有時(shí)也會(huì)用“節(jié)點(diǎn)”(node)來(lái)表達(dá)同樣的意思。神經(jīng)元簡(jiǎn)化2.2人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)是為模擬人腦神經(jīng)網(wǎng)絡(luò)而設(shè)計(jì)的一種計(jì)算模型,它從結(jié)構(gòu)、實(shí)現(xiàn)機(jī)理和功能上模擬人腦神經(jīng)網(wǎng)絡(luò)。人工神經(jīng)網(wǎng)絡(luò)與生物神經(jīng)元類似,由多個(gè)節(jié)點(diǎn)(人工神經(jīng)元)互相連接而成,可以用來(lái)對(duì)數(shù)據(jù)之間的復(fù)雜關(guān)系進(jìn)行建模,不同節(jié)點(diǎn)之間的連接被賦予了不同的權(quán)重,每個(gè)權(quán)重代表了一個(gè)節(jié)點(diǎn)對(duì)另一個(gè)節(jié)點(diǎn)的影響大小。每個(gè)節(jié)點(diǎn)代表一種特定函數(shù),來(lái)自其他節(jié)點(diǎn)的信息經(jīng)過(guò)其相應(yīng)的權(quán)重綜合計(jì)算,輸入到一個(gè)激活函數(shù)中并得到一個(gè)新的活性值(興奮或抑制)。從系統(tǒng)觀點(diǎn)看,人工神經(jīng)元網(wǎng)絡(luò)是由大量神經(jīng)元通過(guò)極其豐富和完善的連接而構(gòu)成的自適應(yīng)非線性動(dòng)態(tài)系統(tǒng)。早期的神經(jīng)網(wǎng)絡(luò)模型并不具備學(xué)習(xí)能力。首個(gè)可學(xué)習(xí)的人工神經(jīng)網(wǎng)絡(luò)是赫布網(wǎng)絡(luò),采用的是一種基于赫布規(guī)則的無(wú)監(jiān)督學(xué)習(xí)方法。感知器是最早的具有機(jī)器學(xué)習(xí)思想的神經(jīng)網(wǎng)絡(luò),但其學(xué)習(xí)方法無(wú)法擴(kuò)展到多層的神經(jīng)網(wǎng)絡(luò)上。直到1980年左右,反向傳播算法才有效地解決了多層神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)問(wèn)題,并成為最為流行的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法。20世紀(jì)80年代中期,DavidRunelhart、GeoffreyHinton和RonaldW-llians、DavidParker等人分別獨(dú)立發(fā)現(xiàn)了誤差反向傳播算法(ErrorBackPropagationTraining),簡(jiǎn)稱BP,系統(tǒng)解決了多層神經(jīng)網(wǎng)絡(luò)隱含層連接權(quán)的學(xué)習(xí)問(wèn)題,并在數(shù)學(xué)上給出了完整推導(dǎo)。人們把采用這種算法進(jìn)行誤差校正的多層前饋網(wǎng)絡(luò)稱為BP網(wǎng)。2.2人工神經(jīng)網(wǎng)絡(luò)

BP神經(jīng)網(wǎng)絡(luò)具有任意復(fù)雜的模式分類能力和優(yōu)良的多維函數(shù)映射能力,解決了簡(jiǎn)單感知器不能解決的異或(ExclusiveOR,XOR)和一些其他問(wèn)題。從結(jié)構(gòu)上講,BP網(wǎng)絡(luò)具有輸入層、隱藏層和輸出層;從本質(zhì)上講,BP算法就是以網(wǎng)絡(luò)誤差平方為目標(biāo)函數(shù),采用梯度下降法來(lái)計(jì)算目標(biāo)函數(shù)的最小值。人工神經(jīng)網(wǎng)絡(luò)誕生之初并不是用來(lái)解決機(jī)器學(xué)習(xí)問(wèn)題。由于人工神經(jīng)網(wǎng)絡(luò)可以用作一個(gè)通用的函數(shù)逼近器(一個(gè)兩層的神經(jīng)網(wǎng)絡(luò)可以逼近任意的函數(shù))。因此人工神經(jīng)網(wǎng)絡(luò)可以看作是一個(gè)可學(xué)習(xí)的函數(shù),并將其應(yīng)用到機(jī)器學(xué)習(xí)中。理論上,只要有足夠的訓(xùn)練數(shù)據(jù)和神經(jīng)元數(shù)量,人工神經(jīng)網(wǎng)絡(luò)就可以學(xué)到很多復(fù)雜的函數(shù)。我們可以把一個(gè)人工神經(jīng)網(wǎng)絡(luò)塑造復(fù)雜函數(shù)的能力稱為網(wǎng)絡(luò)容量(NetworkCapacity),這與可以被儲(chǔ)存在網(wǎng)絡(luò)中的信息的復(fù)雜度以及數(shù)量相關(guān)。人工神經(jīng)網(wǎng)絡(luò)的未來(lái)和發(fā)展(圖片來(lái)自于網(wǎng)絡(luò))2.2人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)具有如下四個(gè)基本特征:非線性:非線性關(guān)系是自然界的普遍特性。大腦的智慧就是一種非線性現(xiàn)象。人工神經(jīng)元處于激活或抑制二種不同的狀態(tài),這種行為在數(shù)學(xué)上表現(xiàn)為一種非線性關(guān)系。具有閾值的神經(jīng)元構(gòu)成的網(wǎng)絡(luò)具有更好的性能,可以提高容錯(cuò)性和存儲(chǔ)容量。非局限性:一個(gè)神經(jīng)網(wǎng)絡(luò)通常由多個(gè)神經(jīng)元廣泛連接而成。一個(gè)系統(tǒng)的整體行為不僅取決于單個(gè)神經(jīng)元的特征,而且可能主要由單元之間的相互作用、相互連接所決定。通過(guò)單元之間的大量連接模擬大腦的非局限性。聯(lián)想記憶是非局限性的典型例子。非常定性:人工神經(jīng)網(wǎng)絡(luò)具有自適應(yīng)、自組織、自學(xué)習(xí)能力。神經(jīng)網(wǎng)絡(luò)不但處理的信息可以有各種變化,而且在處理信息的同時(shí),非線性動(dòng)力系統(tǒng)本身也在不斷變化。經(jīng)常采用迭代過(guò)程描寫(xiě)動(dòng)力系統(tǒng)的演化過(guò)程。非凸性:一個(gè)系統(tǒng)的演化方向,在一定條件下將取決于某個(gè)特定的狀態(tài)函數(shù)。例如能量函數(shù),它的極值相應(yīng)于系統(tǒng)比較穩(wěn)定的狀態(tài)。非凸性是指這種函數(shù)有多個(gè)極值,故系統(tǒng)具有多個(gè)較穩(wěn)定的平衡態(tài),這將導(dǎo)致系統(tǒng)演化的多樣性。2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層卷積運(yùn)算的含義是卷積核(卷積窗口)在輸入圖像數(shù)據(jù)上滑動(dòng),在相應(yīng)位置上進(jìn)行先乘后加的運(yùn)算。以下圖為例,中間為卷積核,在輸入圖像上進(jìn)行滑動(dòng),當(dāng)滑動(dòng)到當(dāng)前位置時(shí),其卷積運(yùn)算操作是對(duì)卷積核所覆蓋像素進(jìn)行權(quán)值和對(duì)應(yīng)位置處像素的乘加:

神經(jīng)元簡(jiǎn)化2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層一般情況下,卷積核在幾個(gè)維度上滑動(dòng),就是幾維卷積,如下圖所示。準(zhǔn)確地說(shuō),是1個(gè)卷積核在1個(gè)圖像數(shù)據(jù)上進(jìn)行幾維滑動(dòng),就是幾維卷積。從左至右分別為一維卷積、二維卷積、三維卷積2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層以PyTorch為例#torch.nn.Conv2d()#功能:對(duì)多個(gè)二維信號(hào)進(jìn)行二維卷積torch.nn.Conv2d(in_channels,

out_channels,

kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True,

padding_mode='zeros')2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層以下面代碼為例#導(dǎo)入深度學(xué)習(xí)框架torch包importtorch#導(dǎo)入包含操作算子的nn包fromtorchimportnn#為了使每次生成的隨機(jī)矩陣input元素值均一樣,設(shè)定一個(gè)隨機(jī)種子7torch.manual_seed(7)#設(shè)定一個(gè)卷積操作,其卷積核為2*2的矩形區(qū)域,縱向移動(dòng)步長(zhǎng)為1,橫向移動(dòng)步長(zhǎng)為1,向下取整,外圍補(bǔ)1圈零,空洞卷積參數(shù)為2c=nn.Conv2d(1,2,(2,2),stride=1,padding=1,bias=False,dilation=2,padding_mode="zeros")#自定義卷積窗口中每個(gè)值均為0.3c.weight.data=torch.ones([2,1,2,2])*0.3#隨機(jī)生成一個(gè)張量,張量的形狀為1*1*3*3,每個(gè)元素取值范圍為[1,10)input=torch.randint(1,10,(1,1,3,3))#轉(zhuǎn)換為float類型input=input.float()#打印輸入print(input)#進(jìn)行卷積操作output=c(input)#打印輸出Print(output)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層填充padding:有、無(wú)填充padding對(duì)卷積運(yùn)算輸出特征圖的影響,填充大多數(shù)情況是為了保持輸入輸出圖像尺寸保持不變??斩淳矸edilation:卷積窗口(卷積核)內(nèi)的值代表權(quán)值,dilation不為1時(shí)權(quán)值之間需有間隔,權(quán)值間的“空洞”由“0”填補(bǔ)。這樣的卷積核常用于圖像分割任務(wù),主要目的在于提高感知野。通道數(shù)個(gè)數(shù)out_channel即為卷積核的個(gè)數(shù)。padding的作用空洞卷積的作用2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層如下圖所示,每個(gè)黑塊部分即為卷積核依次掃過(guò)的區(qū)域,以第一個(gè)區(qū)域?yàn)槔敵鲋?.7=0*0.3+0*0+0*0.3+0*0+5*0+9*0+0*0.3+2*0+9*0.3。stride=1,卷積核每次平移一格,依次類推,輸出最終結(jié)果。卷積操作得到新張量2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層需要說(shuō)明的是我們?cè)诖颂幋a中將bias設(shè)置為False,其目的是為了演示時(shí)更簡(jiǎn)單易懂。默認(rèn)情況該值為T(mén)rue,會(huì)造成外圍補(bǔ)零后值為非0的情況,因?yàn)榻Y(jié)果需要加上偏置,如右圖所示,我們看到的結(jié)果并非整數(shù),而是帶有小數(shù)。添加偏置后造成輸出帶有偏置項(xiàng)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.1卷積層分組卷積設(shè)置groups:常用于模型的輕量化。下圖是Alexnet模型結(jié)構(gòu),可以看出,第一次卷積,模型將輸入圖像數(shù)據(jù)分成了上下兩組,然后分別進(jìn)行后續(xù)的池化、卷積操作。在特征提取環(huán)節(jié),上下兩組信號(hào)是完全沒(méi)有任何聯(lián)系的。直到達(dá)到全連接層,才將上、下兩組融合起來(lái)。這里,第一次的卷積分組設(shè)置可通過(guò)groups達(dá)到。Alexnet模型結(jié)構(gòu)

2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層池化(Pooling)是在不同的通道上分開(kāi)執(zhí)行的,然后根據(jù)窗口大小進(jìn)行相應(yīng)的操作,即池化操作既不改變通道數(shù)也不需要參數(shù)控制。池化操作類型一般有最大池化、平均池化等。池化主要作用有以下幾個(gè):降維。壓縮特征,去除冗余信息,降低網(wǎng)絡(luò)復(fù)雜度,減小計(jì)算量、減少內(nèi)存消耗。實(shí)現(xiàn)了特征的非線性表達(dá)。擴(kuò)大感知野。實(shí)現(xiàn)了特征的平移不變性、旋轉(zhuǎn)不變性和尺度不變性等。2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層最大池化層:最大池化(MaxPooling)操作的含義是選取圖像指定區(qū)域中最大的值作為結(jié)果輸出,以PyTorch為例,調(diào)用模塊nn中的MaxPool2d()可以實(shí)現(xiàn)構(gòu)建最大池化層的操作。#torch.nn.MaxPool2d()#功能:?對(duì)由多個(gè)輸入平面組成的輸入信號(hào)應(yīng)用最大池化。?torch.nn.MaxPool2d(kernel_size,stride=None,padding=0,dilation=1,return_indices=False,ceil_mode=False)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層以下面代碼為例:#導(dǎo)入深度學(xué)習(xí)框架torch包importtorch#為了使每次生成的隨機(jī)矩陣input元素值均一樣,設(shè)定一個(gè)隨機(jī)種子7torch.manual_seed(7)#設(shè)定一個(gè)最大池化操作,該操作的池化窗口為3*2的矩形區(qū)域,縱向移動(dòng)步長(zhǎng)為2,橫向移動(dòng)步長(zhǎng)為1,向上取整,同時(shí)輸出一個(gè)對(duì)應(yīng)最大值序號(hào)的張量m=torch.nn.MaxPool2d((3,2),stride=(2,1),return_indices=True,ceil_mode=True)#生成一個(gè)隨機(jī)整數(shù)張量,張量的形狀(shape)為2*3*4*4,張量中每個(gè)值的大小范圍[1,10)。input=torch.randint(1,10,(2,3,4,4))#將張量中的值類型從int型轉(zhuǎn)換為float型input=input.float()#進(jìn)行池化,生成池化后的張量output=m(input)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層下圖顯示的是以其中一張圖的一個(gè)通道進(jìn)行最大池化操作的示意圖。黑色區(qū)域部分即為我們所說(shuō)的池化窗口,看子圖從①到⑥,可發(fā)現(xiàn)池化窗口按照先寬(橫向移動(dòng))后高(縱向移動(dòng))的方式尋取每個(gè)區(qū)域的最大值。橫向步長(zhǎng)為1,橫向每次移動(dòng)一格,即一個(gè)像素。縱向步長(zhǎng)為2,即移動(dòng)兩個(gè)像素位置。由于沒(méi)有給出padding的參數(shù),所以不補(bǔ)零。由于開(kāi)啟了向上取整,所以④到⑥的過(guò)程中池化區(qū)域雖然不滿6個(gè)元素,但依然采用剩下的4個(gè)元素為一組進(jìn)行最大池化操作。每個(gè)池化區(qū)域的最大值組成了一個(gè)新的張量。這便是第一個(gè)通道的輸出結(jié)果。最大池化層操作視圖2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層在代碼中我們選擇同時(shí)輸出所在區(qū)域最大值的序號(hào),如下圖所示,PyTorch張量中值的序號(hào)從0開(kāi)始,第一個(gè)池化窗口中最大值9在整個(gè)張量中的序號(hào)也為“9”,第二個(gè)池化窗口中最大值9在張量中的序號(hào)為“6”,第二個(gè)池化窗口有兩個(gè)“9”,由此可見(jiàn),PyTorch輸出的是區(qū)域中最大值出現(xiàn)時(shí)的第一個(gè)序號(hào)。輸出所在區(qū)域最大值的序號(hào)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層平均池化層:平均池化(AveragePooling)操作的含義是計(jì)算圖像區(qū)域的平均值作為該區(qū)域池化后的值。以PyTorch為例,調(diào)用模塊nn中的AvgPool2d()實(shí)現(xiàn)構(gòu)建平均池化層的操作。#torch.nn.AvgPool2d()#功能:對(duì)由多個(gè)輸入平面組成的輸入信號(hào)應(yīng)用平均池化。torch.nn.AvgPool2d(kernel_size,stride=None,padding=0,ceil_mode=False,count_include_pad=True,divisor_override=None)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層count_include_pad是指在計(jì)算平均值時(shí),是否把填充值考慮在內(nèi)。如下圖所示,對(duì)實(shí)線區(qū)域高、寬分別補(bǔ)一圈零后平均池化,在不開(kāi)啟count_include_pad時(shí),黑色塊區(qū)域的池化結(jié)果為1/1=1;在開(kāi)啟count_include_pad時(shí),黑色塊區(qū)域的池化結(jié)果為1/4=0.25。divisor_override是計(jì)算平均值作為分母的值,默認(rèn)不給出的情況下是除以區(qū)域像素的個(gè)數(shù),給出的情況下就是無(wú)視像素個(gè)數(shù)。如下圖所示,對(duì)實(shí)線區(qū)域進(jìn)行高、寬分別補(bǔ)一圈零后平均池化且count_include_pad=True,在不開(kāi)啟divisor_override時(shí),平均池化結(jié)果為1/4=0.25,開(kāi)啟時(shí),指定分母為3,平均池化結(jié)果為1/3=0.33。參數(shù)count_include_pad作用參數(shù)divisor_override作用2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層以下面代碼為例:importtorchtorch.manual_seed(7)#設(shè)定一個(gè)平均池化操作,該操作的池化窗口為2*2的矩形區(qū)域,縱向移動(dòng)步長(zhǎng)為2,橫向移動(dòng)步長(zhǎng)為2,向下取整,不采用除數(shù)因子m=torch.nn.AvgPool2d((2,2),stride=(2,2),padding=(1,1),divisor_override=None)#生成一個(gè)隨機(jī)整數(shù)張量,張量的形狀(shape)為1*1*3*3,張量中每個(gè)值的大小范圍[1,10)input=torch.randint(1,10,(1,1,3,3))#將張量中的值類型從int型轉(zhuǎn)換為float型input=input.float()#進(jìn)行平均池化output=m(input)#打印張量操作前后結(jié)果print(input,output)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.2池化層下圖顯示的是3*3張量高、寬補(bǔ)零為1后平均池化操作過(guò)程,黑色區(qū)域部分為平均池化窗口,池化窗口按照先寬(橫向移動(dòng))后高(縱向移動(dòng))的方式計(jì)算每個(gè)區(qū)域的平均值。由于采用默認(rèn)的池化窗口向下取整的方式,張量最下面的全零行就不再進(jìn)行平均池化計(jì)算。所以最終輸出的為2*2的張量。平均池化層操作視圖2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.3批量標(biāo)準(zhǔn)層批標(biāo)準(zhǔn)化層(BatchNormalization,BN)操作的含義是對(duì)數(shù)據(jù)進(jìn)行歸一化處理,該層計(jì)算了每個(gè)batch(批次)的均值和方差,并將其拉回到均值為0、方差為1的標(biāo)準(zhǔn)正態(tài)分布。計(jì)算公式如下:

上式中,x為需要?dú)w一化的輸入數(shù)據(jù),E[x]和Var[x]為輸入數(shù)據(jù)的均值和方差,ε為防止分母出現(xiàn)零所增加的變量,γ和β是對(duì)輸入值進(jìn)行仿射操作,即線性變換。γ和β的默認(rèn)值分別為1和0,仿射包含了不進(jìn)行仿射的結(jié)果,使得引入BN至少不降低模型擬合效果,γ和β可以作為模型的學(xué)習(xí)參數(shù)。2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.3批量標(biāo)準(zhǔn)層批標(biāo)準(zhǔn)化層的作用有以下幾個(gè):減輕了模型對(duì)參數(shù)初始化的依賴;加快了模型訓(xùn)練速度,并可以使用更大的學(xué)習(xí)率;一定程度上增加了模型的泛化能力。以PyTorch代碼為例#torch.nn.BatchNorm2d()#功能:將張量的輸出值拉回到均值為0,方差為1的標(biāo)準(zhǔn)正態(tài)分布torch.nn.BatchNorm2d(num_features,eps=1e-05,momentum=0.1,affine=True,track_running_stats=True,device=None,dtype=None)2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.3批量標(biāo)準(zhǔn)層以下面代碼為例importtorchfromtorchimportnntorch.manual_seed(7)bn=nn.BatchNorm2d(2,affine=False)input=torch.randint(1,10,(2,2,3,3))input=input.float()print(input)output=bn(input)print(output)第一個(gè)通道經(jīng)過(guò)BN層的操作2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.4激活層激活層是指激活函數(shù)層,其作用是對(duì)特征進(jìn)行非線性變換,賦予多層神經(jīng)網(wǎng)絡(luò)具有深度的意義。幾種常見(jiàn)的激活函數(shù):

sigmoid激活函數(shù)表達(dá)式圖

ReLU激活函數(shù)表達(dá)式圖2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.5全連接層全連接層又稱為線性層(Linear),其中每個(gè)神經(jīng)元與上一層所有神經(jīng)元相連,實(shí)現(xiàn)對(duì)前一層的線性組合或線性變換,如下圖所示。全連接層2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.5全連接層以PyTorch為例importtorchinputs=torch.tensor([[1.,2,3]])linear_layer=nn.Linear(3,4)linear_layer.weight.data=torch.tensor([[1.,1.,1.],[2.,2.,2.],[3.,3.,3.],[4.,4.,4.]])linear_layer.bias.data.fill_(0.5)output=linear_layer(inputs)print(inputs,inputs.shape)print(linear_layer.weight.data,linear_layer.weight.data.shape)print(output,output.shape)最終輸出結(jié)果為tensor([[1.,2.,3.]])torch.Size([1,3])tensor([[1.,1.,1.],[2.,2.,2.],[3.,3.,3.],[4.,4.,4.]])torch.Size([4,3])tensor([[6.5000,12.5000,18.5000,24.5000]],grad_fn=<AddmmBackward>)torch.Size([1,4])2.3卷積神經(jīng)網(wǎng)絡(luò)2.3.6訓(xùn)練與反饋若干個(gè)卷積層、池化層、激活層、全連接層等結(jié)構(gòu)組成了卷積神經(jīng)網(wǎng)絡(luò),組合卷積神經(jīng)網(wǎng)絡(luò)的第一個(gè)卷積層的卷積核用來(lái)檢測(cè)低階特征,比如邊、角、曲線等。隨著卷積層的增加,對(duì)應(yīng)卷積核檢測(cè)的特征就更加復(fù)雜(理性情況下,也是我們想要的情況)。比如第二個(gè)卷積層的輸入實(shí)際上是第一層的輸出(卷積核激活圖),這一層的卷積核便是用來(lái)檢測(cè)低價(jià)特征的組合等情況(半圓、四邊形等),如此累積,以檢測(cè)越來(lái)越復(fù)雜的特征。實(shí)際上,我們的人類大腦的視覺(jué)信息處理也遵循這樣的低階特征到高階特征的模式。最后一層的卷積核按照訓(xùn)練CNN目的的不同,可能是在檢測(cè)到人臉、手寫(xiě)字體等時(shí)候激活。所以,在相當(dāng)程度上,構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)的任務(wù)就在于構(gòu)建這些卷積核。也就是,將這些卷積核變成這樣改變卷積核矩陣的值,也就是權(quán)重能識(shí)別特定的特征。這個(gè)過(guò)程叫做訓(xùn)練。在訓(xùn)練開(kāi)始之時(shí),卷積層的卷積核是完全隨機(jī)的,它們不會(huì)對(duì)任何特征激活(不能檢測(cè)任何特征)。這就像剛出生的孩子,TA不知道什么是人臉、什么是狗、什么是上下左右。TA需要學(xué)習(xí)才知道這些概念,也就是通過(guò)接觸人臉、狗、上下左右,并被告知

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論