BP 神经网络简介

本文概述了BP神经网络的基本原理,包括其作为ANN的一种,如何通过矩阵运算实现非线性逼近,以及使用激活函数如Sigmoid和log-sigmoid的重要性。通过一个拟合正弦函数的例子,展示了BP神经网络的学习过程和误差曲线。

BP 神经网络

申明:本文章只求把 BP 神经网络的大概原理和应用做粗略的概括,有助于形成一个基本直观的概念,详细的公式推导论证、激活函数介绍、梯度下降之类的方法请参考其他资料,文章中例子 copy 自第一个参考链接的实验中,详细内容请自行查阅。

基本概念

人工神经网络 ANN(Artificial Neural Network)

BP 神经网络(Back Propagation):(误差)反向传播神经网络

应用:函数逼近、模式识别、分类、数据压缩

本质:坐标变换,矩阵乘法

激活函数(Activation Function):

  • 定义:输入和输出之间的转换函数。
  • 作用:如果不使用激活函数,则只输出就只是输入的线性组合,多层神经网络也就只相当于单层神经网络。而使用非线性函数可以逼近任意复杂函数
  • 特征:非线性函数
  • 例子:Sigmoid, tanh, ReLU …
基本原理和过程

BP神经网络原理

一个例子
% BP 神经网络拟合函数
% 初始化
l = 0.2; % 学习步长
n = 30; % 样本数量
cell = 6; % 神经元个数
times = 3000; % 学习次数
x = (linspace(0, 2 * pi, n));
t = sin(x);
w1 = rand(cell, 1) * 0.05;
w2 = rand(1, cell) * 0.05;
b1 = rand(cell, 1) * 0.05;
b2 = rand * 0.05;
counts = 1;
e = zeros(1, times);

% 学习过程
for i  = 1: times
	ei = 0;
	for a = 1: n
		net1 = w1 * x(a) - b1;
		out = logsig(net1); % log-sigmoid 激活函数
		net2 = w2 * out - b2;
		y(a) = net2;
		det2 = (t(a) - y(a)); % 计算误差
		det1 = ((det2 * (w2)').* out).*(1 - out);
		w1 = w1 + det1 * x(a) * l; % 更新权重
		w2 = w2 + (det2 * out)' * l;
		b1 = -det1 * l + b1; % 更新偏置
		b2 = -det2 * l + b2;
		ei = ei + det2 ^2 / 2; % 累积误差
		e(i) = ei;
	end
	if ei < 0.008
		break;
	end
	counts = counts + 1;
end

% 逼近曲线
for a = 1:n
	net1 = w1 * x(a) - b1;
	out = logsig(net1);
	net2 = w2 * out  - b2;
	y(a) = net2;
end

% 画图
subplot(2, 1, 1)
plot(x, t, 'b-', x, y, 'k*-');
legend('real', 'pred');
grid on;
title('BP method, y = sin(x)');
xlabel('x');
ylabel('y = sin(x)');
if(counts < times)
	count = 1: counts;
	sum = counts;
else
	count = 1 : times;
	sum = times;
end

subplot(2, 1, 2);
plot(count, e(1: sum));
grid on;
title('BP算法学习曲线');
xlabel('迭代次数');
ylabel('均方误差');

image-20211107184206380

参考资料:

(百度文库)BP神经网络拟合函数
深度学习领域最常用的10个激活函数,一文详解数学原理及优缺点
常用激活函数(激励函数)理解与总结
深入理解深度学习中的激活函数
人工神经网络基本原理
通俗理解神经网络BP传播算法

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值