gpt4 book ai didi

machine-learning - RNN 输出层的梯度是否应该被剪裁?

转载 作者:行者123 更新时间:2023-11-30 08:45:29 26 4
gpt4 key购买 nike

我目前正在训练 LSTM RNN 以进行时间序列预测。据我所知,当 RNN 超过某个阈值时,对其梯度进行裁剪是常见的做法。但是,我不完全清楚这是否包括输出层。

如果我们将 RNN 的隐藏层称为 h,则输出为 sigmoid(connected_weights*h + bias)。我知道用于确定隐藏层的权重梯度被剪裁,但输出层也是如此吗?

换句话说,connected_weights 的梯度是否也会在梯度裁剪中被裁剪?

最佳答案

虽然没有什么可以阻止您修剪它们,但没有理由这样做。一篇很好的论文,有理由是 here ,我会尽力向您提供概述。

我们试图通过梯度裁剪解决的问题是梯度爆炸:我们假设你的 RNN 层是这样计算的:

 h_t = sigmoid(U * x + W * h_tm1 + b)

因此暂时忘记非线性,您可以说当前状态 h_t 取决于某些早期状态 h_{t-T} 作为 h_t = W ^T * h_tmT + 输入。因此,如果矩阵 W 使隐藏状态膨胀,则旧隐藏状态的影响会随着时间呈指数增长。当您反向传播梯度时,也会发生同样的情况,导致梯度很可能让您到达参数空间中的某个无用点。

另一方面,输出层在前向和后向传递过程中仅应用一次,因此虽然它可能使学习复杂化,但它只会通过“恒定”因子,与时间展开无关。

更专业一点:决定梯度是否爆炸的关键量是 W 的最大特征值。如果它大于 1(或小于 -1,那么它真的很有趣:-)),然后你会得到爆炸梯度。相反,如果它小于 1,您将遭受梯度消失的困扰,从而很难学习长期依赖关系。您可以找到对这些现象的很好的讨论here ,并指向古典文学。

如果我们将 sigmoid 重新带入图片中,获得爆炸梯度就会变得更加困难,因为当通过它反向传播时,梯度会衰减至少 4 倍。但是,如果特征值大于 4,你就会有冒险:-) 仔细初始化相当重要,第二篇论文给出了一些提示。使用 tanh 时,零附近几乎没有阻尼,ReLU 只是传播梯度,因此这些很容易发生梯度爆炸,因此对初始化和梯度裁剪敏感。

总体而言,LSTMs比普通 RNN 具有更好的学习特性,尤其是。关于梯度消失。不过根据我的经验,渐变裁剪通常也是必要的。

编辑:何时剪辑?在权重更新之前,即您不改变反向传播。问题是梯度裁剪是一种肮脏的黑客行为。您仍然希望梯度尽可能精确,因此最好不要在反向传播的中间扭曲它。只是如果你看到梯度变得非常大,你会说不,这有味道。我最好迈出一小步。并且裁剪是一种简单的方法(可能只有渐变的某些元素被分解,而其他元素仍然表现良好且信息丰富)。对于大多数工具包,无论如何您都没有选择,因为反向传播是自动发生的。

关于machine-learning - RNN 输出层的梯度是否应该被剪裁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53550264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com