code

2017年10月4日 星期三

Neural Networks 1 - 什麼是neural networks?

人腦的運作

NN是模仿人腦運作的inspired出來的演算法,所以NN適合用在人腦擅長的tasks,例如辨識物體。

這邊skip 腦內神經元運作,太深奧了 XD


從最簡單的Neurons開始:Linear Neurons


這就是perceptron。
一個neuron的output y取決於所有連接神經元的input value xi,乘上weights,然後加上一個bias term。這在caltech的第一堂課有清楚講到

這邊說linear的意思是,weighted sum y^沒經過再次的mapping,相當於經過identity function mapping,所以y和y^是線性關係:



 Binary threshold neurons

就是把linear neurons output丟進去cutoff functions (+1 or -1),這動機來自boolean algebra:


以下兩種表示法都可以:



Rectified Linear Neurons

這是把cutoff functions改成non-linear functions,例如以下:



這邊nonlinear定義仍是y和y^之間是否為線性關係:




Sigmoid Neurons

另一個常見nonlinear neuron example就是sigmoid neurons,也就是logistic regression。




Stochastic binary neurons

這其實就是sigmoid neurons,但是把sigmoid function output值視為probability,因為sigmoid function輸出值介於0~1


一個簡單的2-layer NN來辨識0~9數字

bottom input layer: 一個vector,裡面含有所有的input image intensity
top output layer: 就是數字分類,總共有10個neurons


每個neuron的weight vector當然跟input image vector一樣大小,所以視覺化的話會是一個灰階影像。

每個有"ink"的pixel (active pixel)可以對他認為的數字投票,learning演算法之後會講:



learning過程中,可以看到weight vector visualization變得像是每個數字的template (但不盡然):






這只是簡單的示範NN可能運作,不是一個好的數字辨識演算法。

沒有留言:

張貼留言