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