西瓜书 第5章 神经网络 5.1-5.3

神经网络

一、神经元模型

1、生物学神经元

  在生物学神经网络中,每个神经元与其他神经元连接,当它“兴奋”时,就会向相邻的神经元发送化学物质,从而改变这些神经元的电位,如果某神经元的电位超过一个阈值,那么它就会被激活(兴奋),向其他神经元发送化学物质。
西瓜书 第5章 神经网络 5.1-5.3_第1张图片

  1943年,McCulloch and Pitts基于生物神经元模型抽象出了经典的M-P神经元模型。神经元接收来自n个其他神经元传递来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数处理以产生神经元的输出。
西瓜书 第5章 神经网络 5.1-5.3_第2张图片

2、激活函数的作用

a、引入非线性因素

  在面对线性可分的数据集的时候,简单的用线性分类器即可解决分类问题。但是现实生活中的数据往往不是线性可分的,面对这样的数据,一般有两个方法:引入非线性函数线性变换

b、线性变换

  就是把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。

c、激活函数(响应函数)

  在神经网络中,为了避免单纯的线性组合,在每一层的输出后面都添加一个激活函数(sigmoid、tanh、ReLu等等)。每一层的输出通过这些激活函数之后,就变得比以前复杂很多,从而提升了神经网络模型的表达能力。当然怎么选择这个激活函数,还是很需要结合问题进行分析。
  理想中的激活函数应该是将任意输入值映射为 0(抑制)或 1(兴奋),即阶跃函数。但是阶跃函数具有不连续、不光滑等不好的性质。因此,实际中经常使用 sigmoid 函数作为激活函数,它把可能在较大范围内变化的输入值挤压到了(0,1)输出值范围内(所以也叫也叫挤压函数)。下图中为阶跃函数(左)和sigmoid函数(右)。
西瓜书 第5章 神经网络 5.1-5.3_第3张图片

d、Sigmoid函数

  它是常用的非线性的激活函数,能够把输入的连续实值压缩到0和1之间。
特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1。
sigmoid 函数曾经被使用的很多,不过近年来,用它的人越来越少了。主要是因为它的一些缺点

  1. Sigmoids saturate and kill gradients,梯度消失问题
      sigmoid 有一个非常致命的缺点,当输入非常大或者非常小的时候(saturation),这些神经元的梯度是接近于0的,从图中可以看出梯度的趋势。所以,需要尤其注意参数的初始值来尽量避免 saturation 的情况。如果初始值很大的话,大部分神经元可能都会处在 saturation 的状态而把 gradient kill 掉,这会导致网络变的很难学习。
  2. Sigmoid 的 output 不是0均值:
      这是不可取的,因为这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。 产生的一个结果就是:如果数据进入神经元的时候是正的(e.g.x>0 elementwise in f=wTx+b),那么 w 计算出的梯度也会始终都是正的。
      当然了,如果按batch去训练,那么那个batch可能得到不同的信号,所以这个问题还是可以缓解一下的。因此,非0均值这个问题虽然会产生一些不好的影响,不过跟上面提到的 kill gradients 问题相比还是要好很多的。

e、神经网络模型

  把许多个这样的神经元模型按一定的层次结果连接起来,就得到了神经网络。事实上神经网络模型只是类比神经网络给出了概念,并非真正模拟了神经网络,其本质上是若干个函数的嵌套(带入而得),有效的神经网络模型大多以数学模型进行支撑。

二、感知机与多层网络

1、感知机

  感知机(perceptron)由两层神经元组成,输入层接收外界信号后传入输出层(一个M-P神经元)。
西瓜书 第5章 神经网络 5.1-5.3_第4张图片

2、感知机网络

感知机能很轻易实现与、或、非运算:
西瓜书 第5章 神经网络 5.1-5.3_第5张图片

  一般地,给定训练集,权重 在这里插入图片描述 以及阈值 θ 都可以通过学习得到(阈值 θ 可以看作一个固定输入的“哑节点”,所对应的连接权重 在这里插入图片描述 ,就可以全部统一为权重的学习)。

感知机权重调整过程:
西瓜书 第5章 神经网络 5.1-5.3_第6张图片

  ŋ∈(0,1)为学习率, xi 用于控制每个 wi 的不同变化率。若感知机预测准确,则在这里插入图片描述,感知机不发生变化,否则根据错误的程度进行权重调整。
  感知机只有一层功能神经元,只能解决线性可分问题,若两类模式是线性可分的,则一定存在线性超平面将其分开,所以只要求得适当的权向量,感知机一定会收敛,但是对于非线性可分问题,感知机就会出现震荡,不能求得合适解,如:异或问题。
西瓜书 第5章 神经网络 5.1-5.3_第7张图片

3、多层网络

  要解决异或问题,需要多层功能神经元,于是就引入了隐含层,隐含层和输出层都是拥有激活函数的功能神经元。
下图为解决异或问题的两层感知机:
西瓜书 第5章 神经网络 5.1-5.3_第8张图片

  多层网络中每层神经元与下层神经元全互连,同层神经元之间不互连,不相邻层神经元之间不互连,这种神经网络就叫“多层前馈神经网络”(“前馈”并不是信号不能向后传递,是指网络拓扑结构中不存在环或回路)。
下图为两种多层感知机:
西瓜书 第5章 神经网络 5.1-5.3_第9张图片

  神经网络学到的东西,就蕴含在连接权(含激活阈值)中。

三、误差逆传播(error BackPropagation)算法

  给定训练集 在这里插入图片描述(输入是 d 个属性,输出是 l 维实向量),得如下多层前馈网络结构,其中输出层第 j 个神经元第阈值用 θj 表示,隐层第 h 个神经元第阈值用 γh 表示。 下图为多层前馈网络(BP网络)结构:

西瓜书 第5章 神经网络 5.1-5.3_第10张图片

  假设隐层和输出层神经元都使用sigmoid函数(sigmoid函数很多,这里实际是一个对率函数)。

西瓜书 第5章 神经网络 5.1-5.3_第11张图片

对训练例 (x_k,y_k) ,假定神经网络的输出为 在这里插入图片描述,即 在这里插入图片描述

网络在 (x_k,y_k) 上的均方误差为

西瓜书 第5章 神经网络 5.1-5.3_第12张图片

易知上面网络中有 (d + i + 1)q + l 个参数需要确定,BP迭代学习算法在每一轮迭代中采用广义第感知器学习规则对参数更新估计,即 ʋ ← ʋ + △ʋ
在这里插入图片描述 为例
BP算法基于梯度下降,以目标的负梯度方向对参数进行调整,给定学习率 ŋ ,则

西瓜书 第5章 神经网络 5.1-5.3_第13张图片

根据链式法则

西瓜书 第5章 神经网络 5.1-5.3_第14张图片

显然

西瓜书 第5章 神经网络 5.1-5.3_第15张图片

对率函数有

西瓜书 第5章 神经网络 5.1-5.3_第16张图片
令上式为 g_j ,则

在这里插入图片描述

类似地令 e_h 为

在这里插入图片描述

西瓜书 第5章 神经网络 5.1-5.3_第17张图片

  ŋ 的选择直接影响了算法的收敛效果,常让隐藏层到输出层之间用一个 ŋ1 ,而输入层到隐藏层之间用另一个 ŋ2 。

BP算法模型:
西瓜书 第5章 神经网络 5.1-5.3_第18张图片
BP算法大概工作流程: 先将输入示例提供给输入神经元,然后逐层将信号前传,直到产生输出层的结果;然后计算输出层的误差,再将误差逆向传播至隐藏神经元,最后根据隐藏神经元的误差来对连接权和阈值进行调整,以此循环迭代,直至达到某个停止条件。

BP算法的目标: 最小化训练集上的累计误差

西瓜书 第5章 神经网络 5.1-5.3_第19张图片

  上面(标准BP)的推导是基于单个 Ek 的,即每次只针对一个训练样例更新链接权和阈值。如果基于累计误差最小化更新规则,就得到了累计误差逆传播(累计BP)。
  标准BP更新非常频繁,而且不同样例之间可能出现抵消现象,因此为了达到相同的累计误差极小点,标准BP 需要更多第迭代次数;累计BP 读取完整个训练集 i 一边后才对参数进行更新,更新频率小很多,但是累计误差在下降到一定程度后,下降会非常缓慢(特别是训练集非常大时),这是标准BP 的收敛速度会更快。
  只要神经元足够,BP 算法能以任意精度毕竟任意连续函数,正由于其强大的表示能力,BP 神经网络经常过拟合,常用解决方法是提前终止(训练集误差降低但验证集误差升高则终止)和正则化
  正则化基本思想是定义约束和惩罚,上面的提前终止就是一种约束,以惩罚为例,则目标误差函数可以改写为

西瓜书 第5章 神经网络 5.1-5.3_第20张图片

增加正则项后,传输网络会更加“光滑”。

你可能感兴趣的:(机器学习,神经网络,机器学习,深度学习)