《动手学深度学习 Pytorch版》 9.4 双向循环神经网络

之前的序列学习中假设的目标是在给定观测的情况下对下一个输出进行建模,然而也存在需要后文预测前文的情况。

9.4.1 隐马尔可夫模型中的动态规划

数学推导太复杂了,略。

9.4.2 双向模型

双向循环神经网络(bidirectional RNNs)添加了反向传递信息的隐藏层,以便更灵活地处理此类信息。

9.4.2.1 定义

前向和反向隐状态的更新如下:

H → t = ϕ l ( X t W x h ( f ) + H → t − 1 W h h ( f ) + b h ( f ) ) H ← t = ϕ l ( X t W x h ( b ) + H ← t − 1 W h h ( b ) + b h ( b ) ) \overrightarrow{\boldsymbol{H}}t=\phi_l(\boldsymbol{X}t\boldsymbol{W}^{(f)}{xh}+\overrightarrow{\boldsymbol{H}}{t-1}\boldsymbol{W}^{(f)}_{hh}+\boldsymbol{b}^{(f)}h)\\ \overleftarrow{\boldsymbol{H}}t=\phi_l(\boldsymbol{X}t\boldsymbol{W}^{(b)}{xh}+\overleftarrow{\boldsymbol{H}}{t-1}\boldsymbol{W}^{(b)}{hh}+\boldsymbol{b}^{(b)}_h) H t=ϕl(XtWxh(f)+H t−1Whh(f)+bh(f))H t=ϕl(XtWxh(b)+H t−1Whh(b)+bh(b))

参数字典:

  • H → t , H ← t ∈ R n × h \overrightarrow{\boldsymbol{H}}_t,\overleftarrow{\boldsymbol{H}}_t\in\R^{n\times h} H t,H t∈Rn×h 表示前向和反向隐状态

    • h h h 表示隐藏单元数目
  • W x h ( f ) , W h h ( f ) , W x h ( b ) , W h h ( b ) ∈ R h × h \boldsymbol{W}^{(f)}{xh},\boldsymbol{W}^{(f)}{hh},\boldsymbol{W}^{(b)}{xh},\boldsymbol{W}^{(b)}{hh}\in\R^{h\times h} Wxh(f),Whh(f),Wxh(b),Whh(b)∈Rh×h 表示权重参数

  • b h ( f ) , b h ( b ) ∈ R 1 × h \boldsymbol{b}^{(f)}_h,\boldsymbol{b}^{(b)}_h\in\R^{1\times h} bh(f),bh(b)∈R1×h 表示偏重参数

接下来,将前向隐状态 H → t \overrightarrow{\boldsymbol{H}}_t H t 和反向隐状态 H ← t \overleftarrow{\boldsymbol{H}}_t H t 连接起来,获得需要送入输出层的隐状态 H t ∈ R n × 2 h \boldsymbol{H}_t\in\R^{n\times 2h} Ht∈Rn×2h。

最后,输出层计算得到的输出为:

O t = H t W h q + b q \boldsymbol{O}_t=\boldsymbol{H}t\boldsymbol{W}{hq}+\boldsymbol{b}_q Ot=HtWhq+bq

参数字典:

  • O t ∈ R n × q \boldsymbol{O}_t\in\R^{n\times q} Ot∈Rn×q 表示输出层输出

    • q q q 表示输出单元数目
  • W h q ∈ R 2 h × q \boldsymbol{W}_{hq}\in\R^{2h\times q} Whq∈R2h×q 表示权重矩阵

  • b q ∈ R 1 × q \boldsymbol{b}_q\in\R^{1\times q} bq∈R1×q 表示偏置

9.4.2.2 模型的计算成本及其应用

在训练期间,能够利用过去和未来的数据来估计现在空缺的词;而在测试期间,只有过去的数据,因此精度将会很差。下面的实验将说明这一点。

另外,双向循环神经网络的计算速度非常慢。其主要原因是网络的前向传播需要在双向层中进行前向和后向递归,并且网络的反向传播还依赖于前向传播的结果。因此,梯度求解将有一个非常长的链。

双向层的使用在实践中非常少,并且仅仅应用于部分场合。例如,填充缺失的单词、词元注释(例如,用于命名实体识别)以及作为序列处理流水线中的一个步骤对序列进行编码(例如,用于机器翻译)。

9.4.3 双向循环神经网络的错误应用

python 复制代码
import torch
from torch import nn
from d2l import torch as d2l
python 复制代码
# 加载数据
batch_size, num_steps, device = 32, 35, d2l.try_gpu()
train_iter, vocab = d2l.load_data_time_machine(batch_size, num_steps)
# 通过设置"bidirective=True"来定义双向LSTM模型
vocab_size, num_hiddens, num_layers = len(vocab), 256, 2
num_inputs = vocab_size
lstm_layer = nn.LSTM(num_inputs, num_hiddens, num_layers, bidirectional=True)
model = d2l.RNNModel(lstm_layer, len(vocab))
model = model.to(device)
# 训练模型
num_epochs, lr = 500, 1
d2l.train_ch8(model, train_iter, vocab, lr, num_epochs, device)
复制代码
perplexity 1.1, 62244.4 tokens/sec on cuda:0
time travellerererererererererererererererererererererererererer
travellerererererererererererererererererererererererererer

练习

(1)如果不同方向使用不同数量的隐藏单位, H t \boldsymbol{H}_t Ht 的形状会发生怎样的变化?

如果一个是 H → t ∈ R n × h 1 \overrightarrow{\boldsymbol{H}}_t\in\R^{n\times h_1} H t∈Rn×h1,另一个是 H ← t ∈ R n × h 2 \overleftarrow{\boldsymbol{H}}_t\in\R^{n\times h_2} H t∈Rn×h2 那么最后拼接出的 H t ∈ R n × ( h 1 + h 2 ) \boldsymbol{H}_t\in\R^{n\times (h_1+h_2)} Ht∈Rn×(h1+h2)。


(2)设计一个具有多个隐藏层的双向循环神经网络。

不会,略。


(3)在自然语言中一词多义很常见。例如,"bank"一词在不同的上下文"i went to the bank to deposit cash"和"i went to the bank to sit down"中有不同的含义。如何设计一个神经网络模型,使其在给定上下文序列和单词的情况下,返回该单词在此上下文中的向量表示?哪种类型的神经网络架构更适合处理一词多义?

那必然是双向循环网络。

相关推荐
智算菩萨2 小时前
【Generative AI For Autonomous Driving】4 自动驾驶生成式模型前沿实战——从图像合成到多模态大模型的技术全景解析
论文阅读·人工智能·深度学习·机器学习·ai·自动驾驶
智算菩萨9 小时前
【How Far Are We From AGI】3 AGI的边界扩张——数字、物理与智能三重接口的技术实现与伦理困境
论文阅读·人工智能·深度学习·ai·agi
剑穗挂着新流苏3129 小时前
Pytorch加载数据
python·深度学习·transformer
智算菩萨13 小时前
【How Far Are We From AGI】6 AGI的进化论——从胚胎到终极的三级跃迁与发展路线图
论文阅读·人工智能·深度学习·ai·agi
梦醒过后说珍重13 小时前
【超分实战】拒绝灾难性遗忘!记一次原生4K医疗影像(SurgiSR4K)的模型微调踩坑实录
深度学习
梦醒过后说珍重14 小时前
拒绝显存溢出!手把手教你写原生 4K 超分辨率数据集 (SurgiSR4K) 的 PyTorch DataLoader
深度学习
junjunzai12314 小时前
设置cuda:1但是cuda:0在波动的问题
人工智能·深度学习
罗罗攀15 小时前
PyTorch学习笔记|张量的广播和科学运算
人工智能·pytorch·笔记·python·学习
智算菩萨16 小时前
多目标超启发式算法系统文献综述:人机协同大语言模型方法论深度精读
论文阅读·人工智能·深度学习·ai·多目标·综述
简单光学16 小时前
ISDM: 基于生成扩散模型的散射介质成像重建技术报告
深度学习·扩散模型·散射成像·分数匹配·随机微分方程