BP神经网络介绍

本文详细介绍了BP神经网络的结构,包括输入层、隐藏层和输出层。重点阐述了正向传播的过程,涉及权重w和偏置b的处理,以及常用的激活函数。同时讲解了反向传播用于计算梯度并更新权重,以及权值初始化的方法。讨论了神经元数量和隐藏层设置的经验策略,以及训练集、验证集和测试集的作用。最后提到了采用LM算法进行训练的优化方法。
摘要由CSDN通过智能技术生成

BP神经网络介绍:

BP神经网络的结构为1个输入层,多个隐藏层,一个输出层。

BP神经网络分为正向传播和反向传播。

以下介绍一次迭代过程

正向传播过程:

每一层以前一层的输出结果的线性组合为输入,即赋予每个节点输出的权值w,以及加上一个偏置量b,进行线性组合。

举个例子:假如第二层有四个节点,第三层有三个节点,那么W将是一个3*4的矩阵,矩阵第i行的数值代表关于第三层的第i个节点的权重,B是一个3*1的矩阵,矩阵第i行的数值代表关于第三层第i个节点的偏置量,X是第二层的输出,为4*1的列向量,。W*X+B得到3*1的向量,作为第三层的三个节点的输入。(注意,此1代表是一个样本,如果是X是4*2的矩阵,则代表有两个样本在进行训练,那么得到的W*X为3*2的矩阵,W*X+B对于python的处理方式,是将列向量B加到矩阵的每一项中,因此最终得到3*2的矩阵,作为第三层的输入,每一列是一个样本处理结果。)

将这些输入、权重、偏置当做矩阵、向量来处理,可以很方便的调用python中的np包,进行矩阵的运算,而不必使用for循环进行节点之间重复操作。

每一层使用激活函数对输入进行处理,转化为输出,可以采用RELU函数,Sigmod函数,tanh函数。

RELU函数:y=max(0,x)

Sigmod函数:y=1/(1+e^{-x}) ,y对x的求导结果为: {y}' = y*(1-y)

tanh函数: y = (e^{x}-e^{-x}) / (e^{x} + e^{-x}) y对x的求导结果为:{y}' = 1-y^{^{2}}

求导结果在正向传播是用不到的,这里只是提前介绍一下。

相邻隐含层按照上述正向传播过程传播,直到传递到输出层。

反向传播:

输出层按照损失函数的公式进行计算,计算公式是:E = \frac{1}{2N}*(\widehat{y}-y)^{2}  

此公式中的\widehat{y}即输出层的输出结果,\widehat{y}是前面一层隐含层的权值W、偏置B的函数,

\widehat{y} = sigmod(Z)     ,  Z=W*X+B,因此可以使用链式法则对W和B求偏导,求的此处的dW和dB值。

再用W-=\alpha *dw, B-=\alpha *dB,对W和B进行更新,\alpha是学习率经常位于0-1之间。

之前的每一层的W和B都要进行如此的求导和更新,直到第一层。

如此一次迭代过程结束。

问题1:权值w、偏差b的初始化如何设置?

采用随机初始化,但随机的时候要乘以系数0.01,尽量保证w和b不要太大,否则在进行线性计算时得到的Z值较大,从而在激活函数y=sigmod(z)中,由于z较大使得函数处于较为平缓的位置,使用梯度下降进行迭代的次数会提高很多。

问题2:什么是梯度下降?因为想让损失函数的值取得最小,损失函数可以看成自变量为各个权值和偏置的函数,理想情况是只要让损失函数对这些自变量求偏导,偏导数的值为0,一般情况下在此时的w,b的情况下损失函数的值就是最小的,但是直接求偏导数等于0解方程很麻烦。因此采用梯度下降,本质还是让自变量不断接近偏导数为0的点。根据公式W-=\alpha *dw 当dw大于0时,W减小接近于0;当dw小于0时,W增大接近于0。

 问题3:神经元数量和隐含层个数如何确定?  所有隐含层的神经元个数的数量设置为相同就可以,一般先根据经验公式设置隐藏层:隐藏层设置为两层就够了;再根据经验公式设置神经元个数:大小在输入神经元个数和输出神经元个数之间,或者设置为输入层大小的三分之二加上输出层大小的三分之二。

根据经验公式可能会出现过拟合或者拟合不足的情况,再对此进行修改即可。

问题4:为什么分为训练集、验证集、测试集?

在进行BP神经网络的时候,要将数据集分为训练集、验证集、测试集。训练集的作用是进行拟合优化和参数优化,不断调整参数。验证集的作用也是调整参数,但是是为了避免训练集得到的模型出现过拟合或者欠拟合的情况(过拟合是指在训练集表现好,验证集表现不好,可以考虑减小特征数量;欠拟合是在训练集表现不好,验证集表现不好,可以考虑选用更复杂的模型),因此从训练集中分出一部分进行数据,还是对训练集得到的模型进行调整。测试集是进行模型性能的评价。

当验证集泛化程度停止改善时,模型训练也就终止了。

问题5:训练BP神经网络的算法? 我采用的LM算法。

其实BP神经网络正向反向传播过程中有很多可以优化的地方, 列文伯格-马夸尔特(LM算法)为BP神经网络的一种训练方法,过程就是梯度下降的优化过程,只不过在其中引入了一些优化措施。LM算法收敛性比较好。

一些术语:

均方误差MSE:即为损失函数。

validation checks: validation checks = 6表示若经过6次迭代,验证误差都不再明显减小,就没有必要训练下去了。

gradient的值为梯度的值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值