感知机
感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别。
感知机接收多个输入信号, 输出一个信号。 这里所说的“信号”可以想象成电流或河 流那样具备“流动性”的东西。 像电流流过导线, 向前方输送电子一样, 感知机的信 号也会形成流, 向前方输送信息。
感知机学习旨在求出将训练数据进行线性划分的分离超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。
以上图来说感知机分为三层,图中从左至右依次分为输入层,隐含层和输出层,其中,x1,x2是输入信号,y是输出信号,w1,w2是权重,o是“神经元”,或者叫做节点
BP神经网络
BP神经网络是一种按误差逆传播算法训练的多层前馈网络,是应用最广泛的神经网络模型之一。 BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。
允许来自代价函数的信息通过网络向后流动,以便计算梯度。反向计算是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数(代价函数)
BP神经网络计算流程:
BP神经网络的推导:
首先进行赋值
正向传播
输入层到隐含层:
计算h1的输入加权和:
neth1 = w1* i1 + w2 * i2 + b1 * 1
= 0.15*0.05+0.2*0.1+0.35*1=0.3775
输出:
outh1 = 1/1+e^-0.3775 = 0.593269992
同理,计算出h2的输出 o2
outh2 = 0.596884378
隐含层到输出层:
如图所示,所得结果与实际值0.01和0.99还相差很远,所以需要反向计算,更新权值,重新计算输出
反向计算
计算总误差:
所用式子如下
分别计算o1和o2的误差,总误差为两者之和:
Eo1 = 1/2(0.01-0.75136507)^2 = 0.274811083
同理 Eo2 = 0.023560026
故
隐含层到输出层的更新:
以w5为例,如果想要知道w5对整体的误差产生了多少影响,可以用整体误差啊对w5求偏导得到:
最后得 =0.149780716
同理更新权值
接着重新计算,得到数字0.015912196和0.984065734。与原输入(0.01,0.99)接近,说明效果很好。若不理想,只需重新迭代直到接近理想值即可