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

李宏毅深度学习_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-07-20 11:02:40 qq_38342886 阅读数 1102

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. 无需人工介入理解文字的含义

 

2019-08-16 13:56:08 wangwei19871103 阅读数 199

深度学习的概况

深度学习从2012年的图像识别比赛开始就复苏了,发展越来越快,越来越好,具体他的发展历史可以百度下,可以追溯到很早时期,还有几个大起大落的阶段:
在这里插入图片描述
可以看看这些时间点的重要发展:
在这里插入图片描述

深度学习的步骤

那深度学习的步骤是怎么样的呢,其实跟我们前面说的机器学习差不多,就跟把大象放冰箱里的步骤差不多:
在这里插入图片描述
我们上次讲到了神经网络就是深度学习的重要部分,是由对个逻辑回归单元组合起来的:
在这里插入图片描述

前馈神经网络

先介绍下这个,其实就是前向传播,从输入计算到输出,输入的是向量,每个向量的每个特征都与后一层的每个神经元相连,通过激活函数计算输入,然后继续往后面的层输入,最后到输出层,是一个向量,比如图上的例子输入是[1,-1],经过第一层的计算后,得到[0.98,0.12],很明显经过了sigmoid的非线性作用:
在这里插入图片描述
那我们继续这样计算,知道计算到最后的输出:
在这里插入图片描述
那这整一个网络结构就可以看做是一个模型集合,输入是一个向量,输出也是一个向量:
在这里插入图片描述

全连接神经网络

我们来定义下这个网络,输入的向量也看做一层,叫做输入层,最后输出的向量叫输出层,中间的都叫隐藏层,每个层之间的神经网络都是相互连接的,所以叫做全连接神经网络:
在这里插入图片描述
所以深度学习的深度可以看做隐藏层的层数很多,所以看上去很深,比如经典的一些模型AlexNet,VGG,GoogleNet:
在这里插入图片描述
当然还有残差神经网络Residual Net:
在这里插入图片描述
其实神经网络的计算,我们可以用矩阵,这样就可以在GPU上计算,可以大大缩短时间,比如:
在这里插入图片描述
上面的值是一层,其实每一层都是这么计算的,计算出的结果向量又作为下一层的输入:
在这里插入图片描述
所以输出可以看成一个个sigmoid函数叠起来的结果,有点像递归调用啊:
在这里插入图片描述
通常我们把最后的输出层当做多分类器,中间的隐藏层其实就变成了特征提取器了:
在这里插入图片描述

数字识别分类

我们来举一个识别数字的例子:
我们希望输入一张数字的图片,输出是一个数字:
在这里插入图片描述
我们的输入是16x16像素的图,如果是填充颜色的就是1,没有就是0,因此有256个点也就是256个特征输入:
在这里插入图片描述
我们的输出是一个10维的向量,每一个维度代表一个数字的概率,取概率最大的为分类的数字,如下,2的概率有0.7,所以这个图片的数字被预测为2:
在这里插入图片描述
然后我们需要设计一些隐藏层来组成这个模型:
在这里插入图片描述
那么问题来了,隐藏层多少层好呢,每一层的神经元个数多少好呢,这个没有很准确的答案,很多的是根据经验试错和直觉得来的,也就是实际结果得出来的,当然也有让机器自动选择要多少层,另外网络的结构能不能变呢,可以的,可以用CNN或者RNN或者其他的:
在这里插入图片描述
接下来要定义模型的好坏了,我们拿真实的预测值和预测的值做交叉熵作为损失函数,为什么不用均方差前面一篇将过了,梯度为0的地方可能是远离最小点的:
在这里插入图片描述
于是我们拿很多的样本来进行训练,计算总的损失,我们希望损失越小越好,最小的损失的参数模型就是我们要找的:
在这里插入图片描述
那怎么样找出这个损失最小的模型呢,还是我们的梯度下降法:

在这里插入图片描述
其实这个过程就是反向传播,具体是用链式法则求导的,也就是一个计算梯度更新参数的过程,当然当参数很复杂的时候我们不可能手动去算,现在有很多的框架,当然下面列的可能是比较老的了,现在一般有keras,pytorch,tensorflow,mxnet等等:
在这里插入图片描述
至此,深度学习怎么训练最基本的步骤讲完了。

总结

本篇简单介绍了深度学习的基本框架,介绍全连接神经网络的架构,介绍了前向传播和反向传播,其实如果考虑特征空间问题,那么隐藏层在做的是就是把原始的特征空间不断的进行扭曲变形,生成新的特征空间,也就是特征被映射到新的特征空间,就是坐标变换,用来做分类或者回归,而每一层的神经元的个数就是特征空间的维度,维度越高越容易区分。附上思维导图:
在这里插入图片描述
好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵,图片来自李宏毅课件,侵删。

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

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

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

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

多少啊的

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