Monday, April 16, 2018

PySpark(三):T-brain Machine learning competition team

PySpark(三):T-brain Machine learning competition team

2018/03/05

本文張貼網址:

-----


Fig. 1. Kaggle [6]。

-----

前言:

為了幫 PySpark Taiwan 熱身,之前分別辦了 Taipei [1] 跟 Hsinchu [2] 兩個子社團。如果新的活動成效不錯的話,我們就打算正式成立。

-----

跟實力接近的伙伴組隊參加比賽,是提升實力最好的方法。我的網路大神朋友 [3] 負責的平台,T-Brain [4],是台灣版的 Kaggle [5], [6]。第二次比賽是預測台股 ETF 漲跌預測競賽, 即將在 4/3 公告 [3]。

有興趣組隊的朋友,可以在 Python  Taiwan 本篇文章下方回應地區,想當隊長的可以再加上隊長,譬如:

新竹+1
台北+1



新竹隊長+1
台北隊長+1

即可。

台北隊長A:Mirage Chung(演算法)
 
台北隊長B:Yufeng Chien(演算法)

演算法隊員:
張家豪
吳麗足
莊博勝
劉宜婕

-----

References

[1] PySpark(一):Instructor -- Taipei
http://hemingwang.blogspot.tw/2018/03/pysparkinstructor.html

[2] PySpark(二):Instructor -- Hsinchu
http://hemingwang.blogspot.tw/2018/03/pysparkinstructor_27.html

[3] 台股ETF漲跌預測競賽
https://www.facebook.com/groups/2027602154187130/permalink/2109599555987389/

[4] 首屆競賽結果出爐!AI實戰吸引近千人組隊參加 _ 科技 _ 新頭殼 Newtalk
https://newtalk.tw/news/view/2018-03-28/119007

[5] Google 收購 Kaggle 為何撼動 AI、機器學習、資料科學三界? _ TechNews 科技新報
http://technews.tw/2017/03/10/kaggle-joins-google-cloud/

[6] 你聽過 Kaggle 嗎?Google 買下知名機器學習社群,加速推廣雲端 AI - INSIDE 硬塞的網路趨勢觀察
https://www.inside.com.tw/2017/03/09/kaggle-joins-google-cloud

Deep Learning Concept(六):Lasso Regression

Deep Learning Concept(六):Lasso Regression

Deep Learning Concept(五):Ridge Regression

Deep Learning Concept(五):Ridge Regression

多變數線性迴歸(三)Ridge Regression « ihong學習筆記
http://ihong-blog.logdown.com/posts/429845-ridge-regression

利用NCSS的脊迴歸(ridge regression)解釋多元共線性(multi-collinearity)~(1) @ 晨晰統計部落格新站(統計、SPSS、BIG DATA討論園地)   痞客邦
http://dasanlin888.pixnet.net/blog/post/442485077-%E5%88%A9%E7%94%A8ncss%E7%9A%84%E8%84%8A%E8%BF%B4%E6%AD%B8%EF%BC%88ridge-regression%EF%BC%89%E8%A7%A3%E9%87%8B%E5%A4%9A%E5%85%83%E5%85%B1

Linear least squares, Lasso,ridge regression有何本质区别? - 知乎
https://www.zhihu.com/question/38121173

Deep Learning Concept(四):Simple Linear Regression

Deep Learning Concept(四):Simple Linear Regression

Monday, April 09, 2018

PySpark(四):Scala

PySpark(四):Scala

2018/04/09

本文張貼網址:





-----

References

https://zh.wikipedia.org/zh-tw/Coursera

https://www.inside.com.tw/2014/06/13/a-taiwanese-developer-thought-about-coursera

http://www.owstartup.com/2014/05/30/coursera-edx-udacity-review/

Scala 函数式程序设计原理 _ Coursera
https://www.coursera.org/learn/progfun1

Big Data Analysis with Scala and Spark _ Coursera
https://zh-tw.coursera.org/learn/scala-spark-big-data

Deep Learning Concept(七):Bounding Box Regression

Deep Learning Concept(七):Bounding Box Regression






-----

References

bounding box regression - CaffeCN深度学习社区
http://caffecn.cn/?/question/160

https://www2.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-193.pdf

https://pdxscholar.library.pdx.edu/cgi/viewcontent.cgi?article=4949&context=open_access_etds

Tuesday, April 03, 2018

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

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




-----



-----



Information retrieval - Wikipedia
https://en.wikipedia.org/wiki/Information_retrieval#Mean_average_precision

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

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

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

Mean Average Precision – Pallavi Sahoo – Medium
https://medium.com/@pds.bangalore/mean-average-precision-abd77d0b9a7e

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



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

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

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

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 

深入淺出 Deep Learning(目錄)

深入淺出 Deep Learning(目錄)

2018/03/05

本系列為筆者在學習 Deep Learning 一年後重新寫過的心得介紹!

-----


-----

討論區:PyTorch Taiwan(目錄)

之前的學習記錄:AI從頭學(目錄)

----- 

你可以先知道:

深入淺出 Deep Learning(一):Introduction

深入淺出 Deep Learning(二):LeNet & BP

深入淺出 Deep Learning(三):RNN (LSTM)

深入淺出 Deep Learning(四):CNN


底下施工中 ...

深入淺出 Deep Learning(五):FCN

深入淺出 Deep Learning(六):R-CNN 

深入淺出 Deep Learning(七):Optimization

深入淺出 Deep Learning(八):Normalization

深入淺出 Deep Learning(九):Regularization

Activation Function

CNN+
FCN+
R-CNN+

Optimization+

-----

深入淺出 Deep Learning():RBM
深入淺出 Deep Learning():AE
深入淺出 Deep Learning():VAE
深入淺出 Deep Learning():GAN

RL
NLP
NTM

-----


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

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





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

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

Deep Learning Concept(三):end-to-end

Deep Learning Concept(三):end-to-end



什么是 end-to-end 神经网络? - 知乎
https://www.zhihu.com/question/51435499/answer/129365108 

Deep Learning Paper(二):YOLO v1

Deep Learning Paper(二):YOLO v1

2018/04/03



-----

Outline

一、Input
二、Outout
三、Net
四、Loss Function

-----



-----

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/

-----

基本說明

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

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

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

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

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

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

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

-----

非基本說明

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

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

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

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

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

-----

代碼

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

深入淺出 Deep Learning(一0):Regularization

深入淺出 Deep Learning(一0):Regularization

2018/04/03





-----

References

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

深入淺出 Deep Learning(九):Normalization

深入淺出 Deep Learning(九):Normalization

2018/04/03




-----

References

◎ Batch Normalization

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

◎ Layer Normalization
Ba, Jimmy Lei, Jamie Ryan Kiros, and Geoffrey E. Hinton. "Layer normalization." arXiv preprint arXiv:1607.06450 (2016).
https://arxiv.org/pdf/1607.06450.pdf

◎ Weight Normalization
Salimans, Tim, and Diederik P. Kingma. "Weight normalization: A simple reparameterization to accelerate training of deep neural networks." Advances in Neural Information Processing Systems. 2016.
http://papers.nips.cc/paper/6114-weight-normalization-a-simple-reparameterization-to-accelerate-training-of-deep-neural-networks.pdf

◎ Group Normalization
Wu, Yuxin, and Kaiming He. "Group Normalization." arXiv preprint arXiv:1803.08494 (2018).
https://arxiv.org/pdf/1803.08494.pdf

◎ Self-Normalizing Neural Networks
Klambauer, Günter, et al. "Self-normalizing neural networks." Advances in Neural Information Processing Systems. 2017.
http://papers.nips.cc/paper/6698-self-normalizing-neural-networks.pdf 

深入淺出 Deep Learning(八):Optimization+

深入淺出 Deep Learning(八):Optimization+

2018/04/03


-----

References

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

深入淺出 Deep Learning(七):Optimization

深入淺出 Deep Learning(七):Optimization

2018/03/13

前言:



Summary:



-----


Fig. 1. Optimization [4].

-----



Fig. 2. Relation of optimization algorithms.

-----

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

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

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

-----

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


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

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

-----

Outline

Part I. Gradient Descent and Momentum
一、Batch gradient descent
二、Stochastic gradient descent
三、Mini-batch gradient descent
四、Momentum
五、NAG

Part II. Adaptive Methods
六、AdaGrad
七、AdaDelta
八、RMSprop

Part III. Adaptive Method Plus Momentum
九、Adam
十、AdaMax

Part IV. Improvements  of Adam
十一、NAdam
十二、AMSGrad

-----

一、Batch gradient descent


-----

二、Stochastic gradient descent



-----
 
三、Mini-batch gradient descent


-----

四、Momentum



-----

五、NAG




-----

六、AdaGrad






-----

七、AdaDelta





-----

八、RMSprop





-----

九、Adam




-----

十、AdaMax



-----

十一、NAdam



-----

十二、AMSGrad

-----

References

[1] 深入淺出 Deep Learning(目錄)
http://hemingwang.blogspot.tw/2018/03/deep-learning.html

[2] Deep Learning
http://www.deeplearningbook.org/

[3] optimization
http://www.deeplearningbook.org/contents/optimization.html

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

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

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

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

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

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

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

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

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

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

-----

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

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

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

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

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

-----

Momentum

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

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

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

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


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

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

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

-----

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

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

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

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


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

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

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

Deep Learning Paper(四):YOLO v3

Deep Learning Paper(四):YOLO v3

2018/04/03

-----

References

YOLOv3: An Incremental Improvement
https://pjreddie.com/media/files/papers/YOLOv3.pdf 

Deep Learning Paper(三):YOLO v2

Deep Learning Paper(三):YOLO v2

2018/04/03

-----

References

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

Tuesday, March 27, 2018

PySpark(二):Instructor -- Hsinchu

PySpark(二):Instructor -- Hsinchu

2018/03/05

報名講師者,請「仔細閱讀」本文所有 references 後,在下方報名網址處填上:

講師+1

即可。

本活動講師報名網址:

https://www.facebook.com/groups/pythontw/permalink/10157551904788438/

-----

Summary:

本活動將於新竹地區成立實體社團,以討論 Python Spark Machine Learning 為主 [1]-[6]。與台北場 [7] 不同,並無教學、錄影的計畫,僅限同好在聊天室與未來每週互相教學之用,歡迎報名參加!

活動時間地點預設在 PyTorch Hsinchu 之後,每週六下午 16:00 ~ 17:00,清大資電大樓 447 會議室。

-----


Fig. 1. 新竹迎曦門 (*)。

-----


Fig. 2. Spark ML: RDD and DataFrame  [4].

-----

附錄:

組別 (週別) 內容 章節 Scala code -- 講師1

1、(一)、簡介、1, 2, 3, 4, 5
2、(二)、HDFS、6
3、(三)、MapReduce、7
4、(四)、YARN、8
5、(五)、Spark、9

6、(六)、RDD、10, 11
7、(七、八)、決策樹二元分類、13、Scala code -- 廖健傑
8、(九、十)、決策樹多元分類、17、Scala code
9、(十一、十二)、決策樹迴歸分析、18、Scala code

10、(十三)、DataFrame、19
11、(十四)、決策樹二元分類、20、Scala code -- 許廷綺
12、(十五)、決策樹多元分類、21、Scala code
13、(十六)、決策樹迴歸分析、22、Scala code

14、(十七、十八)、Logistic 迴歸二元分類、14、Scala code
15、(十九、二十)、SVM 二元分類、15、Scala code
16、(廿一、廿二)、Naive Bayes 二元分類、16、Scala code
17、(廿三、廿四)、推薦系統、12、Scala code

18、社長、副社長

-----

Note(*)

http://okgo.tw/butyview.html?id=109

-----

References

[1] PyTorch Taiwan(目錄)
http://hemingwang.blogspot.tw/2017/11/pytorch-taiwan.html

[2] Python Spark ML(目錄)
http://hemingwang.blogspot.tw/2017/09/python-spark-ml_4.html

[3] Big Data(目錄)
http://hemingwang.blogspot.tw/2017/08/big-data.html

[4] Python Spark ML(七):Python Hadoop Spark
http://hemingwang.blogspot.tw/2017/09/python-spark-mlpython-hadoop-spark.html

[5] Top 10

Wu, Xindong, et al. "Top 10 algorithms in data mining." Knowledge and information systems 14.1 (2008): 1-37.
http://sci2s.ugr.es/sites/default/files/files/Teaching/OtherPostGraduateCourses/DataMiningandSoftComputing/Top10.pdf

[6] 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.
http://dmlc.cs.washington.edu/data/pdf/XGBoostArxiv.pdf

[7] PySpark(一):Instructor
http://hemingwang.blogspot.tw/2018/03/pysparkinstructor.html

Friday, March 23, 2018

Deep Learning Paper(一):FCN

Deep Learning Paper(一):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

Thursday, March 15, 2018

PySpark(一):Instructor -- Taipei

PySpark(一):Instructor -- Taipei

2018/03/05

報名講師者,請「仔細閱讀」本文後,在下方報名網址處填上:

講師+1

即可。

大部分網路活動並無約束力,經驗上多半是報名後就不見了。所以,歡迎有「熱心」及「榮譽心」的伙伴一起參加這個活動。你不一定要是「台大」,也不一定要是「學生」,但你要為社團的參加者好好準備、並講解資料。活動預計在 2018 年暑假或秋季開始,每週四晚間 19:00 ~ 21:00 在台大普通教室 305 進行廿四週(確定的時間地點會另行公布),除了講解自己的部分,也希望講師可以全程參加學習。

本活動講師報名網址:

https://www.facebook.com/groups/pythontw/permalink/10157508746228438/

-----

前言:

網路上其實機器學習的資料已經包山包海了,相關的網路社團也很多,那為何我在 Python Taiwan 調查是否要成立 PySpark Taiwan,有這麼多人想參加呢?

https://www.facebook.com/groups/pythontw/permalink/10157486591603438/

記取之前活動的經驗,我知道,大部分人,都是想要有人教、有人帶,而不是我之前請大家一直交作業的學習方式。成立網路社團是很容易的,但如果沒有熱心者持續耕耘、灌溉,那就會跟大部分網路社團一樣,是荒原。

所以這次先徵求熱心的講師與社團幹部共五十四人(更多當然是歡迎),額滿才會成立。

我其實很想說:知識是越給越多的,你相信嗎?

-----

Summary:

繼 PyTorch Taipei [1] 之後,成立 PySpark Taipei,以教授 Spark RDD 與 DataFrame 的機器學習演算法為目的。有興趣來學的朋友,可以先參考之前 Spark [2] 與 Big Data [3] 的資料。

Spark 機器學習,精華可以說在圖一,範例則是先用 RDD (non-schematic) 跑 決策樹二元分類、多元分類、迴歸分析,再用更方便的 DataFrame (schematic) 把三個再跑一遍 [4]。

課程有一、理論(原理、論文)講解。二、實作講解與練習。三、演算法 Scala code 的講解。[5], [6] 為補充資料,可自行閱讀。

-----


Fig. 1. Spark ML: RDD and DataFrame  [4].

-----

Outline

一、活動方法
二、地點時間
三、講師人數

-----

一、活動方法

緊接著 PyTorch Taiwan 網路社團的成立與 PyTorch Taipei、PyTorch Hsinchu 實體社團的成立 [1],本篇文章以籌備 PySpark Taiwan 網路社團與 PySpark Taipei 實體社團的講師群為主。

活動共分十八組、廿四週。會有文字教學資料與課程錄影。

 -----

二、時間地點

暫時活動時間地點:每週四晚間 18:20 ~ 19:00,台大普通教室 305。
時間為 PyTorch Taipei 之前的四十分鐘,地點相同。
預計 2018 年秋季開學後進行,屆時則與目前 PyTorch Taipei 的時間 19:00 ~ 21:00 對調。 

-----

三、講師人數

每組預計找三位講師可以一起討論、準備。報告則可由三人輪流或者一人獨力講完。
加上社長一員、副社長兩員,共五十四人。

1. 滿五十四人之前,以聊天室方式進行 PySpark Taipei 實體社團。
2. 滿五十四人之後,選舉社長、副社長,即可成立 PySpark Taiwan 網路社團。
3. 陸續加入者,由社長安排至各組討論。
4. 聽課人數會另行調查,再由 Pecu 老師決定要不要把百人教室換成更大的。

若講師人數未達五十四人,則由現有報名者討論如何進行。

-----

附錄:

組別 (週別) 內容 章節 Scala code -- 講師1

1、(一)、簡介、1, 2, 3, 4, 5 -- 施米拉
2、(二)、HDFS、6 -- CH Chen
3、(三)、MapReduce、7 -- Arey Liu
4、(四)、YARN、8 -- 曾睦欽
5、(五)、Spark、9 -- 林佳穎

6、(六)、RDD、10, 11 -- 李慕義
7、(七、八)、決策樹二元分類、13、Scala code -- Blake Wang
8、(九、十)、決策樹多元分類、17、Scala code -- Hu Oscar
9、(十一、十二)、決策樹迴歸分析、18、Scala code -- Miko Chen

10、(十三)、DataFrame、19 -- 林冠廷
11、(十四)、決策樹二元分類、20、Scala code -- 楊程予
12、(十五)、決策樹多元分類、21、Scala code -- Jeffrey Lu
13、(十六)、決策樹迴歸分析、22、Scala code -- 陳彥辰

14、(十七、十八)、Logistic 迴歸二元分類、14、Scala code -- 陳廣翰
15、(十九、二十)、SVM 二元分類、15、Scala code
16、(廿一、廿二)、Naive Bayes 二元分類、16、Scala code
17、(廿三、廿四)、推薦系統、12、Scala code -- 潘沐宣

18、社長(施米拉)、副社長

-----

References

[1] PyTorch Taiwan(目錄)
http://hemingwang.blogspot.tw/2017/11/pytorch-taiwan.html

[2] Python Spark ML(目錄)
http://hemingwang.blogspot.tw/2017/09/python-spark-ml_4.html

[3] Big Data(目錄)
http://hemingwang.blogspot.tw/2017/08/big-data.html

[4] Python Spark ML(七):Python Hadoop Spark
http://hemingwang.blogspot.tw/2017/09/python-spark-mlpython-hadoop-spark.html

[5] Top 10
Wu, Xindong, et al. "Top 10 algorithms in data mining." Knowledge and information systems 14.1 (2008): 1-37.
http://sci2s.ugr.es/sites/default/files/files/Teaching/OtherPostGraduateCourses/DataMiningandSoftComputing/Top10.pdf

[6] 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.
http://dmlc.cs.washington.edu/data/pdf/XGBoostArxiv.pdf