深度学习:知识回收(神经网络模型:BPNN原理)

Lecture 3 PLA and Lecture 4 Decision Tree

今天看tensorflow的时候,看到一个BPNN的例子,就顺便把BPNN的原理给看了一遍

OpenCV的书也到了,想尽快结束复习开始新的模块学习

哼~

BPNN

即是BP神经网络,是一种入门经典的神经网络模型,分为forward和backward的传播

神经网络

首先我们了解一下神经网络

分为输入层、隐藏层及输出层

下图的神经网络就包括一个输入层、两个隐藏层以及一个输出层

深度学习:知识回收(神经网络模型:BPNN原理)
下面举个例子并从左到右解释一下这个神经网络到底在做什么操作

假设输入层开始叫第一层,隐藏层1为第二层,隐藏层二为第三层,输出层为第四层

深度学习:知识回收(神经网络模型:BPNN原理)

  • 输入层 到 隐藏层1
    输入的是一个二维向量xn=i1=o1,在与中间的权重矩阵进行线性组合后,得到了隐藏层1的输入i2
    而在隐藏层1中对输入的i2用激活函数进行激活得到输出O2
    那么可以知道i2=W1*O1 设f为激活函数则O2=f(i2)
    深度学习:知识回收(神经网络模型:BPNN原理)
  • 那么同理从隐藏层1到2的权重即为W2,隐藏层2的输入为i3=W2*o2,输出为O3=f(i3)
  • 最后隐藏层2到输出层得到的输出y=W3*O3

那么对于神经网络的分析就到这

正向传播

对于正向传播来说,输入样本xn,从而一步一步通过神经网络得到输出结果y

那么y =f(w3f(w2f(w1*o1))) 即是通过该神经网络得到的结果

但是为了BP算法,我们需要再做一步对y的处理,O4 = loss_function(y)

令输出层也有一个损失函数进行计算,从y得到o4

  • 一般我们的loss_function 取 O4 = 1/2(L-y)^2
    其中L为训练集的label

BP算法

BP算法作为BPNN的核心算法,是对权重的一种更新算法

通过BP算法对之前的权重w1 2 3 进行更新优化

那么对于Wn来说,更新权重的方法也是利用梯度下降进行更新

深度学习:知识回收(神经网络模型:BPNN原理)
其中已知η(学习率)、O4(loss_function(y))那么重点来了,如何计算O4对于Wn的偏导

Wn权重更新推导

先对每个位置代表什么进行明确
深度学习:知识回收(神经网络模型:BPNN原理)

所以我们重点就是在计算O4对Wn的偏导

n = 3,也就是离输出层最近的时候

W3的权重该如何更新

深度学习:知识回收(神经网络模型:BPNN原理)
W3 = W3 - η△W3

同理△W2

深度学习:知识回收(神经网络模型:BPNN原理)

那么△W1

深度学习:知识回收(神经网络模型:BPNN原理)
至此权重Wn的更新就讲完了

剩下的就是将样本带入不断的进行正向和BP传播即可完成对权值w的更新从而进行预测

BPNN神经网络的原理也算是讲完了

最后

还有一点小问题,我在W1的公式推导中对矩阵的位置进行了调换,但是不知道其真正原理

只是为了将矩阵凑成2*2

如果有小伙伴了解该情况的话

可以评论戳我一下

希望能像你请教一番,谢谢大家的支持~

深度学习:知识回收(神经网络模型:BPNN原理)

上一篇:malloclab的一些思路


下一篇:【车牌识别】基于matlab GUI BP神经网络之车牌识别(带语音播报)【含Matlab源码 668期】