2015年1月11日 星期日

[R] 類神經網絡(neural network)套件實作


        最近很認真的K了Coursera上的machine learning課程,才稍微了解類神經網路(neural network)的運作原理(但是要自己implement演算法什麼的還是離我太遙遠).不過我的精神就是,雖然沒吃過豬肉,好歹也要去看看豬走路吧.而且類神經網路是近年很流行的deep learning的基礎,瞭解一下不吃虧的.
        類神經網絡(http://zh.wikipedia.org/wiki/人工神经网络)的原理是基於模仿人類神經元的連結方式,演算法則是類似logistic regression以及gradient descent(http://bryannotes.blogspot.tw/2014/11/algorithm-stochastic-gradient.html)的方式,利用machine learning的方式找到最佳係數.

        類神經網路分為輸入層(也就是自變項),隱藏層,以及輸出層(應變項)(請見本文大圖),類神經網絡透過節點的組合以及變項之間的權重來找到自變項與應變項之間的關係,進而達到預測的效果.雖然還無法自己寫出演算法,但是總得要會使用別人開發好的XD,以下是範例code:




4 則留言:

  1. 感謝分享~!
    有個問題想要請問一下
    類神經網路要怎麼樣才能去估計他的結果是否overfitting呢?

    回覆刪除
    回覆
    1. 從數學上的作法就是在loss function中加入penalty, 也就是regularization參數去控制
      http://www.mathworks.com/help/nnet/ug/improve-neural-network-generalization-and-avoid-overfitting.html

      但是實務上可能還是需要配合trail and error的方式去看怎樣的模型效果比較好~

      刪除
  2. 請問Spark MLlib 有類神經網路相關的嗎?我目前沒看到
    http://spark.apache.org/docs/latest/mllib-guide.html

    回覆刪除
    回覆
    1. 還沒有放上spark的套件,但是已經有人在做了
      https://github.com/amplab/SparkNet

      刪除