吴恩达《机器学习》第九章:神经网络的学习

九、神经网络的学习

9.1 代价函数

在这里插入图片描述
???

9.2 反向传播算法

Back Propagation => BP神经网络
在这里插入图片描述
δ表示误差值,输出的aj(4)与yi的差值;

先计算结果,在根据误差调整参数,原理和逻辑回归差不多,只是过程复杂了,这个误差就是反向传播算法得到的,而结果则是前向传播算法得出;
前向输出,反向求参
在这里插入图片描述

9.3 理解反向传播

这是前向传播:
在这里插入图片描述
在这里插入图片描述
再看反向传播:
在这里插入图片描述

9.4 梯度检验

使用神经网络进行类梯度下降算法时,最好附加使用梯度检验,能让算法优化一个级别以上,它能保证前向、反向传播百分之百正确;

曲线上某点的导数的近似值:双侧差分
在这里插入图片描述
上面考虑θ是一个实数值的情况,下面则会进一步将θ看作向量:
在这里插入图片描述

for i = 1 :n,
	thetaPlus = theta;
	thetaPlus(i) = thetaPlus(i) + EPSILON;
	thetaMinus = theta;
	thetaMinus(i) = thetaMinus(i) - EPSILON ;
	gradApprox(i) = (J(thetaPlus) - J( thetaMinus) )/(2*EPSILON);
end;

接下来检验这个 gradApprox ≈ DVec(反向传播得到的导数),从而验证反向传播是正确的;

整体步骤:

  • 通过反向传播来计算DVec(D(1),D(2),D(3)的展开形式);
  • 实现数值上的梯度检验,计算出gradApprox;
  • 确保gradApprox和DVec是相似的值;
  • 在训练样本/运行算法前,gradApprox检验程序务必要关闭,因为这个计算导数的程序需要很大的计算量,计算速度很慢,而反向传播中DVec的计算是高性能的;

如果在每次循环,或者每次梯度下降,都进行一次梯度检验,那么程序就会变得非常慢;

9.5 随机初始化

如何对θ初始化?

  • 将所以参数初始化为0,在逻辑回归中是允许的,但在训练网络时基本起不到作用;因为在网络训练时,权重都初始化为0,意味着虽然每次都会梯度下降,但θ01(1)=θ02(1)的,这两个参数始终相等,且都不为零; 在这里插入图片描述
  • 为了解决上面这个问题,神经网络中参数的初始化要具有随机化的思想,打破对称性;
    在这里插入图片描述

9.6 总体回顾

  • 第一步:选择神经网络架构;根据输入单元和输出单元个数选择合适的神经网络架构,一般隐藏层默认为1层(也是最常用的),如果选择大于1层,应保证每个隐藏层的单元个数相等;
    在这里插入图片描述
  • 第二步:训练神经网络;
    • 随机初始化权重,权重很小,接近于0;
    • 执行前向传播,即根据输入的x(1)得到hθ(x(i)),就是y值;
    • 通过代码计算代价函数;
    • 执行反向传播,算出偏导数项,也就是J(θ)关于参数θ的偏导数;
    • 用for循环对每一个样本执行前向传播和反向传播,特别是第一次使用反向传播时,建议用for循环;
      在这里插入图片描述
    • 梯度检验,将这些偏导数值和数值方法得到的估计值进行比较;如果接近,则说明反向传播计算结果正确;
    • 选择一个优化方法,也可以使用高级优化方法,内置到fminunc中,与反向传播相结合,从而最小化J(θ);对于神经网络,代价函数J(θ)为非凸函数,理论上可能停留在局部最小值;虽然不能确定是不是得到的全局最优值,但梯度下降法这样的优化方法通常表现不错,也能得到一个很小的局部最优值;
      在这里插入图片描述

9.7 神经网络举例:无人驾驶

在这里插入图片描述
也需要驾驶员驾驶几分钟,让神经网络充足地学习了,在能够进行简单的自动驾驶,当前面都是路(传来的图片是一整块白色的时),神经网络学习的置信度明显下降,当又走到双车道,回到原来的那样子时,置信度又上升了;

已标记关键词 清除标记
课程简介: 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟会话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页