当前位置: 首页 > news >正文

吴恩达机器学习系列12:反向传播算法

当我们要运用高级算法进行梯度下降时,需要计算两个值,代价函数代价函数的偏导数

代价函数我们之前已经知道怎么求了,现在只需要求代价函数的偏导数即可。


采用如下方法,先进行前向传播算法,然后再进行反向传播算法(Backpropagation Algorithm,反向传播算法与前向传播算法方向相反,它用来求代价函数的偏导数。具体过程看下图:

用 δ 作为误差,计算方法为:


有时我们在运用反向传播算法时会遇到 bug,而且这个 bug 还不容易被发现,因此我们就需要用梯度检验(Gradient Checking。这种算法的思想就是运用导数估计值去对导数真实值进行检验,去检查反向传播算法运行时是否存在 bug。


都知道,函数在某点的导数近似于该点相邻的两点所连直线的斜率。

在函数图像上蓝色线代表该点的导数,红色线代表导数的近似值:

在向量中进行计算就需要对向量中每一个元素都计算一遍,这就需要进行一个循环,而这个循环会非常慢。

循环之后得到的结果与运用反向传播得到的结果进行比较,如果两个结果近似相等,那我们就可以认为反向传播算法运行正常,之后就可以关闭梯度检验,继续运行反向传播算法。因为梯度检验的循环导致运行速度太慢了。



总结


在训练一个完整的神经网络之前,我们首先要选择一个神经网络结构,也就是选择一个神经元之间关系的模型,通常会是以下这几种情况:

一般地来讲,最左边这种隐藏层只有一层的结构是最常见的,也是使用最多的。


在选好神经网络结构后,就可以训练神经网络模型了,一共有 6 个步骤:

1.随机初始化权重;

2.运用前向传播算法对每一个输入值 x^((i)) 得到输出值

3.计算代价函数;

4.运用反向传播算法计算代价函数的偏导数;

5.使用梯度检验确定反向传播算法是否正常工作,如果检验没有问题,就要关闭梯度检验,因为梯度检验算法运行速度非常慢;

6.使用高级优化算法去进行梯度下降,使得代价函数最小化,从而得到参数向量。



ps. 本篇文章是根据吴恩达机器学习课程整理的学习笔记。如果想要一起学习机器学习,可以关注微信公众号「SuperFeng」,期待与你的相遇。

转载于:https://juejin.im/post/5c976868f265da61173a3bc0

相关文章:

  • Oracle_11g
  • 数据科学家为什要用Git?怎么用?
  • 阿里巴巴收购以色列VR公司,大厂死磕VR为哪般?
  • 搭建YUM仓库
  • 【springboot】 mybatis 集成代码生成器 shiro 权限 后台框架平台
  • 程序员跳槽高峰期:BAT面试合集JVM+Spring+数据库+中间件等
  • 项目总结21:项目总结21:input实现多图上传(FormData)(上传OSS并保存数据库)
  • 04C++const增强、枚举的增强
  • 阿里云API、SDK和CLI应用实践方案
  • 带你开发类似Pokemon Go的AR游戏
  • Ubuntu18.04安装netstat
  • 「实战篇」开源项目docker化运维部署-搭建mysql集群(四)
  • 同城艺龙code
  • main.js中封装全局登录函数
  • Greenplum 5.16.0初探
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • dva中组件的懒加载
  • express如何解决request entity too large问题
  • IndexedDB
  • Java IO学习笔记一
  • Javascript基础之Array数组API
  • JS+CSS实现数字滚动
  • nodejs实现webservice问题总结
  • October CMS - 快速入门 9 Images And Galleries
  • Python 反序列化安全问题(二)
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 读懂package.json -- 依赖管理
  • 无服务器化是企业 IT 架构的未来吗?
  • 与 ConTeXt MkIV 官方文档的接驳
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 第二十章:异步和文件I/O.(二十三)
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (12)Linux 常见的三种进程状态
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (四)Android布局类型(线性布局LinearLayout)
  • (算法)Travel Information Center
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • *2 echo、printf、mkdir命令的应用
  • .NET CLR Hosting 简介
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .Net MVC + EF搭建学生管理系统
  • .NET 药厂业务系统 CPU爆高分析
  • .NET 中创建支持集合初始化器的类型
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .Net6使用WebSocket与前端进行通信
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET框架设计—常被忽视的C#设计技巧
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .Net小白的大学四年,内含面经
  • .php文件都打不开,打不开php文件怎么办