【李宏毅机器学习】backpropagation 反向传播(p13) 学习笔记
李宏毅机器学习学习笔记汇总
课程链接
文章目录
- Gradient Descent
- Chain Rule链式法则
- 前向传播
- 反向传播
- 情况一:红色的neural是属于网络的output layer的
- 情况二:假设红色的neural并不是整个网络的output,后面还有其他的东西
- Summary
Gradient Descent
BP只是为了更加高效地进行梯度计算。
Chain Rule链式法则
输入一个xnx^nxn,经过神经网络后,得到 yny^nyn,真实值是y^n\hat{y}^ny^n,定义一个yny^nyn和y^n\hat{y}^ny^n之间的距离的function CnC^nCn,CnC^nCn越小,代表神经网络的parameter很好。
求和所有训练数据的 CnC^nCn 得到total loss L,对某一个参数进行计算微分。
前向传播
先考虑一个单独的neural
如何计算∂z/∂w\partial{z}/\partial{w}∂z/∂w:
其值为该权重链接的输入值
在前馈时同时用变量存储了每层的梯度
反向传播
如何计算 ∂C/∂z\partial{C}/\partial{z}∂C/∂z:
假设∂C/∂z′\partial{C}/\partial{z}'∂C/∂z′ 和 ∂C/∂z′′\partial{C}/\partial{z}''∂C/∂z′′是已知的,进行后续计算。
把第二个式子带入第一个式子得到如下公式:
σ(z)\sigma(z)σ(z)在前向传播的时候就已经算出来了,是一个常量。
下面只需要求出∂C/∂z′\partial{C}/\partial{z}'∂C/∂z′ 和 ∂C/∂z′′\partial{C}/\partial{z}''∂C/∂z′′即可:
情况一:红色的neural是属于网络的output layer的
∂C/∂z′=(∂y1/∂z′)∗(∂C/∂y1)\partial{C}/\partial{z'}=(\partial{y_1}/\partial{z'})*(\partial{C}/\partial{y_1})∂C/∂z′=(∂y1/∂z′)∗(∂C/∂y1)
(∂y1/∂z′)(\partial{y_1}/\partial{z'})(∂y1/∂z′):只需要知道后面的激活函数是什么即可,因为y1=σ(z′)y_1=\sigma(z')y1=σ(z′)
(∂C/∂y1)(\partial{C}/\partial{y_1})(∂C/∂y1):知道损失函数、output和target之间是如何evaluate评价的(cross entropy或者mean square error)
在这种情况下(图中蓝色的激活函数是最后一个隐藏层的激活函数,后面就是输出层了),这样就已经完成了。
情况二:假设红色的neural并不是整个网络的output,后面还有其他的东西
从前往后算没有效率,所以要从输出层开始倒着算
在做反向传播的时候,实际上是建立了另外一个神经网络,正向网络中的激活函数都是sigmoid函数;现在需要建立一个反向的神经网络,在前向传播之后,再计算反向传播的激活函数,反向传播神经网络的输入是∂C/∂z5\partial{C}/\partial{}z_5∂C/∂z5 和 ∂C/∂z6\partial{C}/\partial{z_6}∂C/∂z6,其他部分和正向的神经网络运算完全一致。
Summary
如何反向传播?
1、做一个前向传播,知道每一个激活函数的output,就得到了他所连接的weight的∂z/∂w\partial{z}/\partial{w}∂z/∂w
2、在反向传播中,要把原来的神经网络的方向反转,他的每一个三角形的output是∂C/∂z\partial{C}/\partial{z}∂C/∂z,将前向传播得到的∂z/∂w\partial{z}/\partial{w}∂z/∂w 与现在反向传播得到的∂C/∂z\partial{C}/\partial{z}∂C/∂z相乘,就得到了某一个weight对w的C的偏微分∂C/∂w\partial{C}/\partial{w}∂C/∂w是什么了~
【李宏毅机器学习】backpropagation 反向传播(p13) 学习笔记相关推荐
- 反向传播算法学习笔记
反向传播算法(Back propagation) 目的及思想 我们现在有一堆输入,我们希望能有一个网络,使得通过这个网络的构成的映射关系满足我们的期待.也就是说,我们在解决这个问题之前先假设,这种映射 ...
- 《机器学习》周志华 学习笔记
<机器学习>周志华 学习笔记 第一章 绪论 1.1 引言 机器学习:致力于研究如何通过计算的手段,利用经验来改善系统自身的性能. 经验:"经验"通常以"数据& ...
- cs224w(图机器学习)2021冬季课程学习笔记18 Colab 4:异质图
诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 Question 1. DeepSNAP异质图简介 1.1 Question 1.1:分配Node ...
- cs224w(图机器学习)2021冬季课程学习笔记12 Knowledge Graph Embeddings
诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. Heterogeneous Graphs and Relational GCN (RGCN) ...
- cs224w(图机器学习)2021冬季课程学习笔记4 Link Analysis: PageRank (Graph as Matrix)
诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. Graph as Matrix 2. PageRank / the Google Algor ...
- cs224w(图机器学习)2021冬季课程学习笔记9 Graph Neural Networks 2: Design Space
诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. A General Perspective on Graph Neural Networks ...
- cs224w(图机器学习)2021冬季课程学习笔记10 Applications of Graph Neural Networks
诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. Graph Augmentation for GNNs 1.1 图特征增强Feature A ...
- cs224w(图机器学习)2021冬季课程学习笔记11 Theory of Graph Neural Networks
诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. How Expressive are Graph Neural Networks? 2. D ...
- 随时间反向传播算法(BPTT)笔记
随时间反向传播算法(BPTT)笔记 1.反向传播算法(BP) 以表达式f(w,x)=11+e−(w0x0+w1x1+w2)f(w,x)=\frac{1}{1+e^{-(w_0x_0+w_1x_1+w_ ...
- (pytorch-深度学习系列)pytorch实现自定义网络层,并自设定前向传播路径-学习笔记
pytorch实现自定义网络层,并自设定前向传播路径-学习笔记 1. 不包含模型参数的自定义网络层 首先我们自定义一个网络层, 定义一个网络层,使其不包含模型参数,并在forward()函数中进行运算 ...
最新文章
- DotNet关键知识点——WCF篇(六)
- 月薪30k~50k,这个领域的人才正在被疯抢!
- js 月份加6个月_12月AHA HS大众急救认证培训22个城市报名开启!2021年1~6月份课程预售限时开启!!...
- 斯坦福机器学习公开课学习笔记(2)—监督学习 梯度下降
- C#常用控件的属性以及方法(转载)
- MySQL学习【第十二篇事务中的锁与隔离级别】
- 电信机顶盒怎么连接鸿蒙系统电视,移动电信机顶盒怎么投屏?怎么连接手机
- 我与阿里巴巴集团副总裁、阿里云智能数据库事业部总负责人在阿里云官网同框啦
- idea安装插件后无法启动
- ARM学习(8) axf 工具解析
- ccproxy 6.61 注册机(纯绿/傻瓜/真正去除线程限制)
- css pseudo elements,CSS 伪元素 (Pseudo-elements)
- 中南大学2020大学生心里健康教育答案 —— 雨课堂
- C#导入导出数据到Excel的通用类源码
- 通过excel生成不同dimens文件来实现安卓屏幕适配
- 网易云课堂uni-app实战社区交友类app开发笔记
- Xilinx FPGA时钟及I/O接口规划(一)
- matlab实践总结与体会,MatLab实习心得体会
- 2021年电赛仪器仪表类常用模块
- 什么是大数据?如何入门学习大数据?
热门文章
- 潭州课堂25班:Ph201805201 并发(非阻塞,epoll) 第十课 (课堂笔记)
- JavaScript高级程序设计之EventUtil
- GNU make manual 翻译(八十二)
- “中国式”盗版该何去何从?
- 分享12款非常漂亮的免费国外网站模板
- C语言课后习题(30)
- int *p=new int; int *p=new int[10]; int *p=new int(10);这三个有什么区别
- java图形接口_java基础七 [图形用户接口](阅读Head First Java记录)
- python中scrapy是什么_python爬虫中scrapy组件有哪些?作用是什么?
- python循环遍历把表写入csv_求教python3.5如何把字典循环写入csv?