人工神经网络基础

1、激励函数

(1)将可能的无限域变换到指定的有限域进行输出

(2)类似于生物神经元的非线性转移特性(若是线性,则若干个线性组合依旧能用一个线性模型表示)

(3)常用的激励函数:

①斜坡函数

②阶跃函数

③符号函数

④sigmoid函数

⑤双曲正切函数

* 更常用的激励函数LeRU(2012年提出),优点

①本质上是分段线性模型,前向计算非常简单,无需指数之类的操作

②求偏导也简单,反向传播梯度,无需指数或除法之类的操作。

③不容易发生梯度消失或者是发散问题

④ReLU关闭了左边,使得很多隐层输出为0,起到了L1正则化的作用,在一定程度上缓解过拟合。


2、拓扑结构:单层网络、多层网络、前馈网络、反馈网络

*注:(1)理论上可以有无限多层

        (2)理论上单隐层即可实现任意复杂的非线性函数。但是需要的节点可能是指数级的。


单层神经网络(单层感知器)

1、网络描述:加权和(加偏置)输入激活函数(无限域到有限域)后输出。

2、分类问题:

(1)两类问题:一个输出节点(1\-1)

(2)多类问题:输出节点数与类别数相同[0,0,...,1,...,0],输出是第几类那么第几个输出节点就是非零。

3、学习任务:

给定训练样本和相应目标值,确定网络中所有连接的权重。

4、模型训练:

线性单元:激励函数为线性且处处可微

线性单元训练:梯度下降法(损失函数(二次函数)对权重求导,需要自己设置下降步长,倒数即为下降的方向)

随机梯度下降(单样本)更新方法:一个样本计算代价比较低。但问题是随机选取样本,每个样本难度含有噪声的程度不一样,每次更新可能让梯度方向突变比较厉害,不够稳定,震荡比较厉害。最终结果不可靠。

梯度下降(批量)更新方法:每次是整个数据集累加到一起,所以结果相对稳定。

梯度下降(batch)更新方法:每次随机选取一个小batch。


多层神经网络:

1、误差反向传播算法

2、网络设置:

参数:(1)初始权重:从均匀分布中随机选择初始值。或特定方法(caffe):MSRA、xavier

(2)学习率:从大到小逐渐降低(开始的时候步长大,越接近目标步长越小)

(3)权重衰减:防止网络过拟合

(4)附加冲量项:使轨迹更平滑

3、存在问题:

无法训练:

(1)网络麻痹:加权和处于sigmoid饱和区,导致求得的梯度小,权重调整慢

(2)梯度消失和梯度爆炸

(3)局部最优解:损失函数高度非线性(整个网络是非线性系统,肯定有很多的局部最优解),因此不可避免,只能采取一些措施来尽可能得到更好的局部最优解(采用不同的初始化方式)

训练时间过长:

初始值或学习率设置不合适。