深度学习入门该用PyTorch还是Keras?热门公开课换框架背后的学问

李林 问耕 编译整理 量子位 出品 | 公众号 QbitAI

你知道fast.ai么?

他们以提供零基础的深度学习课程而闻名,宣称:只要你有高中数学基础、一年的编程经验,就能通过七周的学习,具备一流的深度学习实践能力。

刚刚,他们宣布了一件事。

下一个fast.ai的课程,将完全基于一个使用PyTorch开发的框架,抛弃原来的TensorFlow和Keras框架。这是为什么?

Jeremy Howard

且听创始人Jeremy Howard详解缘由,也相当于分析了初学者该选择什么样的框架。量子位节选编译如下:

我们为什么开始尝试PyTorch?

当我们开发第二门课《面向程序员的前沿深度学习》的时候,原来选的TensorFlow和Keras框架开始让我们处处碰壁。

比如说,现在自然语言处理中最重要的技术,大概是attention模型。可是我们发现,当时在Keras上没有attention模型的有效实现,而TensorFlow实现没有文档、一直在改,还复杂得毫无必要。

结果是我们决定自己在Keras里做一个attention模型实现,花了好长时间,debug也非常难。

接下来,我们又开始研究dynamic teacher forcing的实现。要实现一个准确的神经网络翻译模型,dynamic teacher forcing是其中的关键,但我们无论是在Keras里还是TensorFlow里,都找不到这个模型的实现。

于是,我们又开始尝试自己搞,这次比attention模型还失败,根本就没做出来能用的。

这时候,PyTorch的第一个预发布版出现了。这个新框架不是基于静态计算图,而是一个动态的框架,这为我们带来了新的希望。它说,动态框架让我们在开发自己的神经网络逻辑时,只需要写普通的Python代码,像正常用Python一样去debug。

我们第一次用PyTorch,就用它从头开始在实现了Attention模型和dynamic teacher forcing,只用了几个小时。

PyTorch在教学的好处

上文提到的那门课,一个重要的目标就是让学生能读最近的论文,然后实现它们。

这非常重要,因为到目前为止,在一些学术界比较关注的领域,我们对深度学习应用的研究反倒很有限,因此,用深度学习解决很多现实世界问题的时候,不仅需要了解基础技术,还要能针对特定的问题和数据去实现定制化的深度学习模型。

PyTorch,就让学生们能充分利用普通Python代码的灵活性和能力,来构建、训练神经网络。这样,他们就能解决更广泛的问题。

PyTorch的另一个好处是,它能让学生们更深入地了解每个算法中发生了什么。用TensorFlow那样的静态计算图库,你一旦声明性地表达了你的计算,就把它发送到了GPU,整个处理过程就是一个黑箱。

但是通过动态的方法,你可以完全进入计算的每一层,清楚地看到正在发生的情况。我们认为学习深度学习的最佳途径就是通过编程、实验,动态的方法正是我们的学生所需要的。

令我们惊奇的是,我们还发现很多模型在PyTorch上训练比在TensorFlow上更快。这和我们所熟知的“静态计算图能带来更多优化,所以应该性能更好”恰恰相反。

在实践中我们看到,有些模型快一点,有些慢一点,每个月都不一样。问题的关键似乎在于以下两点:

PyTorch提高了开发人员的生产力和debug经验,因此可以带来更快的开发迭代和更好的实现;

PyTorch中更小、更集中的开发团队不会对每个功能都进行微优化,而是要寻求“大胜”。

为什么在PyTorch上构建一个新框架?

然而,对于课程的第一部分来说,PyTorch还远远谈不上是一个很好的选择。没有机器学习背景的人根本没法上手。

PyTorch没有Keras那样简单明了的API来训练模型,每个项目都需要几十行代码来实现一个神经网络的基础训练。另外,Keras的默认设置就挺有用,而PyTorch一切都需要详细设置。

不过,Keras还能更好。我们发现大家一直在Keras里犯相同的错误,例如不能在我们有需要时打乱数据,反之亦然。另外,很多新出的最佳实践并没有被纳入Keras,特别是在快速发展的自然语言处理(NLP)领域。

所以我们在想,能不能构建一个比Keras更好的东西,用来快速训练最棒的深度学习模型。

经过一些研究和探索后,我们做到了。我们构建的模型比用Keras构建的更快、更准确、更复杂,而且更少的代码写就。最近对多个领域论文进行的实现,都证明了这一点。

关键是创建一个OO分类,其中包含了所有重要的数据选择(例如预处理、增强、测试、训练和验证集、多类和单类的分类与回归等)以及模型架构的选择。

我们完成这个工作之后,就能在很大程度上自动找出模型与数据最佳的架构、预处理和训练参数。突然间,我们的工作效率大幅提升,而且很少犯错,因为一切都是自动化的。但是我们在每个阶段提供了定制化的能力,所以可以轻松尝试不同的方法。

随着工作效率的提升,我们能够尝试更多的技术,在这个过程中,我们发现了一些非常差的方法。例如,我们发现批量归一化(几乎所有最新CNN架构都用)和模型预训练及微调(每个项目也该用)的组合,可以让标准训练方式的精度下降500%。

我们稍后会逐步放出这个研究的详细情况。(我们还缺一个名字……)

原文发布于微信公众号 - 量子位(QbitAI)

原文发表时间:2017-09-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能头条

干货 | 1400篇机器学习的文章中,这10篇是最棒的!

【导读】在过去的一个月中, 作者从近 1400 篇有关机器学习的文章中挑选了最有可能帮助职业生涯发展的 10 篇推荐给大家(入选比率为0.7%)。

14540
来自专栏数据的力量

干货 | 从定义到应用,数据挖掘的一次权威定义之旅

16240
来自专栏数据派THU

独家 | 如何改善你的训练数据集?(附案例)

这张幻灯片是Andrej Karpathy 在Train AI 演讲的一部分,我很赞同它表达的观点。它充分体现了深度学习在研究和应用上的差异。学术论文几乎全部集...

11540
来自专栏机器人网

强化学习方法汇总,以及他们的区别

了解强化学习中常用到的几种方法,以及他们的区别, 对我们根据特定问题选择方法时很有帮助. 强化学习是一个大家族, 发展历史也不短, 具有很多种不同方法. 比如...

32640
来自专栏量子位

连AI都在看《英雄联盟》游戏直播

原作:Robert Hunt(FormDs创始人) 李林 问耕 编译整理 量子位 出品 | 公众号 QbitAI 打游戏和看人打游戏,都是一种乐趣。 最近,吃鸡...

38380
来自专栏专知

DeepMind新作生成查询网络GQN:无监督渲染3D场景

理解视觉场景时,我们依赖的不仅仅是眼睛:我们的大脑利用已有知识来推理,并做出远远超过视线所及的推论。例如,当第一次进入一个房间时,你会立即认出里面的物品以及它们...

15020
来自专栏数据派THU

独家 | 一文读懂推荐系统知识体系-上(概念、结构、算法)

? 本文主要阐述: 推荐系统的3个W 推荐系统的结构 推荐引擎算法 浏览后四章的内容请见下篇。 1. 推荐系统的3个W 1.1 是什么(What is it?...

1.1K70
来自专栏AI科技评论

干货 | 重温五条 AI 基础规律

AI 科技评论按:如果每个人都有足够的时间和热诚,并乐意去大学拿个 AI 学位,那你大概就不会读到这篇博客了。 虽说 AI 的工作方式挺神秘的,但在处理技术问题...

9320
来自专栏AI研习社

博客 | 重温五条 AI 基础规律

雷锋网AI 科技评论按:如果每个人都有足够的时间和热诚,并乐意去大学拿个 AI 学位,那你大概就不会读到这篇博客了。 虽说 AI 的工作方式挺神秘的,但在处理技...

10010
来自专栏AI研习社

学 AI 和机器学习的人必须关注的 6 个领域

近期热门的话题, 人们开始重新讨论这一基本定义----什么是人工智能(AI)。有些人将 AI 重新命名为「认知计算」或「机器智能」,而其他人则错误地将 AI ...

16320

扫码关注云+社区

领取腾讯云代金券