Friday, February 23, 2018

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

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

2018/02/03

前言:


Summary:





 -----

Outline

一、RNN
二、LSTM
三、Highway Networks
四、ResNet、DenseNet and GoogLeNet

-----

一、RNN



Fig1.1a. RNN, [8].


Fig1.1b. LSTM, [8].

-----

LSTM 擅長於任何和時間有關的資訊,包括文字、語音、音訊、視訊,以及機器人學(robotics)。

「由於機器人學基本上只是探討代理個體(agent)根據一連串感測而得的資訊所作出的判斷和動作,這類資料本身就帶有序列性(sequential),即不同時間內所採取的動作,也和之後的感測與判斷有關。」[2]



Fig.  1.1c. RNN(LSTM)的應用 [2]。

-----


Fig. 1.2a. FNN and RNN, p. 4, [4].



Fig. 1.2b. An unrolled RNN, p. 4, [4].



Fig. 1.2c. RNN formula, p. 4, [4].


-----

二、LSTM




Fig. 2.1a. LSTM, p. 409, [5].



Fig. 2.1b. LSTM remark, [7].



Fig. 2.1c. LSTM formula [3].

-----


Fig. 2.2a. LSTM, [6].



Fig. 2.2b. LSTM formula, [6].

---




Fig. 2.3a. LSTM, [7].



Fig. 2.3b. LSTM symbols, [7].

-----


Fig. 2.4a. RNN, [8].



Fig. 2.4b. LSTM, [8].

-----

三、Highway Networks

c 是 cell state 的縮寫,表示一個儲存細胞、儲存單元、或記憶體。


Fig. 3.1. The cell state runs straight down the entire chain, with only some minor linear interactions [8], [9].


-----

「2015年由 Rupesh Kumar Srivastava 等人受到 LSTM 門機制的啟發提出的網絡結構(Highway Networks)很好的解決了訓練深層神經網絡的難題,Highway Networks 允許信息高速無阻礙的通過深層神經網絡的各層,這樣有效的減緩了梯度的問題,使深層神經網絡不再僅僅具有淺層神經網絡的效果。」[10]


Fig. 3.2. Highway networks [11].

-----

四、ResNet、DenseNet and GoogLeNet

◎ ResNet

「模型的深度加深,學習能力增強,因此更深的模型不應當產生比它更淺的模型更高的錯誤率。而這個“退化”問題產生的原因歸結於優化難題,當模型變複雜時,SGD的優化變得更加困難,導致了模型達不到好的學習效果。」[12]

「增加一個恆等映射,將原始所需要學的函數 H(x)轉換成 F(x)+ x,而作者認為這兩種表達的效果相同,但是優化的難度卻並不相同, 作者假設 F(x)的優化會比 H(x)簡單的多。這一想法也是源於圖像處理中的殘差向量編碼,通過一個重構,將一個問題分解成多個尺度直接的殘差問題,能夠很好的起到優化訓練的效果。」[12]



Fig. 4.1a. ResNet block [12], [13].





Fig. 4.1b. VGGNet and ResNet [12], [13].

-----

「ResNet 通過增加跨層的連接來解決梯度逐層回傳時變小的問題。雖然這個想法之前就提出過了,但 ResNet 真正的把效果做好了。

下圖演示了一個跨層的連接。」[14]


Fig. 4.1c. ResNet block [14].

「最底下那層的輸入不僅僅是輸出給了中間層,而且其與中間層結果相加進入最上層。這樣在梯度反傳時,最上層梯度可以直接跳過中間層傳到最下層,從而避免最下層梯度過小情況。

為什麼叫做殘差網絡呢?我們可以將上面示意圖裡的結構拆成兩個網絡的和,一個一層,一個兩層,最下面層是共享的。」[14]


Fig. 4.1d. Separation of ResNet block [14].

「在訓練過程中,左邊的網絡因為更簡單所以更容易訓練。這個小網絡沒有擬合到的部分,或者說殘差,則被右邊的網絡抓取住。所以直觀上來說,即使加深網絡,跨層連接仍然可以使得底層網絡可以充分的訓練,從而不會讓訓練更難。」[14]

-----

◎ DenseNet

DenseNet 的想法很大程度上源於隨機深度網絡(Deep networks with stochastic depth)。當時作者們提出了一種類似於 Dropout 的方法來改進 ResNet。作者們發現在訓練過程中的每一步都隨機地「扔掉」(drop)一些層,可以顯著的提高 ResNet 的泛化性能 [15]。

「DenseNet 讓網絡中的每一層都直接與其前面層相連,實現特徵的重複利用;同時把網絡的每一層設計得特別「窄」,即只學習非常少的特徵圖(最極端情況就是每一層只學習一個特徵圖),達到降低冗餘性的目的。」[15]



Fig. 4.2. DenseNet [15].

-----


◎ GoogLeNet

「網絡中間的層次生成的特徵會非常有區分性,給這些層增加一些輔助分類器,這些分類器以小卷積網絡的形式放在 Inception(4a) 和 Inception(4b) 的輸出上,在訓練過程中,損失會根據折扣後的權重(折扣權重為0.3)疊加到總損失中。」[16]





Fig. 4.3. GoogLeNet [17].

-----



Fig. 4.4. Evolution of CNNs [18].

-----

結論:



-----

References

[1] RNN(LSTM)
Hochreiter, Sepp, and Jürgen Schmidhuber. "Long short-term memory." Neural computation 9.8 (1997): 1735-1780.
http://www.bioinf.jku.at/publications/older/2604.pdf

[2] 遞歸神經網路和長短期記憶模型 RNN & LSTM · 資料科學・機器・人
https://brohrer.mcknote.com/zh-Hant/how_machine_learning_works/how_rnns_lstm_work.html

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

[4] Wang, Hao, and Dit-Yan Yeung. "Towards bayesian deep learning: A survey." arXiv preprint arXiv:1604.01662 (2016).
https://arxiv.org/pdf/1604.01662.pdf

[5] 100_rnn
http://www.deeplearningbook.org/contents/rnn.html

[6] Optimizing Recurrent Neural Networks in cuDNN 5
https://devblogs.nvidia.com/parallelforall/optimizing-recurrent-neural-networks-cudnn-5/

[7] All of Recurrent Neural Networks – Medium_m4c8pmg3d
https://medium.com/@jianqiangma/all-about-recurrent-neural-networks-9e5ae2936f6e

[8] Understanding LSTM Networks -- colah's blog
http://colah.github.io/posts/2015-08-Understanding-LSTMs/

[9] 『cs231n』RNN之理解LSTM網絡 - 掃文資訊
https://hk.saowen.com/a/a4162fcc05e9206b66731e6cf4bcdfcfae6be20ca66d09dcb2130b48794b7af7

[10] Highway Networks - bamtercelboo - 博客园
http://www.cnblogs.com/bamtercelboo/p/7606197.html

[11] 基於pytorch實現HighWay Networks之Highway Networks詳解 - 掃文資訊
https://hk.saowen.com/a/6347f3cb3e82b2aa98431589bbc775fec1499406deb65dc90cf21f6f2331ff8a

[12] ResNet论文笔记 - CSDN博客
http://blog.csdn.net/wspba/article/details/56019373

[13] 残差网络ResNet笔记 - 简书
https://www.jianshu.com/p/e58437f39f65

[14] ResNet:深度残差网络 — 动手学深度学习 0.6 documentation
https://zh.gluon.ai/chapter_convolutional-neural-networks/resnet-gluon.html 

[15] CVPR 2017最佳論文作者解讀:DenseNet 的「what」、「why」和「how」|CVPR 2017 _ 香港矽谷
https://www.hksilicon.com/articles/1392714 

[16] GoogLeNet学习心得 - 静悟生慧 - 博客园
https://www.cnblogs.com/Allen-rg/p/5833919.html

[17] googlenet in keras
http://joelouismarino.github.io/blog_posts/blog_googlenet_keras.html

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

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

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

2018/02/23

前言:

我是讀懂 BP 後再仔細看 LeNet 的。經過幾次實際的講解,我想先講 LeNet 比較適合,所以更新順序,並增加了實例的部分,希望可以更清楚一些!

-----

Summary:

深度學習 [1], [2] 的核心是 LeNet [3]。

本文從多項式 [4] 出發,詳細地解釋 LeNet [5], [6] 與 Back Propagation [7] 演算法,並指出權重是經由訓練而得這個重點 [8]。最後是 LeNet 的實作 [9] 與更多深度學習論文講解 [10]。

-----

Outline:

一、Introdunction
二、Polynomial
三、LeNet
四、Convolution
五、Activation Function
六、Pooling
七、Back Propagation

-----

一、Introdunction

一年多前,在我剛開始接觸 Deep Learning 的時候,那時 AlphaGo 早就以四勝一負的戰績擊敗韓國的李世石。不過真正引起我關注的是 chatbot:聊天機器人,如果你不深入 AI 的理論,只想呼叫現成的 APIs,那有什麼搞頭呢?

那時我拿到博士學位還沒很久,正規的訓練,要切入一門新領域,可以從集大成的論文開始,我找了幾篇 [1],並且看完其中最重要的 [2]。大體上這並沒有錯,不過真正的奧秘是你必須先精讀某篇論文 [3],這篇其實也藏在 [2] 裡面,不過沒人跟你講,你是很難發現的。

總之,當我不是很懂就開始發表心得時 [1],就有熱心人士來指導了。花了一些時間後,終於看懂了論文 [3] 裡面的 Back Propagation 演算法 [7],以及後續不計其數的論文 [10]。

一年過去了,我試著把這個題目重新寫一遍,看看是不是可以更簡明!

-----

二、Polynomial

LeNet 屬於類神經網路(Artificial Neural Networks, ANN)中的一種,中文叫做卷積神經網路(Convolutonal Neural Networks, CNN)。

類神經網路,一般人可能不容易理解,白話來說,它是一個很複雜的函數,所以我們從簡單的多項式函數開始說明。雖然大家一聽到數學就手軟,不過如果連多項式都跨不過,後面就沒得玩了,就將就一下吧!

圖1可以看到三張子圖,每個子圖上面的點是一樣的。

假定我們想用一條線來描述這些點,或者說建立一個統計模型,以便從輸入預測輸出,多項式就是一個不錯的選擇。

左邊是一次多項式,是條直線。或者說零次,因為直線是水平的。
中間姑且稱為二次多項式,因為它「近似」拋物線。
右邊是高次的多項式。

大家可以很直觀的看出,中間是我們想要的。左邊誤差很大,右邊模型太複雜。關於多項式,我想我們講到這邊就可以了!


Fig. 1. A high-degree polynomial regression model [4].

-----

三、LeNet

LeNet 是一個 ANN,在這邊你先不過管 ANN 是什麼,你只要知道它是一個函數就可以了。

講到函數,我們會關心它的輸入跟輸出。

LeNet 輸入的部分是一個 32x32 的灰階圖片。輸出的部分是一個十維的向量,如圖2a。講的更仔細一點,輸入是 1024 個點,每個點的值可以是 -128 到 127,或者 0 到 255 等。這張圖片看起來也許是一個阿拉伯數字的「7」,如果「7」寫的很工整,那理想的輸出應該是 (0, 0, 0, 0, 0, 0, 0, 1, 0, 0),如果有點潦草,那你得到的輸出可能是 (0, 0.12, 0, 0, 0, 0, 0, 0.88, 0, 0)。

這個十維向量,是十個正實數或 0,總和為 1。 代表這張圖是零到九某個阿拉伯數字的機率。

如同圖1的點,我們希望能從這些點(資料)得到多項式的係數。LeNet 則是希望從這些資料(每筆包含 1024 個點)得到一些 CNN 函數的線性部分,也就是一次跟零次的係數,我們把這些係數稱為權重。

LeNet 當然不止這樣,後面我們繼續講解它的三個主要部分,如圖2b。



Fig. 2a. LeNet-5 [5].

-----


Fig. 2b. Three principle parts of LeNet [5]. 

-----

四、Convolution

卷積層主要是提取圖片的特徵。

最基本的特徵就是各種方向的直線,小段的直線可以組成簡單的形狀,譬如、圓、弧、三角形、矩形等,更複雜一點,就可以表現出人臉。

這些可以通過一些 3x3 或 5x5 的矩陣運算達成。比較特別的是,一般影像處理會利用一些現成的矩陣達到濾出線條的目的。在 CNN 中,這些矩陣的係數是要經由大量的資料(圖片),把權重(係數)訓練出來 [8]。 



Fig. 3a. Convolutional kernel [5].

-----

五、Activation Function

激活函數的目的,是要壓縮資料,概念上就是你有十個部下,每人給你五張投影片。但是你要報告給主管時,五十張你要縮成五張:資料量減少,另外,只講重點(也就是提取特徵)。

論文裡面,我們會看到 sigmoid、tanh、ReLU 等。其實這些函數都很像。圖3b 是一個 sigmoid 的函數,它可以把輸出限制在 0 跟 1 之間。tanh 則可以把輸出限制在 -1 跟 1 之間。


Fig. 3b. Activation function [5].

-----

六、Pooling

池化也是要減少資料量。

可以取最大值或平均值。


Fig. 3c. Pooling [5].

-----

經過兩次的「卷積層、激活函數運算、池化層 」[5],再加上兩個全連接層 [6],最後就會輸出一個十維的向量,也就是這張圖片到底是 0 到 9 的可能性。

但這是指訓練好的網路而言。網路要訓練,一開始的權重是隨機指定,結果自然是慘不忍睹。藉由下一節的 Back Propagation 演算法,我們可以把權重慢慢更新到「正確」的值。

所謂「正確」,就是讓誤差很小,譬如 5%,或更小。

-----

七、Back Propagation

圖4是 BP 演算法的精華,也就是上面講的「更新權重」。

這裡面有幾個符號,大家看到數學符號都會很恐懼,其實數學符號只是希望用「簡單」的符號來描述「複雜」的現象,所以這邊我們先解釋一下每個符號的意義。

W,就是權重。可以想成是多項式的係數。這裡可以是第四節裡卷積核(或者叫做濾波器)的值。

Wk 就是這次的權重,Wk-1 是上次的權重。

ε,是步長,也就是你一次要更新多少。步長要乘以「斜率」,也就是 Error function 在 W 的導數。

∂,是偏微分的符號,這邊可以用常微分來理解就可以。

E,代表一個 error function。

-----



Fig. 4. Training weighting factors [7]. 

-----

講到這邊,大家大概已經昏頭了,所以我們借用圖1中間(後面簡稱圖A)那張來說明一下。

首先是 error function。
上面講到,LeNet 是一個複雜的函數,輸出是一個十維的向量。

在訓練階段,當圖片是變數、參數為固定時,你知道這張圖片「7」的正確值是 (0, 0, 0, 0, 0, 0, 0, 1, 0, 0),但是你得到的輸出可能是 (0, 0.12, 0, 0, 0, 0, 0, 0.88, 0, 0)。

這邊就可以得到誤差,誤差函數你可以用一般的平面距離(二維)推廣到十維。兩兩相減取平方和再開根號。

「假設」這個誤差函數如圖A,從一般橫軸 x 縱軸 y,你現在想成橫軸 W 縱軸 E。

這時參數(W) 是變數。

你目前的誤差值如圖A左邊那點所示,你希望誤差變小,所以 W 要向左移(這時斜率為正),所以舊的權重 Wk-1 要往左移,也就是要減去一個正值(斜率為正)的步長,誤差才會變小。

「反覆進行」,最後所有的權重參數 W 就可以更新到理想值,讓 LeNet 的誤差變小,也就是絕大多數的圖片,都可以「正確」地辨識出來。

這邊的重點,就是為何要「減」一個數乘斜率,而不是「加」一個數乘斜率。想通這點,BP 你應該就可以掌握了。

-----

結論:

當前深度學習的基礎,也就是 LeNet 跟 BP,講完了。可以參考 [9],更多的,可以參考 [10]。

-----

後記:

本文感謝光寶科技(聯發科附近的公司)的贊助。我第一個工作是光碟機的韌體工程師,當時光寶科技(建興)是這一行裡遙遙領先的公司。時至 AI,有幸能至光寶講解深度學習,甚感榮幸!



Fig. 5. Liteon [10].
 
-----

References

[1] AI從頭學(一):文獻回顧
http://hemingwang.blogspot.tw/2016/12/ai.html

[2] LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. "Deep learning." nature 521.7553 (2015): 436.
http://pages.cs.wisc.edu/~dyer/cs540/handouts/deep-learning-nature2015.pdf

[3] LeCun, Yann, et al. "Gradient-based learning applied to document recognition." Proceedings of the IEEE 86.11 (1998): 2278-2324.
http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf

[4] AI從頭學(三二):Weight Decay
http://hemingwang.blogspot.tw/2017/06/aiweight-decay.html

[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從頭學(九):Back Propagation
http://hemingwang.blogspot.tw/2017/02/aiback-propagation.html 

[8] AI從頭學(二三):CNN - Kernel Training
http://hemingwang.blogspot.tw/2017/05/aicnn-filter-kernel-training.html 

[9] LeNet實作團(目錄)
http://hemingwang.blogspot.tw/2017/04/lenet.html 

[10] 深入淺出 Deep Learning(一):Introduction
http://hemingwang.blogspot.tw/2018/01/aideep-learning-in-120-mins.html

Thursday, February 22, 2018

PyTorch Taipei(一):選舉幹部

PyTorch Taipei(一):選舉幹部

2018/02/22

前言:

這是由我發起的台北地區討論深度學習經典論文 [1] 的活動。網路報名地點在 [2]。並無限定參加人數,但教室容納空間為一百人,故以 NTU CS+X 的學生與 PyTorch Taipei 的成員優先。

-----


-----

Summary:

時間:2018 年 3 月 1 日,星期四,19:00 ~ 21:00。
地點:台大普通大樓 305 教室 [3]
(校門、椰林大道、右手邊傅鐘、左手邊文學院,文學院後方穿過蒲葵道即為普通教室)

討論事項:
1. 選舉社長一員(跟 Pecu 老師還有我討論社務),副社長兩員(協助社長執行社務)。
2. 決定未報告指定論文者如何輪流報告 LeNet 與 BP [4]-[6]。
3. 其他。

-----

References

[1] PyTorch(六):Seminar
http://hemingwang.blogspot.tw/2018/01/pytorchseminar.html

[2] PyTorch(四):PyTorch Taipei
http://hemingwang.blogspot.tw/2018/01/pytorchpytorch-taipei_20.html

[3] 國立台灣大學校園地圖
https://map.ntu.edu.tw/ntu.html?

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

[5] AI從頭學(一三):LeNet - F6
http://hemingwang.blogspot.tw/2017/03/ailenet-f6.html

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

Monday, February 12, 2018

深入淺出 Deep Learning(五):FCN

深入淺出 Deep Learning(五):FCN









-----

References

一、論文

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 

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

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 

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/

二、導讀

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/

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

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

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

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

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

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

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

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

三、實現

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

FCN 图像语义分割实践 _ Memo
http://shuokay.com/2017/06/23/fcn/

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/

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

五、延伸

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

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

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

语义分割中的深度学习方法全解:从FCN、SegNet到各版本DeepLab_财经头条
http://cj.sina.com.cn/article/detail/6105753431/313450

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

深入淺出 Deep Learning(一):Introduction

深入淺出 Deep Learning(一):Introduction

2018/01/11

前言:

2018/01/03 是我在聯發科「旁邊」的某公司講解 Deep Learning 的第一天,事前我在竹北的 Python 社團分兩次講解大綱,主要當然是 BP、LeNet、以及 1 x 1 convolution。大體上,由於內容很多,聽講者未必能在短時間接受,所以我重新整理一下,以網路文章的形式重新寫過,相信能夠呈現清楚的全貌給對 Deep Learning 有興趣的初學者。

-----


-----


-----

Summary:

本文摘錄我在2017年自學 Deep Learning 的重點 [1]-[3]。

內容包含 CNN [4]-[6]、RNN [7], [8]、R-CNN [9]、Regularization [10]、Optimization [11]、以及兩本參考書的介紹 [12], [13]。

-----

Outline:

一、CNN
二、RNN
三、R-CNN
四、Regularization
五、Optimization
六、Textbook

-----

一、CNN

CNN 是 Convolutional Neural Network 的縮寫,目前最熱的 Deep Learning / AI 最主要的應用之一:影像處理,就是由 CNN 完成。

第一個較成功的 CNN 叫做 LeNet-5,在1998年就已應用於美國銀行的支票辨識 [5],可以辨認手寫的阿拉伯數字 0 到 9。

LeNet 基本上是一個以網路呈現的函數,函數的係數最先是隨機設定,稍後藉由 Back Propagation [4] 這個演算法於每次訓練圖片時更新係數。

Deep Learning 的基礎可說是 BP [4] 與 LeNet [5],參考圖1a與1b。

LeNet 之後,在 2012年有 AlexNet 成功在大資料圖片集辨識獲得極大成功,2013年有 ZFNet 是 AlexNet 的最佳化,2014年有 GoogLeNet 與 VGG Net。這些 CNNs 陸續在影像辨識獲得更大的成功。

GoogLeNet 的重點之一是 1 x 1 convolution [6],參考圖1c。主要用於減少資料量。

-----


 
Fig. 1a. Training weighting factors [4].

-----


Fig. 1b. LeNet-5 [5].

-----



Fig. 1c. 1 x 1 convolution [6].

-----

二、RNN
 
RNN 的全名是 Recurrent Neural Network,CNN 主要處理平面空間的資料,RNN 則處理時間相關的資料如聲音、文字、影片(CNN+RNN)等 [7], [8]。

除了遞迴之外,較新的 RNN 如 LSTM 等,最主要是加入了三個(閘)門當作控制訊號,所以使用 sigma,讓資料限制在 0 到 1 之間。參考圖2a與2b。



Fig. 2a. LSTM, [8].



Fig. 2b. LSTM symbols, [8].


-----

三、R-CNN

R-CNN 的 R 是 Region 而不是 Recurrent。它可以在一張圖片中找出數個物體的小框框再加以辨識,是 CNN 的加強版。R-CNN 再加上 RNN,就可以用在影片的物體辨識上,所以也是自駕車的主要技術之一。

[9] 是 R-CNN 的主要參考論文之一,用到了 Support Vector Machine (SVM)。後續的 Fast R-CNN 與 Faster R-CNN 都往純 Deep Learning 的方向前進 [13]。


Fig. 3. Detections obtained with a single component person model [9].

-----

四、Regularization

Regularization 是解決 Over-fitting 的方法的總稱。

基本上 Over-fitting 可以說是訓練時表現很好,但實測時表現不好。好比你針對考古題練習,臨場出現其他題目你就不會了。

Weight Decay 是常用的方法 [10],另外還有 Dropout [12]。



Fig. 4. Over-fitting [10].

-----

五、Optimization

簡單說,就是讓 BP [4] 變的快一點 [11], [12]。

-----

六、Textbook

Deep Learning 這本書很好,缺點是比較難,我主要是用來找出原始論文參考。



Fig. 5a. Deep Learning [12].

-----

這本講了主要的 CNN 與 R-CNN,在我只懂 LeNet 時,幫助很大。



Fig. 5b. CNN and R-CNN [13].

-----

結論:

網路上資料很多,本文簡單從自己的學習經驗中歸納出一點心得。後續沒有持續更新的原因一方面是很忙,另一方面,看完我的文章,應該可以自己找資料、查論文了。

CNN 較新的有 ResNet 與 DenseNet,應用外,為什麼 work,背後的數學是值得思考的問題。另外,GAN 與 Reinforcement Learning 的 DQN 系列,我想網路上的資料一樣很多,有興趣者自行參考即可。

-----

References

[1] 如何自學 Deep Learning (Part 1) _ Python Hsinchu User Group (Hsinchu, Taiwan) _ Meetup
https://www.meetup.com/pythonhug/events/245852169/?_cookie-check=kiQsl8ThE-ZR3LWc

[2] 如何自學 Deep Learning (Part 2) _ Python Hsinchu User Group (Hsinchu, Taiwan) _ Meetup
https://www.meetup.com/pythonhug/events/245852186/

[3] Jobspace - 想要學習 Deep Learning 卻不知道如何入門嗎?想與人深入探討 Deep... _ Facebook
https://www.facebook.com/jobspace/posts/2033449803602303

一、CNN

[4] AI從頭學(九):Back Propagation

[5] AI從頭學(一二):LeNet

[6] AI從頭學(三0):Conv1

二、RNN

[7] 遞歸神經網路和長短期記憶模型 RNN & LSTM · 資料科學・機器・人
https://brohrer.mcknote.com/zh-Hant/how_machine_learning_works/how_rnns_lstm_work.html

[8] AI從頭學(一九):Recurrent Neural Network

 三、R-CNN

[9] AI從頭學(三三):DPM

四、Regularization

[10] AI從頭學(三二):Weight Decay

五、Optimization

[11] Ruder, Sebastian. "An overview of gradient descent optimization algorithms." arXiv preprint arXiv:1609.04747 (2016).

六、Textbook

[12] AI從頭學(一五):Deep Learning,How? 

[13] AI從頭學(一八):Convolutional Neural Network

深入淺出 Deep Learning(四):CNN

深入淺出 Deep Learning(四):CNN

深入淺出 Deep Learning(八):Seq2Seq

深入淺出 Deep Learning(八):Seq2Seq

2017/12/19

施工中...

前言:

-----

Summary:

本篇討論的文章 [1] 最早是在 GPU Taiwan Facebook 看到。其中使用 GRU 而非 LSTM 引起我的好奇,因為 GRU 雖然號稱是 LSTM 的改進 [2],但近年看到的論文其實還是以 LSTM 居多。於是轉貼到 台灣「人工智慧」社團 尋求討論 [3]。由討論中得知,這兩者的差異其實不大 [3]-[5]。

無論如何,討論中出現了 seq2seq 與  attention,屬於常見但我卻沒有進一步研究的主題。因此我先查了 attention [6]-[8], [10],再補上 seq2seq [6], [9], [10],以便閱讀 [1]。

[11] 是有關 RNN 較詳細的翻譯文章。

-----


Fig. 1. Encoder and Decoder [1].

-----

Outline

一、動機
二、LSTM and GRU
三、seq2seq
四、attention

-----

一、動機

「最近在 Kaggle 上有一場關於網絡流量預測的比賽落下帷幕,比賽的目標是預測 14 萬多篇維基百科的未來網絡流量。 來自莫斯科的 Arthur Suilin 在這場比賽中奪冠, 他在 github 上分享了自己的模型。」[1]

這篇文章引起我的注意,點進去瀏覽後發現他的 RNN 用的是 GRU。之前我研究過 LSTM 與 GRU [2],但實際上我看到較新的論文,使用 LSTM 還是佔多數(幾乎全部,除了這一篇)。於是我到台灣「人工智慧」社團去請教同好。

請教一個問題:GRU 可說是 LSTM 的改進(演化)。然而近年的論文用到的 RNN 還是以 LSTM 居多。這篇又使用了 GRU(參考圖1),讓我有點好奇 [3]?

-----

二、LSTM and GRU

有關 LSTM 與 GRU 效能上的差異,由下列討論可得知差異並不大。當然,結構上,GRU 是簡單一點。

郭宗賢:Marcel 兄,GRU 比LSTM 晚, 是進化版 ,, 不過主要是參數減少的進化, (LSTM 有點 redundant ) 。。之前有一篇論文比較過,LSTM vs GRU 的準確度差不多。在 cs224n,2位教授針對誰比較好也有課堂上 1分鐘舌戰,(Manning vs Richard) 年輕的 Richard Socher 說 參數比較少, 準確率差不多,當然比較好。。。Manning 說: 我完全無法同意。。。。( 2位都是彬彬有禮的君子。。 )以上, 個人淺見。[3]

Marcel Wang:「We confirmed that the LSTM seems to be a better default choice for language modeling than the GRU.」[4]

郭宗賢: 我記得 google 有一篇 language translation 也有這樣的結論,,,(經過不可思議的 GPU hours 的訓練..)。這裡有一篇, 比較各式 LSTM 變形的 performance (figure 3)。[5]

-----

三、seq2seq

「目前解決對話問題的方法是基於檢索式的和基於生成式的兩種。生成式方法大多使用的是 seq2seq 的模型框架,即將對話的上下文看作兩個序列,通過對上文序列進行編碼,再解碼出下文。藉助於 GAN 和 VAE 等生成式模型的研究,有學者將其應用於對話系統,也取得了很好的效果。 」[6]

-----


Fig. 2. seq2seq [6].

-----

「要注意的是,seq2seq 模型中的解碼器在訓練和預測階段不太一樣。在訓練階段,我們同時使用對話的上下文,decoder 每個時刻的輸入都是我們給定的下文,利用每個時刻的輸出與給定下文的不同來計算損失(loss),再用反向傳播的方法對模型進行訓練。」[6]

上面這段話,基本上是沒有問題的。參考圖2,左邊是 encoder,右邊是 decoder,訓練階段可以用 CNN 的概念類推。CNN 的輸入是圖片,輸出是 tag。RNN 的輸入是對話的上文,輸出是對話的下文。

「但在預測階段,我們希望給出上文讓模型來生成下文,所以 decoder 每個時刻的輸入都是它自身上個時刻的輸出(除了第一個開始標識符)。」[6]

這段話則不容易看懂。???

-----

四、attention

郭宗賢:btw,看了一下文章, Arthur 是用 GRU + Attention, (常用在NLP...) 還用了 Time series autocorrelation 模型當作 feature ...佩服啊!!! [1]

Marcel Wang:「這裏十分推薦關於 Attention Mechanism 的兩大經典論文,即 Bahdanau Attention 和Luong Attention」 [6]-[8]。

-----


Fig. 3.  Bahdanau Attention [6].

-----


-----

結論:



-----

References

[1] Kaggle比賽冠軍經驗分享:如何用 RNN 預測維基百科網絡流量 - 掃文資訊
https://hk.saowen.com/a/f1c61f563ab09ee6bcd2715997fe9183b0b1f3dac8ea4060dc3e99bfdc5ff28c

◎ LSTM and GRU

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

[3] 請教一個問題:
https://www.facebook.com/groups/Taiwan.AI.Group/permalink/1944977135824718/

[4] Irie, Kazuki, et al. LSTM, GRU, highway and a bit of attention: an empirical overview for language modeling in speech recognition. RWTH Aachen University Aachen Germany, 2016.
https://www-i6.informatik.rwth-aachen.de/publications/download/1006/Irie--2016.pdf

[5] Greff, Klaus, et al. "LSTM: A search space odyssey." IEEE transactions on neural networks and learning systems (2017).
https://arxiv.org/pdf/1503.04069.pdf?utm_content=buffereddc5&utm_medium=social&utm_source=plus.google.com&utm_campaign=buffer

◎ attention

[6] Neural Response Generation——关于回复生成工作的一些总结
https://zhuanlan.zhihu.com/p/30533380

[7] Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. "Neural machine translation by jointly learning to align and translate." arXiv preprint arXiv:1409.0473 (2014).
https://arxiv.org/pdf/1409.0473.pdf

[8] Luong, Minh-Thang, Hieu Pham, and Christopher D. Manning. "Effective approaches to attention-based neural machine translation." arXiv preprint arXiv:1508.04025 (2015).
https://arxiv.org/pdf/1508.04025.pdf

◎ seq2seq

[9] seq2seq学习笔记 - CSDN博客
http://blog.csdn.net/Jerr__y/article/details/53749693

[10] 完全图解RNN、RNN变体、Seq2Seq、Attention机制
https://zhuanlan.zhihu.com/p/28054589 

[11] RNN 循环神经网络系列
https://github.com/xitu/gold-miner/blob/master/TODO/recurrent-neural-networks-rnn-part-1-basic-rnn-char-rnn.md

深入淺出 Deep Learning(七):word2vec

深入淺出 Deep Learning(七):word2vec

 2018/01/13


中文
簡體
英文
論文



解說
討論
源碼
原理



-----

References

中文

Vector Space of Semantics - Mark Chang's Blog
https://ckmarkoh.github.io/blog/2016/07/10/nlp-vector-space-semantics/

Word2vec (Part 1 : Overview) - Mark Chang's Blog
https://ckmarkoh.github.io/blog/2016/07/12/neural-network-word2vec-part-1-overview/

Word2vec (Part 2 : Backward Propagation) - Mark Chang's Blog
https://ckmarkoh.github.io/blog/2016/07/12/-word2vec-neural-networks-part-2-backward-propagation/

Word2vec (Part 3 : Implementation) - Mark Chang's Blog
https://ckmarkoh.github.io/blog/2016/08/29/neural-network-word2vec-part-3-implementation/

Word2vec - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/Word2vec

科技大擂台 詞向量介紹
https://fgc.stpi.narl.org.tw/activity/videoDetail/4b1141305ddf5522015de5479f4701b1

Word Embedding與Word2Vec - 掃文資訊
https://hk.saowen.com/a/170e16f48e0ac5d1caf38d1a294739b105fe08b1cc0724b6eed98efc7d49f401

實作Tensorflow (5):Word2Vec - YC Note
http://www.ycc.idv.tw/YCNote/post/44

更別緻的詞向量模型:simpler glove (一) - 幫趣
http://bangqu.com/ADv99g.html

用Python做深度學習的自然語言處理 | Soft & Share
https://softnshare.wordpress.com/2017/09/25/python-natural-language-process-deep-learning/

用深度學習(CNN RNN Attention)解決大規模文本分類問題 - 綜述和實踐 | 香港矽谷
https://www.hksilicon.com/articles/1459305

奇異值分解 (SVD) | 線代啟示錄
https://ccjou.wordpress.com/2009/09/01/奇異值分解-svd/





簡體

[NLP] 秒懂词向量Word2vec的本质
https://zhuanlan.zhihu.com/p/26306795

深度学习word2vec笔记之基础篇 - CSDN博客
http://blog.csdn.net/mytestmy/article/details/26961315

关于 word2vec 我有话要说 - 腾讯云社区 - 腾讯云
https://www.qcloud.com/community/article/404897

word2vec 中的数学原理详解(一)目录和前言 - CSDN博客
http://blog.csdn.net/itplus/article/details/37969519



词向量( Distributed Representation)工作原理是什么? - 知乎
https://www.zhihu.com/question/21714667/answer/19433618

word2vec 相比之前的 Word Embedding 方法好在什么地方? - 知乎
https://www.zhihu.com/question/53011711

Google 开源项目 word2vec 的分析? - 知乎
https://www.zhihu.com/question/21661274

word2vec有什么应用? - 知乎
https://www.zhihu.com/question/25269336

word2vec在工业界的应用场景-大数据算法
http://x-algo.cn/index.php/2016/03/12/281/



Word2vec:Java中的神经词向量 - Deeplearning4j: Open-source, Distributed Deep Learning for the JVM
https://deeplearning4j.org/cn/word2vec

word2vec源码解析之word2vec.c - CSDN博客
http://blog.csdn.net/lingerlanlan/article/details/38232755







英文

Word2vec - Wikipedia
https://en.wikipedia.org/wiki/Word2vec

The amazing power of word vectors | the morning paper
https://blog.acolyer.org/2016/04/21/the-amazing-power-of-word-vectors/

Deep Learning Weekly | Demystifying Word2Vec
https://www.deeplearningweekly.com/blog/demystifying-word2vec

Deep Learning, NLP, and Representations - colah's blog
http://colah.github.io/posts/2014-07-NLP-RNNs-Representations/




Word2Vec Tutorial - The Skip-Gram Model · Chris McCormick
http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/


Vector Representations of Words  |  TensorFlow
https://www.tensorflow.org/tutorials/word2vec

Learn Word2Vec by implementing it in tensorflow – Towards Data Science
https://towardsdatascience.com/learn-word2vec-by-implementing-it-in-tensorflow-45641adaf2ac

Word2Vec word embedding tutorial in Python and TensorFlow - Adventures in Machine Learning
http://adventuresinmachinelearning.com/word2vec-tutorial-tensorflow/

gensim: models.word2vec – Deep learning with word2vec
https://radimrehurek.com/gensim/models/word2vec.html





Intuitive Understanding of Word Embeddings: Count Vectors to Word2Vec
https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/




Approximating the Softmax for Learning Word Embeddings
http://ruder.io/word-embeddings-softmax/


Stop Using word2vec | Stitch Fix Technology – Multithreaded
https://multithreaded.stitchfix.com/blog/2017/10/18/stop-using-word2vec/



論文

-----

Bengio, Yoshua, et al. "A neural probabilistic language model." Journal of machine learning research 3.Feb (2003): 1137-1155.

-----

Le, Quoc, and Tomas Mikolov. "Distributed representations of sentences and documents." Proceedings of the 31st International Conference on Machine Learning (ICML-14). 2014.

-----

Mikolov, Tomas, et al. "Efficient estimation of word representations in vector space." arXiv preprint arXiv:1301.3781(2013).

-----

Mikolov, Tomas, Wen-tau Yih, and Geoffrey Zweig. "Linguistic regularities in continuous space word representations." hlt-Naacl. Vol. 13. 2013.

-----

Goldberg, Yoav, and Omer Levy. "word2vec Explained: deriving Mikolov et al.'s negative-sampling word-embedding method." arXiv preprint arXiv:1402.3722 (2014).

-----

Rong, Xin. "word2vec parameter learning explained." arXiv preprint arXiv:1411.2738 (2014).

-----

来斯惟. "基于神经网络的词和文档语义向量表示方法研究." (2016).
https://arxiv.org/ftp/arxiv/papers/1611/1611.05962.pdf

-----

Pennington, Jeffrey, Richard Socher, and Christopher Manning. "Glove: Global vectors for word representation." Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014.


-----

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

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

2018/02/03

前言:

施工中...


Summary:



-----



-----

Outline

四、ADAS
五、R-CNN
六、PVANet

-----



R-CNN 加上 RNN 可以處理影片裡的物件辨識 [2]。有助於 ADAS 從先進駕駛輔助系統進一步升級到自駕車的應用。





Fig. 2. 深度學習: Caffe 之經典模型詳解與實戰 [2]。

-----

-----

五、R-CNN

SAE 的 Level 3 [15] 會開始大量使用 R-CNN [16]-[19] 的技術。

「SAE( Society of Automotive Engineers )International 美國汽車工程師協會針對不同自動駕駛的程度,分成 0~5 的等級,等級愈高自駕的程度愈高,但也愈難達成。」[15]

「Level 3: 一些情境下,可以完全不用人為操作,例如高速公路。不過現在搭載 Hardware-1 的 Tesla 在高速公路上使用 Autopilot 駕駛時還不能全程放手,如果能放手做自己想做的事,就符合 Level 3,目前姑且稱它 Level 2.5 吧。( 事實上在 2016 年底 Tesla 跟 Nvidia 合作推出了新的硬體架構 Hardware-2,目標是在 2017 年底推出 Level 4~5 的全自駕技術。)」[15]







結論:



-----

References

[1] AI隨筆(七):Advanced Driver Assistance Systems(ADAS)
http://hemingwang.blogspot.tw/2018/02/aiadvanced-driver-assistance-systemsadas.html

[2] 一起來用十分鐘略懂自駕車吧!GoGoGo! _ TechBridge 技術共筆部落格
https://blog.techbridge.cc/2017/06/21/Lets-know-a-little-bit-of-Self-Driving-Car/

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

[16] FCN
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

[17] 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.
https://www.cv-foundation.org/openaccess/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf?spm=5176.100239.blogcont55892.8.pm8zm1&file=Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf

[18] Fast R-CNN
Girshick, Ross. "Fast R-CNN." Proceedings of the IEEE international conference on computer vision. 2015.
http://openaccess.thecvf.com/content_iccv_2015/papers/Girshick_Fast_R-CNN_ICCV_2015_paper.pdf

[19] 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.
http://papers.nips.cc/paper/5638-faster-r-cnn-towards-real-time-object-detection-with-region-proposal-networks.pdf

[20] 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.
https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf

[21] SSD
Liu, Wei, et al. "SSD: Single shot multibox detector." European conference on computer vision. Springer, Cham, 2016.
https://arxiv.org/pdf/1512.02325.pdf  

[22] FCN學習 Semantic Segmentation - GetIt01
https://www.getit01.com/p2018012422976342/

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

[24] PVANet
Kim, Kye-Hyeon, et al. "PVANET: deep but lightweight neural networks for real-time object detection." arXiv preprint arXiv:1608.08021 (2016).
https://arxiv.org/pdf/1608.08021.pdf

Sunday, February 11, 2018

捐書(三四):簡報

捐書(三四):簡報

2011/06/10
 
說故事的力量
簡報聖經
圖解表現200鐵則
商業簡報200鐵則
自信演說 自在表達
商業寫作與溝通

-----

這是之前參加高科技產業分析師培訓班時,參考講師的意見所買。

培訓班學費不便宜,大部分人由公司贊助,我則是自費。

有用嗎?有些吧。值得嗎?現在想來是有點貴了!

-----

上次搬家時全送到圖書館了。其實最近應該又用的上。

印象最深刻的一本是:說故事的力量。

每次報告前先來一則故事。算是有效,可以得先蒐集故事!也許再買一本書,故事、書。就可以了,哈哈!

Friday, February 09, 2018

AI創業教室(一):如何開始

AI創業教室(一):如何開始

2018/02/09

前言:


-----



-----







-----

[2] 非常競爭優勢 : 知識創業十四步驟 納斯漢/天下雜誌, 2000 圖書 清大總圖( 1/ 0) 人社分館( 1/ 0) 494.1 8556
http://www.books.com.tw/products/0010140519

[3] High Tech Start Up, Revised and Updated: The Complete Handbook For Creating Successful New High Tech Companies Hardcover – March 16, 2000 by John L. Nesheim (Author)
https://www.amazon.com/High-Tech-Start-Revised-Updated/dp/068487170X

[4] 創業之路

[5] 科技創業聖經 : 如何找到下一個微軟 夏恩/臺灣培生教育, 2005 圖書 清大總圖( 1/ 0) 人社分館( 2/ 0) 總圖密集書庫( 1/ 0) 494.1 874/2
http://m.sanmin.com.tw/Product/index/000426547



-----

[6] Venture Two Cents 險而議見
http://icjan.blogspot.tw/

[7] 錢在哪裡,心就在哪裡!

[8] 創業路上專業、資金相輔相成,法律專業不可或缺

[9] 如何組成創業團隊?

[10] 我們需要更多盟友,而不是假想敵

[11] 三種角色,四個市場

[12] Co-founder 的必要

[13] 你必須沒有退路

[14] 怎麼寫商業計畫書?

AI創業教室(目錄)

AI創業教室(目錄)

2018/02/09

-----


-----

(序)

一、如何開始

二、參考書籍

三、研發

四、團隊

五、財務

六、行銷

七、股權

八、營運

Thursday, February 08, 2018

AI創業教室():營運

AI創業教室():營運

2018/02/08

前言:


-----

References

心態:

[1] Venture Two Cents 險而議見  錢在哪裡,心就在哪裡!
http://icjan.blogspot.tw/2011/03/blog-post_29.html

[2] 新創公司如何分配股權? _ MR JAMIE
http://mrjamie.cc/2011/05/04/equity/

[3] 創業人醒醒吧!別再設立「有限公司」了! ~ 黃沛聲律師科技創業法律誌
http://www.pshuang.cc/2012/02/blog-post.html

[4] Venture Two Cents 險而議見  創業人醒醒吧!別再請會計師「處理」資本出資了!
http://icjan.blogspot.tw/2011/11/blog-post.html

程序:

[5] 設立公司的步驟 - 台灣會計記帳網
http://www.findcpa.com.tw/incorporate.html

[6] 在台灣開公司要經過哪些程序? _ CP
https://cpediablog.wordpress.com/2016/08/06/%E5%9C%A8%E5%8F%B0%E7%81%A3%E9%96%8B%E5%85%AC%E5%8F%B8%E8%A6%81%E7%B6%93%E9%81%8E%E5%93%AA%E4%BA%9B%E7%A8%8B%E5%BA%8F%EF%BC%9F/

Saturday, February 03, 2018

AI隨筆():Advanced Driver Assistance Systems(ADAS)

AI隨筆():Advanced Driver Assistance Systems(ADAS)

2018/02/03

前言:

施工中...

Summary:

關於先進駕駛輔助系統 Advanced Driver Assistance Systems(ADAS),其主要組成有三:1. 影像辨識技術、2. ADAS 晶片,與 3. 高精度地圖 [1]。

以影像辨識技術而言,近年來,深度學習的 R-CNN 系列已有很大的突破 [2]。主要的 ADAS 晶片供應商則有:高通/NXP、英特爾、瑞薩、英飛凌、德州儀器、NVIDIA、ADI、富士通、東芝、Xilinx [3]-[8]。另外,如果升級到自駕車等級,則導航地圖的精密度也要提升到厘米級才能保障乘坐者的安全 [9], [10]。目前學術界在 ADAS 上,則尚未看到整合深度學習的跡象 [11]-[14]。

-----



Fig. 1. 大衛‧歐伯曼認為,他們在先進輔助駕駛系統技術耕耘已久,有助於進軍自動駕駛市場 [1]。

-----

Outline

一、影像辨識技術
二、ADAS 晶片
三、高精度地圖
四、ADAS 論文
五、R-CNN
六、PVANet

-----

一、影像辨識技術

R-CNN 加上 RNN 可以處理影片裡的物件辨識 [2]。有助於 ADAS 從先進駕駛輔助系統進一步升級到自駕車的應用。




Fig. 2. 深度學習: Caffe 之經典模型詳解與實戰 [2]。

-----

二、ADAS 晶片

主要的 ADAS 晶片供應商有:高通/NXP、英特爾、瑞薩、英飛凌、德州儀器、NVIDIA、ADI、富士通、東芝、Xilinx [3]。

「從晶片設計來說,現在 ADAS 處理器晶片的主要挑戰在如下幾個方面:

1. 車規級的標準,最好過 ISO 26262,達到 ASIL-B 甚至 ASIL-D 級別;

2. 高計算量以及高帶寬,特別是多傳感器融合的晶片,需要更高的晶片頻率,以及異構設計,以達到快速的數據處理速度,同時傳輸的吞吐率上也有較高要求;

3. 隨著人工智慧在 ADAS 上的應用,針對晶片的設計會考慮增加硬體的深度學習設計,如何在軟硬體上做取捨,以及人工智慧計算模型與原有軟硬體架構以及整個系統設計上做匹配,目前來看還在早期探索階段。」[3]

上面第三項,是這一波深度學熱潮的重點。除了 NVIDIA 的 GPU,Google 的 TPU 之外,是否有 IC 設計廠商能在此領域搶佔一席之地,讓我們拭目以待。

-----


Fig. 3. TPU [8].

-----

「對於自動駕駛領域來說,深度學習晶片則是與傳統晶片不同。因為深度學習是一類特定應用,深度學習特別是 CNN 圖像識別的通用型晶片或許是可能的。」[5]

「TPU 是一個推理晶片,它並非是要取代 GPU,可以確定的是,TPU 與 CPU 一起使用對訓練分析更加有益。但對於 CPU 製造商而言,如何研發出像 ASIC 一樣兼顧性能和能效的晶片是現在以及未來要做的。」[7]

-----

三、高精度地圖

「傳統地圖只需要做到米級精度即可實現 GPS 導航,但要想保證無人車行駛安全需要達到厘米級精度才可以。高精度地圖能滿足這個要求,能很好地彌補傳感器在測量和感知上先天存在的缺陷,為自動駕駛提供即時定位和構建正確的地圖。」[9]



Fig. 4. HDLM(HD Live Map) [10].

-----

四、ADAS 論文 

快速掃過幾篇最新的 ADAS 論文,學術界的速度看起來比業界是慢多了,目前尚未看到有整合深度學習的研究 [11]-[14]。

-----


結論:



-----

References

[1] 幫英特爾佈局自動駕駛,4700億價值的背後,以色列公司Mobileye:多元商業模式成就了我們|數位時代
https://www.bnext.com.tw/article/45966/israel-company-mobileye-said-multiple-business-model-made-them-success

[2] AI從頭學(一八):Convolutional Neural Network
http://hemingwang.blogspot.tw/2017/03/aiconvolutional-neural-network_23.html
 
[3] 一文了解主要ADAS处理器芯片厂商 _ 厚势_搜狐科技_搜狐网
http://www.sohu.com/a/208847028_465591

[4] 一文了解主要ADAS處理器晶片廠商 _ 厚勢 - 壹讀
https://read01.com/J0xdnzD.html#.WmlElvIlk8A

[5] 从算法到芯片,再到ADAS芯片 _ 厚势_搜狐科技_搜狐网
http://www.sohu.com/a/190721377_465591

[6] 從算法到晶片,再到ADAS晶片 _ 厚勢 - 壹讀
https://read01.com/zh-tw/kELnxNm.html#.WmlEXPIlk8A
 
[7] Google 硬體工程師揭密,TPU 為何會比 CPU、GPU 快 30 倍 _ TechNews 科技新報
http://technews.tw/2017/04/07/first-in-depth-look-at-googles-tpu-architecture/

[8] A first detailed look at Google's TPU
http://www.visualisetheworld.com/index.php/b/a-first-detailed-look-at

[9] 自动驾驶之高精度地图技术的发展动向 _ 厚势_网易订阅
http://mp.163.com/v2/article/detail/D7B5V4Q90511BV1J.html

[10] The future is HERE  BMW, Audi and Mercedes introduce real-time digital maps
http://www.bmwblog.com/2015/12/07/the-future-is-here-bmw-audi-and-mercedes-introduce-real-time-digital-maps/

[11] Ziebinski, Adam, et al. "Review of advanced driver assistance systems (ADAS)." AIP Conference Proceedings. Vol. 1906. No. 1. AIP Publishing, 2017.
http://aip.scitation.org/doi/pdf/10.1063/1.5012394

[12] Biondi, Francesco, et al. "Advanced driver assistance systems: Using multimodal redundant warnings to enhance road safety." Applied ergonomics 58 (2017): 238-244.

[13] Elgharbawy, M., et al. "A real-time multisensor fusion verification framework for advanced driver assistance systems." Transportation Research Part F: Traffic Psychology and Behaviour (2017).

[14] Janjatovic, Joakim, et al. "Algorithm optimization framework for Advanced Driver Assistance Systems." Consumer Electronics (ICCE), 2017 IEEE International Conference on. IEEE, 2017.