LSTM/梯度消失/激活函数

LSTM

通过引入遗忘门,输入门,输出门,缓解了RNN的梯度消失现象
三个门控制对前一段信息(主线遗忘)、输入信息(主线补给)以及输出信息的记忆状态,进而保证网络可以更好地学习到长距离依赖关系。
在这里插入图片描述遗忘门:通过判断当前输入的重要程度来决定对之前信息cell的保留度,遗忘多少历史信息
F t = s i g m o i d ( W x f X + W h f H t − 1 ) F_t=sigmoid(W_{xf}X+W_{hf}H_{t-1}) Ft=sigmoid(WxfX+WhfHt1)
输入门:通过判断当前输入的重要程度来决定对输入信息的保留度,补给多少当前信息
I t = s i g m o i d ( W x i X + W h i H t − 1 ) I_t=sigmoid(W_{xi}X+W_{hi}H_{t-1}) It=sigmoid(WxiX+WhiHt1)
输出门:通过判断当前输入的重要程度来决定输出有多少来自记忆细胞
O t = s i g m o i d ( W x o X + W h o H t − 1 ) O_t=sigmoid(W_{xo}X+W_{ho}H_{t-1}) Ot=sigmoid(WxoX+WhoHt1)
候选细胞单元: t a n h ( W x c X + W h c H t − 1 ) tanh(W_{xc}X+W_{hc}H_{t-1}) tanh(WxcX+WhcHt1)
C t = F t C t − 1 + I t C ~ t C_t=F_tC_{t-1}+I_t \widetilde{C}_t Ct=FtCt1+ItC t
H t = O t t a n h ( C t ) H_t =O_ttanh(C_t) Ht=Ottanh(Ct)

GRU

GRU是对LSTM模型的优化,只有重置门和更新门,相比于LSTM,减少了很多参数,而且保证了效果
H ~ t = t a n h ( W h h X + W h h R t 点乘 H t − 1 ) \widetilde{H}_t=tanh(W_{hh}X+W_{hh}R_t点乘H_{t-1}) H t=tanh(WhhX+WhhRt点乘Ht1)
H t = Z t H t − 1 + ( 1 − Z t H t ~ ) H_t=Z_tH_{t-1}+(1-Z_{t}\widetilde{H_t}) Ht=ZtHt1+(1ZtHt )

LSTM和GRU的区别

GRU直接将隐藏状态信息传到下一时刻,LSTM将细胞状态包装成隐藏状态传入到下一时刻。

激活函数相关

1.sigmoid
优点:平滑处处可导
缺点:输出不是0均值(均大于0),输入的饱和区导数很小(容易导致梯度消失现象),存在幂运算,计算复杂
2.tanh
优点:平滑处处可导,输出是0均值
缺点:和sigmoid基本一样
3.ReLU
优点:计算速度快,大于0导数均为1,不容易发生梯度消失,收敛速度快
缺点:存在神经元永久死亡问题,输出不是0均值

softmax

激活函数的一种,多分类
softmax之后得到每个类别的概率,然后计算交叉熵损失函数
交叉熵能表示预测分布和真实分布的差异,交叉体现在yi代表真实概率分布,pi代表预测概率分布,交叉熵越小,表示两个分布越接近。
H ( x ) = ∑ y i l o g ( p i ) H(x)=\sum y_ilog(p_i) H(x)=yilog(pi)

优化器相关

不断通过调整参数去拟合数据
在这里插入图片描述对于优化算法,我们的目标是通过求每个参数的梯度来最小化损失函数,通过上面的代码我们可以发现,每个batch都需要计算一个损失函数,这与全量数据的损失函数肯定不一样,由于全量数据计算量大,我们用batch的损失函数代替整个训练集的损失函数。
为什么在鞍点会来回震荡?
因为我们每次计算的都是一个batch的loss图像,这带有一定的随机性,当换成下一个batch的时候,loss图像有不同,数据不一样,梯度肯定也不一样,如果是全量数据集,优化会停止不动。

BGD 用整个训练集的样本计算去更新每个参数
好处:如果函数是凸函数,能收敛到全局最小值,非凸函数,收敛到局部最小值
计算量大,适用于小数据集
SGD随机挑选样本计算更新参数
mini-bactch GD用batch内的样本计算更新参数

非凸函数:

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
LSTM模型中的激活函数可以影响模型的性能和训练速度。以下是常用的几种激活函数: 1. Sigmoid函数:Sigmoid函数可以将输入值压缩到0-1之间。在LSTM中,它通常被用来控制门的开关状态,如输入门和遗忘门。但是,Sigmoid函数存在梯度消失的问题,容易导致模型训练缓慢。 2. Tanh函数:Tanh函数可以将输入值压缩到-1到1之间。在LSTM中,它通常被用来计算候选状态和输出状态。Tanh函数比Sigmoid函数的梯度更大,可以更快地训练模型。 3. ReLU函数:ReLU函数在输入为正数时返回输入值,否则返回0。在LSTM中,它通常被用来计算记忆单元的状态。ReLU函数具有良好的非线性特性和快速的计算速度,但是当输入为负数时梯度为0,可能会导致神经元死亡问题。 4. LeakyReLU函数:LeakyReLU函数在输入为负数时返回一个小的负数,而不是0。这种函数可以避免ReLU的神经元死亡问题。 5. Softmax函数:Softmax函数将输入值转换为概率分布。在LSTM中,它通常被用来计算输出状态的概率分布。 在选择激活函数时,需要根据具体的任务和数据集来选择最适合的函数。例如,对于二分类问题,可以使用Sigmoid函数作为输出层的激活函数;对于多分类问题,可以使用Softmax函数作为输出层的激活函数。同时,可以使用不同的激活函数来控制不同的门状态,以优化LSTM模型的性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

石头猿rock

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值