序言
关于神经网络的内容已经学习了很多,也发现了一些问题,而这些问题是因为基础不牢靠引起的,所以在此从头总结一下,为方便过渡到CNN网络,此节内容将详细写一下MP模型、单层感知器、多层感知器(BP)。
MP模型
如上图所示MP模型,MP模型能够简单处理一些分类任务,其中激活函数比较简单,是一个简单的阈值例如:
1、逻辑与:
首先定义好权重:w1=w2=2; 偏置:b=0;阈值:h=3,结果如下:
2、逻辑或:
权重:w1=w2=2; 偏置:b=0;阈值:h=1,结果如下:
3、逻辑异或:
能够发现没有一条直线能够将其分开,即是线性不可分的
注:如果两类样本可以用直线、平面或超平面分开,称为线性可分,否则为线性不可分
单层感知器
本质上与MP模型没有太大的区别,区别主要有两点:
1、输入可以不是离散型0/1
2、激活函数可以不再是简单的阈值函数。
单层感知器与前面的MP模型是一样的,都是只对线性可分问题具有分类能力。
为了从细节上得以理解,下面给出一个具体实例:
例:单层感知器训练分类
如下
优化器,这里的Y代表真实标签,y代表预测标签
激活函数:
初始权向量:
偏置:
学习率默认为
第一步:
由于预测值不等于真实值,所以需要更新参数,这里用到了梯度下降,关于梯度下降见我的另一篇博客为什么模型训练要采用梯度下降
更新权重:
第二步:
第三步:
接着重复上述步骤直至y将所有类别正确分开。
多层感知器(BP)
多层感知器在单层感知器的基础上引入了隐含层,能够解决非线性分类的问题。
下面是基于BP的三层前馈网络模型(为更加详细的理解我们对其中的误差反传进行了推导)
其中:
输入向量: X=(x1,x2,…,xi,…,xn)T
隐层输出向量: Y=(y1,y2,…,yj,…,ym)T
输出层输出向量: O=(o1,o2,…,ok,…,ol)T
期望输出向量:d=(d1, d2,…,dk,…,dl)T
输入层到隐层之间的权值矩阵:V=(V1,V2,…,Vj,…,Vm)
隐层到输出层之间的权值矩阵:W=(W1,W2,…,Wk,…,Wl)
首先我们先看输出层:
Ok:经过激活函数的最终输出
netk:最终输出
隐层:
yj:经过激活函数的隐含层输出
netk:隐含层输出
误差
之后的推导通过手写的形式介绍,如下:
如上图所示,BP学习算法中,各层权值调整公式形式上是一样的,均有三个因素决定,即学习率,本层输出的误差信号,以及本层输入信号。这就是BP感知机学习算法,理解透彻这一部分对之后的神经网络学习是很重要的。