logo资料库

CNN、DNN、RNN学习总结.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
神经网络的学习就是学习如何利用矩阵的线性变换加激活函数的非线性变换,将原始输入空间投向线性可 分/ 稀疏的空间去分类 / 回归。增加节点数:增加维度,即增加线性转换能力。增加层数:增加激活函数的 次数,即增加非线性转换次数。 对卡在局部极小值的处理方法: 1.调节步伐: 调节学习速率,使每一次的更新“步伐”不同; 2.优化起点 :合理初始化权重( weights initialization )、预训练网络( pre-train ),使网络获得一个较 好的“起始点”,如最右侧的起始点就比最左侧的起始点要好。 常用方法有:高斯分布初始权重( Gaussian distribution )、均匀分布初始权重( Uniform distribution )、 Glorot 初始权重、 He 初始权、稀疏矩阵初始权重( sparse matrix )。 浅层 VS 深层: 浅层神经网络可以模拟任何函数,但数据量的代价是无法接受的。深层解决了这个问题。相比浅层神经网 络,深层神经网络可以用 更少的数据量 来学到更好的拟合。深层的前提是:空间中的元素可以由迭代发展 而来的。 防止过拟合: L2 正则化, Dropout( 若规律不是在所有样本中都存在 ,则 dropout 会删除这样的规律 ), 每个 epoch 之后 shuffle 训练数据, 设置 early-stopping 。 加 Batch Normalization(BN 首先是把所有的 samples 的统计分布标准化,降低了 batch 内不同样本的 差异性,然后又允许 batch 内的各个 samples 有各自的统计分布 ) ,BN 最大的优点为允许网络使用较大 的学习速率进行训练,加快网络的训练速度(减少 epoch 次数),提升效果。 为何使用 Batch Normalization : 若用 多个梯度的均值 来更新权重的批量梯度下降法可以用相对少的训练次数遍历完整个训练集,其次可以 使更新的方向更加贴合整个训练集,避免单个噪音样本使网络更新到错误方向。然而也正是因为平均了多 个样本的梯度,许多样本对神经网络的贡献就被其他样本平均掉了,相当于在每个 epoch 中,训练集的 样本数被缩小了。 batch 中每个样本的差异性越大,这种弊端就越严重。一般的解决方法就是在每次训练 完一个 epoch 后,将训练集中样本的顺序打乱再训练另一个 epoch ,不断反复。这样重新组成的 batch 中的样本梯度的平均值就会与上一个 epoch 的不同。而这显然增加了训练的时间。同时因为没办法保证 每次更新的方向都贴合整个训练集的大方向,只能使用较小的学习速率。这意味着训练过程中,一部分 steps 对网络最终的更新起到了促进,一部分 steps 对网络最终的更新造成了干扰,这样“磕磕碰碰”无 数个 epoch 后才能达到较为满意的结果。 为了解决这种“不效率”的训练, BN 首先是把所有的 samples 的统计分布标准化,降低了 batch 内不 同样本的差异性,然后又允许 batch 内的各个 samples 有各自的统计分布。 1. 为什么神经网络高效 :并行的先验知识使得模型可用线性级数量的样本学习指数级数量的变体 2. 学习的本质是什么 :将变体拆分成因素和知识( Disentangle Factors of Variation ) i. 为什么深层神经网络比浅层神经网络更高效 :迭代组成的先验知识使得样本可用于帮助训练其他 共用同样底层结构的样本。 ii. 神经网络在什么问题上不具备优势 :不满足并行与迭代先验的任务 3. 非迭代:该层状态不是由上层状态构成的任务(如:很深的 CNN 因为有 max pooling ,信息会逐 渐丢失。而 residual network 再次使得迭代的先验满足) CNN: 1)卷积:对图像元素的矩阵变换,是提取图像特征的方法,多种卷积核可以提取多种特征。一个卷积核
覆盖的原始图像的范围叫做感受野(权值共享)。一次卷积运算 (哪怕是多个卷积核 )提取的特征往往是局 部的,难以提取出比较全局的特征,因此需要在一层卷积基础上继续做卷积计算 ,这也就是多层卷积。 2)池化:降维的方法,按照卷积计算得出的特征向量维度大的惊人,不但会带来非常大的计算量,而且 容易出现过拟合,解决过拟合的办法就是让模型尽量“泛化”,也就是再“模糊”一点,那么一种方法就 是把图像中局部区域的特征做一个平滑压缩处理,这源于局部图像一些特征的相似性 (即局部相关性原理 ) 。 3) 全连接: softmax 分类 训练过程: 卷积核中的因子 ( ×1或× 0) 其实就是需要学习的参数,也就是卷积核矩阵元素的值就是参数值。一个特征 如果有 9 个值, 1000 个特征就有 900 个值,再加上多个层,需要学习的参数还是比较多的。 CNN 的三个优点: sparse interaction( 稀疏的交互 ), parameter sharing( 参数共享 ), equivalent respresentation( 等价表示 )。适合于自动问答系统中的答案选择模型的训练。 CNN 与 DNN 的区别: DNN 的输入是向量形式,并未考虑到平面的结构信息,在图像和 NLP 领域这一结构信息尤为重要,例如 识别图像中的数字,同一数字与所在位置无关(换句话说任一位置的权重都应相同), CNN 的输入可以 是 tensor ,例如二维矩阵,通过 filter 获得局部特征,较好的保留了平面结构信息。 filter 尺寸计算 :Feature Map 的尺寸等于 (input_size + 2 * padding_size - filter_size)/stride+1 RNN: 1. 为什么具有记忆功能? 这个是在 RNN 就解决的问题,就是因为有递归效应,上一时刻隐层的状态参与到了这个时刻的计算过程 中,直白一点呢的表述也就是选择和决策参考了上一次的状态。 2. 为什么 LSTM 记的时间长? 因为特意设计的结构中具有 CEC 的特点,误差向上一个状态传递时几乎没有衰减,所以权值调整的时候, 对于很长时间之前的状态带来的影响和结尾状态带来的影响可以同时发挥作用,最后训练出来的模型就具 有较长时间范围内的记忆功能。 误差回传的主力还是通过了 Memory Cell 而保持了下来。所以我们现在用的 LSTM 模型,依然有比较好 的效果。 最后整个梳理一下误差回传的过程,误差通过输出层,分类器,隐层等进入某个时刻的 Block 之后,先将 误差传递给了 Output Gate 和 Memory Cell 两个地方。 到达输出门的误差,用来更新了输出门的参数 w ,到达 Memory Cell 之后,误差经过两个路径, 1 是通过这个 cell 向前一个时刻传递或者更前的时刻传递, 2 是用来传递到 input gate 和 block 的输入,用来更新了相应的权值(注意!不会经过这里向前一个时 刻传递误差)。 最关键的问题就是,这个回传的算法,只通过中间的 Memory Cell 向更前的时刻传递误差。
在 RNN 中 U 、V、 W 的参数都是共享的,也就是只需要关注每一步都在做相同的事情,只是输入不同, 这样来降低参数个数和计算量。 RNN 特点: 时序长短可变(只要知道上一时刻的隐藏状态 ht-1ht-1 与当前时刻的输入 xtxt ,就可以计算当前时刻的 隐藏状态 htht 。并且由于计算所用到的 WxhWxh 与 WhhWhh 在任意时刻都是共享的。递归网络可以处 理任意长度的时间序列)顾及时间依赖,未来信息依赖(双向递归) RNN 主要包括 LSTM,GRU GRU 对 LSTM 做了两个大改动 : 1. 将输入门、遗忘门、输出门变为两个门:更新门( Update Gate )和重置门( Reset Gate )。 2. 将单元状态与输出合并为一个状态: GRU 只用了两个 gates ,将 LSTM 中的输入门和遗忘门合并成了更新门。并且并不把线性自更新建立在 额外的 memory cell 上,而是直接线性累积建立在隐藏状态上,并靠 gates 来调控。
分享到:
收藏