2019年编码器的实践深度学习

今天推出,2019年版 对编码人员的实践深度学习,课程的第三次迭代是100%的新材料,包括从未被介绍的深度学习课程覆盖的应用程序(尚未在学术论文中发表的一些技术)。有七个课程,每个课程大约2个小时,你应该计划在每节课的任务上花费大约10个小时。 谷歌云微软Azure. 已将课程集成到基于GPU的平台中的所有必需品,并且也有“一键单击”平台,如 cr坡度.

该课程假定您至少有一年的编码体验(最好在Python,尽管经验丰富的编码人员将能够在他们走的时候选择Python;我们有一个名单 Python学习资源 可用),并已完成高中数学(一些大学级数学在课程期间根据需要介绍)。许多完成课程的人告诉我们它需要很多工作,但这是他们所做的最有价值的事情之一;我们强烈建议您参与课程 活动在线社区 帮助您完成旅程。

在第一课之后,您可以在自己的数据上培训最先进的图像分类模型。完成本课程后,一些学生来自本课程的内部版本(录制此材料)发布了新的最先进的结果,在各个领域!课程前半部分的重点是 实用技巧,只显示 理论 需要在实践中实际使用这些技术。然后,在课程的下半部分,我们深入挖掘到理论中,直到最后一课,我们将从划痕中建立并培训“Reset”神经网络,方法是最先进的准确性。

来自课程的一些应用示例
来自课程的一些应用示例

所涵盖的主要应用是:

我们还涵盖了这些应用程序的所有必要基础。

课程中涵盖的基础
课程中涵盖的基础

我们教导使用 Pytorch. 图书馆,这是最现代化和灵活的广泛使用的图书馆,我们还将使用 Fastai. 为Pytorch包装,这使得可以更容易访问培训深度学习模型的推荐最佳实践(同时制作所有底层的Pytorch功能也直接可用)。我们认为Fastai是很棒的,但我们被偏见,因为我们制作了它......但它是Pytorch.org上的唯一一般的深度学习工具包,拥有超过10,000个Github Stars,并且用于许多竞争胜利,学术论文和高考课程,所以这不仅仅是我们喜欢它!请注意,您学习的概念将同样适用于您想要与Tensorflow / Keras,CNTK,MXNet或任何其他深度学习库进行的任何工作;这是重要的概念。学习一个新图书馆,如果你理解概念很好。

今年的一个特别有用的补充是,我们现在拥有一名超额电脑的视频播放器,归功于伟大的工作 Zach Caceres.。它允许您搜索课程成绩单,并将直接跳转到您找到的视频的部分。它还显示了与其他课程的链接以及可折叠窗格中的课程摘要和资源(但它在移动设备上不适用于良好工作,所以如果您想在移动设备上观看,您可以使用 这个youtube播放列表)。而且非常重要 Sylvain Gugger.谁在开发课程和Fastai图书馆的发展中,我们一直在开发 - 我们非常感谢亚马逊网络服务,以赞助Sylvain的工作。

Fast.ai的视频播放器可搜索时间表
Fast.ai的视频播放器可搜索时间表

如果您有兴趣给予它, 点击这里 去课程网站。现在让我们更详细地了解每个课程。

第1课:图像分类

第1课最重要的结果是我们将培训了一种图像分类器,可以在最先进的准确性上识别宠物品种。这个成功的关键是使用 转移学习这将是这一课程的大部分基本平台。我们还将了解如何分析模型以了解其故障模式。在这种情况下,我们会看到模型犯错误的地方在同一领域,即使养殖专家也会犯错误。

培训和分析宠物品种分类器
培训和分析宠物品种分类器

我们将讨论课程的整体方法,这是有点不寻常的 自顶向下 而不是 自下而上。所以而不是从理论开始,才能稍后开始实际应用,而是从实际应用开始,然后逐渐深入挖掘它们,根据需要学习理论。这种方法对教师开发更多的工作,但已被证明可以帮助学生很多,例如在 哈佛大学教育研究 by David Perkins.

我们还讨论如何设置最重要的 超参数 培训神经网络时: 学习率,使用Leslie Smith的神奇氛围 学习率取景器 方法。最后,我们会看看重要但很少讨论的话题 标签,并了解Fastai提供的一些功能,允许您轻松地将标签添加到图像中。

请注意,要与课程一起进行,您需要连接到安装FastAi库的云GPU提供商(推荐;它应该只需要5分钟左右,并且费用低于0.50美元/小时),或设置a如果您不熟悉该过程,可以自己(这可能需要几天的GPU)您还需要熟悉基础知识 jupyter笔记本 我们用于运行深度学习实验的环境。最新的教程和这些建议可以从中获得 课程网站.

第2课:数据清洁和生产; SGD从头开始

我们通过学习如何使用自己的数据建立自己的图像分类模型来启动今天的课程,包括:

我将展示所有这些步骤,因为我创建了一个可以涉及从灰熊区分泰迪熊的重要任务的模型。一旦我们按顺序设置了数据集,我们将学习如何制定我们的TEDDY-FINDER,并使其在线提供。

将模型放在生产中
将模型放在生产中

自该课程被记录以来,我们有一些很棒的补充,所以请务必退房:

在课程的下半场,我们将从划痕中培训一个简单的模型,创造自己的模型 梯度下降 环形。在这个过程中,我们将学习很多新的术语,所以确保你有一个好地方要记笔记,因为我们将在整个课程中指的是这个新的术语(并且会更多地推出更多介绍来自这里的每一教训)。

梯度下降行动
梯度下降行动

第3课:数据块;多标签分类;分割

今天要覆盖很多!我们开始3课看一个有趣的数据集:Planet的 了解亚马逊从太空。为了将这些数据置于所需的形状中,我们将使用FastAi最强大(和独特!)工具中的一个:the 数据块API.。我们会在即将到来的课程上多次回到这个API,并掌握它会让你成为一个真正的快速超级巨星!完成本课程后,如果您已准备好了解有关数据块API的更多信息,请查看此伟大文章: 查找数据块Nirvana,通过Wayde Gilliam。

行星数据集的一个重要特征是它是一个 多标签 数据集。即:每个卫星图像都可以包含 标签,而我们所看到的以前的数据集每张图片都有一个标签。我们将查看我们需要使用多标签数据集的更改。

我们的图像分割模型的结果
我们的图像分割模型的结果

接下来,我们会看看 图像分割,这是用一个类别标记图像中的每个像素的过程,该类别显示该像素描绘了什么样的对象。我们将使用类似的技术到较早的图像分类模型,有几个调整。 Fastai使图像分割建模和解释同样简单地作为图像分类,因此不需要太多调整。

我们将使用流行的Camvid数据集进行这一课程。在未来的课程中,我们将回到它并显示一些额外的技巧。我们的最终CAMVID模型将比我们在学术文学中找到的任何型号略低得多!

如果从属变量是连续值,而不是类别接下来,我们回答这个问题,看了一个问题 关键 数据集,并构建一个预测面部关键点的模型,精度。

第4课:NLP;表格数据;协同过滤;嵌入式

在第4课中我们会潜入 自然语言处理 (NLP),使用IMDB Movie Review DataSet。在这项任务中,我们的目标是预测电影审查是否是积极的或负面的;这就是所谓的 情绪分析。我们将使用 ulmfit. 算法最初在Fast.ai 2018课程中开发,并成为2018年在NLP中革命的一部分,其中导致纽约时报宣布 新系统开始破解自然语言代码。 Ulmfit今天是最准确的已知情绪分析算法。

ulmfit概述
ulmfit概述

基本步骤是:

  1. 创建(或,首选,下载预训练) 语言模型 在大型语料库上培训,如维基百科(“语言模型”是学习预测句子的下一个单词的模型)
  2. 使用您的方法微调此语言模​​型 目标语料库 (在本案中,IMDB电影评论)
  3. 除掉 编码器 在此精细调谐语言模型中,并用a替换 分类器。然后微调此模型的最终分类任务(在这种情况下,情绪分析)。

在我们进入NLP之后,我们将通过覆盖表格数据(例如电子表格和数据库表)和协作过滤(推荐系统)来完成我们的实际应用程序的实际应用。

对于表格数据,我们将看到如何使用 分类连续的 变量,以及如何与之合作 Fastai.Tabular. 模块要设置和培训模型。

然后,我们将看到如何使用类似的想法与表格数据类似的想法建立协作过滤模型,但有一些特殊的技巧来获得更高的准确性和更具信息丰富的模型解释。

这将我们带来了课程的半路点,我们研究了如何在这些关键应用领域中的每个关键应用领域构建和解释模型:

在课程的下半年,我们将了解 如何 这些模型真的工作,如何从头开始创建它们。对于本课,我们将汇总我们迄今为止的一些关键件:

在剩下的课程中,我们将以更多详细信息回到这些中。我们还将了解一系列对于NLP,协作过滤和表格模型非常重要: 嵌入层。正如我们发现的那样,“嵌入”只是特定类型的矩阵乘法的计算快捷键(乘法 单热编码 matrix).

第5课:背部传播;加速SGD;从头开始的神经网络

在第5课中,我们将所有的培训都放在一起,以确切地了解我们谈论的事情 回到传播。我们将使用此知识从头开始创建和培训一个简单的神经网络。

从头开始的神经网络
从头开始的神经网络

我们还将了解我们如何在嵌入层的权重内部,以了解我们的模型对我们的分类变量的课程。这将让我们在所有费用中都能避免我们应该避免哪些电影......

解释电影评论嵌入式
解释电影评论嵌入式

虽然嵌入在NLP的Word Embeddings的上下文中最广为人知,但它们至少对一般的分类变量非常重要,例如表格数据或协同滤波。它们甚至可以与非神经模型一起使用,非常成功。

与VS没有嵌入的常见模型的比较表现
与VS没有嵌入的常见模型的比较表现

第6课:正规化;卷积;数据伦理学

今天,我们讨论了一些强大的技术,以改善培训,避免过度拟合:

单个图像的数据增强示例
单个图像的数据增强示例

接下来,我们将了解一切 ,这可以被认为是用捆绑重量的矩阵乘法的变种,并且是现代计算机视觉模型(以及越来越多的其他类型的模型)的操作。

我们将使用这些知识来创建一个 类激活的地图,这是一个热图,其显示图像的图像的哪些部分在制造预测方面是最重要的。

卷积如何工作
卷积如何工作

最后,我们将介绍一些主题,许多学生告诉我们是课程中最有趣和令人惊讶的部分:数据伦理。我们将了解模型可能出错的一些方式,特别专注于 反馈回路,为什么他们造成问题,以及如何避免它们。我们还将查看数据中的偏见可以导致偏见算法的方式,并讨论数据科学家可以且应该要求帮助确保他们的工作不会导致意外的负面结果来讨论问题。

美国司法系统中的算法偏差示例
美国司法系统中的算法偏差示例

第7课:从划痕中的复位; U-net;生成(对抗)网络

在对编码人员的实践深度学习的最后一课中,我们将研究现代建筑中最重要的技术之一: 跳过连接。这是最着名的使用 reset.,这是我们在整个课程中使用的架构进行图像分类,并且出现在许多前沿结果。我们也会看看 U-Net. 架构,使用不同类型的跳过连接,大大提高分段结果(以及用于输出结构与输入类似的类似任务)。

影响Reset跳过连接的损耗表面
影响Reset跳过连接的损耗表面

然后我们将使用U-Net架构来训练一个 超级分辨率 模型。这是一个模型,可以增加低质量图像的分辨率。我们的模型不仅增加了解决方案 - 它还将删除JPEG工件和不需要的文本水印。

为了使我们的模型产生高质量的结果,我们需要创建一个包含的自定义丢失功能 功能损失 (也称为 感知损失), 随着 克损失。这些技术可用于许多其他类型的图像生成任务,例如图像着色。

使用功能损失和克损耗的超分辨率结果
使用功能损失和克损耗的超分辨率结果

我们将了解最近的损失函数 生成对抗性 损失(用于生成的对抗网络,或 g),它可以以速度成本提高某些情况下的生成模型的质量。

我们在本课程中显示的技术包括一些未发表的研究:

结果令人惊叹,并在几个小时内训练(与以前需要几天的方法相比)。

经常性的神经网络
经常性的神经网络

最后,我们将学习如何从头开始创建经常性神经网络(RNN)。这是我们在整个课程中使用NLP的模型的基础,事实证明它们是常规多层网络的简单重构。

谢谢阅读!如果你走这一点,那么你应该前往 课程。快餐 并开始观看第一个视频!