LSTM的反向传播过程推导

【在线直播】《TensorFlow实战》作者、PPmoney大数据算法总监黄文坚老师即将开课:《使用TensorFlow创建可自动玩游戏的DQN模型》,本次课程集中讲解Deep-Q Network及其TensorFlow的实现。点击报名

近些年来,随着深度学习的崛起,RNN模型也变得非常热门。如果把RNN模型按照时间轴展开,它也类似其它的深度神经网络模型结构。因此,我们可以参照已有的方法训练RNN模型。

现在最流行的一种RNN模型是LSTM(长短期记忆)网络模型。这里有一些关于LSTM的背景知识介绍文章,Karpathy的博客Chris Olah的博客

尽管我们可以借助Tensorflow、Torch、Theano等深度学习库轻松地训练模型,而不再需要推导反向传播的过程,但是逐步推导LSTM模型的梯度并用反向传播算法来实现,对我们深刻地理解模型是大有裨益的。

因此,我们首先按照LSTM的公式实现正向传播计算过程,然后推导网络模型的梯度计算过程,最后用numpy来实现模型的求解。

LSTM正向传播

单个LSTM单元的公式如下:

用代码可以表示为:

H = 128 # LSTM 层神经元的数量
D = ... # 输入数据的维度 == 词表的大小
Z = H + D # 因为需要把LSTM的状态与输入数据拼接

model = dict(
    Wf=np.random.randn(Z, H) / np.sqrt(Z / 2.),
    Wi=np.random.randn(Z, H) / np.sqrt(Z / 2.),
    Wc=np.random.randn(Z, H) / np.sqrt(Z / 2.),
    Wo=np.random.randn(Z, H) / np.sqrt(Z / 2.),
    Wy=np.random.randn(H, D) / np.sqrt(D / 2.),
    bf=np.zeros((1, H)),
    bi=np.zeros((1, H)),
    bc=np.zeros((1, H)),
    bo=np.zeros((1, H)),
    by=np.zeros((1, D))
)

在上面,我们定义了LSTM单元的结构。上述公式需要注意的一点是,我们把隐藏层上一步的状态h与当前的输入x相连接,因此LSTM单元的输入是 Z = H + D。另外,我们LSTM单元的输出层有H个神经元,因此每个权重矩阵的维度是 ZxH,偏置向量的维度是 1xH。

Wy 和 by略有不同,这两项是全连接层的参数,它们的下一级是softmax层。最终的输出结果将是词表中每个词语出现的概率分布,维度为 1xD。因此,Wy的维度必须是 HxD,by的维度必须是 1xD。

def lstm_forward(X, state):
    m = model
    Wf, Wi, Wc, Wo, Wy = m['Wf'], m['
  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LSTM(长短期记忆网络)是一种递归神经网络(RNN)的变体,它在处理时间序列数据时表现出色。LSTM通过使用门控单元来解决传统RNN中的梯度消失和梯度爆炸问题。在LSTM中,反向传播算法用于优化网络参数。 反向传播(Backpropagation)是一种用于训练神经网络的优化算法。在LSTM中,反向传播通过计算损失函数对每个神经元的权重和偏置的梯度,并通过梯度下降法更新这些参数来最小化损失函数。 具体来说,在LSTM中,反向传播算法通过以下步骤来计算梯度并更新参数: 1. 前向传播:输入一个序列数据,通过LSTM的各个层进行前向传播,计算输出。 2. 计算损失:将模型预测的输出与实际值进行比较,计算损失函数(如平均误差)。 3. 反向传播:从输出层开始,计算每个神经元的权重和偏置的梯度。这是通过链式法则来实现的,将误差从输出层向后传播到每个神经元。 4. 参数更新:使用梯度下降法来更新每个神经元的权重和偏置。通过将梯度乘以学习率来确定参数更新的幅度。 5. 重复步骤1-4:重复以上步骤,直到达到停止条件(如达到最大迭代次数或损失函数收敛)。 通过反向传播算法,LSTM能够学习时间序列数据中的长期依赖关系,并进行优化。这使得LSTM在处理许多任务(如语言模型、机器翻译、情感分析等)上表现出色。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值