iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 12
6
AI & Data

英雄集結:深度學習的魔法使們系列 第 12

[魔法陣系列] 王者誕生:AlexNet 之術式解析

上一篇前言提到 AlexNet 是一個歷史分水嶺,這是由於在 AlexNet 之前,Deep Learning 已經沈寂很久,而在2012年的 ImageNet 圖像分類競賽中,AlexNet top-5 錯誤率比上一年的冠軍下降了 10%,至此 CNN 開始受到研究者的强烈關注,在這年之後 ImageNet 的冠軍一直是 CNN。

以下將探討論文《ImageNet Classification with Deep Convolutional Neural Networks》來解析 AlexNet 成功的原因。

https://ithelp.ithome.com.tw/upload/images/20181026/201125407G1V9yz1Cj.png

AlexNet 的架構共八層,第一層到第五層是 Convolutional Layers 做卷積操作(Convolution Operation)與池化(Pooling);第六層到第八層是 Fully Connected Layers。

雖然現在來看它的網絡架構並不深,但在當年已經是個大突破了,下面整理出 AlexNet 的特點,同時也是它成功的原因:

  • Activation Function:使用 ReLU
    當時最常用的激活函數(Activation Function)是 Sigmoid 和 tanh function。Sigmoid 是把輸入的值壓縮到 0 和 1 之間,但它有梯度消失的缺點會讓神經網絡很難被優化。
    https://ithelp.ithome.com.tw/upload/images/20181026/20112540oUMN3LR7sU.png

圖片來源:https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6

而 ReLU 的優點在於:

  1. 收斂速度快
  2. 相較於 Sigmoid/Tanh,ReLU 省去複雜運算,只需要一個閾值就能得到激活值

論文中的這張圖顯示 ReLU 快速收歛的特性:
https://ithelp.ithome.com.tw/upload/images/20181026/20112540nIvAQN9ZbU.png

  • 降低 Overfitting 的方法:
    AlexNet 使用 Dropout 和 Data augmentation 這兩種方法來降低 Overfitting,我在[精進魔法] Regularization:減少 Overfitting ,提高模型泛化能力 中有提過這兩者的概念,這邊說明 AlexNet 的應用。

    • Dropout
      在 AlexNet 中,第六層和第七層的全連階層使用 Dropout,配置為 0.5,表示每個神經元有 50% 的機率不參與下一層的傳遞。這種技術迫使神經網絡需要學習更為穩健的特徵,因此可有效降低 Overfitting。

    • Data augmentation
      AlexNet 的處理分為兩種方式:

      1. 原始圖片的像素是 256 * 256,進行隨機抽取其中的 224 * 224 ,且允許水平翻轉將資料擴增 2048 倍。論文中說明此作法能有效的避免 Overfitting。
      2. 改變RGB通道的強度:對 RGB 色彩空間做主成份分析(PCA),接著用高斯隨機擾動。這個方法是透過自然圖片的性質來實現,也就是該物體對於照明的強度和顏色的變化是不變的。透過這個方法,top-1 的錯誤率下降 1%。
  • 大數據訓練
    百萬數量級的 ImageNet 圖像數據所訓練出來的模型。

  • GPU實現
    AlexNet 在訓練時用了兩塊 GTX 580 GPU,由於內存 3GB 仍不足以處理如此大量的資料,因此神經網絡分成上下兩層,一塊 GPU 處理一部分的數據,並在中間部分層做溝通。

以上這些技術到現在依然是很好用的方法,這也難怪有些人稱 AlexNet 的出現簡直就是王者歸來,重新帶回深度學習的榮耀。

不正經的題外話:說到王者就想到《Overlord 不死者之王》,喜歡主角威能的人可以來看這部!
https://ithelp.ithome.com.tw/upload/images/20181026/20112540yoGAQHZONN.jpg
圖片來源:http://acg.92ylq.com/anime/overlord/


上一篇
[魔法陣系列] Convolutional Neural Network(CNN)之術式解析
下一篇
[實戰系列] 使用 Keras 搭建一個 CNN 魔法陣(模型)
系列文
英雄集結:深度學習的魔法使們31

尚未有邦友留言

立即登入留言