多层感知机->循环神经网络

  • 语言模型:预测下一个词
    hello->world
    hello world->!
  • 使用MLP不能很好的处理时序信息
    在这里插入图片描述
  • 循环神经网络将hello经过隐藏层的输出(隐藏状态)与下一个词world进行合并(concat),一起送给隐藏层
    在这里插入图片描述

RNN和带有门的(Gated)RNN

  • 简单RNN:ht=ϕ(Whhht−1+Whxxt+bh)h_t = \phi(W_{hh}h_{t-1}+W_{hx}x_t+b_h)ht=ϕ(Whhht1+Whxxt+bh)
    在这里插入图片描述
  • Gated RNN(LSTM,GRU):对信息流进行细微的控制
  1. 忘记输入:当计算hth_tht时抑制掉xtx_txt
  2. 忘记过去:当计算hth_tht时抑制掉ht−1h_{t-1}ht1

简单RNN

W_xh = nn.Parameter(torch.randn(num_inputs,num_hiddens)*0.01)
W_hh = nn.Parameter(torch.rand(num_hiddens,num_hiddens)*0.01)
b_h = nn.Parameter(torch.zeros(num_hiddens))

H = torch.zeros(num_hiddens)
outputs = []

for X in inputs:#inputs的shape:(num_steps,batch_size,num_inputs)
	H = torch.tanh(X @ W_xh + H @ W_hh + b_h)
	outputs.append(H)

Bi-RNN和Deep RNN

在这里插入图片描述
在这里插入图片描述

模型选择

  • Tabular类型
    Trees、Linear/MLP
  • Text/speech
    RNNs、Transformers
  • Images/audio/video
    Transformers、CNNs
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐