关于通过神经网络进行回归预测的知识总结整理

Posted lyteins

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于通过神经网络进行回归预测的知识总结整理相关的知识,希望对你有一定的参考价值。

  • http://blog.sina.com.cn/s/blog_6408cdc70102wjti.html

NN 分类器有两个激活功能,一个用于隐藏节点,一个用于输出节点。分类器的输出节点激活函数通常是 softmax 函数,这是因为 softmax 生成的值总和为 1.0。分类器的隐藏节点激活函数通常是 S 型逻辑函数或双曲正切函数(缩写为 tanh)。但在 NN 回归中,有隐藏节点激活函数,却没有输出节点激活函数。演示 NN 将 tanh 函数用做隐藏节点激活函数。

NN 的输出由它的输入值和一组被称为权重和偏差的常数确定。因为偏差实际上只是特殊类型的权重,所以术语“权重”有时用来泛指两者。一个包含 i 个输入节点、j 个隐藏节点和 k 个输出节点的神经网络总共有 (i * j) j (j * k) k 个权重和偏差。

确定权重值和偏差值的过程被称为定型模型。这样做是为了尝试不同的权重和偏差值,由此确定在哪些地方 NN 的计算输出值与定型数据已知正确的输出值接近一致。

有一些可用于定型 NN 的不同算法。到目前为止,最常用的方法是使用反向传播算法。反向传播是一个反复进行的过程,在此过程中权重和偏差值缓慢地发生变化,以便 NN 通常可以计算出更准确的输出值。

反向传播使用两个必需的参数(最大迭代次数和学习速率)和一个可选参数(动量率)。maxEpochs 参数对算法迭代次数设置限制。learnRate 参数控制每次迭代中发生改变的权重和偏差值数量。动量参数可加快定型速度,也有助于防止反向传播算法在求解不理想时卡住。该演示将 maxEpochs 的值设置为 10,000,将 learnRate 的值设置为 0.005,将动量的值设置为 0.001。这些值将通过试验和错误来确定。

当对 NN 定型使用反向传播算法时,可以使用三种变体。在批处理反向传播中,首先检查所有定型项目,然后调整所有的权重和偏差值。在随机反向传播(也称为联机反向传播)中,检查完每个定型项目后,要调整所有的权重和偏差值。在小批量反向传播中,检查完定型项目的指定部分后,将对所有权重和偏差值进行调整。演示程序使用了最常见的变体,即随机反向传播。

演示程序显示每 1,000 次定型过程中出现的错误情况。请注意,误差值有些许波动。定型结束后,该演示显示定义了该 NN 模型的 37 个权重和偏差的值。NN 权重和偏差的值没有什么确切的解释,但务必要检查这些值,以核对是否有糟糕的结果,例如,某一个权重具有极大值而其他所有权重的值均接近为 0 的情况。

演示程序以评估 NN 模型作为结束。x = pi、pi / 2 和 3 * pi / 2 时 NN 的 sin(x) 预测值与正确值之间的差值在 0.02 以内。sin(6 * pi) 的预测值与正确值的差距甚远。但是,这只是一个预期的结果,因为 NN 仅定型为针对 x 在 0 到2 * pi 之间进行取值时预测 sin(x) 的值。

作为处理神经网络时的一般规则,训练数据越多,效果会越好。若是针对 x 在 0 到 2 * pi 之间取值建模正弦函数,我需要至少 80 个数据项才能得到比较好的结果。对随机数对象选择种子值 1 是任意选取的。定型数据存储在数组型阵列矩阵中。在现实情况下,您可能会从一个文本文件中读取定型数据。

这里只有一个输入节点,因为目标正弦函数只接受单一值。对于大多数神经网络回归问题,您可以有多个输入节点,每一个节点对应与预测无关的变量。在大多数神经网络回归问题中,只有一个输出节点,但它可以预测两个或多个数值。

NN 需要一个随机对象来初始化权重值,并参与到定型项目的处理顺序中。演示的 NeuralNetwork 构造函数接受内部随机对象的种子值。值使用 0 是任意的。

NN 对定型参数值极为敏感。即使一个非常小的变化也可以产生截然不同的结果。

演示程序通过对三个标准值预测 sin(x) 来评估生成 NN 模型的质量。

请注意,演示 NN 将其输出存储在输出节点的数组中,即使只是这个例子中的一个单个输出值。返回一个数组使您可以在不改变源代码的情况下预测多个值。

在众多 NN 分类器方案中,您可以调用一个计算分类准确度的方法,也就是,由正确预测的个数除以预测的总个数。这种方法是可行的,因为分类输出值要么是正确的,要么就是不正确的。但处理 NN 回归时,没有定义准确度的标准方法。如果要计算准确度,将视具体问题而定。例如,要预测 sin(x),您可以任意地将正确的预测定义为与正确值误差在 0.01 之内的预测。

  • https://blog.csdn.net/u012780602/article/details/43837713

起初我认为既然分类实现了,那么回归也会很简单的实现,但我发现网上对于神经网络回归的资料少之又少,很多人只是简单的实现了bp,并没有交代清楚如何才能实现神经网络回归。使我在此处停止不前很长时间。最后的结果是哭笑不得的,其实神经网络实现回归和分类几乎差不多,只要在最后改变一下transfer function就可以,但这里我们要注意,transfer function的选择很有讲究,我们知道,在实现神经网络分类时我们用的是logistic function.这样我们的输出值会在0,1之间。显然这样是无法实现回归问题的,当我们把transfer function 换成y = x这样的线性函数时,虽然可以避免以上问题,但咨询网上大神,以及台湾大学 林老师机器学习技法的课程中提到:如果我们把transfer function全部改成y = x这样 的线性函数,那么我们整个神经网络也是带有线性特性的。那么神经网络在非线性回归中的巨大魅力也就不会发挥出来,其本质我现在还不是很清楚,希望各位网友能给与解答。这样,我们只需要就最后一层的transfer function就可以了。关于是否神经网络在transfer function在都取y = x时是否和线性回归一样,我希望能在以后做出总结。

  • https://www.cnblogs.com/laiqun/p/6287906.html

 

以上是关于关于通过神经网络进行回归预测的知识总结整理的主要内容,如果未能解决你的问题,请参考以下文章

机器学习——05线性回归算法

Python机器学习及实践 知识总结

关于JAVA 反射 基础知识/编码经验的一些总结

关于JAVA 异常 基础知识/编码经验的一些总结

关于JAVA 反射 基础知识/编码经验的一些总结

关于JAVA 异常 基础知识/编码经验的一些总结