机器学习笔记——人工神经网络(2)——后向传播算法

后向传播算法,简称BP算法,适合于多层神经元网络的一种学习算法,它建立在梯度下降法的基础上。BP网络的输入输出关系实质上是一种映射关系:一个n输入m输出的BP神经网络所完成的功能是从n维欧氏空间向m维欧氏空间中一有限域的连续映射,这一映射具有高度非线性。它的信息处理能力来源于简单非线性函数的多次复合,因此具有很强的函数复现能力。

后向传播算法(Back Propagation)

主要思想:梯度下降发求局部极值(Gradient Descent Method)

假设有函数 f(ω),我们希望找到这个函数上的最小值,要如何去做?

首先任取一点 ω0,此时这一点对应的函数值为 f(ω0)
在这里插入图片描述
接下来,我们要计算在这一点 ω0上,梯度的方向,即
在这里插入图片描述
计算出来为该点的斜率,此时我们需要沿着梯度下降的方向,走一定的“步数”

在这里插入图片描述
这时在很大程度上,f(ω1)的值要小于 f(ω0)的值。
同样的步骤,不断向下平移,直至找到斜率为0 的一点,此时我们成为找到了一个合理的局部极值点,退出

在这里插入图片描述
这个方法类似于一种“试探”过程,向左平移的过程就是一个不断试探的过程,最终找到了一个满意的最低的状态
但是在这个过程中,我们无法判断找到的局部极值点是否为函数的最小值,这便与我们一开始所选定的初始位置有关。当初始值ω0选定的位置离图中初始位置较远时,我们无法判断最终是否能集中至同一位置。

因此上述方法的好坏于选定的初始位置有很大关系。

接下来我们尝试用语言描述出上示算法

在这里插入图片描述
这里的α称为步长或者学习率

我们用泰勒展开来解释这里

在这里插入图片描述
(最右侧一项意为比△ω的高阶无穷小)

在这里插入图片描述在上式中,最后一项可看做无穷小,同时α恒大于零,因此我们得到 f(ωk+1)小于 f(ω),同时每迭代一步f都会变小,直到最后找到极值为止

下面我们来推导BP算法

后向传播算法的推导

假设已知存在如下多层神经网络
输入{(Xi,Yi)} i=1~N
在这里插入图片描述我们要通过输入的X,调整神经网络中所有的ω和b,使得神经网络中的y尽量等于输入中的Y

针对某一输入 (X,Y),定义优化函数E

在这里插入图片描述
优化函数有无限多种,这里只是选用了最简单的其中一种,其中1/2的作用是方便求导运算。

推导梯度下降算法

①随机取(ω11,ω12,ω21,ω22,ω1,ω2,b1,b2)
②对所有的ω,求ω关于优化函数E的偏导
对所有的b,求b关于优化函数E的偏导
(多维使用偏导数)

在这里插入图片描述
④当所有的偏导数均为0时退出循环

在算法中,每当我们输入一个X,均可得到一个与之对应的E,后续不断输入X并且不断调整E。而算法的重点在于:如何计算公式中的偏导数。

计算偏导数

根据BP算法,我们要针对神经网络中的九个ω和b分别计算偏导,而计算的顺序有一定的规则,换句话说,我们可以根据前面计算的结果用于后面求导的计算中。

在神经网络中,ω1和ω2与y有直接关系,而其余ω和b分别于a1,a2有直接关系,因此我们第一步是求出y,a1,a2关于E的偏导
在这里插入图片描述在这里插入图片描述在这里插入图片描述同理

在这里插入图片描述
在多层神经网络中,当我们输入X后,首先进行前向计算,即从左向右以此计算。而后向传播的意义为:从最后的y开始,向左进行求偏导计算。

这里介绍一种特殊的函数:阶跃函数,其图像如下

在这里插入图片描述
可以看到,除了在0这一点,其余位置上φ(x)均为0,这种情况下带入我们上述推算的偏导中便不可以使用,于是我们引入其他更加方便的函数

①sigmoid函数

在这里插入图片描述其优点在于求导后十分简易,同时在三层神经网络中同阶跃函数一样能够模拟任意的决策面

在这里插入图片描述
②双曲正切(tanh)函数
在这里插入图片描述同样可以模拟任意的决策面
在这里插入图片描述
下面两种函数为深度学习出现后常采用的函数

③Relu(Rectified Linear Units)函数

在这里插入图片描述在这里插入图片描述
在tanh函数中,其最大值为1,最小值为-1,当函数值比较大时,其值必然会被压缩,因此无法将网络的全部信息由当前层传导至下一层。

而Relu将所有小于零的情况压缩为零,会有比较多的神经元(小于零),会使这一层活跃的参数减少,在大规模的神经网络计算BP算法中可以有效地降低每一层训练参数的活跃程度,从而降低训练的复杂度,在同样的训练样本的情况下使训练变得更加收敛。

④Leak Relu

在这里插入图片描述在这里插入图片描述
接下来我们从一个普遍性的例子中还原BP算法

假设输入X,这里的X是一个N*1维的向量
在这里插入图片描述
ω是MN维向量,而b是M1维向量。因此在第一层中共有M个神经元。 而这种表达形式与下图的神经网络的表达形式是一致的
在这里插入图片描述继续向后拓展,得到

在这里插入图片描述在图中表示即为
在这里插入图片描述经过非线性函数后,将得到第二层的内容
在这里插入图片描述接下来一直网线进行,直至达到最后一层

在这里插入图片描述
在推导前,我们介绍几个定义:

①网络共有l层
②Z(k),a(k),b(k)是第k层的向量,与第k层神经元个数一致
③使用Zi(k),ai(k),bi(k)来表示Z(k),a(k),b(k)的第i个分量
④用yi表示y的第i个分量

BP算法流程
①随机初始化所有(ω,b)
②假设有训练样本(X,Y),将训练样本带入网络,可求出所有的(Z,a,y),且通过BP算法输出的结果y与训练样本Y的维度保持一致。(前向传播流程)
③链式法则求偏导:定义目标函数,最小化E=1/2(y-Y)2

在这里插入图片描述在这里插入图片描述
通过上述四式联合可以将所有(ω,b)求出来

④更新参数
在这里插入图片描述

(创作不易 ,如需转载请联系作者)

欢迎交流学习,感谢您的阅读

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
卷积神经网络(Convolutional Neural Network,CNN)是一种机器学习算法,其主要应用于图像识别、计算机视觉和模式识别等领域。CNN模型的设计灵感来源于科学家们对于生物视觉系统的研究。该算法的核心概念是通过卷积层、池化层和全连接层的组合,对输入的图像进行特征提取和分类。 在CNN中,卷积层是该模型的主要组成部分之一。通过定义一组卷积核(或过滤器),卷积层可以对输入的图像进行滤波操作,将原始图像中的特定特征(例如边缘和纹理)提取出来,并生成一系列特征图。这些特征图可以被认为是对原始图像进行不同尺度和方向的特征提取。 在经过卷积层之后,通常会接着使用池化层来进行下采样操作。池化层的主要目的是减小特征图的尺寸,同时保留重要的特征信息。最常见的池化操作是最大池化,它通过从特定区域选择最大值来减小特征图的尺寸。 最后,经过卷积层和池化层的多次迭代后,最后会以全连接层作为输出层,进行分类任务。全连接层的每个节点都与前一层的所有节点相连接,主要用于将最后一层的特征进行整合,并根据特征进行分类或回归。 相比于传统机器学习算法,CNN在处理图像任务方面具有更好的性能。这是因为卷积层可以通过共享权重和局部连接的方式进行参数的共享,大大减少了需要训练的参数数量,并且能够有效处理图像的平移不变性。此外,卷积神经网络还可以通过堆叠多个卷积层和全连接层来构建深层网络模型,从而进一步提高模型的性能。 总而言之,卷积神经网络是一种强大的机器学习算法,特别适用于图像识别和计算机视觉任务。通过卷积层、池化层和全连接层的组合,CNN可以有效地提取图像中的特征,并进行分类或回归等任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值