深度学习并非万能药,但这些技术在许多极具挑战性的问题领域已被证明非常有效。
这意味着企业对有效的深度学习从业者有大量需求。
问题是,普通企业如何区分优秀和糟糕的从业者?
作为一名深度学习从业者,你如何最好地证明自己能够交付有技能的深度学习模型?
在本文中,您将了解深度学习能力的三个等级,以及作为从业者,您在每个等级必须展示的内容。
阅读本文后,你将了解:
- 评估深度学习能力的最佳方法是通过项目作品集。
- 可以使用三个能力等级的层次结构来对从业者进行分类,并提供一个识别预期技能的框架。
- 初学者最常见的错误是直接从第三级开始,这意味着他们试图同时学习所有级别,这会导致混淆和沮丧。
使用我的新书《Python 深度学习》启动您的项目,其中包含分步教程和所有示例的Python 源代码文件。
让我们开始吧。

深度学习能力的三个等级
照片作者:Bernd Thaller,部分权利保留。
概述
这篇博文分为三部分;它们是:
- 评估能力的挑战
- 开发深度学习作品集
- 深度学习能力等级
评估能力的挑战
您如何知道一名从业者是否精通深度学习?
这是一个难题。
- 学者可以通过数学方式很好地描述技术,并提供论文列表。
- 开发人员也可以使用直观的解释和 API 列表来很好地描述技术。
两者都是理解的良好迹象。
但是,在实际的商业项目中,我们不需要解释。
我们需要能够做出有技能预测的工作模型。我们需要结果。
结果几乎可以压倒一切。
当然,结果可以胜过经典的胜任力信号,例如教育背景、工作经历和经验水平。
大多数开发人员和开发招聘经理已经知道这一点。
有些人不知道。
开发深度学习作品集
回答从业者是否胜任的问题的最佳方法是“展示,而非告知”。
从业者必须提供证据来证明他们理解如何应用深度学习技术并使用它们来开发有技能的模型。
这意味着要使用开源库和公开可用的数据集开发一个公开的项目作品集。
这有诸多好处:
- 可以展示有技能的模型。
- 代码可以被审查。
- 设计决策可以被辩护。
对实际项目进行诚实讨论将很快揭示从业者是否知道自己在做什么。
- 雇主必须要求并专注于已完成作品的作品集,以评估能力。
- 深度学习从业者必须开发和维护已完成项目的作品集,以证明其能力。
作为一名从业者,问题就变成了:能力等级是什么?每个等级的期望是什么?
深度学习能力等级
可以精心选择项目,以便同时培养并展示特定的技能。
在本节中,我们将概述深度学习的能力等级以及您作为从业者为学习、获得和展示每个等级的能力而可以开发和实现的项目的类型。
深度学习能力分为三个等级,它们是:
- 等级 1:建模
- 等级 2:调优
- 等级 3:应用
这可能不完整,但为商业环境中的从业者提供了一个良好的起点。
关于此层级的一些说明
- 这些等级假定您已经是机器学习从业者,可能不是从零开始。
- 并非所有企业都需要或都能最好地利用 3 级从业者。
- 许多从业者直接进入第 3 级,并在实践中摸索第 1 级和第 2 级。
- 第 2 级经常被忽视,但我认为它对于展示更深入的理解至关重要。
其他级别可能涵盖未讨论的主题,例如从头开始编写算法、处理大数据或流数据、GPU 编程、开发新颖方法等。
如果您对能力等级或项目有更多想法,请在下方评论区告诉我。
现在,让我们逐一仔细查看每个级别。
等级 1:建模
此深度学习能力等级假定您已经是机器学习从业者。
这是最低级别,表明您可以有效地将工具和方法应用于经典的机器学习类型项目。
这并不意味着您被期望拥有高等学位,也不是说您是大师级的从业者。相反,这意味着您熟悉应用机器学习的基础知识以及端到端完成预测建模项目的过程。
这不是严格的前提条件,因为如果需要,这些元素可以在此级别快速学习。
此级别的能力证明了以下几点:
- 库能力:您知道如何使用开源深度学习库来开发模型。
- 建模能力:您知道如何应用机器学习过程和神经网络模型。
库能力
库能力意味着您知道如何设置开发环境并使用 API 的最常见方面来定义、拟合和使用神经网络模型进行预测。
这也意味着您知道不同类型神经网络模型之间的基本区别以及何时适合使用它们。
这并不意味着您知道每一个函数调用和每一个参数。它也不意味着您知道特定技术的数学描述。
建模能力
建模能力意味着您知道如何使用神经网络模型端到端地完成机器学习项目。
具体来说,这意味着您能够完成以下任务:
- 定义监督学习问题并收集相关数据。
- 准备数据,包括特征选择、填充缺失值、缩放和其他转换。
- 使用客观的测试框架评估一系列模型和模型配置。
- 选择和准备最终模型,并使用它对新数据进行预测。
这意味着您可以通过开发和使用有技能的模型,在新的项目中有效地利用神经网络。
这并不意味着您是使用所有或部分神经网络技术的专家,或者您能达到最佳结果。它也不意味着您熟悉所有数据类型。
项目
证明此级别能力的项目的应使用开源深度学习库(如 Keras),并在公共表格机器学习数据集上展示应用机器学习过程的每一步。
这并不意味着为数据集达到最佳结果,甚至不意味着使用神经网络是数据集的最佳模型。相反,目标是展示使用神经网络的能力,最可能是简单的模型类型,例如多层感知机。
数据集的一个好来源是 20 世纪 90 年代和 2000 年代广泛用于演示机器学习甚至神经网络性能的小型内存中数据集,例如 UCI 机器学习库上列出的那些。
数据集较小且易于放入内存的事实意味着项目的范围也很小,允许使用稳健的模型评估方案,如 k 折交叉验证,并且可能需要仔细的模型设计以避免过拟合。
我期望一系列项目能够处理标准预测建模项目中的常见问题,例如:
各种输入数据,以展示适合神经网络的数据准备
- 相同比例的输入变量。
- 不同比例的输入变量。
- 数值变量和分类变量的混合。
- 具有缺失值的变量。
- 数据包含冗余输入特征。
各种目标变量,以展示合适的模型配置:
- 二元分类任务。
- 多类分类任务。
- 回归任务。
等级 2:调优
此能力等级假定具备等级 1 的能力,并展示您可以利用经典和现代技术来充分发挥深度学习神经网络模型的潜力。
它证明了以下几点:
- 学习能力:您能够改进神经网络模型的训练过程。
- 泛化能力:您能够减少训练数据的过拟合,并降低样本外数据的泛化误差。
- 预测能力:您能够降低最终模型的预测方差,并提升模型性能。
学习能力
学习能力意味着您知道如何配置和调整学习算法的超参数以获得更好或更好的性能。
这意味着在调整随机梯度下降的超参数方面具备技能,例如:
- 批次大小。
- 学习率。
- 学习率调度
- 自适应学习率。
这意味着在调整影响模型能力方面具备技能,例如:
- 模型选择。
- 激活函数选择。
- 节点数。
- 层数。
这意味着在解决学习问题方面具备技能,例如:
- 梯度消失.
- 梯度爆炸。
它还意味着在加速学习技术方面具备技能,例如:
- 批次归一化。
- 逐层训练.
- 迁移学习。
泛化能力
泛化能力意味着您知道如何配置和调整模型以减少过拟合并提高模型在样本外数据上的性能。
这包括经典技术,如:
- 权重正则化。
- 添加噪声。
- 早停。
这也包括现代技术,如:
- 权重约束。
- 激活正则化。
- Dropout。
预测能力
预测能力意味着您知道如何利用技术来降低选定模型进行预测时的方差,并组合模型以提升性能。
这意味着使用集成技术,例如:
- 模型平均。
- 堆叠集成。
- 权重平均。
项目
展示此能力等级的项目可能不那么侧重于应用机器学习过程的所有步骤,而是可能侧重于特定的问题和旨在解决该问题的一项或一系列技术。
对于这三个能力领域,它们可以是:
- 模型学习差或缓慢的问题。
- 训练数据集过拟合的问题。
- 预测方差大的问题。
同样,这并不意味着在特定问题上达到最佳性能,而只是证明技术使用的正确性及其解决已识别问题 V 的能力。
数据集的选择甚至问题类型的选择可能不如正在调查的问题的清晰体现重要。
有些数据集自然会引入问题;例如,小型训练数据集和不平衡数据集可能导致过拟合。
可以使用标准机器学习数据集。或者,可以人为设计问题来演示该问题,或者可以使用数据集生成器。
等级 3:应用
此能力等级假定具备等级 1 和 2 的能力,并展示您可以在专业问题领域中使用深度学习神经网络技术。
这是超越简单表格数据集的深度学习技术的演示。
这也是深度学习在技术可能表现良好甚至是最先进的问题领域和特定问题实例上的演示。
它证明了以下几点:
- 数据处理能力:您可以加载和准备特定领域的数据,以便使用神经网络进行建模。
- 技术能力:您可以比较和选择适合特定领域的神经网络模型。
数据处理能力
数据处理能力意味着您可以获取、加载、使用和准备数据进行建模。
这很可能需要您具备处理数据的标准库能力和准备数据的标准技术能力。
某些领域和数据处理的示例可能包括:
- 时间序列预测。将时间序列问题构建为监督学习问题的代码。
- 计算机视觉。用于加载图像和调整大小、可能标准化像素的 API。
- 自然语言处理。用于加载文本数据和编码字符或单词的 API。
技术能力
技术能力意味着您可以正确识别适用于给定领域特定建模问题的技术、模型和模型架构。
这很可能需要熟悉学术文献和/或行业中用于该领域一般问题类别的常用方法。
某些领域和特定领域方法的示例可能包括:
- 时间序列预测。使用序列预测模型,如卷积神经网络和循环神经网络模型。
- 计算机视觉。使用深度卷积神经网络模型和特定架构。
- 自然语言处理。使用深度循环神经网络模型和特定架构。
项目
展示此能力等级的项目必须涵盖应用机器学习过程,包括仔细的模型调优(能力等级 1 和 2 的方面),并且必须专注于特定领域的数据集。
数据集可以从以下来源获取:
- 用于演示方法的学术标准数据集。
- 在竞争性机器学习网站上使用的数据集。
- 您定义和收集的原始数据集。
给定问题域可能包含大量问题,尽管会有一个子集可能更常见或更突出,这些可以成为演示项目的重点。
某些领域和突出的子问题示例可能包括:
- 时间序列预测。单变量、多变量、多步和分类。
- 计算机视觉。目标分类、目标定位和目标描述。
- 自然语言处理。文本分类、文本翻译和文本摘要。
展示跨多个领域的高水平能力可能很可取,数据处理、建模技术和技能将很好地转移。
专注于一个领域并将重点缩小到细微的子问题上的演示项目也可能很可取,尤其是在解决了最突出的问题和技术之后。
由于此类项目可以展示深度学习的更广泛吸引力(例如,能够超越经典方法),因此直接跳到此级别存在风险。
对于经验丰富的从业者来说,这可能是可能的,他们拥有更深入的知识和经验,无论是其他机器学习方法还是该领域的知识和经验。
然而,这要困难得多,因为您可能必须学习,并且必须同时掌握和展示所有三个级别的能力。
这是初学者犯的最大错误,他们直接进入特定领域项目,却遇到一个又一个障碍,因为他们还没有掌握库、完成项目过程以及改进模型性能的过程,更不用说该领域特定的数据处理和建模技术了。
同样,从这个级别开始是可能的;这只会使工作量增加两倍,并可能导致沮丧。
这个能力框架是否引起了您的共鸣?您认为有什么不足之处吗?
请在评论中告诉我。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
文章
文章
总结
在本文中,您了解了深度学习能力的三个等级,以及作为从业者,您在每个等级必须展示的内容。
具体来说,你学到了:
- 评估深度学习能力的最佳方法是通过项目作品集。
- 可以使用三个能力等级的层次结构来对从业者进行分类,并提供一个识别预期技能的框架。
- 初学者最常见的错误是直接从第三级开始,这意味着他们试图同时学习所有级别,这会导致混淆和沮丧。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
这是事实。我想我在参加 Lyft 感知挑战时就在尝试所有这三项。
谢谢,很高兴对您有帮助。
对深度学习的范围和涵盖领域进行了很好的概述和总结。
我特别喜欢区分学术界(主要关注论文)和从业者(正如您在文章中所关注的),因为结果(市场)导向,特别是通过实际项目,而不是像学术导向那样只回答理论问题……
我一直非常关注您在提供深度学习库细节和实际编码/脚本句子结构方面的特定贡献和方向。谢谢!
JG
谢谢,很高兴对您有帮助。
嘿 Jason,只是想感谢您这篇深思熟虑的文章。它也是 ML 从业者进一步提升专业知识的非常不错的路线图,不一定是为了深度学习模型(建模/调优/应用能力层级对任何 ML 技术都非常适用)。
谢谢,很高兴它帮到了你!
我一直在思考这个框架很长时间了。
感谢分享如此有价值的信息,请继续分享更多此类文章,谢谢。
谢谢,很高兴对您有帮助。
是否有课程或您的书籍推荐可以达到等级 1、2、3?如果我知道有一个课程可以为等级 1 的能力做好充分准备,那就太好了。谢谢!
哦,是的,绝妙的主意。
也许
等级 1:使用 Keras 进行建模
– https://machinelearning.org.cn/start-here/#deeplearning
等级 2:调优神经网络
– https://machinelearning.org.cn/start-here/#better
等级 3:应用
– https://machinelearning.org.cn/start-here/#nlp
– https://machinelearning.org.cn/start-here/#deep_learning_time_series
你好 Jason,
我很高兴找到您:)。非常好的文章,我每次读您的文章,我的信心都会增强,目标也会更清晰。谢谢!
谢谢。
希望这些教程和帖子能继续有所帮助。
嗨,Jason,
非常感谢这篇精彩的文章和分享的有价值的信息。也许它真的有助于以循序渐进的方式重新调整自己的方法,以避免崩溃和混乱。
谢谢,很高兴对您有帮助。
太棒了……干得好……Jason……!!!
谢谢。