蛊讨言惺此分类用于记录吴恩达深度学习课程的学习笔记。课程相关信息链接如下原课程视频链接[双语字幕]吴恩达深度学习deeplearning.aigithub课程资料含课件与笔记:吴恩达深度学习教学资料课程配套练习中英与答案吴恩达深度学习课后习题与答案本篇为第一课第三周3.11部分的笔记内容同时也是本周理论部分的最后一篇。经过第二周的基础补充本周内容的理解难度可以说有了很大的降低主要是从逻辑回归扩展到浅层神经网络讲解相关内容我们按部就班梳理课程内容即可当然依旧会尽可能地创造一个较为丝滑的理解过程。上一篇通过展开讲述激活函数的作用并再次过了一遍浅层神经网络的传播过程来说明浅层神经网络如何提高拟合能力本篇则补上最后一块拼图同时也是本周理论部分的最后一篇。在这周的例子里我们设置神经网络隐藏层的神经元为四个输出层的神经元再综合四个神经元的输出结果计算最终的输出那隐藏层神经元的数量增加后又是如何发挥正向的作用呢我们知道每个神经元都有自己的参数我们通过不断训练参数达到拟合效果如何让每个神经元都真的对拟合起到帮助作用就是本篇的内容随机初始化1. 什么是初始化在训练神经网络之前我们并不知道哪些参数权重和偏置是最好的因此需要先给它们一个“起始值”这个过程就叫做初始化。这些初始值相当于我们在参数空间中的“出发点”之后通过梯度下降不断调整逐步逼近损失函数的最小值。简单来说就是赋初值。2. 为什么要随机初始化在逻辑回归中我们并不强调初始化内容这是因为整个网络只有一层线性组合与其相关的参数我们的所有操作都是在更新这一组参数因此把这组参数初始化成什么样并不算一个需要思考的地方因为这组参数最终都会随着更新让损失达到最低点。而现在我们在隐藏层设置四个神经元如果所有参数一开始都设为同一个值例如全为 0会出现一个非常严重的问题我们看这样一个过程每个隐藏层神经元收到的输入一样计算得到的中间结果也完全一样反向传播时梯度也一样于是所有神经元更新后的参数依旧完全相同Pasted image 20251020100419这样训练下去即使我们设置了很多神经元它们都在“做同样的事情”模型就退化成只有一个神经元的效果。用专业术语来说这叫对称性问题Symmetry Problem。而解决办法就是在初始化时给每个神经元赋予一个不同的随机初始权重打破对称性让它们在训练过程中各自朝不同方向学习。3.损失的凸与非凸问题我们说逻辑回归不存在对称性问题还有另外一个关键原因它的损失函数是凸函数。在第二周第四部分我们讲过凸函数具有一个非常重要的特性全局范围内只有一个最低点全局最小值。这意味着无论参数从哪里初始化 只要我们沿着梯度下降方向不断更新参数最终都会收敛到同一个最优点。因此即使初始化相同甚至初始化为 0也不会导致模型陷入“学不动”或者“神经元行为完全一样”的问题如下图所示Pasted image 20251020100135但当我们从逻辑回归单一线性变换扩展为神经网络包含隐藏层、激活函数、多个权重矩阵时经过无数函数的相乘损失函数就不再是一个光滑的碗形函数而变成了一个复杂的山地地形。有无数个山峰局部最大值、山谷局部最小值、鞍点既不是峰也不是谷。此时损失函数不是凸函数而是非凸的。因此我们才需要随机初始化不同的神经元来不断探索损失函数的最小值。4.举例类比随机初始化的作用我们依旧用山坡来举例现在我们派 4 个登山者去寻找一片山地的最低点损失函数的最小值情况 结果所有人从同一个山顶出发全零初始化 大家看到的坡度一样朝同一个方向走走的路径重叠只等于一个人找路效率极低。每个人从不同位置出发随机初始化 各自看到的坡度不一样探索方向不同更可能有人找到更低的谷底更优解。因此随机初始化就是给每个神经元一个不同的出发点让它们探索不同的优化空间。5. 权重的随机初始化在神经网络中隐藏层的每个神经元都拥有属于自己的权重参数和偏置。如果我们把所有权重都初始化为相同的值就会造成一个严重的问题对称性永远无法被打破所有神经元的行为完全一样网络就失去了“多神经元协作学习”的意义。因此我们需要为每一个权重赋予一个随机的初始值这就叫做权重随机初始化。它并不是让权重变得“乱七八糟”而是把它们设定在一个很小且随机的范围内例如由标准正态分布随机生成的浮点数这样就可以打破对称性实现多个隐藏神经元探索多个不同方向的效果。而对于权重的随机初始化也有一些科学的初始化算法我们遇到再说。6. 偏置的初始化与权重不同偏置一般不需要随机初始化而是直接初始化为 0 或一个很小的常数。这是因为偏置项不会造成之前提到的“对称性问题”它作为一个常数只是简单地把激活函数的输入整体向左或向右平移不会影响神经元之间是否相同。因此在权重已经随机初始化实现了打乱效果后我们便不会把过多的算法性能浪费在偏置上。总结这便是本周课程的最后一部分内容相比第二周需要较多的基础补充本周其实只是实现了从逻辑回归到浅层神经网络的扩展了解了神经网络规模增加是如何帮助拟合的。下一篇的内容便是本周的课后习题和代码实践我们用实操来感受一下带隐藏层的神经网络相比逻辑回归带来的性能提升。分类: 吴恩达深度学习笔记