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-01-15 23:22:54 sinat_25346307 阅读数 613

视频链接:李宏毅机器学习(2016)_演讲•公开课_科技_bilibili_哔哩哔哩

课程资源:Hung-yi Lee

课程相关PPT已经打包命名好了:链接:pan.baidu.com/s/1c3Jyh6 密码:77u5


我的第五讲笔记:李宏毅机器学习2016 第五讲 逻辑回归

Deep Learning


本章节首先介绍了深度学习的历史,然后较为详细地讲解了深度学习的三大步。


1.深度学习的起起伏伏


深度学习历史

其实在1958年就已经提出了感知机模型,其和上一节所讲的逻辑回归相比,只是最后计算值没有经过sigmoid函数处理。而是通过sgn函数输出结果0或1.

多层感知机模型在80年代就已经提出,很多人会问其和深度学习有什么区别?其实在之前06年RBM受限制玻尔兹曼机模型,如果说初始化用的是RBM就是深度学习,否则就是多层感知机,不过这一想法被否定了,因为人们发现这个RBM并没有那么大用处,就像是“石头汤”里面的石头一样。

GPU的利用极大的提升了深度学习的计算能力。

在12年的时候,深度学习参加ILSVRC图像大赛夺冠,引起了人们的关注。


2.深度学习三大步


深度学习和之前讲的其他机器学习方法没有很大区别,第一步是选择神经网络,第二步是定义函数好坏标准,第三步就是选择一个好的函数。这就像把大象放进冰箱一样简单。

Step1:

不同的连接方式会得到不同神经网络结构,最常见的就是全连接神经网络。


给一个网络结构,就定义了一个函数集;有确切的w和b,就是一个具体的函数。


不同的网络结构

通过矩阵运算以及GPU的并行计算能力能够加速网络的学习。


深度学习明显的优势在于不用手动的去做特征工程,而是可以通过定义网络结构隐藏层等使得网络可以自动提取特征。

常见问题


step2:定义函数好坏标准

损失函数用的是交叉熵函数,对于所有的训练样本,得到损失值,再进行参数更新找到能够使得损失最小的函数。




step3:挑选最佳函数


方法还是用的gradient descent,即使是阿尔法狗都是用的梯度下降。


计算偏导在神经网络中会较为复杂,但是现成有很多库能够帮助我们较快的计算出偏导。

例如TensorFlow、caffe、theano等等。


3.思考


具有一个隐藏层的网络结构就可以表示任意复杂的函数,只要有足够的隐藏单元。

所以,为什么要选择深的网络而不是选择胖的呢?


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

 

2018-09-18 00:00:06 weixin_43061212 阅读数 107

”《1天搞懂深度学习》,300多页的ppt,台湾李宏毅教授写的,非常棒。不夸张地说,是我看过最系统,也最通俗易懂的,关于深度学习的文章。“

这是slideshare的链接:
http://www.slideshare.net/tw_dsconf/ss-62245351?qid=108adce3-2c3d-4758-a830-95d0a57e46bc&v=&b=&from_search=3

没梯子的同学,可以从我的网盘下:
链接:http://pan.baidu.com/s/1nv54p9R 密码:3mty

废话少说,先上干货,整个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. 无需人工介入理解文字的含义

 

2018-11-15 22:57:33 qq_36829091 阅读数 1641

                             第三讲 Q-learning(Basic Idea)

视频地址:https://www.bilibili.com/video/av24724071?t=1121&p=3

PPT地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses/MLDS_2018/Lecture/QLearning%20(v2).pdf

第一讲整理:【李宏毅深度强化学习2018】P1 Policy Gradient(Review)

第二讲整理:【李宏毅深度强化学习2018】P2 Proximal Policy Optimization (PPO)

 

 

Q-learning 是 value base 的方法,在这种方法中我们不是要学习一个 policy网络,而是要学一个 critic网络。critic 并不采取行为,只是针对现有的 actor \pi,评价它的好坏。

critic 给出了一个 value function V^\pi(s),代表在遇到游戏的某个 state 后,采取策略 \pi  一直玩到游戏结束,所能得到的 reward 之和

所以 V^\pi(s)(即critic)是个函数,一个网络(前两讲提到 actor 同样是个网络)。它的输入是某个state,输出是一个scalar标量。上图游戏画面中左边的 V^\pi(s) 很大,因为当前怪物比较多,防护罩也没被摧毁,从此时玩到游戏结束得到的 reward 就会比较多;而相对的右边的 V^\pi(s) 就比较小。综上 critic 的输出取决于两点:1是 state,2是 actor 的策略 \pi

 

怎么评价一个 critic 的好坏呢?

基于蒙特卡洛 Monte-Carlo(MC)based 的评价方法:

由于 critic 就是一个网络,所以我们可以训练它,训练的方法是,给定一个策略 \pi,在 S_a 的情况下,网络输出为 V^\pi(S_a)(代表预测的 reward);实际得到的 reward 为 G_a 。我们的目标就是让 V^\pi(S_a) 和 G_a 尽可能接近,这其实和 regression problem 很相似。

 

基于时序差分Temporal-difference base 的方法评价方法:

MC base 的策略需要在某个 state 后一直玩到游戏结束,但游戏若太长,这样就不合理。

TD base 只需要从 S_t 玩到 S_{t+1} 就行。因为 V^\pi(S_t)=V^\pi(S_{t+1})+r_t ,即 :

S_t 状态下采取策略 \pi 玩完游戏得到的 value   =  S_{t+1} 状态下采取策略 \pi 玩完游戏得到的 value  +  执行动作 a_t 得到的单步 r_t

所以我们比较 V^\pi(S_t)-V^\pi(S_{t+1}) 和 r_t 间的接近程度即可。

 

MC base 和TD base方法的比较

MC 方法的问题在于最后得到的 G_a 的方差很大(回顾一下, G_a 在 S_a 的情况下根据策略 \pi进行游戏得到的实际 reward. 其实是一个随机变量,因为游戏是有随机性的,每一次得到 G_a 是不一样的)。

因为 G_a 是很多步 reward 的求和,而根据公式 Var[kX]=k^2Var[X]每一步 reward 的方差累加后的方差会乘上 k^2。所以最后 G_a 的方差很大,即每次算出来的  V^\pi(S_a) 都会相差很多。

而用 TD base 中有随机性的部分是 r,它的方差比较小。但 TD 的问题在于 V^\pi(S_{t+1}) 可能很不准确。以下举例说明:

现在假如我们玩了8个 episode 的游戏,每一行对应一个episode,得到以下结果:

我们可以很直观的计算出 V^\pi(S_b)=3/4(6/8)(不论用 MC 方法还是 TD 方法)。但是根据 MC base 和 TD base 方法算出的 V^\pi(S_a) 是不一样的(可能是 3/4 或 0):

MC 方法的计算过程是,由于 S_a 只在第一个 episode 中出现,出现后根据策略 \pi 得到的 reward 是0,所以 V^\pi(S_a) =0

TD 方法的计算过程是,由于 S_a 只在第一个 episode 中出现,而 S_a 出现后跳到了 S_b ,所以 V^\pi(S_a)=V^\pi(S_b)+r=3/4+0=3/4.

MC 考虑的想法是 S_a 是一个非常不好的 state,出现 S_a 后 S_b 被影响只得到 0 的 reward,所以认为 V^\pi(S_a) 为0.

但TD考虑的想法是 S_a 后 S_b 得到 reward 为 0 只是一个巧合,与 S_a 无关,大部分情况下 S_b 还是会得到 3/4 的 reward,所以认为 V^\pi(S_a) 为3/4。(因为Sb在Sa之后)

 

另一种 critic 模型

 

而现在讨论的 Q function 的输入是一个 (s, a) 的 pair。这样相当于Q function 假设 state 下强制采取 action a

假设你的 action 是无法穷举的,那只能用上图左边的方法,把(s, a)一同作为输入;但若 action 有限,可以采用上图右边的方法,只输入s,然后分别输出在不同 action 情况下的输出值。

critic 看上去只能评价某个 action 的好坏,但是实际上可以直接用它来做 reinforcement learning(Q-learning)。方法是只要学到一个 \pi 的 Q function Q^\pi(s,a) ,就能有办法找到一个更好的 actor \pi',这样就能不断更新policy  \pi

什么叫 \pi'​​​​​​​ 比 π 好呢?

就是说面对所有 state s 时,使用策略 \pi'​​​​​​​ 得到的 value 一定比使用策略 \pi 得到的 value 大,即:V^{\pi'}(s)\geqslant V^\pi(s)

找 \pi'​​​​​​​ 的方法是,对于已经学到的 Q function  Q^\pi(s,a),在某个给定的 state 下,分别带入可能的 action,看看哪一个 action 使得函数值最大,把使得函数值最大的 a,作为以后面对该 state 时采取的 action

上图证明了 V^{\pi'}(s)\geqslant V^\pi(s)TODO

 

没有更多推荐了,返回首页