李弘毅机器学习笔记:第八章—Backprogation
李弘毅机器学习笔记:第八章—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
反向传播
- 损失函数(Loss function)是定义在单个训练样本上的,也就是就算一个样本的误差,比如我们想要分类,就是预测的类别和实际类别的区别,是一个样本的,用L表示。
- 代价函数(Cost function)是定义在整个训练集上面的,也就是所有样本的误差的总和的平均,也就是损失函数的总和的平均,有没有这个平均其实不会影响最后的参数的求解结果。
- 总体损失函数(Total loss function)是定义在整个训练集上面的,也就是所有样本的误差的总和。也就是平时我们反向传播需要最小化的值。
对于L(θ)L(\theta)L(θ)就是所有lnl^nln的损失之和,所以如果要算每个L(θ)L(\theta)L(θ)的偏微分,我们只要算每个lnl^nln的偏微分,再把所有lnl^nln偏微分的结果加起来就是L(θ)L(\theta)L(θ)的偏微分,所以等下我们只计算每个lnl^nln的偏微分。
我们先在整个神经网络(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相关推荐
- [机器学习入门] 李弘毅机器学习笔记-7 (Brief Introduction of Deep Learning;深度学习简介)
[机器学习入门] 李弘毅机器学习笔记-7 (Brief Introduction of Deep Learning:深度学习简介) PDF VIDEO Ups and downs of Deep Le ...
- 李弘毅机器学习笔记:第十三章—CNN
李弘毅机器学习笔记:第十三章-CNN 为什么用CNN Small region Same Patterns Subsampling CNN架构 Convolution Propetry1 Propet ...
- 李弘毅机器学习笔记:第二章
李弘毅机器学习笔记:第二章 回归定义和应用例子 回归定义 应用举例 模型步骤 Step 1:模型假设 - 线性模型 一元线性模型(单个特征) 多元线性模型(多个特征) Step 2:模型评估 - 损失 ...
- 李弘毅机器学习笔记:第五章—分类
李弘毅机器学习笔记:第五章-分类 例子(神奇宝贝属性预测) 分类概念 神奇宝贝的属性(水.电.草)预测 回归模型 vs 概率模型 回归模型 其他模型(理想替代品) 概率模型实现原理 盒子抽球概率举例 ...
- 李弘毅机器学习笔记:回归演示
李弘毅机器学习笔记:回归演示 现在假设有10个x_data和y_data,x和y之间的关系是y_data=b+w*x_data.b,w都是参数,是需要学习出来的.现在我们来练习用梯度下降找到b和w. ...
- 李弘毅机器学习笔记:第六章—Logistic Regression
李弘毅机器学习笔记:第六章-Logistic Regression logistic回归 Step1 逻辑回归的函数集 Step2 定义损失函数 Step3 寻找最好的函数 损失函数:为什么不学线性回 ...
- 李弘毅机器学习笔记:第十六章—无监督学习
李弘毅机器学习笔记:第十六章-无监督学习 1-of-N Encoding 词嵌入 基于计数的词嵌入 基于预测的词嵌入 具体步骤 共享参数 训练 Various Architectures 多语言嵌入 ...
- 李弘毅机器学习笔记:第十五章—半监督学习
李弘毅机器学习笔记:第十五章-半监督学习 监督学习和半监督学习 半监督学习的好处 监督生成模型和半监督生成模型 监督生成模型 半监督生成模型 假设一:Low-density Separation Se ...
- 李弘毅机器学习笔记:第十四章—Why deep?
李弘毅机器学习笔记:第十四章-Why deep? 问题1:越深越好? 问题2:矮胖结构 v.s. 高瘦结构 引入模块化 深度学习 使用语音识别举例 语音辨识: 传统的实现方法:HMM-GMM 深度学习 ...
最新文章
- java 注解开发_Java中的注解到底是如何工作的?
- python在线编程翻译器-【分享】python 翻译器,爬取百度翻译,并附上源码
- pdf 中的java运行,java - 从pdf文件读取特定位置的itext在intellij中运行,并提供所需的输出,但是可执行jar抛出错误 - 堆栈内存溢出...
- 大数据学习笔记28:MR案例——多输出源处理成绩
- 私有云对企业来说有什么好处
- ROS入门 工程结构
- 最全的iOS真机调试教程(证书生成等)
- 因式分解题目及过程_两道新定义题目的对比分析
- 10投屏后没有声音_10年后,学区房有没有可能成为“负资产”?这位专家说了实话...
- 降采样 matlab,改进型64倍降采样数字抽取滤波器的设计与仿真分析
- ELK 可视化分析热血电影《长津湖》15万+影评
- 康乐忆享|志愿者心得精选——张凌旭
- 哪个软件配音是免费的?分享这几款好用的配音软件
- 【云宏大讲坛】关键应用在超融合环境下的实践
- FFmpeg 中文文档
- Android之UiAutomator测试框架源码分析(第三篇:UiDevice功能介绍)
- C++ 命令行CMD 的控制与源代码
- 阿松和阿柏无事闲聊互道岁月不饶人
- Python choice() 函数语法及参数介绍
- php 二码合一支付_关于微信支付与支付宝支付前端这块二码合一的方法记录
热门文章
- 输入法突然打不出中文,中/英文模式都只能打出英文字母?完美解决
- vis.js力导向图第三弹——双击扩展节点
- Apache commons-codec包的基本使用
- 2022.1.22-参加YMO青少年奥林匹克数学竞赛总决赛(金牌)
- 4、ESP32-S - 连接 WiFi
- MapReduce1,HashCode
- 子网掩码及IP地址相关计算方法
- 24节气- ||大雪|| 文案、海报分享,冬寒雪落,归家愈暖。
- python第一部分:Eclipse和PyDev搭建python开发环境
- vue图片查看插件v-viewer使用