【机器学习入门 】人工神经网络(一)

本文介绍了人工神经网络的基本概念,重点讨论了多层感知机的结构、非线性激活函数的作用,以及反向传播算法在训练神经网络中的应用。深度神经网络面临的挑战,如梯度信号衰减和过拟合问题,以及解决策略如Dropout和批归一化的讨论也贯穿始终,强调了充足训练样本对深度学习的重要性。
摘要由CSDN通过智能技术生成

系列文章目录

第1章 专家系统
第2章 决策树
第3章 神经元和感知机
识别手写数字——感知机
第4章 线性回归
第5章 逻辑斯蒂回归和分类
第5章 支持向量机



前言

人工神经网络( Artifical Neural Network, ANN)是按照联结主义思想构建的智能计算模型。生物通过相互连接的大量神经元实现了智能,人们受此启发,相信通过将人工神经元组织成相互连接的网络,也能使机器表现出智能。由此产生了一系列神经网络计算模型,比如,前馈神经网络、循环神经网络、径向基函数网络、自组织神经网络、玻耳兹曼机等。本章着重介绍前反馈神经网络。


一、多层感知机

由于感知机模型和逻辑斯蒂回归的等效性,它只能解决线性分类问题,对于非线性分类问题无能为力。例如,“异或”这种布尔运算,就是一个非常简单且非线性的分类问题,是用来展示感知机和多层神经网络的差别的经典问题。
可见上一章。
但我们可以徒手构造一个加入了“中间层”的感知机模型来解决异或问题

在这里插入图片描述

这个中间层也叫作**“隐藏层”**。当我们说“多层感知机”(Multiple Layer Perceptron,MLP),通常就是指这种只含有单个隐藏层的神经网络。

多层感知机是前馈神经网络(Feed-forward Neural Network)的一种。前馈神经网络把每一层的输出作为下一层的输入,从输入层逐层连接到输出层,因此,它可以有任意多个隐藏层。

为什么感知机在层叠之后可以具有更强的表达能力呢?设想如果感知机没有非线性激活函数,只是取输入参数的线性和,那么层叠的感知机具有非线性分类能力吗?由于线性运算的叠加依然是线性运算,我们知道这个问题的答案是否定的:没有了非线性激活函数,多层感知机叠加也无法解决非线性分类问题。可见,多层神经网络具有更强表达力的关键在于非线性的激活函数
直观解释:
我们可以把激活函数想象为陡峭的斜面,权值参数可以控制这些斜面的走向,若干个不同的斜面进行组合,可以拟合任意复杂的曲面形状。因此具有隐藏层的神经网络具有强大表达力。

二、反向传播算法

学习神经网络的权值参数,实际上采用与感知机完全相同的梯度下降法。早期感知机模型从仿生学的角度,根据人们对生物神经系统的理解,采用了赫布规则进行权值更新。我们把感知机和神经网络模型都作为最优化问题,用数值优化方法进行求解,我们会发现梯度下降法对它们都是适用的。该方法在被提出之时,被冠名为"反向传播(back propagation)算法"

这是因为对于前馈神经网络来说,权值更新的顺序与正常计算网络输出的顺序刚好相反,是从输出层向输入层反向进行传播的。梯度下降法的关键是求取误差关于模型参数(连接权值)的梯度(即导数),反向传播算法从输出层开始计算误差,并将误差沿着神经元连接反向传播。

输出层的误差是可以直接根据输出和目标值进行计算的,采用不同的损失函数可以计算出不同的误差。如果我们希望输出拟合某些期望的目标值,可以采用均方误差;如果将输出用作分类,可以采用逻辑斯蒂回归模型的交叉熵损失函数等。
在这里插入图片描述

在这里插入图片描述
也就是说,梯度下降法这里一定能找到f(x)的极小值。
接下来对于这个问题,损失函数 E E E ω \omega ω b b b的二元函数。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
上面回顾了一下,去年在浙大的机器学习网课中讲到的后向传播算法。
接下来看下,这本书的推导过程有何差别。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
从上面的推导可以看出,这个过程很像把误差作为输入,将神经网络的方向倒转,逐层加权求和来传播误差。

三、深度神经网络

虽然人们早在20世纪80年代就解决了多层神经网络模型的训练问题,但是,受限于当时计算机的性能,没有充分挖掘神经网络模型的潜力。在处理图像、语言等输入维度较高的信息时,往往需要大规模的神经网络来产生足够丰富的中间表示。闵斯基等人在研究感知机模型的局限性时就指出了增加中间层对于扩展模型的表达力的重要性;鲁梅尔哈特等人在提出反向传播算法的时候,也以学习内部表示(internal representation)作为解决问题的目标。
神经网络处理信息的过程就是对输入信息中的特征进行自动提取,因此当输入很复杂时,需要有足够多的中间单元对输入的各种特征进行抽象表示,这样输出层才能够在这些中间表示的基础上产生预期的输出。
当扩展神经网络的中间表示单元时,我们有两种选择:增加网络的宽度,或者增加网络的深度。研究显示,表示同样复杂的特征,增加网络的宽度所需的神经元数量要远远大于增加网络的深度,在增加同样数量神经元的情况下,增加深度可以获得更丰富的表达力。这一点我们能够从高等动物的视觉神经系统中得到一些印证,生物神经系统也采取了增加深度的策略。
神经生物学家通过在神经系统中植入微电极,或者采取磁共振成像等方法,研究动物视觉神经系统对刺激的响应,从而理解神经系统对视觉信息的加工处理机制。研究发现,神经系统对视觉信号的处理过程是明显分层,逐层递进的。

深度神经网络面临的问题

误差在逐层传播的过程中会不断衰减,导致无法将有效的信号传入较深层的网络。

误差难以传播的原因之一来自广泛应用的Sigmoid激活函数本身。除了接近原点的区域之外,Sigmoid函数的两端过于平直,导数接近于0,一旦落入该区域,训练就会失去梯度的引导,进度变得极为缓慢。随着网络的加深,这种缺点尤为突出,误差在反向传播的过程中很容易衰减到太小以至于失去引导网络朝着正确方向改进的能力。这种情况叫作梯度信号衰减
修正线性单元(Rectified Linear Unit, ReLU)是一种更加适合深度网络的激活函数。它的计算过程简单, f ( t ) = m a x ( 0 , t ) f(t)=max(0,t) f(t)=max(0,t),当输入小于等于0时,输出为0;当输入大于0时,输出为自身。它的导数计算也很简单。输入小于等于0时,导数为0;输入大于0时,导数为1。也就是说,它的导数不会随着输入增大产生衰减这有效避免了Sigmoid函数所遇到的梯度信号衰减的问题。
由于ReLU函数在输入小于0的区域导数为0,有时会导致神经元陷入不活跃的状态,得不到脱离不活跃状态的梯度信号。因此,我们常采用一种带“泄露”(leaky)的变体,给小于0的部分一个较小的斜率。
带有泄露的修正线性单元(Leaky ReLU)激活函数如下 :
L e a k y R e L U ( t ) = { t ,  如果  t ≥ 0 λ t ,  如果  t < 0 , 其中 λ 是小于1的正数 LeakyReLU(t)=\begin{cases} t, & \text{ 如果 } t \ge 0 \\ \lambda t, & \text{ 如果 } t \lt 0,\text{其中} \lambda \text{是小于1的正数} \end{cases} LeakyReLU(t)={t,λt, 如果 t0 如果 t<0,其中λ是小于1的正数

大规模的网络又数量庞大的参数,极容易发生过拟合训练样本的问题。虽然能准确预测训练数据,但是在实际应用于未知数据时,缺乏很好的泛化能力。

深度神经网络的另一个问题是过拟合。这个问题来源于深度神经网络自身强大的表达能力,当模型所能容纳的复杂度高于样本的真实复杂度时,模型会倾向于用过于复杂的方式描述原本较为简单的问题。这类似用过于庞大的决策树对训练样本进行完全准确的分类,决策树末端分支采纳了样本间无关紧要的细微差异作为分支条件,并没有捕捉到不同类别样本的关键差异。这样的决策树就是过拟合的,无法正确分类真实样本。
为了防止深度神经网络过拟合,人们提出了很多方法。
比如,丢弃法(Dropout) 在训练时将中间层的某些输入随机设置为 0。一方面,这种方法能够在每一层输入中引入噪声,从而实现扩增训练数据的效果,相当于增加了样本的数量;另一方面,该方法迫使一部分神经连接完成之前由整个网络完成的工作,削弱了神经元之间相互适应产生的关联性,增强了神经元的独立性。
再如,批归一化(Batch Normalization) 是另一种防止过拟合的常见方法。该方法对中间层的输出进行归一化,对输出的均值和方差进行调整和约束,根据训练数据学习均值和方差调整的目标。这样可以有效限制随机噪声对中间层输出的扰动,防止梯度爆炸,同时,还可以将中间层的输出调整到更加符合真实数据分布的范围内。
这些方法都在深度神经网络的强大表达力之上附加了限制条件。这一类方法,在机器学习中被称为正则化方法。为了防止模型过拟合,正则化方法给模型的优化目标加入了额外的约束,这就像把肆意乱窜的猛兽关进了笼子。
在这里插入图片描述
在这里插入图片描述

然而,数量充足而且丰富均衡的训练样本才是深度神经网络模型训练成功的关键正则化方法引入的约束通常是与具体问题和真实数据无关的先验约束,并不能保证引导模型拟合数据的真实分布。真实分布永远存在于真实数据之中。真正能够防止过拟合,使模型反映真实数据分布的,是充足、丰富、平衡的训练样本。充足是说训练样本的规模要与目标网络模型的参数规模相匹配;而丰富、平衡是说各种类别、各种情况的样本都要有,并且数量要尽可能平衡,因为模型很难在稀缺的样本中学习统计规律。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值