给神经网络增加记忆能力
前馈神经网络:
- 相邻两层之间存在单向连接,层内无连接
- 有向无环图
- 输入和输出的维数都是固定的,不能任意改变
- (全连接前馈网络)无法处理变长的序列数据
![](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108171907389-79938626.png)
可计算问题:
![image-20221108172055490](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108172054818-1342740345.png)
时延神经网络:
时延神经网络(Time Delay Neural Network,TDNN)
建立一个额外的延时单元,用来存储网络的历史信息(可以包括输入、输出、隐状态等)
\[\boldsymbol{h}_{t}^{(l)}=f\left(\boldsymbol{h}_{t}^{(l-1)}, \boldsymbol{h}_{t-1}^{(l-1)}, \cdots, \boldsymbol{h}_{t-K}^{(l-1)}\right) \]这样,前馈网络就具有了短期记忆的能力。
![image-20221108173940126](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108173939738-1625255452.png)
自回归模型(Autoregressive Model,AR)
一类时间序列模型,用变量y的历史信息来预测自己
\[\boldsymbol{y}_{t}=w_{0}+\sum_{k=1}^{K} w_{k} \boldsymbol{y}_{t-k}+\epsilon_{t} \]\(\epsilon_{t} \sim N\left(0, \sigma^{2}\right)\)为第t个时刻的噪声
有外部输入的非线性自回归模型(Nonlinear Autoregressive with Exogenous Inputs Model,NARX)
\[\boldsymbol{y}_{t}=f\left(\boldsymbol{x}_{t}, \boldsymbol{x}_{t-1}, \cdots, \boldsymbol{x}_{t-K_{x}}, \boldsymbol{y}_{t-1}, \boldsymbol{y}_{t-2}, \cdots, \boldsymbol{y}_{t-K_{y}}\right) \]其中f(·)
表示非线性函数,可以是一个前馈网络.
\(K_x\)和\(K_y\)为超参数.
非线性自回归模型
![image-20221108175122528](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108175121907-34046946.png)
循环神经网络
循环神经网络通过使用带自反馈的神经元,能够处理任意长度的时序数据。
![](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108175343078-1545972930.png)
循环神经网络比前馈神经网络更加符合生物神经网络的结构。
循环神经网络已经被广泛应用在语音识别、语言模型以及自然语言生成等任务上。
![image-20221108180010743](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108180010262-997058904.png)
图灵完备(Turing Completeness)是指一种数据操作规则,比如一种计算机编程语言,可以实现图灵机的所有功能,解决所有的可计算问题。
一个完全连接的循环神经网络可以近似解决所有的可计算问题。
作用
- 输入-输出映射
- 机器学习模型(本节主要关注这种情况)
- 存储器
- 联想记忆模型
- 参考蒲公英书第8.6节
应用到机器学习
序列到类别
![image-20221108180959201](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108180958443-835317154.png)
真实情况:b
e.g.情感分类
![image-20221108181442753](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108181442209-1523437324.png)
同步的序列到序列
![image-20221108181946026](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108181945479-23478191.png)
e.g.中文分词
![image-20221108182056380](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108182055598-1712908386.png)
e.g.信息抽取
从无结构的文本中抽取结构化的信息,形成知识
![image-20221108212720499](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108212721188-297398532.png)
e.g.语音识别
![image-20221108213040367](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108213041072-331406663.png)
异步的序列到序列
![image-20221108213254199](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108213254816-2098040669.png)
e.g.机器翻译
![image-20221108213454708](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108213455288-908607978.png)
参数学习与长程依赖问题
参数学习
机器学习
给定一个训练样本(x,y),其中
长度为T的输入序列\(\boldsymbol{x}=\boldsymbol{x}_{1}, \cdots, \boldsymbol{x}_{T}\)
长度为T的标签序列\(\boldsymbol{y}=\boldsymbol{y}_{1}, \cdots, \boldsymbol{y}_{T}\)
时刻t的瞬时损失函数为
\[\mathcal{L}_{t}=\mathcal{L}\left(y_{t}, g\left(\boldsymbol{h}_{t}\right)\right) \]总损失函数
\[\mathcal{L}=\sum_{t=1}^{T} \mathcal{L}_{t} \]计算梯度
\[\begin{aligned} \boldsymbol{z}_{t} &=\boldsymbol{U} \boldsymbol{h}_{t-1}+\boldsymbol{W} \boldsymbol{x}_{t}+\boldsymbol{b} \\ \boldsymbol{h}_{t} &=f\left(\boldsymbol{z}_{t}\right) \end{aligned} \]![image-20221108215431549](/i/l/?n=22&i=blog/2910984/202211/2910984-20221108215432064-1975473688.png)
随时间反向传播算法(BackPropagation Through Time,BPTT)
\[\begin{aligned} \frac{\partial \mathcal{L}_{t}}{\partial \boldsymbol{U}} &=\sum_{k=1}^{t} \delta_{t, k} \boldsymbol{h}_{k-1}^{\top} \\ \delta_{t, k} &=\operatorname{diag}\left(f^{\prime}\left(\boldsymbol{z}_{k}\right)\right) \boldsymbol{U}^{\top} \delta_{t, k+1} \\ &=\prod_{\tau=k}^{t-1}\left(\operatorname{diag}\left(f^{\prime}\left(\boldsymbol{z}_{\tau}\right)\right) \boldsymbol{U}^{\top}\right) \delta_{t, t} \end{aligned} \]长程依赖问题(Long-Term Dependencies Problem)
由于梯度爆炸或消失问题,实际上只能学习到短周期的依赖关系。
![image-20221109091246038](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109091246846-1349129130.png)
如何解决长程依赖问题?
- 循环神经网络在时间维度上非常深!
- 梯度消失或梯度爆炸
- 如何改进?
- 梯度爆炸问题
- 权重衰减
- 梯度截断
- 梯度消失问题
- 改进模型
- 梯度爆炸问题
![image-20221109100302438](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109100302646-2049268213.png)
残差网络?
门控机制
控制信息的累积速度,包括有选择地加入新的信息,并有选择地遗忘之前累积的信息。
基于门控的循环神经网络(Gated RNN)
- 门控循环单元GRU
- 长短期记忆网络LSTM
GRU
![image-20221109101720914](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109101721067-1804887796.png)
门控循环单元(Gated Recurrent Unit,GRU)
![image-20221109102251090](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109102251425-1001633007.png)
长短期记忆神经网络(Long Short-Term Memory,LSTM)
![image-20221109102559113](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109102559433-1606581915.png)
LSTM的各种变体
![image-20221109102738685](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109102738872-296521167.png)
深层循环神经网络
堆叠循环神经网络(Stacked)
![image-20221109103407969](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109103408044-1174847455.png)
双向循环神经网络
![image-20221109103529477](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109103529565-1690539545.png)
循环神经网络小结
-
优点:
-
引入(短期)记忆
-
图灵完备
-
-
缺点:
-
长程依赖问题
-
记忆容量问题
-
并行能力
-
循环网络应用
语言模型
自然语言理解:一个句子的可能性/合理性
![image-20221109104353819](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109104354187-1778215354.png)
![image-20221109104556768](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109104557090-477605680.png)
基于序列到序列的机器翻译:一个RNN用来编码,另一个RNN用来解码
![image-20221109105137411](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109105137411-101267712.png)
写字、签名、对话系统...
扩展到图结构
![image-20221109105507262](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109105507658-1711476018.png)
递归神经网络(Recursive Neural Network)
递归神经网络实在一个有向图无循环图上共享一个组合函数
![image-20221109110030281](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109110030306-2101858918.png)
退化为循环神经网络
![image-20221109110322373](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109110322353-1212908199.png)
![image-20221109110403072](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109110403164-1034640791.png)
图数据
![image-20221109111345657](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109111345964-534152720.png)
图网络
![image-20221109111452923](/i/l/?n=22&i=blog/2910984/202211/2910984-20221109111452875-382127963.png)
对于一个任意的图结构G(V,E)
更新函数
\[\begin{aligned} \mathbf{m}_{t}^{(v)} &=\sum_{u \in N(v)} f\left(\mathbf{h}_{t-1}^{(v)}, \mathbf{h}_{t-1}^{(u)}, \mathbf{e}^{(u, v)}\right) \\ \mathbf{h}_{t}^{(v)} &=g\left(\mathbf{h}_{t-1}^{(v)}, \mathbf{m}_{t}^{(v)}\right) \end{aligned} \]读出函数
\[\mathbf{y}_{t}=g\left(\left\{\mathbf{h}_{T}^{(v)} \mid v \in \mathcal{V}\right\}\right) \]原创作者:孤飞-博客园
原文链接:https://www.cnblogs.com/ranxi169/p/16873036.html