工程项目建设自学网站,购物网站开发的管理可行性,诸暨营销型网站设计,今天宁波最新消息系列文章目录
第1章 专家系统 第2章 决策树 第3章 神经元和感知机 识别手写数字——感知机 第4章 线性回归 第5章 逻辑斯蒂回归和分类 第5章 支持向量机 文章目录 系列文章目录前言一、多层感知机二、反向传播算法三、深度神经网络 前言
人工神经网络( Artifical Neural Netw…系列文章目录
第1章 专家系统 第2章 决策树 第3章 神经元和感知机 识别手写数字——感知机 第4章 线性回归 第5章 逻辑斯蒂回归和分类 第5章 支持向量机 文章目录 系列文章目录前言一、多层感知机二、反向传播算法三、深度神经网络 前言
人工神经网络( Artifical Neural Network, ANN)是按照联结主义思想构建的智能计算模型。生物通过相互连接的大量神经元实现了智能人们受此启发相信通过将人工神经元组织成相互连接的网络也能使机器表现出智能。由此产生了一系列神经网络计算模型比如前馈神经网络、循环神经网络、径向基函数网络、自组织神经网络、玻耳兹曼机等。本章着重介绍前反馈神经网络。 一、多层感知机
由于感知机模型和逻辑斯蒂回归的等效性它只能解决线性分类问题对于非线性分类问题无能为力。例如“异或”这种布尔运算就是一个非常简单且非线性的分类问题是用来展示感知机和多层神经网络的差别的经典问题。 可见上一章。 但我们可以徒手构造一个加入了“中间层”的感知机模型来解决异或问题 这个中间层也叫作**“隐藏层”**。当我们说“多层感知机”(Multiple Layer PerceptronMLP)通常就是指这种只含有单个隐藏层的神经网络。
多层感知机是前馈神经网络(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, 如果 t≥0 如果 t0,其中λ是小于1的正数 大规模的网络又数量庞大的参数极容易发生过拟合训练样本的问题。虽然能准确预测训练数据但是在实际应用于未知数据时缺乏很好的泛化能力。 深度神经网络的另一个问题是过拟合。这个问题来源于深度神经网络自身强大的表达能力当模型所能容纳的复杂度高于样本的真实复杂度时模型会倾向于用过于复杂的方式描述原本较为简单的问题。这类似用过于庞大的决策树对训练样本进行完全准确的分类决策树末端分支采纳了样本间无关紧要的细微差异作为分支条件并没有捕捉到不同类别样本的关键差异。这样的决策树就是过拟合的无法正确分类真实样本。 为了防止深度神经网络过拟合人们提出了很多方法。 比如丢弃法(Dropout) 在训练时将中间层的某些输入随机设置为 0。一方面这种方法能够在每一层输入中引入噪声从而实现扩增训练数据的效果相当于增加了样本的数量另一方面该方法迫使一部分神经连接完成之前由整个网络完成的工作削弱了神经元之间相互适应产生的关联性增强了神经元的独立性。 再如批归一化Batch Normalization) 是另一种防止过拟合的常见方法。该方法对中间层的输出进行归一化对输出的均值和方差进行调整和约束根据训练数据学习均值和方差调整的目标。这样可以有效限制随机噪声对中间层输出的扰动防止梯度爆炸同时还可以将中间层的输出调整到更加符合真实数据分布的范围内。 这些方法都在深度神经网络的强大表达力之上附加了限制条件。这一类方法在机器学习中被称为正则化方法。为了防止模型过拟合正则化方法给模型的优化目标加入了额外的约束这就像把肆意乱窜的猛兽关进了笼子。
然而数量充足而且丰富均衡的训练样本才是深度神经网络模型训练成功的关键。正则化方法引入的约束通常是与具体问题和真实数据无关的先验约束并不能保证引导模型拟合数据的真实分布。真实分布永远存在于真实数据之中。真正能够防止过拟合使模型反映真实数据分布的是充足、丰富、平衡的训练样本。充足是说训练样本的规模要与目标网络模型的参数规模相匹配而丰富、平衡是说各种类别、各种情况的样本都要有并且数量要尽可能平衡因为模型很难在稀缺的样本中学习统计规律。