302页吴恩达Deeplearning.ai课程笔记,详记基础知识与作业代码
吴恩达的 DeepLearning.ai 已经于 1 月 31 日发布了最后一门课程。近日,来自重庆大学的 Wan Zhen 制作了一份深度学习专项课程笔记,该笔记从神经网络与深度学习基础、提升深度神经网络性能和卷积神经网络三门课程出发详细解释了关键概念与作业代码。本文概括性地介绍了这三课的主要内容,并选择每个课程主题比较有意思的知识点进行介绍。
在这份笔记中,Wan Zhen 不仅介绍了每个课程的关键知识点,同时还详细解释了各课程的编程作业。在第一门课程《神经网络与深度学习基础》中,该课程笔记不仅提供了最基础的 Python 和 NumPy 操作笔记,同时还从最基础的 Logistic 回归推导到最一般的深度全连接网络。当然,还介绍了必要的损失函数与反向传播方法。而在第二门课程中,该笔记详细记录了提升深度网络性能所需要的技巧与基础,例如初始化、正则化和梯度检验等在实践上大大提升模型性能的方法,以及一般 SGD、动量法和适应性学习率方法等常见的最优化方法。最后,第二门课程重点介绍了 TensorFlow,包括该框架的常用函数和实际构建网络的过程等。最后一章节主要记录了卷积神经网络,包括基本的卷积运算、残差网络和目标检测框架等。
以下是该课程笔记的简要框架与一些详细的知识点。
1. 神经网络与深度学习
这一部分对应的是吴恩达深度学习课程的第一课,主要介绍必要的编程语言和编程工具,并逐步进阶介绍线性网络、非线性网络、隐藏层网络到深度网络的实现方法,细节详尽,附有完整的代码。通过这一部分的学习,你将理解神经网络的结构和数据流(前向传播和反向传播),非线性激活函数和隐藏层对学习复杂函数的作用,并知道如何一步步构建完整的(任意结构的、自定义的)神经网络,体会向量化和模块化编程思想的妙处。
1.1 Python 基础和 Numpy
本章第一节介绍了如何使用 Python 的 Numpy 工具包、iPython Notebook 等基本的编程工具。然后介绍如何用这些工具构建神经网络,特别是理解神经网络计算的向量化思想和 Python 广播的使用。
1.2 logistic 回归
第 2 节介绍如何构建一个准确率为 70% 的 logistic 回归神经网络分类器(图像识别网络)来识别猫,并介绍如何进一步将准确率提高的方法,以及损失函数的偏导数更新参数的过程。其中特别强调了尽量用向量化结构而不要用循环结构,除非有必要(比如 epoch 的迭代就必须使用循环结构)。
1.2.1 介绍必要的 Python 工具包;1.2.2 介绍数据集的结构;1.2.3 介绍整个学习算法的宏观架构;1.2.4 介绍构建算法的基本步骤;1.2.5 和 1.2.6 总结前述内容进行代码实现,并进行了可视化分析;1.2.7 介绍如何用自己的数据集训练该神经网络;1.2.8 展示了 logistic 回归神经网络的完整代码。
其中 1.2.4 介绍的构建算法的基本步骤为:
-
定义模型结构;
-
初始化模型参数;
-
循环迭代结构:
-
计算当前损失函数值(前向传播)
-
计算当前梯度值(反向传播)
-
更新参数(梯度下降)
通常 1—3 部分是分开构建的,然后整合到一个函数 model() 中。
1.2.5 对 model() 进行了代码实现,并画出了损失函数和梯度的图像。