code

2017年9月28日 星期四

Applied Machine Learning in Python 17 - Neural Networks

Multilayer perceptron

之前提過的linear regressor 其實就是weighted sum:


NN也是差不多的概念,不過在input和output中間多了一層hidden layer,就是某個mapping function (可以是nonlinear),稱為activation function,最後還是weighted sum output:



Activation functions

常見的有以下三種(其中一種就是構成了logistic regression):


sklearn default是用relu function,通常使用relu function / tanh就能達到好的效果。
在sklearn中使用multi-layer perceptron如下:


上面是1-hidden layer,如果要改變hidden layer數目的話,hidden_layer_sizes這個參數應該是要傳至少2-element array 。

solver參數就是設定learning algorithm。

hidden layer中的neuron units控制了model complexity:


1-unit case等同於logistic regression,產生了linear decision boundary,明顯是underfitting。

如果不是只有一個hidden layer,會構成龐大的NN組織,這也就是deep learning的deep名稱的由來:


兩個hidden layers有更好的score (就這個dataset來說):



L2 Regularization Alpha

降低model complexity,MLP也可以使用L2 regularization(懲罰大的sum of squares of weights):



feature normalization也會有顯著影響!


重要參數




結論

NN適合用在input feature相似度高的情況,例如都是一張影像的pixel,preprocessing很重要,training過程需要的data / 時間 / 計算量都相當大,但是結果(deep learning)是不錯的。




沒有留言:

張貼留言