码迷,mamicode.com
首页 > Web开发 > 详细

[翻译]用神经网络做回归(Using Neural Networks With Regression)

时间:2016-10-24 14:15:05      阅读:364      评论:0      收藏:0      [点我收藏+]

标签:利用   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)

标签:利用   mil   没有   帮助   结构   code   标记   java   with   

原文地址:http://www.cnblogs.com/zhao441354231/p/5992447.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!