神经网络中的反向传播算法

「概率论与数理统计」中的随机变量及其分布中,会使用正态分布,二值分布等等去套这些变量数据,最后去估计确定这些分布中的参数。

在机器学习中,线性回归和逻辑回归也都是先选择一个数据模型,然后使用一定的方法去确定模型的参数。最基本的方法就是代价函数。代价函数评价假设函数 h 和真实函数 f (这个函数未知)之间的差异,当两者相差不大时,即可以用假设函数 h 代替真实函数 f。

梯度下降算法只是代价函数的优化算法,加速了参数的求解过程。

在神经网络中,同样使用梯度下将算法来求解参数。同样,梯度下降也有优化,这就是反向传播算法。反向传播算法加速了梯度下降中的偏导求解。

BP 网络函数逼近实例

% 1.首先定义正弦函数,采样率为20Hz,频率为1Hz
k = 1; % 设定正弦信号频率
p = [0:0.05:4];
t = cos(k*pi*p) + 3*sin(pi*p);
plot(p, t, '-'), xlabel('时间'); ylabel('输入信号');
% 2.生成BP网络。用newff函数生成前向型BP网络,设定隐层中神经元数目为10
% 分别选择隐层的传递函数为 tansig,输出层的传递函数为 purelin,
% 学习算法为trainlm。
net = newff(minmax(p),[10,10,1],{'tansig','tansig','purelin'},'trainlm');
% 3.对生成的网络进行仿真并做图显示。
y1 = sim(net,p); plot(p, t, '-', p, y1, '--')
% 4.训练。对网络进行训练,设定训练误差目标为 1e-5,最大迭代次数为300,
% 学习速率为0.05。
net.trainParam.lr=0.05;
net.trainParam.epochs=1000;
net.trainParam.goal=1e-5;
[net,tr]=train(net,p,t);
%5.再次对生成的网络进行仿真并做图显示。
y2 = sim(net,p);
plot(p, t, '-', p, y2, '*')

newff 函数用来生成一个feed-forward backpropagation network

sim 命令运行 simulink 建立的模型,相当于对输入 p 作用模型 net,输出 y2

拟合图像

可以看到神经网络拟合模拟的函数和原函数的输出结果基本相同。

模型

参考

http://ufldl.stanford.edu/wiki/index.php/%E5%8F%8D%E5%90%91%E4%BC%A0%E5%AF%BC%E7%AE%97%E6%B3%95

https://www.zhihu.com/question/24827633

http://hahack.com/reading/ann2/

反向求导算法原理

转载于:https://my.oschina.net/lvyi/blog/620845

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值