神经网络(Neural Network)
爆发要素:大数据、计算能力(GPU)、算法
单层感知器

输入节点:x1,x2,x3
输出节点:y
权向量:w1,w2,w3
偏置因子:b
激活函数:,上图中为
感知器学习规则:
,
,
是网络输出,
是
函数
,
学习率,
表示正确的标签,
与
取值为
, (权值改变的情况)
eg:

设
step1:
step2:
step3:
学习率:取值一般取0-1之间,太大容易造成权值调整不稳定,太小则权值调整太慢,迭代次数太多。
模型收敛条件:误差小于某个预先设定的较小的值
两次迭代之间的权值变化已经很小
设定最大迭代次数,当迭代超过最大次数就停止(常用)
例:假设平面坐标系上有4个点,(3,3),(4,3)这两个点的标签为1,(1,1),(0,2)这两个点的标签为-1,构建神经网络来分类。
思路:已知要分类的数据是2维数据,所以只需要2个输入节点,可把偏置值也设为一个节点,即3个输入节点。即,输入数据数据有4个(1,3,3),(1,4,3),(1,1,1),(1,0,2)数据对应标签为(1,1,-1,-1),初始化权值w0,w1,w2,取-1-1的随机数,学习率(learning rate)设置为0.11,激活函数为sign函数
代码见——九、神经网络代码
线性神经网络
感知器的激活函数只能输出两种可能的值,而线性神经网络的输出可以取任意值,其激活函数是线性函数。线性神经网络采用Widrow-Hoff学习规则,即LMS(Least Mean Square)算法来调整网络的权值和偏置。
线性神经网络在结构上与感知器非常相似,仅是激活函数不同,在训练模型时把原来的sign函数改成了purelin函数:y=x。
激活函数(Activation Function)
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中
常见激活函数见:附、常见激活函数 - 简书
Delta学习规则
学习规则,也可以称为连续感知器学习规则,是一种利用梯度下降法的一般性的学习规则。
代价函数:
其中y是预测值,误差是权向量
的函数,想使得
最小,
应与误差的负梯度成正比,即
,
解决异或问题
madaline可以用一种间接的方式解决线性不可分的问题,方法是用多个线性函数对区域进行划分,然后对各个神经元的输出做逻辑运算。


线性神经网络解决异或不可分问题的另一个方法是,对神经元添加非线性输入,从而引入非线性成分,这样做会使等效的输入维度变大,如图:

BP神经网络(Back Propagation Neural Network)
BP算法:
(Delta学习规则)
(
第
层学习信号,
输出层学习信号,
第
层权值,
第
层输入信号)
激活函数常使用ReLu,因为
调整权值的原则是使误差不断的减小,因此应使权值的调整量与误差的梯度下降成正比
注:激活函数的取值尽量不要选取趋近饱和的值,否则几乎学不到东西
隐藏层太高会导致梯度消失的问题
导数不能大于1,否则会导致梯度爆炸问题
W的初始化采用正则初始化方式更好
使用sigmoid或tanH激活与标准初始化方式,效果较差,收敛慢。会收敛到一个局部最小值中
使用softsign激活与正则初始化,比较健壮
tanH使用正则初始化,效果也不错,最好使用预训练,pre-training