李弘毅机器学习笔记:第八章—Backprogation

  • 背景
    • 梯度下降
    • 链式法则
  • 反向传播
      • 取出一个Neuron进行分析
    • Forward Pass
    • Backward Pass
      • case 1 : Output layer
      • case 2 : Not Output Layer
  • 总结

背景

梯度下降

  • 给到 θ\thetaθ (weight and bias)
  • 先选择一个初始的 θ0\theta^0θ0,计算 θ0\theta^0θ0 的损失函数(Loss Function)设一个参数的偏微分
  • 计算完这个向量(vector)偏微分,然后就可以去更新 θ\thetaθ
  • 百万级别的参数(millions of parameters)
  • 反向传播(Backpropagation)是一个比较有效率的算法,让你计算梯度(Gradient) 的向量(Vector)时,可以有效率的计算出来

链式法则

  • 连锁影响(可以看出x会影响y,y会影响z)
  • BP主要用到了chain rule

反向传播

  1. 损失函数(Loss function)是定义在单个训练样本上的,也就是就算一个样本的误差,比如我们想要分类,就是预测的类别和实际类别的区别,是一个样本的,用L表示。
  2. 代价函数(Cost function)是定义在整个训练集上面的,也就是所有样本的误差的总和的平均,也就是损失函数的总和的平均,有没有这个平均其实不会影响最后的参数的求解结果。
  3. 总体损失函数(Total loss function)是定义在整个训练集上面的,也就是所有样本的误差的总和。也就是平时我们反向传播需要最小化的值。

    对于L(θ)L(\theta)L(θ)就是所有lnl^nln的损失之和,所以如果要算每个L(θ)L(\theta)L(θ)的偏微分,我们只要算每个lnl^nln的偏微分,再把所有lnl^nln偏微分的结果加起来就是L(θ)L(\theta)L(θ)的偏微分,所以等下我们只计算每个ln​l^n​ln​的偏微分。
    我们先在整个神经网络(Neural network)中抽取出一小部分的神经(Neuron)去看(也就是红色标注的地方):

取出一个Neuron进行分析


从这一小部分中去看,把计算梯度分成两个部分

  • 计算∂z∂w\frac{\partial z}{\partial w}∂w∂z​(Forward pass的部分)
  • 计算∂l∂z​\frac{\partial l}{\partial z}​∂z∂l​​ ( Backward pass的部分 )

Forward Pass

那么,首先计算∂z∂w​\frac{\partial z}{\partial w}​∂w∂z​​(Forward pass的部分):

根据求微分原理,forward pass的运算规律就是:

∂z∂w1=x1∂z∂w2=x2\frac{\partial z}{\partial w_1} = x_1 \\ \frac{\partial z}{\partial w_2} = x_2∂w1​∂z​=x1​∂w2​∂z​=x2​
这里计算得到的x1x_1x1​和x2x_2x2​恰好就是输入的x1x_1x1​和x2x_2x2​
直接使用数字,更直观地看到运算规律:

Backward Pass

(Backward pass的部分)这就很困难复杂因为我们的l是最后一层:
那怎么计算 ∂l∂z\frac{\partial l}{\partial z}∂z∂l​ (Backward pass的部分)这就很困难复杂因为我们的lll是最后一层:


计算所有激活函数的偏微分,激活函数有很多,这里使用Sigmoid函数为例

这里使用链式法则(Chain Rule)的case1,计算过程如下:

∂l∂z=∂a∂z∂l∂a⇒σ′(z)​\frac{\partial l}{\partial z} = \frac{\partial a}{\partial z}\frac{\partial l}{\partial a} \Rightarrow {\sigma}'(z)​∂z∂l​=∂z∂a​∂a∂l​⇒σ′(z)​
∂l∂a=∂z′∂a∂l∂z′+∂z′′∂a∂l∂z′′​\frac{\partial l}{\partial a} = \frac{\partial z'}{\partial a}\frac{\partial l}{\partial z'} +\frac{\partial z''}{\partial a}\frac{\partial l}{\partial z''}​∂a∂l​=∂a∂z′​∂z′∂l​+∂a∂z′′​∂z′′∂l​​

最终的式子结果:


但是你可以想象从另外一个角度看这个事情,现在有另外一个神经元,把forward的过程逆向过来,其中σ′(z){\sigma}'(z)σ′(z)是常数,因为它在向前传播的时候就已经确定了

case 1 : Output layer

假设∂l∂z′\frac{\partial l}{\partial z'}∂z′∂l​和∂l∂z′′​\frac{\partial l}{\partial z''}​∂z′′∂l​​是最后一层的隐藏层
也就是就是y1与y2是输出值,那么直接计算就能得出结果

但是如果不是最后一层,计算∂l∂z′\frac{\partial l}{\partial z'}∂z′∂l​和∂l∂z′′​\frac{\partial l}{\partial z''}​∂z′′∂l​​的话就需要继续往后一直通过链式法则算下去

case 2 : Not Output Layer


对于这个问题,我们要继续计算后面绿色的∂l∂za\frac{\partial l}{\partial z_a}∂za​∂l​和∂l∂zb\frac{\partial l}{\partial z_b}∂zb​∂l​,然后通过继续乘w5w_5w5​和w6w_6w6​得到∂l∂z′\frac{\partial l}{\partial z'}∂z′∂l​,但是要是∂l∂za\frac{\partial l}{\partial z_a}∂za​∂l​和∂l∂zb\frac{\partial l}{\partial z_b}∂zb​∂l​都不知道,那么我们就继续往后面层计算,一直到碰到输出值,得到输出值之后再反向往输入那个方向走。


对上图,我们可以从最后一个∂l∂z5\frac{\partial l}{\partial z_5}∂z5​∂l​和∂l∂z6\frac{\partial l}{\partial z_6}∂z6​∂l​看,因为∂l∂za\frac{\partial l}{\partial z_a}∂za​∂l​和∂l∂zb\frac{\partial l}{\partial z_b}∂zb​∂l​比较容易通过output求出来,然后继续往前求∂l∂z3\frac{\partial l}{\partial z_3}∂z3​∂l​和∂l∂z4\frac{\partial l}{\partial z_4}∂z4​∂l​,再继续求∂l∂z1\frac{\partial l}{\partial z_1}∂z1​∂l​和∂l∂z2\frac{\partial l}{\partial z_2}∂z2​∂l​
最后我们就得到下图的结果

实际上进行backward pass时候和向前传播的计算量差不多。

总结

我们的目标是要求计算∂z∂w\frac{\partial z}{\partial w}∂w∂z​(Forward pass的部分)和计算∂l∂z\frac{\partial l}{\partial z}∂z∂l​ ( Backward pass的部分 ),然后把∂z∂w\frac{\partial z}{\partial w}∂w∂z​和∂l∂z\frac{\partial l}{\partial z}∂z∂l​相乘,我们就可以得到∂l∂w\frac{\partial l}{\partial w}∂w∂l​,所有我们就可以得到神经网络中所有的参数,然后用梯度下降就可以不断更新,得到损失最小的函数

李弘毅机器学习笔记:第八章—Backprogation相关推荐

  1. [机器学习入门] 李弘毅机器学习笔记-7 (Brief Introduction of Deep Learning;深度学习简介)

    [机器学习入门] 李弘毅机器学习笔记-7 (Brief Introduction of Deep Learning:深度学习简介) PDF VIDEO Ups and downs of Deep Le ...

  2. 李弘毅机器学习笔记:第十三章—CNN

    李弘毅机器学习笔记:第十三章-CNN 为什么用CNN Small region Same Patterns Subsampling CNN架构 Convolution Propetry1 Propet ...

  3. 李弘毅机器学习笔记:第二章

    李弘毅机器学习笔记:第二章 回归定义和应用例子 回归定义 应用举例 模型步骤 Step 1:模型假设 - 线性模型 一元线性模型(单个特征) 多元线性模型(多个特征) Step 2:模型评估 - 损失 ...

  4. 李弘毅机器学习笔记:第五章—分类

    李弘毅机器学习笔记:第五章-分类 例子(神奇宝贝属性预测) 分类概念 神奇宝贝的属性(水.电.草)预测 回归模型 vs 概率模型 回归模型 其他模型(理想替代品) 概率模型实现原理 盒子抽球概率举例 ...

  5. 李弘毅机器学习笔记:回归演示

    李弘毅机器学习笔记:回归演示 现在假设有10个x_data和y_data,x和y之间的关系是y_data=b+w*x_data.b,w都是参数,是需要学习出来的.现在我们来练习用梯度下降找到b和w. ...

  6. 李弘毅机器学习笔记:第六章—Logistic Regression

    李弘毅机器学习笔记:第六章-Logistic Regression logistic回归 Step1 逻辑回归的函数集 Step2 定义损失函数 Step3 寻找最好的函数 损失函数:为什么不学线性回 ...

  7. 李弘毅机器学习笔记:第十六章—无监督学习

    李弘毅机器学习笔记:第十六章-无监督学习 1-of-N Encoding 词嵌入 基于计数的词嵌入 基于预测的词嵌入 具体步骤 共享参数 训练 Various Architectures 多语言嵌入 ...

  8. 李弘毅机器学习笔记:第十五章—半监督学习

    李弘毅机器学习笔记:第十五章-半监督学习 监督学习和半监督学习 半监督学习的好处 监督生成模型和半监督生成模型 监督生成模型 半监督生成模型 假设一:Low-density Separation Se ...

  9. 李弘毅机器学习笔记:第十四章—Why deep?

    李弘毅机器学习笔记:第十四章-Why deep? 问题1:越深越好? 问题2:矮胖结构 v.s. 高瘦结构 引入模块化 深度学习 使用语音识别举例 语音辨识: 传统的实现方法:HMM-GMM 深度学习 ...

最新文章

  1. java 注解开发_Java中的注解到底是如何工作的?
  2. python在线编程翻译器-【分享】python 翻译器,爬取百度翻译,并附上源码
  3. pdf 中的java运行,java - 从pdf文件读取特定位置的itext在intellij中运行,并提供所需的输出,但是可执行jar抛出错误 - 堆栈内存溢出...
  4. 大数据学习笔记28:MR案例——多输出源处理成绩
  5. 私有云对企业来说有什么好处
  6. ROS入门 工程结构
  7. 最全的iOS真机调试教程(证书生成等)
  8. 因式分解题目及过程_两道新定义题目的对比分析
  9. 10投屏后没有声音_10年后,学区房有没有可能成为“负资产”?这位专家说了实话...
  10. 降采样 matlab,改进型64倍降采样数字抽取滤波器的设计与仿真分析
  11. ELK 可视化分析热血电影《长津湖》15万+影评
  12. 康乐忆享|志愿者心得精选——张凌旭
  13. 哪个软件配音是免费的?分享这几款好用的配音软件
  14. 【云宏大讲坛】关键应用在超融合环境下的实践
  15. FFmpeg 中文文档
  16. Android之UiAutomator测试框架源码分析(第三篇:UiDevice功能介绍)
  17. C++ 命令行CMD 的控制与源代码
  18. 阿松和阿柏无事闲聊互道岁月不饶人
  19. Python choice() 函数语法及参数介绍
  20. php 二码合一支付_关于微信支付与支付宝支付前端这块二码合一的方法记录

热门文章

  1. 输入法突然打不出中文,中/英文模式都只能打出英文字母?完美解决
  2. vis.js力导向图第三弹——双击扩展节点
  3. Apache commons-codec包的基本使用
  4. 2022.1.22-参加YMO青少年奥林匹克数学竞赛总决赛(金牌)
  5. 4、ESP32-S - 连接 WiFi
  6. MapReduce1,HashCode
  7. 子网掩码及IP地址相关计算方法
  8. 24节气- ||大雪|| 文案、海报分享,冬寒雪落,归家愈暖。
  9. python第一部分:Eclipse和PyDev搭建python开发环境
  10. vue图片查看插件v-viewer使用