[UFLDL] *Train and Optimize

 
這部份內容應屬於如下[Converge]系列一員:
[Converge] Gradient Descent - Several solvers
[Converge] Weight Initialiser
[Converge] Backpropagation Algorithm 【BP實現細節】
[Converge] Feature Selection in training of Deep Learning 【特性相關性的影響】
[Converge] Training Neural Networks 【cs231n-lec5&6,推薦】
[Converge] Batch Normalisation
View Code

 

需附加關注: 權重初始化梯度爆炸梯度消失的影響

 
論文有點老,感受目前已沒有必要糾結:
本文主要是參考論文: On optimization methods for deep learning,文章內容主要是筆記
    • SGD(隨機梯度降低)
    • LBFGS(受限的BFGS)--> Broyden–Fletcher–Goldfarb–Shanno (BFGSalgorithm
    • CG(共軛梯度法)
三種常見優化算法的在deep learning體系中的性能。
 
 
Dropout是hinton提出的?源於其文章 Improving neural networks by preventing co-adaptation of feature detectors.
沒什麼可說的,若是是ensembling原理,用了總比沒用好。
 
 
感受實踐意義不大,目前牛頓法就挺好!
 
目前,深度網絡(Deep Nets)權值訓練的主流方法仍是梯度降低法(結合BP算法),固然在此以前能夠用無監督的方法(好比說RBM,Autoencoder)來預訓練參數的權值,
    • 而梯度降低法應用在深度網絡中的一個缺點是權值的迭代變化值會很小,很容易收斂到的局部最優勢;
    • 另外一個缺點是梯度降低法不能很好的處理有病態的曲率(好比Rosenbrock函數)的偏差函數。
而本文中所介紹的Hessian Free方法(如下簡稱HF)能夠不用預訓練網絡的權值,效果也還不錯,且其適用範圍更廣(能夠用於RNN等網絡的學習),同時 克服了上面梯度降低法的那2個缺點
HF的主要思想相似於牛頓迭代法,只是並無顯示的去計算偏差曲面函數某點的Hessian矩陣H,而是經過某種技巧直接算出H和任意向量v的乘積Hv(該矩陣-向量的乘積形式在後面的優化過程當中須要用到),所以叫作」Hessian Free」。
 
 
 

卷積神經網絡結構變化——Maxout Networks,Network In Network,Global Average Poolinghtml

順便理解下相關的概念。node

參考資料

[1] Maxout Networks, 2013 
[2] http://www.jianshu.com/p/96791a306ea5 
[3] Deep learning:四十五(maxout簡單理解) 
[4] 論文筆記 《Maxout Networks》 && 《Network In Network》 
[5] Fully convolutional networks for semantic segmentation, 2015 
[6] http://blog.csdn.net/u010402786/article/details/50499864 
[7] 深度學習(二十六)Network In Network學習筆記 
[8] Network in Nerwork, 2014 
[9] Improving neural networks by preventing co-adaptation of feature detectors
Reference

 

一、Maxout Network

提出了一個概念——線性變化+Max操做能夠擬合任意的的凸函數,包括激活函數 (such as Relu)。git

 

(1)github

若是激活函數採用sigmoid函數的話,在前向傳播過程當中,隱含層節點的輸出表達式爲:算法

這裏寫圖片描述

W是2維,這裏表示取出的是第i列(對應第i個輸出節點),下標i前的省略號表示對應全部行中的第i列中的。express

(2)網絡

若是是maxout激活函數,則其隱含層節點的輸出表達式爲:dom

這裏寫圖片描述

這裏寫圖片描述

W是3維,尺寸爲d*m*kide

  • d表示輸入層節點的個數,
  • m表示隱含層節點的個數,
  • k表示每一個隱含層節點展開k箇中間節點,這k箇中間節點都是線性輸出的,而maxout的每一個節點就是取這k箇中間節點輸出最大的那個值。

 

參考一個日文的maxout ppt 中的一頁ppt以下:函數

這裏寫圖片描述

這張圖的意識是說,紫圈中的隱藏節點展開成了5個黃色節點,取max。Maxout的擬合能力是很是強的,它能夠擬合任意的的凸函數

從左往右,依次擬合出了ReLU,abs,二次曲線。

這裏寫圖片描述

做者從數學的角度上也證實了這個結論,即只需2個maxout節點就能夠擬合任意的凸函數了(相減),前提是中間節點的個數能夠任意多,以下圖所示,具體能夠翻閱paper[1]。

maxout的一個強假設是輸出是位於輸入空間的凸集中的….這個假設是否必定成立呢?雖然ReLU是Maxout的一個特例——其實是得不到ReLU正好的狀況的,咱們是在學習這個非線性變換,用多個線性變換的組合+Max操做。

這裏寫圖片描述

Jeff: 是否具備必定的實戰價值?仍是叫好不叫座?感受是無關一樣的改進,稍微瞭解下。

 

二、Network In Network

本文的一些概念,包括1*1卷積global average pooling都已經成爲後來網絡設計的標準結構,有獨到的看法。

這裏寫圖片描述 

這裏寫圖片描述

看第一個NIN,原本11*11*3*96(11*11的卷積kernel,輸出map 96個)對於一個patch輸出96個點,是輸出feature map同一個像素的96個channel,可是如今多加了一層MLP,把這96個點作了一個全鏈接,又輸出了96個點

很巧妙,這個新加的MLP層就等價於一個1 * 1 的卷積層

這樣在神經網絡結構設計的時候就很是方便了,只要在原來的卷積層後面加一個1*1的卷積層,而不改變輸出的size。

注意,每個卷積層後面都會跟上ReLU。因此,至關於網絡變深了,我理解其實這個變深是效果提高的主要因素。

意義在於:成了一個不一樣特徵提取器的綜合效果,節省NN空間,但保證效果,這對網絡的簡化頗有意義。

【舉例解釋,見原文】

這裏創建了一個概念,全鏈接網絡能夠等價轉換到1*1的卷積,這個idea在之後不少網絡中都有用到,好比FCN[5]。

 

三、Global Average Pooling

在Googlenet網絡中,也用到了Global Average Pooling,實際上是受啓發於Network In Network。

Global Average Pooling通常用於放在網絡的最後,用於替換全鏈接FC層,爲何要替換FC?由於在使用中,例如alexnet和vgg網絡都在卷積和softmax之間串聯了fc層,發現有一些缺點:

(1)參數量極大,有時候一個網絡超過80~90%的參數量在最後的幾層FC層中; 
(2)容易過擬合,不少CNN網絡的過擬合主要來自於最後的fc層,由於參數太多,卻沒有合適的regularizer;過擬合致使模型的泛化能力變弱; 
(3)實際應用中很是重要的一點,paper中並無提到:FC要求輸入輸出是fix的,也就是說圖像必須按照給定大小,而實際中,圖像有大有小,fc就很不方便;

做者提出了Global Average Pooling,作法很簡單,是對每個單獨的feature map取全局average。要求輸出的nodes和分類category數量一致,這樣後面就能夠直接接softmax了。

這裏寫圖片描述

做者指出,Global Average Pooling的好處有:

  • 由於強行要求最後的feature map數量等於category數量,所以feature map就會被解析爲categories confidence maps.
  • 沒有參數,因此不會過擬合;
  • 對一個平面的計算,使得利用了空間信息,對於圖像在空間中變化更魯棒;

這裏寫圖片描述

舉個例子:

假如,最後的一層的數據是10個6*6的特徵圖,global average pooling是將每一張特徵圖計算全部像素點的均值,輸出一個數據值,

這樣10 個特徵圖就會輸出10個數據點,將這些數據點組成一個1*10的向量的話,就成爲一個特徵向量,就能夠送入到softmax的分類中計算了

 

From: https://alexisbcook.github.io/2017/global-average-pooling-layers-for-object-localization/

In mid-2016, researchers at MIT demonstrated that CNNs with GAP layers (a.k.a. GAP-CNNs) that have been trained for a classification task can also be used for object localization.

That is, a GAP-CNN not only tells us what object is contained in the image - it also tells us where the object is in the image, and through no additional work on our part! The localization is expressed as a heat map (referred to as a class activation map), where the color-coding scheme identifies regions that are relatively important for the GAP-CNN to perform the object identification task. 

 

 

 
和maxout(maxout簡單理解)同樣,DropConnect也是在ICML2013上發表的,一樣也是爲了提升Deep Network的泛化能力的,二者都號稱是 對Dropout的改進
    • 與Dropout不一樣的是,它不是隨機將隱含層節點的輸出清0,
    • 將節點中的每一個與其相連的輸入權值以1-p的機率清0
根據做者的觀點,Dropout和DropConnect都相似模型平均,Dropout是2^|m|個模型的平均,而DropConnect是2^|M|個模型的平均(m是向量,M是矩陣,取模表示矩陣或向量中對應元素的個數),
從這點上來講,DropConnect模型平均能力更強(由於|M|>|m|)
 
Jeff: 無足輕重的改進,並無絕對的優點。
 
 
 
 
stochastic pooling方法很是簡單,只需對feature map中的元素按照其機率值大小隨機選擇,即元素值大的被選中的機率也大。而不像max-pooling那樣,永遠只取那個最大值元素。
Jeff: 怎麼感受這些paper都是灌水文。
 
 
需附加關注:權重初始化對梯度爆炸和梯度消失的影響
須要瞭解下。
相關文章
相關標籤/搜索