Monday, May 21, 2018

AI 從頭學(三六):YOLO v1

AI 從頭學(三六):YOLO v1

2018/05/21

前言:

YOLO 可說是 object detection 第一個成功的 end-to-end(整合良好,不是好幾個演算法湊成一個)的演算法。而後的 YOLO v2 與 v3 更在效能與準確率都取得了極大的成功。本文簡介 YOLO v1 的架構與原理。

-----

Summary:

在學習 YOLO [1], [2] 之前,必須對 mAP [3] 與 NMS [4] 有基本的認識,才能夠進一步探討 YOLO 這個 object detection 演算法。本文參考了網路上 YOLO 的說明文章 [5]-[16] 與程式碼[17]-[21]。最後說明為何使用 Leaky ReLU 這個 activation function [22]-[24]。

-----


Fig. 1. The YOLO Detection System [1].

-----

Outline

一、YOLO
二、Model
三、Loss Function
四、NMS
五、Leaky ReLU

-----

一、YOLO

YOLO 這個 object detection 的演算法主要可分為三個步驟。第一、輸入的圖片先把它更新到 448x448 的正方形大小。第二、整張圖片放入一個 CNN 網路運算。第三、演算法最後的輸出是幾個物件的中心、大小、與類別的 confidence。參考圖1,左邊 0.64 的可能是人,中間 0.30 的可能性是狗,右邊 0.28 的可能性是馬(示範圖片不能算是一個好的結果)。
 
-----

二、Model

YOLO 的作法是先把正方形平均分為 7x7 個小塊。每個小塊可以預測兩個物件框的中心位置、大小、與類別。限制條件是中心位置必須落在小塊裡面。

所以一開始的輸出會有 98 個可能物件,去掉無效的框框(演算法認為不是一個物體),然後透過 NMS [4] 把重複的物件去除。然後再根據這個物件框的最大可能類別,最後就是圖2右邊識別出來的三個物件。

圖2是模型的原理,可以搭配圖3.1與圖3.2一起理解。

首先分成 7x7 個小塊。每個小塊分別可以產生兩個建議框,資訊包含框的中心 (x, y)(必須落於小塊內)、框的寬高 w, h,以及框框是物件,或者非物件。如圖2中間上方所示。這 10 個 bytes 也就是圖3.1最後輸出的前十個資訊。

圖2中間下方則是每個小塊最有可能的類別(二十種其可信度最高者),類別的資訊是由上面的框框決定。這 20 個 bytes 也就是圖3.1最後輸出的後二十個資訊。二十個可信度由兩個框框共享,所以這小塊延伸的兩個框框預測的是同一種物件(可信度最高那種)。如果小塊內有兩個物件,那只能預測出比較大的那一個。

由圖2中間上方可以看到重複性非常高,所以 NMS 是很有必要的。



Fig. 2. The Model [1].

-----

三、Loss Function

Loss function 可說是整個 YOLO 演算法的重點。重點中的重點則在於圖3.1最右邊,CNN 的輸出。 也就是圖2在論文中的說明: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。



Fig. 3.1. The Architecture [1].

-----

如圖3.2,Loss function 希望中心點 (x, y) 要對(第一行)。框框 w, h 要 match(第二行),由於希望減低大框框位移錯誤的比重,所以加上根號 [6], [7], [10], [11]。這個參考圖3.4很容易理解,小 box 的橫軸值較小,發生偏移時,反應到 y 軸上相比大 box 要大 [7]。第三、四行分別為框框被判定是物件還是非物件,非物件重要性降低,係數設為0.5。另外,座標的重要性比較高,係數設為5,如圖3.3所說明。最後則是分類(第五行)。

這邊有個補充,Sheng-min Huang:「7*7 所以會有 49個 cells,x, y 其實只有在算物件在這一格 cell 裡的位置,真正圖裡的位置要先找出 cell 的位置再加上 x, y。」

基本上,就是希望透過訓練集的資料更新網路的 weighting values,以達到較小的誤差值。這跟一般 CNN 沒有不同,只是 YOLO 連物件座標都預測了!


Fig. 3.2. Loss function [1].



Fig. 3.3. Parameters [1].



Fig. 3.4. Root function [7].

-----

四、NMS

比較特別的一點是,圖3.1的網路輸出之後,要先經過 NMS 去除重複的物件,然後再計算第三節的 loss。

「接下來,我們要去解析網絡的預測結果,這裡採用了第一種預測策略,即判斷預測框類別,再 NMS,多虧了 TF 提供了 NMS 的函數 tf.image.non_max_suppression,其實實現起來很簡單,所有的細節前面已經交代了。」[17]

-----

五、Leaky ReLU

在 AlexNet 大獲成功之後,ReLU 廣受歡迎,YOLO 使用更新的 Leaky ReLU [22]-[24]。

因為「ReLU 會使部分神經元的輸出為0,可以讓神經網路變得稀疏,緩解過度擬合的問題。但衍生出另一個問題是,如果把一個神經元停止後,就難以再次開啟(Dead ReLU Problem),因此又有 Leaky ReLU 類等方法」來解決這個問題 [22]。

-----

結論:

YOLO 這篇論文前後看了很久,但只要先搞清楚 mAP、NMS,那 YOLO 其實只是利用 CNN 同時判斷框框的位置與大小。講是容易,但能夠想到這一層,YOLO 可說是天才之作。

-----

References

[1] 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

[2] YOLO论文翻译——中文版
http://noahsnail.com/2017/08/02/2017-8-2-YOLO%E8%AE%BA%E6%96%87%E7%BF%BB%E8%AF%91%E2%80%94%E2%80%94%E4%B8%AD%E6%96%87%E7%89%88/

[3] Machine Learning Concept(一):Mean Average Precision(mAP)
http://hemingwang.blogspot.tw/2018/04/machine-learning-conceptmean-average.html

[4] Machine Learning Concept(二):Non-Maximum Suppression(NMS)
http://hemingwang.blogspot.tw/2018/04/machine-learning-conceptnon-maximum.html

-----

基本說明

[5] YOLO — You Only Look Once 介紹 – Chenchou LO – Medium
https://medium.com/@chenchoulo/yolo-%E4%BB%8B%E7%B4%B9-4307e79524fe

[6] 论文阅读笔记:You Only Look Once  Unified, Real-Time Object Detection - CSDN博客
https://blog.csdn.net/tangwei2014/article/details/50915317

[7] 图解YOLO
https://zhuanlan.zhihu.com/p/24916786 

[8] YOLO详解
https://zhuanlan.zhihu.com/p/25236464 

[9] YOLO模型原理-大数据算法
http://x-algo.cn/index.php/2017/02/28/1767/

[10] You Only Look Once  Unified, Real-Time Object Detection(YOLO)
https://zhuanlan.zhihu.com/p/31427164

[11] RCNN学习笔记(6):You Only Look Once(YOLO) Unified, Real-Time Object Detection - CSDN博客
https://blog.csdn.net/u011534057/article/details/51244354

-----

非基本說明

[12] 深度学习之目标检测-YOLO算法(一) – Eric Fan
https://www.fanyeong.com/2018/01/30/cnn-object-detection-yolo-part1/

[13] 深度学习之目标检测-YOLO算法(二) – Eric Fan
https://www.fanyeong.com/2018/01/31/cnn-object-detection-yolo-part2/

[14] YOLO解读 - 任广辉的博客 _ Sundrops Blog
http://renguanghui.com/2017/11/30/yolo/ 

[15] IOU
DEEP LEARNING之三十六:YOLO 算法(You Only Look Once) – Rethink
http://www.rethink.fun/index.php/2018/03/05/deep-learning36/

[16] C4W3L09 YOLO Algorithm - YouTube
https://www.youtube.com/watch?v=9s_FpMpdYW8

-----

代碼

[17] YOLO算法的原理与实现 - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1052865
 
[18] YOLO,一种简易快捷的目标检测算法 _ 雷锋网
https://www.leiphone.com/news/201801/VfYDZHC7Xa6hJXEK.html 

[19] GitHub - MashiMaroLjc_YOLO  implement the YOLO algorithm using MXNet_Gluon
https://github.com/MashiMaroLjc/YOLO

[20] Darknet  Open Source Neural Networks in C
https://pjreddie.com/darknet/

[21] GitHub - pjreddie_darknet  Convolutional Neural Networks
https://github.com/pjreddie/darknet

-----

Leaky ReLU

[22] 深度學習:使用激勵函數的目的、如何選擇激勵函數 Deep Learning   the role of the activation function _ Mr. Opengate
http://mropengate.blogspot.tw/2017/02/deep-learning-role-of-activation.html

[23] cs231n_2017_lecture6
http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture6.pdf

[24] Ramachandran, Prajit, Barret Zoph, and Quoc V. Le. "Searching for activation functions." (2018).
https://openreview.net/pdf?id=Hkuq2EkPf
https://arxiv.org/pdf/1710.05941.pdf  

Tuesday, May 15, 2018

AI創業日記(六):Minimum Viable Product(MVP)

AI創業日記(六):Minimum Viable Product(MVP)

2017/03/02

前言:

核心成員與商業模式簡介。

-----

Summary:

本「音樂生理學」的研究已進行十年以上,並有多篇論文發表 [1]。以美國為例,安眠藥在美國的市場規模是美金$1.5 billion (2014),可以作為「睡眠音樂」市場預估的參考[2]。

MVP 的部分,目前屬於機密,對此有興趣者,請透過 LinkedIn 聯繫,謝謝!

本團隊從原本三人 [5] 擴增到四人。目前成員以交大博士為主,更多的訊息列於下方。

-----



* Top 10 Best One Piece Characters.

-----

◎ 執行長(CEO):交大電控 PhD。
https://www.linkedin.com/in/marcel-wang-3a988b7a/

-----

研發部:

工業4.0的架構為 ABCI(AI、Big Data、Cloud、IoT)以方便記憶,列舉時則以資料流為順序,前端為物聯網,資料透過雲端儲存,最後是大數據與人工智慧的分析。

◎ IoT
經理:美國賓州大學資工碩士。
專長:Android、Front-end、Back-end。目前負責開發 proto-type。

◎ Cloud

◎ Big Data
大數據架構師:交大資管 PhD。
專長:Hadoop 生態系。目前為海外某公司首席大數據架構師。

◎ AI
資料科學家:交大電控 PhD。
專長:Machine Learning / Deep Learning。目前為某公司資料科學家。

-----

Note *
Top 10 Best One Piece Characters - YouTube
https://www.youtube.com/watch?v=Mz6icVxFr3c  

-----

References


[1] AI創業日記(一):音樂生理學
http://hemingwang.blogspot.tw/2017/09/blog-post.html

[2] AI創業日記(二):市場調查
http://hemingwang.blogspot.tw/2017/09/ai.html

[3] AI創業日記(三):商業模式
http://hemingwang.blogspot.tw/2017/11/aibusiness-model.html

[4] AI創業日記(四):商業模式的討論
http://hemingwang.blogspot.tw/2017/11/ai-1.html

[5] AI創業日記(五):團隊介紹
http://hemingwang.blogspot.tw/2017/11/ai.html

Tuesday, May 08, 2018

Machine Learning Concept(二):Non-Maximum Suppression(NMS)

Machine Learning Concept(二):Non-Maximum Suppression(NMS)

2018/05/08

前言:

物件偵測時,難免會發生重複偵測的現象,大部分演算法都會附加一個 NMS 演算法來處理,但這個功能有沒有可能直接嵌入 CNN 呢?

Summary:

本文討論 object detection [1] 中,YOLO 演算法 [2] 與 Non-Maximum Suppression(NMS,刪除相似偵測)[3]-[8] 的關係。

-----



Fig. 1. Non-Maximum Suppression(NMS)[4].

-----

Outline

一、Non-Maximum Suppression(NMS)
二、YOLO and NMS

-----

一、Non-Maximum Suppression(NMS)

如圖1 所示,在 object detection 中,有時會出現重複偵測的狀況,譬如圖1左有三個相似的偵測結果,置信度分別是 0.9、0.8、0.7,這時你只能留下一個置信度最高的框框,把其餘的刪除,這就是 Non-Maximum Suppression(NMS)。

「非極大值抑制的流程如下:

a. 根據置信度得分進行排序。
b. 選擇置信度最高的比邊界框添加到最終輸出列表中,將其從邊界框列表中刪除。
c. 計算所有邊界框的面積。
d. 計算置信度最高的邊界框與其它候選框的 IoU。
e. 刪除IoU大於閾值的邊界框 重複上述過程,直至邊界框列表為空。」[4]

根據以上的演算法加以說明:

a. 必須是要同一類別。
b. 先找出一個置信度最高的框框,假定命名為 T (Target)。輸出列表數目為1。
c ~ e. 設定一個閾值,把跟 T 的 IoT [5] 高於閾值的框框都刪除掉。假定邊界框列表還有一些,那要再挑一個到輸出列表,這時輸出列表數目為2,然後再根據閾值刪除框框,依此原則反覆進行。

重點在於閾值的設定,以圖1為例,如果閾值設為 0.6,則會留下 3 個建議框,0.5 會留下 2 個,0.4 才能剩下一個 [4]。
 
-----

二、YOLO and NMS 

如圖2 所示,YOLO 的最後一步驟是 NMS。

以 YOLO 的演算法,出現圖1左的三個框框可能性應該很低(?),最多就是出現兩個框框,這時就可以套用 NMS 去掉一個。

TensorFlow 有提供 NMS 的函式:tf.image.non_max_suppression [6]-[8],YOLO 使用 NMS 的時機則在 CNN 輸出之後,計算 loss 之前。

-----


Fig. 2. YOLO [2].

-----

Conclusion

以 NMS 使用的時機而言,YOLO 「勉強」稱的上是 ent-to-end 的設計,如果 NMS 能由神經網路直接完成,那就更酷了!

-----

References

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

[2]  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

[3] 非極大值抑制(Non-Maximum Suppression,NMS) - 掃文資訊
https://hk.saowen.com/a/ee16d85c2614981f2c5bc9f20ce37b806546b4b954fdbea87cba09774e02267f

[4] 非極大值抑制(Non-Maximum Suppression) - 掃文資訊
https://hk.saowen.com/a/be0b7a61e12326c4d8c6b509b2d2c4a9fce9331ea3bfd81271c1e63dd2e78f18

[5] Machine Learning Concept(一):Mean Average Precision(mAP)
http://hemingwang.blogspot.tw/2018/04/machine-learning-conceptmean-average.html

[6] YOLO算法的原理与实现 - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1052865 

[7] tf.image.non_max_suppression  _  TensorFlow
https://www.tensorflow.org/api_docs/python/tf/image/non_max_suppression

[8] tensorflow_image_ops_impl.py at r1.8 · tensorflow_tensorflow · GitHub
https://cloud.tencent.com/developer/article/1052865

Machine Learning Concept(一):Mean Average Precision(mAP)

Machine Learning Concept(一):Mean Average Precision(mAP)

2018/05/08

前言:

R-CNN 系列已經看了一陣子,YOLO 系列是目前正在看的。要知道這些演算法有多好,你得先知道「好」的標準何在?

Summary:

物件偵測 [1] 的第一步應該是瞭解 mAP 的計算方式 [2]-[11]。本文從基本觀念 [2]-[6] 出發,另外找了相關討論 [7]-[9] 與原始碼 [10],最後是補充資料 [11]。相關資料再配上本文的說明,讀者應可對物件偵測有初步的瞭解。

-----



Fig. 1. Object detection [1].

-----

Outline

一、Object Detection
二、IoU
三、Precision / Recall
四、Average Precision(11-point interpolated average precision)
五、Average Precision(PASCAL VOC 2010)
六、Mean Average Precision
七、mAP@[.5 .95]
八、公式(程式)

-----

一、Object Detection

Mean average precision(mAP)是 object detection 演算法的評估標準。

Object detection,一般翻譯為物件偵測或物體偵測。如圖1 所示,一張圖片,或一個影片的停格,先框出物件,再根據框框裡的物件加以分類,標示名稱,這就是 object detection。

傳統較有名的物件偵測演算法有 DPM、Selective Search 等,新一代的深度學習演算法則有 R-CNN 系列與 YOLO 系列 [1]。

-----
 
二、IoU

一般 object detection 演算法會先在一些資料集上進行訓練與測試,例如 PASCAL 等 [4]。資料集先由人工(或專家)將物件的框框與類別設定好。

演算法選出的框框,不會(不一定會)百分之百與人工設定的框框符合,將這兩個框框的交集除以聯集,是一個判斷標準,一般是設定為 0.5,高於這個值,則表示演算法「偵測」到一個物件,如圖2 所示 [2]。

至於偵測的「物件」是否「存在」,或者這個物件是否被標示為正確的類別,這在下方會繼續說明。



Fig. 2. Intersection over union [2].

-----

三、Precision / Recall

Precision / Recall 有一些不同的翻譯名稱,在此直接以英文跟圖片加以理解。

Precision / Recall,看圖3 則一目了然。

圓圈裡,是所有檢測到的物件(positives),淺綠色的部分是標示正確的(true positives),粉紅色的部分是標示錯誤的(false positives)。

左邊的矩形,是所有應該檢測出來的物件,半圓裡的部分是檢測出來的(true positives),半圓以外的部分,是沒有檢測出來的(false negatives)。

Precision,是演算法偵測到的物件總數裡,有幾成是正確的物件。
Recall 則是全部該偵測出來的物體,演算法檢測出幾成。



Fig. 3. Precision and Recall [3].

-----

四、Average Precision(11-point interpolated average precision)

圖4.1a 是一個測試結果,類別假定為汽車好了。

你偵測出「可能」有 20 輛汽車,其「可能性」從 0.91 遞減到 0.01。但是實際上,真正的汽車只有 4 號的 0.91、2 號的 0.76、9 號的 0.38 等六輛。




Fig. 4.1a. Top 20 [4].

以圖4.1b 為例,假定你「選」前五名好了,那你的正確率就是 2 / 5,也就是 0.4。




Fig. 4.1b. Top 5 [4].

「實際多類別分類任務中,我們通常不滿足只通過 top-5 來衡量一個模型的好壞,而是需要知道從 top-1到 top-N(N 是所有測試樣本個數,本文中為20)對應的 precision 和 recall。顯然隨著我們選定的樣本越來也多,recall 一定會越來越高,而 precision 整體上會呈下降趨勢。把 recall 當成橫坐標,precision 當成縱坐標,即可得到常用的 precision-recall 曲線。」[4]




Fig. 4.1c. Top 6 - 20 [4].

圖4.2 可以看到,Top 1 是 1 / 1,Top 2 是 2 / 2。
Top 3 到 Top 5 分別是 2 / 3、2 / 4、2 / 5。垂直遞減。
Top 6 與 Top 7 分別是 3 / 6、4 / 7。遞增。 
Top 8 到 Top 20 以此類推。


 

Fig. 4.2. Average Precision(11-point interpolated average precision)[4].

-----

五、Average Precision(PASCAL VOC 2010)

PASCAL 競賽在 2010 年開始,使用不同的計算方式。

圖4.3 跟 圖4.1 是同一份資料,但呈現、與計算的方式不同。主要是它沒有遞增的片段,全部是單調遞減。

執行上是以 Recall 為主,同樣 Recall 的取為一組,這組後面如果有更大的 Precision,就以後面為主。

以圖4.3為例。第三組的 Precision 是 3/6,但因為第四組的 4/7 更高,所以就採用第四組的 Precision 當成第三組的。因此得到圖4.4。



Fig. 4.3. Top 20 [4].



Fig. 4.4. Average Precision(PASCAL VOC 2010)[4].

-----

圖4.5 可以看出兩種方法的差別。AP 則是計算藍色部分所佔的比率。



Fig. 4.5. Precision monotonically decreasing [2].

-----

六、Mean Average Precision

瞭解了 AP 之後,mAP 其實就是把多個類別的 AP 再取平均。如圖5.1 所示。



Fig. 5.1 mAP [2].

圖5.2 則是 FP 跟 TP 個數的統計。這邊會有一個小問題,就是每個類別的物件要一樣多才公平嗎?




Fig. 5.2. Detected classes (36) [2].

-----

七、mAP@[.5 .95]

mAP@[.5:.95](someone denoted mAP@[.5,.95]) means average mAP over different IoU thresholds, from 0.5 to 0.95, step 0.05 (0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95). [6]

IoU 取 0.5 可以計算 mAP,從 0.5 到 0.95 每 0.05 都來算一次 mAP 再平均,又是一種衡量的標準。

-----

八、公式(程式)

以上的觀念都瞭解之後,程式部分請自行參考 [7], [10]。

-----

Conclusion

瞭解 mAP 是 object detection 的第一步,至於如果同一物件被重複偵測,有好幾個類似的框框,那要如何處理?這也是很重要,後續會再討論!

-----

References

一、背景

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

二、基本

[2] GitHub - Cartucho_mAP  mean Average Precision - This code will evaluate the performance of your neural net for object recognition
https://github.com/Cartucho/mAP 

[3] Precision and recall - Wikipedia
https://en.wikipedia.org/wiki/Precision_and_recall

[4] 多标签图像分类任务的评价方法-mAP_花心大罗博_新浪博客
http://blog.sina.com.cn/s/blog_9db078090102whzw.html

[5] The PASCAL Visual Object Classes Challenge 2010 (VOC2010)
http://host.robots.ox.ac.uk/pascal/VOC/voc2010/

[6] computer vision - What does the notation mAP@[.5 .95] mean  - Data Science Stack Exchange
https://datascience.stackexchange.com/questions/16797/what-does-the-notation-map-5-95-mean 
 
-----

三、討論

[7] mean average precision(MAP)在计算机视觉中是如何计算和应用的? - 知乎
https://www.zhihu.com/question/41540197

[8] machine learning - mAP metric in object detection and computer vision - Stack Overflow
https://stackoverflow.com/questions/36274638/map-metric-in-object-detection-and-computer-vision

[9] machine learning - How to calculate mAP for detection task for the PASCAL VOC Challenge  - Data Science Stack Exchange
https://datascience.stackexchange.com/questions/25119/how-to-calculate-map-for-detection-task-for-the-pascal-voc-challenge

-----

四、code

[10] 深度学习  mAP (Mean Average Precision) - CSDN博客
https://blog.csdn.net/JNingWei/article/details/78955536

-----

五、其他

[11] What you wanted to know about Mean Average Precision - FastML
http://fastml.com/what-you-wanted-to-know-about-mean-average-precision/

Friday, March 23, 2018

AI 從頭學(三四):FCN

AI 從頭學(三四):FCN

2018/03/06

前言:

FCN 直接看論文的話,並不容易理解。但搭配網路上的文章與圖片(圖3a與圖5),則一目了然。

Summary:

FCN [1]-[4] 是將傳統 CNN 最後的全連接層改成卷積層,這樣不僅能讓輸入圖片不限定於固定尺寸,並且能夠對每個像素做分類 [5]-[10]。可參考其代碼實現 [11]-[14],與更新的 FCN 模型 [15]-[20]。最後是有關熱圖 (heatmap) 的簡單討論 [21]-[24]。

-----


Fig. 1a. 對每個像素進行分類 [1].

-----


Fig. 1b. 調色版 [11]。

-----

Outline

一、Semantic Segmentation
二、Convolution and Heatmap
三、Deconvolution
四、Flowchart of algorithm
五、Heatmap

-----

一、Semantic Segmentation

何謂像素分類?參考圖1,可以看到圖片的所有像素都被歸類於貓、狗、或背景。 這是用 FCN 做的。用 CNN,我們可以對整張圖片(的主要物件)做分類。那有沒有辦法對每個像素做分類呢?

用 CNN 做像素分類,有其方法上的難處(參考下面第三項),也就其計算上的難處(參考下面一二項)。像素塊比整個物體小很多,不具代表性。另外儲存跟計算量都很大。

「為什麼 CNN 對像素級別的分類很難?1. 存儲開銷很大。例如對每個像素使用的圖像塊的大小為 15×15,然後不斷滑動窗口,每次滑動的窗口給 CNN 進行判別分類,因此則所需的存儲空間根據滑動窗口的次數和大小急劇上升。2. 計算效率低下。相鄰的像素塊基本上是重複的,針對每個像素塊逐個計算卷積,這種計算也有很大程度上的重複。3. 像素塊大小的限制了感知區域的大小。通常像素塊的大小比整幅圖像的大小小很多,只能提取一些局部的特徵,從而導致分類的性能受到限制。」[8]

-----

二、Convolution and Heatmap

FCN,簡單說就是把 CNN 最後面的全連接層改成卷積層,在最後一個卷積層的 feature map(又稱 heatmap)上直接分類。

以圖2為例,上方的 CNN,由於最後是全連接層,所以輸入要固定大小,然後輸出是 1000 種物件的可能性(以圖1來說只有21種)。圖2下方的 FCN,則是將全連接層改為卷積層,這樣輸入就不限定大小,因為最後一層是 heatmap。圖中可以看到,貓的部份在分類為貓的 heatmap 上,值是比較高的。

「Heatmap 熱度圖使用顏色的深淺來表示數值的大小,通常會搭配 XY 兩軸的變量,所以使用一張圖就能表示三個維度的資訊。」[21]


Fig. 2. FCN 將 CNN 的全連接層改為卷積層 [1]。

-----

三、Deconvolution

要從圖2得到圖1a,我們只要把所有 heatmap 放大到原圖大小,然後看每個像素在哪個 heatmap 上的值最大,這個像素就可以歸類於那一類,譬如說貓。

當然直接放大32倍會導致結果有點粗糙, 所以先放大2倍,然後跟上一層的 heatmap 加總。再放大2倍,然後又跟上一層的 heatmap 加總。最後再放大8倍。這樣效果比較好。參考圖3跟圖4。

下文的轉置卷積,其實就是 deconvolution。

「最簡單的 FCN 前面是一個去掉全連接層的預訓練網絡,然後將去掉的全連接變為 1x1 的捲積,輸出和類別數據相同的通道數,比如 VOC 數據集是 21 分類,那麼輸出的通道數就是 21,然後最後接一個轉置卷積將結果變成輸入的形狀大小,最後在每個像素上做一個分類問題,使用交叉熵作為損失函數就可以了。」[12]

「當然這樣的模型是特別粗糙的,因為最後一步直接將圖片擴大了 32 倍,所以論文中有一個改進,就是將網絡中間的輸入聯合起來進行轉置卷積,這樣能夠依賴更多的信息,所以可以得到更好的結果,可以看看下面的圖示:」[12]

-----


Fig. 3a. Deconvolution 後跟上一層的 heatmap 加總,成為新的 heatmap [16]。

-----


Fig. 3b. 論文說明 [1]。

-----


Fig. 4. 不同尺度的 FCN [1]。

-----

至於為何從 32x、16x、到 8x 後就沒有繼續做,因為試驗結果沒有更好。

「對 CNN 的結果做處理,得到了dense prediction,而作者在試驗中發現,得到的分割結果比較粗糙,所以考慮加入更多前層的細節信息,也就是把倒數第幾層的輸出和最後的輸出做一個 fusion,實際上也就是加和。」[10]

「實驗表明,這樣的分割結果更細緻更準確。在逐層 fusion 的過程中,做到第三行再往下,結果又會變差,所以作者做到這裡就停了。」[10]

-----

四、Flowchart of algorithm

圖5是完整的演算法,可以參考剛剛的解釋跟下方的說明。其實看圖即可一目了然。

「之所以能做到這樣,是因為卷積層的輸出的結果是數據圖,而不是一個向量!經過反卷積後得到與原圖一樣大小的 1000(或21)層的熱圖,每一層代表一個類,然後觀察每個位置的像素,在哪一層它這個點對應的值最大,就認為這個像素點屬於這一層的類。就比如圖中點貓那個位置的點,在 tabby cat 這個類的熱圖上表現的值很高,所以認為那一坨像素點是屬於這個類的。從而這樣對每個像素點進行分類,最後輸出的就是分割好的圖像。」[7]

-----

「經過多次卷積和集中以後,得到的圖像越來越小,分辨率越來越低。其中圖像到 (H / 32) * (W / 32) 的時候圖片是最小的一層時,所產生圖叫做熱圖,熱圖就是我們最重要的高維特徵圖,得到高維特徵的熱圖之後就是最重要的一步也是最後的一步對原圖像進行採樣,把圖像進行放大幾次到原圖像的大小。」[8]

「相較於使用被轉化前的原始卷積神經網絡對所有 36 個位置進行迭代計算優化模型,然後再對 36 個位置做預測,使用轉化後的卷積神經網絡進行一次前向傳播計算要高效得多,因為 36 次計算都在共享計算資源。這一技巧在實踐中經常使用,通常將一張圖像尺寸變得更大,然後使用變換後的卷積神經網絡來對空間上很多不同位置進行評價得到分類評分,然後在求這些分值的平均值。」[8]

-----

「藍色:卷積層
綠色:Max Pooling 層
黃色:求和運算,使用逐數據相加,把三個不同深度的預測結果進行融合:較淺的結果更為精細,較深的結果更為 robust
灰色:裁剪,在融合之前,使用裁剪層統一兩者大小,最後裁剪成和輸入相同尺寸輸出
對於不同尺寸的輸入圖像,各層數據的尺寸(height,weight)相應變化,深度(channel)不變」 [8]

-----


Fig. 5. FCN 的流程圖 [8]。

-----
 
五、Heatmap

圖6是之前 ZFNet 的例子,(b) 是 heatmap。

把博美的 heatmap 還原後可以得到(c)博美。(d)然後除了中間不是博美外,其他為博美的機率很高。(e)可以看到本圖是博美,中間是網球。

中間的車、車輪、跟標籤則比較難以直接歸類。下方的阿富汗獵犬雖然在(e)的分類是對的,但是(d)可靠度並不高,而且(c)deconvolution之後是女士。


Fig. 6. Three test examples. (a)是輸入的圖片。(b)是熱圖:高強度的數值以紅色表示,低強度的數值則是以藍色來表示。(c)是利用 deconvolution 把 feature maps 還原成類似原圖。(d)是這個圖是「對」的圖的機率高不高。(e)是這個圖最可能是哪一種 [24]。

-----

結論:

經由最後全連接層改為卷積層,FCN 變為可以接受不同尺寸的圖片,並完成像素分類,是很巧妙的設計。

-----

References

一、論文

[1] 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/app/2B_011.pdf 

[2] [译] 用于语义分割的全卷积网络FCN(UC Berkeley) - 简书
https://www.jianshu.com/p/91c5db272725

[3] Dai, Jifeng, et al. "R-FCN: Object detection via region-based fully convolutional networks." Advances in neural information processing systems. 2016.
http://papers.nips.cc/paper/6465-r-fcn-object-detection-via-region-based-fully-convolutional-networks.pdf 

[4] R-FCN论文翻译——中文版 _ SnailTyan
http://noahsnail.com/2018/01/22/2018-01-22-R-FCN%E8%AE%BA%E6%96%87%E7%BF%BB%E8%AF%91%E2%80%94%E2%80%94%E4%B8%AD%E6%96%87%E7%89%88/

二、導讀

[5] 论文阅读笔记:Fully Convolutional Networks for Semantic Segmentation - CSDN博客
http://blog.csdn.net/tangwei2014/article/details/46882257

[6] FCN论文阅读笔记
https://zhuanlan.zhihu.com/p/25984129

[7] 深度学习论文笔记(六)--- FCN-2015年(Fully Convolutional Networks for Semantic Segmentation) - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1008418

[8] Fully Convolutional Networks _ 简说
http://simtalk.cn/2016/11/01/Fully-Convolutional-Networks/

[9] FCN  Fully Convolutional Networks for Semantic Segmentation - Yangming’s Blog
http://www.yangmingwen.com/deep%20learning/FCN/

[10] Fully Convolutional Networks for Semantic Segmentation(全卷积网络FCN)-博客-云栖社区-阿里云
https://yq.aliyun.com/articles/232455

三、實現

[11] FCN学习 Semantic Segmentation
https://zhuanlan.zhihu.com/p/22976342

[12] FCN 的简单实现 _ Sherlock Blog
https://sherlockliao.github.io/2017/12/31/fcn/

[13] MatConvNet进行FCN语义分割 - Deep Studio
http://www.p-chao.com/2017-04-27/matconvnet%e8%bf%9b%e8%a1%8cfcn%e8%af%ad%e4%b9%89%e5%88%86%e5%89%b2/

[14] fcn模型訓練及測試 - 掃文資訊
https://hk.saowen.com/a/ab217f78220d97b6fb3556cd6ad93b4590f79e396a2e06c19bd83559f2533032

四、延伸

[15] Awesome Image Semantic Segmentation 圖像語義分割之導讀論文與工具包總匯 _ Learning by Hacking
https://data-sci.info/2017/07/13/awesome-image-semantic-segmentation-%E5%9C%96%E5%83%8F%E8%AA%9E%E7%BE%A9%E5%88%86%E5%89%B2%E4%B9%8B%E5%B0%8E%E8%AE%80%E8%AB%96%E6%96%87%E8%88%87%E5%B7%A5%E5%85%B7%E5%8C%85%E7%B8%BD%E5%8C%AF/

[16] 【总结】图像语义分割之FCN和CRF
https://zhuanlan.zhihu.com/p/22308032

[17] 從FCN到DeepLab - 掃文資訊
https://hk.saowen.com/a/226c2954cb867da0dbc8d9f911ade34e12817d59ad4cb125af5db3b0e2b2795a

[18] 从全卷积网络到大型卷积核:深度学习的语义分割全指南 _ 机器之心
https://www.jiqizhixin.com/articles/2017-07-14-10

[19] 多篇用DL做Semantic Segmentation的文章总结 - 菜鸡一枚 - 博客园
http://www.cnblogs.com/yymn/articles/5377340.html

[20] 基于深度学习的语义分割综述 _ 曹彬彬
http://www.binbincao.com/2017/07/07/Semantic-Segmentation-with-Deep-Learning/

五、補充

[21] 資料科學與R語言
https://yijutseng.github.io/DataScienceRBook/vis.html 

[22] Heat map - Wikipedia
https://en.wikipedia.org/wiki/Heat_map  

[23] ◎ 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

[24] AI從頭學(二七):ZFNet
http://hemingwang.blogspot.tw/2017/05/aikernel-visualizing.html

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