03_反向传播算法(BP算法)· 原理+演算

反向传播算法(Backpropagation Algorithm,BP算法)是深度学习的重要思想基础

 

目录

一、BP算法的推导

1、前向传播的计算

第一层隐藏层的计算

第二层隐藏层的计算

输出层计算

 

2、反向传播计算

 

计算偏导数

二、实际数据代入推导BP算法

1、前向传播计算

第一层隐藏层的计算

第二层隐藏层的计算

输出层计算

2、误差反向传播

输出层误差计算

第二层隐藏层误差计算

第一层隐藏层误差计算

3、更新参数


其实,大概意思就是在输入和输出之间构造神经网络(像人的大脑神经网络一样),当然这个神经网络里面会有很多的神经节点和节点之间相连的边(就想神经元由前到后相连)。然后,这个神经网络作为一个计算的网络,里面会有一些参数,要是参数选的好的话,那么这个模型就可以拿去用了,比如说,看到一张狗的照片,就知道这个是狗了。而反向传播算法就是从结果出发一步步去约束其中的参数,然后使得参数达到最优的状态。

看一看神经元,这里的:

a1、a2、a3指的是输入

w1、w2、w3指的是权重(对应输入的)

b 表示偏置(这里没有呢)

f 表示激活函数(你可以想成是平时数学课上的函数,一般都是比较简单的函数,表现出输入和输出的关系)

z 指的是输出

 

一、BP算法的推导

这个是一个简单的三层神经网络结构(两个隐藏层,一个输出层)

比如我们来解决一个二分类问题,给一个样本输入,通过前向运算得到输出

输出值域为(0,1),输出的结果越靠近0,就代表样本是0类的可能性越大,反之,1类的可能性越大

 

1、前向传播的计算

基本上都是矩阵运算

  • 第一层隐藏层的计算

  • 第二层隐藏层的计算

  • 输出层计算

 

2、反向传播计算

假设我们使用随机梯度下降的方式来训练神经网络的参数:

损失函数(loss function)或代价函数(cost function),通常作为学习准则与优化问题相联系,即通过最小化损失函数求解和评估模

型。定义为L\left ( y,\widehat{y} \right ),其中 y 定义为该样本的真实类标,而 \widehat{y} 是模型的输出。

这里有一些损失函数,我们一般用的是第二个平方损失函数:

当损失函数的值为0时,那么表示模型参数训练的炒鸡好的!因为没有损失了。

使用梯度下降法进行参数的学习,必须计算出损失函数关于神经网络中各层参数(权重w和偏置b)的偏导数。

 

  • 计算偏导数

BP算法基本就是这些

 

二、实际数据代入推导BP算法

我们对上述的神经网络代值进行计算验证,所有的参数的初始值如下:

注意:这里面的所有的权值w和所有的偏置b的具体的值都是初始值,当然也可以换成其他数字

 

1、前向传播计算

  • 第一层隐藏层的计算

  • 第二层隐藏层的计算

  • 输出层计算

 

2、误差反向传播

  • 输出层误差计算

  • 第二层隐藏层误差计算

  • 第一层隐藏层误差计算

3、更新参数

我们已经计算出每一层的误差了,现在我们要利用每一层的误差和梯度来更新每一层的参数

权重w和偏置b的更新公式如下:

一般来说,权重w的更新会在前面加上一个正则化项来避免过拟合,这里为了简化运算,我们省去正则化项。

正则化:必须有一种自动的东西来告诉我们哪种程度将最适合所提供的数据,同时告诉我们需要把那些特征的影响降低至最低,以获得最好的预测。

\alpha是学习率:为了能够使得梯度下降法有较好的性能,我们需要把学习率的值设定在合适的范围内。学习率决定了参数移动到最优值的速度快慢。如果学习率过大,很可能会越过最优值;反而如果学习率过小,优化的效率可能过低,长时间算法无法收敛。所以学习率对于算法性能的表现至关重要。

在每次迭代中去调整学习率的值是另一种很好的学习率自适应方法。此类方法的基本思路是当你离最优值越远,你需要朝最优值移动的就越多,即学习率就应该越大;反之亦反。我们这里设置为0.1。

每一层的参数更新的计算方法都是一样的,这里只给出第一层隐藏层的参数更新:

 

 

哈哈哈哈,具体还有很多东西,大家可以看看mooc复旦大学的商务数据教程!

对原文进行了修正和添加!

 

 

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值