神经网络与深度学习1

本文介绍了神经网络的基础,包括神经元模型,重点讨论了激活函数如sigmoid、ReLU及其优缺点。此外,还讲解了感知机的学习方法,多层感知机如何解决非线性问题,以及多层前馈网络和反向传播(BP)算法。最后,提到了动量法和自适应梯度算法(AdaGrad、RMSProp、Adam)在优化过程中的应用,以解决梯度消失和学习率调整的问题。
摘要由CSDN通过智能技术生成

一、神经元模型

神经网络这一概念的提出灵感来源于对人类大脑神经元的研究,是一种通过模拟大脑神经元功能和网络结构去完成认知任务的一种机器学习算法体系,人脑神经元结构示意图如下图。

神经网络中的神经元模型是对生物神经元的抽象和模仿,神经网络神经元的结构示意图如下图。

x1~xd代表神经元的d个输入,分别与对应的权重w1~wd相乘,1代表偏置项乘以系数b,求和结果作用到一个非线性激活函数f中获得输出a

二、激活函数

神经元中如果不引入非线性因素,组成的神经网络是线性的,这样的神经网络无法很好解决非线性问题,因此需要引入激活函数。激活函数能够在神经网络中引入非线性因素,一种常用的激活函数为sigmoid函数。表达式以及函数图像如下。

sigmoid函数取值在0和1之间,输入值在0附近时函数斜率大,属于敏感区;输入值的绝对值大时函数斜率小,属于抑制区。sigmoid函数常应用于二分类问题,但在诸如目标检测等复杂问题场合很少使用,主要原因在于sigmoid函数有两个明显缺点。

  1. sigmoid函数在输入值取值较大时函数斜率很小,趋近于零,由于在进行反向传播更新参数时会乘以激活函数的导数参与梯度运算,sigmoid函数的使用会产生反向传播梯度为零的情况,将不利于网络的权值更新。

  1. sigmoid函数不是中心对称的,使得关于w的梯度反向传播时要么全为正向,要么全为负向,导致梯度下降及权重更新时出现“Z”字形下降。

人们还提出使用中心对称的tanh函数做激活函数,但tanh激活函数同样存在输入绝对值较大斜率为零,导致梯度消失的问题,使得tanh函数的应用大大受限。后来人们提出ReLU激活函数,其函数形式和图像如下。

ReLU函数相比sigmoid和tanh函数有两个明显优点:

  1. 在输入值为正时函数导数为常量,可以解决输入为正情况下梯度为零的问题。

  1. 相比于指数运算,ReLU函数形式简单,减小运算量,提高权重更新速度。

ReLU函数缺点也很明显:输入为负时函数不会被激活,造成梯度为零。

在多分类问题中常用一种激活函数叫softmax,表达式如下。

softmax函数作用在神经网络的输出层,作用是将分类网络的输出值转换成概率形式。对其表达式可以这么理解:在一个分类问题中共有k个类别,x1~xk代表分类网络得到的某一样本分别为这k个类别的预测值,经过softmax函数后得到y1~yk代表该样本分别属于这k个类别的概率。

三、感知机

1、感知机模型和学习方法

感知机模型于1957年由Rosenblatt提出,用于解决线性可分问题,是神经网络和支持向量机的基础。

考虑直线方程ax+by+c=0,对于任意一点坐标(x0, y0),该点离直线的距离为:

可以通过考察二维平面上点与直线的位置关系将平面上的点分成两类。如果是高维情况,分类面为超平面,则有:

感知机的结构与前文介绍的神经元结构十分类似,会将x1~xn作为输入层的输入,它们会分别乘以一系列初始权重值再求和,得到的值会与某个阈值相比较,值为正输出为1,值为负输出为-1。感知机的输入输出模型可以用如下公式表示。

其中sign(x)为符号函数。

感知机学习属于有监督学习,要求数据集线性可分。假设有一数据集T={(x1, y1), (x2, y2), ..., (xN, yN)},其中xi (i = 1~N)为n维向量,yi为标签,取值为{+1, -1}。感知机学习要求学习一组参数w和b,能将数据集的样本完全分为两类,即对所有yi = +1的样本有wxi+b>0,对所有yi = -1的样本有wxi+b<0。

接下来构建损失函数用于更新权值参数,感知机学习的目的是将正负样本进行完全正确的分类,因此考虑利用误分类点构建损失函数,假设误分类点的个数为M,将M个误分类点到分类超平面的总距离作为损失函数,表达式如下。

由表达式可知,误分类点个数越少,离分离平面越近损失函数的值越小。学习一组参数值使得损失函数值最小。

损失函数构建完毕后借助梯度下降法更新参数。

感知机训练流程如下:

  1. 输入训练数据集T={(x1, y1), (x2, y2), ..., (xN, yN)},初始化权重参数w0和b0。

  1. 训练集中选取数据(xi, yi)。

  1. 判断yi(wxi+b)<0是否成立,若成立则借助下式更新参数。

  1. 转到第二步,直到没有误分类点。

感知机存在一些不足,第一,感知机的训练样本是手动输入的,需事先进行提取;第二,感知机无法解决非线性分类问题,例如异或问题。

2、多层感知机

为解决使用单一感知机无法进行非线性分类问题,提出多层感知机模型,在输入层和输出层之间加入一层或多层隐藏单元。当只加入一层隐藏层构成三层网络时,可以解决异或问题。

三层感知机可以识别任一凸多边形或者无界的凸区域,更多层的感知机可以识别更复杂的图形。

对多层感知机由如下定理成立:

  1. 若隐层节点可以任意设置,用三层阈值节点的网络可以实现任意的二值逻辑函数。

  1. 若隐层节点可以任意设置,用三层S型非线性特征节点的网络,可以一致逼近紧集上的连续函数或按范数逼近紧集上的平方可积函数。

四、多层前馈网络及BP算法

1、多层前馈网络

由神经元组成多层前馈神经网络,又名全连接神经网络。网络结构由输入层、隐藏层和输出层三层组成,多层感知机就是一种多层前馈网络,多层前馈网络的结构如下图。

下面引出前向传播的概念,前向传播简而言之就是输入值从输入层开始,经过运算层的运算传入输出层。若使用代表第n层第i个节点输入,代表第n层第i个节点输出,代表第n-1层第k个节点连接第n层第i个节点的权值,代表第n层第i个节点的偏置,激活函数用f表示,可以得到前向传播的公式。

2、BP算法

反向传播(BP)是用于更新权值以减小损失值的算法,反向传播主要用到了链式求导法则和梯度下降法。与前向传播相反,反向传播是从输出层向输入层传递,依据不同参数的影响来更新神经网络的权值参数,下面将介绍利用反向传播进行参数修正的具体流程。

  1. 进行前向传播,上一节中已给出某一层某一个节点的前向传播公式,若将一层的节点用矩阵表示,前向传播的矩阵形式表达式如下所示。

  1. 计算输出层偏差,用矩阵来表示。若用代表输出层偏差矩阵,J代表损失函数,f代表激活函数,计算得输出层偏差如下式所示。

  1. 计算每一层的误差,对于第n层第i个节点,其产生的损失如下式所示。

之所以求和,是因为第n层第i个节点的输出会指向n+1层的每一个节点(k个),每条连接均会影响对该权值的梯度。将上式写成矩阵形式如下。

  1. 计算权重及偏置项的梯度,对于单个节点梯度计算公式如下式所示。

  1. 依据梯度更新参数,参数更新用矩阵表示如下式所示。

其中η为学习率,也叫步长,用于控制权值更新将误差降到最小值的速度,以上是反向传播算法的全部流程。

BP算法的优缺点:

优点

  1. 学习完全自主

  1. 可以逼近任意非线性函数

缺点

  1. 算法非全局收敛

  1. 收敛速度较慢,步长选取较为困难

五、动量法与自适应梯度算法

1、动量法

病态曲率问题

上图为损失函数轮廓,红色代表最大值,蓝色代表最小值,在进入以蓝色标记的山沟区域之前随机开始,若想达到最小值点,为此需要穿过整个山沟,此区域为所谓的病态曲率。

如果把原始的SGD想象成一个纸团在重力作用下滚动,由于质量小,惯性小,受山壁弹力的干扰大,导致来回震荡,或者在鞍点处由于质量小速度很快减小为0,导致无法离开这块平地。

为解决以上问题提出动量法,动量法的参数更新公式如下:

动量法每次在进行参数更新的时候都会将以前的速度考虑进来,保留之前更新的方向,利用当前梯度微调最终更新方向。若梯度一直沿着当前方向更新,则更新幅度越来越大,若梯度方向不断变化会减小更新幅度。动量法流程如下。

2、自适应梯度算法

AdaGrad

AdaGrad算法能够实现参数的自适应变化,具有较大偏导的参数相应有较大的学习率,具有较小偏导的参数则对应较小的学习率。

算法流程

AdaGrad算法有其局限性:学习率是单调递减的,后期的学习率过小会导致训练困难甚至提前结束,并且需要设置一个全局初始学习率。

RMSProp

RMSProp用于解决AdaGrad方法中学习率过度衰减的问题,使用指数衰减平均舍弃历史达到快速收敛,另外引入超参数ρ控制衰减学习率。

具体而言,修改r

则有

具体流程

Adam

Adam优化综合AdaGrad与RMSProp的优点,与动量相结合,加入历史梯度平方的指数衰减平均还保留历史梯度的指数衰减平均。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值