跟李沐学AI:循环神经网络RNN

循环神经网络

循环神经网络 (recurrent neural networks,RNNs) 是具有隐状态的神经网络。RNN 具有隐状态(hidden state)的原因在于它需要一种机制来存储之前输入的信息,以便于处理当前输入时能够考虑之前的上下文。基于上节提到的潜变量自回归模型:。其中隐状态 (hidden state), 也称为隐藏变量 (hidden variable), 它存储了到时间步t−1的序列信息。通常,我们可以基于当前输入和先前隐状态来计算时间步t处的任何时间的隐状态:。在每一个时间步t,RNN 接收一个输入xt​以及来自上一时间步的隐状态ht−1,并根据这两个信息计算出当前时间步的隐状态ht。隐状态可以看作网络对于之前所有输入的记忆表示,它包含了从序列开始到当前时间步所有信息的摘要。

循环神经网络的输出决定,

其中:ht是当前时间步t的隐状态,xt是当前时间步的输入,Wxh和Whh分别是从输入到隐状态和从隐状态到隐状态的权重矩阵,b是偏置项,f(⋅)是激活函数,例如tanh或ReLU等。

困惑度

困惑度(Perplexity, PP)用来衡量模型预测单词的能力,它反映了模型对未知数据的"困惑"程度。通常情况下,困惑度越低,说明模型对数据的拟合程度越好。困惑度计算公式如下:

在最好的情况下,模型总是完美地估计标签词元的概率为1。 在这种情况下,模型的困惑度为1。

在最坏的情况下,模型总是预测标签词元的概率为0。 在这种情况下,困惑度是正无穷大。

梯度裁剪

在循环神经网络(RNNs)中,梯度裁剪是一种常用于缓解梯度消失或梯度爆炸问题的技术。

在RNN中,梯度消失的问题尤为显著,因为它们的权重需要通过时间进行反向传播。在每一时间步中,梯度是通过链式法则计算的,这意味着当前时间步的梯度是由前一时间步的梯度乘以前一时间步的权重矩阵得到的。如果这个权重矩阵的特征值小于1,那么经过多次相乘之后,梯度就会逐渐减小至接近零。当这种情况发生时,网络就很难调整其权重来学习远距离的时间依赖性。这就是梯度消失。与梯度消失相反,梯度爆炸发生在梯度增长得非常快以至于变得过大,这可能导致权重参数的剧烈更新,使得模型难以收敛。

梯度裁剪的目的是通过限制梯度的大小来解决这些问题。具体来说,当计算出的梯度超过某个预定义的阈值时,可以按比例缩小梯度的值,使得它们不会过于庞大,从而避免梯度爆炸。这个过程可以通过两种常见的方式来实现:

基于范数的裁剪

设定一个阈值C(通常是超参数),如果梯度的L2范数大于C,则将整个梯度向量按比例缩放,使得其范数不超过C。这样可以保证梯度保持在一个合理的范围内。

基于元素的裁剪

这种方法直接检查梯度向量中的每个元素,如果发现某个元素的绝对值超过了预设的最大值,则 将该元素裁剪到最大值或最小值。

相关推荐
千天夜5 分钟前
激活函数解析:神经网络背后的“驱动力”
人工智能·深度学习·神经网络
大数据面试宝典6 分钟前
用AI来写SQL:让ChatGPT成为你的数据库助手
数据库·人工智能·chatgpt
封步宇AIGC11 分钟前
量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
人工智能·python·机器学习·数据挖掘
m0_5236742113 分钟前
技术前沿:从强化学习到Prompt Engineering,业务流程管理的创新之路
人工智能·深度学习·目标检测·机器学习·语言模型·自然语言处理·数据挖掘
HappyAcmen23 分钟前
IDEA部署AI代写插件
java·人工智能·intellij-idea
噜噜噜噜鲁先森44 分钟前
看懂本文,入门神经网络Neural Network
人工智能
InheritGuo1 小时前
It’s All About Your Sketch: Democratising Sketch Control in Diffusion Models
人工智能·计算机视觉·sketch
weixin_307779132 小时前
证明存在常数c, C > 0,使得在一系列特定条件下,某个特定投资时刻出现的概率与天数的对数成反比
人工智能·算法·机器学习
封步宇AIGC2 小时前
量化交易系统开发-实时行情自动化交易-3.4.1.6.A股宏观经济数据
人工智能·python·机器学习·数据挖掘
Jack黄从零学c++2 小时前
opencv(c++)图像的灰度转换
c++·人工智能·opencv