2021 李宏毅学习笔记——6.Deep Learning&why deep&Backpropagation

摘要

本章首先是通过逻辑回归的限制,引入了深度学习的概念;其次介绍了深度学习的发展与广泛的应用领域;以及Deep learning 的三个Step,一是定义一个函数集,也就是神经网络(neural network),二是定义一个函数的好坏(找到合适的参数),三是选一个最好的函数;在step1中用Matrix Operation矩阵运算去表示netural神经元的运作;在step2中去调整netural神经元的参数,用交叉熵函数作为损失函数,去使交叉熵的值越小越好;在step3中仍然是应用梯度下降Gradient Descent的方法,但由于神经网络(函数)一般较为复杂,所以通常应用(Backpropagation)反向传播算法去算微分;以及讲到了为什么要Deep ,而不是fat ;其中就是应用模组化的方法使模型变简单;后面主要讲到神经网络Backpropagation反向传播算法的推导过程。

一、Deep Learning的3个step

step 1:define a set of function(定义一个函数集)

  1. function(函数)就是一个neural network,不同的netural用不同的方法连接起来,构成不同的网络结构;也就是将逻辑回归按不同的方式进行连接,得到不同的结构,其中逻辑回归的w和b就是神经网络中的参数。
    常见方式:Fully Connect Feedforward Network(全连接前馈神经网络)
    相邻层之间的神经元两两之间都有连接,所以称为是全连接层;
    在这里插入图片描述
  • 假设给定了网络结构并给定了参数,那网络就是一个函数,要注意输入输出都是向量
  • 深度学习的深度指的是包含很多隐藏层的网络
  1. 用Matrix Operation来表示netural的运算
    在这里插入图片描述
    如上图中蓝色的两个netural的weights排成一个Matrix 矩阵,然后和输入加bias做矩阵乘法运算(Wx+b)得到一个矩阵,就是结果蓝色netural的output一个矩阵,再通过比如用sigmoid function去处理得到结果;然后继续一层一层的算下去,就是一连串的Matrix Operation。
    在这里插入图片描述
    如何看待整个神经网络:将从input layer 到 output layer 之前的部分视作hidden layers,看作是一个特征提取替代了之前提到的特征工程,而output layer j就相当于一个多分类器,其中又通过softmax函数去分类。
    在这里插入图片描述
    3.举个应用例子——手写数字问题:
    所使用的神经网络的输入是256维,输出是10维,之间的hidden layer层数时没有限定的,到底有多少个,决定了你用的什么function set。如果你自己去连接每一层,就变成CNN(卷积神经网络)。

step 2:goodness of function(定义一个function的好坏)

继续用手写数字辨识的例子,还是256维输入nerual network,output(softmax):10维的输出,target只有两种0或者1,算一下cross Entropy,调整network的参数,让cross Entropy 越小越好。
在这里插入图片描述

step 3 :pick the best function

在这里插入图片描述把多组数据的crossEntropy算出来,然后Total Loss;从function set 里找到一个funtion 来最小化L,再找到最小化的参数。下面就是用到Gradient Descent方法:与之前的处理是一样的,只是Deep Learning 中的Function 变复杂了。在这里插入图片描述

  • Backpropagation:在神经网络中一个非常有效的算微分的方式
  • 引出了一个hidden layer 的netural 只要够多,就可以表示成任何的function,所以deep意义很大?还是越fat越好?

二、why deep?

why deep而不是why shallow?
给出两组实验
第一组就是:越深的神经网络,其参数越多,模型也就越复杂,当然能够拟合更为复杂的函数
第二组表明:单增加netural的数目,不增加layer时没办法提高准确率的。
在这里插入图片描述其中两侧对比:

  • 使用参数相等时,构建多层Neurals比一层Neural准确率更高
  • 左侧红框内的参数比右侧是要少的,但其error rate却更低点,准确率更高

这是why?
引入Modularization模组化的概念:在这里插入图片描述
注意:Deep -> Modularization,在Deep Learning中怎么去做模组化,是机器会自动构建模组化的函数。模组化的好处是使模型变得简单了,这样training data就不需要那么多。而且实际上做Deep Learning 的data是比较少的,如果有很多的话,那直接查表就行。

三、Backpropagation算法的推导

1.Why Backpropagation

用gradient descent来train一个neural network:
开始时参数是特别多,选一个初始的参数,计算初始参数的微分,然后不断更新参数,在神经网络中的梯度下降算法和之前求线性回归方程等中用的没有太多的差别,都是不断的计算微分,然后更新参数,最终找到一个最优解。但是在神经网络中,却是拥有着大量的可能多达上百万个的参数,是一个百万维的向量,传统的求微分方法行不通,这样就需要应用Backpropagation去有效的计算出微分。在这里插入图片描述

2.Chain Rule(链式求导法则)

其实就是高数中的求导法则:在这里插入图片描述

3.Forward pass与 Backward pass

每一个神经网络都需要定义一个 Loss Function,定义实际输出 y n y^n yn与预期输出 y n y^n yn_之间的误差 C n C^n Cn,要使上式的值最小。用 Gradient descent 来做的话就是这个式子对权值 w 求偏导,由此我们知道只需要求每个 C n C^n Cn对 w 的偏导,然后全部加起来就可以。
在这里插入图片描述
那怎么算∂C/∂w?
如下图中分为Forward pass与 Backward pass,求∂Z/∂w的过程为Forward pass,求∂C/∂z的过程称为 Backward pass。
在这里插入图片描述

3.1 Forward pass

在这里插入图片描述举个实际例子求∂Z/∂w如下图:在这里插入图片描述

3.2 Backward pass

计算 ∂C/∂z的过程:
在这里插入图片描述
如果假设两个已知,又可得到这样的:
在这里插入图片描述
从另一个角度看该过程:
在这里插入图片描述

  • 这个反向过程与之前的sigmoid函数并不一样

那又怎么算最后两项呢?

case1: 当output是最后的output layer时
在这里插入图片描述

  • 可直接先计算出后面的两个,再通过反向求出 ∂C/∂z

case2 :当output不是最后的output layer时
在这里插入图片描述
在这里插入图片描述
整个神经网络进行Backward pass如下图,从右到左分别求出每一层的C对Z的导数:
在这里插入图片描述

summary:

计算 ∂ C / ∂ w = ∂ z / ∂ w ∗ ∂ C / ∂ z . ∂C/∂w= ∂z/∂w*∂C/∂z. C/w=z/wC/z.
用Forward pass求出每一层的 ∂z/∂w,用Backward pass求出每一层的∂C/∂z,然后相乘就可以算得每一层的∂C/∂w。
在这里插入图片描述

展望

本章主要学习了Deep Learning 的三个step ,以及梯度下降过程中,对反向传播算法去计算微分的推导;接下来我们将会继续对Tips for Training DNN的学习,对深度学习将会有更进一步的理解与掌握。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值