深度学习—BP神经网络

感知机

感知机(perceptron)是神经网络的基础结构,是学习神经网络,深度学习的基础。

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

深度学习—BP神经网络_第1张图片

 

BP神经网络简介

BP(BackPropagation) 算法是神经网络深度学习中最重要的算法之一,是一种按照误
差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络模型之一 。了
解BP算法可以让我们更理解神经网络深度学习模型训练的本质,属于内功修行的部
分。
BP算法的核心思想是:学习过程由信号的正向传播误差的反向传播两个过程组
成。


正向传播:输入层的神经元负责接受外界发来的各种信息,并将信息传递给中间层
神经元,中间隐含层神经元负责将接收到的信息进行处理变换,根据需求处理信息,
实际应用中可将中间隐含层设置为一层或者多层隐含层结构,并通过最后一层的隐含
层将信息传递到输出层,这个过程就是BP神经网络的正向传播过程。

深度学习—BP神经网络_第2张图片
反向传播:当实际输出与理想输出之间的误差超过期望时,就需要进入误差的反向
传播过程。它首先从输出层开始,误差按照梯度下降的方法对各层权值进行修正,并
依次向隐含层、输入层传播。通过不断的信息正向传播和误差反向传播,各层权值会
不断进行调整,这就是神经网络的学习训练。当输出的误差减小到期望程度或者预先
设定的学习迭代次数时,训练结束,BP神经网络完成学习。

 深度学习—BP神经网络_第3张图片

 

BP神经网络的推导

 深度学习—BP神经网络_第4张图片

第一层是输入层,包含两个神经元i1,i2,和截距项b1;

第二层是隐含层,包含两个神经元h1,h2和截距项(偏置系数)b2,用于控制神经元被激活的容易程度;

第三层是输出o1,o2,每条线上标的wi是层与层之间连接的权重,激活函数我们默认为sigmoid函数。
 sigmoid函数

深度学习—BP神经网络_第5张图片

 损失函数

深度学习—BP神经网络_第6张图片

用数据推导 

        图中为0.xx

深度学习—BP神经网络_第7张图片

正向传播

1. 输入层—>隐含层

深度学习—BP神经网络_第8张图片

 2. 隐含层—>输出层

深度学习—BP神经网络_第9张图片

输出值为[0.75136507 ,0.772928465],与实际值[0.01 , 0.99]相差还很远,对误差进行反向传播,更新权值,重新计算输出。
 

误差反向传播

1. 计算总误差


        总误差:

        但是有两个输出,所以分别计算o1和o2的误差,总误差为两者之和:深度学习—BP神经网络_第10张图片
 

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

        梯度下降
 

 (11条消息) 方向导数和梯度_wolenski的博客-CSDN博客_方向导数和梯度

深度学习—BP神经网络_第11张图片 

 误差反向传播图解
深度学习—BP神经网络_第12张图片

 深度学习—BP神经网络_第13张图片

3. 输入层---->隐含层的权值更新
 

        方法其实与上面说的差不多,但是有个地方需要变一下,在上文计算总误差对w5的偏导时,是从out(o1)---->net(o1)---->w5,但是在隐含层之间的权值更新时,是out(h1)---->net(h1)---->w1,而out(h1)会接受E(o1)和E(o2)两个地方传来的误差,所以这个地方两个都要计算。

深度学习—BP神经网络_第14张图片 

如此更新权值,再重新计算,不停地迭代。

在这个例子中第一次迭代之后,总误差E(total)由0.298371109下降至0.291027924。

迭代 10000次后,总误差为0.000035085,输出为[0.015912196,0.984065734] (原输入为 [0.01,0.99]),证明效果还是不错的。 

训练到什么时候结束:

        设置最大迭代次数,比如使用数据集迭代100次后停止训练

        计算训练集在网络上的预测准确率,达到一定门限值后停止训练

 

 

你可能感兴趣的:(深度学习,神经网络,机器学习)