深度学习的基础知识(RNN、LSTM等模型、激励函数、正则化、norm batch)

今天在看迁移学习中的一个模型COVE,里面用到了LSTM(ELMo也是),故而想回顾一下深度学习中的一些基础知识。

1.LSTM

在此之前先介绍fully connected、CNN、RNN等重要architecture(参见台大李宏毅老师的教程)

RNN与传统的feedward的区别在于:允许信息的持久化,即基于原始的信息去处理新的信息

但RNN不能处理长期依赖的问题(长期依赖指输出的根据离输出时刻太远,譬如根据当前视频段预测接下来视频,如果当前视频只与先前不久的视频相关,那么RNN可以很好的解决这个问题。但如果当前视频依赖于很久之前的视频,比如电影的结尾与开头相呼应,那么RNN就会表现很差)

Long Short Term Memory(LSTM) ——是一种 RNN 特殊的类型,可以很好解决这个问题。LSTM是在标准的RNN的基础上加入了其他的神经网络(gates),而这些gates只是控制数级,控制信息的流动量。

下面就是LSTM的计算过程。

2.ReLU

首先是激励函数ReLU,用它而不用sigmond,优点主要在于:1.计算快(线性函数) 2.避免梯度消失(sigmoid和tanh的gradient在饱和区域非常平缓,接近于0,很容易造成梯度消失的问题,减缓收敛速度)

扫描二维码关注公众号,回复: 5567655 查看本文章

然后我发现梯度爆炸和消失我记不清楚原理了,赶紧翻笔记、查资料,这篇文章介绍得比较清楚。

3.L1、L2正则化(面经当中问的较多)

      正则化是指在经验风险上加一个正则项或罚项,正则项一共有两种L1正则化和L2正则化,或者L1范数和L2范数。

(1)L1正则化:可使参数稀疏,排除无关特征的干扰,稀疏化的结果使优化后的参数一部分为0,另一部分为非零实值。

(2)L2正则化:可防止过拟合(让L2范数的正则项||W||2最小,可以使得W的每个元素都很小,都接近于0。而越小的参数说明模型越简单,越简单的模型越不容易产生过拟合的现象

注:防止过拟合还可以采取

(3)早停策略:将数据集划分成训练集和验证集,训练集用来计算梯度,更新权值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练。

(4)dropout(随机失活):通过在反向传播误差更新权值时候随机选择一部分权值不更新,相当于随机删除一部分hidden units(不是真实删除了,只是暂时不使用这部分units),通过这样的方法就能防止过拟合。

4.Batch Norm

(1)产生原因:机器学习理论依赖于样本独立同分布假设,而神经网络中,各层输入值在训练过程中其分布逐渐发生偏移或者变动,整体分布逐渐往非线性函数的取值区间的上下限两端靠(对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这导致反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因

(2)思想:BN就是通过一定的规范化手段(减去均值除以方差),把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化

(3)优点:让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。

猜你喜欢

转载自blog.csdn.net/zhiman_zhong/article/details/88103030