Monday, February 12, 2018

深入淺出 Deep Learning(一):Introduction

深入淺出 Deep Learning(一):Introduction

2018/01/11

前言:

2018/01/03 是我在聯發科「旁邊」的某公司講解 Deep Learning 的第一天,事前我在竹北的 Python 社團分兩次講解大綱,主要當然是 BP、LeNet、以及 1 x 1 convolution。大體上,由於內容很多,聽講者未必能在短時間接受,所以我重新整理一下,以網路文章的形式重新寫過,相信能夠呈現清楚的全貌給對 Deep Learning 有興趣的初學者。

-----


-----


-----

Summary:

本文摘錄我在2017年自學 Deep Learning 的重點 [1]-[3]。

內容包含 CNN [4]-[6]、RNN [7], [8]、R-CNN [9]、Regularization [10]、Optimization [11]、以及兩本參考書的介紹 [12], [13]。

-----

Outline:

一、CNN
二、RNN
三、R-CNN
四、Regularization
五、Optimization
六、Textbook

-----

一、CNN

CNN 是 Convolutional Neural Network 的縮寫,目前最熱的 Deep Learning / AI 最主要的應用之一:影像處理,就是由 CNN 完成。

第一個較成功的 CNN 叫做 LeNet-5,在1998年就已應用於美國銀行的支票辨識 [5],可以辨認手寫的阿拉伯數字 0 到 9。

LeNet 基本上是一個以網路呈現的函數,函數的係數最先是隨機設定,稍後藉由 Back Propagation [4] 這個演算法於每次訓練圖片時更新係數。

Deep Learning 的基礎可說是 BP [4] 與 LeNet [5],參考圖1a與1b。

LeNet 之後,在 2012年有 AlexNet 成功在大資料圖片集辨識獲得極大成功,2013年有 ZFNet 是 AlexNet 的最佳化,2014年有 GoogLeNet 與 VGG Net。這些 CNNs 陸續在影像辨識獲得更大的成功。

GoogLeNet 的重點之一是 1 x 1 convolution [6],參考圖1c。主要用於減少資料量。

-----


 
Fig. 1a. Training weighting factors [4].

-----


Fig. 1b. LeNet-5 [5].

-----



Fig. 1c. 1 x 1 convolution [6].

-----

二、RNN
 
RNN 的全名是 Recurrent Neural Network,CNN 主要處理平面空間的資料,RNN 則處理時間相關的資料如聲音、文字、影片(CNN+RNN)等 [7], [8]。

除了遞迴之外,較新的 RNN 如 LSTM 等,最主要是加入了三個(閘)門當作控制訊號,所以使用 sigma,讓資料限制在 0 到 1 之間。參考圖2a與2b。



Fig. 2a. LSTM, [8].



Fig. 2b. LSTM symbols, [8].


-----

三、R-CNN

R-CNN 的 R 是 Region 而不是 Recurrent。它可以在一張圖片中找出數個物體的小框框再加以辨識,是 CNN 的加強版。R-CNN 再加上 RNN,就可以用在影片的物體辨識上,所以也是自駕車的主要技術之一。

[9] 是 R-CNN 的主要參考論文之一,用到了 Support Vector Machine (SVM)。後續的 Fast R-CNN 與 Faster R-CNN 都往純 Deep Learning 的方向前進 [13]。


Fig. 3. Detections obtained with a single component person model [9].

-----

四、Regularization

Regularization 是解決 Over-fitting 的方法的總稱。

基本上 Over-fitting 可以說是訓練時表現很好,但實測時表現不好。好比你針對考古題練習,臨場出現其他題目你就不會了。

Weight Decay 是常用的方法 [10],另外還有 Dropout [12]。



Fig. 4. Over-fitting [10].

-----

五、Optimization

簡單說,就是讓 BP [4] 變的快一點 [11], [12]。

-----

六、Textbook

Deep Learning 這本書很好,缺點是比較難,我主要是用來找出原始論文參考。



Fig. 5a. Deep Learning [12].

-----

這本講了主要的 CNN 與 R-CNN,在我只懂 LeNet 時,幫助很大。



Fig. 5b. CNN and R-CNN [13].

-----

結論:

網路上資料很多,本文簡單從自己的學習經驗中歸納出一點心得。後續沒有持續更新的原因一方面是很忙,另一方面,看完我的文章,應該可以自己找資料、查論文了。

CNN 較新的有 ResNet 與 DenseNet,應用外,為什麼 work,背後的數學是值得思考的問題。另外,GAN 與 Reinforcement Learning 的 DQN 系列,我想網路上的資料一樣很多,有興趣者自行參考即可。

-----

References

[1] 如何自學 Deep Learning (Part 1) _ Python Hsinchu User Group (Hsinchu, Taiwan) _ Meetup
https://www.meetup.com/pythonhug/events/245852169/?_cookie-check=kiQsl8ThE-ZR3LWc

[2] 如何自學 Deep Learning (Part 2) _ Python Hsinchu User Group (Hsinchu, Taiwan) _ Meetup
https://www.meetup.com/pythonhug/events/245852186/

[3] Jobspace - 想要學習 Deep Learning 卻不知道如何入門嗎?想與人深入探討 Deep... _ Facebook
https://www.facebook.com/jobspace/posts/2033449803602303

一、CNN

[4] AI從頭學(九):Back Propagation

[5] AI從頭學(一二):LeNet

[6] AI從頭學(三0):Conv1

二、RNN

[7] 遞歸神經網路和長短期記憶模型 RNN & LSTM · 資料科學・機器・人
https://brohrer.mcknote.com/zh-Hant/how_machine_learning_works/how_rnns_lstm_work.html

[8] AI從頭學(一九):Recurrent Neural Network

 三、R-CNN

[9] AI從頭學(三三):DPM

四、Regularization

[10] AI從頭學(三二):Weight Decay

五、Optimization

[11] Ruder, Sebastian. "An overview of gradient descent optimization algorithms." arXiv preprint arXiv:1609.04747 (2016).

六、Textbook

[12] AI從頭學(一五):Deep Learning,How? 

[13] AI從頭學(一八):Convolutional Neural Network

No comments: