机器学习-循环神经网络(RNN)、模型选择
多层感知机->循环神经网络
- 语言模型:预测下一个词
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=ϕ(Whhht−1+Whxxt+bh)
- Gated RNN(LSTM,GRU):对信息流进行细微的控制
- 忘记输入:当计算hth_tht时抑制掉xtx_txt
- 忘记过去:当计算hth_tht时抑制掉ht−1h_{t-1}ht−1
简单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