1. 程式人生 > >讀論文:deep Learning 深度學習合集

讀論文:deep Learning 深度學習合集

Deep Learning

Very Deep Convolutional Networks for Large-Scale Image Recognition

ICLR 2015

問題

  • 網路模型不夠深

方法**

  • 用3個 3x3的核 替換 1個 7x7的核
    • 更多的非線性對映 3 vs. 1
    • 更少的引數 3(32C2) vs. 72C2

收穫

  • 多個小核代替大核更有優勢

參考

Network In Network

ICLR 2014

問題

  • 之前的CNN如AlexNet引數過多
  • 卷積層是線性的,抽象特徵的能力有限
  • 本文想解決以上兩個問題

方法

  • MLP卷積層,即用1x1的卷積,然後Relu啟用
    • 因為CNN高層特徵其實是低層特徵通過某種運算的組合
    • 作者就根據這個想法,提出在每個區域性感受野中進行更加複雜的運算
  • 把FC層用global average pooling代替
    • 減少過擬合
    • 減少引數

收穫

  • 1x1的卷積很有用,類似MLP中的用啟用函式把線性變成非線性的過程,還能起到通道降維的作用
  • 既然類似,能不能嘗試把dropout加入到CNN中呢(在用1x1的卷積之前,隨機置feature maps中一些值為0)?

參考

Going Deeper with Convolutions

CVPR 2015

問題

  • 增加網路的深度和寬度會帶來過擬合的問題
  • 訓練過程中會使得很多引數趨向於0 -> 稀疏
    • 計算機的基礎結構在遇到稀疏資料計算時會很不高效,使用稀疏矩陣會使得效率大大降低
    • 但是稀疏性對深度神經網路是有用的,這與生物學中Hebbian法則“有些神經元響應基本一致,即同時興奮或抑制”一致
  • 本文想設計一種既能利用稀疏性,又可以利用稠密計算的網路結構

方法

  • 在卷積層處理前,先用1x1的卷積核將它們聚合(資訊壓縮)後再卷積

    • 降低運算量
    • 增加非線性
  • 用多個尺度的卷積核 1x1,3x3,5x5 還有 3x3 max pooling提取特徵,然後組合成一層的feature maps(same padding)

    • 增加了網路的width,另一方面增加了網路對尺度的適應性

收穫

  • 1x1的卷積核是一個將稀疏變稠密的方法之一
  • 用多個尺度的卷積核提取特徵比一個尺度要好

參考

Deep Residual Learning for Image Recognition

CVPR 2016

問題

  • 深模型的問題:梯度消失與爆炸,導致難以找到最優值
    • 現有方案:
    • normalized initialization
    • intermediate normalization layers
  • 模型更深
    • 預測精度無法進一步提升
    • 訓練和驗證損失值,反而比淺層的損失值更大

方法

  • Residual Learning
  • 即 F(x) := H(x) - x
  • skip connections
  • 即一層的輸出,直接跳躍多層,連結給另一層

收穫

  • 這種殘差結構有效解決了梯度消失和爆炸,以後設計深的模型需借鑑
  • skip connections這種思路在其他很多領域都能借鑑

參考

Squeeze-and-Excitation Networks

arXiv:1709

問題

  • 為了提高網路的表示能力,許多現有的工作已經顯示出增強空間編碼的好處
  • 所以作者想到能不能從其他層面來考慮去提升效能,比如考慮特徵通道之間的關係

方法

  • 提出 Squeeze-and-Excitation Networks
  • ![](
  • 採用了一種全新的“特徵重標定”策略
  • 具體來說,就是通過學習的方式來自動獲取到每個特徵通道的重要程度,然後依照這個重要程度去提升有用的特徵並抑制對當前任務用處不大的特徵

收穫

  • SE模組可以嵌入到自己的網路裡,具有很強的泛化性,計算量增加可忽略不計

參考

Dropout: A Simple Way to Prevent Neural Networks from Overfitting

JMLR 15

問題

  • With limited training data, however, many of these complicated relationships will be the result of sampling noise, so they will exist in the training set but not in real test data even if it is drawn from the same distribution.
  • 即深度神經網路訓練出來的結果會受到噪聲的影響,會導致過擬合
  • 論文Introduction第三段全是說問題

方法

  • The term “dropout” refers to dropping out units (hidden and visible) in a neural network. By dropping a unit out, we mean temporarily removing it from the network, along with all its incoming and outgoing connections
  • 程式碼: d =random.rand(a.shape) < keep_prob

收穫

  • Droput能在全連結網路中有效解決過擬合問題,在玻爾茲曼機等圖形模型也可以被廣泛應用

參考

Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shif

ICML 2015

問題

  • Internal Covariate Shif the change in the distribution of network activations due to the change in network parameters during training
  • 傳統的方法是對輸入進行白化處理
    • 即通過線性變換使其均值為0,方差為1,並且降低輸入的冗餘性
    • 白化的時候,某些節點中數值的更新則被白化消除了,於是引數一直增長,但網路的輸出和損失幾乎沒有變化
    • 計算整個訓練樣本的協方差矩陣,計算量過大
  • 作者希望找到一種演算法不僅能夠進行可微分的歸一化,還能不用在整個訓練集上進行操作

方法

  • 對特徵的每個維度單獨做歸一化,而非以往的所有輸入單元聯合白化
  • 用每個mini-batch的期望和方差來估計全域性的期望和方差
  • 引入兩個可學習的引數γ(k),β(k),對x做線性處理(是為了在加速收斂和表徵破壞之間,留一個trade off的空間)

收穫

  • BN能加速收斂
  • 深模型時要採用BN

參考

Learning and Transferring Mid-Level Image Representations using Convolutional Neural Networks

CVPR’14

問題

  • Learning CNNs, however, amounts to estimating millions of parameters and requires a very large number of annotated image samples. This property currently prevents application of CNNs to problems with limited training data

方法

![])

  • 刪除了softmax層,加上了兩層自適應層

收穫

  • 可以估根據自己的資料量的大小,進行 fine-tuning

參考

Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet ClassificationI

ICCV 2015

問題

  1. Relu啟用函式不是0均值輸出,我們希望像tanh那樣輸出的均值是0
  2. 對於非常深的模型,隨機初始化權重很難converge。“Xavier”初始化對Relu和Prelu無效。

本文提出了一種新的啟用函式解決了問題1,一種新的初始化方法用於Relu

方法

  1. 提出Parametric Relu(PRelu)代替Relu,使錯誤率降低
    • PRelu:f(yi)=max(0,yi)+aimin(0,yi)
    • ai很小時就是Leaky Relu(ai=0.01)
    • ai可以求導,所以PRelu可以通過反向傳播來訓練
  2. 提出新的初始化權重的方法

    • 適用於深度網路+Relu類啟用函式

    • 是基於方差的計算,詳細推到見論文2.2

    • 結果權重滿足均值為0,方差為2nl的高斯分佈
    • python程式碼:W = np.random.randn(fan_in, fan_out) / np.sqrt(fan_in / 2) # layer initialization

收穫

  1. 以後追求極低錯誤率可以嘗試用PRelu
  2. 可以嘗試找出通用公式,把某些現有的東西(Relu)歸成一種特例(PRelu的一種特例)
  3. 從0開始設計深度網路時可以考慮本文初始化權重的方法

參考

Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding

ICIR‘16

問題

  • Neural networks are both computationally intensive and memory intensive, making them difficult to deploy on embedded systems with limited hardware resources

方法

  1. Prunes the network:只保留一些重要的連線;
  2. Quantize the weights:通過權值量化來共享一些weights;
  3. Huffman coding:通過霍夫曼編碼進一步壓縮;

參考

Deep Networks with Stochastic Depth

ECCV’16

問題

  • training very deep networks comes with its own set of challenges

    • The gradients can vanish
  • the forward flow often diminishes

  • the training time can be painfully slow

方法

  • during training :
    • for each mini-batch, randomly drop a subset of layers and bypass them with the identity function
    • 效果:reduces training time substantially and improves the test error significantly on almost all data sets

收穫

  • 隨機深度的方法很好理解,也算一種整合方法,集成了不同深度的網路

參考

Snapshot Ensembles: Train 1, get M for free

ICLR’17

問題

  • Ensembles of neural networks are known to be much more robust and accurate than individual networks. However, training multiple deep networks for model averaging is computationally expensive
  • 即整合網路比單個網路更具有魯棒性和準確性,但是訓練多個深度網路的模型代價太大

方法

  • Our approach leverages the non-convex nature of neural networks and the ability of SGD to converge to and escape from local minima on demand. Instead of training M neural networks independently from scratch, we let SGD converge M times to local minima along its optimization path. Each time the model converges, we save the weights and add the corresponding network to our ensemble. We then restart the optimization with a large learning rate to escape the current local minimum. More specifically, we adopt the cycling procedure suggested by Loshchilov & Hutter (2016), in which the learning rate is abruptly raised and then quickly lowered to follow a cosine function
  • 即先用很大的學習率,然後用很小的學習率到達區域性最優後
  • 儲存模型,新增到整合中
  • 重複

收穫

  • Snapshot Ensembling 可以作為一個提升準確率的技巧來用

參考

Deep Mutual Learning

arXiv:1706

問題

  • 本文旨在研究如何利用多個模型來提高影象識別的準確度,常用的方法是ensemble多個模型的結果來提高準確度,但是ensemble多個模型意味著更多的計算量。本文則提出用多個模型一起訓練,互相學習,使得每個單模型都能提高泛化能力。

方法

這裡寫圖片描述

  • DML的核心思想是希望兩個分類器的概率預測分佈能夠一樣,而評價兩個概率分佈相似度的就是KL散度
  • 假設兩個分類器分別是θ1θ2,輸出的概率分佈分別p1p2,則從p1p2的KL距離定義為
    • DKL(p2||p1)=i=1Nm=1Mp2m(xi)logp2m(xi)p1m(xi)
    • 即把p2看作grand truth來計算兩個分佈的相對熵,最終網路θ1的損失函式Lθ1定義為:
    • Lθ1=L<