【DL小结1】DL入门

1.损失函数和激活函数的选择

1.1 均方差损失函数+sigmoid激活函数

均方差损失函数: L ( y , f ( x ) ) = ( y − f ( x ) ) 2 L(y,f(x))=(y-f(x))^2 L(y,f(x))=(yf(x))2sigmoid激活函数: σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+ez1sigmoid激活函数的性质: σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma^{'}(z)=\sigma(z)(1-\sigma(z)) σ(z)=σ(z)(1σ(z))假设输出是连续可导的值
算法收敛速度慢

1.2 交叉熵损失函数+sigmoid激活函数

交叉熵损失函数: L ( y , P ( y ∣ x ) ) = − 1 m ∑ i = 1 m [ y i l o g p ( x i ) + ( 1 − y i ) l o g ( 1 − p ( x i ) ) ] L(y,P(y|x))=-\frac{1}{m}\sum_{i=1}^m[y_ilogp(x_i)+(1-y_i)log(1-p(x_i))] L(y,P(yx))=m1i=1m[yilogp(xi)+(1yi)log(1p(xi))]假设输出是连续可导的值
交叉熵损失函数代替均方差损失函数,改进DNN算法收敛速度

1.3 对数似然损失函数+softmax激活函数

对数似然损失函数: L ( y , P ( y ∣ x ) ) = − l o g P ( y ∣ x ) = − 1 m ∑ i = 1 M ∑ j = 1 N y i j l o g ( p i j ) L(y,P(y|x))=-logP(y|x)=-\frac{1}{m}\sum_{i=1}^M\sum_{j=1}^{N}y_{ij}log(p_{ij}) L(y,P(yx))=logP(yx)=m1i=1Mj=1Nyijlog(pij)其中, y i j y_{ij} yij 是一个二值指标,表示类别 j j j 是否是输入实例 x i x_i xi 的真实类别。
p i j p_{ij} pij 为分类器预测输入实例 x i x_i xi 属于类别 j j j 的概率。

softmax激活函数: S i = e i ∑ j e j S_i=\frac{e^{i}}{\sum_je^{j}} Si=jejei

处理多分类问题

1.4 梯度爆炸梯度消失+ReLU激活函数

在反向传播的过程中,由于我们使用矩阵求导的链式法则,有一连串连乘。

  • 如果连乘的数字都是小于1,则梯度越来越小,直到消失
    解决:调整初始化参数
  • 如果连乘的数字都是大于1,则梯度越来越大,导致爆炸
    解决:使用ReLU激活函数 R e L U ( x ) = m a x ( 0 , x ) ReLU(x)=max(0,x) ReLU(x)=max(0,x)

2.DNN前向传播

DNN的前向传播算法就是利用若干个权重系数矩阵W,偏倚向量b和输入向量x进行一系列线性运算和激活运算,从输入层开始,一层层向后计算,直到输出层,得到输出结果
在这里插入图片描述

3.DNN反向传播

DNN的反向传播算法就是对DNN的损失函数用梯度下降法进行迭代优化求极小值的过程。
在这里插入图片描述
在这里插入图片描述

4. DNN算法流程

5.DNN的正则化

5.1. L1,L2正则化

范数规则化的两个作用:

  • 保证模型尽可能的简单,避免过拟合
    参数值大小和模型复杂度是成正比的。参数过多会导致模型复杂度上升,越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点。
  • 约束模型特性,加入一些先验知识,例如稀疏、低秩​等。

L0范数

L0是指向量中非0的元素的个数。

如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0。即让参数W是稀疏的。稀疏的好处:

  • 简化模型,避免过拟合;
  • 参数变少可以提高可解释性

但是,L0范数的最优化问题是一个NP hard问题,理论证明,L1范数是L0范数的最优凸近似,因此通常使用L1范数来代替。

L1范数

L1范数是指向量中各个元素绝对值之和。

L1正则化之所以可以防止过拟合,是因为它能产生等于0的权值,即产生稀疏的效果。参数值大小和模型复杂度是成正比的。因此复杂的模型,其L1范数就大,最终导致损失函数就大,说明这个模型就不够好。

L2范数

L2范数即欧式距离。

L2正则化之所以可以防止过拟合,是因为它是让各个参数接近于0。越小的参数说明模型越简单,越简单的模型越不容易产生过拟合现象。

L1稀疏、L2平滑

  • 假定 w i &gt; 0 w_i&gt;0 wi>0,L1的权值每次更新都固定减少一个特定的值,那么经过若干次迭代之后,权值就有可能减少到0。 w i = w i − η w_i=w_i-\eta wi=wiη。( w i &lt; 0 时 则 是 增 加 到 0 w_i&lt;0时则是增加到0 wi<00)。

  • L2的权值更新公式为 w i = w i − η ∗ w i wi= wi- η * w_i wi=wiηwi,假设 η = 0.5 \eta=0.5 η=0.5,也就是说权值每次都等于上一次的1/2,那么,虽然权值不断变小,但是因为每次都等于上一次的一半,所以很快会收敛到较小的值但不为0。

因此

  • L1能产生等于0的权值,即产生稀疏的效果
  • L2能迅速得到比较小的权值,但是难以收敛到0,即产生平滑的效果 。

5.2. 集成学习

类似随机森林,用若干个DNN网络

5.3. dropout正则化

5.3.1 dropout

在训练模型时,dropout通过随机去掉一些神经元以获得不同的架构,防止参数过分依赖训练数据,增加参数对数据集的泛化能力
Dropout相当于模型平均、模型组合。对于随机梯度下降sag来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。不同的网络在不同的情况下过拟合,但是共用一个损失函数,相当于同时进行了优化,取了平均

5.3.2 target dropout

来源

19年2月新提出来的target dropout

对比
  • dropout通过随机删除一些神经元或权重以获得不同的「架构」。
  • target dropout将剪枝隐性地构建到 Dropout 中,在训练中「随机」删除很弱的连接,或不重要的神经元,从而构建更「重要」的架构
思想

根据一些快速逼近权重重要性的度量对权重或神经元进行排序,并将 Dropout 应用于那些重要性较低的元素。与正则化 Dropout 观察结果相似,作者表示该方法能鼓励神经网络学习更重要的权重或神经元。换而言之,神经网络学习到了如何对剪枝策略保持足够的鲁棒性。

优点

  • 令神经网络的收敛对剪枝极其鲁棒。
  • 非常容易实现,使用主流框架只需要修改两行代码。
  • 该网络非常明确,我们所需要的稀疏性程度都可以自行设定。

5.4. 数据增强

增加训练数据
交叉验证法

  • 用于评估模型的预测性能,尤其是训练好的模型在新数据上的表现,可以在一定程度上减小过拟合。
  • 从有限的数据中获取尽可能多的有效信息。

6、梯度下降法

6.1. 批量梯度下降法BGD

批量梯度下降法是梯度下降法最原始的形式,它的具体思路是在更新每一参数时都使用所有的样本来进行更新

优点:全局最优解;易于并行实现;
缺点:当样本数目很多时,训练过程会很慢。

从迭代的次数上来看,BGD迭代的次数相对较少。

6.2. 批量梯度下降法SGD

由于批量梯度下降法在更新每一个参数时,都需要所有的训练样本,所以训练过程会随着样本数量的加大而变得异常的缓慢。随机梯度下降法(Stochastic Gradient Descent,简称SGD)正是为了解决批量梯度下降法这一弊端而提出的。

随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将theta迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。

但是,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。

优点:训练速度快;
缺点:准确度下降,并不是全局最优;不易于并行实现。

从迭代的次数上来看,SGD迭代的次数较多,在解空间的搜索过程看起来很盲目

6.3. 小批量梯度下降法MBGD

小批量梯度下降法(Mini-batch Gradient Descent,简称MBGD)在两种方法的性能之间取得一个折衷,在每次更新参数时使用b个样本(b一般为10)

参考教程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值