神经网络

神经元模型

689938-20181016102325507-1637524384.png
如上图,神经元接收到来自\(n\)个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数处理以产生神经元的输出。

感知机

对训练样例\((x,y)\),若当前感知机的输出为\(\hat{y}\),则感知机权重将这样调整:
\[w_i \leftarrow w_i +\Delta w_i,\\ \Delta w_i=\eta(y-\hat{y})x_i \]
其中,\(\eta\in (0,1)\)称为学习率,\(w_i\)为权重。若感知机对训练样例\((x,y)\)预测正确,则感知机不发生变化;否则将根据错误的程度进行权重调整。

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

神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”以及每个功能神经元的阈值。

BP算法(反向传播算法)

BP网络
给定训练集\(D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\},\ x_i\in R^d,\ y_i\in R_l\),即输入示例由\(d\)个属性描述,输出\(l\)维实值向量。

对训练集,假定神经网络的输出为\(\hat{y_k}=(\hat{y}_1^k,\hat{y}_2^k,\cdots,\hat{y}_l^k)\),即
\[\hat{y}_j^k=f(\beta_j-\theta_j)\]
其中,\(\theta_j\)表示输出层第\(j\)个神经元的阈值。

均方误差为:
\[E_k=\frac{1}{2}\sum_{j=1}^l(\hat{y}_j^k-y_j^k)^2\]

BP是一个迭代算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计。BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整,有
\[\Delta w_{hj}=\eta \frac{\partial E_k}{\partial w_{hj}}\]
由于\(w_{hj}\)先影响到第\(j\)个输出层神经元的输入值\(\beta_j\),再影响到其输出值\(\hat{y}_j^k\),然后影响到\(E_k\),有:
\[\frac{\partial E_k}{\partial w_{hj}}=\frac{\partial E_k}{\partial \hat{y}_j^k}\cdot \frac{\hat{y}_j^k}{\partial \beta_j}\cdot \frac{\beta_j}{\partial w_{hj}}\]
对于Sigmoid函数,有\(f'(x)=f(x)(1-f(x))\)
其中,
\[g_j=-\frac{\partial E_k}{\partial \hat{y}_j^k}\cdot \frac{\hat{y}_j^k}{\partial \beta_j}\\ =-(\hat{y}_j^k-y_j^k)f'(\beta_j-\theta_j)\\ =\hat{y}_j^k(1-\hat{y}_j^k)(y_j^k-\hat{y}_j^k)\]
\[\frac{\beta_j}{\partial w_{hj}}=b_h\]
因此,\[\Delta w_{hj}=\eta g_j b_h\]

类似可得:
\[\Delta \theta_j=-\eta g_j\\ \Delta v_{ih}=\eta e_h x_i\\ \Delta \gamma_h=-\eta e_h\]
其中,
\[e_h=-\frac{\partial E_k}{\partial b_h}\cdot \frac{\partial b_h}{\partial \alpha_h}\\ =-\sum_{j=1}^l \frac{\partial E_k}{\partial \beta_j}\cdot \frac{\partial \beta_j}{\partial b_h}f'(\alpha_h - \gamma_h)\\ =\sum_{j=1}^lw_{hj}g_jf'(\alpha_h - \gamma_h)\\ =b_h(1-b_h)\sum_{j=1}^lw_{hj}g_j\]

BP算法

BP算法的目标是要最小化训练集\(D\)上的累计误差:\[E=\frac{1}{m}\sum_{k=1}^mE_k\]

标准BP算法:每次仅针对一个训练样例更新连接权和阈值。

BP神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升。解决策略:

  1. “早停”(early stopping):将数据分成训练集和验证集,训练集用来计算梯度,更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。
  2. “正则化”(regularization):在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和,仍令\(E_k\)表示第\(k\)个样例上的误差,\(w_i\)表示连接权和阈值,则误差目标函数为:
    \[E=\lambda \frac{1}{m}\sum_{k=1}^mE_k+(1-\lambda)\sum_iw_i^2\]
    其中,\(\lambda \in (0,1)\)用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。

扩展

多隐层神经网络难以直接用经典算法(日标准BP算法)进行训练,因为误差在多隐层内逆传播时,往往会“发散”而不能收敛到稳定状态。

转载于:https://www.cnblogs.com/wjq-Law/p/9796484.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值