目录

深度学习的三个步骤

Step1:神经网络(Neural network)

完全连接前馈神经网络

全链接前馈网络

矩阵计算(Matrix Operation)

Step2:模型评估(Goodness of function)

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

反向传播(Backpropagation)

1、求Forward pass

2、求Backward Pass

case 1 : Output layer

case 2 : Not Output Layer

总结


深度学习的三个步骤

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

Step1:神经网络(Neural network)

神经网络(Neural network)里面的节点,类似我们的神经元。

完全连接前馈神经网络

前馈(feedforward)也可以称为前向,从信号流向来理解就是输入信号进入网络后,信号流动是单向的,即信号从前一层流向后一层,一直到输出层,其中任意两层之间的连接并没有反馈(feedback),亦即信号没有从后一层又返回到前一层。

一个神经网络如果权重和偏差都知道的话就可以看成一个函数,他的输入是一个向量,对应的输出也是一个向量。不论是做回归模型(linear model)还是逻辑回归(logistics regression)都是定义了一个函数集(function set)。我们可以给上面的结构的参数设置为不同的数,就是不同的函数(function)。这些可能的函数(function)结合起来就是一个函数集(function set)。

全链接前馈网络

  • 全链接(Fully Connect):layer1与layer2之间两两都有连接
  • 前馈(Feedforward):传递的方向是由后往前传
  • 输入层(Input Layer):1层
  • 隐藏层(Hidden Layer):N层
  • 输出层(Output Layer):1层
  • Deep = Many hidden layer。随着层数变多,错误率降低,随之运算量增大,通常都是超过亿万级的计算。对于这样复杂的结构,使用loop循环效率很低,我们一定不会一个一个的计算。

矩阵计算(Matrix Operation)

计算方法就是:sigmoid(权重w【黄色】 * 输入【蓝色】+ 偏移量b【绿色】)= 输出

很多层时:

从结构上看每一层的计算都是一样的,也就是用计算机进行并行矩阵运算。
写成矩阵运算的好处是:可以使用GPU加速。

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

唯一需要的就是一个函数,输入是256维的向量,输出是10维的向量,所需要求的函数就是神经网络这个函数。神经网络的结构决定了函数集(function set)

Step2:模型评估(Goodness of function)

模型的评估,一般采用损失函数来反应模型的好差。对于神经网络来说,采用交叉熵(cross entropy)函数来对y和y^​的损失进行计算。接下来调整参数,让交叉熵越小越好

计算整体所有训练数据的损失,然后把所有的训练数据的损失都加起来,得到一个总体损失L。
接下来在function set里面找到一组函数能最小化这个总体损失L,或者找一组神经网络的参数θ,来最小化总体损失L。

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

使用梯度下降

在神经网络中计算损失最好的方法就是反向传播。

反向传播(Backpropagation)

反向传播是一个比较有效率的算法,让你计算梯度(Gradient) 的向量(Vector)时,可以有效率的计算出来,主要用到了chain rule。

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

对于L(θ)就是所有l^n的损失之和,所以如果要算每个L(θ)的偏微分,我们只要算每个l^n的偏微分,再把所有l^nl偏微分的结果加起来就是L(θ)的偏微分,所以我们先只计算每个l^nl的偏微分。

1、求Forward pass

这里计算得到的x1​和x2​恰好就是输入的x1​和x2​。

2、求Backward Pass

假设知道问号的值

从另外一个角度看这个事情,现在有另外一个神经元,把forward的过程逆向过来:

case 1 : Output layer

y1与y2是输出值,直接计算就能得出结果。

case 2 : Not Output Layer

总结

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

李宏毅《机器学习》笔记 DAY4 深度学习反向传播相关推荐

  1. 【组队学习】【35期】李宏毅机器学习(含深度学习)

    李宏毅机器学习(含深度学习) 航路开辟者:王茂霖.陈安东,刘峥嵘,李玲 领航员:梁家晖 航海士:程浩伟.周小要.吴昌广 基本信息 开源内容:https://linklearner.com/datawh ...

  2. 【组队学习】【33期】3. 李宏毅机器学习(含深度学习)

    李宏毅机器学习(含深度学习) 航路开辟者:王茂霖.陈安东,刘峥嵘,李玲 领航员:宋泽山 航海士:汪健麟.叶梁 基本信息 开源内容:https://github.com/datawhalechina/l ...

  3. 【组队学习】【32期】李宏毅机器学习(含深度学习)

    李宏毅机器学习(含深度学习) 航路开辟者:王茂霖.陈安东,刘峥嵘,李玲 领航员:郭棉昇 航海士:汪超.赵美 基本信息 开源内容:https://github.com/datawhalechina/le ...

  4. 【组队学习】【30期】李宏毅机器学习(含深度学习)

    李宏毅机器学习(含深度学习) 航路开辟者:王茂霖.陈安东,刘峥嵘,李玲 领航员:初晓宇 航海士:王茂霖 基本信息 开源内容:https://github.com/datawhalechina/leem ...

  5. 【组队学习】【29期】5. 李宏毅机器学习(含深度学习)

    5. 李宏毅机器学习(含深度学习) 航路开辟者:王茂霖.陈安东,刘峥嵘,李玲 领航员:王洲烽 航海士:王茂霖 基本信息 开源内容:https://github.com/datawhalechina/l ...

  6. 【组队学习】【31期】李宏毅机器学习(含深度学习)

    李宏毅机器学习(含深度学习) 航路开辟者:王茂霖.陈安东,刘峥嵘,李玲 领航员:张菘淳 航海士:王茂霖.吴振一 基本信息 开源内容:https://github.com/datawhalechina/ ...

  7. 机器学习笔记丨神经网络的反向传播原理及过程(图文并茂+浅显易懂)

    文章目录 一.前言 二.神经网络的前向传播原理 1. 单个神经元的计算 2. 神经元在神经网络中的计算 三.反向传播算法内容(请静下心,一步一步的看) Step1 计算误差 Step2 更新权重 四. ...

  8. 李宏毅机器学习课程9~~~深度学习技巧

    Recipe of Deep Learning Overfitting overfitting的判断是要训练误差与测试误差做比较.这个56-layer的网络在训练集上都没有训练好,说白了就是有点欠拟合 ...

  9. dnn神经网络_【李宏毅机器学习笔记】深度神经网络(DNN)

    当我们训练网络的时候,通常会出现如下两种情况: 第一种情况:训练数据表现不好,这种时候通常可以使用新的激活函数,或者调整学习率. 第二种情况:训练数据表现的很好,但是测试数据的表现很差,这个时候可以提 ...

最新文章

  1. pandas loc iloc(self index location 即按照行索引来获取数据)
  2. WebSocket的C++服务器端实现
  3. 如果把西游记倒过来看,这才是真正的社会
  4. python os模块system_python 中 os.system 的本质 | 编程知识2
  5. eclipse中通过search打开第二个文件时 第一个文件就自己关闭了
  6. Python模块之XlsxWriter
  7. str()和repre()的区别
  8. 记录请求的耗时(拦截器、过滤器、aspect)
  9. python实现rsa数据加密_python实现RSA与AES混合加密
  10. qml tableview 滚动条加宽_qt qtableview 样式设置
  11. centos7 删除zabbix_Zabbix服务器端运行中显示为“不”的解决方式
  12. 并发编程 07—— 任务取消
  13. vs 中程序被锁定的问题
  14. python的作用域分别有几种_Python作用域和命名空间
  15. Solidworks教程:利用Simulation模拟热传导
  16. APP微信小程序测试一览表(常规用例)
  17. 计算机机房安全消防管理制度,机房消防安全管理制度
  18. 摩托梁念坚出任微软大中华区董事长兼CEO
  19. 【Microsoft Azure 的1024种玩法】二十八. 基于Azure Cloud搭建IPS入侵防御系统实现安全流量实时分析
  20. ssm 微信扫码支付

热门文章

  1. epoll 的本质是什么?
  2. nginx搭建本地服务器 正向代理 反向代理 动态资源 静态资源
  3. 算法题目:独特的摩尔斯编码(C++)
  4. 以太网没有有效的ip配置/无Internet访问权限
  5. 控制柜散热风扇的选型计算
  6. IOS7 IOS8设置静态壁纸闪退解决方法(不越狱通用)
  7. 阻止我买iPhone12的理由
  8. 毕业4年我的年薪涨到30万
  9. 已经安装了根证书,charles还是无法抓取到HTTPS
  10. 使用Python+Selenium进行物流中转次数研究