我们的旧金山线下课程第二部分将在6周后开课,报名也刚刚开放,我们觉得最好告诉你一些关于课程的预期!…所以,这里是我们将要涵盖内容的概述。
整体方法
本课程第二部分的主题将是解决更复杂的问题,这些问题需要整合多种技术。这既包括整合多种深度学习技术(例如结合RNN和CNN用于注意力模型),也包括将经典机器学习技术与深度学习结合(例如使用聚类和最近邻进行半监督和零样本学习)。一如既往,我们将结合解决端到端实际建模问题来介绍所有方法,并在可能的情况下使用Kaggle数据集(这样我们就有明确的最佳实践目标可以追求)。
由于课程除了一年编程经验和完成课程第一部分外没有其他先决条件,我们也将全面解释我们将使用的所有经典机器学习技术。
此外,我们还将涵盖我们已经看到的一些更复杂的深度学习方法扩展,例如为RNN添加内存(例如 用于构建问答系统/“聊天机器人”),以及多目标分割和检测方法。
我们将研究的一些方法将是非常新的研究方向,包括我们在fast.ai进行的尚未发表的研究。因此,在本课程的这一部分,我们将更频繁地查看期刊文章——我们一个关键的教学目标是让大家在课程结束后,能够更轻松地阅读、理解和实现研究论文。我们将分享一些简单的技巧,让你更快地浏览论文并从中获取关键见解。
Python 3 和 Tensorflow
课程的这一部分将使用Python 3和Tensorflow,而不是第一部分使用的Python 2和Theano。我们将在未来的文章中更详细地解释我们的理由;我们希望您在课程结束后对这两个工具都感到自信,并能够识别两者的优缺点,从而帮助您决定在自己的项目中使用什么。
我们发现使用Python 3开发课程材料比Python 2愉快得多。虽然该语言的第3版多年来提供了一些渐进式改进,但直到最近,我们发现科学计算库对Python 3的支持不足导致体验非常令人沮丧。好消息是现在一切都改变了,而且Python 3.4和3.5的最新发展极大地提高了该语言的生产力。
我们对Tensorflow的看法是,隐藏在一个相当冗长和复杂的API中,有一个非常出色的软件部分。我们将展示如何在Tensorflow中从头开始编写自定义的GPU加速算法,并保持在Tensorflow API的一个小巧简单的子集内,让事情保持简单优雅。
结构化数据、时间序列分析和聚类
深度学习几乎完全被忽视的一个领域是结构化数据分析(即 分析每列代表一个不同特征的数据,例如来自数据库表的数据)。我们曾想知道这是否因为深度学习不像非常流行的决策树集成方法(如随机森林和XGBoost,我们是其忠实粉丝)那样适用于这项任务,但我们最近进行的一些研究表明,深度学习可以比这些技术更简单且更有效。但是要让它良好工作,需要掌握很多小细节——据我们所知,这些细节在其他地方从未被完全理解或记录过。
我们将展示如何在结构化数据分析中获得最先进的结果,包括展示如何使用出色的XGBoost,并比较这些技术。我们还将简要地探讨一下R语言,在那里结构化数据分析仍然比Python要直接得多。
我们将研究的大多数结构化数据集都将包含重要的时间序列成分,因此我们还将讨论处理这类数据的最佳方法。时间序列无处不在,例如欺诈和信用模型(使用交易的时间序列)、维护和运营(使用传感器读数的时间序列)、金融(技术指标)、医疗(医疗传感器和EMR数据)等等。
我们还将开始对聚类分析的研究,展示如何将其与softmax层结合以创建更准确的模型。我们将展示如何在Tensorflow中从头开始实现这种分析,创建一个新颖的GPU加速算法。
深入探讨计算机视觉
我们将继续我们从第一部分开始的计算机视觉应用研究,深入探讨一些新技术和新问题领域。我们将更详细地研究resnet和inception架构,重点关注如何将这些架构用于迁移学习。我们还将研究更多的数据增强技术,例如测试时增强和遮挡。
我们将学习K近邻算法,并将其与CNN结合使用,在多帧图像序列分析(如视频或照片序列)中获得最先进的结果。在此基础上,我们将研究使用深度学习对对象进行分组的其他方法,例如孪生网络(siamese networks)和三元组网络(triplet networks),我们将使用这些网络在图像比较中获得最先进的结果。
无监督学习和半监督学习,以及模型落地生产
在第一部分,我们研究了用于半监督学习的伪标签和知识蒸馏。在第二部分,我们将学习更多技术,包括贝叶斯启发的技法,例如变分自编码器(variational autoencoder)和变分阶梯网络(variational ladder networks)。我们还将探讨生成模型在半监督学习中的作用。
我们将展示如何使用无监督学习构建一个实用的照片修复工具,然后将其变成一个简单的Web应用,以展示如何将深度学习模型投入生产。
零样本学习将是一个特别的重点,尤其是最近提出的泛化零样本学习问题。解决这个问题使我们能够在完整数据集的一个子集上构建模型,并将这些模型应用于我们以前从未见过的新类别。这对于实际应用非常重要,在这些应用中,情况可能会发生变化,新类型的数据随时可能出现,并且标注可能很昂贵、耗时和/或难以获取。
不用担心,我们也没有忘记NLP!NLP是应用无监督学习和半监督学习的绝佳领域,我们将研究该领域的一些有趣问题和技术,包括如何使用孪生网络和三元组网络进行文本分析。
分割、检测和处理大型数据集
处理大型数据集需要仔细管理资源,并在合理的时间范围内完成则需要周全考虑整个建模过程。我们将展示如何在著名的Imagenet数据集上构建模型,并展示分析如此大的数据集可以在单台机器上相当快速地完成。我们将讨论如何协同使用您的GPU、CPU、RAM、SSD和HDD,最有效地利用每个部分。
虽然我们迄今为止对计算机视觉的大部分关注都在分类上,但现在我们将重点转移到定位——即在图像中找到对象(或在NLP中,找到文档的相关部分)。在第一部分,我们已经研究了一些简单的热力图和边界框方法;在第二部分,我们将在此基础上,研究更完整的分割系统,以及在图像中找到多个对象的方法。我们将查看最近COCO竞赛的结果,以了解解决这些问题的最佳方法。
神经网络机器翻译
正如纽约时报最近报道的那样,谷歌已经使用深度学习彻底改造了他们的翻译工具。我们将了解这个系统以及类似的最先进系统背后的原理——包括一些尚未被纳入谷歌工具的最新进展。
我们将首先研究神经网络机器翻译所基于的原始编码器-解码器模型,并讨论这种序列到序列算法的各种潜在应用。然后,我们将研究注意力模型,包括在计算机视觉中的应用(在计算机视觉中,它们对于大型复杂图像非常有用)。此外,我们将研究堆叠层,包括双向层和深度RNN架构。
问答系统和多模态模型
最近关于聊天机器人有很多炒作。虽然我们认为它们尚未完全成熟(这就是为什么几乎所有投入生产的聊天机器人仍然包含大量人工元素的原因),但了解它们是如何构建的还是有指导意义的。一般来说,问答系统是使用具有显式内存的架构构建的;我们将研究如何在神经网络中表示这种内存,并了解它对学习的影响。
我们还将研究构建视觉问答系统,用户可以在其中询问关于图像的问题。这将基于我们之前在零样本学习方面所做的工作。
强化学习
强化学习最近变得非常流行,谷歌在训练机器人完成复杂抓取动作方面展示了有希望的结果,DeepMind在玩电脑游戏方面展示了令人印象深刻的结果。我们将考察强化学习领域,并试图确定最有前途的应用领域,包括超越主要的学术研究领域(机器人和游戏),寻找更广泛用途的强化学习机会。
我们期待在课程中见到您!第一部分已经满员,第二部分可能更受欢迎,所以请尽快提交申请!