deeplearning.ai第二门课——权重初始化
在深度学习领域,权重初始化是构建神经网络模型时的一个关键步骤。权重初始化得当与否直接影响着模型的训练效率和最终的性能。deeplearning.ai的第二门课程《提升深层神经网络》深入探讨了这一主题,其中包含了编程作业,旨在帮助学生理解和实践权重初始化的重要性。 在权重初始化中,我们关注的主要问题是确保神经网络的每个层能够均衡地传播信息。如果初始权重过大或过小,可能会导致某些神经元激活值过于饱和(激活函数如sigmoid或tanh的梯度接近于零)或完全消失(激活值接近于零),这两种情况都被称为“梯度消失”或“梯度爆炸”。这使得在网络的反向传播过程中,信息无法有效地从顶层传播到底层,导致训练困难。 课程中可能讲解了两种常见的权重初始化方法: 1. **随机初始化**:最简单的权重初始化方式是随机初始化,通常使用均匀分布或正态分布。例如,Xavier初始化(也称为Glorot初始化)和He初始化就是两个典型的例子。Xavier初始化适用于线性激活函数(如ReLU的前身),它根据输入和输出节点的数量来调整权重的均值和方差,以保持前后层的梯度规模相对稳定。He初始化则是针对ReLU激活函数设计的,它的方差是Xavier初始化的两倍,因为ReLU激活函数的一半时间输出为0,导致前向传播的方差减半。 2. **归一化初始化**:另一种常见方法是将权重初始化为单位范数,如Orthogonal初始化。这种方法确保每一层的输入都是正交的,可以减少内部协变量漂移,提高网络的训练速度。 `init_utils.py`可能是实现这些初始化策略的代码文件,可能包含了一些函数,如`xavier_init`, `he_init`, 或`orthogonal_init`,用于初始化权重矩阵。 `Initialization.html`可能是课程的笔记或解释文档,详细解释了权重初始化的理论和实践,可能还包含了如何在实际项目中应用这些初始化技术的示例。 通过这个编程作业,学生不仅能理论学习,还能动手实践,了解如何在实际神经网络模型中应用这些初始化方法,并观察它们对模型训练的影响。这有助于加深对深度学习模型训练过程的理解,以及优化模型性能的技巧。