神经网络这个词语在如今的机器学习和深度学习领域真的太普遍了,那神经网络到底是什么又能用来做什么呢,那我们主要分三个部分来简单介绍一下。
目录
5.1神经元模型
神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的的交互反应,这是目前比较广泛的一种说法。神经网络中最基本的成分是神经元模型,即上述定义中的简单单元。
“M-P”神经元模型中神经元接收到来自n个其它神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数处理以产生神经元的输出。
理想中的激活函数是如a所示的阶跃函数,将输入值映射为输出值“0”或“1”,“1”对应于神经元兴奋,“0”对应于神经元抑制,然而实际中的激活函数并没有理想中的这样取值,实际中的阶跃函数具有不连续、不光滑等不太好的性质,因此常用Sigmoid函数作为激活函数。
我们可以看到无论Sigmoid函数中的x取值无论多大或者多小的数,最后输出的函数值都是在0-1范围内。把许多个这样的神经元按一定的层次结构连接起来,就得到了神经网络。
5.2感知机与多层网络
感知机由两层神经元组成,输入层接受外界输入信号后传递给输出层,输出层是“M-P神经元“。
感知机神经元只有输出层神经元进行激活函数处理,即只拥有一层功能神经元,其学习能力非常有限,若两类模式是线性可分的,即存在一个线性超平面能将它们分开,如图a-c所示,则感知机的学习过程一定会收敛而求得适当的权向量w,否则感知机学习过程将会发生震荡,w难以稳定下来不能求得合适解,感知机不能解决图d所示的简单非线性问题。
要解决非线性可分问题,当然要比感知机神经元更加先进,考虑使用多层功能神经元,如下图中的简单两层神经元就能解决异或问题,与感知机所不同的是,输入层与输出层之间的隐层或隐含层神经元也是具有激活函数的功能神经元。
常见的神经网络是如下图所示的层级结构,每层神经元与下一层神经元全互联,神经元之间不存在同层连接,也不存在跨层连接,这样的神经网络通常称为多层前馈神经网络,输入层神经元接收外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出。输入层神经元仅接受输入,不进行函数处理,隐层与输出层包含功能神经元。神经网络的学习过程就是根据训练数据来调整神经元之间的连接权以及每个功能神经元的阈值;换言之,神经网络学到的东西,蕴含在连接权与阈值中,就是更新与调整连接权的权重与阈值的大小。
5.3误差逆传播算法
多层网络的学习能力更强,包含更多的功能神经元,想要训练多层网络需要更强大的学习算法,误差逆传播算法(简称BP,这个简称名字太出名了)是迄今最成功的神经网络学习算法。现实中使用神经网络时大多使用BP算法进行训练。
下图是一个拥由d个输入神经元、l个输出神经元、q个隐层神经元的多层前馈神经结构。