LSTM系列的梯度问题

1.前沿

本文主要围绕NN、RNN、LSTM和GRU,讨论后向传播中所存在的梯度问题,以及解决方法,力求深入浅出。

2.神经网络开始

神经网络包括前向过程和后向过程,前向过程定义网络结构,后向过程对网络进行训练(也就是优化参数),经过多轮迭代得到最终网络(参数已定)
我们先来分析一个非常简单的三层神经网络:
这里写图片描述
数据集 D=(x1,y1),(x2,y2),...,(xm,ym) D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m )

2.1前向过程:

在输入层,假设该层节点数为d,也就是特征x的维度, xi x i 作为该层输出;

在隐藏层中,该层节点数为q,每个节点的输入 αh α h 就是上一层所有节点输出 xi x i 线性组合值,该节点的输出 bhαj b h 是 α j 激活值,这里假设使用sigmoid激活函数;

在输出层,该层节点数为l,也就是输出y的维度,同理,每个节点的输入 βj β j bh b h 的线性组合值,输出 yjβj y j ′ 是 β j 的 激 活 值 ,根据不同任务选择不同激活函数,比如二分类任务一般是用sigmoid激活函数把 yj[0,1] y j ′ 限 制 到 [ 0 , 1 ] 之 间 。

2.2后向过程

1)首先我们根据网络输出和真实Label来定义Loss函数,这里定义为简单的均方误差:

Ek=12lj=1(yjyj)2 E k = 1 2 ∑ j = 1 l ( y j ′ − y j ) 2

那么我们的目标就是最小化Loss,调整参数 w_{hj} 和 v_{ih} ,使得网络尽量去拟合真实数据。如何求最小值?那当然是求导了,根据loss函数对参数求导,然后往梯度下降的方向去更新参数,可以降低loss值。梯度主宰更新,如果梯度太小,会带来梯度消失问题,导致参数更新很慢;那如果梯度很大,又会造成梯度爆炸问题

2)对于输出层参数 wijEwhj w i j , E 对 w h j 进行链式求导,也就是,E先对节点的输出 yj y j ′ 求导,再对节点的输入 βj β j 求导,最后 whj w h j 求导,结果为:
Ewhj=Eyjyjβjβjwhj=(yjyj

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值