一、M-P神经元模型
神经元接收来自其他n个神经元的输入,每个输入都有一个权值,神经元再将所有输入的总和与阈值相比较,最终通过激活函数处理来产生神经元的输出。
理想的激活函数是阶跃函数(sgn(x)),但是阶跃函数不连续不光滑,所以实际常常应用sigmoid函数作为激活函数。
二、感知机与多层网路
(1)感知机(perceptron)由两层神经网络组成,由输入层和输出层组成
感知机的权值更新:
感知机只拥有一层功能神经元(functional neuron),只能解决线性可分的问题。
(2)多层前馈神经网络
有输入层,隐层和输出层组成。层与层之间全相连,同层之间无相连,不存在跨层相连。
神经网络学到的东西,就是权值和阈值
三、误差逆传播算法(error BackPropagation,简称BP)
算法流程:
(1)在(0,1)之间初始化所有的权值和阈值
(2)根据当前参数计算出当前样本的输出
(3)计算误差
(4)根据梯度下降法计算出输出层的梯度项,隐层的梯度项
(5)更新权值和阈值
(6)不断进行(2)-(5)直到达到停止条件(误差小于一定的值)
上述是标准BP算法,每次只针对一个样本进行训练,参数更新非常频繁,并且不同样本之间可能存在参数抵消的情况。
累积BP算法是直接进行累计误差最小化,参数更新频率低得多,但是当误差下降到一定程度时,进一步下降会非常缓慢。
BP算法训练的神经网络很容易出现过拟合的情况。可以采取两种策略
(1)早停,当训练误差下降但验证误差增加时便停止训练。
(2)正则化,在误差目标函数中增加一个描述网络复杂度的部分,将网络复杂度与经验误差进行折中。
四、局部极小与全局最小。
梯度下降法会得到局部极小,但不一定是全局最小。为了全局最小,一般采用一下方法
(1)以多组不同的参数初始化多个不同的神经网络,最终选区误差最小的网络。
(2)模拟退火,以一定的概论接受比当前解更差的结果
(3)遗传算法,计算梯度时加入了变异因素
(4)随即梯度下降,即使陷入局部极小,计算出的梯度不为0
五、深度学习
网络很深时,使用标准BP算法训练会导致误差分散,从而不能收敛到稳定状态。常用以下方法训练深度网络。
(1)无监督逐层训练(unsupervised layer-wise training)
每次训练一层,称为预训练,然后再BP进行微调
(2)权值共享
比如卷积神经网络,分为输入层,卷积层,采样层,连接层和输出层
比如32*32的图像作为输入,用6个5*5的卷积核对输入层进行卷积,从而形成6个28*28的神经元矩阵,同一个神经元矩阵的权值是相同的,形成卷积层,然后对卷积层进行2*2的采样(pooing),形成6个14*14的采样层,然后再卷积形成16个10*10的卷积层,采样形成16*5*5的采样层,卷积成120的向量,全连接形成84维的连接层,最终形成输出层。
CNN可以采用BP算法进行训练。