
入门 | 吴恩达Deeplearning.ai 全部课程学习心得分享
本文作者,加拿大国家银行首席分析师 Ryan Shrott 完成了迄今为止(2017 年 10 月 25 日)吴恩达在 Coursera 上发布的所有深度学习课程,并为我们提供了课程解读。
目前 Coursera 上可用的课程中,有三门课非常值得关注:
1. 神经网络与深度学习(Neural Networks and Deep Learning)
2. 改进深度神经网络:调整超参数、正则化与优化(Improving Deep Neural Networks: Hyperparamater tuning, Regularization and Optimization)
3. 结构化机器学习项目(Structuring Machine Learning Projects)
我发现这三门课非常重要,在其中,我们可以从吴恩达教授那里获得很多有用的知识。吴恩达在教学语言上做得很好,解释概念清晰明了。例如,吴恩达明确指出监督学习并没有超出多维曲线拟合过程的范畴,而对于这种方法的其他理解方式,如对人类神经系统的模拟,实际上并不严谨。
学习这些课程的基础知识要求不多,只要求你事先掌握一些线性代数,以及 Python 基础编程知识。在我看来,你也需要了解向量计算来理解优化过程的内在知识。但如果你不关心内部运作方式,并只希望了解高级层面上的内容,尽管跳过微积分的部分。
第 1 课:为什么深度学习如此热门?
现在人类产生的 90% 数据是在最近 2 年内被收集的。深度神经网络(DNN)能够利用体量巨大的数据。因此,DNN 超越了较小的网络和传统学习算法。
规模是如何推动 DNN 性能的
此外,算法上的创新也使得 DNN 的训练速度变得更快。例如,从 Sigmoid 激活函数改为 RELU 激活函数对梯度下降等任务的优化过程产生了巨大影响。这些算法的改进使得研究人员可以更快地遍历灵感→ 代码→ 经验的开发循环,从而带来更多的创新。
深度学习开发循环
第 2 课:深度学习中的向量化
在开始这门课之前,我并不知道神经网络可以在没有任何明确循环语句的情况下被实现(除了层之间的)。吴恩达点明了 Python 中向量化编程设计的重要性。课程附带的作业引导你进行向量化的编程,同时这些方法也可以很快迁移到你自己的项目中。
第 3 课:深入了解 DNN
前几门课实际上在引导你使用 NumPy 从头开始实现前向和反向传播。通过这种方法,我更加深入了解了高级深度学习框架(如 TensorFlow 和 Keras)的工作原理。吴恩达解释了计算图背后的想法,从而让我们了解了 TensorFlow 如何实现「神奇优化」的。
第 4 课:为什么需要深度?
在这一节中,吴恩达深入解释了 DNN 的层概念。例如,对于面部识别系统,他向我们解释了先处理的层是用于处理面部边界的,其后的层用于将这些边界识别为面部组件(如鼻子、眼睛、嘴等),再其后的层会将这些组件整合到一起识别人的身份。他还解释了电路理论(circuit theory)的思想——存在一个函数,需要来自隐藏单元指数式的数字来适应浅网络的数据。可以通过添加有限数量的附加层来简化指数问题。
第 5 课:处理偏差和方差的工具
吴恩达解释了研究者识别和处理偏差方差相关问题的步骤。下图诠释了一种解决这些问题的系统性方法。
解决偏差和方差问题的方法
他还解决了偏差和方差之间的「权衡」(tradeoff)。他认为在现在这个深度学习的时代,我们拥有独立解决每个问题的工具,使权衡不再存在。
第 6 课:正则化
为什么向成本函数添加惩罚项会降低方差?在上这门课之前我的理解是它使权重矩阵接近于零,从而产生一个更「线性」的函数。吴恩达给出了另外一种和 tanh 激活函数相关的解释,即较小的权重矩阵生成较小的输出,使得输出围绕在 tanh 函数线性区域的中心。
tanh 激活函数
他还给出了 dropout 的有趣解释。之前我认为 dropout 在每次迭代中消灭随机神经元,就像越小的网络线性程度就越强一样。但是吴恩达的解释是从单个神经元的角度来看待生命(life)。
单个神经元的角度
由于 dropout 随机消灭连接,这促使神经元向父系神经元中更加均匀地扩展权重。通过扩展权重,它可以减少权重的 L2 范数(squared norm)。他还解释了 dropout 是 L2 正则化的自适应形式,两种方法效果相近。
第 7 课:归一化为何有效?
吴恩达展示了为什么归一化可以通过绘制等高线图的方式加速优化步骤。他详细讲解了在归一化和非归一化等高线图上进行梯度下降所需要的迭代次数变化,即相同优化算法没经过归一化操作会需要更多的迭代数。
第 8 课:初始化的重要性
吴恩达表示不使用参数初始化可能导致梯度消失或爆炸。他展示了多个步骤来解决这些问题。基本原则是确保每一层的权重矩阵的方差都近似为 1。他还讨论了 tanh 激活函数的 Xavier 初始化。
第 9 课:为什么使用小批量梯度下降?
吴恩达使用等高线图解释了使用小批量和大批量训练之间的权衡。基本原则是较大的批量每次迭代会变慢,较小的批量可以加快迭代过程,但是无法保证同样的收敛效果。最佳方法就是在二者之间进行权衡,使得训练过程比一次性处理整个数据集要快,又能利用向量化技术的优势。
第 10 课:高级优化技术的直观理解
吴恩达解释了合适使用动量(momentum)和 RMSprop 等技术限制梯度下降逼近极小值的路径。他还用球滚下山的例子生动地解释了这一过程。他把这些方法结合起来来解释著名的 Adam 优化。
第 11 课:基本的 TensorFlow 后端理解
吴恩达不仅解释了如何使用 TensorFlow 实现神经网络,同时还讲解了在优化过程中出现的后端进程。有一个家庭作业就是鼓励我们使用 TensorFlow 实现 dropout 和 L2 正则化,这加强了我对后端过程的理解。
第 12 课:正交化
吴恩达还讨论了机器学习策略中正则化的重要性。其基本思想是,我们希望实现并控制影响算法性能的因素,即一次只控制一个影响性能的因素。例如为了解决偏差问题,我们可以使用更大的网络或更鲁棒的优化技术,我们希望这些控制只影响偏差而不会影响其它如泛化等问题。缺少正交化控制的案例是过早停止了算法的最优化过程,因为这样会同时影响模型的偏差和方差。
第 13 课:单数值评估度量的重要性
吴恩达强调了选择单数值评估度量(single number evaluation metric)的重要性,它可以允许我们评估算法。如果目标改变,我们应该在模型开发过程中仅更改评估度量。吴恩达给我们讲解了一个使用猫分类应用识别色情图片的案例。
第 14 课:测试和开发集的分布
通常我们会假设测试集与开发集(dev sets)的分布相同,这就确保了我们在迭代过程中朝向正确的目标优化。这同样意味着如果你决定纠正测试集中错误的标注数据,那么你需要在开发集中纠正错误标注的数据。
第 15 课:处理不同的训练和测试/开发分布
吴恩达介绍了为什么我们对训练和测试/开发集没有相同的分布这一问题感兴趣。因为我们希望根据实际关心的样本来计算评估度量。例如我们可能希望使用和训练问题无关的的样本进行训练,但我们并不希望算法使用这些样本进行评估,这就令我们的算法可以在更多的数据上进行训练。经验上,这种方法可以在许多案例上产生非常好的效果。缺点是可能我们的训练和测试/开发集有不同的分布,这个问题的通常解决办法是,可以留出一小部分训练集,并确定训练集的泛化性能。然后我们可以比较这些误差率与实际的开发误差,并计算一个「数据误匹配」的度量标准。吴恩达还解释了解决这些数据误匹配问题的方法,例如人工数据合成。
第 16 课:训练集/开发集/测试集大小
在深度学习时代,训练集/开发集/测试集的分隔方法也发生了巨大的改变。之前,我只知道较普遍的 60/20/20 分隔。吴恩达强调,对于一个非常大的数据集,应该使用 98/1/1 甚至 99/0.5/0.5 的分隔。这是因为开发集合测试集只要足够大能保证模型处于团队设定的置信区间即可。如果你使用 1 千万个训练样本,那么 10 万样本(即数据集的 1%)就足够保证开发集和/或测试集的置信区间了。
第 17 课:近似贝叶斯最优误差
吴恩达解释了在某些应用中人类级别的性能如何作为贝叶斯误差的替代。例如,在视觉和听觉识别任务中,人类级别的误差通常很接近贝叶斯误差,可以用于量化模型中可避免的偏差。如果没有诸如贝叶斯误差这样的基准测试,理解网络中的方差和可避免的偏差问题是很困难的。
第 18 课:误差分析
吴恩达介绍了一种能显著提高算法性能的有效性的误差分析技术。基本想法是手工标注错误分类的样本,集中精力处理对错误分类数据影响最大的误差。
猫识别 App 误差分析
例如,在猫识别中吴恩达认为模糊的图像最容易导致误差。这种敏感性分析可以令人看到在降低总体误差的过程中,你花费的精力到底有多值得。还有一种可能是,修复模糊图像是很费力的任务,而其它的误差更容易理解和修复。敏感性分析和近似操作都将作为决策过程的因素。
第 19 课:什么时候使用迁移学习?
迁移学习允许将一个模型的知识迁移到另一个。例如,你可以将一个猫识别 app 中的图像识别知识迁移到放射诊断中去。实现迁移学习需要用更多的数据重训练网络的最后几个层,以用于相似的应用领域。其思想基础是网络的低层的隐藏单元拥有更加广阔的应用范围,即对具体的任务类型不敏感。总之,当任务之间拥有相同的输入特征,并且需要学习的任务拥有比需要训练的任务多得多的数据的时候,迁移学习是可行的。
第 20 课:什么时候使用多任务学习?
多任务学习迫使单个神经网络同时学习多个任务(和每一个任务都配置单独的神经网络相反)。吴恩达解释道,当任务集合通过共享低级特征获得学习增益,以及每一个任务的数据量规模相似的时候,这种方法能工作得很好。
第 21 课:什么时候用端到端的深度学习?
端到端的深度学习需要多层处理并将它们组合到单个神经网络中,这使得数据能在没有人工设计步骤引进偏差的前提下自主进行优化过程。另一方面,这个方法需要非常多的数据,有可能排除潜在的手工设计成分。
结论
吴恩达的深度学习课程使我对深度学习模型的开发过程有了基本的直观理解,以上我解释过的课程只不过是这个课程中展示资料的一部分。即使完成了课程你也还不能称为深度学习专家,而我唯一的不满是课程的作业布置太简单了。顺便提一句,写这篇文章并没有得到 deeplearning.ai 的批准。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
机器学习解决实际问题的核心关键:从业务到落地的全流程解析 在人工智能技术落地的浪潮中,机器学习作为核心工具,已广泛应用于 ...
2025-09-09SPSS 编码状态区域中 Unicode 的功能与价值解析 在 SPSS(Statistical Product and Service Solutions,统计产品与服务解决方案 ...
2025-09-09CDA 数据分析师:驾驭商业数据分析流程的核心力量 在商业决策从 “经验驱动” 向 “数据驱动” 转型的过程中,商业数据分析总体 ...
2025-09-09R 语言:数据科学与科研领域的核心工具及优势解析 一、引言 在数据驱动决策的时代,无论是科研人员验证实验假设(如前文中的 T ...
2025-09-08T 检验在假设检验中的应用与实践 一、引言 在科研数据分析、医学实验验证、经济指标对比等领域,常常需要判断 “样本间的差异是 ...
2025-09-08在商业竞争日益激烈的当下,“用数据说话” 已从企业的 “加分项” 变为 “生存必需”。然而,零散的数据分析无法持续为业务赋能 ...
2025-09-08随机森林算法的核心特点:原理、优势与应用解析 在机器学习领域,随机森林(Random Forest)作为集成学习(Ensemble Learning) ...
2025-09-05Excel 区域名定义:从基础到进阶的高效应用指南 在 Excel 数据处理中,频繁引用单元格区域(如A2:A100、B3:D20)不仅容易出错, ...
2025-09-05CDA 数据分析师:以六大分析方法构建数据驱动业务的核心能力 在数据驱动决策成为企业共识的当下,CDA(Certified Data Analyst) ...
2025-09-05SQL 日期截取:从基础方法到业务实战的全维度解析 在数据处理与业务分析中,日期数据是连接 “业务行为” 与 “时间维度” 的核 ...
2025-09-04在卷积神经网络(CNN)的发展历程中,解决 “梯度消失”“特征复用不足”“模型参数冗余” 一直是核心命题。2017 年提出的密集连 ...
2025-09-04CDA 数据分析师:驾驭数据范式,释放数据价值 在数字化转型浪潮席卷全球的当下,数据已成为企业核心生产要素。而 CDA(Certified ...
2025-09-04K-Means 聚类:无监督学习中数据分群的核心算法 在数据分析领域,当我们面对海量无标签数据(如用户行为记录、商品属性数据、图 ...
2025-09-03特征值、特征向量与主成分:数据降维背后的线性代数逻辑 在机器学习、数据分析与信号处理领域,“降维” 是破解高维数据复杂性的 ...
2025-09-03CDA 数据分析师与数据分析:解锁数据价值的关键 在数字经济高速发展的今天,数据已成为企业核心资产与社会发展的重要驱动力。无 ...
2025-09-03解析 loss.backward ():深度学习中梯度汇总与同步的自动触发核心 在深度学习模型训练流程中,loss.backward()是连接 “前向计算 ...
2025-09-02要解答 “画 K-S 图时横轴是等距还是等频” 的问题,需先明确 K-S 图的核心用途(检验样本分布与理论分布的一致性),再结合横轴 ...
2025-09-02CDA 数据分析师:助力企业破解数据需求与数据分析需求难题 在数字化浪潮席卷全球的当下,数据已成为企业核心战略资产。无论是市 ...
2025-09-02Power BI 度量值实战:基于每月收入与税金占比计算累计税金分摊金额 在企业财务分析中,税金分摊是成本核算与利润统计的核心环节 ...
2025-09-01巧用 ALTER TABLE rent ADD INDEX:租房系统数据库性能优化实践 在租房管理系统中,rent表是核心业务表之一,通常存储租赁订单信 ...
2025-09-01