目录
问题描述
数据拟合的方法有很多种,如最小二乘法、遗传算法、神经网络等,它们各有各的优缺点。函数的拟合问题本质上是一个最优化问题。
本文使用神经网络结合梯度下降法,拟合目标函数 f(x)=a+bx2+cx3 f ( x ) = a + b x 2 + c x 3 中的三个未知参数 a、b、c a 、 b 、 c ,以使得拟合函数和目标函数的均方误差最小。
神经网络拟合
样本数据生成
预设 a=3,b=2,c=1 a = 3 , b = 2 , c = 1 ;
通过在目标函数中加入白噪声,生成待拟合的样本:
import numpy as np
from pylab import *
x = np.linspace(0,2,500)[:,np.newaxis]
target = 3 + 2*x**2 + x**3
# 给目标函数加入高斯白噪声作为学习样本
sample = target + np.random.normal(0,1,x.shape)
plot(x,sample,'.')
show()
构建神经网络模型
构建一个没有隐藏层的神经网络模型,包含三个输入神经元,和一个输出神经元:
该神经网络模型的输出可以表示为:
prediction(i)=a+bx2i+cx3i=[1x<