一、神经元模
1.M-P模型
神经网络中有许多神经元,每个神经元可以有多个输入,如图中的神经元有n个输入x,每个输入x对应的w是权重,通过计算获得神经元的总体输入。
w是权值,x是输入(x是向量),θ是偏置。
net是总体输入,对于单个神经元w是向量,但是如果一层中存在多个神经元w就是权值矩阵。
权值矩阵:每一行对应的是一个神经元的权值,一层中有几个神经元就会有几行。
每一层中神经元的输入是一样的,可以是初始输入,也可以是上一层神经元的输出(一个神经元有一个输出)。
y是传输函数,可以根据情况自由选取,但它的输入是net,也就是自变量取net,传输函数的值就是神经元的输出。
例如我们希望神经元的输出处于0,1之间,可以选择sgn函数,又希望输出是连续的,那么就选择sigmoid函数
2.单层多个神经元
二、感知机与多层网络
1.感知机
感知机是单层神经网络,同时也只能处理线性问题,例如书上的逻辑符号。
假设我们的输出(label)为1和-1且选择的传输函数是阶跃函数,我们想拟合一个基于感知机的模型,计算方法如下:
一样使用梯度下降法。
L是目标函数,y就是label,wx+b是传输函数的输入,那么为什么要它们相乘?
选择的传输函数是阶跃函数,注意图中的坐标轴应该在中间。
那么wx+b是正输入就是1,是负输出就是-1,相当于wx+b就是预测值。
也就是只有预测值和label相同时目标函数大于0,否则小于0。
η 是学习率,只要有误差就不断更新参数。
2.多层神经网络
多层神经网络就是多层感知机组合。相对于单层神经网络它可以进行更加复杂的分割。
BP算法
BP算法用来训练多层神经网络,上述感知机中的算法只能针对单层的神经网络。
同样BP算法也是基于梯度下降法。
这是一个两层神经网络。
β 是神经元的总体输入,所以 f(β-θ) 是传输函数,其中θ是是偏置,f 选择的是sigmoid函数,y 是实际输出。
同样需要有一个目标函数才能进行梯度下降,这里的E是实际输出和label间差的平方和。
求偏导数,实际上我们需要求解的参数是权值w和偏置θ,所以我们需要分别求它们的偏导,这里是求解w的偏导。η是学习率,根据情况赋值。
链式法则求解导数。
![请添加图片描述](https://img-blog.csdnimg.cn/cc2fb348c55643aebf5f932ba8d70c20.png
简单的求导能得到第二行,根据上述图中的公式,就能得到下图中的第三行。
将上述两张图中的公式带入,最终得到结果:
这就是每次迭代的差值。
- BP算法是递归往回得到新的权值的算法。上一层的权值会影响下一层的权值,上一层的输入就是下一层的输出。
所以在计算下一层的权值v 时,e 对应上一层的g ,同样还是链式求偏导,我们要求目标函数E 关于权值v 的偏导数,那么同样∂E/∂b(b这时候对应y,是输出)× ∂b/∂α(α是总输入)× ∂α/∂v。
可以发现最终结果与上一层的权值w有关。
- 一层的每个神经元都需要进行这样的计算,然后下一层再计算,一步一步返回到最初。