梅科尔工作室-深度学习第二节-BP神经网络

今天进入正式的深度学习的学习,在学习BP神经网络之前呢,我们需要了解一些概念:

学前准备

感知机

什么是感知机?

感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别。

感知机接收多个输入信号, 输出一个信号。 这里所说的“信号”可以想象成电流或河 流那样具备“流动性”的东西。 像电流流过导线, 向前方输送电子一样, 感知机的信 号也会形成流, 向前方输送信息。

知机学习旨在求出将训练数据进行线性划分的分离超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。

其中, x1,x2是输入信号,y是输出信号,w1,w2是权重,o是“神经元”,或者叫做节点

sigmoid函数

Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。 在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的激活函数,将变量映射到0,1之间。

公式:  \frac{1}{1+e^{-x}}{} 

 

知道了这些,可以让我们开始BP神经网络的学习啦~!


什么是BP神经网络

        是一种按误差逆传播算法训练的多层前馈网络,是应用最广泛的神经网络模型之一。 BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。

核心思想就是正向传播和误差的反向计算温故知新——前向传播算法和反向传播算法(BP算法)及其推导 - 知乎 (zhihu.com)

正向传播:

将上一层的输出作为下一层的输入,并计算下一层的输出,一直到运算到输出层为止。

反向计算:

允许来自代价函数的信息通过网络向后流动,以便计算梯度。

反向传播是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。

计算流程

 

BP神经网络的推导

 

 第一层是输入层,包含两个神经元i1,i2,和截距项b1;第二层是隐含层,包含两个 神经元h1,h2和截距项(偏置系数)b2,用于控制神经元被激活的容易程度,第三层 是输出o1,o2,每条线上标的wi是层与层之间连接的权重,激活函数我们默认为 sigmoid函数。

 sigmoid函数: \frac{1}{1+e^{-x}}{}

赋值如下

前向传播

输入层-->隐含层:

计算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 

 隐含层--->输出层:

计算输出层神经元o1和o2的值:

最后得到输出值为0.75136079和0.772628465

但这与实际值0.01和0.99还相差很远,所以需要反向计算,更新权值,重新计算输出 

反向计算

计算总误差

{E_{total}}^{} = \sum \frac{1}{2}\left ( target-output \right )^{2}

分别计算o1和o2的误差,总误差为两者之和:

Eo1 = 1/2(0.01-0.75136507)^2 = 0.274811083

同理 Eo2 = 0.023560026

{E_{total}}^{} = Eo1 + Eo2 = 0.298371109

隐含层---->输出层的权值更新

我们以w5为例,如果想要知道w5对整体的误差产生了多少影响,可以用整体误差啊对w5求偏导得到:

\frac{\partial E_{total}}{\partial w5} \doteq \frac{\partial E_{total}}{\partial out_{o1}} \cdot \frac{\partial out_{o1}}{\partial net_{o1}} \cdot \frac{\partial net_{o1}}{\partial w5}

 直观展示:

 计算\frac{\partial E_{total}}{\partial out_{o1}}

计算 \frac{\partial out_{o1}}{\partial net_{o1}}

 计算\frac{\partial net_{o1}}{\partial w5}

{w_{5}}^{new} = w5 - η *  \frac{\partial E_{total}}{\partial w5}  = 0.149780716

 其中 η为学习率(学习率 - 知乎 (zhihu.com)),设置为0.5,设置范围在0.01-0.8,

学习率如果过大,可能会使损失函数直接越过全局最优点,此时表现为loss过大或者为nan

学习率如果过小,损失函数的变化速度很慢,会大大增加网络的收敛复杂度,并且很容易被困在局部最小值或者鞍点

同理我们更新w2,w3,w4的权值

 

接着我们重新计算,得到数字0.015912196和0.984065734。与原输入(0.01,0.99)接近,说明效果很好。

如果效果仍不理想,可以继续荀兰,设置迭代次数(比如100);或者计算预测准确率,达到一定门限后停止训练。

最后要感谢陈义学长的讲解!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值