AI 從頭學(二六):AlexNet
2017/05/31
前言:
講解 AlexNet,主要是為 Caffe 的實作課程鋪路。
-----
Summary:
AlexNet [1] 扮演承先啟後的角色 [2]-[4],是現代深度學習網路的基礎。相關卷積神經網路的簡介,可以參考之前的文章 [6]-[10]。
本文介紹 AlexNet 使用的一些技巧,包含 LRN [11], [12]、ReLU [13]、Pooling [14]、Dropout [15]-[18]等。
-----
AlexNet 是現代大型卷積神經網路的濫觴 [1],自2012年發表以來,到筆者寫稿時間已經有超過12000的引用,粗估每個月有200次引用。我們大約可以說,LeNet [3] 引起機器學習界對於神經網路的關注,AlexNet 引起學術界對深度學習的關注,而 AlphaGo [4] 則引起全世界的人對人工智慧的好奇。
在以問題進入 AlexNet 之前,先說明何謂 Top-1 與 Top-5 [1]。Top-1 的錯誤率指的是圖片正確的標籤是否被準確預測。Top-5 的錯誤率則是,如果你預測的前五個選項包含正解,則此次的預測就算正確。
下面以七則問題來解釋 AlexNet。
-----
Question
Q1: Structure
Q2: GPU
Q3: Augmentation
Q4: LRN
Q5: ReLU
Q6: Pooling
Q7: Dropout
-----
Q1: Structure
AlexNet 的架構,大致可以想像成比較「巨大」的 LeNet,參考圖1.1 與 圖1.3。包含輸入層、卷積層、池化層、全連接層、輸出層等。另外有些層後面也會使用激活函數。2013年提出的 ZFNet則修改了一些參數,提升不少效能,參考圖1.2 與 圖1.4。
-----
Fig. 1.1. AlexNet [1].
Fig. 1.2. Modification of AlexNet [2].
Fig. 1.3. LeNet [3].
Fig. 1.4. Architectural changes of AlexNet [2].
-----
Q2: GPU
當時 AlexNet 率先使用 GPU 並獲得極大的成功。GPU 使用兩塊,而線條與顏色的 C1 filters 每次都會落在不同的 GPU 上 [7],是值得思考的問題。
-----
Q3: Augmentation
資料擴增有助於降低 overfitting,也就是提升測試時的準確性。由於在 CPU 而不是 GPU 上做,所以對於整體計算時間,可說沒有影響。
第一個方法是 horizontal reflections,也就是左右翻轉。
第二個方法是 altering the intensities of the RGB channels,使用 PCA 改變一點顏色。此處原文並未引用論文,雖然影響不小,對 Top-1 有1%,這邊我們就帶過。
-----
Q4: LRN
Local response normalization (LRN),局部反應標準化。
這點值得一提。
圖2.1的公式有點複雜,所以我們可以先看看它的靈感來源,從最早的圖2.3先看好了。這是一個 V1-like 的模型,也就是它模仿視覺皮層的第一層的反應。主要概念是減去平均值然後再標準化。圖2.3跟圖2.2都是處理對比,圖2.1由於沒有減去平均值,所以他說他是在處理亮度。裡面的參數是作者調出來的。
Fig. 2.1. Local response normalization, p. 4 [1].
Fig. 2.2. Local contrast normalization, p. 3 [11].
Fig. 2.3. Local input divisive normalization, p. 5 [12].
-----
Q5: ReLU
ReLU 是激活函數的一種,近年來比較多人使用。細節可以參考 [13]。
-----
Q6: Pooling
一般池化區不重疊 [14]。本論文使用重疊的方法,Top-1 錯誤率降低 0.4%,Top-5 降低 0.3%。
-----
Q7: Dropout
很快就講到 dropout 了。Dropout 是很簡單的概念,用在全連接層上。
參考圖3.1,在訓練時丟棄每層上面一些節點,每次丟棄的點是隨機選出,這樣等於每次是在不同的網路上訓練,可以有效避免 overfitting。
圖3.2講的是如果某個節點在訓練時出現的機率是p,由於測試時全部節點都保留,所以權重w要乘上p。
圖3.3是公式,這邊要先講解圖3.5比較清楚。
圖3.5左方是傳統的神經網路,如果我們先隨機產生一個值,1的機率是p,0的機率是(1-p),然後把值乘上權重再加總,這等於說有乘1被保留,乘0被丟棄,這樣就同時說明了圖3.3的公式與圖3.4的 Bernoulli distribution。
[16] 有深入的說明,[17], [18] 則是簡易的解說。Dropconnect [17] 則是 dropout 的特殊型 [16],雖然 [17] 聲稱它是一般化,我支持 [16] 的論點。
圖3.6是幾種激活函數搭配 drop 的比較,有意思的是 tanh 搭配 dropout 之後反而變差了!
Fig. 3.1. Dropout neural net model, p. 1930 [15].
Fig. 3.2. A unit at training time and at test time, p. 1931 [15].
Fig. 3.3. Formulae of a standard and dropout network, p. 1933 [15].
Fig. 3.4. Bernoulli distribution, p. 62 [16].
Fig. 3.5. Standard and dropout network, p. 1934 [15].
Fig. 3.6. Drop and activation function p. 5, [20].
-----
結論:
AlexNet 後續的 ZFNet、VGGNet 等都繼承了它的架構,即使是另一個路線的 GoogLeNet,也使用了它的技巧如 dropout 等 [8],可見 AlexNet 的成功!
-----
References
[1] 2012_Imagenet classification with deep convolutional neural networks
[2] 2014_Visualizing and understanding convolutional networks
[3] 1998_Gradient-Based Learning Applied to Document Recognition
[4] 2016_Mastering the game of Go with deep neural networks and tree search
[5] AI從頭學(一二):LeNet
http://hemingwang.blogspot.tw/2017/03/ailenet.html
[6] AI從頭學(一三):LeNet - F6
http://hemingwang.blogspot.tw/2017/03/ailenet-f6.html
[7] AI從頭學(二五):Kernel Visualizing
http://hemingwang.blogspot.tw/2017/05/aikernel-visualizing.html
[8] AI從頭學(一八):Convolutional Neural Network
http://hemingwang.blogspot.tw/2017/03/aiconvolutional-neural-network_23.html
[9] AI從頭學(一一):A Glance at Deep Learning
http://hemingwang.blogspot.tw/2017/02/aia-glance-at-deep-learning.html
[10] AI從頭學(二六):Aja Huang
http://hemingwang.blogspot.tw/2017/05/aiaja-huang.html
[11] 2009_What is the best multi-stage architecture for object recognition
[12] 2008_Why is real-world visual object recognition hard
[13] mAiLab_0005:Activation Function
http://hemingwang.blogspot.tw/2017/05/mailab0005activation-function.html
[14] mAiLab_0006:Pooling
http://hemingwang.blogspot.tw/2017/05/mailab0006pooling.html
[15] 2014_Dropout, a simple way to prevent neural networks from overfitting
[16] 2016_Deep Learning
[17] 2013_Regularization of neural networks using dropconnect
[18] 2013_Maxout networks
Wednesday, May 31, 2017
Wednesday, May 24, 2017
AI 從頭學(二五):AlphaGo
AI 從頭學(二五):AlphaGo
2017/05/24
以四勝一負在2016年擊敗李世乭的 AlphaGo [1],在2017/5/23,再度以1/4目之差,小勝持黑的柯潔 [2]。AlphaGo 背後的靈魂人物,說是 Aja Huang 也不為過 [1]。
-----
Fig. 1. 黃士傑與AlphaGo對弈李世乭 [1]。
Fig. 2. 第 24 手「大飛」,第 54 手「斷」[2].
-----
Aja Huang 是台師大資工博士,碩士班跟博士班的題目都是圍棋 [1]。看完與柯潔的對奕之後,我特地找了他的博士論文來看 [3],參考文獻裡看似只有一篇跟深度學習有關 [4],其餘多屬強化學習的 MCTS [3]。
不過這篇 backpropagation [4] 並非我們熟悉的 BP 演算法 [5]。回過頭來再看 2016 年 DeepMind 發表的論文 [6],在 Huang 專門的 MCTS 之上,導入近年來最熱的深度學習 [7],Policy Network、Value Network、MCTS 三缺一不可,才是致勝的關鍵。
用 CNN 來下圍棋並非 DeepMind 首創 [8],早在1996年,即有學者提出用類神經網路下圍棋的概念 [9]。
[6]、[7]、[8]、[10] 一路追下去,[10] 這篇應該可以算是 AlphaGo alpha 版,裡面 CNN、TD、MCTS 都有。還不到十年,棋王就已不敵...
更早一點的研究,還有 [11]-[14]。
-----
References
[1] 創造AlphaGo的台灣「土博士」,他們眼中的黃士傑 _ 端傳媒 Initium Media
https://theinitium.com/article/20170116-taiwan-AlphaGo/
[2] 柯潔為何說「輸得沒脾氣」?8 個問題解讀人機大戰第一局 - INSIDE 硬塞的網路趨勢觀察
https://www.inside.com.tw/2017/05/23/analyzing-alphago-versus-ke-jie-round-1
[3] 應用於電腦圍棋之蒙地卡羅樹搜尋法的新啟發式演算法 SC Huang - 臺灣師範大學資訊工程研究所學位論文, 2011
[4] 2009_Backpropagation modification in Monte-Carlo game tree search
[5] AI從頭學(九):Back Propagation
http://hemingwang.blogspot.tw/2017/02/aiback-propagation.html
[6] 2016_Mastering the game of Go with deep neural networks and tree search
[7] 2015_Move evaluation in Go using deep convolutional neural networks
[8] 2014_Teaching deep convolutional neural networks to play Go
[9] 1996_The integration of a priori knowledge into a Go playing neural network
[10] 2008_Mimicking go experts with convolutional neural networks
[11] 2003_Local move prediction in Go
[12] 2003_Evaluation in Go by a neural network using soft segmentation
[13] 1996_The integration of a priori knowledge into a Go playing neural network
[14] 1994_Temporal difference learning of position evaluation in the game of Go
2017/05/24
以四勝一負在2016年擊敗李世乭的 AlphaGo [1],在2017/5/23,再度以1/4目之差,小勝持黑的柯潔 [2]。AlphaGo 背後的靈魂人物,說是 Aja Huang 也不為過 [1]。
-----
Fig. 1. 黃士傑與AlphaGo對弈李世乭 [1]。
Fig. 2. 第 24 手「大飛」,第 54 手「斷」[2].
-----
Aja Huang 是台師大資工博士,碩士班跟博士班的題目都是圍棋 [1]。看完與柯潔的對奕之後,我特地找了他的博士論文來看 [3],參考文獻裡看似只有一篇跟深度學習有關 [4],其餘多屬強化學習的 MCTS [3]。
不過這篇 backpropagation [4] 並非我們熟悉的 BP 演算法 [5]。回過頭來再看 2016 年 DeepMind 發表的論文 [6],在 Huang 專門的 MCTS 之上,導入近年來最熱的深度學習 [7],Policy Network、Value Network、MCTS 三缺一不可,才是致勝的關鍵。
用 CNN 來下圍棋並非 DeepMind 首創 [8],早在1996年,即有學者提出用類神經網路下圍棋的概念 [9]。
[6]、[7]、[8]、[10] 一路追下去,[10] 這篇應該可以算是 AlphaGo alpha 版,裡面 CNN、TD、MCTS 都有。還不到十年,棋王就已不敵...
更早一點的研究,還有 [11]-[14]。
-----
References
[1] 創造AlphaGo的台灣「土博士」,他們眼中的黃士傑 _ 端傳媒 Initium Media
https://theinitium.com/article/20170116-taiwan-AlphaGo/
[2] 柯潔為何說「輸得沒脾氣」?8 個問題解讀人機大戰第一局 - INSIDE 硬塞的網路趨勢觀察
https://www.inside.com.tw/2017/05/23/analyzing-alphago-versus-ke-jie-round-1
[3] 應用於電腦圍棋之蒙地卡羅樹搜尋法的新啟發式演算法 SC Huang - 臺灣師範大學資訊工程研究所學位論文, 2011
[4] 2009_Backpropagation modification in Monte-Carlo game tree search
[5] AI從頭學(九):Back Propagation
http://hemingwang.blogspot.tw/2017/02/aiback-propagation.html
[6] 2016_Mastering the game of Go with deep neural networks and tree search
[7] 2015_Move evaluation in Go using deep convolutional neural networks
[8] 2014_Teaching deep convolutional neural networks to play Go
[9] 1996_The integration of a priori knowledge into a Go playing neural network
[10] 2008_Mimicking go experts with convolutional neural networks
[11] 2003_Local move prediction in Go
[12] 2003_Evaluation in Go by a neural network using soft segmentation
[13] 1996_The integration of a priori knowledge into a Go playing neural network
[14] 1994_Temporal difference learning of position evaluation in the game of Go
Tuesday, May 23, 2017
AI從頭學():Generative Adversarial Nets
AI從頭學():Generative Adversarial Nets
2017/05/23
前言:
施工中...
Summary:
Generative Adversarial Nets (GAN) [1] 自2014年推出以來,引 AI 界起很大的熱潮。GAN 的概念,是由 generative net (GN) 跟 discriminative net (DN) 相互對抗,最後 DN 不再能分辨 GN 生成的圖片是真是假,GN 就成功了(能產生以假亂真的圖片)。Adversarial 的觀念是新的,而 generative 跟 discriminative 的觀念則已超過十年 [2]。
有關 GAN 的簡單介紹,可以參考 [3], [4],較深入的討論,則可參考 [5]-[10]。[11], [12] 則有視覺化的訓練可以參考。
Log likelihood 是學習 GAN 的基礎 [13]-[16]。另外我們可以參考其他的論文來瞭解 GN [17]-[22]。最後則提供徹底掌握 GAN 所需的資料 [23]-[26]。
其實,以上資料並不足以徹底掌握 GAN。Wasserstein GAN [27]-[31] 才是完備的 GAN。而 Kullback–Leibler divergence [32] 與 Jensen–Shannon divergence [33] 算是基礎。
-----
Outline:
1. Formula
2. Generative Net
3. Deep Generative Models
本文重點有三:
1. GAN 公式
2. 生成網路構造
3. 瞭解 GAN 所需之相關資料
-----
Fig. 1.1a. Backpropagate derivatives through generative processes, p. 2 [1].
Fig. 1.1b. Random variable and probability distribution, p. 57 [23].
Fig. 1.1c. Expectation, p. 60 [23].
Fig. 1.1d. Normal distribution, also known as the Gaussian distribution, p. 63 [23].
-----
Fig. 1.2a. D and G play the following two-player minimax game with value function V (G;D), p. 3 [1].
Fig. 1.2b. The model can then be trained by maximizing the log likelihood, p. 2 [1].
Fig. 1.2c. Decomposition into the positive phase and negative phase of learning, p. 608 [23].
Fig. 1.3. Generative adversarial nets are trained by simultaneously updating the discriminative distribution, p. 4 [1].
Fig. 1.4. Minibatch stochastic gradient descent training of generative adversarial nets, p.4 [1].
Fig. 2.1a. DCGAN generator used for LSUN scene modeling, p. 4 [17].
Fig. 2.1b. A 100 dimensional uniform distribution Z, p. 4 [17].
Fig. 2.2. The architecture of the generator in Style-GAN, p. 324 [18].
Fig. 2.3. Text-conditional convolutional GAN architecture, p. 4 [19].
Fig. 2.4. A deconvnet layer (left) attached to a convnet layer (right), p. 822 [20].
Fig. 3.1. Deep generative models, p. vi [23].
Fig. 3.2. Deep learning taxonomy, p. 492 [24].
Fig. 3.3. Chapters 16-19, p. 671 [23].
Fig. 3.4. From section 3.14 to chapter 16, p. 560 [23].
Fig. 4.1. Fully-observed models [6].
Fig. 4.2. Transformation models [6].
Fig. 4.3. Latent bariable models [6].
Fig. 5.1. Probabilistic modeling of natural images, p. 563 [23], p. 8 [26].
Fig. 5.2. An illustration of the slow mixing problem in deep probabilistic models, p. 604 [23].
Fig. 5.3. Positive phase and negative phase, p. 611 [23].
Fig. 5.4. The KL divergence is asymmetric, p. 76 [23].
-----
References
1 GAN
[1] 2014_Generative adversarial nets
[2] 2007_Generative or discriminative, getting the best of both worlds
-----
2 GAN Internet
[3] 生成对抗式网络(Generative Adversarial Networks) – LHY's World
http://closure11.com/%E7%94%9F%E6%88%90%E5%AF%B9%E6%8A%97%E5%BC%8F%E7%BD%91%E7%BB%9Cgenerative-adversarial-networks/
[4] 能根據文字生成圖片的GAN,深度學習領域的又一新星 GigCasa 激趣網
http://www.gigcasa.com/articles/465963
[5] 深度学习与生成式模型 - Solomon1558的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/solomon1558/article/details/52512459
[6] 生成式对抗网络GAN研究进展(一) - Solomon1558的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/solomon1558/article/details/52537114
[7] 生成式对抗网络GAN研究进展(二)——原始GAN - Solomon1558的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/solomon1558/article/details/52549409
[8] 生成式对抗网络GAN研究进展(三)——条件GAN - Solomon1558的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/solomon1558/article/details/52555083
[9] 生成式对抗网络GAN研究进展(四)——Laplacian Pyramid of Adversarial Networks,LAPGAN - Solomon1558的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/solomon1558/article/details/52562851
[10] 生成式对抗网络GAN研究进展(五)——Deep Convolutional Generative Adversarial Nerworks,DCGAN - Solomon1558的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/solomon1558/article/details/52573596
[11] An introduction to Generative Adversarial Networks (with code in TensorFlow) – AYLIEN
http://blog.aylien.com/introduction-generative-adversarial-networks-code-tensorflow/
[12] Adverarial Nets
http://cs.stanford.edu/people/karpathy/gan/
-----
3 log likelihood
[13] 2009_Deep Boltzmann machines
[14] Likelihood function - Wikipedia
https://en.wikipedia.org/wiki/Likelihood_function
[15] 1.4 - Likelihood & LogLikelihood _ STAT 504
https://onlinecourses.science.psu.edu/stat504/node/27
[16] Chapter 18 Confronting the Partition Function
http://www.deeplearningbook.org/contents/partition.html
-----
4 Generator
[17] 2016_Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
[18] 2016_Generative image modeling using style and structure adversarial networks
[19] 2016_Generative adversarial text to image synthesis
[20] 2014_Visualizing and understanding convolutional networks
[21] 2011_Adaptive deconvolutional networks for mid and high level feature learning
[22] 2016_A guide to convolution arithmetic for deep learning
-----
5 Goodfellow
[23] 2016_Deep Learning
https://github.com/HFTrader/DeepLearningBook/raw/master/DeepLearningBook.pdf
[24] 2016_Practical Machine Learning
[25] 2009_Learning multiple layers of features from tiny images
[26] 2011_Unsupervised models of images by spike-and-slab RBMs
-----
6 Goodfellow
[27] 2016_NIPS 2016 Tutorial, Generative Adversarial Networks
-----
7 Wasserstein GAN
[28] 令人拍案叫绝的Wasserstein GAN - 知乎专栏
https://zhuanlan.zhihu.com/p/25071913
[29] 生成式对抗网络GAN有哪些最新的发展,可以实际应用到哪些场景中? - 知乎
https://www.zhihu.com/question/52602529/answer/158727900
[30] 2017_Towards principled methods for training generative adversarial networks
[31] 2017_Wasserstein GAN
[32] 2017_ Improved training of Wasserstein GANs
[33] Kullback–Leibler divergence - Wikipedia
https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence
[34] Jensen–Shannon divergence - Wikipedia
https://en.wikipedia.org/wiki/Jensen%E2%80%93Shannon_divergence
2017/05/23
前言:
施工中...
Summary:
Generative Adversarial Nets (GAN) [1] 自2014年推出以來,引 AI 界起很大的熱潮。GAN 的概念,是由 generative net (GN) 跟 discriminative net (DN) 相互對抗,最後 DN 不再能分辨 GN 生成的圖片是真是假,GN 就成功了(能產生以假亂真的圖片)。Adversarial 的觀念是新的,而 generative 跟 discriminative 的觀念則已超過十年 [2]。
有關 GAN 的簡單介紹,可以參考 [3], [4],較深入的討論,則可參考 [5]-[10]。[11], [12] 則有視覺化的訓練可以參考。
Log likelihood 是學習 GAN 的基礎 [13]-[16]。另外我們可以參考其他的論文來瞭解 GN [17]-[22]。最後則提供徹底掌握 GAN 所需的資料 [23]-[26]。
其實,以上資料並不足以徹底掌握 GAN。Wasserstein GAN [27]-[31] 才是完備的 GAN。而 Kullback–Leibler divergence [32] 與 Jensen–Shannon divergence [33] 算是基礎。
-----
Outline:
1. Formula
2. Generative Net
3. Deep Generative Models
本文重點有三:
1. GAN 公式
2. 生成網路構造
3. 瞭解 GAN 所需之相關資料
-----
Fig. 1.1a. Backpropagate derivatives through generative processes, p. 2 [1].
Fig. 1.1b. Random variable and probability distribution, p. 57 [23].
Fig. 1.1c. Expectation, p. 60 [23].
Fig. 1.1d. Normal distribution, also known as the Gaussian distribution, p. 63 [23].
-----
Fig. 1.2a. D and G play the following two-player minimax game with value function V (G;D), p. 3 [1].
Fig. 1.2b. The model can then be trained by maximizing the log likelihood, p. 2 [1].
Fig. 1.2c. Decomposition into the positive phase and negative phase of learning, p. 608 [23].
Fig. 1.3. Generative adversarial nets are trained by simultaneously updating the discriminative distribution, p. 4 [1].
Fig. 1.4. Minibatch stochastic gradient descent training of generative adversarial nets, p.4 [1].
Fig. 2.1a. DCGAN generator used for LSUN scene modeling, p. 4 [17].
Fig. 2.1b. A 100 dimensional uniform distribution Z, p. 4 [17].
Fig. 2.2. The architecture of the generator in Style-GAN, p. 324 [18].
Fig. 2.3. Text-conditional convolutional GAN architecture, p. 4 [19].
Fig. 2.4. A deconvnet layer (left) attached to a convnet layer (right), p. 822 [20].
Fig. 3.1. Deep generative models, p. vi [23].
Fig. 3.2. Deep learning taxonomy, p. 492 [24].
Fig. 3.3. Chapters 16-19, p. 671 [23].
Fig. 3.4. From section 3.14 to chapter 16, p. 560 [23].
Fig. 4.1. Fully-observed models [6].
Fig. 4.2. Transformation models [6].
Fig. 4.3. Latent bariable models [6].
Fig. 5.1. Probabilistic modeling of natural images, p. 563 [23], p. 8 [26].
Fig. 5.2. An illustration of the slow mixing problem in deep probabilistic models, p. 604 [23].
Fig. 5.3. Positive phase and negative phase, p. 611 [23].
Fig. 5.4. The KL divergence is asymmetric, p. 76 [23].
-----
References
1 GAN
[1] 2014_Generative adversarial nets
[2] 2007_Generative or discriminative, getting the best of both worlds
-----
2 GAN Internet
[3] 生成对抗式网络(Generative Adversarial Networks) – LHY's World
http://closure11.com/%E7%94%9F%E6%88%90%E5%AF%B9%E6%8A%97%E5%BC%8F%E7%BD%91%E7%BB%9Cgenerative-adversarial-networks/
[4] 能根據文字生成圖片的GAN,深度學習領域的又一新星 GigCasa 激趣網
http://www.gigcasa.com/articles/465963
[5] 深度学习与生成式模型 - Solomon1558的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/solomon1558/article/details/52512459
[6] 生成式对抗网络GAN研究进展(一) - Solomon1558的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/solomon1558/article/details/52537114
[7] 生成式对抗网络GAN研究进展(二)——原始GAN - Solomon1558的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/solomon1558/article/details/52549409
[8] 生成式对抗网络GAN研究进展(三)——条件GAN - Solomon1558的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/solomon1558/article/details/52555083
[9] 生成式对抗网络GAN研究进展(四)——Laplacian Pyramid of Adversarial Networks,LAPGAN - Solomon1558的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/solomon1558/article/details/52562851
[10] 生成式对抗网络GAN研究进展(五)——Deep Convolutional Generative Adversarial Nerworks,DCGAN - Solomon1558的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/solomon1558/article/details/52573596
[11] An introduction to Generative Adversarial Networks (with code in TensorFlow) – AYLIEN
http://blog.aylien.com/introduction-generative-adversarial-networks-code-tensorflow/
[12] Adverarial Nets
http://cs.stanford.edu/people/karpathy/gan/
-----
3 log likelihood
[13] 2009_Deep Boltzmann machines
[14] Likelihood function - Wikipedia
https://en.wikipedia.org/wiki/Likelihood_function
[15] 1.4 - Likelihood & LogLikelihood _ STAT 504
https://onlinecourses.science.psu.edu/stat504/node/27
[16] Chapter 18 Confronting the Partition Function
http://www.deeplearningbook.org/contents/partition.html
-----
4 Generator
[17] 2016_Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
[18] 2016_Generative image modeling using style and structure adversarial networks
[19] 2016_Generative adversarial text to image synthesis
[20] 2014_Visualizing and understanding convolutional networks
[21] 2011_Adaptive deconvolutional networks for mid and high level feature learning
[22] 2016_A guide to convolution arithmetic for deep learning
-----
5 Goodfellow
[23] 2016_Deep Learning
https://github.com/HFTrader/DeepLearningBook/raw/master/DeepLearningBook.pdf
[24] 2016_Practical Machine Learning
[25] 2009_Learning multiple layers of features from tiny images
[26] 2011_Unsupervised models of images by spike-and-slab RBMs
-----
6 Goodfellow
[27] 2016_NIPS 2016 Tutorial, Generative Adversarial Networks
-----
7 Wasserstein GAN
[28] 令人拍案叫绝的Wasserstein GAN - 知乎专栏
https://zhuanlan.zhihu.com/p/25071913
[29] 生成式对抗网络GAN有哪些最新的发展,可以实际应用到哪些场景中? - 知乎
https://www.zhihu.com/question/52602529/answer/158727900
[30] 2017_Towards principled methods for training generative adversarial networks
[31] 2017_Wasserstein GAN
[32] 2017_ Improved training of Wasserstein GANs
[33] Kullback–Leibler divergence - Wikipedia
https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence
[34] Jensen–Shannon divergence - Wikipedia
https://en.wikipedia.org/wiki/Jensen%E2%80%93Shannon_divergence
GAN Warm Up 1 - Log Likelihood
GAN Warm Up 1 - Log Likelihood
2017/03/30
前言,GAN 整個寫出來會很長,所以先暖身一下,以免受到運動傷害!
-----
我看版上的同好對 GAN [1] 都蠻感興趣的,當然我自己也是。論文其實不容易看懂,在查閱一些網路文章的解說之後,原理不難瞭解。鑑別網路D要判斷生成網路G的圖片是不是屬於真實的圖片資料庫。
用個很宅的比喻:比克跟神本來就是同一個。一會兒比克出招,神餵招。一會兒神出招,比克餵招。在一連串的練功之後,神再也分辨不出比克生成的圖片是真是假,比克贏了,Goodfellow 就達成了他的目的,讓比克成為超級的偽幣製造者,神退場。
鑑別網路D可以是一般的CNN,生成網路G概念上比較困難。但直觀上只是把鑑別網路D倒過來訓練,餵入亂數,生成圖片。文獻上看到的多是一個一百維的亂數產生器。所以重點還是在訓練。
[1] 裡面有兩個公式,分別是圖1.1a跟圖1.2a。這兩個公式是本篇論文的核心。謹尊Mark的教誨,看到公式不要跳過去,要直指核心,才能花開見佛。所以在上面的概念粗具之後,我們可以來仔細探究這兩個公式為何?
打開統計學課本,其實符號與論文並不一致。後來想到 [2] 裡面有機率的章節,所以可以把統計部分的定義搞定。至於極限與梯度,請自行參閱微積分課本。圖1.1a可以用圖1.1b、1.1c、1.1d把它分解,完全瞭解。分別是隨機變數、期望值函數、以及高斯(常態)分布。
-----
Fig. 1.1a. Gradient, p. 2, [1]
Fig. 1.1b. Random variable, p. 57, [2].
Fig. 1.1c. Expectation function, p. 60, [2].
Fig. 1.1d. Gaussian distribution, p. 63, [2]
-----
接下來是本論文的重頭戲,圖1.2a的訓練公式。主旨要max D, min G。有了上面的定義分解,這個公式只剩下 log 這個可疑份子。如何搞定它,其實論文這一節上頭一開始,圖1.2b就告訴我們可以參考 [3]。有關 log likelihood,可以看一下圖1.2c,在 [2] 的18.1這一節用了兩頁解釋。
-----
Fig. 1.2a. GAN training formula, p. 2, [1].
Fig. 1.2b. Log likelihood reference 1, p. 2, [1].
Fig. 1.2c. Log likelihood reference 1, p. 606, [2].
-----
所以如果 log likelihood 搞定,GAN 應該也差不多就搞定了!
有這麼簡單嗎?其實我認為 GAN 算是 Goodfellow 的 Debut,為了讓大家了解 [1],他才寫了 [2],GAN 躲在 [2] 的第二十章 DEEP GENERATIVE MODELS 裡的第十節的 Deep Generative Nets 的第四小節 Generative Adversarial Neworks 裡,但整本書,包括前面的數學、中間基本的章節、後面高段的模型,都可說是用來烘托 GAN 的出場!
所以,GAN 可說不難,也可說很難。
本段熱身,報告完畢!
-----
References
[1] 2014_Generative adversarial nets
[2] 2016_Deep Learning
http://www.deeplearningbook.org/
[3] 2009_Deep Boltzmann machines
-----
Marcel Wang: http://www.cs.toronto.edu/....../Deep_generative_models.pdf
李盈: https://nips.cc/Conferences/2016/Schedule?showEvent=6202NIPS 2016 tutorial 也有詳細的介紹 包含generative model有甚麼用途、如何work、和一些研究。 論文版:https://arxiv.org/abs/1406.2661
Marcel Wang: http://aliensunmin.github.io/project/accv16tutorial/media/generative.pdf
2017/03/30
前言,GAN 整個寫出來會很長,所以先暖身一下,以免受到運動傷害!
-----
我看版上的同好對 GAN [1] 都蠻感興趣的,當然我自己也是。論文其實不容易看懂,在查閱一些網路文章的解說之後,原理不難瞭解。鑑別網路D要判斷生成網路G的圖片是不是屬於真實的圖片資料庫。
用個很宅的比喻:比克跟神本來就是同一個。一會兒比克出招,神餵招。一會兒神出招,比克餵招。在一連串的練功之後,神再也分辨不出比克生成的圖片是真是假,比克贏了,Goodfellow 就達成了他的目的,讓比克成為超級的偽幣製造者,神退場。
鑑別網路D可以是一般的CNN,生成網路G概念上比較困難。但直觀上只是把鑑別網路D倒過來訓練,餵入亂數,生成圖片。文獻上看到的多是一個一百維的亂數產生器。所以重點還是在訓練。
[1] 裡面有兩個公式,分別是圖1.1a跟圖1.2a。這兩個公式是本篇論文的核心。謹尊Mark的教誨,看到公式不要跳過去,要直指核心,才能花開見佛。所以在上面的概念粗具之後,我們可以來仔細探究這兩個公式為何?
打開統計學課本,其實符號與論文並不一致。後來想到 [2] 裡面有機率的章節,所以可以把統計部分的定義搞定。至於極限與梯度,請自行參閱微積分課本。圖1.1a可以用圖1.1b、1.1c、1.1d把它分解,完全瞭解。分別是隨機變數、期望值函數、以及高斯(常態)分布。
-----
Fig. 1.1a. Gradient, p. 2, [1]
Fig. 1.1b. Random variable, p. 57, [2].
Fig. 1.1c. Expectation function, p. 60, [2].
Fig. 1.1d. Gaussian distribution, p. 63, [2]
-----
接下來是本論文的重頭戲,圖1.2a的訓練公式。主旨要max D, min G。有了上面的定義分解,這個公式只剩下 log 這個可疑份子。如何搞定它,其實論文這一節上頭一開始,圖1.2b就告訴我們可以參考 [3]。有關 log likelihood,可以看一下圖1.2c,在 [2] 的18.1這一節用了兩頁解釋。
-----
Fig. 1.2a. GAN training formula, p. 2, [1].
Fig. 1.2b. Log likelihood reference 1, p. 2, [1].
Fig. 1.2c. Log likelihood reference 1, p. 606, [2].
-----
所以如果 log likelihood 搞定,GAN 應該也差不多就搞定了!
有這麼簡單嗎?其實我認為 GAN 算是 Goodfellow 的 Debut,為了讓大家了解 [1],他才寫了 [2],GAN 躲在 [2] 的第二十章 DEEP GENERATIVE MODELS 裡的第十節的 Deep Generative Nets 的第四小節 Generative Adversarial Neworks 裡,但整本書,包括前面的數學、中間基本的章節、後面高段的模型,都可說是用來烘托 GAN 的出場!
所以,GAN 可說不難,也可說很難。
本段熱身,報告完畢!
-----
References
[1] 2014_Generative adversarial nets
[2] 2016_Deep Learning
http://www.deeplearningbook.org/
[3] 2009_Deep Boltzmann machines
-----
Marcel Wang: http://www.cs.toronto.edu/....../Deep_generative_models.pdf
李盈: https://nips.cc/Conferences/2016/Schedule?showEvent=6202NIPS 2016 tutorial 也有詳細的介紹 包含generative model有甚麼用途、如何work、和一些研究。 論文版:https://arxiv.org/abs/1406.2661
Marcel Wang: http://aliensunmin.github.io/project/accv16tutorial/media/generative.pdf
Friday, May 19, 2017
AI 從頭學(二七):ZFNet
AI 從頭學(二七):ZFNet
2017/05/19
前言:
學習 DL 的路上充滿幸運:
第一個是建議實做 LeNet。 然後才有 LeNet實作團。
第二個是 Jason 辦了讀書會一起研讀 Goodfellow 以及 Sutton 的教科書,雖然時間受限沒辦法參加讀書會,但是瀏覽過這兩本書後,對 DRL 的架構清楚很多。
第三個是 Winston 推薦了兩篇論文,還讓他的學生幫忙指導以及討論。現在 DRL實作團也誕生了!
答謝的最好方式是散播幸運...
-----
Summary:
AlexNet [1] 的 feature maps 怎麼 show 出來,[2] 有詳細的說明。[3] 也展示了最後一層的 feature maps。值得一提的是 [3] 的架構被 GoogLeNet [4] 所吸收。
本篇只簡單描述研讀 kernel visualizing 的經驗。
-----
Fig. 1.1. An illustration of the architecture of AlexNet [1].
圖1.1 是 AlexNet 的架構,大體上可以想成是巨型的 LeNet。之所以分成兩路,其中一個原因是硬體的限制,要拆開分別在兩塊 GPU 上面跑。
Fig. 1.2. 96 convolutional kernels learned by the first convolutional layer. The top 48 kernels were learned on GPU 1 while the bottom 48 kernels were learned on GPU 2 [1].
圖1.2 是 conv layer 1 的 feature maps,上面可以看到是一些 edge filters。下面則跟色彩有關。這兩者構成一張圖。
關於這張圖,我的好奇心是:線條跟彩度是如何被分開在兩塊 GPU,隨機的嗎?
Fig. 2.1a. Architecture of revised AlexNet model [2].
圖2.1a 是 AlexNet 修改過的架構。主要是靠窮舉法去把適合的參數找出來。
Fig. 2.1b. A deconvnet layer (left) attached to a convnet layer (right) [2].
圖2.1b 展示了 feature maps 如何利用 deconvolution 「還原」成可以「看」的圖。除了最底層的 edge filter 比較直觀之外,高層的 feature maps 大部分是看不出東西的。說「大部分」,是因為有些最高層的 feature maps 可以看出物體的形狀,參考 [3]。
Fig. 2.2a. Visualization of features in a fully trained model [2].
圖2.2a 是 Layer 1 跟 Layer 2 的視覺化 features。經還原後可以看出 Layer 2 已經有比直線更複雜一點的結構。
Fig. 2.2b. (a): 1st layer features [1]. (b): 1st layer features [2]. (c): 2nd layer features [1]. (d): 2nd layer features [2].
圖2.2b 比較 AlexNet 跟改良版有何不同。改良版的圖「漂亮」一點。所謂漂亮,這裡指的是彩度跟解析都提高了!意味著訊息被保留較多。
Fig. 2.2c. Visualization of features in a fully trained model [2].
圖2.2c 是最高層的 feature maps 「被還原」,可以看到跟原圖很接近的形狀。
Fig. 2.2d. Three test examples [2].
圖2.2d,(a)是輸入的圖片。(b)是熱圖:高強度的數值以紅色表示,低強度的數值則是以藍色來表示。(c)是利用 deconvolution 把 feature maps 還原成類似原圖。(d)是這個圖是「對」的圖的機率高不高。(e)是這個圖最可能是哪一種。機率圖可參考 [6]。
Fig. 3.1a. Comparison of linear convolution layer and mlpconv layer [3].
圖3.1a,左邊是傳統的 convolutional layers,右邊可以看到插進去兩層的全連接層。
Fig. 3.1b. The overall structure of Network In Network [3].
圖3.1b,NiN的架構。
Fig. 3.2a. Visualization of the feature maps from the last mlpconv layer [3].
圖3.2a是接近輸出層的 feature maps。
Fig. 3.2b. Visualization of the automobile feature map from the last mlpconv layer [3].
Fig. 3.2c. Visualization of the automobile feature map from the last mlpconv layer [3].
汽車是最明顯的!
-----
結論:
要看中間的 feature maps,可以利用 deconvolution [2]。
-----
References
[1] 2012_Imagenet classification with deep convolutional neural networks
[2] 2014_Visualizing and understanding convolutional networks
[3] 2013_Network in network
[4] 2015_Going deeper with convolutions
[5] Heat map - Wikipedia
https://en.wikipedia.org/wiki/Heat_map
[6] Handwritten Digit Recognition Using A Naive Bayes Classifier Trained With MNIST _ Me, Myself and AI
https://gettingintoai.wordpress.com/2014/09/01/firstmlexperience/
2017/05/19
前言:
學習 DL 的路上充滿幸運:
第一個是建議實做 LeNet。 然後才有 LeNet實作團。
第二個是 Jason 辦了讀書會一起研讀 Goodfellow 以及 Sutton 的教科書,雖然時間受限沒辦法參加讀書會,但是瀏覽過這兩本書後,對 DRL 的架構清楚很多。
第三個是 Winston 推薦了兩篇論文,還讓他的學生幫忙指導以及討論。現在 DRL實作團也誕生了!
答謝的最好方式是散播幸運...
-----
Summary:
AlexNet [1] 的 feature maps 怎麼 show 出來,[2] 有詳細的說明。[3] 也展示了最後一層的 feature maps。值得一提的是 [3] 的架構被 GoogLeNet [4] 所吸收。
本篇只簡單描述研讀 kernel visualizing 的經驗。
-----
Fig. 1.1. An illustration of the architecture of AlexNet [1].
圖1.1 是 AlexNet 的架構,大體上可以想成是巨型的 LeNet。之所以分成兩路,其中一個原因是硬體的限制,要拆開分別在兩塊 GPU 上面跑。
Fig. 1.2. 96 convolutional kernels learned by the first convolutional layer. The top 48 kernels were learned on GPU 1 while the bottom 48 kernels were learned on GPU 2 [1].
圖1.2 是 conv layer 1 的 feature maps,上面可以看到是一些 edge filters。下面則跟色彩有關。這兩者構成一張圖。
關於這張圖,我的好奇心是:線條跟彩度是如何被分開在兩塊 GPU,隨機的嗎?
Fig. 2.1a. Architecture of revised AlexNet model [2].
圖2.1a 是 AlexNet 修改過的架構。主要是靠窮舉法去把適合的參數找出來。
Fig. 2.1b. A deconvnet layer (left) attached to a convnet layer (right) [2].
圖2.1b 展示了 feature maps 如何利用 deconvolution 「還原」成可以「看」的圖。除了最底層的 edge filter 比較直觀之外,高層的 feature maps 大部分是看不出東西的。說「大部分」,是因為有些最高層的 feature maps 可以看出物體的形狀,參考 [3]。
Fig. 2.2a. Visualization of features in a fully trained model [2].
圖2.2a 是 Layer 1 跟 Layer 2 的視覺化 features。經還原後可以看出 Layer 2 已經有比直線更複雜一點的結構。
Fig. 2.2b. (a): 1st layer features [1]. (b): 1st layer features [2]. (c): 2nd layer features [1]. (d): 2nd layer features [2].
圖2.2b 比較 AlexNet 跟改良版有何不同。改良版的圖「漂亮」一點。所謂漂亮,這裡指的是彩度跟解析都提高了!意味著訊息被保留較多。
Fig. 2.2c. Visualization of features in a fully trained model [2].
圖2.2c 是最高層的 feature maps 「被還原」,可以看到跟原圖很接近的形狀。
Fig. 2.2d. Three test examples [2].
圖2.2d,(a)是輸入的圖片。(b)是熱圖:高強度的數值以紅色表示,低強度的數值則是以藍色來表示。(c)是利用 deconvolution 把 feature maps 還原成類似原圖。(d)是這個圖是「對」的圖的機率高不高。(e)是這個圖最可能是哪一種。機率圖可參考 [6]。
Fig. 3.1a. Comparison of linear convolution layer and mlpconv layer [3].
圖3.1a,左邊是傳統的 convolutional layers,右邊可以看到插進去兩層的全連接層。
Fig. 3.1b. The overall structure of Network In Network [3].
圖3.1b,NiN的架構。
Fig. 3.2a. Visualization of the feature maps from the last mlpconv layer [3].
圖3.2a是接近輸出層的 feature maps。
Fig. 3.2b. Visualization of the automobile feature map from the last mlpconv layer [3].
Fig. 3.2c. Visualization of the automobile feature map from the last mlpconv layer [3].
汽車是最明顯的!
-----
結論:
要看中間的 feature maps,可以利用 deconvolution [2]。
-----
References
[1] 2012_Imagenet classification with deep convolutional neural networks
[2] 2014_Visualizing and understanding convolutional networks
[3] 2013_Network in network
[4] 2015_Going deeper with convolutions
[5] Heat map - Wikipedia
https://en.wikipedia.org/wiki/Heat_map
[6] Handwritten Digit Recognition Using A Naive Bayes Classifier Trained With MNIST _ Me, Myself and AI
https://gettingintoai.wordpress.com/2014/09/01/firstmlexperience/