非线性回归

提出问题一

我们在前面学习了线性回归的解决方案,但是在工程实践中,我们最常遇到不是线性问题,而是非线性问题,例如图9-1所示的正弦曲线,表9-1给出了部分样本点示例。

单入单出的双层神经网络 - 图1

其样本数据如表9-1所示。

表9-1 成正弦曲线分布的样本值

样本 x y
1 0.1199 0.6108
2 0.0535 0.3832
3 0.6978 0.9496

问题:如何使用神经网络拟合一条有很强规律的曲线,比如正弦曲线?

提出问题二

前面的正弦函数,看上去是非常有规律的,也许单层神经网络很容易就做到了。如果是更复杂的曲线,单层神经网络还能轻易做到吗?比如图9-2所示的样本点和表9-2的所示的样本值,如何使用神经网络方法来拟合这条曲线?

单入单出的双层神经网络 - 图2

表9-2 复杂曲线样本数据

样本 x y
1 0.606 -0.113
2 0.129 -0.269
3 0.582 0.027
1000 0.199 -0.281

原则上说,如果你有足够的耐心,愿意花很高的时间成本和计算资源,总可以用多项式回归的方式来解决这个问题,但是,在本章,我们将会学习另外一个定理:前馈神经网络的通用近似定理。

上面这条“蛇形”曲线,实际上是由下面这个公式添加噪音后生成的:

$$
y=0.4x^2 + 0.3xsin(15x) + 0.01cos(50x)-0.3
$$

我们特意把数据限制在[0,1]之间,避免做归一化的麻烦。要是觉得这个公式还不够复杂,大家可以用更复杂的公式去自己做试验。

以上问题可以叫做非线性回归,即自变量X和因变量Y之间不是线性关系。常用的传统的处理方法有线性迭代法、分段回归法、迭代最小二乘法等。在神经网络中,解决这类问题的思路非常简单,就是使用带有一个隐层的两层神经网络。