BP网络由大量简单处理单元广泛互聯而成是一种对非线性函数进行权值训练的多层映射网络。具有优良的非线性映射能力理论上它能够以任意精度逼近任意非线性函数。本文采用BP神经网络解决下列函数拟合问题
函数逼近:设计一个神经网络拟合下列的函数:
为建立函数拟合的BP神经網络模型,一般要考虑以下几步:
样本数据的产生这里用来两种方法,
通常需要将样本数据归一化由于这里的数据变化范围不大,所以暂不考虑对數据的归一化
一个典型的3层BP神经网络结果如图1所示,包括输入层、隐藏层和输出层其中隐藏层的状态影响输入输出之间的关系,及通過改变隐藏层的系数就可以改变多层神经网络的性能。
BP神经网络的学习过程由正向传播和反向传播组成
通过正向传播算法,即通过矩陣乘法计算出输出值并将真实值和输出值对比得到两者之间的差距。
通过反向传播算法计算每个损失函数对模型中每个参数的梯度,通过梯度下降算法来更新每一个参数
梯度下降法即比如我们目前处在一个大山的某处,不知道如何下山于是决定走一步算一步,也就昰每走到一个位置求当前位置的梯度,沿着梯度的负方向即当前最陡峭的位置向下走一步,然后继续重复上步;一直走到我们觉得我們走到了山脚当然,这样我们可能走不到山脚而是走到某一个局部的山峰低处。
当然如果损失函数是凸函数梯度下降 得到的解一定昰全局最优解。
BP 算法的实质是求取误差函数最小值问题通过多个样本的反复训练,一般采用梯度下降法按误差函数的负梯度方向修改系数。
采用第一种采样方法产生训练数据和测试数据,batch_size大小设置为32 训练轮数为3000轮学习率为0.001,将训练数据送入bp网络中进行训练
之后将測试数据送入已训练好参数的模型中,进行预测得到上述两个函数的结果。
模型拟合边界数据效果很不好用第┅种数据取样方法,由于对边界数据取样少所以使得模型对边界数据欠拟合;
采取措施:采用交叉验证的办法,将数据集划分成K份然後K-1份为训练集,剩下的一份为测试集然后进行K次训练;这样充分利用了数据集进行训练。
(7)隐藏层层数及节点个数