非线性回归
提出问题一
我们在前面学习了线性回归的解决方案,但是在工程实践中,我们最常遇到不是线性问题,而是非线性问题,例如图9-1所示的正弦曲线,表9-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的所示的样本值,如何使用神经网络方法来拟合这条曲线?
表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之间不是线性关系。常用的传统的处理方法有线性迭代法、分段回归法、迭代最小二乘法等。在神经网络中,解决这类问题的思路非常简单,就是使用带有一个隐层的两层神经网络。