[翻譯]用神經網絡做回歸(Using Neural Networks With Regression)


本文英文原文出自這里, 這個博客里面的內容是Java開源, 分布式深度學習項目deeplearning4j的介紹學習文檔.  

簡介:

一般來說, 神經網絡常被用來做無監督學習, 分類, 以及回歸. 也就是說, 神經網絡可以幫助對未標記數據進行分組, 對數據進行分類, 或者在有監督訓練之后輸出連續的值. 典型的神經網絡在分類方面的應用, 會在網絡的最后一層使用邏輯回歸分類器(之類)的將連續(continue)的值轉換成為離散值如: 0/1, 比如, 給定一個人的身高, 體重, 以及年齡, 你可以給出它有心臟病或者沒有心臟病的判斷. 而真正的回歸是將一組連續的輸入映射到另一組連續的輸出.

例如, 給定一座房子的房齡, 面積, 以及到一所好學校的距離, 你將對這座房子的價格進行預測: 這就是連續型輸入映射到連續性輸出. 這里面沒有分類任務中的0/1, 而僅僅是將獨立變量 x 映射到連續的輸出y.

NN-Regression結構:

在上圖中, x表示輸入, 特征在網絡前面的層進行前向傳播, 很多x's與最后隱層的每個神經元相連接, 每個x將會乘上一個相應的權重w這些乘積之和再加上一個偏置, 被送到一個激活函數ReLU(=max(x,0)), 這個一個被廣泛應用的激活函數, 它不會像sigmoid激活函數那樣出現飽和. 對於每個隱層神經元,  ReLUctant輸入一個激活值a, 在網絡的輸出節點, 計算這些激活值之和作為最后的輸出. 也就是說, 利用神經網絡來做回歸將有一個輸出節點, 而且這個節點僅是對前面節點的激活值進行相加. 得到的 ŷ就是由你所有的x映射得到的獨立變量.

訓練過程:

為了進行網絡的反向傳播以及網絡的訓練, 你可以簡單地使用網絡的輸出ŷ與真實值y進行比較, 通過調整權重和偏置使得網絡的error達到最小. 可以使用Root-means-squared-error(RMSE)作為loss函數.

可以使用Deeplearning4j來建立多層神經網絡, 在網絡的最后增加一個輸出層, 具體的代碼參考如下:

//Create output layer
.layer()
.nIn($NumberOfInputFeatures)
.nOut(1)
.activationFunction('identity')
.lossFunction(LossFunctions.LossFunction.RMSE)

 其中, nOut輸出層的神經元數目, nIn為特征向量的維度, 在上圖中, 這應該設置為4, activationFunction應該被設置為'identity'.

我的問題:

  • 如果要輸出多個值, 怎么做? 訓練多個模型?
  • 還有沒有其他的方式做回歸?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM