神经网络是个非常大的科目,本篇文章介绍的是最简单的模型
前馈神经网络的代表: BP神经网络,rbf神经网络

前馈神经网络是一种最简单的神经网络,采用单向多层结构,各神经元细胞分层排列,
每个神经元细胞只与前一层的神经元细胞相连,接收前一层的输出,并输出给下一层,各层间没有反馈。
前馈神经网络是最简单的网络,因为他没有反馈,反馈是用来自我学习,也就是参数的自我修正,如果神经网络网络没有这个自我学习的过程。那么这个也就不能称之为人工智能。
前馈网络包括三类节点:
■ 输入节点(Input Nodes):外界信息输入,不进行任何计算,仅向下一层节点传递信息
■ 隐藏节点(Hidden Nodes):接收上一层节点的输入,进行计算,并将信息传到下一层节点
■ 输出节点(Output Nodes):接收上一层节点的输入,进行计算,并将结果输出
输入层和输出层必须有,隐藏层可以没有,即为单层感知器,隐藏层也可以不止一层,有隐藏层的前馈网络即多层感知器。
从神经元细胞说起
人的大脑拥有数以亿计的神经元细胞。他们彼此互相相连,来给大脑传递信息,帮助人类做出决策,分类事物,以及各种运算等。
神经元细胞的结构,主要是由3部分构成:
<1> 中间是一个细胞体
<2> 一头长出许多的用来接收其他的神经元细胞传递过来的信号的树突
<3> 另一头长出的一根长长的用来给别的神经元细胞传递信号的轴突。
轴突的末端又分叉处许多树杈,连接到其他的神经元的树突或者轴突上。

当大脑在运作思考的时候,神经元细胞上的各个树突接收到其他的神经元发出的刺激脉冲,
这些脉冲会持续的在神经元内叠加,一旦脉冲的强度达到一个临界数值以后,这个神经元就会产生动作电位,沿着轴突发送电信号,并且传递给别的神经元细胞。
在了解神经网络之前我们先来了解下什么是感知机
感知机在上世纪50年代末和60年代初由科学家Frank Rosenblatt取得了进展,灵感来自早期又Warren McCulloch与沃尔特·皮兹的神经研究工作。
先看下感知机是如何工作的:

一个简单的4层神经网络
现实工作中我们所使用的神经网络模型,往往层次很深,很复杂。为了理解方便,我们从一个简单的四层神经网络来理解。能够更加容易的方便我们理解神经网络。
我们来看一个简单的四层网络模型:

其中每个小圆圈代表一个感知机模型。
1. 第一层称之为输入层,因为它直接跟输入数据相连。
2. 第二和第三层称之为隐藏层
3. 第四层为输出层。
第一层网络的各个神经元细胞接收了输入信号,然后通过自身的神经体加权求和以后,输出给下一层神经元。
第二层的神经网落的神经单元的输入来自前一层的神经网络的输出。以此类推。
最后经过中间的神经网络的计算以后,将结果输出到输出层。得出最后的结果。
这里的输出层我们只让结果输出为一个结果,也可以输出多个结果。
一般的分类用途的神经网络,最后会输出跟label相对应个数的输出维度。
下面我们来讲一下激活函数
所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。
为什么要使用激活函数?
在说激活函数之前,我们先要搞明白的一件事,为什么要使用激活函数,不用的话有什么问题。
在之前的感知机模型中,我们可以看到,神经元细胞对待输入参数是以加权求和的方式来进行运算的。
如果我们不使用激活函数,那么我们输出的结果,应该是输入参数的线性叠加的结果。
一个神经元的输出结果又作为下一层神经网络中神经元细胞的输入参数,他也进行同样的操作,因此最后的整个网络的输出也是线性的。
但是我们的生活中的实际问题往往是非线性的,
因此,为了能够适应非线性的空间,我们在输出的结果之前,在最后的输出层加了个一个非线性的函数,我们称之为激活函数,将网络的线性结果,映射到非线性的空间内。

激活函数也像大脑的神经元细胞一包一样,会有激活跟抑制。
当输入激活函数的值到达一定的区间内,激活函数,会进行输出,否则,会抑制这些值的输出。
这个概念比较抽象,下面我们举例一些常用的激活函数,就可以看到,这些激活函数在哪些部分是对输入进行了抑制,哪些部分进行了激活。
常用的激活函数:Sigmoid()函数,tanh()函数,Relu()函数
