记忆能力
-
延时神经网络:非输出层前增加延时器
- $h_t^{(l)}=f(h_t^{(l)},h_{t-1}^{(l-1)},\cdots,h^{(l-1)}_{t-K})$
- 在时间维度上共享权值
-
有外部输入的非线性网络:每个时刻 $t$ 有一个外部输入,产生一个输出 $y_t$
- 自回归模型:$y_t=\omega_0+\sum_{k=1}^K\omega_ky_{t-k}+\epsilon_t$
- 有外部输入的非线性自回归模型:$y_t=f(x_t,x_{t-1},\cdots,x_{t-{K_x}},y_{t-1},y_{t-2},\cdots,y_{t-K_y})$
-
循环神经网络:$h_t=f(h_{t-1},x_t)$
-
循环神经网络的通用近似定理(2009):以任何准确率近似任何一个非线性动力系统
$$s_t=g(s_{t-1},x_t)\newline y_t=o(s_t)$$
-
图灵完备(1991):所有图灵机可以被一个由使用 Sigmoid 型激活函数的神经元构成的全连接循环网络进行模拟
-
-
外部记忆单元
RNN
- 简单神经网络
- $z_t=Uh_{t-1}+Wx_{t}+b$
- $h_t=f(z_t)$
- $y_t=Vh_t$
- 应用模式
- 序列到类别
- $x_{1:T}=(x_1,\cdots,x_T)$ 按不同时刻输入到网络中
- $y\in{1,\cdots,C}$
- 序列特征:$h_T$ or $\frac{1}{T}\sum_{t=1}^Th_t$
- 同步序列到序列(序列标注)
- $x_{1:T}=(x_1,\cdots,x_T)$ 按不同时刻输入到网络中
- $y_{1:T}=(y_1,\cdots,y_T)$
- $\hat y_t=g(h_t),\forall t\in[1,T]$
- 异步序列到序列(编码器-解码器)
- $x_{1:T}=(x_1,\cdots,x_T)$ 按不同时刻输入到网络(编码器)中
- $y_{1:M}=(y_1,\cdots,y_M)$ 按不同时刻输入到网络(解码器)中,初始隐状态为 $h_T$
- $\hat y_t=g(h_{T+t})$
- 序列到类别
- 随时间反向传播(BPTT):每层对应每个时刻
- $\delta_{t,k}=\frac{\partial L_t}{\partial z_k}=\text{diag}(f’(z_k))U^T\delta_{t,k+1}$
- $\frac{\partial L_t}{\partial U}=\sum_{k=1}^t\delta_{t,k}h^T_{k-1}$
- $\frac{\partial L}{\partial U}=\sum_{t=1}^T\sum_{k=1}^t\delta_{t,k}h^T_{k-1}$
- 在一次完整前向传播和反向计算后才能更新参数
- 实时循环学习(RTRL)
- 堆叠循环神经网络(SRNN)
- 循环多层感知机(1991):$h_t^{(l)}=f(U^{(l)}h_{t-1}^{(l)}+W^{(l)}h_t^{(l-1)}+b^{(l)})$
- 双向循环神经网络(Bi-RNN)
长程依赖问题
- 长程依赖问题
- 梯度消失:$\frac{\partial L_t}{\partial h_k}$ 梯度消失,参数 $U$ 更新主要靠相邻状态
- $h_t=h_{t-1}+g(x_t,h_{t-1};\theta)$: 梯度爆炸,记忆容量不足
- 梯度爆炸:不稳定
- 长短期记忆网络(LSTM, 2000)
- 内部状态 $c_t=f_t\odot c_{t-1}+i_t\odot \tilde{c}_t$
- 外部状态 $h_t=o_t\odot \tanh(c_t)$
- 门 ${0,1}$
- 遗忘门 $f_t=\sigma(W_fx_t+U_fh_{t-1}+b_f)$ 控制内部状态遗忘多少信息
- 输入门 $i_t=\sigma(W_ix_t+U_ih_{t-1}+b_i)$ 控制候选状态保存多少信息
- 输出门 $o_t=\sigma(W_0x_t+U_0h_{t-1}+b_0)$ 控制内部状态输出多少给外部状态
- 候选状态 $\tilde{c}t=\tanh(Wx_t+Uh{t-1}+b)$
- LSTM 变体
- 无遗忘门(1997)
- peephole 连接:三个门同时依赖于上一时刻记忆单元 $c_{t-1}$
- 耦合输入门与遗忘门:$c_t=(1-i_t)\odot c_{t-1}+i_t\odot\tilde{c}_t$
- 门控循环网络(GRU, 2014)
- $h_t=z_t\odot h_{t-1}+(1-z_t)\odot \tilde{h}_t$
- 更新门 $z_t=\sigma(W_zx_t+U_zh_{t-1}+b_z)$
- 重置门 $r_t=\sigma(W_rx_t+U_rh_{t-1}+b_r)$
- 候选状态 $\tilde{h}t=\tanh(W_cx_t+U_h(r_t\odot h{t-1})+b)$
图结构
- 递归神经网络(RecNN):$h_i=f(h_{\pi_i})$
- 建模自然语言句子的语义
- 图神经网络(GNN)
- $m_t^{(v)}=\sum_{u\in N(v)}f(h^{(v)}{t-1},h{t-1}^{(u)},e^{(u,v)})$
- $h_t^{(v)}=g(h_{t-1}^{(v)},m_t^{(v)})$
- 读出函数:$o_t=g({h_T^{(v)}|v\in V})$