吴恩达《机器学习》9-4-9-6:实现注意:展开参数、梯度检验、随机初始化

一、实现注意:展开参数

在上一个视频中,讨论了使用反向传播算法计算代价函数的导数。在本视频中,将简要介绍一个实现细节,即如何将参数从矩阵展开为向量。这样做是为了在高级最优化步骤中更方便地使用这些参数。

二、梯度检验

在神经网络中使用梯度下降算法时,复杂模型可能导致一些难以察觉的错误,即使代价函数在减小,最终结果也可能并非最优解。为了解决这个问题,采用一种称为梯度检验(Gradient Checking)的数值方法,通过估计梯度值来验证我们计算的导数是否准确。

梯度检验方法

梯度检验的基本思想是在代价函数上沿着切线的方向选择离两个非常近的点,然后计算两个点的平均值,用以估计梯度。对于某个特定的参数 𝜃,计算在 𝜃-𝜀 处和 𝜃+𝜀 处的代价值,其中 𝜀 是一个很小的值(通常选取为 0.001),然后求两个代价的平均值,以估计在 𝜃 处的导数。

Octave 中的代码示例如下:

gradApprox = (J(theta + eps) - J(theta - eps)) / (2 * eps)

偏导数检验

如果 𝜃 是一个向量,我们需要对每个参数进行偏导数检验。以下是针对 𝜃1 的示例:

# 对参数𝜃1进行偏导数检验的示例
partialDerivativeTheta1 = (J(theta1 + eps, theta2, ..., thetaN) - J(theta1 - eps, theta2, ..., thetaN)) / (2 * eps)

最后,还需要对通过反向传播计算出的偏导数进行检验。计算出的偏导数存储在矩阵 𝐷𝑖𝑗(𝑙) 中。在检验时,将该矩阵展开成为向量,同时将参数矩阵 𝜃 展开为向量,对每个 𝜃 计算一个近似的梯度值,并将这些值存储于一个近似梯度矩阵中。最终,将这个近似梯度矩阵与反向传播计算的梯度矩阵进行比较。

通过梯度检验,能够更加确信我们的梯度计算是正确的,从而提高神经网络训练的可靠性。

三、随机初始化

在神经网络的训练中,任何优化算法都需要一些初始的参数。到目前为止,采用的是将所有参数初始化为 0 的方法。然而,对于神经网络来说,这种初始化方法是不可行的。如果所有参数都初始化为 0,那么第二层的所有激活单元都会具有相同的值。同样,如果将所有参数初始化为相同的非零值,结果也会相似。

为了解决这个问题,引入了随机初始化(Random Initialization)的概念。随机初始化的思想是将参数初始化为介于一定范围内的随机值,而不是固定的值。

随机初始化的代码示例

假设要随机初始化一个尺寸为 10×11 的参数矩阵,我们可以使用如下的 Octave 代码:

Theta1 = rand(10, 11) * (2 * eps) - eps

上述代码使用 rand 函数生成一个包含介于 0 和 1 之间的随机值的矩阵,然后通过乘法和减法操作将其缩放到介于负 eps 到正 eps 之间,其中 eps 是一个很小的数,通常取 0.01。

通过随机初始化,打破了对称性,防止了所有参数具有相同初始值的问题,有助于神经网络更好地学习数据的特征,提高了训练的效果。这是神经网络训练中一个重要的实现注意点。

参考资料

[中英字幕]吴恩达机器学习系列课程

黄海广博士 - 吴恩达机器学习个人笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/155548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java vo dto 使用场景

在Java中,VO(Value Object)和DTO(Data Transfer Object)是常用的设计模式,用于数据传递和封装。它们分别适用于不同的场景: VO(Value Object):用于表示具有一…

【2021集创赛】IEEE杯一等奖:一种28GHz高能效Outphasing PA设计

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 团队介绍 参赛单位:电子科技大学 队伍名称:PA调得队 指导老师:王政 参赛队员:倪梦虎、杨茂旋、张振翼 总决赛奖项:一等奖 1.项…

Git仓库如何重置成新仓库或者仅留最终版本

Git仓库如何重置成新仓库或者仅留最终版本 1. 重置成新仓库1.1 使用orphan参数checkout全新分支1.2 重命名latest_branch为master分支 2.仅保留最终版本2.1 使用orphan参数checkout全新分支2.2 重命名latest_branch为master分支 1. 重置成新仓库 1.1 使用orphan参数checkout全…

Golang基础-面向对象篇

文章目录 struct结构体类的表示与封装类的继承多态的基本要素与实现interface空接口反射变量的内置pairreflect包解析Struct TagStruct Tag在json中的应用 struct结构体 在Go语言中,可以使用type 关键字来创建自定义类型,这对于提高代码的可读性和可维护…

掌握这个技巧,你也能成为酒店管理高手!

随着科技的迅猛发展,监控技术在各个领域得到了广泛应用。然而,传统的监控系统在面对水浸等突发事件时,往往无法提供有效的预警和保护。 水浸监控系统通过实时监测水位变化,及时发出警报,以帮助用户采取紧急措施&#x…

EANet:用于医学图像分割的迭代边缘注意力网络

EANet: Iterative edge attention network for medical image segmentation EANet:用于医学图像分割的迭代边缘注意力网络背景贡献实验方法Dynamic scale-aware context module(动态规模感知上下文模块)Edge attention preservation module&a…

3D格式转换工具

这里记录下自己之前做3D模型格式转换,包括做CAD模型格式转换辅助的一些开源仓库和工具 (一)转换成gltf工具 gltf作为3D界的jpg标准,如今已经有很多引擎对其进行了支持,这里单独把它列出来 1. obj转glft工具 git仓库…

深入解析Windows操作系统——概念和工具

文章目录 Windows操作系统的版本Windows NT和Windows 95基础概念和术语内核调试用户模式调试 Windows操作系统的版本 Windows NT和Windows 95 Windows NT和Windows 95之间的一些结构性差异,以及Windows NT优于Windows 95及其后续版本的一些方面: Wind…

慧择解构年轻高客市场长期价值 花旗重申“买入”评级

风险转移、资金配置、社会保障、风险管理,当这四大保险行业基本职能呈现在眼前,人们曾经的第一反应可能是,只有达到一定年龄和社会地位、具备一定经济实力的人群,才会真正严肃对待这些概念。 但是,无论是人均收入水平…

前端环境变量释义import.meta.env.xxx

视频教程 彻底搞懂前端环境变量使用和原理,超清楚_哔哩哔哩_bilibili 添加命令行参数 --modexxxxx 新建.env.xxxx文件,其中.env文件会在所有环境下生效 以VITE_开头,字符串无需加双引号 使用import.meta.env.VITE_xxxxx进行调用

使用pytorch利用神经网络原理进行图片的训练(持续学习中....)

1.做这件事的目的 语言只是工具,使用python训练图片数据,最终会得到.pth的训练文件,java有使用这个文件进行图片识别的工具,顺便整合,我觉得Neo4J正确率太低了,草莓都能识别成为苹果,而且速度慢,不能持续识别视频帧 2.什么是神经网络?(其实就是数学的排列组合最终得到统计结果…

StringBuffer解析

StringBuffer是可变的字符序列,当一个StringBuffer被创建以后,通过StringBuffer提供append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调…

移动云CNP产品介绍

整体介绍 磐舟devops的核心功能是项目管理和CI流程实现。CD能力也是集成的外部开源产品argoCD。所以 磐舟并不以CD能力见长。一般推荐试用磐舟完成CI,然后试用移动云CNP产品完成CD部署工作。 移动云原生技术平台CNP是面向多云多集群场景的应用管理平台。平台以应用…

Linux—简介安装常用命令系统中软件安装项目部署

目录 1. 前言1.1 什么是Linux1.2 为什么要学Linux1.3 学完Linux能干什么 2. Linux简介2.1 主流操作系统2.2 Linux发展历史2.3 Linux系统版本 3. Linux安装3.1 安装方式介绍3.2 安装VMware3.3 安装Linux3.4 网卡设置3.5 安装SSH连接工具3.5.1 SSH连接工具介绍3.5.2 FinalShell安…

大数据可视化是什么?

大数据可视化是将海量数据通过视觉方式呈现出来,以便于人们理解和分析数据的过程。它可以帮人们发现数据之间的关系、趋势和模式,并制定更明智的决策。大数据可视化通常通过图形、图表、地图和仪表盘等视觉元素来呈现数据。这些元素具有直观、易理解的特…

vscode自定义代码提示

vscode输入一段代码后,自动给代码提示,那么如何才能自定义呢? 点击左下角设置按钮,弹出一个框。选择点击“用户代码片段”,又弹出一个框提供了很多选项,其中包括了针对某些类型的文件(如&#x…

Python 检测网络是否连通

1 使用 urlib import urllib.requestdef test_internet_connection():url https://www.baidu.comtry:urllib.request.urlopen(url, timeout5)print("网络连接正常")except urllib.error.URLError as ex:print("网络连接异常:" str(ex))test_…

前端uniapp生成海报绘制canvas画布并且保存到相册【实战/带源码/最新】

目录 插件市场效果如下图注意使用my-share.vue插件文件如下图片hch-posterutilsindex.js draw-demo.vuehch-poster.vue 最后 插件市场 插件市场 效果如下图 注意 主要&#xff1a;使用my-share.vue和绘制canvas的hch-poster.vue这两个使用 使用my-share.vue <template&…

时序预测 | MATLAB实现基于LSTM-AdaBoost长短期记忆网络结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于LSTM-AdaBoost长短期记忆网络结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于LSTM-AdaBoost长短期记忆网络结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 x 基本介绍 1.Matlab实现LSTM-Adaboost时间序列预测…

SQL基础理论篇(八):视图

文章目录 简介创建视图修改视图删除视图总结参考文献 简介 视图&#xff0c;即VIEW&#xff0c;是SQL中的一个重要概念&#xff0c;它其实是一种虚拟表(非实体数据表&#xff0c;本身不存储数据)。 视图类似于编程中的函数&#xff0c;也可以理解成是一个访问数据的接口。 从…