楼主: 1IJsFNp9jWoU
158 0

GitHub开源项目:IT-Tools源码构建部署及其部署排错 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

0%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
10 点
帖子
0
精华
0
在线时间
0 小时
注册时间
2018-6-26
最后登录
2018-6-26

楼主
1IJsFNp9jWoU 发表于 2025-11-12 21:59:40 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

评述和反思分类用于记录吴恩达深度学习课程的学习笔记。

课程相关信息链接如下:

  • 原课程视频链接:[双语字幕]吴恩达深度学习deeplearning.ai
  • github课程资料,含课件与笔记: 吴恩达深度学习教学资料
  • 课程配套练习(中英)与答案:吴恩达深度学习课后习题与答案

本篇为第一课第三周,3.11部分的笔记内容,同时也是本周理论部分的最后一节。

经过第二周的基础补充,本周内容的理解难度可以说有了显著降低,主要是从逻辑回归扩展到浅层神经网络,讲解相关内容。我们按部就班地梳理课程内容即可,当然,依旧会尽可能地创造一个较为平滑的理解过程。

上一篇通过详细讲述激活函数的作用,并再次回顾了一遍浅层神经网络的传播过程,来说明浅层神经网络如何提高拟合能力,本篇则补上最后一块拼图,同时也是本周理论部分的最后一节。

在这周的例子中,我们设置神经网络隐藏层的神经元为四个,输出层的神经元再综合这四个神经元的输出结果计算最终的输出。那么当隐藏层神经元的数量增加后,又是如何发挥正向作用呢?

我们知道每个神经元都有自己的参数,通过不断训练参数达到拟合效果。如何让每个神经元都真正对拟合起到帮助作用,就是本篇的内容:随机初始化。

1. 什么是初始化

在训练神经网络之前,我们并不知道哪些参数(权重和偏置)是最好的,因此需要先给它们一个“起始值”,这个过程就叫做初始化。这些初始值相当于我们在参数空间中的“起点”,之后通过梯度下降不断调整,逐步逼近损失函数的最小值。简单来说,就是赋初值。

2. 为什么要随机初始化

在逻辑回归中,我们并不强调初始化内容,因为整个网络只有一层线性组合与其相关的参数,我们的所有操作都是在更新这一组参数,因此,把这组参数初始化成什么样,并不算一个需要思考的地方,因为这组参数最终都会随着更新让损失达到最低点。

而现在,我们在隐藏层设置四个神经元,如果所有参数一开始都设为同一个值(例如全为 0),会出现一个非常严重的问题。我们看这样一个过程:

  • 每个隐藏层神经元收到的输入一样;
  • 计算得到的中间结果也完全一样;
  • 反向传播时梯度也一样;
  • 于是所有神经元更新后的参数依旧完全相同。

Pasted image 20251020100419

这样训练下去,即使我们设置了很多神经元,它们都在“做同样的事情”,模型就退化成只有一个神经元的效果。用专业术语来说,这叫对称性问题(Symmetry Problem)。而解决办法就是在初始化时给每个神经元赋予一个不同的随机初始权重,打破对称性,让它们在训练过程中各自朝不同方向学习。

3. 损失的凸与非凸问题

我们说逻辑回归不存在对称性问题,还有另外一个关键原因:它的损失函数是凸函数。在第二周第四部分我们讲过,凸函数具有一个非常重要的特性:全局范围内只有一个最低点(全局最小值)。这意味着:无论参数从哪里初始化,只要我们沿着梯度下降方向不断更新参数,最终都会收敛到同一个最优点。

因此即使初始化相同,甚至初始化为 0,也不会导致模型陷入“学不动”或者“神经元行为完全一样”的问题,如下图所示:

Pasted image 20251020100135

但当我们从逻辑回归(单一线性变换)扩展为神经网络(包含隐藏层、激活函数、多个权重矩阵)时,经过无数函数的相乘,损失函数就不再是一个光滑的碗形函数,而变成了一个复杂的山地地形。有无数个山峰(局部最大值)、山谷(局部最小值)、鞍点(既不是峰也不是谷)。此时,损失函数不是凸函数,而是非凸的。因此,我们才需要随机初始化不同的神经元,来不断探索损失函数的最小值。

4. 举例类比随机初始化的作用

我们依旧用山坡来举例:

现在,我们派 4 个登山者去寻找一片山地的最低点(损失函数的最小值):

情况 结果
所有人从同一个山顶出发(全零初始化) 大家看到的坡度一样,朝同一个方向走,走的路径重叠,只等于一个人找路,效率极低。
每个人从不同位置出发(随机初始化) 各自看到的坡度不一样,探索方向不同,更可能有人找到更低的谷底(更优解)。

因此,随机初始化就是给每个神经元一个不同的起点,让它们探索不同的优化空间。

5. 权重的随机初始化

在神经网络中,隐藏层的每个神经元都拥有属于自己的权重参数和偏置。如果我们把所有权重都初始化为相同的值,就会造成一个严重的问题:对称性永远无法被打破,所有神经元的行为完全一样,网络就失去了“多神经元协作学习”的意义。因此,我们需要为每一个权重赋予一个随机的初始值,这就叫做权重随机初始化。它并不是让权重变得“乱七八糟”,而是把它们设定在一个很小且随机的范围内,例如:(由标准正态分布随机生成的浮点数)。这样,就可以打破对称性,实现多个隐藏神经元探索多个不同方向的效果。而对于权重的随机初始化,也有一些科学的初始化算法,我们遇到再说。

6. 偏置的初始化

与权重不同,偏置一般不需要随机初始化,而是直接初始化为 0 或一个很小的常数。

这是因为偏置项不会引发之前提到的“对称性问题”,它作为一个常数,只是简单地将激活函数的输入整体向左或向右移动,不会影响神经元之间的相似度。

因此,在权重已经通过随机初始化实现打乱效果后,我们便不会在偏置上浪费过多的算法性能。

总结

这便是本周课程的最后一部分内容。相比第二周需要较多的基础补充,本周实际上只是从逻辑回归到浅层神经网络的拓展,了解了神经网络规模增加如何帮助拟合。

下一篇的内容将是本周的课后习题和代码实践,我们将通过实操体验带隐藏层的神经网络相对于逻辑回归所带来的性能提升。

分类: 吴恩达深度学习笔记

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:GitHub Tools Tool Hub OLS

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
扫码
拉您进交流群
GMT+8, 2026-2-10 20:29