Lecture 3 PLA and Lecture 4 Decision Tree
序
今天看tensorflow的时候,看到一个BPNN的例子,就顺便把BPNN的原理给看了一遍
OpenCV的书也到了,想尽快结束复习开始新的模块学习
哼~
BPNN
即是BP神经网络,是一种入门经典的神经网络模型,分为forward和backward的传播
神经网络
首先我们了解一下神经网络
分为输入层、隐藏层及输出层
下图的神经网络就包括一个输入层、两个隐藏层以及一个输出层
下面举个例子并从左到右解释一下这个神经网络到底在做什么操作
假设输入层开始叫第一层,隐藏层1为第二层,隐藏层二为第三层,输出层为第四层
- 输入层 到 隐藏层1
输入的是一个二维向量xn=i1=o1,在与中间的权重矩阵进行线性组合后,得到了隐藏层1的输入i2
而在隐藏层1中对输入的i2用激活函数进行激活得到输出O2
那么可以知道i2=W1*O1 设f为激活函数则O2=f(i2)
- 那么同理从隐藏层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来说,更新权重的方法也是利用梯度下降进行更新
其中已知η(学习率)、O4(loss_function(y))那么重点来了,如何计算O4对于Wn的偏导
Wn权重更新推导
先对每个位置代表什么进行明确
所以我们重点就是在计算O4对Wn的偏导
n = 3,也就是离输出层最近的时候
W3的权重该如何更新
W3 = W3 - η△W3
同理△W2
那么△W1
至此权重Wn的更新就讲完了
剩下的就是将样本带入不断的进行正向和BP传播即可完成对权值w的更新从而进行预测
BPNN神经网络的原理也算是讲完了
哼
最后
还有一点小问题,我在W1的公式推导中对矩阵的位置进行了调换,但是不知道其真正原理
只是为了将矩阵凑成2*2
如果有小伙伴了解该情况的话
可以评论戳我一下
希望能像你请教一番,谢谢大家的支持~