如何展示你的深度学习基本技能

深度学习技能需求量很大,尽管这些技能很难识别和展示。

解释你熟悉某项技术或某种类型的问题,与能够在真实数据集上有效使用开源 API 来解决问题,是截然不同的。

也许展示深度学习从业者技能最有效的方法是开发模型。从业者可以在标准的公开机器学习数据集上进行实践,并建立一个完整的项目组合,以便在未来的项目中加以利用,并证明能力。

在这篇文章中,你将发现如何使用小型项目来展示利用深度学习进行预测建模的基本能力。

阅读本文后,你将了解:

  • 解释深度学习的数学、理论和方法不足以证明能力。
  • 开发一个由已完成的小项目组成的组合,可以让你展示开发和交付高超模型的能力。
  • 使用系统化的五步项目模板来执行项目,以及九步模板来展示结果,可以让你既有条不紊地完成项目,又清晰地沟通发现。

用我的新书《更好的深度学习》来启动你的项目,书中包含分步教程和所有示例的 Python 源代码文件

让我们开始吧。

Simple Framework That You Can Use to Demonstrate Basic Deep Learning Competence

你可以用来展示基本深度学习能力的简单框架
图片由 Angela 和 Andrew 提供,保留部分权利。

概述

本教程分为五个部分;它们是:

  1. 你将如何展示基本的深度学习能力?
  2. 通过项目组合展示技能
  3. 如何选择项目组合项目
  4. 系统化项目模板
  5. 展示结果模板

你将如何展示基本的深度学习能力?

你如何知道自己对用于预测建模问题的深度学习方法具有基本能力?

  • 也许你读过一本书?
  • 也许你已经完成了一些教程?
  • 也许你熟悉 API?

如果必须,你将如何向他人展示这种能力?

  • 也许你可以解释常见问题以及如何解决它们?
  • 也许你可以总结流行的技术?
  • 也许你可以引用著名的论文?

这足够吗?

如果你正在招聘深度学习从业者,这会让你满意吗?

这还不够,也不会让我满意。

通过项目组合展示技能

解决方案是使用现代企业用来招聘开发人员的相同技术。

开发人员可以整天被问及数学和算法如何工作,但企业需要的是能够交付可工作且可维护代码的人。

这同样适用于深度学习从业者。

从业者可以整天被问及梯度下降和反向传播的数学知识,但企业需要的是能够交付稳定模型和出色预测的人。

这可以通过使用开源深度学习库和标准机器学习数据集开发已完成的项目组合来实现。

项目组合有三个主要用途

  1. 发展技能。从业者可以使用项目组合逐步发展和展示技能,将早期项目的工作成果应用于更大、更具挑战性的未来项目。
  2. 展示技能。雇主可以使用项目组合来确认从业者能够交付稳定的结果和熟练的预测。
  3. 讨论技能。项目组合可以作为面试讨论的起点,在面试中描述、理解和捍卫技术、结果和设计决策。

有许多问题类型和许多专门的数据加载和神经网络模型类型来解决它们,例如计算机视觉、时间序列和自然语言处理中的问题。

在专业化之前,你必须能够展示基础技能。具体来说,你必须能够证明你能够使用深度学习技术系统地完成应用机器学习项目的各个步骤。

这就引出了一个问题

  • 你应该使用哪些项目来展示基础技能,以及这些项目应该如何构建才能最好地展示这些技能?

如何选择项目组合项目

使用标准且公开可用的机器学习数据集。

理想情况下,使用具有宽松许可(例如公共领域、GPL 或知识共享许可)的数据集,以便你可以自由复制它们,甚至可能将它们与你完成的项目一起重新分发。

选择数据集的方法有很多,例如对领域的兴趣、先前的经验、难度等。

相反,我建议在选择包含在你的项目组合中的数据集时要具有战略性。我推荐的三种数据集选择方法是

  • 受欢迎程度:一个好的起点可能是选择流行的数据集,例如浏览量最高或引用次数最多的数据集。流行数据集很熟悉,可以提供比较点,并有助于简化其演示。
  • 问题类型。另一种方法是根据一般问题类别选择数据集,例如回归、二元分类和多类分类。展示跨基本问题类型的技能很重要。
  • 问题属性。最后一种方法是根据数据集的特定属性选择数据集,你希望展示对该属性的熟练程度,例如类别不平衡、输入变量类型混合等。这个领域经常被忽视,而且真实数据很少像标准机器学习数据集那样干净和简单;找到提供更多挑战的示例可以提供出色的演示。

两个寻找和下载标准机器学习数据集的优秀地点是

小数据。我建议从适合内存(RAM)的小型数据集开始,例如 UCI 机器学习存储库中的许多数据集。这是因为它允许你至少在最初阶段专注于数据准备和建模,并快速尝试许多不同的配置。更大的数据集会导致模型训练速度慢得多,并且可能需要云基础设施。

足够好的性能。我还建议不要以数据集上尽可能最佳的模型性能为目标。数据集实际上是预测建模问题的一种体现,它实际上可以成为一个没有止境的研究项目。相反,重点是建立一个定义熟练模型的阈值,然后证明你可以为该问题开发和使用一个熟练的模型。

小范围。最后,我建议将项目保持在小范围,理想情况下在一个正常工作日内完成,尽管你可能需要将工作分散到晚上和周末。每个项目都有一个目标:系统地处理数据集并交付一个熟练的模型。请注意,如果时间分配不当,项目很容易失控。

总结一下:

  • 使用标准公开可用的机器学习数据集。
  • 战略性地选择数据集。
  • 优先选择适合内存的较小数据集。
  • 旨在开发熟练的模型,而不是最优的模型。
  • 保持每个项目小而专注。

这种性质的已完成项目有很多好处,包括

  • 演示解决预测问题的系统化方法。
  • 演示数据处理和模型评估相关 API 知识。
  • 演示特定深度学习模型和技术的能力。
  • 鉴于你交付了一个熟练的模型,演示了时间和范围管理能力。
  • 演示在结果和发现展示中的良好沟通能力。

系统化项目模板

以系统化的方式处理给定的数据集至关重要。

预测建模问题有标准步骤,系统化地处理既能表明你了解这些步骤,也表明你在项目中考虑过这些步骤。

在项目组合项目中保持系统化,突出表明你在新项目中也会同样系统化。

你项目组合中的项目步骤可能包括以下内容。

  1. 问题描述。描述预测建模问题,包括领域和相关背景。
  2. 数据摘要。描述可用数据,包括统计摘要和数据可视化。
  3. 评估模型。抽查一系列模型类型、配置、数据准备方案等,以缩小适用于该问题的范围。
  4. 提高性能。通过超参数调优,甚至集成方法,提高表现良好的模型或模型的性能。
  5. 展示结果。展示项目的发现。

在这个过程之前,一个零步骤可能是选择你希望用于演示的开源深度学习和机器学习库。

我鼓励你尽可能缩小范围。一些额外提示包括

  • 使用重复的 k 折交叉验证来评估模型,特别是对于适合内存的较小数据集。
  • 使用一个保留测试集,该测试集可用于演示进行预测和评估最终表现最佳模型的能力。
  • 建立基准性能,以便提供一个阈值来定义熟练或不熟练的模型。
  • 公开展示你的结果,包括所有代码和数据,理想情况下,在你自己拥有和控制的公共位置,例如 GitHub 或博客。

擅长以这种方式开展项目是无价的。你将始终能够快速获得好结果。

具体来说,在数小时到数天内获得高于平均水平,甚至可能接近最优质量的结果。很少有从业者能够如此自律和高效,即使是在标准问题上。

展示结果模板

项目的好坏可能取决于你展示它(包括结果和发现)的能力。

我强烈建议你使用以下一种(或全部)方法来展示你的项目

  • 博客文章。将你的结果写成博客文章发布在自己的博客上。
  • GitHub 仓库。将所有代码和数据存储在 GitHub 仓库中,并使用托管的 Markdown 文件或 Notebook 来展示结果,支持富文本和图像。
  • YouTube 视频。以视频格式展示你的结果和发现,可能带有幻灯片。

我还强烈建议你在开始项目之前定义演示的结构,并随项目进展逐步完善细节。

我推荐的展示项目结果的模板如下:

  • 1. 问题描述。描述正在解决的问题、数据来源、输入和输出。
  • 2. 数据摘要。描述数据中的分布和关系,以及数据准备和建模的想法。
  • 3. 测试工具。描述如何执行模型选择,包括重采样方法和模型评估指标。
  • 4. 基线性能。描述基线模型性能(使用测试工具),它定义了模型是否熟练。
  • 5. 实验结果。展示实验结果,可能测试一套模型、模型配置、数据准备方案等。每个小节都应包含以下形式:
    • 5.1 目的:为什么要进行实验?
    • 5.2 期望:实验的预期结果是什么?
    • 5.3 方法:实验中使用了哪些数据、模型和配置?
    • 5.4 结果:实验的实际结果是什么?
    • 5.5 发现:结果意味着什么,它们与期望有何关系,它们启发了哪些其他实验?
  • 6. 改进可选)。描述为提高表现更好的模型性能而进行的实验结果,例如超参数调优和集成方法。
  • 7. 最终模型。描述最终模型的选择,包括配置和性能。演示模型的保存和加载,并演示在保留数据集上进行预测的能力是个好主意。
  • 8. 扩展。描述在项目中考虑但未解决的、未来可以探索的领域。
  • 9. 资源。描述与数据、代码、API、论文等的相关参考资料。

这些可以是帖子或报告中的章节,也可以是幻灯片演示文稿中的部分。

进一步阅读

如果您想深入了解,本节提供了更多关于该主题的资源。

文章

数据集

总结

在这篇文章中,你发现了如何展示使用深度学习进行预测建模的基本能力。

具体来说,你学到了:

  • 解释深度学习的数学、理论和方法不足以证明能力。
  • 开发一个由已完成的小项目组成的组合,可以让你展示开发和交付高超模型的能力。
  • 使用系统化的五步项目模板来执行项目,以及九步模板来展示结果,可以让你既有条不紊地完成项目,又清晰地沟通发现。

你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。

今天就开发更好的深度学习模型!

Better Deep Learning

更快地训练,减少过拟合,以及集成方法

...只需几行python代码

在我的新电子书中探索如何实现
更好的深度学习

它提供关于以下主题的自学教程
权重衰减批量归一化dropout模型堆叠等等...

为你的项目带来更好的深度学习!

跳过学术理论。只看结果。

查看内容

对《如何展示你的深度学习基础技能》的6条回应

  1. SHAHEEN ALHIRMIZY 2019年3月8日 下午6:30 #

    特别感谢 Jason Brownlee 的创造力,他在机器学习和深度学习方面发展技能,以及他以简单的方式将深度学习技能和专业知识传授给初学者。
    我通过学习他的迷你课程、说明和文章学会了深度学习。我已经使用 LSTM 模型完成了我的第一篇深度学习论文,用于 Keras 和 TensorFlow 深度学习库在 Python SciPy 环境中的环境多元时间序列预测,并且我已经收到了一个大型 IEEE 基金会会议的接受,并准备在一家著名科学杂志上发表。

    • Jason Brownlee 2019年3月9日 上午6:22 #

      谢谢。

      干得好,对你来说这是个好消息!

  2. JG 2019年3月9日 上午5:49 #

    我认为这篇 Brownlee 帖子中关于如何展示深度学习能力的观点的最佳例子是 Jason Brownlee 先生自己的教程,其中除了理论概念介绍之外,你总是会有一个完全可操作的特定代码来执行一个特定的项目。很棒的工作

  3. Sean O'Connor 2019年5月25日 下午1:23 #

    传统的神经网络中,你有一个向量上运行多个线性分类器(加权和),这难道没有问题吗?假设你希望每个分类器进行不同的分类(为什么不呢?),它们会很快用尽分割数据的方法。可能你应该只在每个向量上运行大约 10 个加权和,每个和寻找越来越弱的分割。这里建议使用随机投影来解决这个问题。
    https://discourse.processing.org/t/flaw-in-current-neural-networks/11512

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。