標籤:利用 mil 沒有 協助 結構 code 標記 java with
本文英文原文出自這裡, 這個部落格裡面的內容是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‘.
[翻譯]用神經網路做迴歸(Using Neural Networks With Regression)