本文是接着上一篇深度学习之 11 残差网络的实现_水w的博客-CSDN博客
目录
1 网络记忆能力
实例1:语言模型
实例2: 槽填充(Slot Filling)问题
延时神经网络(Time Delay Neural Network,TDNN)
2 循环神经网络(RNN)
RNN的输入输出
◼ Many-to-One模型:
◼ One-to-Many模型
◼ Many-to-Many模型(同步)
◼ Many-to-Many模型(异步)
◼ RNN模型应用举例
3 随时间反向传播(BPTT)
BPTT算法基本原理
A. 前向计算
B. 误差项的计算
C. 权重梯度的计算
4 双向循环神经网络
◼ 双向循环神经网络的隐藏层
• 全连接神经网络 和 卷积神经网络➢ 只能单独的处理一个个的输入,前一个输入和后一个输入 是完全没有关系的 。• 比如输入一整张图片。• 某些任务需要能够更好的处理序列 的信息,➢ 前面的输入和后面的 输入是有关系的 。• 比如,当理解一句话意思时,孤立的理解这句话的每个词是不够的,需要处理这些词连接起来的整个 序列 ;• 当处理视频的时候,不能只单独的去分析每一帧,而要分析这些帧连接起来的整个 序列 。
我昨天上学迟到了,老师批评了____。
分词结果:
我|昨天|上学|迟到|了 ,老师|批评|了 ____。
目 的 地:台北
到达时间:2020.08.02
如何使用前馈神经网络(Feedforward network)解决此问题?
出 发 地:台北
出发时间:2020.08.02
对于前馈神经网络,使得输入“台北”时,出发地的概率最大。
如何给网络增加记忆能力(除RNN外)?延时神经网络(Time Delay Neural Network,TDNN)
一个简单的循环神经网络由 输入层 、一个 隐藏层 和一个 输出层 组成。• 去掉有W的带箭头的圈,它就变成普通的 全连接神经网络• x 是一个向量,它表示 输入层 的值• s 是一个向量,它表示 隐藏层 的值, s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层 的值• o 也是一个向量,它表示 输出层 的值• U 是输入层到隐藏层的 权重矩阵• V 是隐藏层到输出层的 权重矩阵• W 是 隐藏层 上一次的值作为这一次的输入的 权重矩阵
如果反复将(式2)带入(式1),我们将得到,即输出值o ,受前面历次输入值x,x−1、x−2、x−3…的影响。
RNN是一个序列模型• 如何将可变长度序列作为 输入 ?• 如何预测可变长度序列作为 输出 ?• 神经网络模型通过训练“学”到的东西蕴含在“ 权值 ”中。• 基础的神经网络只在 层与层 之间建立权连接,• 而RNN最大的不同之处在于隐藏 层内 的神经元也建立了权连接。
在文本分类中,输入数据为单词的序列,输出为该文本的类别。
- RNN写诗
RNN读门牌号 、RNN绘制门牌号 Shakespeare
• BPTT(Back-Propagation Through Time)算法是常用的训练RNN的方法,因为RNN处理时间序列数据,所以要基于时间反向传播,故称作 随时间反向传播 。• BPTT的中心思想是沿着需要优化的参数的负梯度方向不断寻找更优的点直至收敛(和BP算法相同)。• BPTT算法本质上还是BP算法,BP算法本质是梯度下降法,那么求各个参数的梯度便成了此算法的核心。
需要寻优的参数有三个,分别是 U、V、W 。与BP算法不同的是, 权重矩阵W和U的寻优过程需要追溯之前的历史数据 (BPTT算法的重点)。
BPTT算法是针对 循环层 的训练算法,它的基本原理和BP算法是一样的, 也包含同样的三个步骤:A. 前向计算每个神经元的输出值;B. 反向计算每个神经元的 误差项 值( 它是误差函数 E 对神经元 的 加权输入 的偏导数 );C. 计算每个权重的梯度。 最后再用随机梯度下降 算法更新权重。
注意: 上面的 、 、 −1 都是向量,用 黑体字母 表示; 而U、V 是矩阵 ,用大写字母表示。 向量的下标 表示 时刻 , 例如, 表示在 t 时刻向量 s 的值,偏置 b 此处不体现。
BPTT算法将第 l 层 t 时刻的 误差项 tl 值沿两个方向传播:一个方向是其传递到上一层网络,得到 tl−1 ,这部分只和 权重矩阵 U 有关;另一个方向是将其沿时间线传递到初始 t 1 时刻,得到 1l,这部分只和 权重矩阵 W 有关。
最后,将两项合在一起,可得:
循环层将误差项反向传递到上一层网络,与普通的全连接层完全一样
最终的梯度 是各个时刻的梯度之和
对于语言模型来说,很多时候光看前面的词是不够的,比如下面这句话:
我的手机坏了,我打算____一部新手机。
基本循环神经网络无法对此进行建模,因此,需要 双向循环神经网络 .双向循环神经网络由两层循环神经网络组成,它们的输入相同,只是信息传递的方向不同。
2和′2 则分别计算:
正向计算时,隐藏层的值 与 −1 有关;反向计算时,隐藏层的值 ′与 +1 ′ 有关;最终的输出取决于正向和反向计算的 加和 。