深度学习实战1(基本概念、全连接神经网络、CNN)
一、深度學(xué)習(xí)基礎(chǔ)
1.1 深度學(xué)習(xí)(DL)概念
深度學(xué)習(xí)是指從有限樣例中通過算法總結(jié)出一般性的規(guī)律,并可以應(yīng)用到新的未知數(shù)據(jù)上。神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)并不等價(jià),深度學(xué)習(xí)可以采用神經(jīng)網(wǎng)絡(luò)模型,也可以采用其他模型,但由于神經(jīng)網(wǎng)絡(luò)可以比較容易的解決貢獻(xiàn)度分配問題,因此神經(jīng)網(wǎng)絡(luò)模型成為深度學(xué)習(xí)中主要采用的模型。
1.2 深度學(xué)習(xí)模型
深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,神經(jīng)網(wǎng)絡(luò)是由大量相互連接的神經(jīng)元節(jié)點(diǎn)構(gòu)成的進(jìn)行信息處理的數(shù)學(xué)模型??蓪⑸窠?jīng)元按功能分為輸入層、隱藏層和輸出層三個(gè)層次。其中輸入層接受數(shù)據(jù)輸入,將輸入數(shù)據(jù)傳遞給第一層隱藏層,由隱藏層對(duì)輸入數(shù)據(jù)進(jìn)行相關(guān)數(shù)學(xué)計(jì)算,最后經(jīng)由輸出層產(chǎn)生輸出。
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的隱藏層數(shù)目一般不超過兩層,但深度學(xué)習(xí)網(wǎng)絡(luò)一般含多層隱藏層?。典型的深度學(xué)習(xí)模型包括卷積神經(jīng)網(wǎng)絡(luò)、深度信念網(wǎng)絡(luò)、堆疊自編碼網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)等。
1.2.1 全連接神經(jīng)網(wǎng)絡(luò)
全連接神經(jīng)網(wǎng)絡(luò)(Fully Connected Neural Network),CNN、RNN、LSTM等網(wǎng)絡(luò)都是基于全連接神經(jīng)網(wǎng)絡(luò)出發(fā)。
?
?圓圈中的計(jì)算公式:
?反向傳播
?神經(jīng)網(wǎng)絡(luò)的輸出Y 與真實(shí)值Y 之間的損失Loss
?上述的公式經(jīng)過化簡(jiǎn),我們可以看到A、B、C、D、E、F都是常系數(shù),未知數(shù)就是w 和b ,也就是為了讓Loss 最小,我們要求解出最佳的w 和b 。
為了求解 Loss,我們采用梯度下降法
?學(xué)習(xí)率α,一般在(0,1)之間,一般來說,學(xué)習(xí)率越大,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)速度越快。如果學(xué)習(xí)率太小,網(wǎng)絡(luò)很可能會(huì)陷入局部最優(yōu);但是如果太大,超過了極值,損失就會(huì)停止下降,在某一位置反復(fù)震蕩。
1.2.2 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)是深度學(xué)習(xí)的代表模型。常用于目標(biāo)檢測(cè)、圖像識(shí)別、模式分類和數(shù)據(jù)預(yù)測(cè)等。主要由輸入層、隱藏層(其中包含卷積層、激活函數(shù)、池化層、全連接層)和輸出層組成。
一個(gè)經(jīng)典的CNN網(wǎng)絡(luò)結(jié)構(gòu)一般包含輸入層(Input layer)、卷積層(convolutional layer)、池化層(pooling layer)和輸出層(全連接層+softmax layer)。
- 輸入層: 網(wǎng)絡(luò)的輸入,以圖像為例,一般代表一張圖片的像素矩陣。
以處理圖像數(shù)據(jù)為例。在處理圖像時(shí),輸入層一般代表一張圖像的三維像素矩陣,大小通常為w*h*3或者w*h*1的矩陣,其中這三個(gè)維度分別圖像的寬度、長度、深度。深度也稱為通道數(shù),在彩色圖像中有R、G、B三種色彩通道,而黑白圖像只有一種色彩通道。
- 卷積層: CNN中最為重要的部分。通過卷積操作獲取圖像的局部區(qū)域信息。
卷積操作:
卷積操作通過使用過濾器filter(也稱作卷積核),將當(dāng)前層神經(jīng)網(wǎng)絡(luò)上的子節(jié)點(diǎn)矩陣轉(zhuǎn)化為下一層神經(jīng)網(wǎng)絡(luò)上的一個(gè)節(jié)點(diǎn)矩陣,得到的矩陣稱之為特征圖(feature map)。
首先,先定義一個(gè)3*3 的filter,其實(shí)是一個(gè)矩陣。filter的數(shù)值這里是手工設(shè)置的。在實(shí)際中,這些值是網(wǎng)絡(luò)的參數(shù),通常是隨機(jī)初始化后通過網(wǎng)絡(luò)學(xué)習(xí)得到的
?
卷積操作就是filter矩陣跟filter覆蓋的圖片局部區(qū)域矩陣(如下圖image中的黃色區(qū)域)對(duì)應(yīng)的每個(gè)元素相乘后累加求和。
?
?計(jì)算過程如下:
在完成上面的卷積操作后,filter會(huì)繼續(xù)移動(dòng),然后再進(jìn)行卷積操作。一次移動(dòng)的距離稱作步長(Stride)。這里設(shè)定步長為1,則向右移動(dòng)1個(gè)單元格,在當(dāng)前區(qū)域繼續(xù)進(jìn)行卷積操作,得到卷積值。注意,卷積步長只在輸入矩陣的長和寬這兩個(gè)維度實(shí)施。
?
當(dāng)filter移動(dòng)到輸入矩陣的最右側(cè)時(shí),下一次將向下移動(dòng)一個(gè)步長,同時(shí)從最左側(cè)重新開始。
?filter為什么能夠有效提取特征信息:
- 如果有圖片的局部區(qū)域跟filter矩陣比較相似,在進(jìn)行卷積后的輸出值會(huì)比較大。卷積值越大,就越表明檢測(cè)到filter對(duì)應(yīng)的物體特征。
- filter的大小只覆蓋圖片的局部區(qū)域,這種局部連接可以讓特征只關(guān)注其應(yīng)該關(guān)注的部分。這種設(shè)計(jì)符合人類對(duì)物體認(rèn)知原理的,試想一下,我們?cè)诳吹揭恢回埡?#xff0c;其實(shí)是記住這只貓各個(gè)區(qū)域最顯著的特征,這樣當(dāng)我們看到一只狗時(shí),就能夠根據(jù)局部特征區(qū)分貓與狗。
- 同一個(gè)filter在進(jìn)行卷積計(jì)算時(shí)參數(shù)是不變的,也被稱作權(quán)值共享,這樣就可以檢測(cè)不同區(qū)域上相同的物體特征。
前面計(jì)算的卷積值是輸入矩陣的線性函數(shù)。在實(shí)際使用中,引入激活函數(shù),其目的是增加整個(gè)網(wǎng)絡(luò)的非線性表達(dá)能力,否則,若干線性操作層的堆疊仍然是線性映射,無法形成復(fù)雜函數(shù),也就無法捕獲實(shí)際應(yīng)用中非線性特征的表達(dá)形式。
- 池化層: 對(duì)數(shù)據(jù)進(jìn)行降采樣(Down Sampling),縮小數(shù)據(jù)規(guī)模,收集關(guān)鍵數(shù)據(jù),同時(shí)提高計(jì)算速度。
池化層的作用是縮小特征圖,保留有用信息,得到一個(gè)更小的子圖來表征原圖。池化操作本質(zhì)上是對(duì)圖片進(jìn)行降采樣,可以認(rèn)為是將一張分辨率高的圖片轉(zhuǎn)化為分辨率較低的子圖,保留的子圖不會(huì)對(duì)圖片內(nèi)容理解產(chǎn)生太大影響。
池化的方式一般有兩種:Max Pooling和Average Pooling
Max Pooling,首先設(shè)定Pooling的大小與步長,然后覆蓋到對(duì)應(yīng)格子上面,找出最大值作為輸出結(jié)果,例如上圖Pooling選擇2×2,步長選擇為2,因此輸出就是2×2的維度,每個(gè)輸出格子都是對(duì)應(yīng)維度上輸入的最大值。
如果為Average Pooling,那么就是選擇其間的平均值作為輸出的值。
?
- 全連接層: 將學(xué)到的特征表示映射到類標(biāo)簽空間,起到分類器的作用。
在經(jīng)過多層的卷積層和池化層操作后,一般會(huì)有1-2個(gè)全連接層,給出最后的分類結(jié)果。全連接層在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中起到“分類器”的作用,它將學(xué)到的特征表示映射到類標(biāo)簽空間。
?卷積核在滑動(dòng)過程中做的卷積運(yùn)算就是卷積核w 與其所覆蓋的區(qū)域的數(shù)進(jìn)行點(diǎn)積,最后將結(jié)果映射到卷積層。具體的運(yùn)算公式如下,過程為特征提取:
CNN減少計(jì)算的方式:局部鏈接和權(quán)值共享方式
?
卷積神經(jīng)網(wǎng)絡(luò)與全連接神經(jīng)網(wǎng)絡(luò)的區(qū)別
1)總有至少1個(gè)的卷積層,用以提取特征。
2)卷積層級(jí)之間的神經(jīng)元是局部連接和權(quán)值共享,這樣的設(shè)計(jì)大大減少了(w , b)的數(shù)量,加快了訓(xùn)練。
(2)深度信念網(wǎng)絡(luò)
深度信念網(wǎng)絡(luò)(Deep Belief Network, DBN)是一個(gè)概率生成模型,由多個(gè)限制波爾茨曼機(jī)(Restricted Boltzmann Machines, RBM)層組成。RBM 具有一個(gè)顯層和一個(gè)隱層,其中顯層由顯性神經(jīng)元(即顯元)組成,用于接收輸入數(shù)據(jù);隱層由隱性神經(jīng)元(即隱元)組成,用于特征提取。
?DBN 的訓(xùn)練過程主要可分為以下兩步,一是無監(jiān)督的預(yù)訓(xùn)練,二是反向微調(diào)。預(yù)訓(xùn)練是指無監(jiān)督地對(duì)每個(gè) RBM 網(wǎng)絡(luò)進(jìn)行逐層訓(xùn)練。其中最底層的 RBM 將以原始數(shù)據(jù)輸入進(jìn)行訓(xùn)練,之后再將底層 RBM 提取的特征輸入上一層的 RBM 繼續(xù)進(jìn)行訓(xùn)練。接下來重復(fù)這個(gè)過程直至訓(xùn)練合適的 RBM 層。
卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的代表模型之一,其優(yōu)點(diǎn)是無需手動(dòng)選取特征,可以共享卷積核,方便處理高維數(shù)據(jù),缺點(diǎn)是需要調(diào)參且物理含義不明確。
深度信念網(wǎng)絡(luò)解決了深層次神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)間較長的問題,有效避免了深度學(xué)習(xí)容易陷入局部最優(yōu)的陷阱,易于拓展,但只能學(xué)習(xí)帶標(biāo)簽的數(shù)據(jù)。堆疊稀疏自編碼器用自編碼器替換了傳統(tǒng) DBN 中的 RBM 層,大大方便了無標(biāo)簽數(shù)據(jù)的學(xué)習(xí)。?
循環(huán)神經(jīng)網(wǎng)絡(luò)是一類以序列數(shù)據(jù)為輸入的遞歸神經(jīng)網(wǎng)絡(luò),通過各個(gè)隱藏層之間的聯(lián)系,使得當(dāng)前的輸出與前一時(shí)刻的輸出有關(guān),實(shí)現(xiàn)對(duì)處理過的信息進(jìn)行記憶,但當(dāng)序列過長時(shí) RNN 的表現(xiàn)不佳。長短期記憶網(wǎng)絡(luò)是一種改進(jìn)的 RNN 模型,在 RNN 的基礎(chǔ)上增加了三個(gè)控制門,通過增加的控制單元解決了 RNN 中長序列依賴問題,常用于長時(shí)間序列的預(yù)測(cè),非常適合應(yīng)用于城市軌道交通短期客流預(yù)測(cè)領(lǐng)域。?
(3)循環(huán)神經(jīng)網(wǎng)絡(luò)
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是一類以序列數(shù)據(jù)為輸入,在序列的演進(jìn)方向進(jìn)行遞歸,且所有節(jié)點(diǎn)按鏈?zhǔn)竭B接的遞歸神經(jīng)網(wǎng)絡(luò)。。
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)模型中,同一個(gè)隱藏層中的神經(jīng)元節(jié)點(diǎn)間并無連接,而 RNN 增加了各個(gè)隱藏
層內(nèi)部節(jié)點(diǎn)之間的聯(lián)系,通過隱藏層之間的關(guān)聯(lián)作用,使得當(dāng)前的輸出與前一時(shí)刻的輸出有關(guān),實(shí)現(xiàn)對(duì)處理過的信息進(jìn)行記憶。
(4)長短期記憶神經(jīng)網(wǎng)絡(luò)
長短期記憶神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory, LSTM)是 RNN 的一種變體,由于 LSTM 網(wǎng)絡(luò)通過門控制將短期記憶與長期記憶結(jié)合起來,在一定程度上解決了 RNN 由于梯度消失只能有短期記憶的問題。?在實(shí)際應(yīng)用中,當(dāng)預(yù)測(cè)信息和相關(guān)信息間的間隔超過一定范圍時(shí),傳統(tǒng) RNN很難把它們關(guān)聯(lián)起來,同時(shí) RNN 也存在著梯度消失和梯度爆炸的問題。為了處理和預(yù)測(cè)時(shí)間序列中間隔和延遲相對(duì)較長的事件,Hochreiter 和 Schmidhuber 提出了長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)。
區(qū)別于 RNN 的地方主要在于它在算法中加入了一個(gè)判斷信息是否有用的結(jié)構(gòu),稱為單元,以單元狀態(tài)來保存長期的記憶。
LSTM 擅長學(xué)習(xí)和分類順序數(shù)據(jù)。常見的應(yīng)用領(lǐng)域包括情感分析、語音識(shí)別、視頻分析和時(shí)間序列預(yù)測(cè)等。
長短時(shí)記憶模型(LSTM)的結(jié)構(gòu)與 RNN 相同,由輸入層、隱含層、輸出層構(gòu)成。與 RNN 不同的是,LSTM 中存在有記憶模塊,因此 LSTM 能夠?qū)τ诳土髁侩S時(shí)間的變化能夠進(jìn)行捕捉,通過進(jìn)行深層次的訓(xùn)練以便用于提取特征。
2.2 人工智能(AI)
人工智能就是讓機(jī)器的行為看起來就像是人所表現(xiàn)出來的智能行為一樣。
- 感知能力:模擬人的感知能力,可對(duì)外部刺激信息進(jìn)行感知和加工,主要研究領(lǐng)域包括語言信息處理和計(jì)算機(jī)視覺等。
- 學(xué)習(xí)能力:模擬人的學(xué)習(xí)能力,主要研究如何從樣例或從環(huán)境的交互中進(jìn)行學(xué)習(xí),主要研究領(lǐng)域包括監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)。
- 認(rèn)知能力:模擬人的認(rèn)知能力,主要研究領(lǐng)域包括知識(shí)表示、自然語言理解、推理、規(guī)劃、決策等。
3.3. 機(jī)器學(xué)習(xí)(ML)
機(jī)器學(xué)習(xí)讓計(jì)算機(jī)從數(shù)據(jù)中進(jìn)行自動(dòng)學(xué)習(xí),得到某種知識(shí)(或規(guī)律)。
三、TensorFlow與Keras?簡(jiǎn)介
3.1 TensorFlow 與Keras
TensorFlow 框架是谷歌公司開發(fā)的最受歡迎的端到端深度學(xué)習(xí)平臺(tái),是一個(gè)用Python、C++和CUDA語言編寫的免費(fèi)開源軟件庫,廣泛用于各種深度學(xué)習(xí)網(wǎng)絡(luò)。
keras是一個(gè)高級(jí)神經(jīng)網(wǎng)絡(luò)API,用python編寫,能夠在TensorFlow、CNTK和Theano上運(yùn)行。
3.2 tensorflow與keras的區(qū)別
tensorflow是比較地圖的深度學(xué)習(xí)模型開發(fā)語言,keras是基于tensorflow 的高級(jí)API,通常調(diào)用一些封裝好的函數(shù)就可以實(shí)現(xiàn)某些功能,而tensorflow比較底層,可以靈活的定義模型結(jié)構(gòu)。
-
ensorFlow和theano以及Keras都是深度學(xué)習(xí)框架,TensorFlow和theano比較靈活,也比較難學(xué)
-
Keras是一個(gè)由Python編寫的開源人工神經(jīng)網(wǎng)絡(luò)庫,可以作為Tensorflow、Microsoft-CNTK和Theano的高階應(yīng)用程序接口,進(jìn)行深度學(xué)習(xí)模型的設(shè)計(jì)、調(diào)試、評(píng)估、應(yīng)用和可視化
參考文獻(xiàn):
【1】C++11標(biāo)準(zhǔn)庫第二版:https://blog.csdn.net/a123a55/article/details/109403182
【2】基于深度學(xué)習(xí)的城市軌道交通客流量預(yù)測(cè)研究 -北京交通大學(xué) 薛秋馳
【3】基于深度學(xué)習(xí)模型的城市軌道交通短時(shí)客流量預(yù)測(cè)方法研究 -北京交通大學(xué) 王佳琳
【4】深度學(xué)習(xí)開端|全連接神經(jīng)網(wǎng)絡(luò):https://zhuanlan.zhihu.com/p/104576756
【5】一文掌握CNN卷積神經(jīng)網(wǎng)絡(luò):https://zhuanlan.zhihu.com/p/104776627
【6】卷積神經(jīng)網(wǎng)絡(luò)CNN學(xué)習(xí):https://zhuanlan.zhihu.com/p/31919653
【7】深度學(xué)習(xí)之卷積神經(jīng)網(wǎng)絡(luò)CNN:https://zhuanlan.zhihu.com/p/137756756
總結(jié)
以上是生活随笔為你收集整理的深度学习实战1(基本概念、全连接神经网络、CNN)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络基础15:MikroTik路由
- 下一篇: 宇视10寸人脸门禁一体机全局接线图