Wednesday, November 22, 2017

AI 從頭學(三八):Highlight

AI 從頭學(三八):Highlight

2017/09/05

1. 最基本的
1.1 CNN
1.2 RNN
1.3 Overview
1.4 ML

2. CNN 的應用
2.1 R-CNN
2.2 GAN

3. Reinforcement Learning 強化學習
3.1 Game
3.2 Go

4. RNN的應用
4.1 NTM

5. 正規化與最佳化
5.1 Regularization
5.2 Optimization

6. 自編碼器與受限玻爾茲曼機
6.1 AE
6.2 RBM

7. 各種應用
7.1 Robotics
7.2 Fintech

-----


-----

1.1 CNN

◎ LeNet。第一個「成功」應用於 MNIST 手寫字元集的 CNN。
LeCun, Yann, et al. "Gradient-based learning applied to document recognition." Proceedings of the IEEE 86.11 (1998): 2278-2324.

◎ AlexNet 跟 VGGNet 都引用的論文。第一篇使用 GPU 的 CNN?本篇加寬失敗,VGGNet 加深成功。
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.

◎ AlexNet
Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "Imagenet classification with deep convolutional neural networks." Advances in neural information processing systems. 2012.

◎ ZFNet。微調 AlexNet 的參數。特徵可視化。
Zeiler, Matthew D., and Rob Fergus. "Visualizing and understanding convolutional networks." European conference on computer vision. Springer, Cham, 2014.

◎ VGGNet。conv5 分解成兩個 conv3,然後不斷加深。
Simonyan, Karen, and Andrew Zisserman. "Very deep convolutional networks for large-scale image recognition." arXiv preprint arXiv:1409.1556 (2014).

◎ NIN。GoogLeNet 的靈感來源。1 x 1 convolution。
Lin, Min, Qiang Chen, and Shuicheng Yan. "Network in network." arXiv preprint arXiv:1312.4400 (2013).

◎ GoogLeNet 的架構,Inception 的靈感來源。
Arora, Sanjeev, et al. "Provable bounds for learning some deep representations." International Conference on Machine Learning. 2014.

◎ GoogLeNet。
Szegedy, Christian, et al. "Going deeper with convolutions." Proceedings of the IEEE conference on computer vision and pattern recognition. 2015.

◎ GoogLeNet 系列。Inception v2。BN。
Ioffe, Sergey, and Christian Szegedy. "Batch normalization: Accelerating deep network training by reducing internal covariate shift." International Conference on Machine Learning. 2015.
 
◎ GoogLeNet 系列。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.

◎ GoogLeNet 系列。Inception v4。結合 ResNet。
Szegedy, Christian, et al. "Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning." AAAI. 2017.

◎ 太深了梯度傳不下去於是有了 highway
Srivastava, Rupesh Kumar, Klaus Greff, and Jürgen Schmidhuber. "Highway networks." arXiv preprint arXiv:1505.00387 (2015).

◎ ResNet。繼承 VGGNet 的架構。
He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.
 
◎ ResNet 的理論基礎。
He, Kaiming, et al. "Identity mappings in deep residual networks." European Conference on Computer Vision. Springer International Publishing, 2016.

◎ DenseNet。
Huang, Gao, et al. "Densely connected convolutional networks." arXiv preprint arXiv:1608.06993 (2016).

-----

1.2 RNN

◎ LSTM
Hochreiter, Sepp, and Jürgen Schmidhuber. "Long short-term memory." Neural computation 9.8 (1997): 1735-1780.
 
-----

1.3 Overview

◎ 如果你懂 CNN 與 RNN 之後,這篇可以看一下。如果不懂,還是可以看,領略一下 Deep Learning 在應用面的「威力」。
LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. "Deep learning." Nature 521.7553 (2015): 436-444.

◎ 這本「很棒」,也「有點難」。讀論文的時候,可以來參考相關的章節。
Goodfellow, Ian, Yoshua Bengio, and Aaron Courville. Deep learning. MIT press, 2016.

◎ 偏「歷史性」的回顧。不過如果你不懂 CNN、RNN 等,會不知所云。
Schmidhuber, Jürgen. "Deep learning in neural networks: An overview." Neural networks 61 (2015): 85-117.

-----

1.4 ML

◎ Top 10
Wu, Xindong, et al. "Top 10 algorithms in data mining." Knowledge and information systems 14.1 (2008): 1-37.

◎ Hot
Chen, Tianqi, and Carlos Guestrin. "XGBoost: A scalable tree boosting system." Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining. ACM, 2016.

----

2.1. R-CNN

◎ Pilot of R-CNN。
Szegedy, Christian, Alexander Toshev, and Dumitru Erhan. "Deep neural networks for object detection." Advances in neural information processing systems. 2013.

◎ 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.

◎ Fast R-CNN。
Girshick, Ross. "Fast R-CNN." Proceedings of the IEEE international conference on computer vision. 2015.

◎ 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.

◎ YOLO。
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.

◎ SSD。
Liu, Wei, et al. "SSD: Single shot multibox detector." European conference on computer vision. Springer, Cham, 2016.

◎ Mask R-CNN。
He, Kaiming, et al. "Mask R-CNN." arXiv preprint arXiv:1703.06870 (2017).

-----

2.2 GAN

◎ GAN。
Goodfellow, Ian, et al. "Generative adversarial nets." Advances in neural information processing systems. 2014.

◎ Wasserstein GAN - 1。
Arjovsky, Martin, and Léon Bottou. "Towards principled methods for training generative adversarial networks." arXiv preprint arXiv:1701.04862 (2017).

◎ Wasserstein GAN - 2。
Arjovsky, Martin, Soumith Chintala, and Léon Bottou. "Wasserstein gan." arXiv preprint arXiv:1701.07875 (2017).

◎ Wasserstein GAN - 3。
Gulrajani, Ishaan, et al. "Improved training of wasserstein gans." arXiv preprint arXiv:1704.00028 (2017).


Creswell, Antonia, et al. "Generative Adversarial Networks: An Overview." arXiv preprint arXiv:1710.07035 (2017).


Wang, Kunfeng, et al. "Generative adversarial networks: introduction and outlook." IEEE/CAA Journal of Automatica Sinica 4.4 (2017): 588-598.


How Generative Adversarial Nets and its variants Work: An Overview of GAN
https://arxiv.org/pdf/1711.05914.pdf

-----

3. Reinforcement Learning

◎ RL 的經典書。
Sutton, Richard S., and Andrew G. Barto. Reinforcement learning: An introduction. (2016): 424.
http://incompleteideas.net/sutton/book/bookdraft2016sep.pdf

-----

3.1 Game

◎ DQN
Mnih, Volodymyr, et al. "Human-level control through deep reinforcement learning." Nature 518.7540 (2015): 529-533.

◎ A3C 
Mnih, Volodymyr, et al. "Asynchronous methods for deep reinforcement learning." International Conference on Machine Learning. 2016.

◎ UNREAL
Jaderberg, Max, et al. "Reinforcement learning with unsupervised auxiliary tasks." arXiv preprint arXiv:1611.05397 (2016).

-----

3.2 Go

◎ 1994
Schraudolph, Nicol N., Peter Dayan, and Terrence J. Sejnowski. "Temporal difference learning of position evaluation in the game of Go." Advances in Neural Information Processing Systems. 1994.

◎ 1996
Enzenberger, Markus. "The integration of a priori knowledge into a Go playing neural network." URL: http://www. markus-enzenberger. de/neurogo. html (1996).

◎ 2002
Van Der Werf, Erik, et al. "Local move prediction in Go." International Conference on Computers and Games. Springer, Berlin, Heidelberg, 2002.

◎ 2004
Enzenberger, Markus. "Evaluation in Go by a neural network using soft segmentation." Advances in Computer Games. Springer US, 2004. 97-108.

◎ 2008
Sutskever, Ilya, and Vinod Nair. "Mimicking go experts with convolutional neural networks." Artificial Neural Networks-ICANN 2008 (2008): 101-110.

◎ 2014
Maddison, Chris J., et al. "Move evaluation in go using deep convolutional neural networks." arXiv preprint arXiv:1412.6564 (2014).

◎ 2015
Clark, Christopher, and Amos Storkey. "Training deep convolutional neural networks to play go." International Conference on Machine Learning. 2015.

◎ 2016 AlphaGo。
Silver, David, et al. "Mastering the game of Go with deep neural networks and tree search." Nature 529.7587 (2016): 484-489.

◎ 2017 AlphaGo Zero。
Silver, David, et al. "Mastering the game of Go without human knowledge." Nature 550.7676 (2017): 354-359.

-----

4.1 NTM

◎ NTM
Graves, Alex, Greg Wayne, and Ivo Danihelka. "Neural turing machines." arXiv preprint arXiv:1410.5401 (2014).

◎ DNC
Graves, Alex, et al. "Hybrid computing using a neural network with dynamic external memory." Nature 538.7626 (2016): 471-476.

◎ 
Olah, Chris, and Shan Carter. "Attention and augmented recurrent neural networks." Distill 1.9 (2016): e1.

-----

5.1 Regularization

◎ Weight decay。
Krogh, Anders, and John A. Hertz. "A simple weight decay can improve generalization." Advances in neural information processing systems. 1992.
 
◎ Dropout。
Srivastava, Nitish, et al. "Dropout: a simple way to prevent neural networks from overfitting." Journal of machine learning research 15.1 (2014): 1929-1958.

◎ Batch Normalization。
Ioffe, Sergey, and Christian Szegedy. "Batch normalization: Accelerating deep network training by reducing internal covariate shift." International Conference on Machine Learning. 2015.

-----

5.2 Optimization

◎ Overview of optimization
Ruder, Sebastian. "An overview of gradient descent optimization algorithms." arXiv preprint arXiv:1609.04747 (2016).
 
◎ 1 SGD
Bottou, Léon. "Stochastic gradient descent tricks." Neural networks: Tricks of the trade. Springer Berlin Heidelberg, 2012. 421-436.

◎ 2 Momentum
Polyak, Boris T. "Some methods of speeding up the convergence of iteration methods." USSR Computational Mathematics and Mathematical Physics 4.5 (1964): 1-17.

◎ 3 NAG
Sutskever, Ilya, et al. "On the importance of initialization and momentum in deep learning." International conference on machine learning. 2013.

◎ 4 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.
 
◎ 5 AdaADelta
Zeiler, Matthew D. "ADADELTA: an adaptive learning rate method." arXiv preprint arXiv:1212.5701 (2012).

◎ 6 RMSProp
Hinton, G., N. Srivastava, and K. Swersky. "RMSProp: Divide the gradient by a running average of its recent magnitude." Neural networks for machine learning, Coursera lecture 6e (2012).

◎ 7 Adam
Kingma, Diederik, and Jimmy Ba. "Adam: A method for stochastic optimization." arXiv preprint arXiv:1412.6980 (2014).

-----

6.1 AE

◎ 
Hinton, Geoffrey E., and Richard S. Zemel. "Autoencoders, minimum description length and Helmholtz free energy." Advances in neural information processing systems. 1994.

◎ 
Bengio, Yoshua, et al. "Greedy layer-wise training of deep networks." Advances in neural information processing systems. 2007.

◎ 
Poultney, Christopher, Sumit Chopra, and Yann L. Cun. "Efficient learning of sparse representations with an energy-based model." Advances in neural information processing systems. 2007.

◎ 
Vincent, Pascal, et al. "Extracting and composing robust features with denoising autoencoders." Proceedings of the 25th international conference on Machine learning. ACM, 2008. 

-----

6.2 RBM
 
◎ 這篇把 RBM 的物理意義講得很清楚 浅析 Hinton 最近提出的 Capsule 计划 - 知乎专栏
https://zhuanlan.zhihu.com/p/29435406 

◎ 
Hinton, Geoffrey E., Simon Osindero, and Yee-Whye Teh. "A fast learning algorithm for deep belief nets." Neural computation 18.7 (2006): 1527-1554.

◎  
Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. "Reducing the dimensionality of data with neural networks." science 313.5786 (2006): 504-507.
 
◎  
Salakhutdinov, Ruslan, and Geoffrey Hinton. "Deep boltzmann machines." Artificial Intelligence and Statistics. 2009.

-----

7.1 Robotics

◎ 機器人論文,精選裡面的精選
Levine, Sergey, et al. "End-to-end training of deep visuomotor policies." Journal of Machine Learning Research 17.39 (2016): 1-40.

-----

7.2 Fintech

◎ Machine Learning
Cavalcante, Rodolfo C., et al. "Computational intelligence and financial markets: A survey and future directions." Expert Systems with Applications 55 (2016): 194-211.

◎ ANN
Tkáč, Michal, and Robert Verner. "Artificial neural networks in business: Two decades of research." Applied Soft Computing 38 (2016): 788-804.

◎ Deep Learning
Chong, Eunsuk, Chulwoo Han, and Frank C. Park. "Deep learning networks for stock market analysis and prediction: Methodology, data representations, and case studies." Expert Systems with Applications 83 (2017): 187-205.

◎ 
Li, Yawen, et al. "On neural networks and learning systems for business computing." Neurocomputing (2017).

Saturday, September 23, 2017

RBM

RBM

2017/09/23

主要是先存檔。

-----

深度學習時代的敲門磚--RBM

Softmax & Sigmoid

「Hinton用能量函數來描述NN的一些特性,期望這樣可以帶來更多的統計學支持。 不久Hinton發現,多層神經網絡可以被描述為玻爾茲曼機的一種特例 - 受限玻爾茲曼機(RBM)」[1]。
 
「在統計力學中,玻爾茲曼分佈(或稱吉布斯分佈)可以用來描述量子體系的量子態的分佈,有著以下的形式: P(s)\ propto e ^ { - {\ frac {E(s)} {kT}}} 其中s是某個量子態,E(s)為這個狀態的能量,P(s)為這個狀態出現的概率。 ķ是玻爾茲曼常量,是個常數.T是系統溫度,在具體問題中也是一個常數。於是我們不妨讓KT = 1,原來的表達式可以簡化」[1]。

這不就是softmax嗎?居然自然地在統計力學分佈裡面出現了(難怪之前LeCun讓大家學物理)[1]。

這時候sigmoid函數就有了自然的解釋:玻爾茲曼分佈下隱含層神經元激活的條件概率的激活函數。其中s是某個量子態,E(s)為這個狀態的能量,P(s)為這個狀態出現的概率。 [1]
 
-----

References

[1] 浅析 Hinton 最近提出的 Capsule 计划 - 知乎专栏
https://zhuanlan.zhihu.com/p/29435406

Tuesday, August 29, 2017

AI從頭學(代序):The Road to Deep Learning

AI從頭學(代序):The Road to Deep Learning

2017/08/29

有關 Deep Learning,或者 AI,如果想瞭解的話,我建議你不要看一般的介紹, 看再多都是假的!

直接看論文吧,有我先讀過一遍,我相信你至少會輕鬆很多!:)

-----


Fig. 1. 公路車下劍南路.

-----

1. BP、LeNet。首先是 BP 跟 LeNet [1], [2]。

2. RNN。然後是 RNN 跟 LSTM [3]。

3. CNN。再回到 LeNet / CNN,[4], [5] 告訴你有哪些 CNN 是值得注意的。

4. R-CNN。還有 R-CNN 系列,在 [4] 後半部,一開始我完全不知道這是什麼。更新的 R-CNN 系列,在我整理的大全集 [6] 裡面的 [7] 這份名單裡也更新了。

5. Framework。到了這裡,如果你終於要進入「實戰」,Caffe 是個好選擇,Caffe 之外的框架,有興趣就自己看看吧 [8]!

以上是我的自學之路的「精華」,更多的部分,可以參考 [9],祝您一路順風。

-----

References

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

[2] AI從頭學(一二):LeNet
http://hemingwang.blogspot.tw/2017/03/ailenet.html

[3] AI從頭學(一九):Recurrent Neural Network
http://hemingwang.blogspot.tw/2017/03/airecurrent-neural-network.html

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

[5]  AI從頭學(一八):Convolutional Neural Network
http://hemingwang.blogspot.tw/2017/03/aiconvolutional-neural-network_23.html 

[6] AI從頭學(三四):Complete Works
http://hemingwang.blogspot.tw/2017/08/aicomplete-works.html

[7] Deep Learning Papers Reading Roadmap
https://github.com/songrotek/Deep-Learning-Papers-Reading-Roadmap/blob/master/README.md 

[8] Lab DRL_02:深度學習框架
http://hemingwang.blogspot.tw/2017/06/lab-drl02.html  

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

Monday, August 07, 2017

AI 從頭學(三七):Weight Decay

AI 從頭學(三七):Weight Decay

2017/06/22

前言:

你用一小撮資料來建立一個模型,以便用於預測大量資料。模型建的太好(符合這一小撮資料),在大量資料的表現,難免變的較差。錯一點,但不要錯太多,這就是 weight decay 的精神。

-----

Summary:

Regularization 是一些避免 overfitting 的方法的總稱,weight decay 是最簡單的方法之一 [1]。 本文蒐集了一些相關資料用來輔助理解 [2]-[5],最後是 noise 及一些相關的討論 [6], [7]。

-----

本文藉著下列問題來說明 weight decay。

Q1:Overfitting 是什麼?
Q2:Regularization 有那些方法?
Q3:多項式的 fitting 與類神經網路的 fitting 有何不同?
Q4:Weight decay 裡的懲罰項是什麼意思?
Q5:梯度不出現是什麼意思?
Q6:Weight decay 的微分方程版?
Q7:Weight decay 的差分方程版?
Q8:Noise 的影響? 

-----

Q1:Overfitting 是什麼?

機器學習有很大的比例是用一小群資料建立模型,再用模型來處理大規模的資料。在訓練模型時,如果考慮的太細,會使訓練結果很好,但測試結果不理想,這個就叫 overfitting。以圖1a為例。訓練不足變成直線,訓練過度是高次方的多項式,理想的結果是一個二次的拋物線。


Fig. 1a. A high-degree polynomial regression model, p. 119 [1].

-----

Q2:Regularization 有那些方法?

本文要介紹的 weight decay 是一種,early stopping 是一種,dropout 也是一種,參考圖1b。這些在 [4], [5] 裡有清楚的簡介。



Fig. 1b. Regularization for deep learning [1].

-----

Q3:多項式的 fitting 與類神經網路的 fitting 有何不同?

其實是很類似的,不過類神經網路更複雜一些。

圖2a是一個多項式,要注意的是,如果你的 weights 很大,就會產生一堆曲線跟複雜的結構,因為你把不重要的 noise 資料都考慮到了,參考圖2b。


Fig. 2a. Polynomial curve fitting, p. 9 [2].



Fig. 2b. A polynomial with an excess of free coefficients, p. 338 [2].

-----

Q4:Weight decay 裡的懲罰項是什麼意思?

要做 weight decay,首先在原來的 loss function 加入一個懲罰項 Ω ,另外還有調節的係數 ν 。參考圖2c。

理論上,loss function 的值越小越好,因為你希望模型越準確越好,可惜在訓練時,你的資料只是一小撮。error 非常小,你就 overfit 、無法處理未來的一大堆測試資料集。Loss function 加入懲罰項,你就沒那麼準。懲罰項的係數是重點。係數太小,甚至是0,你等於麼都沒做,如同圖1a的右邊。係數太大,懲罰過度,如圖1a的左邊。適合的係數,經驗上譬如0.0001,會像是圖1a的中間。

懲罰項一般取權重的平方和,如圖2d。係數1/2是方便微分後跟二次方相乘變成1。懲罰項為 w^2,會避免 w 太大。為什麼?因為 Loss function 的值要越來越小,w 當然也要傾向於越來越小。

最後的結果是 fitting the data 與 minimizing Ω的 妥協,為什麼?因為你希望 Ω 越小越好,可是太小又會 overfitting 了,參考圖2e。


Fig. 2c. Adding a penalty to the error function, p. 338 [2].



Fig. 2d. Sum of the squares, p. 338 [2].



Fig. 2e. Compromise, p. 338 [2].

-----

Q5:梯度不出現是什麼意思?

圖3a講解了 weight decay 的原理。這個解釋不大清楚,但可以先看一下。

最後它提到:如果梯度不出現,則這個方程式會導致權重成指數式的下降,參考圖3b。

太不清楚了,但是這個問題可以好好想想。



Fig. 3a. Adding a term to the cost function that penalizes large weights, p. 2 [3].



Fig. 3b. If the gradient were not present, p. 2 [3].

-----

Q6:Weight decay 的微分方程版?

圖4a又介紹了一次 regularization 跟 weight decay,重點在圖4b的運算。這邊把式子列出,解微分方程後,得到 w 在連續時間 τ 上是一個指數函數,所以如果 τ 越來越大,w 就呈指數下降,在梯度不見(也就是原來的 loss function 無法藉著梯度更新時)時,還是可以持續更新 w。 這個也就是 weight decay。



Fig. 4a. Regularization, p.353 [2].



Fig. 4b. Weight decay, p. 354 [2].

-----

Q7:Weight decay 的差分方程版?

這邊又把 weight decay 整個講過一遍,參考圖4c。

做完後,在原來的梯度更新之前,w 會先乘上一個小於 1 的係數。這個就是 weight decay。

梯度等於0時,也就是無法藉由更新梯度而有更好的結果時,權重就指數式變小,以致於消失,類似人的神經系統,參考圖4d。



Fig. 4c. Closer to zero, p. 34 [4].



Fig. 4d. Pruning out useless links, p.36 [4].

-----

Q7:Goodfellow 的版本?

圖5是 Goodfellow 的版本,相信已經不用再講一遍了!



Fig. 5a. Mean squared error, p. 108 [1].



Fig. 5b. Adding a regularization term, p. 231 [1].



Fig. 5c. Total objective function, p. 119 [1].



Fig. 5d. Weight decay, p. 231 [1].

-----

Q8:Noise 的影響?

圖6a列出四種 noise。有特別的權重表示可以讓小的 weights 非常快變小,對比比較大的 weights,這也就相等於 reinforcing large weights and weakening small weights,參考圖6b。

圖7則是一些關於 weight decay 較經典的研究。



Fig. 6a. Four types of noise, p. 1127 [6].



Fig. 6b. Reinforcing large weights and weakening small weights, p. 1128 [6].



Fig. 6c. Decaying small weights more rapidly than large weights, p. 1128 [6].



Fig. 7. Historical references of weight decay, p. 92 [7].

-----

結論:

Weight decay 與 early stopping、dropout,都是避免 overfitting 常用的方法,而 weight decay 算是最基本的。

-----

References

[1] 2016_Deep Learning

[2] 1995_Neural Networks for Pattern Recognition

[3] 1992_A simple weight decay can improve generalization

[4] DNN tip
http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/DNN%20tip.pdf

[5] ML Lecture 9  Tips for Training DNN - YouTube
https://www.youtube.com/watch?v=xki61j7z-30

[6] 1998_Weight decay backpropagation for noisy data

[7] 2015_Deep learning in neural networks, An overview

Thursday, August 03, 2017

AI 從頭學(三一):Inception

AI 從頭學(三一):Inception

2017/08/03

前言:

知其然,也要知其所以然!

-----

Summary:

GoogLeNet [1] 主要的靈感來自 [2],實務上的應用則參考 Network in Network [3]。

之前寫的幾篇文章主要是 GoogLeNet 如何運作 [4]-[6],但它設計的原理,雖然看了好幾次 [2],無奈並不容易看懂,一直到最近重新查詢 [2] 的標題,找到相關的中文文獻 [7],才得以徹底瞭解 [1] 的設計原理。

-----

圖1.1是Inception 3a 與 3b。

圖1.2則是 3a 與 3b 綠色的部分:DepthContact。

作者把圖1.1重點的部分加上紅框,在原理講解完後再講解這三個紅框作用為何。


Fig. 1.1. Inception 3, p, 6 [1].



Fig. 1.2. DepthConcat [5].

-----

首先是 GoogLeNet 的靈感來源 [2] 的靈感來源:Hebbian rule。

其大意是:相關性高的節點應該要綁在一起。參考圖2.1。

根據這個原理,[2] 藉著觀察特徵之間的相關性,一層一層地重新建造網路。參考圖2.2。

這一段跟 GoogLeNet 關係為何?很難理解,什麼叫做「特徵的相關性」?如何計算?

不過沒關係,隨著資料的開展,我們會知道什麼叫做「特徵的相關性」。



Fig. 2.1. Hebbian rule, p. 3 [2].



Fig. 2.2. Observing correlations, p. 1 [2].

-----

[2] 的主要結果說明:如果資料集的機率分布可以表現為一個大型的極稀疏網路(CNN結構上就很稀疏,全連接層則很稠密),那麼最佳的網路拓樸可以藉著分析前一層作用的關連統計與高相關輸出的群聚神經元一層一層重新建造。參考圖3.1。

很像繞口令吧,這幾段話我看了很多次,一點都無法理解這個跟 GoogLeNet 關係在哪?

不過 GoogLeNet 毫不客氣地引用 [2] 的結果,試著用一個稠密的現成單元來近似 [2] 的稀疏結構,這個單元也就是 Inception。



Fig. 3.1. Analyzing the correlation statistics, p. 2 [1].



Fig. 3.2. Dense, readily available components, p. 3 [1].

-----

這裡直接引用一段話(圖4.1) :

「因此一個「好」的稀疏結構,應該是符合Hebbian原理的,我們應該把相關性高的一簇神經元節點連接在一起。在普通的數據集中,這可能需要對神經元節點聚類,但是在圖片數據中,天然的就是臨近區域的數據相關性高,因此相鄰的像素點被卷積操作連接在一起。而我們可能有多個卷積核,在同一空間位置但在不同通道的卷積核的輸出結果相關性極高。因此,一個1´1的卷積就可以很自然地把這些相關性很高的、在同一個空間位置但是不同通道的特徵連接在一起,這就是為什麼1´1卷積這麼頻繁地被應用到Inception Net中的原因。 」[7]

重點就是:臨近區域的數據相關性高。

這個鄰近區域,被卷積核把高相關性萃取出來,3x3 視野較小,5x5 視野較大,另外還有 max pooling 也是一種參考來源。至於平面上的同一位置、不同通道的,相關性也極大,則由 1x1 綁在一起,這就是上面圖1.1紅框代表的 1x1 跨通道作用。

另外 3x3 與 5x5 前面的 1x1 作用則是降維。

Conv1 的作用在於把 圖1.2的DepthCancat 以及 Maxpooling 作 「fire together」,另一個作用是 Conv3 與 Conv5 前面的降維。



Fig. 4.1. 鄰近區域的數據相關性高 [7].

-----

藉由以上的說明,我們就可以讀懂圖4.2這一大段話,以及圖3.2,GoogLeNet 用 Inception 這個架構重覆構築圖片分類的網路。

FB網友對 [7] 的觀點,與圖4.2相同。

許傅鈞:這一篇的確主要是參考Provable那篇,但Googlenet並沒有先去找高度相關的節點做clustering,而是直接設定一個網路結構然後開始訓練。



Fig. 4.2. Implementing Hebbian rule with 1x1 convolutions, p. 3 [1].

-----

結論:

重點就是:臨近區域的數據相關性高。不管是平面上,還是通道之間。

這段話或許是影像處理的「常識」,因為論文中並未提到。

-----

許傅鈞:相鄰影像的相關性是從神經科學對眼睛reception field的特性得來的。的確近代文章已經把它當作不用推導的特性

-----

References

[1] 2015_Going deeper with convolutions

[2] 2014_Provable bounds for learning some deep representations

[3] 2014_Network in network

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

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

[6] AI從頭學(三0):Conv1
http://hemingwang.blogspot.tw/2017/06/aiconv1.html

[7] 深度學習之四大經典CNN技術淺析 硬創公開課 香港矽谷
https://www.hksilicon.com/articles/1280725

Thursday, July 27, 2017

AI 從頭學(三五):DPM

AI 從頭學(三五):DPM

Object Detection with Discriminatively Trained Part-Based Models

2017/07/27

前言:

本篇為 R-CNN 的熱身之一。

Summary:

本次講解的論文,主要是利用 Latent SVM (L-SVM) 進行的物件偵測 [1]。

之所以選擇這篇論文閱讀,起因是之前一篇論文 [2],引用的 R-CNN [3],用到了 Selective Search [4] 跟 L-SVM [1]。

[1] 跟它前一個版本 [5],都使用了 Histograms of Oriented Gradients (HOG) 作為特徵擷取的方法 [6], [7]。SIFT [8] 跟 HOG 類似,本文將藉助它來闡述 HOG 的原理。

[6] 處理的是概略的人體輪廓,[1], [5] 則利用 [9], [10] 計算出局部的框架,除了有較高的辨識率,也可適應各種不同物體的偵測。

L-SVM 可以說是一種 Energy-Based Model [11],也可說是一種 MI-SVM [12]。限於篇幅,本文將只會講解簡單的 SVM 概念 [13] ,並不會對 L-SVM 著墨太多(其實是作者還在努力K書中)。

-----

本文將分成八個小節進行。

Q1: What is L-SVM?
Q2: What is AOL?
Q3: What is HOG?
Q4: What is SIFT?
Q5: What is SVM?
Q6: What is the Pyramid Structure?
Q7: What is the flowchart of the object detection algorithm?
Q8: What is the result?

-----

Q1: What is L-SVM?

A1:

圖1.1上方是測試的圖片,下方則是訓練出來的 L-SVM 模型。

圖1.1a可以看到一個粗略的人體形狀,這是 Linear SVM 訓練出來的 HOG filter [6]。

圖1.1b則是在 [6] 的基礎上,加上局部的 filters。由於局部位置並沒有標籤,所以在訓練時它們必須被視為 latent (hidden) variables [1]。

圖1.1c則是最後的模型,顯示為空間權重的表現。

技術細節在本文內稍後會討論。


Fig. 1.1. Detections obtained with a single component person model, p. 2 [1].

-----

圖1.2是不同種類物件的模型,此處列出的有瓶子、汽車、沙發、腳踏車。
圖1.3列出的有人、瓶子、貓、汽車。我們可以看到人與瓶子、貓與汽車有類似的模型。

這邊值得注意的是舊版本跟新版本的差異:新版的每個種類有兩個子模型來輔助偵測,稱為 mixture model。



Fig. 1.2. Some models learned from the PASCAL VOC 2007 dataset, p. 6 [5].



Fig. 1.3. Some of the models learned on the PASCAL 2007 data set, p. 1641 [1].

---

Q2: What is AOL?

A2:

AOL 是 2015年一篇論文標題的縮寫 [2],參考圖2。[2] 主要引用了 R-CNN [3]、ZFNet、DQN,都是相當經典的論文。

R-CNN [3] 主要又引用了 Selective Search [4] 與 L-SVM [1],這便是此次報告 [1] 的緣故。



Fig. 2. Related research.

-----

Q3: What is HOG?

A3:

HOG 是 Histograms of Oriented Gradients 的縮寫,這篇發表於 2005 的論文 [6],截至作者撰寫文章之時,獲得 19606 次引用。[1] 的基本架構即根植於此。所以本篇先簡介一下 HOG。

圖3.1a是資料庫內的圖片,大小統一為 64 x 128,參考圖3.1b。



Fig. 3.1a. Some sample images from the new human detection database, p. 3 [6].



Fig. 3.1b. The image resolution is 64 x 128, p. 2 [6].

-----

此處假設讀者已有 SVM 的基礎。稍後在 Q5 會簡介 SVM。

圖3.2a是全部圖片的平均值,由於圖片在處理時左右反過來也用了,所以看到的是一個對稱的圖形。

圖3.2b跟3.2c是 Linear SVM 訓練完後,向量最大權重的顯示,分別是「人」與「非人」。這邊一個 pixel 代表一個 8 x 8 的向量(的最大值),對應於圖3.2e則是 HOG descriptor,在 8 x 8 的矩陣內,有九個方向的線條,線條的強度則以明暗表示(可參考下方的放大圖)。

圖3.2d是測試圖片。

圖3.2d經過HOG的計算後,得到圖3.2e。分別乘上 (b)與(c),則得到 (f)與(g)。

更詳細的介紹,可以參考 Q7。



Fig. 3.2. The HOG detectors cue mainly on silhouette contours, p. 7 [6].



Fig. 3.2e. It’s computed R-HOG descriptor, p. 7 [6].

-----

圖3.3是完整的流程圖,有六個步驟。其中第一跟第四的 normalization 可以參考 [7],本文會介紹步驟二、三、五、六。



Fig. 3.3. An overview of the feature extraction and object detection chain, p. 2 [6].

-----

Q4: What is SIFT?

SIFT 是 Scale-Invariant Feature Transform [8] 的縮寫。它跟 HOG 「有點像」。

圖4.1左邊看到最小的是 n x n 的 pixel cells,接下來是 4 x 4 的 grids,然後 2 x 2 的 grids 組成一個 descriptor。這邊可以看到強度是由箭頭的長度顯示,HOG則是明暗。另外 SIFT有八個方向。HOG 在論文中則選九個方向。

計算的公式可以參考圖4.2。



Fig. 4.1. SIFT: A keypoint descriptor is created, p. 101 [8].



Fig. 4.2. SIFT: For each image sample, the gradient magnitude and orientation is precomputed using pixel differences, p. 99 [8].

-----

SIFT 簡介完後,回到 HOG。

圖4.3a 顯示的是 [1] 中訓練完後的 36 (9 x 4) 個 eigenvector,每個 eigenvector 是 36 (9 x 4) 維的向量。

這個圖可以跟圖3.2e一起看。也就是,圖3.2e中的每個「雪花」可以用這36個(或部分) eigenvectors 組成。概念上每個雪花由四個小雪花組成,每個小雪花有九個方向,每個方向有其強度值,四個小雪花,所以是 9 x 4。

圖4.3b、c、d則是輔助的文字說明。



Fig. 4.3a. PCA of HOG features, p. 1638 [1].



Fig. 4.3b. HOG: A 4 x 9 matrix, p. 1639 [1].



Fig. 4.3c. HOG: A vector of length 9 x 4, p. 2 [5].



Fig. 4.3d. HOG vs. SIFT, p. 6 [6].

-----

計算梯度的方法,在 [6] 中試了好幾個,以 [-1, 0, 1] 最佳,參考圖4.4a。

圖4.4b則是 HOG 計算方向的方法。可以跟 SIFT 比較不同之處。



Fig. 4.4a. HOG: Simple 1-D [-1, 0, 1] masks work best, p. 4 [6].



Fig. 4.4b. HOG: Gradient orientation and magnitude, p. 1638 [1].

-----

Q5: What is SVM?

A5:

這邊簡介一下 Support Vector Machine (SVM) 支持向量機 [13]。

圖5.1的 D(x) 是一個「超平面」。w 是一個 n 維的向量。

圖5.2是一個線性SVM,φ(x)= x。維度為 2,以此為例。

有兩類資料散佈在平面上(大致聚集成兩團),其值分別被標誌為 1 與 -1。

從中取出訓練集,找出 D(x) 使得 M 為最大,也就是找出D(x)=0兩旁虛線上的幾個向量,連帶找出 w (以及)b。這幾個向量就稱為支持向量。

在 [6] 中把訓練圖形的 HOG 計算出來後,則可以使用此處介紹的 Linear SVM 加以分類。



Fig. 5.1. The decision function in the direct space, p. 145 [13].



Fig. 5.2. Maximum margin linear decision function D(x), p. 146 [13].

-----

Q6: What is the Pyramid Structure?

A6:

參考圖6.1。其實這邊的金字塔只有兩層。

淺藍色的部分跟 [6] 一樣,是單純的行人檢測。

[1], [5] 與 [6] 的不同之處,在於加上了局部的結構,就是黃色的框框。

圖6.2則是測試圖與 L-SVM 訓練出來的模型。



Fig. 6.1. The HOG feature pyramid, p. 2 [5].



Fig. 6.2. Example detection obtained with the person model, p. 1 [5].

-----

這邊有個疑問就是 bounding box(圖6.3虛線部分)是如何找出來的。

[6] 是固定大小整張的 64 x 128,沒什麼問題。然後人都在中間部分。

在 [5] 跟 [1] 裡面,bounding box 是由資料庫提供,參考圖 6.4a與6.4b。

有疑問的在圖6.4c,根據 [4] 的說法,[1] 是用窮舉法把所有可能的位置都試過。可以參考圖7.1,filters 整張圖滑過,找出兩個人。

有關 bounding box 如何找出來,[4] 提供了很好的演算法,有機會報告 [4] 的時候再討論。



Fig. 6.3. The dotted box is the bounding box label provided in the PASCAL training set, p. 5 [5].



Fig. 6.4a. The dotted box is the bounding box label provided in the PASCAL training set, p. 5 [5].



Fig. 6.4b. Training models from images labeled with bounding boxes, p. 1636 [1].



Fig. 6.4c. Exhaustive search, p. 155 [4].

-----

圖6.5顯示一個較好的 bounding box 是 [1] 的副產品。


Fig. 6.5. A car detection and the bounding box predicted from the object configuration, p. 1640 [1].

-----

Q7: What is the flowchart of the object detection algorithm?

A7:

圖7.1是圖片偵測演算法的流程圖。

右上方是訓練好的模型。

計算出 HOG之後,大致就是整體與局部的加總。

主要的重點有二:

第一,局部的小框框,要用 [8], [9] 先找出來,參考圖7.2([14], [15])。

第二,局部的權重要經過 [8] 的轉換,參考圖7.3([14])。

這兩篇論文不在本篇的討論範圍內。



Fig. 7.1. The matching process at one scale, p. 1633 [1].



Fig. 7.2. Best locations of the parts, p. 1631 [1].



Fig. 7.3. Generalized distance transform, p. 1632 [1].

-----

[5] 跟 [6] 的主要差別。

[5] 多了局部,bounding box 大小在不同圖片中也不一樣。



Fig. 7.4. L-SVM vs. HOG, p. 1628 [1].

-----

[1] 跟 [5] 的主要差別。

同一類別中,[1] 訓練兩個(以上?)的 model,稱為 mixture model。

另外演算法改進了很多。



Fig. 7.5. L-SVM 2010 vs. L-SVM 2008, p. 1630 [1].

-----

Q8: What is the result?

A8:

圖8.1是一個腳踏車的模型,可以看到正面跟側面。

圖8.2是汽車的模型,顯示了從整體再到「整體加局部」的訓練過程。

圖8.3跟8.4是部分測試結果,有部分錯誤是因為條件設定的關係。



Fig. 8.1. Detections obtained with a two-component bicycle model, p.1629 [1].



Fig. 8.2. The result of Phase 1 (a), (b) and Phase 3 (c) of the initialization process, p. 1637 [1].



Fig. 8.3. Examples of high-scoring detections on the PASCAL 2007 data set, p. 1642 [1].



Fig. 8.4. Some results from the PASCAL 2007 dataset, p. 7 [5].


-----

結論:

HOG + SVM 曾經引領風騷很久,在目前 Deep Learning 大行其道之時,仍有很高的研究價值。

-----

References

[1] 2010_Object detection with discriminatively trained partbased models

[2] 2015_Active object localization with deep reinforcement learning

[3] 2014_Rich feature hierarchies for accurate object detection and semantic segmentation

[4] 2013_Selective search for object recognition

[5] 2008_A discriminatively trained, multiscale, deformable part model

[6] 2005_Histograms of oriented gradients for human detection

[7] 目標檢測的圖像特徵提取之(一)HOG特徵
http://alex-phd.blogspot.tw/2014/03/hog.html

[8] 2004_Distinctive image features from scale-invariant keypoints

[9] 2004_Distance transforms of sampled functions

[10] 2005_Pictorial structures for object recognition

[11] 2006_A tutorial on energy-based learning

[12] 2003_Support vector machines for multiple-instance learning

[13] 1992_A training algorithm for optimal margin classifiers