机器学习(5)

深度学习与反向传播

1.深度学习

深度学习是用于建立、模拟人脑进行分析学习的神经网络,并模仿人脑的机制来解释数据的一种机器学习技术。它的基本特点是试图模仿大脑的神经元之间传递,处理信息的模式。最显著的应用是计算机视觉和自然语言处理(NLP)领域。显然,“深度学习”是与机器学习中的“神经网络”是强相关,“神经网络”也是其主要的算法和手段;或者我们可以将“深度学习”称之为“改良版的神经网络”算法。

1.1 深度学习的一般步骤

  • Step1:神经网络(Neural network)
  • Step2:模型评估(Goodness of function)
  • Step3:选择最优函数(Pick best function)

1.1.1 Step1:神经网络(Neural network)

神经网络中最基本的成分是神经元(neuron)模型,神经网络有很多不同的连接方式,这样就会产生不同的结构(structure),神经元模型可以简单地想象成一个逻辑回归函数,而每一个逻辑回归函数都有各自的权重与偏差,这些权重与偏差就是参数。深度学习的第一步即:建立自己的神经网络,设计不同的神经元连接方式,可得到不同的神经网络。

以完全连接前馈神经网络(Fully Connect Feedforward Network)为例,前后每层之间两两都有连接(Fully Connect),且信号传递方向是由后往前传,一直到输出层,其中任意两层之间的连接并没有反馈(Feedforward)。
在这里插入图片描述
当中间的hidden layer有许多层时,便可以叫做Deep,随着层数变多,错误率降低,随之运算量增大,通常都是超过亿万级的计算。对于这样复杂的结构,使用loop循环效率很低,所以引入矩阵计算(Matrix Operation)能使得运算的速度以及效率高很多。
在这里插入图片描述
神经网络中的矩阵计算过程如上图,类似于嵌套计算的过程,所以整个神经网络运算就相当于一连串的矩阵运算。 矩阵运算的好处是,可以使用GPU加速,大大加快了计算的速度。

总结:

神经网络的本质就是通过隐藏层进行特征转换,把隐藏层通过特征提取来替代原来的特征工程,这样在最后一个隐藏层输出的就是一组新的特征(相当于黑箱操作)而对于输出层,其实是把前面的隐藏层的输出当做输入(经过特征提取得到的一组最好的特征)然后通过一个多分类器(可以是softmax函数)得到最后的输出y。

1.1.2 Step2:模型评估(Goodness of function)

神经网络通常采用交叉熵(cross entropy)函数来对 y y y y ^ \hat{y} y^的损失进行计算,对于损失,不单单要计算一笔数据的,而是要计算整体所有训练数据的损失,然后把所有的训练数据的损失都加起来,得到一个总体损失L。接下来就是在function set里面找到一组函数能最小化这个总体损失L,或者是找一组神经网络的参数 θ \theta θ,来最小化总体损失L。

1.1.3 Step3:选择最优函数(Pick best function)

一般采用梯度下降方法找到最优的函数和最好的一组参数,具体流程: θ \theta θ是一组包含权重和偏差的参数集合,随机找一个初试值,接下来计算一下每个参数对应偏微分,得到的一个偏微分的集合 ∇ L \nabla{L} L就是梯度,有了这些偏微分,我们就可以不断更新梯度得到新的参数,这样不断反复进行,就能得到一组最好的参数使得损失函数的值最小。
在这里插入图片描述

2.反向传播

在上述Step3:选择最优函数的过程中需要求损失函数L对参数w的偏微分,通常使用反向传播的方法解决。

  • 反向传播的核心:链式法则

取出一个Neuron进行分析
在这里插入图片描述
从这一小部分中去看,可以把计算梯度分成两个部分 计算 ∂ z ∂ w \frac{\partial z}{\partial w} wz(Forward pass的部分)和 计算 ∂ l ∂ z \frac{\partial l}{\partial z} zl ( Backward pass的部分 )。

2.1.1 Forward Pass

根据求微分原理,forward pass的运算规律就是: ∂ z ∂ w 1 = x 1   ∂ z ∂ w 2 = x 2 \frac{\partial z}{\partial w1} = x1 \ \frac{\partial z}{\partial w2} = x2 w1z=x1 w2z=x2 这里计算得到的 x 1 x1 x1 x 2 x2 x2恰好就是输入的 x 1 x1 x1 x 2 x2 x2
在这里插入图片描述

2.1.1 Backward Pass

Backward Pass的部分相较于Forward Pass部分的计算更为困难复杂,由 ∂ l ∂ z \frac{\partial l}{\partial z} zl式子可知,需知道   l {\ l}  l才可能进行计算,而   l {\ l}  l是最后一层。
在这里插入图片描述

  • 这里我们采用链式法则(Chain Rule)进行计算:
    在这里插入图片描述
    从上图可以看出,最后问题转变为对 ∂ l ∂ z ′ \frac{\partial l}{\partial z'} zl ∂ l ∂ z ′ ′ \frac{\partial l}{\partial z''} zl的求解,下面分情况讨论:

  • case 1 : y1与y2是输出值,设 ∂ l ∂ z ′ \frac{\partial l}{\partial z'} zl ∂ l ∂ z ′ ′ \frac{\partial l}{\partial z''} zl是最后一层的隐藏层
    在这里插入图片描述

  • case 2 : y1与y2是不是输出值,就需要继续往后一直通过链式法则算下去,直到最后一层是输出层
    在这里插入图片描述

总结:

反向传播可拆分为Forward Pass部分和Backward Pass部分进行求解,其中Forward Pass部分求解出来的结果即为输入值,Backward Pass部分则需要通过链式法则进行求解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值