神经网络大概是当下最热门的技术之一了,很多没有学过计算机的同学们都知道深度神经网络之类的热词。但是神经忘光了实际上已经很早了,在1988年的时候,就已经提出了这个概念。而1943年,就已经有了M-P神经元模型。也就是说,科学技术的发展不是跃进式的,而是循序渐进的。
5.1 神经元模型
1943年,McMulloch and Pitts将神经元抽象为:
然后对输出再经过一个激活函数,得到最终结果。
这里的激活函数,理想的是一个分段函数:
后来,人们发现这个函数有若干个问题,就是没有一个可以用来后续计算的梯度,不连续,不光滑等等问题。于是人们采用了sigmoid函数:
而把这许多的神经元按照一定得层次结构组合起来就得到了神经网络。要是神经很多组合起来,不就是大脑了嘛~
5.2 感知机与多层神经网络
感知机由两层神经元组成。感知机可以实现逻辑与、或、非、运算:
其实,这里的参数可以用训练得到:
这里的感知机因为维度有限,其学习能力十分有限,能够解决的问题就是两类线性可分的问题,如图1-3,而图4则不可以:
如果要解决上图4的那个问题,就要使用多层感知机了,在多层感知机中,常见的一种是每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层链接,这样的结构通常称为“多层前馈神经网络”,即:
在输入层和输出层之间的一层神经元被叫做隐层。而一个神经网络学到的东西,就在权值和阈值中。
5.3 误差逆传播算法
上面我们也讲过,这个神经网络的“知识”,在权值和阈值中,那么怎么训练这个权值和误差呢?这里有一个著名的BP算法,即:误差逆传播算法。
对于BP网络及其符号,可以用一个图来表示:
计算的是误差逆传播,因此我们首先要对均方误差有个定义: