Friday, February 17, 2017

FB社團:AI

FB社團:AI

台灣「人工智慧」社團
https://www.facebook.com/groups/Taiwan.AI.Group/?fref=ts

人工智慧/自然語言處理/搜尋引擎
https://www.facebook.com/groups/959050367523488/?fref=ts

Deep Learning Taiwan
https://www.facebook.com/groups/twdnn/?fref=ts

OpenAI@TW
https://www.facebook.com/groups/259799017688463/?fref=ts

香港深度學習交流會 - Hong Kong Deep Learning Study Group
https://www.facebook.com/groups/170776840085989/

-----

AI Korea (Deep Learning)
https://www.facebook.com/groups/AIKoreaOpen/

AI & Deep Learning Enthusiasts Bay Area
https://www.facebook.com/groups/1691724667816799/?fref=ts

Artificial Intelligence & Deep Learning
https://www.facebook.com/groups/DeepNetGroup/?fref=ts

Deep AI
https://www.facebook.com/groups/DeepAI/

Deep learning
https://www.facebook.com/groups/DeepLearnng/?fref=ts

Deep Learning / AI
https://www.facebook.com/groups/1738168866424224/

Deep Learning & Artificial Intelligence Germany
https://www.facebook.com/groups/939105009506344/?fref=ts

Deep Learning Italia
https://www.facebook.com/groups/196584677432705/?fref=ts

HH Machine Learning and Artificial Intelligence
https://www.facebook.com/groups/hhmachinelearning/?fref=ts

Machine & Deep learning Israel
https://www.facebook.com/groups/543283492502370/?fref=ts

Nvidia Deep Learning
https://www.facebook.com/groups/NvidiaDL/

Strong Artificial Intelligence
https://www.facebook.com/groups/strongartificialintelligence/?fref=ts

Wit.ai Hackers
https://www.facebook.com/groups/withackers/?fref=ts

-----

FB社團:TensorFlow

TensorFlow Taiwan
https://www.facebook.com/groups/294714030866185/

TensorFlow Group
https://www.facebook.com/groups/tensorflowdevelopers/?fref=ts

TensorFlow KR
https://www.facebook.com/groups/TensorFlowKR/

딥러닝 오픈소스 스터디 (TensorFlow, Caffe 등)

-----

FB社團:其他技術:

AWS User Group Taiwan
https://www.facebook.com/groups/awsugtw/

golang
https://www.facebook.com/groups/golanggonuts/?fref=ts

Golang Gopher Taiwan
https://www.facebook.com/groups/1667684473462867/

Go程式語言 (Golang Taiwan, Gopher Taipei)
https://www.facebook.com/groups/269001993248363/?fref=ts

Python Taiwan
https://www.facebook.com/groups/pythontw/

TensorFlow文字分類

TensorFlow文字分類

轉貼TensorFlow Taiwan社團文章:
https://www.facebook.com/groups/294714030866185/permalink/417223301948590/

雷惟婷 2月11日 14:39

大家好,最近做專題時應用到了tensorflow,要做的題目是利用從FB取得的資料來做旅遊景點的推薦,取得的資料除了圖還有文字,上網找了很多資料,都只看到圖像辨識,請問tensorflow能做文字方面的辨識嗎? (看到"圖書館" "美術館" 能將它分為人文類別)

黃梓翔:
我猜應該是將word轉換成vector ,將你的關鍵字向量進行分類。查word embedding應該有一些資料可以看

雷惟婷:
謝謝你,我會去找相關資料~ 

許奕中:
希望原po能把資料格式說明清楚一點,博物館是只有地名?人文之類的標籤是已經有的嗎?

雷惟婷:
我們目前還沒有做出來,指導教授那邊是告訴我們從Facebook獲得的資料會有文字,不全然是圖片,所以要去找能夠分類文字的方法

郭介銘:
分類文字應該可以先參考wordnet來處理同義跟相似字的問題。分類問題就得先看是要分的多細了。

許奕中:
如果有pre-train好的中文word2vec model,這問題應該蠻好解決的。

楊修維:
簡單做法是斷完詞作成tf-idf vector餵進去就好了。但要label data有點累就是了,而且短文可能不好做。

【轉貼】从ISSCC 2017看人工智能芯片的四大趋势

【轉貼】从ISSCC 2017看人工智能芯片的四大趋势
2017-02-11

http://www.jiqizhixin.com/article/2264

Wednesday, February 15, 2017

AI從頭學(目錄)

FB社團:台灣「人工智慧」社團

FB社團:AI

AI從頭學(目錄)

AI從頭學(一):文獻回顧 

AI從頭學(二):Popular Deep Learning Software Tools

AI從頭學(三):Popular Deep Learning Hardware Tools

AI從頭學(四):AD and LeNet

AI從頭學(五):AD and Python

AI從頭學(六):The Net

AI從頭學(七):AD and Python from Jason 

AI從頭學(八):The Net from Mark  

AI從頭學(九):Back Propagation  

AI從頭學(一0):Automatic Differentiation

AI從頭學(一一):A Glance at Deep Learning 

AI從頭學(一二):【短評】深度学习:Caffe之经典模型详解与实战

AI從頭學(一二):【短評】深度学习:Caffe之经典模型详解与实战

AI從頭學(一二):【短評】深度学习:Caffe之经典模型详解与实战

2017/02/15

【短評】深度学习:Caffe之经典模型详解与实战

https://www.amazon.cn/%E5%9B%BE%E4%B9%A6/dp/B01N3KU68R

這本很棒!

這幾個禮拜,我趁著到台北的機會到天瓏書局逛逛。這本介紹了幾個很有名的CNN模型,讓我對這個技術的沿革有更深的瞭解。

折合台幣約五百元,我考慮了很久,還是沒買,因為我要戒掉買書的習慣,改成以電子書跟論文為主。上兩波C++跟MPEG我都買了一堆沒看的書,意義不大!

其餘的簡體中文DL書則沒有引起我很大的興趣。我把目錄貼出來,準備照著這個順序K論文!

目录
第1章绪论1
第2章深度学习11
第3章Caffe简介及其安装配置36
第4章Caffe网络定义58
第5章LeNet模型88
第6章AlexNet模型107
第7章GoogLeNet模型126
第8章VGGNet模型146
第9章Siamese模型158
第10章SqueezeNet模型168
第11章FCN模型177
第12章R—CNN模型196
第13章Fast—RCNN模型217
第14章Faster—RCNN模型239
第15章SSD模型264
第16章Kaggle项目实践:人脸特征检测290
第17章Kaggle项目实践:猫狗分类检测311

-----

目录

第1章绪论1
1.1引言1
1.2人工智能的发展历程2
1.3机器学习及相关技术4
1.3.1学习形式分类4
1.3.2学习方法分类5
1.3.3机器学习的相关技术7
1.4国内外研究现状8
1.4.1国外研究现状8
1.4.2国内研究现状9
第2章深度学习11
2.1神经网络模型11
2.1.1人脑视觉机理11
2.1.2生物神经元13
2.1.3人工神经网络15
2.2BP神经网络18
2.2.1BP神经元18
2.2.2BP神经网络构成19
2.2.3正向传播21
2.2.4反向传播21
2.3卷积神经网络24
2.3.1卷积神经网络的历史25
2.3.2卷积神经网络的网络结构26
2.3.3局部感知27
2.3.4参数共享28
2.3.5多卷积核28
2.3.6池化(Pooling)29
2.4深度学习框架30
2.4.1Caffe30
2.4.2Torch31
2.4.3Keras32
2.4.4MXNet32
2.4.5TensorFlow33
2.4.6CNTK33
2.4.7Theano34
第3章Caffe简介及其安装配置36
3.1Caffe是什么36
3.1.1Caffe的特点38
3.1.2Caffe的架构38
3.2Caffe的安装环境39
3.2.1Caffe的硬件环境39
3.2.2Caffe的软件环境43
3.2.3Caffe的依赖库44
3.2.4Caffe开发环境的安装46
3.3Caffe接口52
3.3.1CaffePython接口52
3.3.2CaffeMATLAB接口55
3.3.3Caffe命令行接口56
第4章Caffe网络定义58
4.1Caffe模型要素58
4.1.1网络模型58
4.1.2参数配置62
4.2GoogleProtobuf结构化数据63
4.3Caffe数据库65
4.3.1LevelDB65
4.3.2LMDB66
4.3.3HDF566
4.4CaffeNet66
4.5CaffeBlob68
4.6CaffeLayer70
4.6.1DataLayers71
4.6.2ConvolutionLayers75
4.6.3PoolingLayers76
4.6.4InnerProductLayers77
4.6.5ReLULayers78
4.6.6SigmoidLayers79
4.6.7LRNLayers79
4.6.8DropoutLayers80
4.6.9SoftmaxWithLossLayers80
4.6.10SoftmaxLayers81
4.6.11AccuracyLayers81
4.7CaffeSolver82
Solver方法83
第5章LeNet模型88
5.1LeNet模型简介88
5.2LeNet模型解读89
5.3Caffe环境LeNet模型91
5.3.1mnist实例详解91
5.3.2mnist手写测试103
5.3.3mnist样本字库的图片转换106
第6章AlexNet模型107
6.1AlexNet模型介绍107
6.2AlexNet模型解读108
6.3AlexNet模型特点111
6.4Caffe环境AlexNet模型训练112
6.4.1数据准备112
6.4.2其他支持文件113
6.4.3图片预处理113
6.4.4ImageNet数据集介绍113
6.4.5ImageNet图片介绍115
6.4.6ImageNet模型训练115
6.4.7Caffe的AlexNet模型与论文的不同124
6.4.8ImageNet模型测试124
第7章GoogLeNet模型126
7.1GoogLeNet模型简介126
7.1.1背景和动机127
7.1.2Inception结构127
7.2GoogLeNet模型解读129
7.2.1GoogLeNet模型结构129
7.2.2GoogLeNet模型特点134
7.3GoogLeNet模型的Caffe实现135
第8章VGGNet模型146
8.1VGGNet网络模型146
8.1.1VGGNet模型介绍146
8.1.2VGGNet模型特点147
8.1.3VGGNet模型解读147
8.2VGGNet网络训练149
8.2.1VGGNet训练参数设置149
8.2.2Multi—Scale训练149
8.2.3测试150
8.2.4部署150
8.3VGGNet模型分类实验150
8.3.1Single—scale对比150
8.3.2Multi—scale对比151
8.3.3模型融合152
8.4VGGNet网络结构153
第9章Siamese模型158
9.1Siamese网络模型159
9.1.1Siamese模型原理159
9.1.2Siamese模型实现160
9.2Siamese网络训练165
9.2.1数据准备165
9.2.2生成side165
9.2.3对比损失函数166
9.2.4定义solver166
9.2.5网络训练166
第10章SqueezeNet模型168
10.1SqueezeNet网络模型168
10.1.1SqueezeNet模型原理168
10.1.2FireModule169
10.1.3SqueezeNet模型结构170
10.1.4SqueezeNet模型特点171
10.2SqueezeNet网络实现172
第11章FCN模型177
11.1FCN模型简介177
11.2FCN的特点和使用场景178
11.3CaffeFCN解读179
11.3.1FCN模型训练准备180
11.3.1FCN模型训练183
第12章R—CNN模型196
12.1R—CNN模型简介196
12.2R—CNN的特点和使用场景197
12.3CaffeR—CNN解读198
12.3.1R—CNN模型训练准备198
12.3.2R—CNN模型训练201
第13章Fast—RCNN模型217
13.1Fast—RCNN模型简介217
13.2Fast—RCNN的特点和使用场景218
13.3CaffeFast—RCNN解读220
13.3.1Fast—RCNN模型训练准备220
13.3.2Fast—RCNN模型训练222
第14章Faster—RCNN模型239
14.1Faster—RCNN模型简介239
14.2Faster—RCNN的特点和使用场景241
14.3CaffeFaster—RCNN解读242
14.3.1Faster—RCNN模型训练准备242
14.3.2Faster—RCNN模型训练244
第15章SSD模型264
15.1SSD模型简介264
15.2SSD的特点和使用场景266
15.3CaffeSSD解读267
15.3.1SSD模型训练准备267
15.3.2SSD模型训练268
第16章Kaggle项目实践:人脸特征检测290
16.1项目简介290
16.2赛题和数据291
16.3Caffe训练和测试数据库293
16.3.1数据库生成293
16.3.2网络对比295
16.3.3网络一296
16.3.4网络二300
16.3.5Python人脸特征预测程序306
第17章Kaggle项目实践:猫狗分类检测311
17.1项目简介
17.2赛题和数据
17.3Caffe训练和测试数据库
17.3.1数据库生成
17.3.2Caffe实现
17.3.3CatdogNet训练
17.3.4CatdogNet模型验证

AI從頭學(一一):A Glance at Deep Learning

AI從頭學(一一):A Glance at Deep Learning

2017/02/15

前言:

Back Propagation (BP) 跟Automatic Differentiation (AD)之後,我應該要有系統地開始幫自己安排一些Deep Learning (DL) 的課程了。

-----

Summary:

也許可以從AlphaGo的介紹看起吧 [1]-[9]!先引發興趣再說。

去年十一月開始,我因為工作上接觸chatbot,間接開始蒐集AI的資料。除了網頁,也開始查論文,關鍵字用survey, review, 以及deep learning [10]-[16]。論文,說實在,即使是文獻回顧的論文,對新手來說還是很不容易閱讀。後來查到一些machine learning (ML)的電子書,有專門介紹DL的章節 [17]-[19],比起直接閱讀專書 [20], [21],要有親和力一點。

要學DL,一開始可以從CNN [22]-[24]與RNN [25]-[30]入手,DL的未來,則是Representation Learning [31],這是LeNet的作者Yann LeCun的看法 [12]。好傢伙的書也是從CNN, RNN開始,到後面安排了一章專門講Representation Learning的 [20]。

-----

TOC

1. Introduction
2. CNN
3. RNN
4. RL-M
5. MCTS
6. AE
7. BM
8. RL-D
9. GAN

-----

1. Introduction

圖一是從 [17] 的第十一章:Deep learning摘錄下來的,我認為這可以幫我們掌握DL的全貌,以及各個子題之間的關連性。另外本章前面也從生理學的角度,簡單介紹一些神經元的概念。雖然它的BP很難看懂 :(

上面是Supervised,左邊是ML,這個我們跳過去。右邊是DL,有三項,分別是Deep Neural Nets,有興趣的話,[21]的第四章:Deep Neural Networks有介紹。另外是CNN [22]-[24]與RNN [25]-[30]。

下面是Unsupervised,主要是Autoencoder (AE) 跟Boltzmann Machine (BM)。由上而下,由淺入深,安排課程的順序主要參考此圖。


Fig. 1. Deep learning taxonomy, p. 492 [17].

-----

2. CNN - Convolutional Neural Network

CNN [22]-[24] 用到兩個主要的觀念,convolution跟max-pooling [10], [24]。這兩個觀念是受到視神經的構造所啟發 [23],發明的人真的蠻有巧思。我認為這是CNN特別之處,若要自己設計新的神經網路,腦神經應該還有很多可以借鏡的地方。

Convolution 對於沒有DSP概念的人不易理解,在我修完DSP時,才想到,一維的convolution,其實就是二項式相乘!

-----

3. RNN - Recurrent Neural Network

懂BP的話,RNN [25]-[30] 應該就也懂了。關鍵是在多層的BP時,每一層的神經元處理時不用照順序(實作當然也是照順序較方便,p.s. 我還沒實作過)但是以一層的RNN來說,要從最後的輸出開始處理 [26], [27]。

RNN [26] 有記憶的特性,在處理時序的信號時表現很好,但它也有一些缺點如不易收斂等 [25]。所以有更新的RNN設計出來解決上述缺點,叫Long Short-Term Memory (LSTM) [28], [29]。實際應用時,常用簡化版本Gated Recurrent Unit (GRU) [25]。

-----

4. RL-M - Reinforcement Learning (Machine Learning)

緊接著 [17] 的第十一章:Deep learning 後面是第十二章:Reinforcement learning。所以我們可以推測它不是DL,但是有高度相關性?RL-M在AlphaGo上充分證明了它的厲害 [9]。這個主題從DL還不大deep的時代就一直反覆出現 [13]。

為了探究AlphaGo [9] 的奧秘,在CNN跟RNN之後,我認為可以學一下RL-M。

-----

5. MCTS - Monte Carlo Tree Search

AlphaGo [9] 裡面用到另一個重要的技術是MCTS。它是更廣義的蒙地卡羅方法 (Monte Carlo Method) 用在遊戲上。好傢伙第十七章有講到更廣義的Monte Carlo Method [20]。要讀懂 [9],就得先瞭解 RL-M跟MCTS。

-----

6. AE - Autoencoder

這個我直接引用一段論文好了:"An autoencoder (AE) is a feedforward neural network to encode the input into a more compact representation and reconstruct the input with the learned representation. In its simplest form, an autoencoder is no more than a multilayer perceptron with a bottleneck layer (a layer with a small number of hidden units) in the middle" [11].

參考好傢伙第十四章:Autoencoders [20]。

-----

7. BM - Boltzmann Machine

參考好傢伙第二十章:Deep Generative Models [20]

-----

8. RL-D - Representation Learning - (Deep Learning)

為了安排這個讀書計畫,由於最近我在查RTB的DL相關論文時意外查到 [31],對於Representation Learning有點印象,回去看 [12],Yann LeCun也說這很重要,然後好傢伙第十五章:Representation Learning [20] 也有,所以安排進來。

這也算是一種deep learning吧!

-----

9. GAN - Generative Adversarial Network

對機器學習或深度學習等演算法具基本概念(CNN, RNN, LSTM, GAN)理解且具熱忱尤佳。

以上是我在瀏覽網頁時看到的一則訊息,所以我把GAN也加進來了 [32]-[33]。

-----

結論:

基本上,你可以說這是一個還不熟DL的新手幫自己安排的讀書計畫,談不上心得,若有謬誤之處,還請不吝指正。它是為了避免從頭到尾K聖經 [20] 導致消化不良,所以找了一些輔助教材協助學習。順序則是以自己一點點的DL經驗穿插以加強學習動機。

計畫安排好了,有沒有時間執行呢?看狀況吧:)

-----

References

[1] AI人工智慧再突破!Google圍棋系統,幹掉歐洲最強職業選手
https://www.bnext.com.tw/article/38593/BN-2016-01-28-033655-81

[2] 深入淺出,解讀Google的人工智慧圍棋「大腦」
https://www.bnext.com.tw/article/38740/BN-2016-02-22-183726-196

[3] 淺談Alpha Go所涉及的深度學習技術
https://www.bnext.com.tw/article/38923/BN-2016-03-14-120814-178

[4] 「戰勝自己」不只是口號──《Nature》AlphaGo論文讀後感
https://www.bnext.com.tw/article/38927/BN-2016-03-14-172809-178

[5] [韓國現場]世紀對決開始啦!AlphaGo與棋王李世乭對弈中
https://www.bnext.com.tw/article/38883/BN-2016-03-09-113106-117

[6] AlphaGo再勝李世乭!人機大戰4:1落幕
https://www.bnext.com.tw/article/38931/BN-2016-03-15-130754-117

[7] DeepMind執行長Demis Hassabis:20年前我就想發明AlphaGo了
https://www.bnext.com.tw/article/38910/BN-2016-03-11-152616-117

[8] [曹家榮]AlphaGo贏了,那人類開始反省了嗎?
https://www.bnext.com.tw/index.php/article/38905/BN-2016-03-11-082935-178

[9] 2016_Mastering the game of Go with deep neural networks and tree search

[10] 2016_Towards Bayesian Deep Learning, A Survey

[11] 2016_Deep Learning on FPGAs, Past, Present, and Future

[12] 2015_Deep learning

[13] 2015_Deep learning in neural networks, An overview

[14] 2014_Deep Learning, Methods and Applications

[15] 2012_Unsupervised feature learning and deep learning, A review and new perspectives

[16] 2009_Learning deep architectures for AI

[17] 2016_Practical Machine Learning

[18] 2016_Machine Learning Models and Algorithms for Big Data Classification

[19] 2015_Python Machine Learning

[20] 2016_Deep Learning
http://www.deeplearningbook.org/

[21] 2015_Automatic speech recognition, a deep learning approach

[22] LeNet CNN 實例 MNIST 手寫數字辨識  allenlu2007
https://allenlu2007.wordpress.com/2015/11/28/mnist-database-%E6%89%8B%E5%AF%AB%E6%95%B8%E5%AD%97%E8%BE%A8%E8%AD%98/

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

[24] 2002_Tutorial on Convolutions - Torch

[25] 淺談Deep Learning原理及應用
http://www.cc.ntu.edu.tw/chinese/epaper/0038/20160920_3805.html

[26] 類神經網路 -- Recurrent Neural Network ? MARK CHANG'S BLOG
http://cpmarkchang.logdown.com/posts/278457-neural-network-recurrent-neural-network

[27] 1990_Backpropagation through time, what it does and how to do it

[28] 1997_Long short-term memory

[29] 2012_LSTM, A search space odyssey

[30] 2013_How to construct deep recurrent neural networks

[31] 2016_ICE, Information Credibility Evaluation on Social Media via Representation Learning

[32] 2016_Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

[33] 2015_Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks

AI從頭學(一0):Automatic Differentiation

AI從頭學(一0):Automatic Differentiation

2017/02/15

前言:

建議先閱讀前一篇Back Propagation

本篇不是要教你Automatic Differentiation (AD),只是解答我在自學Deep Learning (DL)過程中所產生的疑問。

-----

Summary:

自動微分,又叫做演算式微分,英文分別是automatic或algorithmic differentiation,縮寫都是AD [1], [2]。AD 有兩種,forward mode跟reverse mode [1]-[4], [12]。

AD 可直接用程式語言完成 [5]-[8],也可藉由軟體套件實現 [9]-[11]。更進階則是配合GPU等硬體 [12]-[20],將reverse mode AD [13], [14] 運用於DL [1]-[3]。

-----

Q1: What is AD?
Q2: What are forward and reverse modes?
Q3: What are AD S/W tools?
Q4: What are GPU, CUDA, and OpenCL?

-----

Q1: What is AD?

AD是自動微分,所謂自動,不是你寫一個函數,他自動幫你產生程式碼,而是你寫好微分的程式碼,電腦幫你一行一行自動執行。

自動微分不是符號微分,也不是數值微分。說太多無用,請看圖一的範例自明。



Fig. 1a. Automatic, symbolic, and numerical differentiation [1].


Fig. 1b. Automatic, symbolic, and numerical differentiation [2].

-----

Q2: What are forward and reverse modes?

Forward mode是在求特定數值的函數值時,順便就幫你把導數求出來。Reverse mode則是先有導數值在逆推求偏導數值 [1]-[4], [12]。一樣,請參考圖二會更清楚。

在實作AD之前,要把函數先拆解成Kanotorivich graph,參考圖三。

我找了MATLAB、Scala、C++、與Fortran 的AD程式碼,有興趣可以看看 [5]-[8]。



Fig. 2a. Forward mode [2].


Fig. 2b. Reverse mode [2].


Fig. 3a. Kanotorivich graph [1]。


Fig. 3b. Kanotorivich graph [12]。

-----

Q3: What are AD S/W tools?

使用AD符合下列四項需求:Reliability, Computational Cost, Scalability, Human Effort。另外設計AD tools有兩種方法:Operator Overloading跟Source Transformation,各有其優缺點 [9],參考圖四。

所謂AD軟體套件,自然是別人先幫你寫好AD囉,常見用Python開發的tools的有PyADOL-C、PyCppAD、CasADi、Theano、CGT、AD [11]。



Fig. 4a. Operator Overloading [10].


Fig. 4b. Source Transformation [10].

-----

Q4: What are GPU, CUDA, and OpenCL?

Graphics Processing Unit (GPU) [18]。可搭配CUDA [19]或OpenCL [20] 使用。

CUDA是首次可以利用GPU作為C-編譯器的開發環境,專用於NVIDIA的GPU [19]。OpenCL是一個為CPU、GPU、DSP、FPGA等處理器與硬體加速器的框架 [20]。無論是CUDA C-語言或是OpenCL,指令最終都會被驅動程式轉換成PTX代碼,交由顯示核心計算 [19]。研究顯示,OpenCL並未因其通用性而減低性能 [17]。

有關GPU、CUDA、OpenCL可參考圖五到七幫助瞭解。圖五是Gradient Forward Mode的演算法,有sequential跟parallel version [12]。圖六是一個向量加法的程式碼,使用CUDA,pp. 41-42 [15]。圖七則是serial跟parallel multipication硬體架構, pp. 31-32 [16]。



Fig. 5a.Gradient Forward Mode – the sequential version [12].


Fig. 5b.Gradient Forward Mode – the parallel version [12].


Fig. 6a. Parallel Programming in CUDA C.


Fig. 6b. Parallel Programming in CUDA C.


Fig. 7a. H/W of serial multipication.


Fig. 7b. H/W of parallel multipication.

-----

結論:

設計AD套件很困難,然而AD的觀念其實很簡單。瞭解AD的觀念後,再去使用套件就不致於太心虛。重新看一次BP,您對於全手工用Python實作LeNet,是否多了幾分信心?:)




Fig. 8. Back propagation.

-----

References

[1] 2015_Automatic differentiation in machine learning, a survey

[2] 2014_Automatic differentiation of algorithms for machine learning

[3] 2006_Automatic Differentiation, Applications, Theory, and Implementations

[4] 1992_Automatic Differentiation, Overview and Application to Systems of  Parameterized Nonlinear Equations

[5] 2010_Introduction to Automatic Differentiation and MATLAB Object-Oriented Programming

[6] 2010_Automatic Differentiation with Scala

[7] 2004_Automatic Differentiation, C++ Templates and Photogrammetry

[8] 1964_A simple automatic derivative evaluation program

[9] 2000_Computing derivatives of computer programs

[10] Automatic differentiation – Wikipedia
https://en.wikipedia.org/wiki/Automatic_differentiation

[11] 2016_Benchmarking Python Tools for Automatic Differentiation

[12] 2012_Interval arithmetic and automatic differentiation on GPU using OpenCL

[13] 2016_GPU-accelerated adjoint algorithmic differentiation

[14] 2013+_Adjoint Algorithmic Differentiation of a GPU Accelerated Application

[15] 2010_CUDA by Example, An Introduction to General-Purpose GPU Programming, p. 41.

[16] 2011_Algorithms and Parallel Computing

[17] 2011_A comprehensive performance comparison of CUDA and OpenCL

[18] 圖形處理器 - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/%E5%9C%96%E5%BD%A2%E8%99%95%E7%90%86%E5%99%A8

[19] CUDA - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/CUDA 

[20] OpenCL - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/OpenCL 

Tuesday, February 14, 2017

Presto (SQL query engine)

Presto (SQL query engine)

https://en.wikipedia.org/wiki/Presto_%28SQL_query_engine%29

Apache Flink

Apache Flink

https://en.wikipedia.org/wiki/Apache_Flink

創業日記0034:城隍‧誠品

創業日記0034:城隍‧誠品

2017/02/14

上週四是開春第一天上班。

早上到天瓏書局之前,路過台灣城隍廟,想說常經過,進去參訪一下,順便添點香油錢,後來想到是流日影響。

-----


-----

下午跟老闆討論新的一年要做什麼,基本上還是推薦系統跟廣告系統。

我沒拿到新的合約,基本上還是續約,等老闆增資成功再看看。即便如此,我還是把珍藏的郭董簽名轉送給老闆。沒新合約其實是好事,因為昨天有新的發展,此是後話。

老闆是我大一兼大二室友,大學時他常常請我吃飯,我則是幫忙寫作業,特別是電腦程式。現在每週四老闆還是請我吃飯,我拿點顧問費,還是幫忙寫電腦程式的作業,只是這規格大不相同,屬於博士後研究的等級。

幫老闆算出新產品的售價公式後,我走路到大直站搭捷運。由於中午的時候我在朋友新開的披薩店吃了兩人份的餐點,還很撐,因此一路上並未找家店進去吃晚餐。

-----


-----

昨天又上台北一次,也是找大學室友。

我這另一位室友是我大二室友,不過大一時我們就合作寫過電腦程式的期末作業。用x86組合語言寫一個小型計算器。他寫UI,我寫演算法。

由於上週一時我跟之前談的唱片公司討論在專案開動前是不是可以先做一個公播系統,我得找人一起接下來。比起去年的計畫只是先燒錢,今年已經是以專案養公司,風險降到最低,而且有其他好處,所以老同學終於首肯加入我的創業計畫。這次還是一樣,他寫UI,我寫演算法,只是這規格也大不相同,是startup的等級。

我的R&D VP算是塵埃落定,接下來我的任務主要是連我自己在內籌組一個二到四人的AI team,team組好後,緊接著就是VC了。

武者震いして勇み立つ。

-----

むしゃ‐ぶるい〔‐ぶるひ〕【武者震い/武者振るい】 の意味

[名](スル)戦いや重大な場面に臨んで、興奮のためにからだが震えること。「スタートラインに立って、思わず武者震いする」

http://dictionary.goo.ne.jp/jn/215228/meaning/m0u/

list

Practical Machine Learning with H2O
: Powerful, Scalable Techniques for Deep Learning and AI

Java Deep Learning Essentials

R Deep Learning Essentials

Getting Started with Tensorflow

-----

Machine Learning with TensorFlow

F# for Machine Learning Essentials

Advanced Machine Learning with Python

Scala for Data Science

-----

Google Cloud Platform in Action

Learning AWS, Aurobindo Sarkar

AWS Development Essentials

Learning HBase

-----

Mastering Redis

Redis Applied Design Patterns

-----

Learning Scrapy

-----

價值主張年代:設計思考X顧客不可或缺的需求=成功商業模式的獲利核心

http://www.books.com.tw/products/0010673633

平台經濟模式:從啟動、獲利到成長的全方位攻略

http://www.books.com.tw/products/0010711652

【轉貼】TensorFlow 1.0 unlocks machine learning on smartphones

【轉貼】TensorFlow 1.0 unlocks machine learning on smartphones
InfoWorld | Jan 30, 2017

http://www.infoworld.com/article/3162413/artificial-intelligence/tensorflow-10-unlocks-machine-learning-on-smartphones.html

Saturday, February 11, 2017

【轉貼】AWS re:Invent 2016: Using MXNet for Recommendation Modeling at Scale

【轉貼】AWS re:Invent 2016: Using MXNet for Recommendation Modeling at  Scale

www.slideshare.net/.../aws-reinvent-2016-using-mxnet-for-recommend... 翻譯這個網頁 2016年12月17日 - November 30, 2016 Using MXNet for Recommendation Modeling at Scale MAC306 Leo Dirac, Principal Engineer, AWS Deep Learning; 2.

http://www.slideshare.net/AmazonWebServices/aws-reinvent-2016-using-mxnet-for-recommendation-modeling-at-scale-mac306 

-----

https://www.inside.com.tw/2017/01/24/amazon-alexa-deep-learning

http://www.leiphone.com/news/201701/rc8ytcm8hZjWpaS9.html

-----

Estimating speaker-specific affine transforms for neural network based speech recognition systems

SVSSR Krishna, B Hoffmeister, N Strom - US Patent 9,378,735, 2016 - Google Patents
Features are disclosed for estimating affine transforms in Log Filter-Bank Energy Space
(“LFBE” space) in order to adapt artificial neural network-based acoustic models to a new
speaker or environment. Neural network-based acoustic models may be trained using

Speech recognizer with multi-directional decoding

MME Bisani, N Strom, B Hoffmeister… - US Patent …, 2016 - Google Patents
In an automatic speech recognition (ASR) processing system, ASR processing may be
configured to process speech based on multiple channels of audio received from a
beamformer. The ASR processing system may include a microphone array and the

Retrieval and management of spoken language understanding personalization data

MMR Jampani, A Rajasekaram, N Strom… - US Patent …, 2016 - Google Patents
Features are disclosed for maintaining data that can be used to personalize spoken
language processing, such as automatic speech recognition (“ASR”), natural language
understanding (“NLU”), natural language processing (“NLP”), etc. The data may be obtained
相關文章 全部共 2 個版本 引用 儲存

【轉貼】【雅虎班長大點兵】離開 Yahoo 後的陳建銘,如何新創兩間公司在數位廣告中發光發熱?

【轉貼】【雅虎班長大點兵】離開 Yahoo 後的陳建銘,如何新創兩間公司在數位廣告中發光發熱?
2016/7/27 Chris 專訪

https://www.inside.com.tw/2016/07/27/yahoo-intowow-adgeek 

介紹一口氣創辦了點石行動科技(Intowow)與艾得基客(AdGeek)兩間公司,另一位「前」Yahoo 台灣區董事總經理陳建銘。

艾得基客,就是跟之前 Yahoo 的兩位同事(陳韋名與黃英哲)一起成立,提供客戶以大數據為基礎的 RTB 精準廣告行銷業務服務。而點石行動則是技術涵量相當高,以即時廣告影片為主的廣告平台。

那麼問題來了: 影音廣告怎麼才能叫做「好」?第一就是要快,第二就是要高畫質。能同時達到兩個矛盾的目標,就是現在影音廣告最大的挑戰。陳建銘說明他們在分散式架構與 SDK 下了非常多的基礎軟體功,盡量把運算都在 local 端完成,再想辦法把 SDK 做的又小適應性又高,讓影音廣告可以相當順暢的融入每個 APP 使用場景 。

在創業初期時,他們就選擇影音量相當大的台灣蘋果日報合作,為蘋果建立起極為迅速的影音廣告;而今年從海外紅回中國的獵豹為了拓展影音廣告業務也找上了 Intowow 進行串聯,Intowow 也因此踏上世界級舞台,目前可接受他們廣告的所有服務,每日活躍使用者數加起來甚至可達一億之譜。

關鍵字:點石行動、Intowow、艾得基客、AdGeek、影音廣告、蘋果日報、獵豹移動

Wednesday, February 08, 2017

【轉貼】Introduction to debugging neural networks

【轉貼】Introduction to debugging neural networks
April 7, 2016 by Russell Stewart

http://russellsstewart.com/blog/0

Sunday, February 05, 2017

AI從頭學(九):Back Propagation

AI從頭學(九):Back Propagation

2017/02/05

前言:

這一篇不是要教你Back Propagation (BP) Algorithm,只是解答我在自學Deep Learning (DL)過程中所產生的疑問。

-----

Summary:

我從網路上輾轉獲得神諭,要學AI(目前DL幾乎等同其代名詞)的方法,是用Python全手工實作LeNet [1]-[3],不靠Automatic Differentiation (AD) [4], [5] 的套件。先把CNN [3] 寫出來。其他如RNN,只是類似的概念加以延伸。

LeNet [1], [2]最主要的函式是CNN [3], CNN的核心函式是Back Propagation (BP) [6]-[20]。BP再呼叫AD [4], [5]。

一開始我查了不少論文 [1], [18]-[20],可惜論文是寫給專家看的,很難看懂。後來我查了一些電子書 [13]-[17],有好一點。最後還是靠網路上部落格的文章 [6]-[9],解決了疑惑。

-----

Q1: 微分
Q2: activation function
Q3: 輸入與輸出
Q4: 訓練與測試

-----

Q1: 微分

第一個問題是,你從網路上查到一堆DL的論文,為什麼裡面會有一堆偏微分的符號?

答案是:這雖然是一個演算法,但是當你把問題定義好之後,它其實是一個數學問題,目的是要求得神經網路的運算值與正確值差異之函數之極小值(參考圖一)。極小值最理想的情形是0,在往0邁進的途中,我們要一次又一次從目前的結果反推回去,藉由改變一點點weight (and bias),讓誤差變小。

往哪邊移,誤差會變小?導數為正,函數值漸增,導數為負,函數值漸減。所以當你求出導數,要移動一點點,就把原來的權重w減掉斜率(導數)乘以步長(參考圖二、三),函數(誤差)值才會變小。這個步長,是常數,通常取0.5 [8],高階的作法,也可以是變數 [1]。


Fig. 1. 最小值問題 [1]。


Fig. 2. Training weighting factors [1].


Fig. 3. Training weighting factors [5].

-----

Q2: activation function

論文裡面會有種種的activation functions,這些函數為何要長成這樣?

千言萬語,不如一圖在手。


Fig. 4. Activation function, p. 475, [13].

-----

Q3: 輸入與輸出

BP是有輸入跟輸出的演算法。

輸入是什麼呢?若以影像辨識為例,不管是前半段訓練期或者後半段測試期,每次是一張圖片,每個神經元的輸入是一個像素(pixel) [6], [9]。

輸出是什麼呢?輸出是每一個label的相似度,是一個正數或0,可以把它規範在0與1之間 [9]。這是一個向量,可以用種種不同的norm來計算輸出值與正確值的誤差。非數學系的話,不講norm,講metric可能比較容易聽懂。或者就用最簡單的歐幾里得距離。

-----

Q4: 訓練與測試

第一步,選定訓練集合。
第二步,隨機指定w, b初值。
第三步,設定步長。

把 [8], [9] 都看懂之後,[15] 的演算法應該就看的懂了(參考圖五)。



Fig. 5. Back-propagation algorithm, p. 66 [15].

-----

結論:

BP是DL最基礎的部分。去年11月到今年1月農曆過年前這三個月,我利用下班時間斷斷續續K一點DL。幸虧遇到高人不吝傳授心法。我的感想是:自助者得天助。希望這篇文章能幫到其他對DL有興趣的同好。

-----

References

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

[2] LeNet CNN 實例 MNIST 手寫數字辨識  allenlu2007
https://allenlu2007.wordpress.com/2015/11/28/mnist-database-%E6%89%8B%E5%AF%AB%E6%95%B8%E5%AD%97%E8%BE%A8%E8%AD%98/

[3] 2002_Tutorial on Convolutions - Torch

[4] 2010_Introduction to Automatic Differentiation and MATLAB Object-Oriented Programming

[5] 2014_Automatic differentiation of algorithms for machine learning

[6] [Note]Neural Network的一些基本概念(1) – iphone3310
https://iphone3310.wordpress.com/2016/03/24/noteneural-network%E7%9A%84%E4%B8%80%E4%BA%9B%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5/

[7] [Note]Neural Network的一些基本概念(2):back propagation推導 – iphone3310
https://iphone3310.wordpress.com/2016/04/01/noteneural-network%E7%9A%84%E4%B8%80%E4%BA%9B%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B52%EF%BC%9Aback-propagation%E6%8E%A8%E5%B0%8E/

[8] 1984年產物 倒傳遞神經網路(BACKPROPAGATION NETWORK, BPN)
http://donaldknuth.blogspot.tw/2013/01/backpropagation-network-bpn.html

[9] Back Propagation Neural Network 倒傳遞類神經網路  學習堅持,堅持學習 - 點部落
https://dotblogs.com.tw/dragon229/2013/01/23/88750

[10] 反向傳播算法 - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/%E5%8F%8D%E5%90%91%E4%BC%A0%E6%92%AD%E7%AE%97%E6%B3%95

[11] 類神經網路 -- Backward Propagation 詳細推導過程 ? MARK CHANG'S BLOG
http://cpmarkchang.logdown.com/posts/277349-neural-network-backward-propagation

[12] Neural networks and deep learning
http://neuralnetworksanddeeplearning.com/index.html

[13] 2016_Practical Machine Learning - Chapter 11: Deep learning, pp. 460-511.

[14] 2015_Python Machine Learning - Chapter 12: Training Artificial Neural Networks for Image Recognition, pp. 341-385.

[15] 2015_Automatic speech recognition, a deep learning approach - Chapter 4: Deep Neural Networks, pp. 57-77.

[16] 2006_Pattern Recognition and Machine Learning - Chapter 5: Neural Networks, pp. 225-290.

[17] Chapter 7: The Backpropagation Algorithm
https://page.mi.fu-berlin.de/rojas/neural/chapter/K7.pdf

[18] 1989_Theory of the backpropagation neural network

[19] 1990_30 years of adaptive neural networks, perceptron, madaline, and backpropagation

[20] 1993_A direct adaptive method for faster backpropagation learning, The RPROP algorithm

日文從頭學(目錄)

FB社團:

日文從頭學

日文學習同好社 

日文從頭學(目錄)

日文從頭學(一):工具

日文從頭學(二):日本語聽讀文庫

日文從頭學(三):階梯日本語雜誌

日文從頭學(四):青空朗讀

日文從頭學(五):福娘童話集

日文從頭學(六):朗読たんぽぽ

日文從頭學(七):河野清人の思いつきボイス!

日文從頭學(八):躺著學英文

日文從頭學(九):圖表日文法

日文從頭學(一0):基礎日本語文法

日文從頭學(一一):体言と用言、一@ベネッセ新修

日文從頭學(一二):体言と用言、二@例解新

日文從頭學(一三):体言と用言、三@学研現代新 

日文從頭學(一四):体言と用言、四@三省堂

-----

日文小教室(目錄)

日文從頭學(一四):体言と用言、四@三省堂

日文從頭學(一四):体言と用言、四@三省堂

2017/02/03

たいげん【体言】〈名〉〔文法〕自立語(じりつご)で、活用(かつよう)がなく、主語(しゅご)になることのできることば。 ようげん

【用言】〈名〉〔文法〕動詞(どうし)‧形容詞(けいようし)‧形容動詞(けいようどうし)をまとめて呼(よ)ぶ呼(よ)び名(な)。活用(かつよう)があり、それだけで述語(じゅつご)になることができる。

-----

三省堂国語辞典 単行本 – 2007/12
見坊 豪紀 (編集), 金田一 春彦 (編集), 柴田 武 (編集), 金田一 京助 (編集), 市川 孝 (編集)

https://www.amazon.co.jp/%E4%B8%89%E7%9C%81%E5%A0%82%E5%9B%BD%E8%AA%9E%E8%BE%9E%E5%85%B8-%E8%A6%8B%E5%9D%8A-%E8%B1%AA%E7%B4%80/dp/4385139253/ref=sr_1_7?s=books&ie=UTF8&qid=1486273942&sr=1-7

三省堂国語辞典 第七版 単行本 – 2013/12/11
見坊 豪紀 (編集), 市川 孝 (編集), 飛田 良文 (編集), 山崎 誠 (編集), 飯間 浩明 (編集)

https://www.amazon.co.jp/%E4%B8%89%E7%9C%81%E5%A0%82%E5%9B%BD%E8%AA%9E%E8%BE%9E%E5%85%B8-%E7%AC%AC%E4%B8%83%E7%89%88-%E8%A6%8B%E5%9D%8A-%E8%B1%AA%E7%B4%80/dp/4385139261/ref=sr_1_1?s=books&ie=UTF8&qid=1486273942&sr=1-1

-----


《三省堂国語辞典》很老牌,恕我不多做介紹。我將它列為中級的第一本。因為它的解釋比較中規中矩,不像新明解富有個人色彩。它的特徵是size較小。前一陣子我到淳久堂逛,發現一般小型日文辭典都縮小了。而三國也縮的更小。不曉得這個印象是否有誤。由於size小,附錄也很精簡,沒有值得拍照的地方。方便攜帶,應該是size小的目的。電子字典不會更小嗎?