机器学习笔记(五) 神经网络

时间:2022-12-25 15:31:06

一、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算法进行训练。