一篇文章带你走进深度学习
文章目錄
- 1.深度學習
- 1.1機器學習的基本流程
- 1.2深度學習的原理
- 1.3深度學習的應用
- 1.4計算機視覺
- 2.神經網絡
- 2.1前向傳播
- 2.1.1神經網絡的基礎
- 2.1.2損失函數
- 2.1.3Softmax分類器
- 2.2 反向傳播
- 2.2.1計算偏導數
- 2.3神經網絡架構細節
- 2.3.1正則化
- 2.3.2激活函數
- 3.神經網絡過擬合解決方法
- 3.1數據預處理
- 3.2參數初始化
- 3.3DROP-OUT
- 4.神經網絡的總結
- 5.卷積神經網絡應用領域
- 5.1計算機視覺CV領域發展
- 5.2卷積神經網絡的應用場景
- 5.3卷積網絡與傳統網絡的區別
- 5.4卷積神經網絡整體架構
- 5.5卷積層
- 5.5.1圖像顏色通道
- 5.5.2卷積特征值計算方法
- 5.5.3步長與卷積核大小對結果的影響
- 5.5.4特征圖尺寸計算
- 5.5.5卷積參數共享
- 5.5.6卷積層總結
- 5.6池化層
- 6.整體網絡架構
- 7.經典網絡Alexnet
- 8.VGG網絡架構
- 9.殘差網絡Resnet
- 10.感受野的作用
- 11.RNN網絡構架解讀
- 12.LSTM網絡構架解讀
1.深度學習
- 深度學習電子書
- 深度學習電子書中源代碼
- 深度學習在線課程
1.1機器學習的基本流程
- 第一步:數據獲取
- 第二步:特征工程(最重要的一點)
- 第三步:選擇一個算法建立模型
- 第四步:評估與應用
對數據做處理之后,我們得思考如何提取特征,從而得到更有價值的輸入,有沒有一種算法,就是拿到數據之后,可以自動提取特征,深度學習是跟人工智能最貼切,即解決人工的那部分,我們可以讓網絡真正的去學習什么特征是比較合適的,這就是深度學習能夠達到的一種境界。深度學習是機器學習的一部分,也是最大的一部分,主要就是解決了特征工程。
1.2深度學習的原理
特征工程的作用:
特征如何提取:
比如文本、圖像等如何去提取特征,我們要盡可能多的去想找個特征是如何做的權重參數
深度學習的核心:
有輸入數據之后,會神經網絡就是一個黑盒子進行一個自動的特征提取,這些特征能夠讓計算機認識,所以深度學習的核心就是怎么樣去提取特征
1.3深度學習的應用
- 參數很多,但是速度可能很慢
- 常見應用:人臉識別、無人駕駛、醫療方面等 鏈接: 最龐大的圖像數據集,收集圖像然后標注圖像
- 數據集樣例:CIFAR-10(10類標簽、50000個訓練數據、10000個測試數據、大小均為32*32)
1.4計算機視覺
- 圖像分類任務
- 圖像表示:在計算機中圖像就是一個個小矩陣組成的,一張圖片被表示成三維數組的形式,每個像素的值從0到255,0代表越暗,255代表越亮,255×255×3,其中3是顏色通道,RGB值
- 測試數據跟每一個訓練數據進行比較,距離算出來,
2.神經網絡
- 神經網絡不應該稱為一種算法,把他當作一個特質提取的方法更為貼切,無論還在機器學習、數據挖掘、或者其他任務點當中,所有的人工智能任務,最重要的可能不是算法,而是數據層面上,就比如一個人要去做一個好菜好飯,沒有好食材能做出來嗎,所以特征是非常重要的。
- 神經網絡分為兩大模塊:一個是前向傳播,一個是反向傳播
2.1前向傳播
2.1.1神經網絡的基礎
- 線性函數:從輸入到輸出的映射 f(x,W)=Wx+bf(x,W)=W_x+bf(x,W)=Wx?+b
其中,xxx對應一個像素點,WWW意思是parameters是每個參數對應的權重(取決定性的作用),bbb是bias起到微調的作用
2.1.2損失函數
-
定義:損失函數是用來衡量,當前這組權重參數做完之后的一個結果
-
公式: Li=∑j≠yjmax(0,Sj?Syi+1)L_i=\sum\limits_{j\ne y_j}max(0,S_j-S_{y_i}+1)Li?=j=yj?∑?max(0,Sj??Syi??+1)
其中, SjS_jSj?是該圖像屬于其他類別,SyiS_{y_i}Syi??是該圖像屬于正確類別的,加1相當于加Δ\DeltaΔ(一個容忍程度):即算出錯誤類別-正確類別+Δ\DeltaΔ的值,與0比較大小,取其中較大值,所以等于0時,為沒有誤差 -
L=1N∑i=1N∑j≠yjmax(0,f(xi;W)j?f(xi;W)yi+1)+λR(W)L=\frac 1 N \sum\limits_{i=1}^N \sum\limits_{j\ne y_j}max(0,f(x_i;W)_j-f(x_i;W)_{y_i}+1)+\lambda R(W)L=N1?i=1∑N?j=yj?∑?max(0,f(xi?;W)j??f(xi?;W)yi??+1)+λR(W)
其中,加號前半部分是data_loss(即數據在當前損失函數當中得到的一個損失),加號后半部分是正則化懲罰項(即由這組模型一個權重參數WWW所帶來的一個損失,跟數據是沒有任何關系的,只考慮權重參數,R(W)=∑k∑lWk,l2R(W)=\sum_k\sum_lW_{k,l}^2R(W)=∑k?∑l?Wk,l2?,就是w12+w22+w32+……+wl2w_1^2+w_2^2+w_3^2+……+w_l^2w12?+w22?+w32?+……+wl2?再乘上一個λ\lambdaλ,λ\lambdaλ越大消減的越大,也就是我不希望過擬合,我希望正則化大一些,λ\lambdaλ數值較小就是意思意思得了)注:過擬合就是只關注其中一個種類,而不關注其他種類 -
圖解:
2.1.3Softmax分類器
-
歸一化:P(Y=k∣X=xi)=esk∑jesjP(Y=k|X=x_i)=\frac {e^{s_k}} {\sum_j e^{s_j}}P(Y=k∣X=xi?)=∑j?esj?esk??
其中,s=f(xi;W)s=f(x_i;W)s=f(xi?;W) -
計算損失值:Li=?logP(Y=yi∣X=xi)L_i=-logP(Y=y_i|X=x_i)Li?=?logP(Y=yi?∣X=xi?)
-
先得到各類別的一個得分值xxx,然后算出各自對應的exe^xex值,再將該值進行歸一化,得到概率值,例如其中一種的概率值比所有種類的概率值,根據對數函數的圖像可知,對數函數中x是0-1時對應的y值是負數,所以我們給式子前面加上負號,并且x越接近于1,損失值越小,也就是說正確的類別的概率值越接近1的越沒有損失
-
回歸任務最終是要預測一個值,是由得分值去計算一個損失
-
分類任務是由概率值去計算一個損失
2.2 反向傳播
- 前向傳播:有了xxx和www是可以計算出一個損失的
- 反向傳播:神經網絡的實質就是更新www,損失值很高就是指www不好,那么反向傳播就是調整www,能讓損失值下降,這就是一種優化,采用梯度下降方法
2.2.1計算偏導數
-
f(w,x)=11+e?(w0x0+w1x1+w2)f(w,x)=\frac 1 {1+e^-{(w_0 x_0+w_1 x_1+w_2)}}f(w,x)=1+e?(w0?x0?+w1?x1?+w2?)1?
比如有三個人要計算www的值,就是第一個人先算出x0w0x_0w_0x0?w0?的值,然后第二個人再將該值乘www得出w1w_1w1?,接著第三個人再算出w1w_1w1?乘www得到w2w_2w2?,即[(xw1)w2]w3[(xw1)w2]w3[(xw1)w2]w3 -
公式如下: σ(x)=11+e?x\sigma(x)=\frac 1 {1+e^{-x}}σ(x)=1+e?x1?sigmoid function dσ(x)dx=e?x(1+e?x)2=(1?σ(x))σ(x)\frac {d\sigma(x)} {dx}=\frac {e^{-x}} {{(1+e^{-x}})^2}={(1-\sigma{(x)})}\sigma(x)dxdσ(x)?=(1+e?x)2e?x?=(1?σ(x))σ(x)
-
加法門單元:均等分配
-
MAX門單元:給最大的
-
乘法門單元:互換的感覺
2.3神經網絡架構細節
- 我們對數據進行變換的目的是讓計算機能夠識別
- 全連接層的含義:輸入層與隱藏層的每個圓圈都連著一起了,就是全連接
- 比如前面傳入的數據是身高、年齡、體重,我們把數據進行變換,轉換成四個特征,年齡乘0.1+身高乘0.2+體重乘0.3=第一個圓圈的值,神經網絡是一個黑盒子,我們也不知道里面進行了怎樣的變換
- 但是做一個矩陣乘法,將三個圓圈變成四個圓圈,也就是x×wx×wx×w之后得到的結果
- 非線性變換:在每一步變成4個圓圈之前,先找一個非線性函數做一個映射,sigma函數或者max函數
- 基本架構:f=W2max(0,W1x)f=W_2max(0,W_1x)f=W2?max(0,W1?x)
- 繼續堆疊一層:f=W3max(0,W2max(0,W1x))f=W_3max(0,W_2max(0,W_1x))f=W3?max(0,W2?max(0,W1?x))
其中,max函數,當xxx值小于0,即為0,xxx值大于0,即為xxx - 神經網絡的強大之處在于,用更多的參數來擬合復雜的數據
- 每一個圓圈都代表一個神經元,神經元越多,多擬合程度越大,得到的結果可能會更好,但是計算量也會更大
鏈接: 可視化展示神經網絡
神經元為1,就相當于切了一刀,神經元為3就相當于切了三刀
2.3.1正則化
-
正則化的作用:懲罰力度對結果的影響
-
λ\lambdaλ越小,越符合訓練集的結果
-
訓練集的loss+R(W)R(W)R(W)的loss組成了最終的一個懲罰力度
-
我們實際看的還是測試集
-
過擬合:失去泛化能力,不能夠判斷出樣本中異常的點,例如圖一,強行將紅色的點給區分出來,而那個紅色的點應該是綠色的,過擬合只是在樣本數據集中精確,而引入其他數據集就不太精確,俗稱泛化能力差,如下圖的都是會過擬合的,所以我們就需要一個具體的參數,而達到更好的效果
-
參數個數對結果的影響
-
神經元越多,過擬合風險越大
-
不選過擬合的,盡量選不過擬合的情況下,把結果展示的更好一些
2.3.2激活函數
- 是神經網絡中非常重要的一部分
- 神經網絡經過一組權重參數計算完之后,要進行一個非線性的變換
- 常用的激活函數(Sigmoid,Relu,Tanh等)就列出了常見的非線性變換,激活函數是非線性變化
- Sigmoid函數中,一旦數值較大或是數值較小,梯度為0代表不進行更新,不進行傳播,出現了梯度消失的現象
- 現在90%都使用Relu函數,小于0時都為0,大于0時為xxx本身,所以梯度很好算,小于0的都剔除掉了,所以不會有梯度消失的現象
3.神經網絡過擬合解決方法
3.1數據預處理
- 不同的預處理結果會使得模型的效果發生很大的差異!
- 第一步是實際坐標值-均值,將數據都集中到中心,得到一個以原點為中心對稱的結果(圖二)
- 進行各個維度的擴充(放縮),將數據除標準差(圖三)
3.2參數初始化
- 通常我們都使用隨機策略來進行參數初始化
- W=0.01?np.random.randn(D,H)W=0.01*np.random.randn(D,H)W=0.01?np.random.randn(D,H)
例如一些參數值起伏很大,一會很大,一會很小,那么我們乘上0.01就可以將數值都變得很小,在函數圖像上基本看不到太大的起伏
3.3DROP-OUT
- 傳說中的七傷拳(傷敵七分,自損三分,互相傷害的感覺)
- 過擬合是神經網絡非常頭疼的一個大問題
- 通常層數比較多,神經元也比較多,這就造成整個神經網絡過擬合風險特別大
- 之前說了可以加正則化R(W)R(W)R(W)
- 左圖是完整的神經網絡,是一個全連接的,跟與其他神經元全部連在一起
- 右圖在神經網絡訓練的過程中(注意是訓練的過程),在每一層隨機殺死一部分神經元,第一次訓練可能第一層2、4不用,而第二次訓練是3、4不用
4.神經網絡的總結
前向傳播
- 例如有數據x1x2x3x_1 x_2 x_3x1?x2?x3?
- 先進行數據預處理,并不是說所有數據都可以當做輸入的,如文本去除停用詞,圖像數據進行標準化
- 預處理之后得到輸入層
- 輸入層和隱藏層之間是w1w2w3w_1 w_2 w_3w1?w2?w3?,用這些權重參數來連接的
- 在與www進行相乘之前,會經過一個Relu激活函數,進行非線性轉化
反向傳播
- 計算loss值
- loss先對w3w_3w3?求偏導,算出w3w_3w3?對結果做出了怎樣的變化
- 再依次對Relu函數,w2w_2w2?,Relu,w1w_1w1?求偏導,其中Relu函數值不發生變化,而www值會進行更新
- 整個神經網絡在計算過程當中,就是找權重參數,什么樣的權重參數能夠最適用于當前的任務
- 也就是說,w1w2w3w_1 w_2 w_3w1?w2?w3? 具體值算出來了,整個神經網絡就做完了
多擬合
- 神經網絡99%都會過擬合的
- 一旦過擬合了,我們就得想什么樣的解決方案是合適的
- 方法一,加上正則化
- 方法二,加上DROP-OUT
- 還有其他各種各樣的方法,層出不窮
(神經網絡一些細節一直在更新,但是整體的框架是不會變的)
5.卷積神經網絡應用領域
5.1計算機視覺CV領域發展
- 卷積神經網絡主要就是應用在計算機視覺任務當中的
- 深度學習使計算機視覺取得了很好的成就
- 通過上圖我們可以觀察到(數值表示判斷錯誤率),在2012年引入深度學習之前,錯誤率是很高的,而2015年已經可以達到跟人類判別錯誤率基本相同的水平了,2016年至今,技術水平仍在提高
5.2卷積神經網絡的應用場景
- 基本上的視覺任務都能由CNN網絡實現
- 卷積神經網絡就是解決上述內容中,過擬合、參數過多、神經元多、矩陣大等問題的
- 目前只要涉及圖像方面的,都能用到,例如醫學細胞檢測、無人駕駛、人臉識別
5.3卷積網絡與傳統網絡的區別
- 右邊是卷積神經網絡,輸入的不再是點,而是28×28×1三維的圖像(H×W×C),左邊傳統的輸入只是一列特征
- 不會把數據拉成向量,而是直接對樣本進行特征提取
- 還添加了depth深度
5.4卷積神經網絡整體架構
- 輸入層:是一個圖像數據28×28×1(該圖像是一個灰度,所以乘1)
- 卷積層:主要就是提取特征(后面會具體講解)
- 池化層:壓縮特征(后面會具體講解)
- 全連接層:通過一組權重矩陣www,例如前面講述過的將輸入層和隱藏層連接在一起
5.5卷積層
- 比如圖像是只貓,邊界的特征以及和貓的特征就是不一樣的,所以我們要對不同的區域提取出不同的特征,我們得知道邊界的特征不是那么重要,而貓的特征是很重要的
- 所以我們將一張圖像分為很多不同的部分,不同的地方需要區別的處理
- 比如改圖像第一步分割成5×5×3的,如藍色的立方體,
- 第二步由權重參數得到特征值,上圖的權重矩陣就是 [0,1,22,2,00,1,2]\begin{bmatrix} 0,1,2\\2,2,0\\0,1,2\end{bmatrix}???0,1,22,2,00,1,2????,得到的綠色的就是特征圖
5.5.1圖像顏色通道
-
圖像是有三個通道的點擊查看三通道動態效果
-
因此我們需要對每一個通道進行計算,然后將三者值相加
-
例如對于一張輸入圖像的同一塊位置,R通道算完該區域的值,存儲在上圖黃色矩陣里,接著對G和B通道進行計算,再將三者值進行相加(上圖少畫了一個綠色的立方體)
-
上圖仍然少畫了一個綠色的立方體
5.5.2卷積特征值計算方法
- 先隨機初始化一個權重參數,三通道對應的www矩陣值都是不一樣的
- 矩陣與矩陣相乘時,采用內積,即矩陣對應位置相乘之后的結果相加,例如上圖左側第一個圖與w0w_0w0?相乘之后就是0×1+0×1+0×1+0×(-1)+1×(-1)+1×0+0×(-1)+1×1+1×0=0,第二個是2,第三個是0,
- 之后再將上面求得的值相加0+2+0+b0b_0b0?,別忘記了加b0b_0b0?,偏置參數,b0b_0b0?=1,所以最終值為3,也就是上圖最右側的左上角的值3
- 第一塊區域做好了之后,我們會移動,此時的步長是2,然后與上面的步驟是一樣的
- 其中,步長是根據輸出決定的,例如該圖需要3×3的輸出,就得移動兩個單元格
5.5.3步長與卷積核大小對結果的影響
-
先粗力度的提取特征,然后再細力度提取特征,最后再高水平提取特征,拿高級特征進行分類
-
所以做一次卷積是不夠的,我們是在第一步得到的特征圖上再做一次卷積
-
首先開始輸入的圖像(粉色立方體)中的C表示三通道
-
進行卷積層之后的C表示多少個特征圖,如藍色的立方體前面的e.g.6,就是前面的粉色立方體用了6個例子,
-
卷積層涉及的參數:
-
滑動窗口的步長:步長越小,滑動窗口越多,計算效率越慢
-
卷積核尺寸:就是每個滑動窗口的大小
-
邊緣填充:比如下面這張圖第一行第一個括號內有一個(+pad 1)
-
我們可以觀察到第一列中有紫色和灰色,其中灰色就是我們填充的,pad1就是原來是5×5的,現在變成6×6,因為我們在采用窗口進行滑動的時候,可觀察到中間的部分有交集,也就是被提取的特征次數增多,而邊緣的機會就很少,所以我們采用了邊緣填充,讓原本在邊界的地方盡量往中間靠攏
-
同時為了避免添加的邊界會對最終的值產生影響,我們給元素值設置為0,也被稱為zero padding
-
一定程度上彌補了邊界缺失的現象
-
具體添加pad值為多少,根據實際需求,為了整除和方便計算來設置
-
卷積核個數:最終在算的過程中要得到多少特征圖,即 卷積核的個數決定最終特征圖的個數
5.5.4特征圖尺寸計算
- HHH和WWW的計算方法都是一模一樣的
- 其中,W1W_1W1?、H1H_1H1?表示輸入的寬度、長度;W2W_2W2?、H2H_2H2?表示輸出特征圖的寬度、長度;FFF表示卷積核長和寬的大小;SSS表示滑動窗口的步長;PPP表示邊界填充(加幾圈0),因為pad每次加的時候都是上下加一層,左右加一層,所以公式中是乘2P2P2P
- 例如,輸入數據是32×32×3的圖像,用10個5×5×3的filter來進行卷積操作,指定步長為1,邊界填充為2,最終輸入的規模為?
- (32-5+2×2)/1+1=32,所以輸出規模為32×32×10,經過卷積操作后也可以保持特征圖長度、寬度不變
5.5.5卷積參數共享
- 我們在用卷積核時,矩陣里面的數值如果都是不同的話(如上圖左邊),參數太多了,對計算會造成麻煩,所以我們采用同一個卷積核,矩陣數值都一樣(如上圖右邊)
- 例如,數據依舊是32×32×3的圖像,繼續用10個5×5×3的filter來進行卷積操作,所需的權重參數有多少個呢?
- 5×5×3=75,表示每一個卷積核只需要75個參數,此時有10個不同的卷積核,就需要10×75=750個卷積核參數,不要忘記還有b參數,每個卷積核都有一個對應的偏置參數,最終只需要750+10=760個權重參數
5.5.6卷積層總結
- 可以看到,在一張圖像輸入之后,我們通過一層卷積可以得到綠色的特征圖
- 對于同樣一張圖來說,我們可以通過相乘不同的矩陣,多尺度多力度的進行特征提取,讓特征圖更豐富起來,如下圖就是用了6個不同的矩陣,得到了6個特征圖,相當于得到了一個豐富的特征(計算公式會在后面的內容中給出)
5.6池化層
- 由卷積層得到那么多特征圖,卷積可以做很多次,但是如果特征圖比較多呢,這時就需要引入池化層,對得到的數據進行下采樣downsampling(壓縮)
- 如上圖,原始是224×224×64,我們通過pool(池化層)得到一個112×112×64,只會變長和寬,而不會變64,也就是卷積核的個數
- 上圖的右邊是將每個框內取最大值,也就是MAX POOLING,做了一個篩選,因為數值較大,意味著權重參數越大,整個網絡認為該數值是比較重要的
- 還有另一種平均池化AVERAGE POOLING,取每塊區域的平均值(但是現在很少用了,因為我們既然已經得到好的特征了,那么為什么還要算較差的特征呢)
- 所以基本上都是MAX POOLING,因為優勝劣汰,經過不斷的實驗,發現該方法效果更好
- 池化層沒有涉及到矩陣的運算,只是一個篩選,所以還是比較簡單的
6.整體網絡架構
- 先通過卷積CONV,進行特征提取
- 每一步卷積之后都會有一個RELU,進行非線性變換他們相當于一個組合
- 兩次卷積一次池化
- 假設最終得到一個32×32×10的特征圖,我們這個特征圖是一個立體的,我們如何將這個立體的特征圖轉化成5個分類的概率值
- 前面的卷積和池化主要是做特征提取的,得到最終的結果還得靠全連接層FC
- 我們首先需要將32×32×10的立體圖,拉成一個非常長的特征向量32×32×10=10240
- 比如上圖的FC矩陣就是一個[10240,5]
- 也就是說在最后的POOL層和FC層之間還有一個拉長的操作
- 帶參數計算的才能叫做一層,比如這里卷積層帶參數計算,而RELU不帶參數計算(沒有權重參數,沒有偏置參數,沒有數據更新),所以說激活函數不帶參數計算,因為不需要返回傳播,也不需要更新數據,同理POOL層也不需要,全連接層有權重參數矩陣,所以上圖一共有6+1=7層的神經網絡
7.經典網絡Alexnet
- 是很早之前的,12年奪冠的網絡
- 缺點:
- 1、11乘11的filter,大刀闊斧的提取特征,現在基本上是越小越好
- 2、stride=4,太大了
- 3、pad=0,不填充
- 8層網絡、5層卷積、3層全連接、還有2層Local Response Norm(這層后來被證明是沒用的,所以不用去管)
8.VGG網絡架構
- 14年的網絡
- 有右圖表中的六個版本,其中最主流的就是D版本
- 特點:
- 1、所有卷積核的大小都是3×3,意味著都是細力度進行提取
- 2、Alexnet網絡只有8層,而VGG有16層/19層,所以層數是更優秀的
- 3、下圖右側圖標中conv3-64表示得到64個特征圖,我們知道在經過一次maxpool層之后,會損失部分特征信息,而在VGG網絡中,每次經過pool層之后,都將特征圖翻倍,如下圖可以觀察到從64-128-256-512,所以相當于用特征圖的個數去彌補損失
- Alexnet要訓練8小時,而VGG要訓練3天
9.殘差網絡Resnet
- 15年年底,出現了殘差網絡Resnet
- 深層網絡遇到的問題,下圖中的右側兩個坐標軸中可以觀察出,無論是左側(訓練集),還是右側(測試集)中,56層的效果都比20層效果差(error是錯誤率,所以越低效果越好)
- 20層到56層中間加36層,其中可能有些層的效果并不好
- 解決方案核心思想:如果加入的層數效果不好,那么我們就不用它,將它的權重參數設置為0
- 解決方案:假設xxx是第20層,經過weight layer一層卷積,然后經過relu激活函數,之后再經過weight layer一層卷積,得到的結果F(X)F(X)F(X),此時我們再額外的連接一條identity線,原封不動的再把20層的xxx拿過來,現在不僅有原來的F(X)F(X)F(X)結果,還有同等映射的xxx一個結果,如果F(x)F(x)F(x)得到的loss值并不好,那么就會將其中的權重參數設為0,再加上原來的xxx,就是有個保底,至少不會比原來差
- 該殘差網絡將VGG救活了
10.感受野的作用
-
Input中綠色的經過一次卷積,得到First Conv里面的綠色小方塊,因此First Conv是由前面Input中3×3得到的
-
Second Conv又是由First Conv中9個上一步中類似綠色的小方塊得到的,一個綠色小方塊對應到Input是3×3,而9個小方塊加上重疊的部分對應到Input正好是5×5
- 上圖答案:假設輸入大小都是h×w×ch×w×ch×w×c,并且都使用ccc個卷積核(得到ccc個特征圖),可以來計算一下其各自所需參數:
- 一個7*7卷積核所需參數=C×(7×7×C)=49C2C×(7×7×C)=49C^2C×(7×7×C)=49C2
- 三個3*3卷積核所需參數=3×C×(3×3×C)=27C23×C×(3×3×C)=27C^23×C×(3×3×C)=27C2
- 很明顯,堆疊小的卷積核所需的參數更少一些,并且卷積過程越多,特征提取也會越細致,加入的非線性變換也隨著增多,還不會增大權重參數個數,這就是VGG網絡的基本出發點,用小的卷積核來完成體特征提取操作
11.RNN網絡構架解讀
-
遞歸神經網絡RNN,在傳統的神經網絡基礎上進行改進
-
比如特征提取與時間相關,由于時間相關性,對結果產生的影響,這就是RNN在處理時間方面的優勢
-
數據在經過隱藏層之后會得到當前的特征,比如隱藏層會將數據轉化成64個特征,然后64個特征經過輸出會得到10個類別的輸出值,前一個時刻訓練的特征也會對后一個特征產生影響的,因為特征無非就是數據的一個表達,在特征上也會呈現出一個相關性,會將前一層結果保留下來,這樣得到的結果會更準確一點
-
CNN主要應用在CV中,而RNN主要應用在NLP(自然語言處理)中,因為人類說話是有順序的
-
比如有多個不同的時刻,x0,x1...xtx_0,x_1...x_tx0?,x1?...xt?,每個時刻都有對于的輸出結果h0,h1...hth_0,h_1...h_th0?,h1?...ht?,代表中間結果,最后我們要選擇其中的一個結果hth_tht?,它會將之前所有的結果綜合考慮進來
-
首先得將輸入數據轉化成對應的特征向量,并且按照時間順序,從前到后進行排列,得到結果之后,我們就可以來訓練這個模型了,例如:單詞我們使用Word2Vec進行編碼,將單詞編碼成向量,比如將所有的單詞轉化成300個向量
12.LSTM網絡構架解讀
- RNN的缺點是最后一個結果會將前面的所有結果都考慮進來,但是前面的結果一定都重要嗎,而且一旦記錄的多了,可能就不精了,會產生誤差
- LSTM就是過濾掉沒必要的特征
- C:控制參數,決定什么樣的信息會被保留什么樣的信息會被遺忘,C需要持續進行維護和更新(下圖左側粗細所示)
- 還有一些門單元,門是一種讓信息選擇式通過的方法(下圖右側所示)
- sigmoid神經網絡層和一些乘法操作
- sigmoid層輸出0到1之間的數值,描述每個部分有多少量可以通過,0代表“不許任何量通過”,1就指“允許任意量通過”
- ft=σ(Wf×[ht?1,xt]+bf)f_t=\sigma(W_f×[h_{t-1},x_t]+b_f)ft?=σ(Wf?×[ht?1?,xt?]+bf?)
- ftf_tft?與Ct?1C_{t-1}Ct?1?計算決定丟棄什么信息(如下圖)
- it=σ(Wi×[ht?1,xt]+bi)i_t=\sigma(W_i×[h_{t-1},x_t]+b_i)it?=σ(Wi?×[ht?1?,xt?]+bi?)
- Ct=tanh(Wc×[ht?1,xt]+bc)C_t=tanh(W_c×[h_{t-1},x_t]+b_c)Ct?=tanh(Wc?×[ht?1?,xt?]+bc?)
- LSTM的基本架構
總結
以上是生活随笔為你收集整理的一篇文章带你走进深度学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 免费的区块链数据API网址
- 下一篇: 人脸美白磨皮算法