Thursday, July 18, 2019

深入淺出 Deep Learning(六):Optimization

深入淺出 Deep Learning(六):Optimization

2018/03/13

施工中...

-----

由於批次迭代 (Batch Gradient Descent) 把所有的資料算過一遍才會前進一步,可是當資料(訓練)非常多的時候,計算量會變成很大,所以我們會考慮使用 mini-batch 或隨機迭代。

(Stochastic Gradient Descent) 概念是把所有的訓練資料分成許多的小量資料 (mini-batch),當mini-batch的數量m=1時,即稱為 stochastic gradient descent。

現在的 SGD 一般都指 mini-batch gradient descent。

-----

BGD,全部算完更新一次,很慢。
SGD 一筆就更新一次。
mini-batch gradient descent,約 50 到 256 筆訓練資料更新一次,目前 SGD 通常指 MGD。


Momentum 是模擬物理裡動量的概念,積累之前的動量來替代真正的梯度。
Nesterov 在梯度更新時做一個校正,避免前進太快,同時提高靈敏度。

Adagrad 其實是對學習率進行了一個約束。
Adadelta 是對 Adagrad 的擴展,但是進行了計算上的簡化。
RMSprop 可以算作 Adadelta的一個特例。
Adam(Adaptive Moment Estimation)本質上是帶有動量項的 RMSprop。
Adamax 是 Adam 的一種變體,此方法對學習率的上限提供了一個更簡單的範圍。
Nadam 類似於帶有 Nesterov 動量項的 Adam。

-----

References

[4] An overview of gradient descent optimization algorithms
http://ruder.io/optimizing-gradient-descent/

[5] Deniz Yuret's Homepage  Alec Radford's animations for optimization algorithms
http://www.denizyuret.com/2015/03/alec-radfords-animations-for.html

[6] Neural Network Optimization Algorithms – Towards Data Science
https://towardsdatascience.com/neural-network-optimization-algorithms-1a44c282f61d

[7] 梯度下降优化算法综述 - CSDN博客
http://blog.csdn.net/google19890102/article/details/69942970

[8] 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
https://zhuanlan.zhihu.com/p/22252270 

[9] 一文概览深度学习中的五大正则化方法和七大优化策略 _ 机器之心
https://www.jiqizhixin.com/articles/2017-12-20

[10] SGD算法比较 – Slinuxer
https://blog.slinuxer.com/2016/09/sgd-comparison

AdaGrad, RMSProp, Adam, ND-Adam, AMSGrad - Qiita
https://qiita.com/skitaoka/items/e6afbe238cd69c899b2a

超越Adam,从适应性学习率家族出发解读ICLR 2018高分论文 _ 机器之心
https://www.jiqizhixin.com/articles/adam-iclr-2018

[] Optimization for Deep Learning Highlights in 2017
http://ruder.io/deep-learning-optimization-2017/

-----

BGD
[] 深入淺出 Deep Learning(二):LeNet & BP
http://hemingwang.blogspot.tw/2018/02/deep-learninglenet-bp.html

BGD、SGD
[] Difference between Batch Gradient Descent and Stochastic Gradient Descent
https://towardsdatascience.com/difference-between-batch-gradient-descent-and-stochastic-gradient-descent-1187f1291aa1

BGD、SGD
[] 機器學習-隨機梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent ) - 掃文資訊
https://tw.saowen.com/a/d9c6a834a8ed189a8ff7987497c4f3070e49624ecfc1fb61822b8ed19c6572d3

BGD、SGD、MGD
[] 梯度下降法-Gradient Descent « ihong學習筆記
http://ihong-blog.logdown.com/posts/418731-gradient-descent

BGD、SGD、MGD
[] 機器學習基石 學習筆記 (3):機器可以怎麼樣學習  - YC Note
http://www.ycc.idv.tw/YCNote/post/27

-----

Momentum

[] Newton's Method for Optimization - Mark Chang's Blog
https://ckmarkoh.github.io/blog/2016/01/25/optimization-method-newton/

Momentum
[] Gradient Descent With Momentum - Mark Chang's Blog
https://ckmarkoh.github.io/blog/2016/01/16/optimization-method-momentum/

Momentum
[] 路遥知马力——Momentum
https://zhuanlan.zhihu.com/p/21486826

Why Momentum Really Works
https://distill.pub/2017/momentum/


Momentum、NAG
[] Nesterov Accelerated Gradient and Momentum
https://jlmelville.github.io/mize/nesterov.html

Momentum、NAG
[] optimization - What's the difference between momentum based gradient descent, and Nesterov's accelerated gradient descent  - Cross Validated

NAG
[] 比Momentum更快:揭开Nesterov Accelerated Gradient的真面目
https://zhuanlan.zhihu.com/p/22810533

-----

Adagrad
[] Optimization Method -- Gradient Descent & AdaGrad « MARK CHANG'S BLOG
https://ckmarkoh.github.io/blog/2015/12/23/optimization-method-adagrad/

Adadelta
[] Optimization Method -- AdaDelta « MARK CHANG'S BLOG
http://cpmarkchang.logdown.com/posts/467674-optimization-method-adadelta 

RMSprop
[] 【优化算法】一文搞懂RMSProp优化算法
https://zhuanlan.zhihu.com/p/34230849 

Adam
[] Deep Learning 最优化方法之Adam - CSDN博客
https://blog.csdn.net/bvl10101111/article/details/72616516 


Incorporating Nesterov Momentum into Adam _ OpenReview
https://openreview.net/forum?id=OM0jvwB8jIp57ZJjtNEZ

AMSgrad
Adagrad、Adadelta、 RMSprop、Adam、AMSgrad
超越Adam,从适应性学习率家族出发解读ICLR 2018高分论文 _ 机器之心
https://www.jiqizhixin.com/articles/adam-iclr-2018 

On the Convergence of Adam and Beyond _ OpenReview
https://openreview.net/forum?id=ryQu7f-RZ

Adam

Adam

2019/05/27

-----



Fig. 1. Optimization [4].

-----



Fig. 2. Relation of optimization algorithms.

-----

一、AdaGrad
二、AdaDelta
三、RMSprop
四、Adam
五、AdaMax
六、NAdam

-----

References

[1] Adam
Kingma, Diederik P., and Jimmy Ba. "Adam: A method for stochastic optimization." arXiv preprint arXiv:1412.6980 (2014).

[2]

Momentum

Momentum

2019/05/27

-----

Outline

一、Batch gradient descent
二、Stochastic gradient descent
三、Mini-batch gradient descent
四、Momentum
五、NAG

-----

References

Momentum Method and Nesterov Accelerated Gradient – Konvergen – Medium
https://medium.com/konvergen/momentum-method-and-nesterov-accelerated-gradient-487ba776c987

H1 - Adam

H1 - Adam

2019/04/18

-----



Fig. Adam(圖片來源)。

-----

References

[1] Adam
Kingma, Diederik P., and Jimmy Ba. "Adam: A method for stochastic optimization." arXiv preprint arXiv:1412.6980 (2014).

[2]  Adam — latest trends in deep learning optimization

[3] What’s up with Deep Learning optimizers since Adam

[4] Adam - The Star Also Rises

-----

// Code

torch.optim.adam — PyTorch master documentation
https://pytorch.org/docs/stable/_modules/torch/optim/adam.html

G3 - Momentum

G3 - Momentum

2019/04/18

-----


Fig. Momentum(圖片來源)。

-----

References

[1] Momentum - The Star Also Rises

筆記本

筆記本

2019/02/26

AI 三部曲(深度學習:從入門到精通)

AI 三部曲(深度學習:從入門到精通)

2019/05/02

-----

前言:

本文試著整理出十篇 Deep Learning(深度學習)的論文,作為初學者進入深度學習的第一關。內容包含 CV(電腦視覺)五篇、NLP(自然語言處理)五篇。如果是完全的初學者,建議可以先看一下 AI 從頭學 [23]。

-----


Fig. Penrose Triangle(圖片來源)。

-----

Summary:

Deep Learning 兩個主要的應用領域是 CV 與 NLP。

首部曲:

CV 三個重要主題則是 CNN(卷積神經網路)、Semantic Segmentation(語意分割)、Object Detection(物件偵測)。CNN 是 Deep Learning 的基礎 [1],最重要的幾個模型是 LeNet [2]-[4]、NIN [5]、ResNet [6]-[8]。Semantic Segmentation 則以 FCN 為代表 [9]。Object Detection 則可以從 YOLOv1 開始 [10]。

NLP 建議的閱讀順序是 LSTM [11]、Seq2seq [12]、Attention [13]、ConvS2S [14]、Transformer [15]。以上是 BERT 的主要基礎,BERT 是一個 NLP 預訓練模型,於 2018 年底推出,在許多 NLP 任務中的表現都很好 [16]。

以上十篇是深度學習的基礎。另有 Optimization [17]、Regularization [18]、Normalization [19]、Semantic Segmentation [20]、Object Detection [21]、Word2vec [22] 等主題可以深入。

二部曲:

假定這十篇論文已經可以充分掌握,我推薦用 Python 實作一下 LeNet [24]。然後是三個重要主題:Regularization 如 Weight Decay 或 Dropout、Optimization 如 Momentum 或 Adam、Normalization 如 Batch 或 Layer [25]。若對 Deep Learning 有極大的興趣,可以在上述主題都熟練後,重新打一下機器學習(其實就是數學)的基礎 [26], [27]。

三部曲:

NLP 如果要徹底掌握 BERT,其實要回頭複習 NNLM、Word2vec、GloVe、fastText、ELMo、AWD-LSTM、ULMFiT、OpenAI GPT [29]。

以上主題十分龐大,建議還是以這十篇的 LeNet [2], [23] 開始。說的誇張一點,LeNet 如果搞定,Deep Learning 就可以算是掌握九成了,其他都是變化。

-----

Outline

一、CNN(卷積神經網路)的演變

◎ LeNet(The Net)
二、Regression(迴歸)
三、LeNet
四、Convolution(卷積)
五、Neuron(神經元)
六、Pooling(池化)
七、Full Connection Layer(全連接層)
八、Linearly Non-separable(線性不可分)
九、Linearly Separable(線性可分)
一0、Activation Function(激活函數)
一一、Gradient Descent(梯度下降法)
一二、 Back Propagation(反向傳播法)

◎ NIN(Network in Network)
一三、NIN(網路中的網路)
一四、1 x 1 Convolution(1x1 卷積)

◎ ResNet(Residual Net)
一五、Residual Structure(殘差結構)
一六、ResNet(殘差網路)

◎ FCN(Fully Convolutional Network)
一七、Semantic Segmentation(語意分割)
一八、FCN(全卷積網路)
一九、Up Sampling(上取樣)

◎ YOLOv1
二0、Object Detection(物件偵測)
二一、YOLO(你只能看一次)
二二、Loss Function(YOLO 的損失函數)

◎ LSTM(Long Short-Term Memory)
二三、RNN(遞迴神經網路)
二四、LSTM(長的短期記憶)

◎ Seq2seq(Sequence to Sequence)
二五、Seq2seq(序列到序列)

◎ Attention
二六、Attention(注意力)

◎ ConvS2S(Convolutional Seq2seq)
二七、ConvS2S(卷積的序列到序列)

◎ Transformer
二八、Transformer(變形金剛)
二九、Query、Key、Value
三0、Self Attention(自注意力)
三一、Qd、Ke、Ve(編碼端的 QKV)
三二、Qd、Kd、Vd(解碼端的 QKV)

-----



Fig. 1. CNN(卷積神經網路)的演變 [1]
 
-----

一、CNN(卷積神經網路)的演變

-----

正文開始之前,先說說 CNN 的歷史 [1]。

1998 的 LeNet 是第一個里程碑。簡單說就是可以辨識 0 到 9 的阿拉伯數字,並且已經用在美國的一些銀行。不過由於當然電腦運算量的限制,沈寂了一段很長的時間。

2012 的 AlexNet 是第二個重要的里程碑。今年是 2019,在這段時間內,藉著 GPU 龐大的運算能力,2013 的 ZFNet、NIN,2014 的 VGGNet、GoogLeNet,到 2015 的 ResNet,影像辨識能力一舉超越人類專家。

簡單說,ResNet = LeNet + NIN + LSTM。這四篇論文,在本篇文章中會陸續介紹。

-----

◎ LeNet(The Net)

-----

CNN是個有點複雜的概念,因此,在介紹 LeNet 之前,我們先以一個相對簡單的迴歸分析,作為熱身。

-----


Fig. 2. Regression(迴歸)[2]

-----

二、Regression(迴歸)

-----

什麼是迴歸?以圖二為例,左邊是一個線性迴歸,中間接近一個二次的拋物線,右邊是高次的曲線。

這三個模型,哪一個是對的?哪一個最好,其實沒有一定。但一般說來,我們不希望模型的誤差太大,也不希望模型太複雜,所以中間這張圖,就是一般我們所需要的。

藉由有限的資料,找出一個函數來 fit 這些資料。函數找出來以後,就可以用 x 來預測 y。比方說,預測股市(有這麼簡單嗎?哈哈)。

-----


Fig. 3. LeNet [2]。 

-----

三、LeNet

-----

圖二是個迴歸模型,可以用 x 預測 y。圖三是 LeNet,CNN 模型,可以用一張 32x32 的圖片,預測圖片的數字是 0 到 9 的機率,總和為 1。

你可以理解的是迴歸模型的輸入是一個點 x,輸出是一個 y 值。LeNet 的 輸入是 1024 個點,x0 到 x1023,輸出是一個 y 向量,y0 到 y9,y0 到 y9 的總和為 1。

丟進模型的,也沒有限定是阿拉伯數字。以圖三為例,如果你把 A 丟進訓練好的 LeNet 下去運算,你可能認為 4 的可能是是 0.1,9 的可能性是 0.1,其他的可能性均為 0,但是正規化之後,4 和 9 的可能性都是 0.5,其他還是 0。

LeNet 的結構是 輸入層、卷積層、池化層、卷積層、池化層、全連接層、全連接層、輸出層。輸入層就是 1024 個點,輸出層就是10 個 0 到 1 的實數且總和為 1。

下面繼續介紹卷積層、池化層、以及全連接層。

-----


Fig. 4. Convolution(卷積)[2]

-----

四、Convolution(卷積)

-----

卷積是什麼呢?圖四是一個平面上,或者叫空間(二維)上的卷積。

不過我們先來說一下時間上的卷積,這邊會有一點信號與系統以及數位訊號處理的觀念。

讓我們直接進入數位訊號處理。假定有一個 x + 1 的信號,與一個 x + 1 的信號(或者一個 x + 1 的信號通過一個 x + 1 的系統),兩個信號作卷積,得出來的就是一個 (x + 1)*(x + 1) 的信號,也就是 x^2 + 2x + 1 的信號。所以一維的卷積,你當成多項式相乘就可以了。

卷積的觀念從一維推廣到二維,如圖四,就是一個小矩陣通過一張較大的圖片。每一個點旁邊有八個點,共九個點。每個矩陣也有九個值,你可以想成用你的朋友來重新定義你這個人,比方說旁邊都是紅點,那你這九個人基本上就是紅,旁邊都是綠點,那你這九個人基本上就是綠、旁邊都是藍點,那你這九個人基本上就是藍。至於實際運算,可以參考一維的運算方式。

在數位信號處理上,這個 3x3 的矩陣叫做空間濾波器,不同的濾波器有不同的功能,比方說有些對垂直線敏感,有些對水平線敏感。這些都是由專家找出來的。深度學習跟數位訊號處理最大的差距,就是在深度學習中,矩陣的權重是靠資料訓練出來的。

如何訓練,後面的梯度下降法會仔細說明。

-----


Fig. 5. Neuron(神經元)[2]

-----

五、Neuron(神經元)

-----

神經元由一些元素構成,分別是輸入、權重、偏置、激活函數、輸出。

圖五可以跟圖四一起看。比方說 x11 到 x33 這九個原圖上的點,就是輸入。矩陣上的 w11 到 w33 就是對應的權重。相乘再加總之後,如果大於一個 bias(偏置,圖五漏掉了),被激活了,就繼續經過一個 activation function(激活函數)計算,然後輸出。如果沒有被激活,那輸出就是 0。常見的激活函數有 sigmoid、tanh、ReLU 等。

激活函數有一個功能是壓縮資料,另一個更重要的功能是增加模型的表現力(所以都是非線性),激活函數如何影響到神經網路,後面的線性可分與線性不可分會說明。

跟 weight 一樣,bias 也是靠訓練得到的。

-----


Fig. 6. Pooling(池化)[2]

-----

六、Pooling(池化)

-----

池化有兩個功能,一是降維(或者叫壓縮資料、減少資料),一是保留特徵。主要有最大值池化跟平均池化。

-----


Fig. 7. Full Connection Layer(全連接層)[4]

-----

七、Full Connection Layer(全連接層)

-----

經過卷積、池化、卷積、池化之後,LeNet 會有兩個全連接層。全連接層主要就是線性組合(另外還要加上激活函數的非線性)。

如果以 LeNet 為例,第一層卷積層主要功能是找出各個角度的直線,第二層卷積層則是將一些小直線拼成垂直線、水平線、斜線、或曲線。接下來的全連接層則是將第二層的物件組成一個數字。

為什麼在 CNN 前幾層會用到卷積層,而不是全連接層呢?主要是影像的特性,每個點只會跟鄰近的點有關連,跟遠方的點,基本上是不相干的。所以用一些小矩陣,把影像的特徵提取出來。

-----


Fig. 8. Linearly Non-separable(線性不可分)[4]

-----

八、Linearly Non-separable(線性不可分)

-----

圖八是一個線性不可分的例子。

-----


Fig. 9. Linearly Separable(線性可分) [4]

-----

九、Linearly Separable(線性可分)

-----

透過數層的非線性激活函數,線性不可分就變成線性可分了。

-----


Fig. 10. Activation Function(激活函數)[4]

-----

一0、Activation Function(激活函數)

-----

不同的激活函數,都有可能將線性不可分轉為線性可分。

-----


Fig. 11. Gradient Descent(梯度下降法)[2]

-----

一一、Gradient Descent(梯度下降法)

-----

接下來是深度學習的重頭戲,梯度下降法 [2]。

我們先一一由左至右解釋符號。

Wk 是本次的權重,Wk-1 是上次的權重。epsilon 是步長,偏微分符號(讀做 round),E(W) 是 error function,或者叫做 cost function,是預測值跟實際值的誤差。

利用圖二中左邊第一個點來說明。先想像你的預測值跟實際值的呈現如一座山,你想要讓誤差值變小,也就是下山,你能怎麼做?可以往右踏一步,也可以往左踏一步,如果你往左踏一步,發現高度有下降一點點,就是正確的方向,那你只要反覆一直走,就可以下山。

epsilon 就是步長,Wk-1 就是上一次的位置,Wk 就是新的位置,導數為正,斜率值大於零,表示遞增,這時你的 x 座標要減去一個正值,也就是向左移,誤差就會變小,也就是下山。

網路函數,變數為 x,常數為 w。可是當你想要調整權重,這時要固定 x。至於為何是偏微而不是常微,因為 w 有很多要調整。

這邊會有遇到局部最小值的可能,有些方法可以解決,譬如 momentum [17]。

-----


Fig. 12. Back Propagation(反向傳播法)[3]

-----

一二、 Back Propagation(反向傳播法)

-----

BP

1. S 是訓練集,有 M 個樣本。L 是總層數。o 是一個樣本,y 是該樣本 o 的值。 2. 隨機設定所有 w 和 b 的初始值。 3. 做到收斂或做到指定的次數。 4. 選擇一個小批次 O。 5. 把 O 丟進前向網路。 6. 得到 V,跟實際值 Y 有差距,為 E。 7. 將 E 代入 G。 8. 從最後一層開始往前做。 9. 計算 w 的梯度。 10. 計算 b 的梯度。 11. 更新 w。 12. 更新 b。 13. 權重轉置乘上 G 代入前一層的 E。 14. 如果不是第一層,則 15. 取激活函數 f 的微分值,與 E 做 hadamard product 再代入 G。 16. end if。 17. end for。 18. end while 19. 傳回 DNN 裡,所有層裡面的 w 和 b。 20. end procedure。

以上先簡單註解圖十二演算法二十行,再仔細說明內容。

一、背景:

反向傳播法其實就是微積分裡的 chain rule,一個函數的導數,可以分解成其隱含數導數的乘積。神經網路由於是由一連串的激活函數跟線性組合構成,所以神經網路的導數,可以分解成一連串 f' 與 w 的連續乘積 [7], [8]。

二、上標與下標:

上標 L 是代表神經網路的第 L 層,下標 t 則是代表 time,Wt 是本次的權重,Wt+1 則是更新後的權重。

三、輸出

V 是輸出,演算法第六行,因為 cost function 是 (1/2)(V - Y)^2,所以其導數是 E = V - Y。第七行的 G 則是暫存。

四、W 和 b

第九行的 W 比第十行的 b,多乘一個 V,是因為 V[l] = f(WV[l-1]+b),原本 V 是變數,但是要更新 W 和 b 時,W 和 b 變成變數,V 變成常數。以 b 為變數,WV[l-1] 是常數,在 chain rule 微分後不見了。以 W 為變數,WV[l-1] 微分後會留下 V[l-1]。

五、chain rule

第十三到第十五行,則是把導數傳到前一層,暫存的 G,乘上 f' 跟 W,即可得到前一層的導數,f' 在這邊是要利用網路裡暫存的數值,用電腦算出來的。

小結:

BP 把每層的導數 f' 跟 w 層層展開。 梯度下降法藉由調整權重讓損失函數的值朝 0 前進。損失函數 L 是 輸出 V 的函數。輸出函數 V 是激活函數 F 的函數。激活函數 F 是神經元 Z 的函數。神經元 Z 是 W X + B 的函數。以上是反向傳播。更新 W 時,變數由 X 變為 W,所以導數要多乘一個 X 項。更新 B 時,變數由 X 變為 B,不用多乘 W 跟 X,因為 W 與 X 在此都是常數,微分後就不見了!

經過層層的更新 W 和 b 的權重,最後傳回,一次更新網路。

-----

NIN(Network in Network)

-----


Fig. 13. NIN(網路中的網路)[5]

-----

一三、NIN(網路中的網路)

-----

圖十三,NIN,就是在兩個卷積層之間,再插入一個叫 MLPconv 的網路。

-----


Fig. 14. 1 x 1 Convolution(1x1 卷積) [5]

-----

一四、1 x 1 Convolution(1x1 卷積)

-----

簡單說,就是千層派的概念。64 張特徵圖,可以壓扁成 32 張特徵圖。當然,也可以擴充為 128 張特徵圖。每張新的特徵圖,都是由原來的 64 張特徵圖,以不同的權重構成,權重值?靠訓練 [5]。

這邊的 1 x 1 convolution,或稱為 conv1,其實跟我們一般概念上的 conv3  或 conv5 不同。conv3 是空間上的卷積,conv1 則是 channel 間的卷積。所謂 channel,64 張 feature maps,就是 64 個 channel,新的特徵圖上,每一個點 xij,都是不同 channel 上,所有不同的 xij 的線性組合。

精神跟空間的卷積還是一樣,平面上的像素跟鄰近的像素相關性高,channel 間的相關性,同樣位置的每一點相關性高。

Conv1 由於可以有效壓縮資料,在目前的深度學習中,已是基本配備。

-----

ResNet(Residual Net)

-----


Fig. 15. Residual Structure(殘差結構)[6]

-----

一五、Residual Structure(殘差結構)

-----

圖十五是一個殘差結構,也就是在原來的網路架構上,多加了一個 identity(或者叫 skip connection),這樣餘下的部分,就變成 F(x) 這個殘差部分。

殘差網路比原來網路的值小,所以對變化比較敏感,也比較好訓練。而從 LSTM 概念來的 identity 則可以減低深度網路梯度消失的問題 [7]。

-----


Fig. 16. ResNet(殘差網路)[6]

-----

一六、ResNet(殘差網路)

-----

截至本次更新日期,2019/07/01,《Deep residual learning for image recognition》這篇論文被引用 24409 次,獲得極大的成功。不過你大概可以說,ResNet = LeNet + NIN + LSTM。偉大的論文,有時只是很基本的元素,加上卓越的洞見。

這邊可以先簡單再回顧一下 CNN 的歷史 [1]。

1998 LeNet 是一個不錯的網路,但當時受限於計算機的運算力有限,所以網路大小也受限。
2012 AlexNet 有了 GPU 跟一些新技巧,加深了網路,大幅提升網路性能。
2013 ZFNet 微調 AlexNet,改善一點點。
2013 NIN 讓加深網路更可行。
2014 VGGNet 用兩個 conv3 組成一個 conv5,反覆加深,到 16 層結果很棒,19 比 16 好一點點,22 以上反而更差。這表示加深網路並不是萬靈丹。
2014 GoogLeNet 除了大量使用 conv1,也多了兩個輔助輸出,可以直接傳遞梯度到網路比較前面的部分。

2015 的 ResNet 跟 Highway Networks 都採用 LSTM 的 identity 概念,不過 ResNet 比較簡潔,也做了比較多實驗。結果大獲成功,陸續也有更多的變形。

不過,後續的研究,則說明,ResNet 除了可以減低梯度消失的問題,更大的可能是避免模型退化,也就是神經元無法輸出,或者兩個神經元輸出一樣 [6]。

-----

FCN(Fully Convolutional Network)

-----


Fig. 17. Semantic Segmentation(語意分割)[9]

-----

一七、Semantic Segmentation(語意分割)

-----

一般 CNN 的功能是辨識一張圖片的內容為何,譬如阿拉伯數字 0 到 9,如圖三。

FCN 則是能夠分辨到像素級別,譬如圖十七。每個屬於貓的像素,都被塗上棕色,每個屬於狗的像素,都被塗上紫色,背景則是綠色。

-----


Fig. 18. FCN(全卷積網路)[9]

-----

一八、FCN(全卷積網路)

-----

怎麼做到呢?圖十八上,在一般的 CNN 中,最後是全連接層,輸出可能是三十種類別的可能性,取最大的那個當作結果。

FCN 最後不用全連接層,基本上還是卷積層,所以最後是三十張特徵圖。每個像素穿過這三十張特徵圖,取最大值那張所屬的類別,作為此像素的類別。

-----


Fig. 19. Up Sampling(上取樣)[9]

-----

一九、Up Sampling(上取樣)

-----

由於只以最後一層的特徵圖,輪廓很模糊,所以上取樣兩次,以這三張圖加總,可以得到較清晰的輪廓。論文所做的實驗,繼續上取樣,結果不會比較好,所以上取樣只做兩次。

有關 FCN 較新的研究,可以參考 [20]。

-----

YOLOv1

-----


Fig. 20. Object Detection(物件偵測)[10]

-----

二0、Object Detection(物件偵測)

-----

一般 CNN 是辨識一張圖片的類別。Object Detection 則是可以辨識圖片內的多個物件。

以 YOLOv1 為例,他把圖片先分成 7x7 個小框框,每個小框框可以預測兩張圖(中心落在框框內),這樣最多可以預測出 98 張圖。圖二十預測了狗、腳踏車跟汽車三個物件。

-----


Fig. 21. YOLO(你只要看一次)[10]

-----

二一、YOLO(你只能看一次)

-----

圖廿一是 YOLOv1 的網路架構,最右邊是重點,輸出是 7x7x30。

也就是 49 個小框框,每個小框框預測兩張圖。每個圖有 15 個資訊,參考下一張圖的損失函數。

-----


Fig. 22. Loss Function(YOLO 的損失函數)[10]。  

-----

二二、Loss Function(YOLO 的損失函數)

-----

S × S × (B * 5 + C) tensors。

S = 7。
B = 2。
C = 20。

S = 7,7 X 7 個預測框。B = 2,每個框預測 2 個物件(屬於同一種類別)。5 分別是中心 (x, y) 與寬高 w, h,以及是物件或不是物件。然後 C = 20 是這兩個物件屬於二十種類別的 confidences。

-----

有關更多 Object Detection,可以參考 [21]。

另外補充一下,你大概可以說,YOLOv3 = YOLOv1 + ResNet + FPN,而 FPN 跟 FCN 都使用最後三層特徵圖輔助運算。

-----

LSTM(Long Short-Term Memory)

-----


Fig. 23. RNN(遞迴神經網路)[11]

-----

二三、RNN(遞迴神經網路)

-----

圖廿三是三個陽春的 RNN 單元,輸入與前一個輸出加總後,通過 tanh 再輸出。由於是時間序列,因此適合處理 speech、audio、video、text 等資料。如果你把 RNN旋轉九十度,那其實是一個很深的網路,只是每層都有輸入與輸出,不像一般 CNN,輸入跟輸出都只有一層。

-----


Fig. 24. LSTM(長的短期記憶)[11]

-----

二四、LSTM(長的短期記憶)

-----

RNN 由於有梯度消失 [7] 與梯度爆炸 [8] 等問題,因此後續又有學者提出 LSTM。大家看到 LSTM,有沒有想過,為何單元裡有三個 sigmoid 跟兩個 tanh?

其實 sigmoid 在這裡不是激活函數,而是當作類比的閘門,用來控制輸入的百分比在 0 與 1 之間,所以後續又執行乘法。至於 tanh 有兩個,只要看一下圖廿四就知道,加總後要再經過一個非線性的激活函數,進行非線性轉換,增加模型的表現能力。簡單來說,就是兩層的意思。

LSTM 之外,也有 GRU 單元,架構簡化而效能接近。

-----

Seq2seq(Sequence to Sequence)

-----


Fig. 25. Seq2seq(序列到序列)[12]

-----

二五、Seq2seq(序列到序列)

-----

Sequence to sequence,以翻譯為例,左邊的輸入是一個英文句子,右邊的輸出是一個對應的德文句子。先把英文句子轉成向量 [22] 輸入,壓縮成單一向量,再把向量解碼成德文。

這個架構也可以執行摘要的功能。只要把(英文、德文)換成(全文、摘要)即可!

-----

Attention

-----


Fig. 26. Attention(注意力)[13]

-----

二六、Attention(注意力)

-----

Seq2seq 的單一向量儲存空間有限,會損失資訊。因此 Attention 把左邊的句子壓縮成多向量,每個向量有不同的權重,權重如何得到?靠訓練。

-----

ConvS2S(Convolutional Seq2seq)

-----


Fig. 27. ConvS2S(卷積的序列到序列)[14]

-----

二七、ConvS2S(卷積的序列到序列)

-----

ConvS2S 跟下一個 Transformer 都屬於 STORM 的架構,Source Target Output Relational Model。只是 ConvS2S 使用一維的 convolution 代替 LSTM / GRU,而 Transformer 則以 self-attention 的架構,RNN 跟 CNN 都不使用。但讀者可以注意到 Transformer 裡面還是有用到 FNN 的神經網路用來升降維。

讀者若能徹底掌握 Transformer,則 ConvS2S 很容易從 Transformer 推演過來。

-----

Transformer

-----


Fig. 28. Transformer(變形金剛)[15]

-----

二八、Transformer(變形金剛)

-----

以下以英德翻譯為例,右邊 Stage3 是全部的核心。

訓練時 Qd 找到編碼端的 Ke、Ve,也找到 解碼端的 Kd、Vd,對齊後輸出需要的德文。

測試時 Qd 找到編碼端的 Ke、Ve,透過訓練好的權重,直接輸出需要的德文。

-----

圖廿八對第一次看的人應該很複雜,不過整個 Transformer 的架構確實就是如此。

分成十小節說明:

一、I/O Embedding
Word2Vec。Stage1 不管 Encoder 端的英文或者 Decoder 端的德文,都先從 one-hot 編碼轉成詞向量 [22]。

二、Positional Encoding
公式跟跟訓練結果差不多,用公式。

三、Attention
Query、Key、Value。詞向量再分解成 Q、K、V。如何分解?靠訓練出來的權重矩陣。

四、Multi-Head
套用 CNN 多個卷積核 的概念讓結果變好。

五、Masked
保持 Auto Regression,output 不考慮 i 之後字的因素。

六、Skip
ResNet(Dropout)[6]。

七、Layer Normalization
BN 每筆資料每層的某個位置正規化,LN 某筆資料某層的所有位置正規化,正規化 - 減 mean 再除以 STD [19]。

八、FNN
調整輸出跟輸入的維度 [5]。

九、Linear
打分數。

十、Softmax
是 Logistic Regression 的推廣,
資料為 0 ~ 1 之間,總和為 1 的離散機率分布。

-----


Fig. 29. Query、Key、Value [15]

-----

二九、Query、Key、Value

-----

首先透過權重矩陣把已經 embed 好的詞向量轉成 Q、K、V 三個分量。Q 跟 K 其實差不多,但概念上 Q 是變數,K 是常數,K 是位址的概念,V 是內容的概念。Qd 可以分別對應到 Ke 跟 Kd,這樣運算起來比較方便。

-----


Fig. 30. Self Attention(自注意力)[15]

-----

三0、Self Attention(自注意力)

-----

QKV:
QK 對齊(內積、餘弦相似)。(如果 LSTM 的 Attention 的話,是加法)。

Root of dk:
dk:dimension of K,避免向量的分量值透過 Logistic Regression 後都是 1 或者都是 0,造成無 attention。

-----


Fig. 31. Qd、Ke、Ve(編碼端的 QKV)[15]

-----

三一、Qd、Ke、Ve(編碼端的 QKV)

-----

Qd 找到 Ke、Ve,編碼端的英文。

-----


Fig. 32. Qd、Kd、Vd(解碼端的 QKV)[15]

-----

三二、Qd、Kd、Vd(解碼端的 QKV)

-----

Qd 找到 Kd、Vd,解碼端的德文。

-----

Conclusion

本文簡單介紹了五篇 CV 跟五篇 NLP 最重要的論文。讀者若希望有進一步的認識,CV [25] 跟 NLP [29] 都有更多介紹!

-----

AI 三部曲(深度學習:從入門到精通)

演講公告

6 月 15 日 星期六 下午兩點到五點,北科大綜合科館地下一樓 B08。
5 月 25 日 星期六 下午兩點到五點,清大風雲樓二樓靠門口處。
5 月 18 日 星期六 下午兩點到五點,開南大學卓越樓 621 室。
5 月 9 日 星期四 下午兩點二十到四點,台大明達館 223 室。

-----

References

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

[2]深入淺出 Deep Learning(二):LeNet & BP
http://hemingwang.blogspot.com/2018/02/deep-learninglenet-bp.html 

[3] AI從頭學(九):Back Propagation
http://hemingwang.blogspot.tw/2017/02/aiback-propagation.html 

[4] Math(五):Manifold
http://hemingwang.blogspot.com/2019/04/mathmanifold.html

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

[6] AI從頭學(三三):ResNet
http://hemingwang.blogspot.com/2018/09/airesnet.html

[7] Vanishing Gradient
http://hemingwang.blogspot.com/2019/05/vanishing-gradient.html

[8] Exploding Gradient
http://hemingwang.blogspot.com/2019/05/exploding-gradient.html

[9] AI從頭學(三四):FCN
http://hemingwang.blogspot.com/2018/02/deep-learningfcn.html

[10] AI從頭學(三六):YOLO v1
http://hemingwang.blogspot.com/2018/04/deep-learningyolo-v1.html

[11] NLP(一):Recurrent Neural Networks
http://hemingwang.blogspot.com/2019/01/recurrent-neural-networks.html

[12] NLP(二):Sequence to Sequence
http://hemingwang.blogspot.com/2019/01/sequence-to-sequence.html

[13] NLP(三):Attention
http://hemingwang.blogspot.com/2019/01/attention.html

[14] NLP(四):ConvS2S
https://hemingwang.blogspot.com/2019/04/convs2s.html

[15] NLP(五):Transformer
http://hemingwang.blogspot.com/2019/01/transformer.html 

[16] NLP(六):BERT Overview
https://hemingwang.blogspot.com/2019/01/bert-overview.html

-----

[17] An overview of gradient descent optimization algorithms
http://ruder.io/optimizing-gradient-descent/

[18] An Overview of Regularization Techniques in Deep Learning (with Python code)
https://www.analyticsvidhya.com/blog/2018/04/fundamentals-deep-learning-regularization-techniques/ 

[19] 深度学习中的Normalization模型 - 知乎
https://zhuanlan.zhihu.com/p/43200897

[20] 深度学习(十九)——FCN, SegNet, DeconvNet, DeepLab, ENet, GCN - antkillerfarm的专栏 - CSDN博客
https://blog.csdn.net/antkillerfarm/article/details/79524417

[21] 關於影像辨識,所有你應該知道的深度學習模型 - Steven Shen - Medium
https://medium.com/@syshen/%E7%89%A9%E9%AB%94%E5%81%B5%E6%B8%AC-object-detection-740096ec4540

[22] [NLP] 秒懂词向量Word2vec的本质 - 知乎
https://zhuanlan.zhihu.com/p/26306795

-----

[23] AI從頭學(目錄)
http://hemingwang.blogspot.com/2016/12/ai_20.html

[24] LeNet Lab(目錄)
https://hemingwang.blogspot.com/2019/04/lenet-lab.html

[25] 30 Topics for Deep Learning
http://hemingwang.blogspot.com/2019/04/30-topics-for-deep-learning.html

[26] Machine Learning
https://hemingwang.blogspot.com/2019/04/machine-learning.html

[27] Mathematics
https://hemingwang.blogspot.com/2019/04/mathematics.html

[28] Deep Learning Highlight
http://hemingwang.blogspot.com/2019/02/deep-learning-highlight.html

[29] AI Seminar(目錄)
https://hemingwang.blogspot.com/2019/01/ai-seminar.html

科中採購 - 己亥年

科中採購 - 己亥年

2019/03/20

柴胡疏肝湯
藿香正氣散
保和丸
小青龍湯

柴胡
細辛
白芷
甘草

2019/07/12

小青龍湯

跑步(二0二):20圈

跑步(二0二):20圈

2019/07/016

熱身2,跑(5*4)。

-----

基本菜單。

跑步(二0一):50圈

跑步(二0一):50圈

2019/07/09

熱身2,跑(5*10)。

-----

半馬。

跑步(二00):20圈

跑步(二00):20圈

2019/07/07

熱身2,跑(5*4)。

-----

基本菜單。

跑步(一九九):20圈

跑步(一九九):20圈

2019/07/05

熱身2,跑(5*4)。

-----

基本菜單。

深度強化學習:原理與應用

深度強化學習:原理與應用

2019/07/18

-----

Outline

一、LeNet
二、NIN
三、ResNet
四、Music Physiology
五、Insomnia Market
六、DQN

-----


Fig. 1. LeNet [1]。

-----

一、LeNet

Convolutional Neural Network(CNN、卷積神經網路)是當代深度學習的核心部分之一。透過卷積層萃取特徵、池化層減少冗餘、全連接層選取組成。神經網路可以成功辨識 0 到 9 的手寫阿拉伯數字,並成功應用於美國部分的銀行支票系統。這是 Yann LeCun 在 1998 年發表的研究。

-----


Fig. 2. NIN [1]。

-----

二、NIN

在 2013 年,GPU 已經成功應用於深度學習。運算量雖然提高,然而龐大數據資料集與深層網路的運算需求也是大幅提升。Network in Network 提出了 1x1 convolution 的架構,利用不同 feature maps 但同一個像素位置的高關連性,成功地縮減(或增加)channel 的數量。此項技巧成為深度學習的必備工具。

-----


Fig. 3. ResNet [3]。

-----

三、ResNet

2014 年的 VGGNet 透過反覆加深網路,獲得相當好的成果。不過模型從十六層到十九層只提升一點點,繼續加深則效果反而變差。2015 的 ResNet 透過增加 identity,強制讓網路變成殘差,成功地讓模型可以加深到一百層以上。殘差網路因而成為目前 CNN 的標準。

-----


Fig. 4. Music Physiology [2]。

-----

四、Music Physiology

圖四是音樂生理學的架構,綠色部分代表音樂,白色部分代表生理訊號。假定我們可以從音樂信號特徵跟生理資料特徵之間建立起對應關係,則可以透過音樂調整人們的生理狀態,例如激動或放鬆。

-----


Fig. 5. The $1.5 billion U.S. insomnia market (2014)[2]。

-----

五、Insomnia Market

以放鬆為例,2014 年美國安眠藥市場是 US$ 1.5 billion。音樂當然不能完全取代安眠藥,不過音樂的好處是沒有副作用,另外也帶有娛樂的效果。目前醫療用穿戴式裝置並沒有很成功,其中一個是無聊,另一個是沒有 solution。Deep Sleep [2] 成功克服這兩件事。

-----


Fig. 6. DQN [2].

-----

六、DQN

目前市面上有不少音樂或產品號稱可以有效對治失眠。其中一個問題是,沒有客觀的量化數據,另一個問題是個人使用,也沒有應用大數據。還有一個問題可能是一成不變。Deep Sleep [2] 的概念是:透過生理信號量化放鬆的程度,再依此放鬆程度找出當下最適合的音樂。以電玩 AI 為例,ECG 對應到遊戲畫面,HRV 對應到遊戲分數,音樂對應到按鍵。電玩的概念是透過合適的按鍵讓電玩分數提高。Deep Sleep 的概念是透過合適的音樂讓 HRV 的放鬆程度提高。

-----

結論:

-----

References

[1] AI 三部曲(深度學習:從入門到精通)
https://hemingwang.blogspot.com/2019/05/trilogy.html

[2] AI創業日記(七):Deep Sleep
https://hemingwang.blogspot.com/2018/09/aideep-sleep.html

Monday, July 15, 2019

習近平

習近平

2019/05/24

-----


Fig. 1. Xi Jinping [1]。

-----

冥=asc

「在 1983 年嚴打中,正定縣也舉行公審公判活動。期間,習近平被《紐約時報》認為在正定縣內執行了嚴厲及不人道的計劃生育政策:有 3.1 萬名婦女做了絕育手術,3 萬人安裝了宮內絕育工具,而這個縣人口為 40 萬。83 年底,不足 30 歲的習近平升任並成為正定縣最年輕的縣委書記。」






-----

毛澤東

甲丁甲癸
辰酉子巳

-----

習近平

X丁戊癸
X酉午巳

疑似丙午時。
// 逛網隨想 @ 命理好手的網路日誌   痞客邦

丙辛年交運

64544434241404
辛壬癸甲乙丙丁
亥子丑寅卯辰巳

2019 己亥年,67 歲,辛運。
2020 庚子年,68 歲,辛運。

-----

川普

X己甲丙
X未午戌

甲己年交運

69594939291909
辛庚己戊丁丙乙
丑子亥戌酉申未

2019 己亥年,74 歲,丑運。
2020 庚子年,75 歲,丑運。

-----

References

[1] Xi Jinping - Wikipedia
https://en.wikipedia.org/wiki/Xi_Jinping

[2] 習近平 - Wikipedia
https://ja.wikipedia.org/wiki/%E7%BF%92%E8%BF%91%E5%B9%B3

[3] 習近平 - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/%E4%B9%A0%E8%BF%91%E5%B9%B3

[4] 時事述評: 習近平夫婦與毛澤東夫婦的驚人相似預示著什麽? 
https://zh.wenxuecity.com/bbs/currentevent/1678862.html 

[5] 逛網隨想 @ 命理好手的網路日誌   痞客邦
http://yihjung.pixnet.net/blog/post/161983496

Deep Learning Highlight

Deep Learning Highlight

2019/04/25

說明:

本文件整理了一百篇以上的論文。如果需要三十篇的簡易版本,請參考 [3]。如果需要更簡單的版本,請參考 [1]。

如果需要三篇最重要的,是 ResNetYOLOv3BERT

如果需要三篇最基礎的,是 LeNetYOLOv1LSTM

-----

2019/06/27 新增模型退化四篇。
2019/07/15 新增 ON-LSTM 與 XLNet。

-----


Fig. 1. 深度學習: Caffe 之經典模型詳解與實戰 [1]。

-----

符號說明:

# basic
// advanced

-----

Paper

Part I - CNN

#A1 LeNet
LeCun, Yann, et al. "Gradient-based learning applied to document recognition." Proceedings of the IEEE 86.11 (1998): 2278-2324.
http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf

// PreVGGNet
Ciresan, Dan C., et al. "Flexible, high performance convolutional neural networks for image classification." IJCAI Proceedings-International Joint Conference on Artificial Intelligence. Vol. 22. No. 1. 2011.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.481.4406&rep=rep1&type=pdf

#A2 AlexNet
Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "Imagenet classification with deep convolutional neural networks." Advances in neural information processing systems. 2012.
http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

// ZFNet
Zeiler, Matthew D., and Rob Fergus. "Visualizing and understanding convolutional networks." European conference on computer vision. Springer, Cham, 2014.
https://arxiv.org/pdf/1311.2901.pdf

#A3 NIN
Lin, Min, Qiang Chen, and Shuicheng Yan. "Network in network." arXiv preprint arXiv:1312.4400 (2013).
https://arxiv.org/pdf/1312.4400.pdf

#A4 GoogLeNet
Szegedy, Christian, et al. "Going deeper with convolutions." Proceedings of the IEEE conference on computer vision and pattern recognition. 2015.
http://openaccess.thecvf.com/content_cvpr_2015/papers/Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf

#A5 VGGNet
Simonyan, Karen, and Andrew Zisserman. "Very deep convolutional networks for large-scale image recognition." arXiv preprint arXiv:1409.1556 (2014).
https://arxiv.org/pdf/1409.1556/

#A6 HighwayNet
Srivastava, Rupesh Kumar, Klaus Greff, and Jürgen Schmidhuber. "Highway networks." arXiv preprint arXiv:1505.00387 (2015).
https://arxiv.org/pdf/1505.00387.pdf
 
#A7 ResNet
He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
http://openaccess.thecvf.com/content_cvpr_2016/papers/He_Deep_Residual_Learning_CVPR_2016_paper.pdf

// SqueezeNet
Iandola, Forrest N., et al. "SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 0.5 MB model size." arXiv preprint arXiv:1602.07360 (2016).
https://arxiv.org/pdf/1602.07360.pdf

// ResNet v2
He, Kaiming, et al. "Identity mappings in deep residual networks." European Conference on Computer Vision. Springer, Cham, 2016.
https://arxiv.org/pdf/1603.05027.pdf 

// ResNet Theory
Eldan, Ronen, and Ohad Shamir. "The power of depth for feedforward neural networks." Conference on Learning Theory. 2016.
http://proceedings.mlr.press/v49/eldan16.pdf

// DenseNet
Huang, Gao, et al. "Densely connected convolutional networks." Proceedings of the IEEE conference on computer vision and pattern recognition. Vol. 1. No. 2. 2017.
http://openaccess.thecvf.com/content_cvpr_2017/papers/Huang_Densely_Connected_Convolutional_CVPR_2017_paper.pdf

// DPN
Chen, Yunpeng, et al. "Dual path networks." Advances in Neural Information Processing Systems. 2017.
https://papers.nips.cc/paper/7033-dual-path-networks.pdf

// Inception v3
Szegedy, Christian, et al. "Rethinking the inception architecture for computer vision." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.
https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Szegedy_Rethinking_the_Inception_CVPR_2016_paper.pdf

// Inception v4
Szegedy, Christian, et al. "Inception-v4, inception-resnet and the impact of residual connections on learning." AAAI. Vol. 4. 2017.
http://www.aaai.org/ocs/index.php/AAAI/AAAI17/paper/download/14806/14311

// 模型退化
Orhan, A. Emin, and Xaq Pitkow. "Skip connections eliminate singularities." arXiv preprint arXiv:1701.09175 (2017).
https://arxiv.org/pdf/1701.09175.pdf

// 模型退化
Shang, Wenling, et al. "Understanding and improving convolutional neural networks via concatenated rectified linear units." international conference on machine learning. 2016.
http://proceedings.mlr.press/v48/shang16.pdf

// 模型退化
Greff, Klaus, Rupesh K. Srivastava, and Jürgen Schmidhuber. "Highway and residual networks learn unrolled iterative estimation." arXiv preprint arXiv:1612.07771 (2016).
https://arxiv.org/pdf/1612.07771.pdf

// 模型退化
Jastrzębski, Stanisław, et al. "Residual connections encourage iterative inference." arXiv preprint arXiv:1710.04773 (2017).
https://arxiv.org/pdf/1710.04773.pdf

// EfficientNet
Tan, Mingxing, and Quoc V. Le. "EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks." arXiv preprint arXiv:1905.11946 (2019).
https://arxiv.org/pdf/1905.11946.pdf
 
-----

#A8 FCN
Long, Jonathan, Evan Shelhamer, and Trevor Darrell. "Fully convolutional networks for semantic segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2015.
https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Long_Fully_Convolutional_Networks_2015_CVPR_paper.pdf

// DeepLab v2
Chen, Liang-Chieh, et al. "Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs." arXiv preprint arXiv:1606.00915 (2016).
https://arxiv.org/pdf/1606.00915.pdf 

// DeepLab v3
Chen, Liang-Chieh, et al. "Rethinking atrous convolution for semantic image segmentation." arXiv preprint arXiv:1706.05587 (2017).
https://arxiv.org/pdf/1706.05587.pdf  

-----

Part II - Object Detection

// DPM
Felzenszwalb, Pedro F., et al. "Object detection with discriminatively trained part-based models." IEEE transactions on pattern analysis and machine intelligence 32.9 (2010): 1627-1645.
http://vc.cs.nthu.edu.tw/home/paper/codfiles/vclab/201402141243/Object-Detection-with-Discriminatively-Trained-Part-Based-Models.pdf

// SS
Uijlings, Jasper RR, et al. "Selective search for object recognition." International journal of computer vision 104.2 (2013): 154-171.
https://ivi.fnwi.uva.nl/isis/publications/2013/UijlingsIJCV2013/UijlingsIJCV2013.pdf

// R-CNN
Girshick, Ross, et al. "Rich feature hierarchies for accurate object detection and semantic segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.
https://www.cv-foundation.org/openaccess/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf?spm=5176.100239.blogcont55892.8.pm8zm1&file=Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf

// SPPNet
He, Kaiming, et al. "Spatial pyramid pooling in deep convolutional networks for visual recognition." european conference on computer vision. Springer, Cham, 2014.
https://arxiv.org/pdf/1406.4729.pdf
 
// Fast R-CNN
Girshick, Ross. "Fast R-CNN." Proceedings of the IEEE international conference on computer vision. 2015.
http://openaccess.thecvf.com/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf

#B1 YOLO v1
Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.
https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf

#B2 Faster R-CNN
Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time object detection with region proposal networks." Advances in neural information processing systems. 2015.
http://papers.nips.cc/paper/5638-faster-r-cnn-towards-real-time-object-detection-with-region-proposal-networks.pdf

#B3 SSD
Liu, Wei, et al. "SSD: Single shot multibox detector." European conference on computer vision. Springer, Cham, 2016.
https://arxiv.org/pdf/1512.02325.pdf

#B4 YOLO v2
Redmon, Joseph, and Ali Farhadi. "YOLO9000: better, faster, stronger." arXiv preprint (2017).

#B5 FPN
Lin, Tsung-Yi, et al. "Feature pyramid networks for object detection." CVPR. Vol. 1. No. 2. 2017.
http://openaccess.thecvf.com/content_cvpr_2017/papers/Lin_Feature_Pyramid_Networks_CVPR_2017_paper.pdf

#B6 RetinaNet  
Lin, Tsung-Yi, et al. "Focal loss for dense object detection." IEEE transactions on pattern analysis and machine intelligence (2018).
https://vision.cornell.edu/se3/wp-content/uploads/2017/09/focal_loss.pdf
https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8417976

#B7 YOLO v3
YOLOv3: An Incremental Improvement
https://pjreddie.com/media/files/papers/YOLOv3.pdf

#B8 Mask R-CNN
He, Kaiming, et al. "Mask r-cnn." Computer Vision (ICCV), 2017 IEEE International Conference on. IEEE, 2017.
http://openaccess.thecvf.com/content_ICCV_2017/papers/He_Mask_R-CNN_ICCV_2017_paper.pdf
 
// CornerNet
Law, Hei, and Jia Deng. "Cornernet: Detecting objects as paired keypoints." Proceedings of the European Conference on Computer Vision (ECCV). 2018.
http://openaccess.thecvf.com/content_ECCV_2018/papers/Hei_Law_CornerNet_Detecting_Objects_ECCV_2018_paper.pdf
 
// CenterNet
Duan, Kaiwen, et al. "CenterNet: Object Detection with Keypoint Triplets." arXiv preprint arXiv:1904.08189 (2019).
https://arxiv.org/pdf/1904.08189.pdf
 
-----

Part III - Fundamental Topics

#C1 Dropout
Srivastava, Nitish, et al. "Dropout: a simple way to prevent neural networks from overfitting." The Journal of Machine Learning Research 15.1 (2014): 1929-1958.
http://www.jmlr.org/papers/volume15/srivastava14a/srivastava14a.pdf

// DropConnect
Wan, Li, et al. "Regularization of neural networks using dropconnect." International conference on machine learning. 2013.
http://proceedings.mlr.press/v28/wan13.pdf 

// Weight Decay Original
Hanson, Stephen José, and Lorien Y. Pratt. "Comparing biases for minimal network construction with back-propagation." Advances in neural information processing systems. 1989.
http://papers.nips.cc/paper/156-comparing-biases-for-minimal-network-construction-with-back-propagation.pdf

#C2 Weight Decay
Loshchilov, Ilya, and Frank Hutter. "Fixing weight decay regularization in adam." arXiv preprint arXiv:1711.05101 (2017).
https://arxiv.org/pdf/1711.05101.pdf

// SGD
Bottou, Léon. "Stochastic gradient descent tricks." Neural networks: Tricks of the trade. Springer, Berlin, Heidelberg, 2012. 421-436.
https://www.microsoft.com/en-us/research/wp-content/uploads/2012/01/tricks-2012.pdf 

#C3 Momentum
Sutskever, Ilya, et al. "On the importance of initialization and momentum in deep learning." International conference on machine learning. 2013.
http://proceedings.mlr.press/v28/sutskever13.pdf

// NAG
Sutskever, Ilya, et al. "On the importance of initialization and momentum in deep learning." International conference on machine learning. 2013.
http://www.cs.toronto.edu/~fritz/absps/momentum.pdf
 
// Adagrad
Duchi, John, Elad Hazan, and Yoram Singer. "Adaptive subgradient methods for online learning and stochastic optimization." Journal of Machine Learning Research 12.Jul (2011): 2121-2159.
http://www.jmlr.org/papers/volume12/duchi11a/duchi11a.pdf
  
// Adadelta
Zeiler, Matthew D. "ADADELTA: an adaptive learning rate method." arXiv preprint arXiv:1212.5701 (2012).
https://arxiv.org/pdf/1212.5701.pdf

// RMSprop
Tieleman, Tijmen, and Geoffrey Hinton. "Lecture 6.5-rmsprop: Divide the gradient by a running average of its recent magnitude." COURSERA: Neural networks for machine learning 4.2 (2012): 26-31.
http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf

#C4 Adam
Kingma, Diederik P., and Jimmy Ba. "Adam: A method for stochastic optimization." arXiv preprint arXiv:1412.6980 (2014).
https://arxiv.org/pdf/1412.6980.pdf

// Nadam
Dozat, Timothy. "Incorporating nesterov momentum into adam." (2016).
https://openreview.net/pdf?id=OM0jvwB8jIp57ZJjtNEZ

// AMSgrad
Reddi, Sashank J., Satyen Kale, and Sanjiv Kumar. "On the convergence of adam and beyond." International Conference on Learning Representations. 2018.
http://www.satyenkale.com/papers/amsgrad.pdf

#C5 Batch Normalization
Ioffe, Sergey, and Christian Szegedy. "Batch normalization: Accelerating deep network training by reducing internal covariate shift." International conference on machine learning. 2015.
http://proceedings.mlr.press/v37/ioffe15.pdf

// Weight Normalization
Salimans, Tim, and Durk P. Kingma. "Weight normalization: A simple reparameterization to accelerate training of deep neural networks." Advances in Neural Information Processing Systems. 2016.
https://papers.nips.cc/paper/6114-weight-normalization-a-simple-reparameterization-to-accelerate-training-of-deep-neural-networks.pdf
 
#C6 Layer Normalization
Ba, Jimmy Lei, Jamie Ryan Kiros, and Geoffrey E. Hinton. "Layer normalization." arXiv preprint arXiv:1607.06450 (2016).
https://arxiv.org/pdf/1607.06450.pdf

// Instance Normalization
Ulyanov, Dmitry, Andrea Vedaldi, and Victor Lempitsky. "Instance normalization: The missing ingredient for fast stylization." arXiv preprint arXiv:1607.08022 (2016).
https://arxiv.org/pdf/1607.08022.pdf

// Group Normalization
Wu, Yuxin, and Kaiming He. "Group normalization." Proceedings of the European Conference on Computer Vision (ECCV). 2018.
http://openaccess.thecvf.com/content_ECCV_2018/papers/Yuxin_Wu_Group_Normalization_ECCV_2018_paper.pdf

#C7 Activation Function
Ramachandran, Prajit, Barret Zoph, and Quoc V. Le. "Searching for activation functions." arXiv preprint arXiv:1710.05941 (2017).
https://arxiv.org/pdf/1710.05941.pdf

#C8 Back Propagation
Alber, Maximilian, et al. "Backprop evolution." arXiv preprint arXiv:1808.02822 (2018).
https://arxiv.org/pdf/1808.02822.pdf

-----

Part IV - NLP 1

#D1 LSTM
Hochreiter, Sepp, and Jürgen Schmidhuber. "Long short-term memory." Neural computation 9.8 (1997): 1735-1780.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.676.4320&rep=rep1&type=pdf

#D2 Seq2seq - using LSTM
Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le. "Sequence to sequence learning with neural networks." Advances in neural information processing systems. 2014.
http://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf 

#D3 Attention - using GRU
Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. "Neural machine translation by jointly learning to align and translate." arXiv preprint arXiv:1409.0473 (2014).
https://arxiv.org/pdf/1409.0473.pdf

#D4 ConvS2S
Gehring, Jonas, et al. "Convolutional sequence to sequence learning." Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017.
https://arxiv.org/pdf/1705.03122.pdf

#D5 Transformer
Vaswani, Ashish, et al. "Attention is all you need." Advances in Neural Information Processing Systems. 2017.
https://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf

#D6 BERT
Devlin, Jacob, et al. "Bert: Pre-training of deep bidirectional transformers for language understanding." arXiv preprint arXiv:1810.04805 (2018).
https://arxiv.org/pdf/1810.04805.pdf

#D7 NNLM
Bengio, Yoshua, et al. "A neural probabilistic language model." Journal of machine learning research 3.Feb (2003): 1137-1155.
http://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf

// MTL 0
Baxter, Jonathan. "A model of inductive bias learning." Journal of artificial intelligence research 12 (2000): 149-198.
https://arxiv.org/pdf/1106.0245.pdf
  
// MTL 1
Collobert, Ronan, and Jason Weston. "A unified architecture for natural language processing: Deep neural networks with multitask learning." Proceedings of the 25th international conference on Machine learning. ACM, 2008.
http://www.thespermwhale.com/jaseweston/papers/unified_nlp.pdf

// MTL 2
Collobert, Ronan, et al. "Natural language processing (almost) from scratch." Journal of machine learning research 12.Aug (2011): 2493-2537.
http://www.jmlr.org/papers/volume12/collobert11a/collobert11a.pdf

// MTL3
Ruder, Sebastian. "An overview of multi-task learning in deep neural networks." arXiv preprint arXiv:1706.05098 (2017).
https://arxiv.org/pdf/1706.05098.pdf

#D8 Word2vec
Mikolov, Tomas, et al. "Efficient estimation of word representations in vector space." arXiv preprint arXiv:1301.3781 (2013).
https://arxiv.org/pdf/1301.3781.pdf

// Hierarchical Softmax and Negative Sampling
Mikolov, Tomas, et al. "Distributed representations of words and phrases and their compositionality." Advances in neural information processing systems. 2013.
https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf

// Doc2vec
Le, Quoc, and Tomas Mikolov. "Distributed representations of sentences and documents." International conference on machine learning. 2014.
http://proceedings.mlr.press/v32/le14.pdf

// Word2vec Explained
Goldberg, Yoav, and Omer Levy. "word2vec Explained: deriving Mikolov et al.'s negative-sampling word-embedding method." arXiv preprint arXiv:1402.3722 (2014).
https://arxiv.org/pdf/1402.3722.pdf

// Word2vec Learning
Rong, Xin. "word2vec parameter learning explained." arXiv preprint arXiv:1411.2738 (2014).
https://arxiv.org/pdf/1411.2738.pdf

-----

Part V - NLP 2

#E1 GloVe
Pennington, Jeffrey, Richard Socher, and Christopher Manning. "Glove: Global vectors for word representation." Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014.
https://www.aclweb.org/anthology/D14-1162

#E2 fastText
Joulin, Armand, et al. "Bag of tricks for efficient text classification." arXiv preprint arXiv:1607.01759 (2016).
https://arxiv.org/pdf/1607.01759.pdf

#E3 ELMo
Peters, Matthew E., et al. "Deep contextualized word representations." arXiv preprint arXiv:1802.05365 (2018).
https://arxiv.org/pdf/1802.05365.pdf 

#E4 AWD-LSTM
Merity, Stephen, Nitish Shirish Keskar, and Richard Socher. "Regularizing and optimizing LSTM language models." arXiv preprint arXiv:1708.02182 (2017).
https://arxiv.org/pdf/1708.02182.pdf

#E5 ULMFiT
Howard, Jeremy, and Sebastian Ruder. "Universal language model fine-tuning for text classification." arXiv preprint arXiv:1801.06146 (2018).
https://arxiv.org/pdf/1801.06146.pdf

#E6 Skip-Thought
Kiros, Ryan, et al. "Skip-thought vectors." Advances in neural information processing systems. 2015.
https://papers.nips.cc/paper/5950-skip-thought-vectors.pdf

#E7 Quick-Thought
Logeswaran, Lajanugen, and Honglak Lee. "An efficient framework for learning sentence representations." arXiv preprint arXiv:1803.02893 (2018).
https://arxiv.org/pdf/1803.02893.pdf

#E8 InferSent
Conneau, Alexis, et al. "Supervised learning of universal sentence representations from natural language inference data." arXiv preprint arXiv:1705.02364 (2017).
https://arxiv.org/pdf/1705.02364.pdf

-----

Part VI - NLP 3

#F1 OpenAI GPT
Radford, Alec, et al. "Improving language understanding by generative pre-training." URL https://s3-us-west-2. amazonaws. com/openai-assets/research-covers/languageunsupervised/language understanding paper. pdf (2018).
https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf 
 
#F2 Universal Transformers
Dehghani, Mostafa, et al. "Universal transformers." arXiv preprint arXiv:1807.03819 (2018).
https://arxiv.org/pdf/1807.03819.pdf

#F3 Transformer XL
Dai, Zihang, et al. "Transformer-xl: Attentive language models beyond a fixed-length context." arXiv preprint arXiv:1901.02860 (2019).
https://arxiv.org/pdf/1901.02860.pdf
 
#F4 MT-DNN
Liu, Xiaodong, et al. "Multi-Task Deep Neural Networks for Natural Language Understanding." arXiv preprint arXiv:1901.11504 (2019).
https://arxiv.org/pdf/1901.11504.pdf

#F5 GPT-2
Vig, Jesse. "Visualizing Attention in Transformer-Based Language models." arXiv preprint arXiv:1904.02679 (2019).
https://arxiv.org/pdf/1904.02679.pdf

// ERNIE Baidu
Sun, Yu, et al. "ERNIE: Enhanced Representation through Knowledge Integration." arXiv preprint arXiv:1904.09223 (2019).
https://arxiv.org/pdf/1904.09223.pdf

// ERNIE THU
Zhang, Zhengyan, et al. "ERNIE: Enhanced Language Representation with Informative Entities." arXiv preprint arXiv:1905.07129 (2019).
https://arxiv.org/pdf/1905.07129.pdf

// XLMs Facebook
Lample, Guillaume, and Alexis Conneau. "Cross-lingual Language Model Pretraining." arXiv preprint arXiv:1901.07291 (2019).
https://arxiv.org/pdf/1901.07291.pdf

// LASER Facebook
Artetxe, Mikel, and Holger Schwenk. "Massively Multilingual Sentence Embeddings for Zero-Shot Cross-Lingual Transfer and Beyond." arXiv preprint arXiv:1812.10464 (2018).
https://arxiv.org/pdf/1812.10464.pdf

// MASS Microsoft
Song, Kaitao, et al. "Mass: Masked sequence to sequence pre-training for language generation." arXiv preprint arXiv:1905.02450 (2019).
https://arxiv.org/pdf/1905.02450.pdf

// UNILM Microsoft
Dong, Li, et al. "Unified Language Model Pre-training for Natural Language Understanding and Generation." arXiv preprint arXiv:1905.03197 (2019).
https://arxiv.org/pdf/1905.03197.pdf

// ON-LSTM
Shen, Yikang, et al. "Ordered neurons: Integrating tree structures into recurrent neural networks." arXiv preprint arXiv:1810.09536 (2018).
https://arxiv.org/pdf/1810.09536.pdf

// XLNet
Yang, Zhilin, et al. "XLNet: Generalized Autoregressive Pretraining for Language Understanding." arXiv preprint arXiv:1906.08237 (2019).
https://arxiv.org/pdf/1906.08237.pdf
 
-----

References

[1] 書名:深度學習: Caffe 之經典模型詳解與實戰,ISBN:7121301180,作者:樂毅,出版社:電子工業,出版日期:2016-09-30.

[2] Understanding LSTM Networks -- colah's blog
http://colah.github.io/posts/2015-08-Understanding-LSTMs/ 

[3] 30 Topics for Deep Learning
http://hemingwang.blogspot.com/2019/04/30-topics-for-deep-learning.html