人工神经网络笔记

一、 概述

智能

是个体具有目的的行为,合理的思维以及有效的适应环境的综合能力。或者说智能是个体认识客观事物和运用知识解决问题的能力。

  1. 感知和认识客观事物、客观世界和自我的能力:人类生存的最基本的能力,感知是智能的基础
    1. 通过学习取得知识与积累经验的能力:人类能够持续发展的最基本的能力
    2. 理解知识,运用知识经验去分析、解决问题的能力:智能的高级形式,人类改造世界的基本能力
    3. 联想、推理、判断和决策的能力:智能的高级形式,人类对未来和未知的预测、应对能力
    4. 运用语言进行抽象、概括的能力:是形式化描述的基础
    5. 发现、发明、创造和创新的能力:是第三种能力的高级体现
    6. 实时、迅速、合理地应付复杂环境的能力:实时反应能力,也是人类生存的基本能力
    7. 预测、洞察事物发展、变化的能力:根据历史信息和经验,判断事物未来的发展

人工智能(Artificial Intelligence, AI)

最初在1956年被引入,它主要眼睛就怎样让计算机模仿人脑从事推理、设计、思考、学习等思维活动,以解决和处理较复杂的问题。简单的讲,人工智能就是研究如何让计算机模仿人脑进行工作。

**多个代表性的学派**

	1. 符号主义学派: Newell 和Simon在1967年提出的假说,认为人工智能源于数学逻辑,通过数学逻辑来描述智能行为,后来发展了启发式算法>专家系统>知识工程的理论。
	2. 联接注意学派: 代表任务为McCulloch和Pitts,认为人工智能源于仿生学,特别是人脑的研究,并提出了MP模型,后来基于该模型衍生出人工神经网络等。
            		3. 行为主义学派: 认为人工智能源于控制论,Wiener等提出的控制论和自组织系统等,立足于模拟人在控制过程智能行为和作用,如自组织、自寻优、自适应、自学习等

人工神经网络 (Artificial Neural Network,ANN)

是一种旨在模仿人脑结构及其功能的脑式智能信息处理系统。通常以数学和物理的方法以及信息处理的角度对人脑神经网络进行抽象,并建立某种简化模型。简单的讲,它是一种数学模型,可以用电子线路来实现,也可以通过计算机程序来模拟,是人工智能的一种研究方法。

人工神经网络的基本特征

结构特点

  1. 信息处理的并行性:单个单元处理简单,可以大规模并行处理,有较快的速度。
  2. 信息存储的分布性:信息不是存储在网络的局部,而是分布在网络所有的连接权中。
  3. 信息处理单元的互联性:处理单元之间互联,呈现出丰富的功能。
  4. 结构的可塑性:连接方式多样,结构可塑。

性能特点

  1. 高度的非线性:多个单元链接,体现出非线性。
  2. 良好的容错性:分布式存储的结构特点使容错性好。
  3. 计算的非精确性:当输入模糊信息时,通过处理连续的模拟信号及不精确的信息逼近解而非精确解。

能力特征

  1. 自学习、自组织、自适应性:根据外部环境变化通过训练或感知,能调节参数适应变化(自学习),并可按输入刺激调整构建神经网络(自组织)。

人工神经网络(ANN)功能及应用

ANN 的基本功能

  1. 联想记忆
  2. 非线性映射
  3. 分类识别
  4. 优化计算
  5. 知识处理

ANN的应用领域

  1. 信息领域:信号处理、模式识别、数据压缩…
  2. 自动化领域:系统辨识、神经控制器、智能检测…
  3. 工程领域:汽车工程、军事工程、化学工程、水利工程…
  4. 医学领域:检测数据分析、生物活性研究、医学专家系统…
  5. 经济领域:信贷分析、市场预测、监督管理…

二、人工神经网络

神经元模型

M-P模型

1943年心理学家McCulloch和数学家W.Pitts基于生物神经元的特点,提出了M-P模型。模型通过对生物神经元信息处理过程进行了简化和概括。

  1. 多个输入单个输出
  2. 不同输入权重不同
  3. 多输入累加整合
  4. 阈值特性

M-P模型:是把神经元视为二值开关元件,按照不同的方式组合来完成各种逻辑运算,能够构成逻辑与、逻辑非、逻辑或,理论上可以进而组成任意复杂的逻辑关系,若讲M-P模型按照一定的方式组织起来,可以构成具有逻辑功能的神经网络。

激活函数(Activation Function)

激活函数也叫连接函数、传递函数、变换函数或者激励函数。用来模拟神经元与激活状态之间的联系:输入达到某个阈值后达到激活状态,否则为抑制态。不同的激活函数,会使神经元具有不同的信息处理特性。对于神经网络来讲,激活函数的主要作用就是进行线性变换,增加系统的非线性表达能力。

常见的激活函数:

  1. sgn 函数
  2. sigmoid函数
  3. Tanh函数
  4. Arctan函数

神经网络模型

神经网络模型分类

按照拓扑结构分为层次结构和互连结构

  1. 按照层次结构

    1. 单纯层次结构
    2. 层内有互连
    3. 输出层到输入层有互连
  2. 按照互连结构

    扫描二维码关注公众号,回复: 8843735 查看本文章
    1. 全互连:每个节点都和其他所有节点连接

    2. 局部互连:每个节点只与其临近节点有连接

    3. 稀疏连接:节点之与少数距离较远的节点有连接

按照信息流向分为前馈型网络和反馈型网络

  1. 前馈型网络:网络信息从输入层到各隐藏层再到输出层逐层前进。
  2. 反馈型网络:反馈型网络中所有的节点都具有信息处理功能,并且每个节点既可以接收输入同时又可以进行输出。

前馈型网络和反馈神经网络的主要区别:

  1. 前馈神经网络各层神经元之间无连接,神经元只接受上层传来的数据,处理后传入下一层,数据正向流动;反馈神经网络层间神经元有连接,数据可以在同层间流动或反馈至前层。
  2. 前馈神经网络不考虑输出与输入在时间上的滞后效应,只表达输出与输入的映射关系;反馈神经网络考虑输出与输入之间在时间上的延迟,需要用动态方程来描述系统的模型。
  3. 前馈神经网络的学习主要采用误差修正法(如BP算法),计算过程一般比较慢,收敛速度也比较慢;反馈神经网络主要采用Hebb学习规则,一般情况下计算的收敛速度很快。
  4. 相比前馈神经网络,反馈神经网络更适合应用在联想记忆和优化计算等领域。

神经网络学习规则

学习

学习是指通过训练使个体在行为上产生比较持久改变的过程,一般来说效果随着训练了的增加而提高,即通过学习获得进步。

人工神经网络的功能由其连接的拓扑结构和网络的连接权值决定,其全体的权值W整体反应了神经网络对于所解决问题的知识储备。即一旦拓扑结构和权值确定,该网络可以应用于新的数据得到结果。

人工神经网络得学习就是通过对样本得学习训练,不断改变网络的拓扑结构及连接权值,使得输出不断接近期望输出值。

通过训练改变权值的规则被称为学习算法或者学习规则,有时也称作训练规则或者训练算法,学习规则对人工神经网络非常重要。

学习类型的类型

  1. 有监督学习:学习模式为纠错

    不断的给网络提供一个输入及其期望的正确输出(称教师信号),将ANN的实际输出和期望输出作比较,不符时,按照一定规则调整权值参数,重新计算、比较,直到网络对于给定的输入均能产生期望的输出,则认为该网络训练完成,即已学会样本数据中的知识和规则。即可用与解决实际问题。

  2. 无监督学习:学习模式自组织

    学习时不管给网络提供动态输入信息,网络根据特有的内部结构和学习规则,在输入信息流中发现可能的模式和规律,同时根据网络功能和输入信息调整权值(自组织)。使网络能对属于同一类的模式进行自动分类。该模式网络权值的调整不取决于教师信号,网络的学习评价标准隐含于网络内部。

  3. 灌输式学习:学习模式为死记硬背

    将网络设计成记忆的特别的例子,当输入为该例子时,网络可以回忆起该例子。网络权值并非训练得到,而是通过某种设计方法得到,权值一旦设计好,即一次性灌输给网络,不再变动。

赫布法则

在《The Organization of Behavior》书中解释了学习过程中大脑中的神经细胞是如何改变和调整的,认为知识和学习发生在大脑主要是通过神经元间突触的形成与变化。当细胞A的轴凸足以接近已激发细胞B,并反复持续地对细胞B放电,一些生长过程或代谢变化将发生在某一各或者这两个细胞内,以至A作为对B放电的细胞中的一个效率增加。通俗来讲就是两个神经细胞交流越多,他们连接的效率就越高,繁殖越低。

McCulloch-Pitts模型缺乏一个对人工智能而言至关重要的学习机制,M-P模型很好的简化、模拟了神经元,但是无法通过学习的方式调整、优化权重,形成有效的模型。赫布法则的出现,成为神经模型的训练(学习机制)的基础性工作。

巴甫洛夫的条件反射实验:每次给狗喂食前都先响铃,时间一长,狗就会将铃声和事物联系起来。以后如果响铃但是不给食物,狗也会流口水,受此实验启发,Habb的理论认为在同一时间被激发的神经元间的联系会被强化。例如,铃声响时一个神经元被激发,在同一时间食物的出现会激发附近的另一个神经元,那么这两个神经元间的联系会被强化,从而记住这两个事物之间存在联系。相反,如果两个神经元总是不能同步激发,那么他们之间的联系就会越来越弱。

赫布规则被作为无监督神经学习规则,广泛应用于自组织神经网络、竞争网络中。

赫布学习规则为前馈、无导师学习。只根据实际输入和输出调整权重。

在赫布学习规则中,学习信号简单的等于神经元的输出:
r = f ( W j T X ) r = f(W_{j}^{T}X)
权值向量的调整公式为:
Δ W j = η f ( W j T X ) X , η {\Delta}W_{j} = {\eta}f(W_{j}^{T}X)X,{\eta}为常数

权向量各个分量调整为:
Δ W i j = η f ( W j T X ) x i = η o i x i , i = 0 , 1 , 2... , n {\Delta}W_{ij} = {\eta}f(W_{j}^{T}X)x_i = {\eta}o_ix_i,i = 0,1,2...,n
赫布学习规则的步骤:

  1. 初始化权值参数 W,一般赋于 0 附近的随机数

  2. 初始化学习效率 η {\eta}

  3. 对所有输入记录:

    根据输入记录,更新权重值

离散感知器学习规则

**感知器(Perceptron)**是由Rosenblatt定义的具有单层神经计算丹云的神经网络结构。实际上为一种前馈网络,同层内无互连,不同层间无反馈,游侠层向上层传递,其输入、输出均为离散值,神经元对输入加权求和后,由阈值函数(激活函数)决定其输出。

离散感知器学习规则则代表一种有导师的学习方式,其规定将神经元期望输出(教师信号)与实际输出之差作为学习信号,通过训练调整权值,直到实际输出满足要求(等于或者接近于期望输出)。

在该学习规则中,学习信号等于神经元的期望输出与实际输出之差:
r = d i f ( W j T X ) , f s g n ( ) r = d_{i} - f(W_{j}^{T}X),f就是sgn()函数
权值调整公式为:
Δ W j = η r X = η ( d j o j ) = η [ d j f ( W j T X ) ] X {\Delta}W_{j} = {\eta}rX = {\eta}(d_j - o_j)= {\eta}[d_j-f(W_j^TX)]X
权向量各分量调整为:
Δ W i j = η [ d j f ( W j T X ) ] X i = η ( d j o j ) x i , i = 0 , 1 , . . . , n {\Delta}W_{ij} = {\eta}[d_j-f(W_j^TX)]X_i = {\eta}(d_j-o_j)x_i,i=0,1,...,n

离散感知器学习规则的步骤:

  1. 初始化权值参数 W ,学习效率 η {\eta}

  2. 对每一个样本,实际输出和期望输出的差满足要求:

    根据记录,更新权重

连续感知器学习规则: δ {\delta}

Delta学习规则:1986年,由认知心理学家McClelland和Rumellhart在神经网络训练中引入的学习规则。一种简单的有道是学习算法,该算法根据神经元的实际输出与期望输出差别来调整连接权。

Delta学习规则思路如下:系统首先用一个输入向量,数网络结构,得到一个输出向量;每个输入向量都有一个对应的期望输出向量、或者称作时目标向量;比较实际输出向量与期望输出向量的差别,若没有差别,就不再继续学习;否则,连接的权重修改对应的差值(detal差)。

损失函数(Loss Function)

用于衡量最优的策略,通常是一个非负实值函数。机器学习试图通过不断的学习,建立一个可以很好预测现实结果的模型,损失函数则是用来衡量预测结果和真实结果之间的差距,其值越小,代表预测结果和真是结果越一致。损失函数越合适,通常模型的性能越好。通过各种方式缩小损失函数的过程称为优化。损失函数记作 L ( Y , f ( x ) ) L(Y,f(x))

  1. **0-1损失函数(0-1 LF): **预测值和实际值精确相等则“没有损失”为0,否则意味着“完全损失”为1,预测值和实际值精确相等有些过于严格,可以采用两者的差小于某个阀值的方式。

L ( Y , f ( X ) ) = { 1 , Y f ( X ) 0 , Y = f ( X ) L(Y,f(X)) = \begin{cases} 1 ,&Y\neq f(X)\text{}\\ 0 ,&Y = f(X) \end{cases}

L ( Y , f ( X ) ) = { 1 , Y f ( X ) T 0 , Y f ( X ) < T L(Y,f(X)) = \begin{cases} 1 ,&|Y- f(X)|\geq T\\ 0 ,&|Y - f(X)| < T \end{cases}

  1. 绝对值损失函数(Absolute LF):预测结果与真实结果差的绝对值。简单易懂,但是不方便计算。

L ( Y , f ( X ) ) = Y f ( X ) L(Y,f(X)) =|Y- f(X)|

  1. 平方损失函数(Quadratic LF):预测结果与真实结果差的平方。

L ( Y , f ( x ) ) = ( Y f ( x ) ) 2 L(Y,f(x)) = (Y-f(x))^2

​ 平方损失函数的优势有:

1.每个样本的误差都是正的,累加不会被抵消。
2.平方对于大误差的惩罚大于小误差。
3.数学计算简单、友好,导数为一次函数。
  1. **对数损失函数(Logarithmic LF)或对数似然损失函数(log-likehood loss function):**对数函数具有单调性,在求最优化问题时,结果与原始目标一直。可将乘法转化为加法,简化计算:

L ( Y , P ( Y X ) ) = l o g P ( Y X ) L(Y,P(Y|X)) = -logP(Y|X)

  1. **指数损失函数(Exponential LF)或对数似然损失函数(log-likehood loss function):**单调性、非负性的优良性质,使得越接近正确结果误差越小:

L ( Y , P ( Y X ) ) = e y f ( x ) L(Y,P(Y|X)) = e^{-y*f(x)}

  1. **折叶损失函数(Hinge LF):**也称铰链损失,对于判定边界附近得点得惩罚力度较高,常见于SVM

L ( Y , P ( Y X ) ) = m a x ( 0 , 1 f ( x ) ) L(Y,P(Y|X)) = max(0,1 -f(x))

不同损失函数有不同的特点,适用于不同的场景
  • 0-1:理想状况模型
  • Log:逻辑回归、交叉熵
  • Squared:线性回归
  • Exponential:AdaBoosting
  • Hinge:SVM、soft margin
损失函数的优化:梯度下降法

确定了损失函数,就需要对损失函数进行优化,求最小值。

学习的目的就是为了让实际输出值与期望输出值的差越小,即求使E最小的权值W。根据损失函数和梯度、梯度下降法可知,W沿着梯度的负方向(最小值)按照步长 η {\eta} (学习效率变化),会快速逼近最小值。

最小均方学习规则

1962年Bernard Widrow 和 Marcian Hoff 提出了 Widrow-Hoff 学习规则,它可以使神经元实际输出和期望输出之间的二次方的差最小。所以又称为最小均方学习规则(Least-Mean-Square,LMS

LMS 规则的学习信号为: r = d j W j T X r=d_j-W_j^TX

权向量调整为: Δ W j = η ( d j W j T X ) X {\Delta}W_j = {\eta}(d_j-W_j^TX)X

权值分量调整为: Δ w i j = η ( d j W j T X ) x i {\Delta}w_{ij} = {\eta}(d_j-W_j^TX)x_i

最小均方算法是 δ {\delta} 学习规则的特例,它的激活函数不同于 δ {\delta} 学习规则,不做任何变换。

最小均方算法和 δ {\delta} 学习规则相比,无需求导数,学习速度快,且有不错的精度。

相关学习规则

相关学习规则的学习信号为: r = d j r=d_j

权向量调整为: Δ W j = η d j X {\Delta}W_j={\eta}d_jX

权值分量调整为: Δ w i j = η d j x i , i = 1 , 2 , . . . n {\Delta}w_{ij}={\eta}d_jx_i,i=1,2,...n

相关学习规则从权值调整上来看,是赫布学习规则的一个特例:当赫布学习规则的激活函数为二进制函数且有 o j = d j o_j=d_j 时二者一致。

相关学习规则是有导师学习,赫布学习规则是无导师学习。

竞争学习&胜者为王

竞争学习(Competition Learning) 是人工神经网络的一种学习方式,指网络单元群体中的所有单元相互竞争对外界刺激模式响应的权利。竞争取胜的单元的连接权重向着对这一刺激有利的方向变化,相对来说竞争取胜的单元抑制了竞争失败单元对刺激模式的响应。属于自适应学习,使网络单元具有选择接受外界刺激模式的特性。竞争学习的更一般的形式是:不仅允许单个胜者出现,还允许多个胜者出现,学习发生在生者集合中各单元的连接权重上。

**胜者为王学习规则(Winnner-Take-All):**无导师学习,将网络的某一层设置为竞争层,对于输入 X 竞争层的所有p个神经元均有输出响应,响应最大的神经元在竞争中获胜,即: W m T = m a x ( W i T X ) , i = 1 , 2 , . . . p W_m^T=max (W_i^TX) ,i=1,2,...p 获胜的神经元才有权值调整其权向量 W m W_m ,调整为: Δ W m = α ( x W m ) , α ( 0 , 1 ] {\Delta}W_m = {\alpha}(x-W_m), {\alpha} {\in}(0,1] 随着学习而减小。

在竞争学习过程中,竞争层的各神经元所对应的权向量逐渐调整为输入样本空间的聚类中心。

在实际应用中,通常会定义以获胜神经元为中心的邻域,所在邻域内的所有神经元都进行权重调整。

外星学习规则

内星节点: 总是接收其他神经元输入的加权信号,是信号的汇聚点,其对应的权值向量称为内星权向量。

**外星节点:**总是向其他神经元输出加权信号,是信号的发散点,其对应的权值向量称作外星权向量。

**内星学习规则:**内星节点的输出响应是输入 X 和内星权向量 W 的点积,描述了输入与权向量的相似程度,其跟你更新规则类似于胜者为王: Δ W j = α ( X i W j ) {\Delta}W_j = {\alpha}(X_i-W_j)

**外星学习规则:**属于有导师学习,其目的是为了生成一个期望的 m 维输出向量 d, 外星权向量 W j W_j 更新通过两者的差异实现,其规则为: Δ W j = η ( d W j ) {\Delta}W_j = {\eta}(d-W_j)

两者的更新规则:

* 内星属于无导师学习,外星属于有导师学习。
* 内星更新依赖于输出和权重的差异,外星更新依赖于输出和权重的差异。

单层感知器

感知器(Perceptron):用于线性可分模式分类的最简单的神经网络模型。由一个具有可调树突权值和偏执的神经元组成。1958年Frank Rosenblatt提出一种具有单层计算单元的神经网络,即为Perceptron。其本质是一个非线性前馈网络,同层内无互联,不同层间无反馈,由下层向上层传递。其输入、输出均为离散值,神经元对输入加权求和之后,由阈值函数决定其输出。感知器实际上是一个简单的单层神经网络模型。单节点感知器就是MP模型,首次提出学习的概念。

Rosenblatt给出感知机一个简单只管的学习方案:给定一个有输入输出实例的训练集,感知机【学习】一个函数:对每个例子,若感知机的输出值比实际值低太多,则增加它的权重,若比实例高太多,则减少它的权重。感知器是整个神经网络的基础,神经元通过响应函数确定输出,神经元之间通过权重进行传递信息,权重的确定根据误差来进行调节,这就是学习的过程。

单层感知器的学习算法:

采用离散感知器算法:
Δ W j = η [ d j s g n ( W j T X ) X ] {\Delta}W_j = {\eta} [d_j-sgn(W_j^TX)X]
具体步骤:

  1. 初始化权值,赋予较小的非零随机数。如果输入样本线性可分,无论初始值如何取,都会稳定收敛。

  2. 输入样本{X,Y},其中 X ( i ) = ( 1 , x 1 ( i ) , x 2 ( i ) , . . . x n ( i ) ) , i = 1 , 2... k X^{(i)} = (1,x_1^{(i)},x_2^{(i)},...x_n^{(i)}),i=1,2...k 共 k 条 n+1 个分量的输入,输出为 k 条 m 个分量的向量 : Y ( i ) = ( y 1 ( i ) , y 2 ( i ) , . . . y n ( i ) ) , i = 1 , 2... k Y^{(i)} = (y_1^{(i)},y_2^{(i)},...y_n^{(i)}),i=1,2...k

  3. 计算各输出节点的实际输出: o j ( i ) = s g n ( W j T X ( i ) ) , i = 1 , 2 , . . . , k , j = 1 , 2 , . . . , m o_j^{(i)}=sgn(W_j^TX^{(i)}),i=1,2,...,k,j=1,2,...,m

  4. 按照实际输出值和期望值之间的差更新权重: [ W j ( i ) ] = W j ( i ) + η [ d j ( i ) o j ( i ) ] X [W_j^{(i)}]'=W_j^{(i)}+{\eta}[d_j^{(i)}-o_j^{(i)}]X η {\eta} 为学习效率

  5. 返回第 2 步,处理下一组输入样本

  6. 循环上述过程,直到感知器对所有样本的实际输出和期望输出一致。

线性与非线性

线性(Linear)的严格定义是一种映射关系,其映射关系满足可加性和齐次性。通俗理解就是两个变量之间存在一次方函数关系,在平面坐标系中表现为一条直线,不满足线性即为非线性(non-linear)

线性与非线性分类器

线性可分,即可以用一个超平面将正负样本分开。以二维空间的二分类为例,是指可以通过一条直线将数据纷争正负样本两类。分类器(算法)也有线性和非线性两类。

  • 线性分类器使用超平面类型的边界,非线性分类器使用超曲面型的边界
  • 线性分类器简单、容易理解,非线性分类器能解决更复杂的分类问题

1969年 《Perceptrons》 (感知器)证明了无法使用感知器来表示异或。

多层感知器

多层感知器(Multi Layer Perceptron ,即MLP)是一种前馈型人工神经网络模型,包括至少一个隐藏层(除了一个输入层和一个输出层以外),将输入的多个数据集映射到一个单一的输出的数据集上

  • 单和多是指有计算功能的节点所在的层数,输入层无计算功能,不计算在内,单层即只有输入层和输出层,多层至少包含一个隐藏层。
  • 单层智能学习线性函数,多层可以学习非线性函数,适用于模式识别、图像处理、函数逼近等领域。

自适应线性单元

1962年,斯坦福大学教授 Widrow 提出一种自适应可调的神经网络,其基本构成单元称为自适应线性单元(Adaptive Linear Neuron,ADALINE),其主要作用是线性逼近一个函数式而进行模式联想。该模型是最早用于实际工程解决实际问题的人工神经网络。这种自适应可调的神经网络主要适用于信号处理中的自适应滤波、预测、模式识别等。主要应用于语音识别、天气预测、心电图诊断、信号处理以及系统辨识等方面。

ADALINE 单层自适应网络
  • 激活函数:ADALINE的激活函数为线性函数,感知器的为符号函数(阈值函数)
  • 误差更新:ADALINE在输出最终结果前根据误差更新权重,感知器在输出最终结果后更新
  • 损失函数:ADALINE使用均方误差SSE作为损失函数,可最小化损失函数,感知器没有损失函数
  • 计算方便:凸函数,可微,有多种快速求解的方法,如梯度下降法等。(计算的速度比较慢)
  • 输出结果:ADLINE可以输出连续值或者分类值,感知器只能输出分类值
MADALINE 多层自适应线性网络

Hoff 将 ADALINE 进行了改进和推广,提出 MADALINE 模型,即将多个 ADALINE 神经元互相连接形成一个多层网络,实际上是由 ADALINE 和 AND 洛季奇组成,可以对非线性数据进行划分。同样采取 LMS 的算法进行学习。但由于隐藏层的误差无法直接计算,即 LMS 算法不能直接用于含有隐藏层的神经元网络,故,MADALINE 一般不含隐藏层。对此,Widrow 提出了一个需要微分的算法 MR Ⅱ 用于解决多层网络的学习问题。

误差反向传播算法

前向和反向的的特点:

  • 前向的“分母”一样,反向的“分子”一样
  • 前向强调的是某个输入对某个神经元的影响
  • 前向求导方式是“路径累加和”,逐条路径求解
  • 反向采用的是“合并同类路径,分阶段按层次求解”
  • 前向会导致路径中的部分冗余遍历,反向不会
  • 反向中某一阶段计算时可以直接使用上一阶段的结果
  • 前向计算量比反向大很多
BP 算法(Error Back Propagation,误差反向传播算法)

BP算法:是目前用来训练人工神经网络(ANN)最常用的、最有效的算法。由1974年Paul Werbos最早提出,未被重视,后来由Rumelhart 和 McCelland 发表《并行分布式处理》正是提出。

  1. **数据前向传播:**训练集数据输入到输入层,经过隐藏层,到达输出层,计算输出的结果

  2. **误差反向传播:**计算输出值与实际值得误差,从输出层向隐藏层反向传播,直至输出层

  3. **调整算法参数:**在反向传播过程中,根据误差调整各种参数的值,反复迭代直至收敛

BP神经网络的一般训练步骤:

  1. 初始化:网络结构(网络层数、输入输出及隐藏层几点个数)、权值矩阵、阈值

  2. 选择某个样本 参加训练

    1. 计算样本对应的各层的输入和输出

    2. 利用期望输出与实际输出,计算表误差函数对输出层的个神经元测偏导

    3. 利用期望输出与实际输出,计算误差函数对隐藏层的各神经元的偏导

    4. 利用公式修正隐藏层到输出层的权重

    5. 利用公式修正输入层到隐藏层的权重

    6. 判断是否继续训练

      • 是否达到最大循环次数
      • 全局误差是否满足期望
  3. 结束训练,得到神经网络模型

激活函数的特点:

  • 非线性:导数不能是常数,否则网络会退化成单层网络
  • 处处可微:或者说几乎处处可微,保证能计算梯度,从而进行参数优化
  • 计算简单:降低计算难度和复杂程度
  • 非饱和性:饱和指在某些区间内,梯度接近与零(梯度消失),使参数无法继续更新,即无法收敛
  • 单调性:即导数符号不变(朝一个方向变化),避免梯度方向经常变化导致不易收敛
  • 有限的输出范围:面对不同范围的输入也会保持输出的稳定性,但有时会导致梯度消失

误差曲面存在的问题:

误差曲面通常维数比较多,形状比较复杂,当存在以下两种情况时,对梯度法最小画损失函数由比较大的影响:

  1. 存在平坦区域:激活函数的饱和区
  2. 存在多个局部最小值:其特点是梯度为0,使得限于局部最小值而不能自拔

标准BP算法存在的问题:

  • 容易陷入局部最小,得不到全局最优值

  • 饱和区导致训练次数多,但是收敛缓慢

  • 设计网络时,关键信息选取无明确依据

    • 隐层数

    • 隐层节点数

    • 学习速率

  • 训练顺序对训练有影响,有“遗忘”的特点

标准BP算法改进

  1. 增加动量项

    标准BP算法在更新权重时,只考虑了当前状态下的误差梯度,而未考虑之前的梯度变化情况,导致训练过程震荡,收敛过慢,为了提高训练速度,在权值调整公式中增加一项,用来保留之前的权重更新的信息,即权重更新公式变为:

Δ W ( t ) = η δ X + α W ( t 1 ) {\Delta}W(t)={\eta}{\delta}X+{\alpha}W(t-1)

​ 其中, α W ( t 1 ) {\alpha}W(t-1) 被称作动量项,从前一次大的权重更新的量中取一部分叠加到当前的更新量中,从而增加了之前梯度变化的影响。

α {\alpha} 被称作动量系数,其取值一般在(0,1)之间。

​ 动量项反映了以前积累的权重调整经验,是权重调整有了“记忆”

​ 动量项对当前调整起到了阻尼的作用。当误差变化起伏剧烈时,动量项可以减小震荡趋势,提高训练速度。

  1. 标准BP算法中的 η {\eta} 称作学习率、学习速率、步长等,通常定位常数,在权重更新中起到了较大的作用,改制选择不合适,会影响学习过程和学习过程。

    • 结合误差曲面,在平坦区时,希望学习率大一些,达到同样的训练效果的同时,可以减少训练次数
    • 当在误差变化剧烈的区域,希望学习效率小一些,以免步子过大,迈过理想值,从而引起不合理的震荡

    可在学习过程中适当的调整学习率,方法很多,如:

    1. 设置初始化学习效率 η {\eta}

    2. 经过一批权值调整步骤之后,如果总误差上升,说明学习率大了,需要减小;如果总误差下降,说明学习率小了,可以增加。

    3. 陡度因子

进入误差曲面的平坦区,通常是因为神经元进入了激活函数的饱和区,如果能设法在饱和区内对激活函数进行调整,比如压缩神经元的净输入,使其输出退出饱和区,就可以脱离当前的平坦区。可以在原激活函数中引入陡度因子 λ : {\lambda}:
o k = 1 1 + e n e t k λ o_k =\frac{1}{1+e^{\frac{-net_k}{\lambda}}}
剧烈时,动量项可以减小震荡趋势,提高训练速度。

发布了50 篇原创文章 · 获赞 23 · 访问量 1211

猜你喜欢

转载自blog.csdn.net/qq_44698161/article/details/103997423