2018-05-23 12:01:20 qq_25011449 阅读数 388

李宏毅深度学习_Backpropagation

本文是李宏毅深度学习 (2015)的学习笔记,主要介绍了神经网络Backpropagation算法的推导过程。本文所用到的图示均来自课堂ppt。

原视频地址:李宏毅深度学习 (2015)

Background

BP的背景

为了使用Gradient Descent对网络参数进行训练,我们就要求出Cost Function对每一层参数的梯度,由于本质上wijlbil差别不大(可将bil看作wijl中的一项),因此我们这里仅对Cr/wijl进行推导,Cr/bil推导类似。

链式法则

求导链式法则

这里使用求导链式法则先将这个问题拆解成两部分,然后分别对每一部分的求导进行计算。

计算链式法则中拆解的两部分

1. 计算zil/wijl

第一部分求导

第一部分的求导分为两种情况:

  • l>1。即当权值不是第一层时,导数为ajl1
  • l=1。即权值为第一层时,导数为xjr

2. 计算Cr/zil

第二部分求导1

为了描述方便将Cr/zil描述为δil。此时利用BP的思想,先求出最后一层的δL,再找出后一层δl+1与前一层δl的关系,以此求出所有的δl

第二部分求导2

同样根据链式求导法则可以得出

δnL=σ(znL)Crynr

其中Crynr与Cost Function的选取有关。

第二部分求导3
第二部分求导4

zil的变化Δzil会对ail造成影响进而影响到下一层的zl+1

第二部分求导6

向量化后得到

δl=σ(zl)(Wl+1)Tδl+1

总结

总结

至此,我们已经完成了对Cr/wijl的推导,并且实现了向量化。Cr/bil推导类似。

2018-05-25 10:20:46 qq_25011449 阅读数 496

李宏毅深度学习_Tips for Training Deep Neural Network

本文是李宏毅深度学习 (2015)的学习笔记,主要介绍了在训练DNN过程中的不同阶段用到的一些技巧。本文所用到的图示主要来自课堂ppt。

原视频地址:李宏毅深度学习 (2015)

概述

Outline

想要提高深度学习的效率和收获比较好的结果,可以从以上五部分(其实只有四部分,Data Preprocessing没讲,可能涉及到数据归一化,PCA数据压缩等)入手,下面分别从每个部分入手,介绍一些常用于深度学习中的技巧。

一、Activation Function

在浅层BP神经网络中经常使用Sigmoid函数作为激活函数,但是Sigmoid函数在DNN中会存在一些问题:一方面,对Sigmoid函数求导计算量较大;另一方面,隐含层较多的情况下,BP过程中会出现Vanishing Gradient Problem。

Vanishing Gradient Problem

sigmoid

vanishing

我们知道Sigmoid函数的导数最大值小于1(在0处,只有0.2左右),而在BP过程中,δl=σ(zl)(Wl+1)Tδl+1,使得前一层的误差项δl会越来越小,致使求解出的梯度也会也来越小,这样在DNN的训练中,靠前的隐含层参数收敛速度会很慢。

ReLU

ReLU

由上图可以看出,当z的值大于0时,激活函数ReLU的导数始终为1,这样BP过程就不会再出现Vanishing Gradient Problem,但ReLU很容易使一些神经元“dead”,可以使用ReLU的一些变体,如:Leaky-ReLU或者Parametric-ReLU解决,或者,在初始化参数时,将bias的值尽量调大,这样z的值就不容易小于0了。

ReLU-variant

Maxout

Maxout

激活函数Maxout是在确定网络结构后将每一层的权值分组,选取每一组中z的最大值传入下一层,而其他的z相当于置0了。类似于ReLU我们可以得到更瘦的网络结构。Maxout没有明确的表达式和导数,它与输入、权值和bias都有关,可以认为是Learnable的Activation Function。

这里写图片描述

Maxout虽然没有显式的导数,但在经过如上图的简化后,整个网络的结构就可变为一个更瘦的全连接网络,可用BP算法求解,且满足zl=al。虽然,这会使得网络只更新了一部分的参数,但对于不同的输入,使用Stochastic Gradient Descent时每次更新的参数也会不完全相同,最终所有的参数都会被更新。

二、Cost Function

这一部分从Cost Function的角度入手,改进DNN。

Softmax

softmax

输出层使用Softmax函数计算,这样使得各项输出统一起来(二分类问题中Softmax函数可看作退化为Sigmoid函数),具体地,使输出层满足:

  • 1>yi>0
  • Σiyi=1

Cross Entropy

cross entropy

为了配合Softmax我们使用Cross Entropy作为代价函数,此时只需考虑正确分类的那一维的交叉熵作为代价即可,因为其他维的z在Softmax中对正确分类的那一维也有影响,使用正确的这一维作为代价已经将其他维度也考虑进去了。

cost1

cost2

求输出层的误差值δL将分成两部分,第一部分是对于正确分类的那一维而言,另一部分是对于其他维度而言。将误差值花化简后可以看出,使用交叉熵和Softmax配合也可以使得输出层计算量减少。

三、Optimization

优化可从两点考虑:一是选择更合适的Learning Rate;二是对局部最优的处理。

1、Learning Rate

采取自适应的Learning Rate,可以使收敛速度加快。

Adagrad

Adagrad

Adagrad对Learning Rate的更新与过去每次迭代参数的梯度有关,可以看出Leaerning Rate是一直在减小的,这是符合直觉的。

Adagrad1

Adagrad2

事实上,Adagrad表现更优异的原因是Learning Rate不仅与一阶导数有关,还与二阶导数有关,Adagrad公式中用一阶导数平方和的平方根来近似二阶导数(这个值越大说明二阶导数也越大,应该适当减小Learning Rate),使得Learning Rate更为合理,适应性更强。

2、Momentum

Physical

如上图所示,在Gradient Descent中加入Momentum(动量、动力、冲力),有时可以使Cost Function冲出Local Minimum。

Momentum

加入Momentum后,当前步的移动方向会与当前负梯度和上一步的移动方向有关。因此,之前每一步的移动都会对当前步的移动方向造成影响,相当于有一个惯性。

四、Generalization

为了让一个深度学习的模型表现更好,一个通用的方法就是收集更多的训练数据,但这样做也面临一个问题就是过拟合,模型往往在训练集上效果很好在测试集表现没那么优异,这一部分介绍了三个常用的方法来解决这个问题。

1、Early Stopping

earlystopping

从图中可以看出,随着模型参数的增多,对训练集的拟合程度越来越高,然而对于测试集,拟合程度一般来说会先升后降,因此我们要把模型的参数控制在一个合适的范围,以避免过拟合现象,但没有确切的方法来确定这个范围。

2、Weight Decay

weightdecay1

weightdecay2

代价函数中加入正则项后,直观地理解为,要使新的Cost Function值越来越小,不仅要让老的Cost Function值减小,还要使正则项值减小,这要就会让权值尽量变小。这样做的思想也是尽量减少模型参数,权值变小,对网络影响就会小,一个特例,如果权值减小到0,那么相当于模型少了一个参数。

3、Dropout

dropout1

dropout2

Dropout有点类似于Boost方法的思想,就是利用相对简单的几个模型组合起来,构成一个复杂的效果更好的模型。在对测试集进行检验时,使用的是几个简单模型的线性组合。在应用Dropout时,有以下几点建议:

dropout3

总结

至此,在深度学习中几种常用的技巧已经介绍完了,大家在训练自己模型的时候要灵活运用,以提高训练速度和精度。

2019-04-13 21:34:08 baidu_41867252 阅读数 160

1 Basic Structures for Deep Learning Models

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
y是由hh'运算得到的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
强制与c相乘的矩阵是对角阵,这样可以减少参数量

在这里插入图片描述
与下一个LSTM单元相连
在这里插入图片描述
在这里插入图片描述
粗箭头代表矩阵,LSTM有4个,GRU有3个‘。GRU计算量少,并且不容易过拟合。

3 Computational Graph and Backpropagation

在这里插入图片描述
在这里插入图片描述
计算图的方式:
在这里插入图片描述
在这里插入图片描述
注:代价值 C 是一个常数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Cy\frac{\partial C}{\partial y} 是一个长条状,一行多列。
softmax 得到的不是 diagonal matrix,因为所有的 z 都会影响每一个 yiy_i
在这里插入图片描述
在这里插入图片描述
注:将 Wmn2W^2_{mn} 平铺,共有 m*n 个元素
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
左右两边结果一样
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 Language Model

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2018-07-20 11:02:40 qq_38342886 阅读数 1094

http://www.cnblogs.com/wdsunny/p/6477018.html

废话少说,先上干货,整个PPT的思维导图如下:

 

深度学习概论

介绍深度学习

作者非常浅显的指出机器(深度)学习过程非常简单,分为定义方法、判断方法的优劣、挑选出最佳的方法。

对于深度学习,首先第一步定义方法 - 神经网络。深度学习顾名思义是指多层的神经网络。

神经网络的思想来源于对于人脑的生理上的研究,人脑由数亿个神经元组成,神经元通过轴突互相连接通信。神经网络和人脑类似,存在多个层级(layer),每个层级都有多个节点(神经元),层级和层级之间相互连接(轴突),最终输出结果。

对于神经网络的计算能力可以理解为通过一层层Layer的计算归纳,逐步的将抽象的原始数据变的具体。以图片识别为例,输入是一个个像素点,经过每层神经网络,逐步变化成为线、面、对象的概念,然后机器有能力能够识别出来。

 

 第二步,评估方法的优劣。

Loss function是用于评估方法优劣,通常我们用学习出来的参数对测试数据进行计算,得出对应的预测(y)然后和真实的测试数据的目标值(t)进行比对,y和t之间的差距往往就是Loss。那么评估一个算法的好坏,就是要尽可能的降低Loss。

 

第三步,如何获得最佳的学习方法

获得最佳的学习是采用梯度下降算法,作者也提到梯度下降算法存在局部最优解的问题。人们往往认为机器无所不能,实际上更像是在一个地图上面拓荒,对周边一无所知。神经网络计算梯度的算法是反向传播算法,简称BP。

 

Why Deep?

作者首先指出越多的参数往往带来越好的预测能力,所以神经网络往往参数越多越好。那么如果是同样的参数情况下,为什么层级较多的表现会更好呢?

 

作者认为深度网络可以带来模块化的好处,随着网络的层级,神经网络会将像素元素逐渐归纳出一些基本的特征,进而变成纹理,进而变成对象。

 

训练方法

 

作者总结下来训练过程中会发现了两种情况:

1. 没有办法得到很好的训练结果 ---》 重新选择训练方式

2. 没有办法得到很好的测试结果 ---》 往往由于过度拟合导致,需要重新定义方法

 

 

优化训练方法的手段:

1. 选择合适的Loss function:使用Cross Entropy效果要优于Mean Square Error

2. Mini-batch: 每次训练使用少量数据而不是全量数据效率更高

3. Activation Function:使用ReLU替代Sigmoid可以解决梯度消失的问题,可以训练更深的神经网络

4. Adaptive Learning Rate:可以随着迭代不断自我调整,提高学习效率

5. Momentum: 可以一定程度上避免陷入局部最低点的问题

 

避免过度拟合(overfitting)的方法:

1. Early Stopping:使用cross validation的方式,不断对validation data进行检验,一旦发现预测精度下降则停止。

2. Weight Decay:参数正则化的一种方式?

3. Dropout:通过随机去掉一些节点的连接达到改变网络形式,所以会产生出多种网络形态,然后汇集得到一个最佳结果

4. Network Structure: 例如CNN等其他形态的网络

 

神经网络变体

Convolutional Neural Network (CNN)

通常情况下,一个CNN包含多次的卷积、池化,然后Flatten,最终再通过一个深度神经网络进行学习预测。CNN在图像、语音识别取得非常好的成绩,核心的想法在于一些物体的特征往往可以提取出来,并且可能出现在图片的任何位置,而且通过卷积、池化可以大大减少输入数据,加快训练效率。

 

Recurrent Neural Network (RNN)

RNN的想法是可以将hidden layer的数据存储下来,然后作为输入给下一个网络学习。这种网络的想法可以解决自然语言中前后词语是存在关联性的,所以RNN可以把这些关联性放到网络中进行学习。

 

其他前沿技术

Ultra Deep Network:2015年出现了152层的Residual Net实现了图片3.57%错误率

 

Reinforcement Learning: 通过奖励机制强化学习,并且做出相应的动作

Unsupervised Learning:

1. Deep Style

2. 生成图片

 

3. 无需人工介入理解文字的含义

 

多少啊的

博文 来自: u014163559
没有更多推荐了,返回首页