前馈神经网络

前馈神经网络(全连接神经网络)

1、 概念及组成

前馈神经网络:每层神经元与下层神经元相互连接,神经元之间不存在同层连接,也不存在跨层连接。

组成:输入层、隐藏层、输出层
常用神经元:M-P神经元

图中f函数为激活函数, θ \theta θ为阈值, w T x w^Tx wTx的值超过阈值,激活函数被激活,通过激活函数处理产生神经元的输出。

2、 常见的激活函数

Sigmoid函数、tanh函数、ReLu函数
激活函数常有的性质:

  • 非线性
  • 可微性
  • 单调性
  • f ( x ) ≈ x f(x)\approx x f(x)x
  • 输出值范围
  • 计算简单
  • 归一化 :要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内
sigmoid函数

双曲正切函数(tanh函数)

ReLU函数

3、训练

没有隐藏层的神经网络,称为感知机。感知机的训练过程见下:
给定训练数据集,权重 w i ( i = 1 , 2 , 3 , . . . n ) w_i(i=1,2,3,...n) wi(i=1,2,3,...n)、阈值 θ \theta θ可以通过学习得到。通常情况下阈值作为一个固定的输入 归并到权重中,所以对应的连接权重为 w n + 1 w_{n+1} wn+1。则,问题转化为通过训练数据集得到权重的过程。对于训练样例 ( x , y ) (x,y) (x,y),假定模型的输出值为 y ^ \hat{y} y^,那么在学习的过程中权重则这样调整:
w i = w i + △ w i w_i=w_i+\triangle w_i wi=wi+wi
△ w i = η ( y − y ^ ) x i \triangle w_i=\eta(y-\hat y)x_i wi=η(yy^)xi
η \eta η称为学习率,取值范围为(0,1)。
对于包含隐藏层的神经网络,通常使用BP算法(误差逆传播算法)进行训练:
BP算法基于梯度下降的策略,以目标的负梯度方向对参数进行调整。BP算法的目标是:最下化训练集D的累计误差: E = 1 m ∑ k = 1 m E k E=\frac{1}{m}\sum\limits_{k=1}^{m}E_k E=m1k=1mEk
假定隐藏层和输出层的激活函数为sigmoid函数。各项参数设定如下:

其中 g i g_i gi为:输出层神经元的梯度项。同理,由链式法则可以推出:

上式 e h e_h eh称为隐层神经元的梯度项,每个参数的更新公式为: v = v + △ v v=v+\triangle v v=v+v
BP算法的执行过程见下:

4、总结

BP神经网络易导致过拟合,可使用两种策略:**
1、早停: 将数据分为训练集和验证集,训练集用来训练参数(计算梯度、更新连接权、阈值),验证集用来估计误差。训练集误差降低,验证集误差升高停止训练。
2、正则化: 在误差目标函数中增加一个用于描述网络复杂度的部分,来防止过拟合。例如: E = λ 1 m ∑ k = 1 m E k + ( 1 − λ ) ∑ i w i 2 E=\lambda\frac{1}{m}\sum\limits_{k=1}^{m}E_k+(1-\lambda)\sum\limits_{i}{w_i}^2 E=λm1k=1mEk+(1λ)iwi2,此时训练偏好较小连接权和阈值,使网络更加光滑,从而对过拟合有所缓解。其中 λ ∈ ( 0 , 1 ) \lambda\in(0,1) λ(0,1)用于经验误差与网络复杂度的折中,常通过交叉验证法来估计。
关于局部最优和全局最优的解决办法:
1、使用多组不同的初始参数初始化网络,先当与从多个不同点进行搜索。从结果中,找出更接近全局最小的结果。
2、使用随机梯度下降。

来源:周志华《机器学习》

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务