RNN 结构
隐藏状态 ht=σ(Uxt+Wht−1+b)h_t=\sigma(Ux_t+Wh_{t-1}+b)ht=σ(Uxt+Wht−1+b),通常 tanh
输出状态 ot=g(Vht+c)o_t=g(Vh_t+c)ot=g(Vht+c)
损失 L=∑tLt=∑tLoss(ot,yt)L=\sum_t L_t=\sum_t Loss(o_t,y_t)L=∑tLt=∑tLoss(ot,yt)
基于时间的反向传播(Back Propagation Through Time, BPTT)
CNN 对序列建模
TextCNN:文本序列 -> 二维网格数据
时间卷积网络:因果卷积、空洞卷积
Dropout 作用(正则化)
近似 Bagging,但不同网络共享参数
减少神经元共适应关系,更加泛化
RNN 中的 Dropout
前馈连接:t => t,循环连接:t => t+1
直观思路:Dropout 前馈连接,但效果不理想,因为大量参数在 循环连接
基于变分推理的 Dropout:所有时刻的循环连接上,采用相同的丢弃方法
Zoneout
梯度消失 / 爆炸:Wt−t0W^{t-t_0}Wt−t0
最大特征值>1,梯度爆炸,梯度裁剪(超过阈值等比收缩)
最大特征值<1,梯度消失,LSTM / GRU
解决方案:初始化1,激活函数,正则化,跳跃连接,LSTM
长期依赖问题
LSTM
输入门 it=σ(Wixt+Uiht−1+bi)i_t=\sigma(W_ix_t+U_ih_{t-1}+b_i)it=σ(Wixt+Uiht−1+bi),当前状态,多大程度更新到记忆单元中
遗忘门 ft=σ(Wfxt+Ufht−1+bf)f_t=\sigma(W_fx_t+U_fh_{t-1}+b_f)ft=σ(Wfxt+Ufht−1+bf),之前记忆单元中的信息,多大程度被遗忘掉
输出门 ot=σ(Woxt+Uoht−1+bo)o_t=\sigma(W_o x_t+U_o h_{t-1}+b_o)ot=σ(Woxt+Uoht−1+bo),当前输出,多大程度取决于当前记忆单元
内部记忆单元 c~t=tanh(Wcxt+Ucht−1)\tilde c_t=\tanh(W_cx_t+U_ch_{t-1})c~t=tanh(Wcxt+Ucht−1),于是 ct=ft⊙ct−1+it⊙c~tc_t=f_t\odot c_{t-1}+i_t\odot \tilde c_tct=ft⊙ct−1+it⊙c~t
ht=ot⊙tanh(ct)h_t=o_t\odot \tanh(c_t)ht=ot⊙tanh(ct)
GRU(用更新门 ztz_tzt 实现 遗忘+记忆)
重置门 rt=σ(Wrxt+Urht−1)r_t=\sigma(W_rx_t+U_rh_{t-1})rt=σ(Wrxt+Urht−1),先前是否被忽略
更新门 zt=σ(Wzxt+Ufzt−1)z_t=\sigma(W_zx_t+U_fz_{t-1})zt=σ(Wzxt+Ufzt−1),当前是否被更新
h~t=tanh(Whxt+Uh(rt⊙ht−1))\tilde h_t=\tanh(W_hx_t+U_h(r_t\odot h_{t-1}))h~t=tanh(Whxt+Uh(rt⊙ht−1)),于是 $h_t=(1-z_t)h_{t-1}+z_t \tilde h_t$
机器翻译、语音识别、自动对话
思想:输入序列 - 编码 - 解码 - 输出序列
核心是 解码环节(贪心法、集束搜索、注意力机制)
信息丢失:序列翻转、注意力机制
Last updated 3 years ago