




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2神經網絡基礎NEURALNETWORKFUNDAMENTALSChapter02本章目錄生物神經網絡和神經元模型01人工神經網絡02卷積神經網絡032.1生物神經網絡和神經元模型人工神經網絡是深度學習的重要基礎,人工神經網絡是以人腦神經網絡為原型設計出來的。人類的大腦皮層包含大約1011個神經元。每個神經元通過突觸與大約103個其他神經元連接,如圖所示,形成一個高度復雜和靈活的動態(tài)網絡?;谶@種想法,1943年,神經生理學和控制論科學家McCulloch和計算神經學科學家Pitts參考了人類神經元的結構,發(fā)表了抽象的神經元模型——MP模型(McCulloch-Pittsmodel)。大腦神經突觸2.1生物神經網絡和神經元模型神經元模型是一個包含輸入,輸出與計算功能的模型。輸入可以類比為神經元的樹突,而輸出可以類比為神經元的軸突,計算則可以類比為細胞核。下圖是一個典型的神經元模型:包含有3個輸入,1個輸出,以及2個計算功能。*代表進行乘法運算,+代表進行加法運算。無符號的則代表進行普通連接,即值傳遞。用a來表示輸入,用w來表示權值。前半部分的有向箭頭可以這樣理解:在初端,傳遞的信號大小仍然是a,端中間有權重參數(shù)w,經過這個權重參數(shù)后的信號會變成a*w,因此在連接的末端,信號的大小就變成了a*w。神經元模型計算公式為:
2.1生物神經網絡和神經元模型對神經元模型進行一些擴展,如右圖所示。首先將sum函數(shù)與sgn函數(shù)合并到一個計算模塊內,代表神經元的內部計算。其次,輸出z變?yōu)槎鄠€,以便作為下一層神經元的輸入。最后說明,一個神經元可以引出多個代表輸出的有向箭頭,但值都是一樣的。神經元可以看作一個計算與存儲單元。計算是神經元對其的輸入進行計算功能。存儲是神經元會暫存計算結果,并傳遞到下一層。當我們用“神經元”組成網絡來描述網絡中的某個“神經元”時,我們更多地會用“單元”(unit)來指代。同時由于神經網絡的表現(xiàn)形式是一個有向圖,有時也會用“節(jié)點”(node)來表達同樣的意思。神經元簡化2.2人工神經網絡人工神經網絡是為模擬人腦神經網絡而設計的一種計算模型,它從結構、實現(xiàn)機理和功能上模擬人腦神經網絡。人工神經網絡與生物神經元類似,由多個節(jié)點(人工神經元)互相連接而成,可以用來對數(shù)據之間的復雜關系進行建模,不同節(jié)點之間的連接被賦予了不同的權重,每個權重代表了一個節(jié)點對另一個節(jié)點的影響大小。每個節(jié)點代表一種特定函數(shù),來自其他節(jié)點的信息經過其相應的權重綜合計算,輸入到一個激活函數(shù)中并得到一個新的活性值(興奮或抑制)。從系統(tǒng)觀點看,人工神經元網絡是由大量神經元通過極其豐富和完善的連接而構成的自適應非線性動態(tài)系統(tǒng)。早期的神經網絡模型并不具備學習能力。首個可學習的人工神經網絡是赫布網絡,采用的是一種基于赫布規(guī)則的無監(jiān)督學習方法。感知器是最早的具有機器學習思想的神經網絡,但其學習方法無法擴展到多層的神經網絡上。直到1980年左右,反向傳播算法才有效地解決了多層神經網絡的學習問題,并成為最為流行的神經網絡學習算法。20世紀80年代中期,DavidRunelhart、GeoffreyHinton和RonaldW-llians、DavidParker等人分別獨立發(fā)現(xiàn)了誤差反向傳播算法(ErrorBackPropagationTraining),簡稱BP,系統(tǒng)解決了多層神經網絡隱含層連接權的學習問題,并在數(shù)學上給出了完整推導。人們把采用這種算法進行誤差校正的多層前饋網絡稱為BP網。2.2人工神經網絡
BP神經網絡具有任意復雜的模式分類能力和優(yōu)良的多維函數(shù)映射能力,解決了簡單感知器不能解決的異或(ExclusiveOR,XOR)和一些其他問題。從結構上講,BP網絡具有輸入層、隱藏層和輸出層;從本質上講,BP算法就是以網絡誤差平方為目標函數(shù),采用梯度下降法來計算目標函數(shù)的最小值。人工神經網絡誕生之初并不是用來解決機器學習問題。由于人工神經網絡可以用作一個通用的函數(shù)逼近器(一個兩層的神經網絡可以逼近任意的函數(shù))。因此人工神經網絡可以看作是一個可學習的函數(shù),并將其應用到機器學習中。理論上,只要有足夠的訓練數(shù)據和神經元數(shù)量,人工神經網絡就可以學到很多復雜的函數(shù)。我們可以把一個人工神經網絡塑造復雜函數(shù)的能力稱為網絡容量(NetworkCapacity),這與可以被儲存在網絡中的信息的復雜度以及數(shù)量相關。人工神經網絡的未來和發(fā)展(圖片來自于網絡)2.2人工神經網絡人工神經網絡具有如下四個基本特征:非線性:非線性關系是自然界的普遍特性。大腦的智慧就是一種非線性現(xiàn)象。人工神經元處于激活或抑制二種不同的狀態(tài),這種行為在數(shù)學上表現(xiàn)為一種非線性關系。具有閾值的神經元構成的網絡具有更好的性能,可以提高容錯性和存儲容量。非局限性:一個神經網絡通常由多個神經元廣泛連接而成。一個系統(tǒng)的整體行為不僅取決于單個神經元的特征,而且可能主要由單元之間的相互作用、相互連接所決定。通過單元之間的大量連接模擬大腦的非局限性。聯(lián)想記憶是非局限性的典型例子。非常定性:人工神經網絡具有自適應、自組織、自學習能力。神經網絡不但處理的信息可以有各種變化,而且在處理信息的同時,非線性動力系統(tǒng)本身也在不斷變化。經常采用迭代過程描寫動力系統(tǒng)的演化過程。非凸性:一個系統(tǒng)的演化方向,在一定條件下將取決于某個特定的狀態(tài)函數(shù)。例如能量函數(shù),它的極值相應于系統(tǒng)比較穩(wěn)定的狀態(tài)。非凸性是指這種函數(shù)有多個極值,故系統(tǒng)具有多個較穩(wěn)定的平衡態(tài),這將導致系統(tǒng)演化的多樣性。2.3卷積神經網絡2.3.1卷積層卷積運算的含義是卷積核(卷積窗口)在輸入圖像數(shù)據上滑動,在相應位置上進行先乘后加的運算。以下圖為例,中間為卷積核,在輸入圖像上進行滑動,當滑動到當前位置時,其卷積運算操作是對卷積核所覆蓋像素進行權值和對應位置處像素的乘加:
神經元簡化2.3卷積神經網絡2.3.1卷積層一般情況下,卷積核在幾個維度上滑動,就是幾維卷積,如下圖所示。準確地說,是1個卷積核在1個圖像數(shù)據上進行幾維滑動,就是幾維卷積。從左至右分別為一維卷積、二維卷積、三維卷積2.3卷積神經網絡2.3.1卷積層以PyTorch為例#torch.nn.Conv2d()#功能:對多個二維信號進行二維卷積torch.nn.Conv2d(in_channels,
out_channels,
kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True,
padding_mode='zeros')2.3卷積神經網絡2.3.1卷積層以下面代碼為例#導入深度學習框架torch包importtorch#導入包含操作算子的nn包fromtorchimportnn#為了使每次生成的隨機矩陣input元素值均一樣,設定一個隨機種子7torch.manual_seed(7)#設定一個卷積操作,其卷積核為2*2的矩形區(qū)域,縱向移動步長為1,橫向移動步長為1,向下取整,外圍補1圈零,空洞卷積參數(shù)為2c=nn.Conv2d(1,2,(2,2),stride=1,padding=1,bias=False,dilation=2,padding_mode="zeros")#自定義卷積窗口中每個值均為0.3c.weight.data=torch.ones([2,1,2,2])*0.3#隨機生成一個張量,張量的形狀為1*1*3*3,每個元素取值范圍為[1,10)input=torch.randint(1,10,(1,1,3,3))#轉換為float類型input=input.float()#打印輸入print(input)#進行卷積操作output=c(input)#打印輸出Print(output)2.3卷積神經網絡2.3.1卷積層填充padding:有、無填充padding對卷積運算輸出特征圖的影響,填充大多數(shù)情況是為了保持輸入輸出圖像尺寸保持不變??斩淳矸edilation:卷積窗口(卷積核)內的值代表權值,dilation不為1時權值之間需有間隔,權值間的“空洞”由“0”填補。這樣的卷積核常用于圖像分割任務,主要目的在于提高感知野。通道數(shù)個數(shù)out_channel即為卷積核的個數(shù)。padding的作用空洞卷積的作用2.3卷積神經網絡2.3.1卷積層如下圖所示,每個黑塊部分即為卷積核依次掃過的區(qū)域,以第一個區(qū)域為例,輸出值2.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,卷積核每次平移一格,依次類推,輸出最終結果。卷積操作得到新張量2.3卷積神經網絡2.3.1卷積層需要說明的是我們在此處代碼中將bias設置為False,其目的是為了演示時更簡單易懂。默認情況該值為True,會造成外圍補零后值為非0的情況,因為結果需要加上偏置,如右圖所示,我們看到的結果并非整數(shù),而是帶有小數(shù)。添加偏置后造成輸出帶有偏置項2.3卷積神經網絡2.3.1卷積層分組卷積設置groups:常用于模型的輕量化。下圖是Alexnet模型結構,可以看出,第一次卷積,模型將輸入圖像數(shù)據分成了上下兩組,然后分別進行后續(xù)的池化、卷積操作。在特征提取環(huán)節(jié),上下兩組信號是完全沒有任何聯(lián)系的。直到達到全連接層,才將上、下兩組融合起來。這里,第一次的卷積分組設置可通過groups達到。Alexnet模型結構
2.3卷積神經網絡2.3.2池化層池化(Pooling)是在不同的通道上分開執(zhí)行的,然后根據窗口大小進行相應的操作,即池化操作既不改變通道數(shù)也不需要參數(shù)控制。池化操作類型一般有最大池化、平均池化等。池化主要作用有以下幾個:降維。壓縮特征,去除冗余信息,降低網絡復雜度,減小計算量、減少內存消耗。實現(xiàn)了特征的非線性表達。擴大感知野。實現(xiàn)了特征的平移不變性、旋轉不變性和尺度不變性等。2.3卷積神經網絡2.3.2池化層最大池化層:最大池化(MaxPooling)操作的含義是選取圖像指定區(qū)域中最大的值作為結果輸出,以PyTorch為例,調用模塊nn中的MaxPool2d()可以實現(xiàn)構建最大池化層的操作。#torch.nn.MaxPool2d()#功能:?對由多個輸入平面組成的輸入信號應用最大池化。?torch.nn.MaxPool2d(kernel_size,stride=None,padding=0,dilation=1,return_indices=False,ceil_mode=False)2.3卷積神經網絡2.3.2池化層以下面代碼為例:#導入深度學習框架torch包importtorch#為了使每次生成的隨機矩陣input元素值均一樣,設定一個隨機種子7torch.manual_seed(7)#設定一個最大池化操作,該操作的池化窗口為3*2的矩形區(qū)域,縱向移動步長為2,橫向移動步長為1,向上取整,同時輸出一個對應最大值序號的張量m=torch.nn.MaxPool2d((3,2),stride=(2,1),return_indices=True,ceil_mode=True)#生成一個隨機整數(shù)張量,張量的形狀(shape)為2*3*4*4,張量中每個值的大小范圍[1,10)。input=torch.randint(1,10,(2,3,4,4))#將張量中的值類型從int型轉換為float型input=input.float()#進行池化,生成池化后的張量output=m(input)2.3卷積神經網絡2.3.2池化層下圖顯示的是以其中一張圖的一個通道進行最大池化操作的示意圖。黑色區(qū)域部分即為我們所說的池化窗口,看子圖從①到⑥,可發(fā)現(xiàn)池化窗口按照先寬(橫向移動)后高(縱向移動)的方式尋取每個區(qū)域的最大值。橫向步長為1,橫向每次移動一格,即一個像素??v向步長為2,即移動兩個像素位置。由于沒有給出padding的參數(shù),所以不補零。由于開啟了向上取整,所以④到⑥的過程中池化區(qū)域雖然不滿6個元素,但依然采用剩下的4個元素為一組進行最大池化操作。每個池化區(qū)域的最大值組成了一個新的張量。這便是第一個通道的輸出結果。最大池化層操作視圖2.3卷積神經網絡2.3.2池化層在代碼中我們選擇同時輸出所在區(qū)域最大值的序號,如下圖所示,PyTorch張量中值的序號從0開始,第一個池化窗口中最大值9在整個張量中的序號也為“9”,第二個池化窗口中最大值9在張量中的序號為“6”,第二個池化窗口有兩個“9”,由此可見,PyTorch輸出的是區(qū)域中最大值出現(xiàn)時的第一個序號。輸出所在區(qū)域最大值的序號2.3卷積神經網絡2.3.2池化層平均池化層:平均池化(AveragePooling)操作的含義是計算圖像區(qū)域的平均值作為該區(qū)域池化后的值。以PyTorch為例,調用模塊nn中的AvgPool2d()實現(xiàn)構建平均池化層的操作。#torch.nn.AvgPool2d()#功能:對由多個輸入平面組成的輸入信號應用平均池化。torch.nn.AvgPool2d(kernel_size,stride=None,padding=0,ceil_mode=False,count_include_pad=True,divisor_override=None)2.3卷積神經網絡2.3.2池化層count_include_pad是指在計算平均值時,是否把填充值考慮在內。如下圖所示,對實線區(qū)域高、寬分別補一圈零后平均池化,在不開啟count_include_pad時,黑色塊區(qū)域的池化結果為1/1=1;在開啟count_include_pad時,黑色塊區(qū)域的池化結果為1/4=0.25。divisor_override是計算平均值作為分母的值,默認不給出的情況下是除以區(qū)域像素的個數(shù),給出的情況下就是無視像素個數(shù)。如下圖所示,對實線區(qū)域進行高、寬分別補一圈零后平均池化且count_include_pad=True,在不開啟divisor_override時,平均池化結果為1/4=0.25,開啟時,指定分母為3,平均池化結果為1/3=0.33。參數(shù)count_include_pad作用參數(shù)divisor_override作用2.3卷積神經網絡2.3.2池化層以下面代碼為例:importtorchtorch.manual_seed(7)#設定一個平均池化操作,該操作的池化窗口為2*2的矩形區(qū)域,縱向移動步長為2,橫向移動步長為2,向下取整,不采用除數(shù)因子m=torch.nn.AvgPool2d((2,2),stride=(2,2),padding=(1,1),divisor_override=None)#生成一個隨機整數(shù)張量,張量的形狀(shape)為1*1*3*3,張量中每個值的大小范圍[1,10)input=torch.randint(1,10,(1,1,3,3))#將張量中的值類型從int型轉換為float型input=input.float()#進行平均池化output=m(input)#打印張量操作前后結果print(input,output)2.3卷積神經網絡2.3.2池化層下圖顯示的是3*3張量高、寬補零為1后平均池化操作過程,黑色區(qū)域部分為平均池化窗口,池化窗口按照先寬(橫向移動)后高(縱向移動)的方式計算每個區(qū)域的平均值。由于采用默認的池化窗口向下取整的方式,張量最下面的全零行就不再進行平均池化計算。所以最終輸出的為2*2的張量。平均池化層操作視圖2.3卷積神經網絡2.3.3批量標準層批標準化層(BatchNormalization,BN)操作的含義是對數(shù)據進行歸一化處理,該層計算了每個batch(批次)的均值和方差,并將其拉回到均值為0、方差為1的標準正態(tài)分布。計算公式如下:
上式中,x為需要歸一化的輸入數(shù)據,E[x]和Var[x]為輸入數(shù)據的均值和方差,ε為防止分母出現(xiàn)零所增加的變量,γ和β是對輸入值進行仿射操作,即線性變換。γ和β的默認值分別為1和0,仿射包含了不進行仿射的結果,使得引入BN至少不降低模型擬合效果,γ和β可以作為模型的學習參數(shù)。2.3卷積神經網絡2.3.3批量標準層批標準化層的作用有以下幾個:減輕了模型對參數(shù)初始化的依賴;加快了模型訓練速度,并可以使用更大的學習率;一定程度上增加了模型的泛化能力。以PyTorch代碼為例#torch.nn.BatchNorm2d()#功能:將張量的輸出值拉回到均值為0,方差為1的標準正態(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卷積神經網絡2.3.3批量標準層以下面代碼為例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)第一個通道經過BN層的操作2.3卷積神經網絡2.3.4激活層激活層是指激活函數(shù)層,其作用是對特征進行非線性變換,賦予多層神經網絡具有深度的意義。幾種常見的激活函數(shù):
sigmoid激活函數(shù)表達式圖
ReLU激活函數(shù)表達式圖2.3卷積神經網絡2.3.5全連接層全連接層又稱為線性層(Linear),其中每個神經元與上一層所有神經元相連,實現(xiàn)對前一層的線性組合或線性變換,如下圖所示。全連接層2.3卷積神經網絡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)最終輸出結果為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卷積神經網絡2.3.6訓練與反饋若干個卷積層、池化層、激活層、全連接層等結構組成了卷積神經網絡,組合卷積神經網絡的第一個卷積層的卷積核用來檢測低階特征,比如邊、角、曲線等。隨著卷積層的增加,對應卷積核檢測的特征就更加復雜(理性情況下,也是我們想要的情況)。比如第二個卷積層的輸入實際上是第一層的輸出(卷積核激活圖),這一層的卷積核便是用來檢測低價特征的組合等情況(半圓、四邊形等),如此累積,以檢測越來越復雜的特征。實際上,我們的人類大腦的視覺信息處理也遵循這樣的低階特征到高階特征的模式。最后一層的卷積核按照訓練CNN目的的不同,可能是在檢測到人臉、手寫字體等時候激活。所以,在相當程度上,構建卷積神經網絡的任務就在于構建這些卷積核。也就是,將這些卷積核變成這樣改變卷積核矩陣的值,也就是權重能識別特定的特征。這個過程叫做訓練。在訓練開始之時,卷積層的卷積核是完全隨機的,它們不會對任何特征激活(不能檢測任何特征)。這就像剛出生的孩子,TA不知道什么是人臉、什么是狗、什么是上下左右。TA需要學習才知道這些概念,也就是通過接觸人臉、狗、上下左右,并被告知
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 深度解析教育科技行業(yè)未來發(fā)展方向
- 教育機構如何利用游戲化平臺提高教學效果
- 企業(yè)培訓中多媒體技術的應用與創(chuàng)新-以智慧教室為例
- 新版培訓課件模板圖片
- 碧桂園張家港拓客內部培訓89
- 全民健身設施補短板工程實施方案在城市老舊小區(qū)健身設施改造中的應用研究
- 全球鈾礦資源市場前景與2025年核能產業(yè)綠色低碳發(fā)展戰(zhàn)略報告
- 公交優(yōu)先戰(zhàn)略在2025年城市交通擁堵治理中的可持續(xù)發(fā)展報告
- Carpetimycin-B-生命科學試劑-MCE
- 成都文理學院《游戲美術設計》2023-2024學年第一學期期末試卷
- 預計財務報表編制及分析課件
- 骨科出科試題帶答案
- 河道基槽土方開挖專項施工方案
- Q∕SY 1347-2010 石油化工蒸汽透平式壓縮機組節(jié)能監(jiān)測方法
- 現(xiàn)代美國玉米商業(yè)育種的種質基礎概要
- 西門子順序功能圖語言S7-Graph的應用
- GB∕T 4162-2022 鍛軋鋼棒超聲檢測方法
- 中醫(yī)治療室工作制度管理辦法
- 提花裝造工藝技術培訓課程
- 研究實驗報告水火箭.doc
- 五谷雜糧食品安全調查
評論
0/150
提交評論