Thursday, April 26, 2018

Deep Learning Paper(二):AlexNet

Deep Learning Paper(二):AlexNet

2018/04/26

施工中...

前言:

寫技術文章的好處,是讓你更深入論文。上台報告的好處,除了這個以外,還可以讓你接受提問,看看自己是不是真的懂了。參加研討會的好處,則是你不懂的時候,可以當場問到懂。當然,這也要看你肯不肯問,敢不敢問!

-----


Fig. 1. AlexNet。

-----

Summary:

 AlexNet [1] 可以說是這波深度學習 [2]的濫觴。本文根據論文的架構,先討論 AlexNet 在 2012 年「整合」的蠻新的「創舉」,如 ReLU [3]-[5],GPU 的使用 [6]。Local Response Normalization(LRN)[7]-[12]。接著是避免 over-fitting 的
Data Augmentation [13] 與 Dropout [14]。最後是 softmax [15]-[16] 與 cross-entropy [17]-[18] 組成的 loss function,並以 PyTorch 的 AlexNet 程式碼作結束 [19]-[20]。

-----

Outline:

一、ReLU
二、Multiple GPUs
三、LRN
四、Data Augmentation
五、Dropout
六、Softmax
七、Cross-entropy
八、AlexNet

-----

在開始之前,先聊一些有點「相關」的話題。

AlexNet 其實我在一年多前,LeNet 之後,緊接著讀這一篇 [1]。後來我辦了論文研討會,主要是 CNN 之外,藉著辦活動,強迫自己讀一點 R-CNN [2]。當我以為自己對 CNN [2] 的掌握已經算不錯時,台北的演講我沒去聽,畢竟新竹到台北,要花不少時間。新竹進度慢一點,台北準備報 R-CNN 系列了,新竹才剛開始報 CNN 的第一篇 AlexNet。上週六因為台北新竹兩地的社團都已經算穩定進行,想說社團是我發起的,然後清大就幾分鐘的路程,左右無事,就去捧個場。沒想到最後有「巨大」的收穫,所以我又寫了這篇文章記錄心得。

底下就是重新讀過的 AlexNet。
 
-----

一、ReLU

ReLU 不是在 AlexNet 第一次使用。早在 2010 年,Hinton 的團隊就把它用在改進 restricted boltzmann machines 的效能上。當 AlexNet 走紅之後,ReLU 自然也被廣為使用。

其實後來又有一堆改良的 activation function [3], [4]。前一陣子讀 YOLO v1 時 [5],看到論文裡面使用 Leaky ReLU,我在想 ReLU 這麼好用,那 YOLO 用 Leaky ReLU 的原因是什麼?於是到社團問了一下,然後又有人問我 ELU,然後有人補充了 [3],所以大致對這一些新的激活函數有多一點的瞭解。

YOLO 使用 Leaky ReLU 的原因如下:「網絡中只有最後的全連接層用了線性的激活函數,其他層用了leaky ReLU:f(x)=max(x, 0.1x) 對比 ReLU 和 leaky ReLU,在 x 小於0的時候,用了0.1x ,避免使用 ReLU 的時候有些單元永遠得不到激活(Dead ReLU Problem)。」[5]

-----

二、Multiple GPUs

報告時出現了「SLI」這個字眼。

「SLI,全稱為「可擴充鏈結介面」(Scalable Link Interface),中文簡稱速力,是一種可把兩張或以上的顯示卡連在一起,作單一輸出使用的技術,從而達至繪圖處理效能加強的效果。」[6]

當然我們都知道 AlexNet 用了兩塊 GPU 去訓練,論文中並沒有提到「SLI」, 所以聽演講時我就好奇問了一下。兩塊造成了一些現象,影響了 Data Augmentation 的結果,這在下面會講到。這裡就先帶過。




Fig. 2. Multiple GPUs。

-----

三、LRN

圖3.1是 LRN 的公式,



Fig. 3.1. LRN。

-----


「LRN層,創建局部神經元活動競爭機制,響應較大值變更大,抑制其他反饋較小神經元,增強模型泛化能力。」









Fig. 3.2a. LRN cross channel。




Fig. 3.2b. LRNcross channel。


Fig. 3.3. NIN。






Fig. 3.4a. LRN@GoogLeNet。



Fig. 3.4b. LRN@VGGNet。

-----


四、Data Augmentation
五、Dropout
六、Softmax
七、Cross-entropy
八、AlexNet








Fig. 4. Data Augmentation。



Fig. 5. Dropout。




Fig. 6. Softmax。



Fig. 7a. KL1。



Fig. 7b. KL2。



Fig. 7c. KL3。



Fig. 8. Softmax and Cross-entropy。

「Loss function 採用的是 classification 任務常見的 cross-entropy。預測的 output 會是長度為 number of classes 的 tensor,target 則是正確 class label,而 PyTorch 裡的 cross_entropy 會負責把預測結果做一次 log softmax 後,計算跟目標之間的 negative log likelihood,因此預測結果不需要先做 softmax 或 log softmax。需要特別注意的是,不同的深度學習框架會有不同的參數形狀要求,例如 Keras 會需要你把 target 轉成 one-hot encoding 等。」。

-----

References

[1] PyTorch (七)Seminar Example:AlexNet
http://hemingwang.blogspot.tw/2018/01/pytorch-seminaralexnet.html

[2] PyTorch(六):Seminar
http://hemingwang.blogspot.tw/2018/01/pytorchseminar.html

一、ReLU

[3] 讀論文系列:Object Detection CVPR2016 YOLO - 掃文資訊
https://hk.saowen.com/a/cfd3b2eaac01567e2316db3878414cfce51d4efaba4025df608ebd303fae2339

[4] CS231n 2017

[5] Ramachandran, Prajit, Barret Zoph, and Quoc V. Le. "Searching for activation functions." (2018).
https://openreview.net/pdf?id=Hkuq2EkPf
https://arxiv.org/pdf/1710.05941.pdf

二、Multiple GPUs

[6] NVIDIA SLI - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/NVIDIA_SLI

三、LRN

[7] theanoでLocal Response Normalization(LRN)を使う - 備忘録とか日常とか
http://may46onez.hatenablog.com/entry/2016/01/08/142843

[8] What is local response normalization  - Quora
https://www.quora.com/What-is-local-response-normalization

[9] 学习笔记TF030 实现AlexNet
https://zhuanlan.zhihu.com/p/28085172

[10] AI從頭學(二八):Network in Network
http://hemingwang.blogspot.tw/2017/06/ainetwork-in-network.html

[11] AI從頭學(二九):GoogLeNet
http://hemingwang.blogspot.tw/2017/06/aigooglenet.html

[12] 深入淺出 Deep Learning(四):CNN
hemingwang.blogspot.tw/2018/02/deep-learningcnn.html

四、Data Augmentation

[13] 主成分分析 - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90

五、Dropout

[14] 理解dropout - CSDN博客
https://blog.csdn.net/stdcoutzyx/article/details/49022443

六、Softmax

[15] Softmax Regression (C2W3L08) - YouTube
https://www.youtube.com/watch?v=LLux1SW--oM&app=desktop

[16] Softmax 函数的特点和作用是什么? - 知乎
https://www.zhihu.com/question/23765351

七、Cross-entropy

[17] KL Divergence - YouTube
https://www.youtube.com/watch?v=aSuuByj8T6Y&t=455s

[18] A Short Introduction to Entropy, Cross-Entropy and KL-Divergence - YouTube
https://www.youtube.com/watch?v=ErfnhcEV1O8&app=desktop

八、AlexNet

[19] PyTorch_CSX_AlexNet.py at master · pecu_PyTorch_CSX · GitHub
https://github.com/pecu/PyTorch_CSX/blob/master/02_AlexNet/AlexNet.py 

[20] 穿越時空的偉人:用PyTorch重現偉人們的神經網絡 – PyLadies Taiwan – Medium
https://medium.com/pyladies-taiwan/%E7%A9%BF%E8%B6%8A%E6%99%82%E7%A9%BA%E7%9A%84%E5%81%89%E4%BA%BA-%E7%94%A8pytorch%E9%87%8D%E7%8F%BE%E5%81%89%E4%BA%BA%E5%80%91%E7%9A%84%E7%A5%9E%E7%B6%93%E7%B6%B2%E7%B5%A1-bd045ac43e96 

No comments: