目录

1. 人工神经网络(ANN)概述

1.1 人工神经网络的研究目的和意义

1.2 人工神经网络的发展

1.3 人工神经网络(ANN)的定义

2. ANN基本原理

2.1 生物神经元模型

 2.2 人工神经元模型

 2.3 感知机与二分类问题

2.4 人工神经元模型的激活函数

 3. BP神经网络基本原理

3.1 什么是BP神经网络

3.2 误差反向传播学习算法


1. 人工神经网络(ANN)概述

1.1 人工神经网络的研究目的和意义

目的:
        (1)探索和模拟人的感觉、思维和行为的规律,设计具有人类智能的计算机系统。
        (2)探讨人脑的智能活动,用物化了的智能来考察和研究人脑智能的物质过程及其规律。
意义:
        (1)争取构造出尽可能与人脑具有相似功能的计算机,即ANN计算机。
        (2)研究仿照脑神经系统的人工神经网络,将在模式识别、组合优化和决策判断等方面取得传统计算机所难以达到的效果。

1.2 人工神经网络的发展

(1)第一次热潮(40-60年代未)
        1943年,美国心理学家W.McCulloch和数学家W.Pitts在提出了一个简单的神经元模型,即MP
模型。1958年,F.Rosenblatt等研制出了感知机(Perceptron)。

 (2) 低潮(70-80年代初)
        20世纪60年代以后,数字计算机的发展达到全盛时期,人们误以为数字计算机可以解决人
工智能、专家系统、模式识别问题,而放松了对“感知器”的研究。人工神经网络进入低潮期

(3)第二次热潮
        1982年,美国物理学家J.J.Hopfield提出Hopfield网络.1 986年Rumelhart等提出的误差反向传播法,即BP法影响最为广泛。直到今天,BP算法仍然是自动控制上最重要、应用最多的有效算法。
(4)低潮(90年代初-2000年初)
        SVM算法诞生,与神经网络相比:无需调参;高效;全局最优解。基于以上种种理由,SVM成为主流,人工神经网络再次陷入冰河期

(5)第三次热潮( 2006年开始)
        在被人摒弃的10年中,有几个学者仍然在坚持研究。这其中的选手就是加拿大多伦多大学的Geoffery Hinton教授。2006年,Hinton在《Science》和相关期刊上发表了论文,首次提出了“深学习”的概念。之后,深度学习在语音识别领域暂露头角。接着,2012年,深度学习技术又在图像识别领域大展拳脚。Hinton与他的学生在ImageNet竞赛中,用多层的卷积神经网络成功地对包含一千类别的一百万张图片进行了训练,取得了分类错误率1 5%的好成绩,这个成绩比第二名高了近11个百分点,充分证明了多层神经网络识别效果的优越性。

1.3 人工神经网络(ANN)的定义

        广义定义:人工神经网络( Artificial Neural Networks, 简写为ANN )也简称为神经网络或称作连接模型,是对人脑或自然神经网络若干基本特性的抽象和模拟,以大量的具有相同结构的简单.单元的连接,来模拟人类大脑的结构和思维方式的- -种可实现的物理系统,可通过计算机程序来模拟实现。

 采用物理可实现的系统来模拟生物神经网络的信息输入,模式加工,动作输出过程功能的系统

2. ANN基本原理

2.1 生物神经元模型

         ①细胞体:是神经元的主体,由细胞核、细胞质和细胞膜三部分构成。
        ②树突:是从细胞体向外延伸的许多突起的神经纤维这些突起称为树突。神经元靠树突接受来自其他神经元的输入信号,相当于细胞体的输入端。
        ③轴突:也称神经纤维,是由细胞体伸出的最长的条突起称为轴突,它用于传出细胞体产生的输出电化学信号。轴突相当于细胞的输出电缆,用于传出神经冲动、兴奋或抑制信号。
        ④突触:是神经元之间通过一-个神经元的轴突末梢和其他神经元的细胞体或树突进行通信连接,这种连接相当于神经元之间的输入输出接口,其接口称为突触。

        神经元是构成神经网络的最基本单元(构件),因此,首要任务是构造人工神经元模型。

 2.2 人工神经元模型

●人工神经元模型
        \theta _{j}:第j个神经元的阈值
        x_{i}:第i个(i= 1,2,..n) 输入信号
        \omega _{ij}:第i个输入信号与第j个神经元之间的连接权
        f():输出变换函数( 激活函数)
        y_{j}:第j个神经元的输出

第j个人工神经元模型的输入输出关系为:

 2.3 感知机与二分类问题

单层感知机:单层计算单元的神经网络( 只有一-个神经元)且激活函数为线性函数

 假设两个输入X1和X2;激活函数f为比例函数: f(s)=s;那么感知机输入输出关系为:
        y=\omega _{1}x_{1}+\omega _{2}x_{2}-\theta        ←神经网络分类模型

二分类问题:
        寻找合适的\omega _{1},\omega _{2},\theta            ←模型训练
        将已知数据实现较好的分类;例如y>0时为一类,y<0为另一类

 假设两个输入X1和X2;激活函数f为符号函数: f(s)=sgn(s)                      
        那么感知机输入输出关系为:y=sgn(\omega _{1}x_{1}+\omega _{2}x_{2}-\theta)

那么对于二分类问题:y=1时为一类,y=-1时为另一类f(s)=\left\{\begin{matrix} -1,s<0\\1,s\geq 0 \end{matrix}\right.

单层感知机的缺点:
        ●单层感知器是线性可分模型
        ●感知器的输出只能取-1或1 (0或1 ) .只能用来解决简单的分类问题

        历史上,Minsky正是利用这个典型例子指出了感知器的致命弱点,从而导致了70年代神经元网络的研究低潮(第一次低潮)。

        多层感知器相对于单层感知器,输出端从一个变到了多个;输入端和输出端之间也不光只有一层,可以有多层:输出层和隐藏层。

         例:如图是一个含有两个输入,三个感知机隐层神经元和一-个输出神经元的三层感知机网络,若取

 y1=sgn(2x1+2x2+1)
y2=sgn(-x1+0.25x2+0.8)
y3=sgn(0.75x1-2x2+1.4)
z= sgn(y1+y2+y3-2.5)        实现了非线性分类:

2.4 人工神经元模型的激活函数

 ●激活函数
        激活函数( Activation Function) : (亦称作用、传递、特性、活化、转移、刺激函数),实现神经元的输入和输出之间非线性化,因线性模型的表达能力不够,故加入非线性因素增强模型的表达能力。

                        

        例:如经典的分类问题,若采用线性模型进行拟合无法得到一一个满意的结果,所以选择更复杂的非线性化模型,得到了复杂的分类线

 典型的激活函数
(1)比例函数:f(s)=s       (2)符号函数:f(s)=\left\{\begin{matrix} -1,s<0\\1,s\geq 0 \end{matrix}\right.

 (3)饱和函数:f(s)=\left\{\begin{matrix} 1 ,s\geq\frac{1}{k} \\ sk,-\frac{1}{k}\leq s\leq \frac{1}{k}\\ -1,s< -\frac{1}{k}\end{matrix}\right.  

 (4)阶跃函数: f(s)=\left\{\begin{matrix} 0,s<0\\1,s\geq 0 \end{matrix}\right.(5)双曲函数:f(s)=\frac{1-e^{-\mu s}}{1+e^{-\mu s}}

 (6) Sigmoid函数: 
        ①Sigmoid函数的输出曲线两端平坦,中间部分变化剧烈。f(s)=\frac{1}{1+e^{-\mu s}}

         ②Sigmoid函数的- -阶导数:

         注:双曲函数和Sigmoid函数也称为S形函数,它们具有平滑和渐近性,并保持单调性,相对于其它类函数,Sigmoid函数最为常用

 3. BP神经网络基本原理

3.1 什么是BP神经网络

        单层感知机:模型中的激活函数多采用符号函数,因此输出值为二值量,主要用.于简单模式分类。
        多层感知机:模型通过感知器的组合以及采用S型激活函数,可输出值为0-1之间的连续值,可实现输入到输出的任意非线性映射

      定理:只要隐藏层神经元的个数充分多,且神经元激活函数为非线性函数的多层神经网络可逼近任何函数。

        BP神经网络=多层感知机+误差反向传播( Back Propagation)学习(训练)算法。即模型训练或者说连接权重的调整采用反向传播( Back Propagation)学习算法

3.2 误差反向传播学习算法

学习的过程:
        神经网络在外界输入样本的刺激下不断改变网络的连接权值,以使网络的输出不断地接近期望的输出。
学习的本质:
        对各连接权值的动态调整
学习规则(算法) :
        权值调整规则,即在学习过程中网络中各神经元的连接权变化所依据的一定的调整规则。
BP学习算法类型:
        监督学习一已知样本数据及其期望值(标签值)
BP学习算法核心思想:
        将输出误差以某种形式通过隐藏层向输入层逐层反传,将误差分摊给各层的所有神经元,修正各神经元权值
学习过程:
        信号正向传播>误差反向传播
BP学习算法步骤:

        1. 正向传播:
                输入样本- - -输入层- - -各隐层-- -输出层
        2. 判断是否转入反向传播阶段:
                若输出层的实际输出与期望的输出不符
        3. 误差反传
                误差以某种形式在各层表示一- - -修正各层单元的权值
        4. 终止条件
                网络输出的误差减少到可接受的程度进行到预先设定的学习次数为止
■网络结构( 三层结构)
        输入层有n个输入信号,隐含层有p个神经元,输出层有q个神经元

■变量定义
        ●输入向量:x=\left ( x_{1},x_{2},...,x_{n} \right )              输入层与隐含层的连接权值: w_{ih}
        ●隐含层输入向量: h_{i}=(h_{i_{1}},h_{i_{2}},...,h_{i_{p}})        隐含层与输出层的连接权值: w_{ho}
        ●隐含层输出向量: h_{o}=(h_{o_{1}},h_{o_{2}},...,h_{o_{p}})       隐含层各神经元的阈值: b_{h}
        ●输出层输入向量:y_{i}=(y_{i_{1}},h_{y_{2}},...,h_{y_{q}})        输出层各神经元的阈值: b_{o}
        ●输出层输出向量: y_{o}=(y_{o_{1}},y_{o_{2}},...,y_{o_{q}})       样本数据及个数:k = 1,2,..m
        ●期望输出向量:d_{o}=(d_{1},d_{2},...,d_{q})       激活函数: f()
●第一步,网络初始化
        ●给各连接权值分别赋一个区间(-1,1)内的随机数,设定误差函数e,给定计算精度值和最大学习次数M。

●第二步,随机选取第k个输入样本及对应期望输出

        x(k)=(x_{1}(k),x_{2}(k),...,x_{n}(k))                  d_{o}(k)=(d_{1}(k),d_{2}(k),...,d_{n}(k))
●第三步,计算隐藏层各神经元的输入和输出

■误差函数:        学习目标是最小化误差,即
        求满足.上式的各层神经元的连接权重(共n*p+p*q个)与阈值( 共p+q个)故,三层BP神经网络待确定的参数数量为(n+q+1)*p+q个

●第四步,利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数\delta _{o}(k)
其中,

●第五步,利用隐含层到输出层的连接权值、输出层的\delta _{o}(k)和隐含层的输出计算误差函数对隐含层 
各神经元的偏导数\delta _{h}(k)

●第六步,利用输出层各神经元的\delta _{o}(k)和隐含层各神经元的输出来修正连接权值w_{ho}(k)

●第七步,利用隐含层各神经元的\delta _{h}(k)和输入层各神经元的输入修正连接权。

●第八步,计算全局误差,
●第九步,判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到第三步,进入下一轮学习。
   3.3 小结

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐