08.4. 循环神经网络

8.4. 循环神经网络

隐藏层和隐状态指的是两个截然不同的概念。

  • 隐藏层是在从输入到输出的路径上(以观测角度来理解)的隐藏的层
  • 隐状态则是在给定步骤所做的任何事情(以技术角度来定义)的输入, 并且这些状态只能通过先前时间步的数据来计算。

循环神经网络(recurrent neural networks,RNNs) 是具有隐状态的神经网络。

8.4.1. 无隐状态的神经网络

当前时间步隐藏变量由当前时间步的输入 与前一个时间步一起计算得出

8.4.2. 有隐状态的循环神经网络

当前时间步隐藏变量由当前时间步的输入 与前一个时间步的隐藏变量一起计算得出

具有隐状态的循环神经网络图示
在这里插入图片描述

import torch
from d2l import torch as d2l

X, W_xh = torch.normal(0, 1, (3, 1)), torch.normal(0, 1, (1, 4))
H, W_hh = torch.normal(0, 1, (3, 4)), torch.normal(0, 1, (4, 4))
torch.matmul(X, W_xh) + torch.matmul(H, W_hh)

# result
tensor([[-1.4258,  1.8849, -1.2227, -3.2763],
        [ 0.5912, -0.8081,  0.6962, -0.0819],
        [-3.9654,  1.2145, -4.2720, -0.6869]])
        
# 沿列(轴1)拼接矩阵X和H, 沿行(轴0)拼接矩阵W_xh和W_hh。
torch.matmul(torch.cat((X, H), 1), torch.cat((W_xh, W_hh), 0))

# result
tensor([[-1.4258,  1.8849, -1.2227, -3.2763],
        [ 0.5912, -0.8081,  0.6962, -0.0819],
        [-3.9654,  1.2145, -4.2720, -0.6869]])

8.4.3. 基于循环神经网络的字符级语言模型

设小批量大小为1,批量中的那个文本序列为“machine”。 为了简化后续部分的训练,我们考虑使用 字符级语言模型(character-level language model), 将文本词元化为字符而不是单词.
在这里插入图片描述

基于循环神经网络的字符级语言模型:输入序列和标签序列分别为“machin”和“achine”

在训练过程中,我们对每个时间步的输出层的输出进行softmax操作, 然后利用交叉熵损失计算模型输出和标签之间的误差。

8.4.4. 困惑度(Perplexity)

  • 通过计算序列的似然概率来度量模型的质量.
  • 困惑度的最好的理解是“下一个词元的实际选择数的调和平均数”
  • 信息论

8.4.5. 小结

  • 对隐状态使用循环计算的神经网络称为循环神经网络(RNN)。

  • 循环神经网络的隐状态可以捕获直到当前时间步序列的历史信息。

  • 循环神经网络模型的参数数量不会随着时间步的增加而增加。

  • 我们可以使用循环神经网络创建字符级语言模型。

  • 我们可以使用困惑度来评价语言模型的质量。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

nsq_ai

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

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

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

打赏作者

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

抵扣说明:

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

余额充值