神经网络的要素: 网络架构,激活函数,找出最优权重值的参数学习方法,
其中网络架构和找出最优权重值的参数学习方法(想一想s型感知器)都可从字面上理解
激活函数: 至于激活函数的定义和在神经网络中的作用,一直是本人没有理解的
根据在网络上冲浪,激活函数是在神经元中,输入的input经过加权,求和后被应用于一个函数
那么为什么要使用激活函数,如果不使用激活函数,我们每一层输出只是简单地承接了上一层的输入函数的线性变化,而神经网络中传递每层输出数据的方式,往往不是线性变化能够满足的
最主要的原因是神经网络的找出最优权重值的参数学习方法,若使用一些非线性的模型,使用激活函数给神经元引入了非线性因素,使得神经网络可以逼近任何非线性函数,这样神经网络就可以应用到非线性模型中
下图是一个输出向量在单个神经元中经过激活函数变换的过程
文章图片
sigmoid函数: 这里介绍一个常用的,也是在接下来的BP算法中将使用的激活函数:
f(a)= 1 / 1 + (a以e为底数的指数)
文章图片
文章图片
sigmoid函数也叫Logistic函数,用于隐藏层的输出(除开输入输出层开始的,真正神经元作用的层),输出在(0,1)之间,它可以将一个实数映射到(0,1)的范围内,可以用来做二分类。
常用于:在特征相差比较复杂或是相差不是特别大的时候效果比较好。
举个例子,1~100范围内的一组随机数列,经过sigmoid函数,输出数列将在(0,1),可通俗理解为这是一个1~100向0~1的一个映射关系(极其不负责任的理解,勿当教条)
sigmoid函数的缺点:1)激活函数的计算量大,反向传播求误差梯度时,求导涉及到除法。
2)反向传播的时候,很容易出现梯度消失的情况,从而无法完成深度神经网络的训练;
BP算法的简单介绍: BP算法是一种误差反向传播算法,对应神经网络中找出最优权重值的参数学习方法。
为什么要提出BP算法?
想一想S型感知器,它的w权值和b是我们无法直接得到的,对于S型感知器,未知的w和未知的b直接让它堕入深渊
那么BP算法就是这样一个训练出正确率较高的w和b的一种算法
BP算法的基本思想: 思路打开一点,网络的输出层得到的输出结果和我们所期望的结果必定存在着一些误差,网络输出层所获得结果一定与神经元的w和b有关,那么你所得到的误差也一定与w,b有关,
如果我们能找到一种方法,通过反向传播误差,找到每个神经元w,b在一个恰当的值,使得误差值最小(抽象理解成一种函数关系),那么?
我们就成功了!
BP算法的基本思想:学习过程由信号的正向传播(求损失)与误差的反向传播(误差回传)两个过程组成
文章图片
本图中的labels标签集的作用: if net.result = 'dog'{net.result = 'human face';
}
信号的正向传播FP(求误差): .在这个过程中,我们根据输入的样本,给定的初始化权重值W和偏置项的值b, 计算最终输出值以及输出值与实际值之间的损失值.
如果损失值不在给定的范围内则进行反向传播的过程;
否则停止W,b的更新.
(初始化w,b的过程,往往是一个手动的过程,在代码实现的流程中有所体现)
反向传播BP(回传误差): 将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。
关键点:1.反穿的某种形式
2.以什么方式分摊给各层的所有神经元
由于BP算法是通过误差值δ重新求解w,b的,所以BP算法有称为δ算法
这是一个三层的感知器结构
(规范化地称之为有一层隐层的感知器网络结构)
文章图片
BP算法网络结构的示意图
文章图片
最后的δ通过(绿色X点)重新调整每一层的各个神经元的w,b
对应了上述对于δ算法的描述:通过误差值δ重新求解w,b的
BP各层误差的计算:
输出层误差:
文章图片
1/2和平方是为了后续的计算,dk-ok正对应了期望结果和输出结果的差值
展开至隐层的误差(
文章图片
,
文章图片
是前面的WY的输出值,带入可以得到下面的式子):
文章图片
输入层误差(和前面一样,将VX带入f(netj)):
文章图片
通过误差传递到了第三个公式,也就是输入层与误差值的函数式,
下面的问题逐渐清晰明了,我们求解当w,b为适当值,误差δ最小,然后BP算法拿下!
【神经网络|神经网络之BP算法(误差反向传播)】想从第三公式求解的方法,可使用常用的梯度下降法(SGD)
推荐阅读
- 深度学习|神经网络之BP(反向传播算法)的原理介绍
- 机器学习|机器学习(神经网络的代价函数及反向传播算法)
- python机器学习|从零到一实现神经网络(五):数学微分法更新权重参数
- 自动驾驶|AirSim学习笔记1(《端到端自动驾驶》AutonomousDrivingCookbook)
- 人工智能|我的天,强化学习还能用在自动驾驶领域()
- 自动驾驶|强化学习基础篇 OpenAI Gym 环境搭建demo
- 前沿技术|深度学习框架中的自动微分及高阶导数
- 深度学习|二、机器学习基础13(熵、信息增益、剪枝处理、SVM)
- 深度学习|二、机器学习基础14(核函数)