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

吴恩达《机器学习》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.lryc.cn/news/238761.html

相关文章:

  • 软信天成:如何利用大数据提高客户体验?
  • Vue 路由缓存 防止路由切换数据丢失 路由的生命周期
  • 基于ubuntu20.04安装ros系统搭配使用工业相机
  • 网络运维与网络安全 学习笔记2023.11.20
  • 银行业数据分析算法应用汇总
  • 搜索引擎trick:成为搜索高手的秘籍
  • 基于springboot实现冬奥会科普平台系统【项目源码+论文说明】计算机毕业设计
  • 用C++标准库生成制定范围内的整数随机数
  • 使用ExLlamaV2量化并运行EXL2模型
  • 【ARM AMBA AXI 入门 15 -- AXI-Lite 详细介绍】
  • 【开源】基于Vue.js的天然气工程业务管理系统的设计和实现
  • SpringBoot : ch04 整合数据源
  • Docker Swarm总结
  • 特殊token的特殊用途
  • 苹果Siri怎么打开?教你两招轻松唤醒!
  • 分类问题的评价指标
  • Hive 定义变量 变量赋值 引用变量
  • 51单片机LED灯渐明渐暗实验
  • 美团面试:微服务如何拆分?原则是什么?
  • easyExcel注解详情
  • S7-1200PLC 作为MODBUSTCP服务器通信(多客户端访问)
  • 泰勒多项式
  • 【Hello Go】Go语言文本文件处理
  • ppt录屏制作微课,轻松打造精品课程
  • php伪随机数
  • 为什么录屏没声音?实用技巧大放送!
  • 分布式系统的认证授权
  • TVS瞬态抑制二极管的工作原理和特点?|深圳比创达电子EMC
  • csdn - mermaid
  • C题目11:数组a[m]排序