DL之BP: BP神经网络的简介、基础知识(优化目标/梯度下降/链式法则)、反向传播算法原理的各种可视化案例解读之详细攻略
目录
DL之DNN:神经网络原理深度剖析—仅采用十张流程图带你轻松读懂利用BP反向传播算法训练多层神经网络的原理及其数学公式推导实现过程之详细攻略
(1)、信号正向传播:计算第1个隐藏层→计算第2个隐藏层→计算输出层
BP神经网络的简介
深度学习(Deep Learning, DL)或阶层学习(hierarchical learning)是机器学习的技术和研究领域之一,通过建立具有阶层结构的人工神经网络(Artifitial Neural Networks, ANNs),在计算系统中实现人工智能 。由于阶层ANN能够对输入信息进行逐层提取和筛选,因此深度学习具有表征学习(representation learning)能力 ,可以实现端到端的监督学习和非监督学习 。此外,深度学习也可参与构建强化学习(reinforcement learning)系统,形成深度强化学习 。
深度学习所使用的阶层ANN具有多种形态,其阶层的复杂度被通称为“深度” 。按构筑类型,深度学习的形式包括多层感知器、卷积神经网络、循环神经网络、深度置信网络和其它混合构筑 。深度学习使用数据对其构筑中的参数进行更新以达成训练目标,该过程被通称为“学习” 。学习的常见方法为梯度下降算法及其变体 ,一些统计学习理论被用于学习过程的优化 [9] 。
在应用方面,深度学习被用于对复杂结构和大样本的高维数据进行学习,按研究领域包括计算机视觉、自然语言处理、生物信息学、自动控制等,且在人像识别、机器翻译、自动驾驶等现实问题中取得了成功。
1、通过调整神经元的参数,使得网络对给定输入可产生期望输出
3、BP神经网络的前馈运算、反向传播
反向传播(Backpropagation)算法,深度学习模型采用梯度下降和误差反向传播进行模型参数更新。
前馈运算和反向传播:在训练网络过程中所使用的。如果经过训练模型,网络稳定下来以后,就可以把参数固定下来,此时就不再需要反向传播了,只需要前馈运算进行推理和预测即可!
|
(1)、神经网络训练的优化目标
(2)、梯度下降(Gradient Descent)
求解非线性无约束优化问题的最基本方法;最小化损失函数的一种常用的一阶优化方法。
沿负梯度方向,函数值下降最快
(3)、链式法则
链式法chain rule,属于微积分领域,是微积分中的求导法则,用于求一个复合函数的导数,是在微积分的求导运算中一种常用的方法。复合函数的导数将是构成复合这有限个函数在相应点的 导数的乘积,就像锁链一样一环套一环,故称链式法则。
这个结论可推广到任意有限个函数复合到情形,于是复合函数的导数将是构成复合这有限个函数在相应点的 导数的乘积,就像锁链一样一环套一环,故称链式法则。
(3.1)、链式法则与复合函数
链式法则是关于复合函数的导数的性质:如果某个函数由复合函数表示,则该复合函数的导数可以用构成复合函数的各个函数的导数的乘积表示。
数学式表示
(3.2)、链式法则和计算图
其中“**2”节点表示平方运算,沿着与正方向相反的方向,乘上局部导数后传递。反向传播的计算顺序是,先将节点的输入信号乘以节点的局部导数(偏导数),然后再传递给下一个节点。
反向传播是基于链式法则的。
(1)、根据计算图的反向传播的结果,dz/dx = 2(x + y)
(2)、乘法的反向传播:左图是正向传播,右图是反向传播。
因为乘法的反向传播会乘以输入信号的翻转值,所以各自可按1.3 × 5 =6.5、1.3 × 10 = 13 计算。另外,加法的反向传播只是将上游的值传给下游,并不需要正向传播的输入信号。但是,乘法的反向传播需要正向传播时的输入信号值。因此,实现乘法节点的反向传播时,要保存正向传播的输入信号。
(3.3)、链式法则使用,求导案例
(3.4)、链式法则使用,购买苹果的反向传播的例子
这个问题相当于求“支付金额关于苹果的价格的导数”“支付金额关于苹果的个数的导数”“支付金额关于消费税的导数”。
3、CNN中,学习层次化的特征表示(表征)
BP神经网络的原理
DL之DNN:神经网络原理深度剖析—仅采用十张流程图带你轻松读懂利用BP反向传播算法训练多层神经网络的原理及其数学公式推导实现过程之详细攻略
https://yunyaniu.blog.csdn.net/article/details/79145288
1、三层神经网络为例,来推导和理解BP算法原理
参考地址01:反向传播算法【上】 - Tensorflow入门教程
参考地址02:https://github.com/INTERMT/BP-Algorithm
具体源头未知
(1)、信号正向传播:计算第1个隐藏层→计算第2个隐藏层→计算输出层
数学公式描述该神经网络:
(1)、一般情况下,同一层的激活函数都是一样的,并且此处是进行二分类,所以隐藏层、输出层都可以采用Sigmoid激活函数。
输入数据 | 隐藏层1 | 隐藏层2 | 输出层 |
前向传播计算 | |||
经过Sigmoid函数输出 | 、、 | 、 |
T1、第一种可视化方法,三层网络
T2、第二种可视化方法,多层网络
使用损失函数比较实际输出和期望输出
T3、第三种可视化方法——计算图,多层网络
计算图(Computation Graph):计算过程可以表示成有向图的形式。 | |
前向计算过程: 计算各计算结点的导数。 |
(2)、误差反向传播计算
反向传播的计算过程。假设我们使用随机梯度下降的方式来学习神经网络的参数,损失函数定义为 L(y,y^),其中y是该样本的真实类标。使用梯度下降进行参数的学习,我们必须计算出损失函数关于 神经网络中各层参数(权重w和偏置b)的偏导数。
数学公式描述计算梯度、更新参数
比如要对第k隐藏层参数w、b求偏导数,先计算和,再计算
因为偏置b是一个常数项,因此偏导数的计算也很简单。
计算损失函数?对各参数的梯度(偏导数)
| |
得到梯度后,更新参数 | 得到梯度以后,就可以进行更新参数。 |
T2、第二种可视化方法,多层网络
T3、第三种可视化方法——计算图,多层网络
反向传播(backpropagation)
|