Monday, September 02, 2019

AI 從頭學(六):The Net

AI 從頭學(六):The Net

2016/12/19

-----


Fig. The Net(圖片來源:Pixabay)。

-----

網路上有神人傳播福音,我既然接收到神諭,沒有理由不成為新世紀的戰士。這個週末兩天在家閉門消化論文,畢竟先知也是用下班時間 K 書,我也不好意思推說工 作忙碌,抽不出時間。我承認,我在讀博班的時候,從沒如此正面解決問題。但畢竟,我也過了可以懶散地、自由地鑽研學問的時光了...

-----

引用臉書資料:

Mar ang : 

Mar ang :

Mar ang :

-----

我在網路上找了一些參考文獻,打算如法炮製。依文章的性質,可以分為六大部分。1. 概論 [1]-[2]。2. AD 基礎理論與應用 [3]-[8]。3. Python 的 AD Tools 介紹 [9]-[11]。4. Python 如何運用在科學計算 [12]-[16]。5. LeNet-5 [17]。6. Deep Learning 的 review論文 [18]-[24]。

要用 Python 實作 LeNet-5,第一個困難是用 Python 實做 AD,雖然找不到 Python,還好找到用 Matlab 實作 AD 的文章 [1],裡面講的蠻詳細的,解決了第一個問題。AD 既不是數值微分,也不是符號微分 [2]。值得注意的是 AD 還分為 Foward Mode 跟 Reverse Mode [2], [7]。

這裡有個大問題是為什麼 LeNet-5,或者說是 CNN,會用到 AD,也就是 Deep Learning 的論文裡,會有一堆 chain rule 的運算式。我苦思兩天,靠著一些殘存的印象,把 LeNet 文章中相關部分拆開仔細閱讀,終於有點撥雲見日,見圖一 [17] 與圖二 [2]。在此我不說破,因為怕說錯誤導。

剩下來就是用 Python [12]-[16] 把 LeNet-5 [17] 實作出來,這邊我想就還好了!

-----


Fig. 1. Minimizes Etrain(W) [17].

-----



Fig. 2. Classical gradient descent has the goal of finding a (local) minimum [2].

-----

出版說明:

2019/09/02

說的人說的很清楚,聽的人聽的很模糊,這是常見的情形。

大方向是正確的:LeNet。另外,論文上的公式不要跳過。

-----

References

[1] 2010_Introduction to Automatic Differentiation and MATLAB Object-Oriented Programming
[2] 2014_Automatic differentiation of algorithms for machine learning

[3] 2016_Mathematical modeling and optimization of complex structures
[4] 2012_Recent advances in algorithmic differentiation
[5] 2008_Advances in automatic differentiation
[6] 2006_Automatic Differentiation, Applications, Theory, and Implementations
[7] 1992_Automatic Differentiation, Overview and Application to Systems of  Parameterized Nonlinear Equations
[8] 1981_Automatic Differentiation, Techniques and Applications

[9] 2016_Benchmarking Python Tools for Automatic Differentiation
[10] 2012_CasADi, A Symbolic Package for Automatic Differentiation and Optimal Control
[11] 2012_Algorithmic Differentiation in Python with AlgoPy

[12] 2016_Introduction to Scientific Computing in Python
[13] 2015_Mastering Python Scientific Computing
[14] 2015_Introduction to Python for Computational Science and Engineering
[15] 2014_An introduction to Python for scientific computing
[16] 2014_A Primer on Scientific Programming with Python

[17] 1998_Gradient-Based Learning Applied to Document Recognition

[18] 2016_Towards Bayesian Deep Learning, A Survey
[19] 2016_Deep Learning on FPGAs, Past, Present, and Future
[20] 2015_Deep learning
[21] 2015_Deep learning in neural networks, An overview
[22] 2014_Deep Learning, Methods and Applications
[23] 2012_Unsupervised feature learning and deep learning, A review and new perspectives
[24] 2009_Learning deep architectures for AI

No comments: