1. 程式人生 > >吳恩達深度學習總結(11)

吳恩達深度學習總結(11)

經典網路的學習

LeNet-5

LeNet 上圖是LeNet-5的結構(來自吳恩達的課件,下面所有圖片均來自於吳恩達課件),該網路只有卷積層,pooling層和全連線層,pooling層使用的是均值池化,非線性啟用使用的是sigmoid/tanh,而不是現在最常用的ReLU。 原文地址:http://www.dengfanxin.cn/wp-content/uploads/2016/03/1998Lecun.pdf

AlexNet

AlexNet 該網路與LeNet比較:

VGG-16

Residual Network(殘差網路)

出現的原因是由於訓練非常深的網路時發現十分難訓練,且經常出現梯度消失和梯度爆炸。

殘差網路基本結構 殘差網路也叫做short cut或skip connection。 殘差網路的計算流程為: z

[l+1]=W[l+1]a[l]+b[l+1]a[l+1]=g(z[l+1]) z^{[l+1]} = W^{[l+1]}a^{[l]} + b^{[l+1]} \to a^{[l+1]} = g(z^{[l+1]}) \toz[l+1]=W[l+2]a[l+1]+b[l+2]a[l+2]=g(z[l+2]+a[l]) z^{[l+1]} = W^{[l+2]}a^{[l+1]} + b^{[l+2]} \to a^{[l+2]} = g(z^{[l+2]} + a^{[l]}) 通過計算公式我們可以知道,殘差網路是將前邊層的輸出加線上性啟用之後,非線性啟用之前。

殘差網路為什麼有用

理論上神經網路越深,那麼訓練誤差越小,但是實際操作時發現,plain network(不帶殘差網路的網路)隨著層數的增加,訓練誤差表現出先減小後增大的現象;而殘差網路則表現為隨著層數的加深訓練誤差越來越小。產生這種現象的原因可能是由於 a[l+2]=g(z[l+2]+a[l])=g(W[l+2]a[l+1]+b[l+2]+a[l])a^{[l+2]} = g(z^{[l+2]} + a^{[l]}) = g(W^{[l+2]}a^{[l+1]} + b^{[l+2]} + a^{[l]})

,當 WWbb 為0時,殘差網路中 a[l+2]=a[l]a^{[l+2]} = a^{[l]}。因此在殘差網路中很容易產生恆等函式而對於普通的網路很難產生恆等函式,所以在殘差網路中隨著層數的加深,網路的效果至少不會變差。 另外殘差網路也可以解決梯度消失問題,詳細解釋在 https://blog.csdn.net/superCally/article/details/55671064 所以殘差網路解決了:

Network in Network

在神經網路中,在不考慮nnn*nn>1n >1)卷積層的前提下,長寬大小的變化我們可以通過pooling層來控制,為了控制channel的改變引入了1*1的卷積,通過該種特殊的卷積層來不做padding的前提下,只改變channel的值 原文地址:https://arxiv.org/pdf/1312.4400.pdf

Inception network

讓神經網路自己選擇使用哪種結構進行訓練。 在這裡插入圖片描述 在上圖中就是讓網路自己選擇使用卷積層還是池化層,卷積層使用哪種尺寸,注意這裡pooling是做過padding的特殊pooling層(不改變輸入的長寬)。 但是對於卷積層來說如果channel過大,那麼卷積核的尺寸越大需要的引數越多,難以計算。於是引入11的卷積層改變channel的大小。 在這裡插入圖片描述 在這裡插入圖片描述 新增的11卷積層稱為bottleneck layer,實驗證明,只要合理構築bottleneck layer那麼既可以降低計算複雜度也不會影響識別效能。 所以Inception Network的基本結構為 在這裡插入圖片描述 原文地址為:https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf

遷移學習和資料增強

遷移學習

由於在計算機視覺中,很多工可以從別的任務中尋求可以使用的特徵提取方式,因此一般框架可以凍結前面的引數只訓練新新增層的引數或者將輸入 xx 經原框架執行到softmax之前的層,再將輸出結果放到自己的網路中進行訓練。 新增新層數的多少取決於資料的多少。 一般來說,使用別人網路引數進行初始化取得的效果往往比隨機初始化的效果好。

資料增強

  1. 垂直映象對稱
  2. 隨機裁剪
  3. Rotating, shearing, local warping
  4. color shift:對不同顏色channel的改變要根據一定的分佈進行

深度學習中一些小知識

深度學習網路的知識來源有兩個,一是標記的資料;二是手動設計的特徵/網路結構/其他的部分。擁有的資料越多需要手動設計的工作越少,演算法越簡單;反之,資料少那麼就需要更多的手動設計,演算法越複雜。

在競賽上提高準確度的小方法

  1. 整合:獨立訓練多個網路取輸出的平均(要儲存所有的網路,佔記憶體)
  2. multi-crop:以10-crop為例,原影象取中心crop,再取左上,左下,右上,右下4個crop,再對映象圖片取同樣的五個crop,將這10個crop用分類器計算去平均(不佔記憶體,佔時間)