2018年8月31日星期五

解决Sparse Reward RL任务的简单回顾

这篇总结文章来自于我在PRICAI2018 Reinforcement Learning Workshop上的部分演讲内容。

相信大家对于强化学习已经有了一定的概念,其中Model-Free的强化学习方法更是获得很大的成功,并在一些任务上达到了与人类专家媲美的效果。利用当前某一时刻的信息预测未来的结果与趋势。这种方法主要由两个流程组成:

  1. 收集数据:使用当前的策略模型与环境进行交互,并获得一定量的交互结果:<状态s,行动a,奖励r>等数据,通常来说,这些数据包含着一定的信息:要么这些状态行动序列最终会带来好的结果,要么带来不好的结果。
  2. 训练模型:利用收集到的数据训练模型,使模型能够"记忆"这些数据,增加能带来好的结果的概率,同时减少带来坏的结果的概率。同时我们希望在训练中模型能够拥有一定的泛化性,即当面对类似的状态时可以得出类似的结果。

从上面的流程可以看出,Model-Free的方法其实和监督学习方法有一些相近之处,第一步通过某种方法挑选出一些有价值的数据,第二步利用这些数据进行训练,使其达到某种特定的目标。利用DQN算法,我们希望模型能够拟合得到当前状态行动下的长期打折回报。这种方法假设Agent并不知晓环境的运转方法,所以他更加专注于"拟合"这件事。但是,Model-Free的方法还是存在一定的问题:

  1. 在训练Model-Free时,我们需要收集大量的训练数据,这个数量和问题规模相关,越是规模大的问题,它需要的数量越大。为了减小数据对模型带来的不稳定性,数据量不能够太小;
  2. 由于模型只是机械地记忆一些结果,因此我们无法保证模型在学习过程中是否真的学到了一些有用的内容,又或者真的只是完成了记忆的工作,模型在应对类似的问题时就会出现问题。比方说对于一个迷宫问题,我们用一个模型学习了某个特定结构的迷宫后,当一个结构不同的迷宫出现时,它是否同样能够给出较好的表现,这个时存在一些挑战的。
  3. 对于一些奖励稀疏的问题来说,如果奖励是稀疏的,那么收集到的数据很可能并不能表现出自己的结果是好是坏,那么这些数据无法帮助模型带来很大的提升,那么模型的学习就会变得比较复杂。

对于上面的这些问题,研究人员已经提出了很多办法,这些办法可以缓解其中的部分问题。解下来我们就来看看其中的第三个问题:奖励稀疏问题,以及近期一些关于解决这个问题的研究成果。

稀疏奖励问题

相信大家都已经对这个游戏有了一定的了解:Montezuma's Revenge。这个游戏就是奖励稀疏的一个经典例子,在这个游戏中,Agent只可以通过获取钥匙和打开房间门或者奖励,而触碰了骷髅头之后会扣除一条生命,除此之外,其他的操作对于Agent来说将不会获得任何的奖励与惩罚,这样绝大多数的操作将无法对Agent产生影响,Agent在获得第一个奖励之前将无法获得任何正向的反馈,因此模型很可能会停止学习而无法提升。

为了解决这个问题,一个最简单的方法就是修改奖励函数。原来的奖励函数不是一个稀疏的函数么?那把它替换成一个不稀疏的奖励函数是不是就可以了?这个想法是没有问题的,同时通过修改奖励函数也会得到不错的结果,但是这种方法也存在一些问题:这样精心设计的函数需要专家来完成,这些同样是解决问题需要的成本。同时这也与构建一个通用人工智能模型的愿景存在一定分歧,我们更希望模型能够自主学习,而不是有专家参与才能完成这样的任务。当然在短时间内实现这样的功能有点不切实际,至少我们希望专家的工作能够劲可能地减少。

总体来说,目前解决这个问题可以采用如下的一些方法:

  • 结合专家操作序列
  • 课程学习
  • 自我博弈
  • 层次化强化学习
  • 基于计数的探索方法

下面我们就来看看这些方法。

结合专家操作序列

相较而言,让专家设计一个奖励函数的难度相对较大,而让专家示范如何在任务中取得更好的成绩就显得更简单一些。比方说对于自动驾驶来说,回答"怎样驾驶是对的"这样的问题是有一定难度的,但是亲自示范正确的驾驶行为则显得容易了不少。那么我们能不能利用专家给出的一些示范来帮助模型快速掌握一些行动方法,从而减轻稀疏奖励函数带来的影响。

具体来说,对于一个Off-Policy的方法,我们可以使用Replay Buffer保存一些待训练的数据,其中一部分来源于Agent与环境的交互,一部分来源于专家的示范,模型将结合两部分数据进行训练。

课程学习

课程学习是一个让Agent"循序渐进"完成学习的方法。有时一个如同一张白纸的Agent面对的问题,是一个十分复杂且困难的问题,就好比让一个婴儿学习微积分一样,这样直接学习很难取得很好的效果。于是我们需要简化问题的难度,先给Agent出一些相对简单的问题,等它逐渐适应了这样的难度后,再提出一些更难的问题,通过这样的方法,模型就能够更快地适应并取得更好的效果。

首先要介绍的方法被称为反向课程学习。反向课程学习与课程学习的思想类似,但是方向正好相反。同样时前面介绍的让婴儿学习微积分的问题,对于课程学习来说,我们的第一步是让婴儿学习认数,然后开始学习加减法,再不断地学习新的内容,让婴儿的能力不断地靠近微积分的水平;而对于反向课程学习来说,它的第一步则是反了过来,我们直接给出求解积分的倒数第二步,然后告诉婴儿在这种情况下怎样一步得出最终的结果,等婴儿理解了这一步,再将问题改到倒数第三步,然后让婴儿向前推导两步,从而得到最终的结果。这样的方法听上去有些不可思议,但实际上这也是一种很有效的方法。它可以让婴儿一直关注结果,同时也可以获得较好的学习效果。

这样我们的问题就变成了——如何选择更合适的"起点",使得像婴儿一样的模型能够快速成长。我们可以用当前Agent模型在这个点上的长期回报来衡量这个点的合适程度。我们希望Agent模型不会获得太低的得分——这样说明这个起点对Agent有点困难了,同时也希望Agent不会获得太高的得分——这样说明这个起点有点简单。

除了上面提到的设定中间起点方法,我们还可以采用其他的方法,前面提到了专家示范,我们同样可以使用专家示范来帮助我们找到反向课程学习的起点。对于有些问题来说,直接使用终点状态附近的状态不一定会有好的结果,这在前面已经分析过了,而且策略模型本身处在一个变化的状态中,有时判断也会难免有误,同时判断的过程也要耗费一定的时间。如果又了专家示范的操作,我们可以直接从专家示范操作的序列中选择合适的起点作为反向课程学习的起点。

自我博弈

说起自我博弈,大家一定会想到AlphaZero,这个只通过自我博弈就可以掌握围棋的博弈系统。由此可见,自我博弈确实是一种让Agent获得成长的办法。自我博弈的精髓在于两个旗鼓相当的对手可以通过对弈获得提升自身能力的宝贵经验,如果没有这样的对弈环境,让一个人凭空掌握围棋的精妙,恐怕就成了一件几乎不可能的事情。

于是有人基于这个思想,开始了一些尝试。他们利用现有单一Agent环境构建一个对弈环境。比方说本来我们希望训练一个机器人学会站立,学会简单的行走,现在就可以把环境改为两个Agent对抗的环境,在这个新的环境中,两个Agent可以相互推挤,让对方站不稳,这样Agent就可以训练在一定外力下仍然保持平衡的能力。

自我博弈虽然是一个不错的学习方法,但是它也存在着一些风险:如果Agent掌握了对手的情况,就更容易采用一些固定的套路针对对手,来让自己取得成功,这样的胜利显然不是我们想要的,因为这种胜利方式很可能只对特定的对手有效,而对于更多的对手来说,这个方法可能不会起作用。这个现象和GAN里面的"Mode Collapse"也非常相似,生成模型找到了欺骗判别模型的方法之后,就容易"不思进取"。为了解决这个问题,我们需要准备一个"对手池",每次从对手池中随机选择一个"能力差距不大"的对手进行对弈,这样可以更好地确保模型不会过拟合。

层次强化学习

层次强化学习一般将问题分成了两个层次,一个层次表示了当前任务的状态和行动,另一个层次表示了更高层次的状态和行动。在一些问题中这个更高层次的状态和原本层次的状态类似,比方说它们可以表示一些"中间目标"。这样完整的Agent系统将主要分成两部分:

  • Meta Controller:一个更宏观的策略模型,它会基于当前的状态生成"小目标",然后将小目标传到下级
  • Controller:一个更具体的策略模型,它会基于Meta Controller生成的"小目标"和当前的状态,得到真正实际的行动。

这就好比如果我们从某个起点状态到达终点状态,Meta Controller则是将整个过程分成了几个部分,而Controller则分别完成每一个小部分的工作。

基于计数的探索

基于计数的探索方法起初被应用在有限状态的问题上,因为状态数量是有限的,所以我们可以记录每一个状态出现的次数,于是我们就可以使用一个新的回报函数来表示:

r=r(s)+\frac{\beta}{\sqrt{N(s)}}

这个公式的第二项中的​是一个常量,​表示为状态s被访问过的次数,显然一个状态被访问的次数次数,继续探索它来带的新鲜感就会越低,因此这部分的得分也会更低。反之则越高。

在状态有限的问题中,这样的公式是轻松实现,但是对于一些更为复杂的问题,状态数量多到没法表示时,直接使用这个公式就会显得有限不适合。于是我们需要一个映射函数将状态映射到一个有限的状态空间中,这样才能方便计算。那么该怎么实现这个方法呢?我们希望相近的状态可以映射到相同的数值中,这样计算的结果会更加合理。

私货时间

《强化学习精要:核心算法与TensorFlow实现》(冯超)

深入浅出介绍强化学习框架概念与实践,欢迎了解!



via 无痛的机器学习 - 知乎专栏 https://ift.tt/2ww7qSA
RSS Feed

RSS4


Unsubscribe from these notifications or sign in to manage your Email Applets.

IFTTT

用强化学习做神经机器翻译:中山大学&MSRA填补多项空白

人工深度学习神经网络已经为机器翻译带来了突破性的进展,强化学习也已经在游戏等领域取得了里程碑突破。中山大学数据科学与计算机学院和微软研究院的一项研究探索了强化学习在神经机器翻译领域的应用,相关论文已被 EMNLP 2018 接收,相关代码和数据集也已开源。
  • 论文地址:https://ift.tt/2PceaMs

  • 开源项目:https://ift.tt/2C2O2Su

神经机器翻译(NMT)[Bahdanau et al., 2015; Hassan et al., 2018; Wu et al., 2016; He et al., 2017; Xia et al., 2016, 2017; Wu et al., 2018b,a] 近来变得越来越受欢迎了,因为这种方法表现更优,而且无需繁重的人工工程工作。其训练过程通常是:通过取源句子和之前已有的(基本真值)目标 token 作为输入,以最大化目标句子中每个 token 的似然。这样的训练方法被称为最大似然估计(MLE)[Scholz, 1985]。尽管易于实现,但在训练阶段的 token 层面的目标函数与 BLEU [Papineni et al., 2002] 等序列层面的评估指标却并不一致。

为了解决不一致的问题,强化学习(RL)方法已经在序列层面的目标优化上得到了应用。比如,研究者已将 REINFORCE [Ranzato et al., 2016; Wu et al., 2017b] 和 actor-critic [Bahdanau et al., 2017] 等策略优化方法用在了包括 NMT 在内的序列生成任务上。在机器翻译领域,也有相似的方法被提出——被称为「最小风险训练」[Shen et al., 2016]。所有这些研究都表明强化学习技术可以有效地用于 NMT 模型 [Wu et al., 2016].

但是,之前还没有将强化学习有效应用于现实世界 NMT 系统的研究成果。首先,大多数研究(甚至可能全部研究)都是基于浅的循环神经网络(RNN)模型验证他们的方法。但是,为了得到当前最佳的表现,利用近期发展起来的深度模型 [Gehring et al., 2017; Vaswani et al., 2017] 将至关重要,这些模型的能力要强大得多。

其次,强化学习方法存在相当一些众所周知的局限性 [Henderson et al., 2018],比如梯度估计方差高 [Weaver and Tao, 2001] 以及目标不稳定 [Mnih et al., 2013],因此要让强化学习实现有效的实际应用,其实并不容易。因此,之前的研究提出了一些技巧。但是,如何将这些技巧应用于机器翻译?这一点仍还不够明朗,研究者也没有达成共识。举个例子,[Ranzato et al., 2016; Nguyen et al., 2017; Wu et al., 2016] 等研究建议使用的基准奖励方法 [Weaver and Tao, 2001] 并没有得到 [He and Deng, 2012; Shen et al., 2016] 等研究的采纳。

第三,研究已经表明,使用 MLE 训练时,大规模数据(尤其是单语言数据集)能为翻译质量带来显著提升 [Sennrich et al., 2015a; Xia et al., 2016]。但如何在 NMT 中将强化学习与单语言数据结合起来?这方面几乎仍是研究真空。

我们希望能通过这篇论文填补这些空白;我们还研究了可以如何应用强化学习来得到强大的 NMT 系统,使其能取得有竞争力的表现,甚至达到当前最佳。我们对强化学习训练的不同方面执行了几项综合研究,以便了解如何:1)设置有效的奖励;2)以不同的权重结合 MLE 和强化学习,从而实现训练过程的稳定;3)降低梯度估计的方差。

此外,因为利用单语言数据在提升翻译质量上是有效的,所以我们进一步提出了一种将强化学习训练的能力和源/目标单语言数据结合起来的新方法。就我们所知,这是在使用强化学习方法训练 NMT 模型方面探索单语言数据的效果的首个研究尝试。

我们在 WMT17 汉英翻译(Zh-En)、WMT17 英汉翻译(En-Zh)和 WMT14 英德翻译(En-De)任务上执行了实验,并得到了一些有用的发现。比如,多项式采样在奖励计算方面优于波束搜索,强化学习和单语言数据的结合能显著提升 NMT 模型的表现。我们的主要贡献总结如下。

  • 我们立足于相当有竞争力的 NMT 模型,提供了首个对强化学习训练不同方面的全面研究,比如如何设置奖励和基准奖励。

  • 我们提出了一种能有效利用大规模单语言数据的新方法,可在使用强化学习训练 NMT 模型时使用,并且这些单语言数据来自源语言和目标语言都可以。

  • 将我们的这些研究发现和新方法结合到一起,我们在 WMT17 汉英翻译人上取得了当前最佳的表现,超越了强基准(Transformer 大模型+反向翻译)近 1.5 BLEU。此外,我们在 WMT14 英德翻译和 WMT17 英汉翻译任务上也得到了足以媲美最佳的结果。

我们希望我们的研究和发现将有助于社区更好地理解和利用强化学习来开发强大的 NMT 模型,尤其是在面临着深度模型和大量训练的现实世界场景中(包括有双语对应的数据和单语言数据)。

为此,我们开源了所有的代码和数据集以帮助其他人再现这一研究成果:https://github.com/apeterswu/RL4NMT。

表 1:不同的奖励计算策略的结果。beam 表示波束搜索,multinomial 表示多项式采样。在通过波束搜索生成 yˆ 时,我们所用的宽度为 4。shaping 是指使用了奖励塑造(reward shaping),而 terminal 表示没有使用。

表 7:表现差不多的不同端到端 NMT 系统的结果比较。SougouKnowing 的结果来自 https://ift.tt/2NCiGU5.

最后,作为对我们的实验结果的总结,我们将几种有代表性的端到端 NMT 系统与我们的研究成果进行了比较,如表 7 所示,其中包含 Transformer [Vaswani et al., 2017] 模型,使用以及没使用反向翻译的方法 [Sennrich et al., 2015a],以及在 WMT17 汉英翻译挑战赛上表现最好的 NMT 系统(SougouKnowing-ensemble)。结果清楚地表明,在将源侧和目标侧的单语言数据与强化学习训练结合到一起之后,我们能得到当前最佳的 BLEU 分数 26.73,甚至超过了在 WMT17 汉英翻译挑战赛上最佳的集成模型。

论文:一项将强化学习用于神经机器翻译的研究


论文链接:https://ift.tt/2PceaMs

摘要:近期的研究已经表明,强化学习(RL)方法可以有效提升神经机器翻译(NMT)系统的表现。但是,由于不稳定,成功完成强化学习训练是很困难的,尤其是在使用了深度模型和大型数据集的现实世界系统中。在这篇论文中,我们使用了几个大规模翻译任务作为测试平台,系统性地研究了使用强化学习训练更好的 NMT 模型的方法。我们对强化学习训练领域的几个重要因素(比如基准奖励、奖励塑造)进行了全面的比较。此外,之前我们也不清楚强化学习能否助益仅使用单语言数据的情况。为了填补这一空白,我们提出了一种利用强化学习通过使用源/目标单语言数据来进一步提升 NMT 系统的表现的新方法。通过整合我们所有的发现,我们在 WMT14 英德翻译、WMT17 英汉翻译和 WMT17 汉英翻译任务上取了媲美最佳的结果,尤其是在 WMT17 汉英翻译上确实实现了当前最佳。

]]> 原文: https://ift.tt/2NCiRid
RSS Feed

机器知心


Unsubscribe from these notifications or sign in to manage your Email Applets.

IFTTT

读博有风险,入坑需谨慎

选自fast.ai

作者:Rachel Thomas

机器之心编译

参与:高璇、晓坤

人工智能界的特殊性令人难以分清其在学术界和产业界之间的界限。AI 学术界的「排外」现象到底是由于开放性还是有先来者在守门,近日在 Reddit 上就出现了这样的讨论。但该话题仅聚焦于学术研究,读博其实是个人发展的一部分,学术研究也是整个 AI 行业的一部分,Rachel Thomas 在这里就向我们提供了更广的视角。

Rachel Thomas 是致力于 AI 开放教育的 fast.ai 联合创始人之一,她在本文讨论了在考虑读博之前,如何结合学术界和产业界的视角看待整个行业以及个人发展,并结合自身经验给出了中肯的建议。

我最新的帖子 Ask-A-Data-Scientist 对是否攻读博士学位的问题做出了解答。之前的 Ask-A-Data-Scientist 建议列表链接:http://www.fast.ai/topics/#advice。

问题:我是一名对机器学习充满热情的本科生,我对获得博士学位感到有点压力。进入这个行业几年后再考虑回到学校会更有意义吗?如果您有任何建议告知,我将不胜感激。

关于是否读博的对话经常会有选择性偏差的影响:考虑读博的人会向已拿到博士学位的人寻求建议。另一方面,有许多人在没有博士学位的情况下从事有趣且前沿的工作,他们不太会被问及这一问题。而其他例如极高的研究生抑郁率或读博的机会成本等重要因素,都很少被讨论。作为拥有数学博士学位的人,我很遗憾花了这么多年时间专注于一个狭窄的领域,同时忽略了许多其他的重要技能。我一参加工作,就发现自己一直在学习各类关键技能和经验!

了解机会成本

我严重低估了通过产业所能得到的收获。我曾经认为不断地学习的最好方法是留在学术界,并且我没有很好地把控读博的机会成本。我的本科经历挺传奇,我一直都很优秀并喜欢待在学校。在学校拿薪水的想法听起来就很美妙!

但我后来才意识到,我的传统学术成就反而成了我的弱点,因为我学会的只是如何解决别人给我的问题,而不是如何自己发现和解决问题。我认为对于许多优秀学生(包括以前的自己),读博是一张「安全牌」:这是一条光荣且意义明确的路。但这只是一种推迟人生重大节点到来的方式:学着去设定一个学术体系之外的目标,并与你的内在动机和价值观都更深刻地联系起来。

当时,我觉得我在博士期间学到了很多东西:学习高级课程、阅读论文、开展研究、定期演讲、在我的领域组织两次会议、协调研究生课程,在我的院系担任学生代表以及撰写论文。事后看来,所有这些都只是我意识到的技能的冰山一角,并且其中许多技能都难以迁移。例如由于结构和激励非常不同,学术写作与我通过博客(受众更广)写作就非常不同,学术策略与创业策略也有很大差异。

你应该读博吗?照片来自 #WOCinTech Chat

在我 27 岁时,我完成了博士学位,并开始了我的第一份全职工作(与我在研究所通过各种研究和教学奖学金获得的津贴不同)。我需要了解很多关于我从事的行业和实际技能的主要差异。尽管在高中学习了 2 年的 C ++,在大学辅修了 CS,并在数学博士期间做了一些编程项目,但我更专注于计算机科学的理论部分,缺乏许多实用的计算机技能。相反,我的 fast.ai 联合创始人 Jeremy Howard 在 18 岁就有了第一份全职工作,当时他是麦肯锡的一名顾问,并且在我刚进入社会时,Jeremy 从事全职工作已经几乎十年。期间他已经成立了两家目前仍在运营的初创公司。在我读博期间,我本可以学到很多其他的技术。

需要明确的是,生活不是一场赛跑。你可以在任何年龄进入科技行业,学习新技能。但科技行业是吃「青春饭」的,年轻创业者得到的赞美像是「罂粟」。然而,我再也没有 20 岁出头的精力了 (尽管我现在吃草撸铁泡枸杞,但我感觉还是不一样的)。我后悔太过于关注一个狭窄的领域和忽略了其他,这一项就浪费了我大量时间和精力。

你不需要博士学位

我想到了下面没有读博的人他们在深度学习中都从事有趣且前沿的工作(这个列表不完整,还有很多人):

  • Chris Olah,distill.pub 的联合编辑,富有洞察力的可视化创建者,Google Brain 的研究员(没有大学学位)。

  • Jeremy Howard,fast.ai 的联合创始人,Enlitic 的创始人(第一个将深度学习应用于医学的初创公司),之前排名第一的 Kaggler 和 Kaggle 总裁,fastmail 和 Optimal Decisions Group 的创始人。

  • David Ha,Sketch-RNN 的创建者,Google Brain 的研究员。

  • Smerity,曾经 Salesforce / MetaMind 研究员,AWD-LSTM 的发明者,创业公司创始人。

  • Pete Warden,Google Brain 的研究工程师和 TensorFlow 移动端的技术负责人,JetPack 的创始人(被 Google 收购),O'Reilly ebook 中《使用 TensorFlow 构建移动应用程序》的作者。

  • Greg Brockman,CTO 和 OpenAI 的联合创始人,领导团队的 DOTA 工作(没有大学学位)。

  • Catherine Olsson,Google Brain 的研究工程师,曾帮助建立 OpenAI Gym。

  • Sara Hooker,Google Brain 研究员,致力于解释性和模型压缩,非营利性 Delta Analytics 数据的创始人。

  • Denny Britz,以前效力 Google Brain,现在在 Berkeley 的 Spark 工作,为 WildML 写博客。

  • Helena Sarin,深度学习研究人员,创造创新艺术作品。

  • Sylvain Gugger,fast.ai 的第一位研究员,对 AdamW 和超融合进行了研究。

  • Mariya Yao,Metamaven 的 CTO,TOPBOTS 的主编,应用人工智能的作者,Duke 团队的一员,在 DARPA 的大挑战中获得第二名。

  • Devaki Raj,创业公司 CrowdAI 的 CEO 兼联合创始人,将人工智能应用于卫星图像,之前曾在谷歌地图和 Android 工作过。

  • Choong Ng,Vertex.ai(被英特尔收购)的 CEO 兼联合创始人,创建了 PlaidML,可以快速轻松地在任何设备上进行深度学习

  • Brian Brackeen,计算机视觉初创公司 Kairos 创始人兼 CEO,采取了令人钦佩的立场反对利用法律强行使用面部识别。

在我所有的工作中,包括在技术上「需要」博士学位的工作,我都有一些没有硕士学位的队友。而没有博士学位的队友通常比那些拥有博士学位的人办事更成效,给我更多帮助(也许是因为他们有更多的实践经验)。

当然,有很多有博士学位的人做过有趣且有价值的工作,比如 Arvind Narayanan、Latanya Sweeney 、Timnit Gebru、,Moustapha Cisse、Yann Dauphin、Shakir Mohamed、Leslie Smith、Elin LeDell、Andrea Frome 等等。我非常钦佩我列出的所有人,而且我绝不认为博士学位没有用或者不好。

研究生的抑郁、孤独和心理健康问题

67% 的研究生说他们在过去一年里至少有一次感到绝望;54% 的人情绪低落,无法正常工作;2004 年的一项调查发现,近 10% 的人曾考虑过自杀。相比之下,美国国家心理健康研究所(National Institute of Mental Health)对 UC Berkeley 学生的研究表明,估计有 9.5% 的美国成年人曾患有抑郁症。

照片来自 #WOCinTech Chat

对于许多人来说,读研究生并不是一种乐趣或个人的充实。它可能受很多因素影响,例如可怜的薪资、不确定的就业条件、主管的无理要求、无关的研究项目,以及教职员工和本科生(他们经常表现得像管理人员和顾客一样)的无礼对待。研究所每天都对鸡毛蒜皮的小事进行打击并扼杀学生自信心。所有这一切都因担心一切都是徒劳而加剧;一位教授在《Chronicle of Higher Education》上写道:「你是个有用的傻瓜」,他在一篇文章中特别提到了人文学科的学生,但这也适用于许多 STEM 学生。在过去的十年里,我几乎不知道有哪个研究生不痛苦。因为我会在这个网站上写专栏文章,所以一些人告诉我,他们的研究生生涯时刻伴随着自杀的念头。更常见的是,研究生会遭受诸如体重波动、疲劳、头痛、胃痛、焦虑和酗酒等未经治疗的慢性疾病的折磨。

虽然性别歧视和骚扰使我对读研有了负面感受,但我的许多男同学也很悲惨,因为他们遭到教授的孤立、欺凌或羞辱,还有一种剥削制度,由自大严苛的等级制度和对威望的迷信所组成。美国国家科学院的一名综合报告的作者说:「科学家们视严苛和批评为残忍。」

学术界的性别歧视和种族歧视

美国国家科学院的一份报告指出,在科学、工程和医学领域,20%-50% 的女学生和超过 50% 的女教师遭受过骚扰。在对从事 STEM 研究的 60 名有色人种女性的采访中,100% 的女性都遭到过歧视,她们所面对的负面刻板印象因种族而异。

由于潜意识的偏见(特别当他们是自学的时候),他们会受到更多的调查,因此文凭对弱势群体的人们可能更重要。不幸的是,由于高等教育中的性别歧视和种族歧视,弱势群体可能更需要文凭,但他们在争取这些文凭时也可能要面临更险恶的环境。对此我没有答案,但我想表明这种紧张关系。

在普林斯顿大学获得数学博士学位的黑人女性 Piper Harron,在她的论文中写道:

受尊重的研究数学由态度确定的男性主导。即使允许个体差异,现在仍然存在一种压抑的气氛,而那些利用它获得成功的人精心维护,甚至大力营造这种氛围。正如所有优秀的研究生做的那样,我试图在数学研究上去适应它。我去融入这种气氛并将我的态度隐藏于心。我很痛苦,也一度濒临失败。问题不在于个人,而是一种自我保护机制。从外部看,所有的背叛都是你自己造成的。

恶劣的研究所比恶劣的工作更糟糕

我认为我在研究所的时间是我最糟心的时期之一。虽然我给出的处理恶劣工作的大部分建议同样适用于恶劣的研究所,但有一个区别很关键:换研究生项目要比换工作难得多。这使学生和教授之间的权力差异远大于技术行业中员工和老板之间的权力差异(这意味着权利滥用或剥削的可能性更大)。

我知道有些人换了导师,甚至换了项目,这确实可以让你回到过去。然而留在糟糕的项目中的成本(身心健康方面,以及机会成本方面)会非常高,我知道有些人花了数年时间才恢复过来。如果你是学生签证的移民并且必须考虑签证/居留问题,那就更麻烦。对于糟心的研究所,没什么简单的解决方案。

高等教育正在发生变化

唯一需要博士学位的情况就是成为一名教授。然而,高等教育正在发生很大变化:向辅助化转变,博士学位过剩使美国研究经费预算大幅削减,越来越多的学校让终身教职员工下岗,为一些博士后采取一些重大举措,以及无法继续给本科生提供助学贷款。我不确定高等教育的未来是什么,但我认为它将与过去不同(这在我改变职业目标的过程中发挥了重要作用)。

当我听到本科生(包括年轻的我自己)说他们认定自己要成为教授时,我是持怀疑态度的。即使他们有过实习或兼职,本科生也很难深入且全面的了解职业选择。此外在本科期间,学生们的周围主要都是教授和其他学生。

如 Coursera 之类的编码训练营和 MOOC 都是直到我技术转型时才被发明的,但两者都很有用并且对教育产生了重大影响。我已经从许多在线课程中受益,如果编码训练营早存在 10 年或 15 年,我将获益更多。在过去的几年里,我既是一名训练营的讲师,也是建立 fast.ai 的 MOOC 的联合创始人,包括应用于编码的实用深度学习和计算线性代数。我已经看到这些如火如荼的新教育形式带来的强大作用。(除此之外,也有很多无用的或粗制滥造的训练营和 MOOCs,研究也一样。)

在考虑读博时,一定要仔细权衡机会成本和风险,并考虑各类人的经验:那些在没有博士学位的情况下取得成功的人、有许多负面研究生经历的人,以及那些在传统的学术道路上取得成功的人。

原文链接:http://www.fast.ai/2018/08/27/grad-school/

]]> 原文: https://ift.tt/2LMKmDW
RSS Feed

机器知心


Unsubscribe from these notifications or sign in to manage your Email Applets.

IFTTT

这些Python代码技巧,你肯定还不知道

被人工智能捧红的 Python 已是一种发展完善且非常多样化的语言,其中肯定有一些你尚未发现的功能。本文或许能够让你学到一些新技巧。

Python 是世界上最流行、热门的编程语言之一,原因很多,比如:

  • 易于学习

  • 超高的通用性

  • 具备大量模块和库

本文将分享一些使用 Python 的技巧,顺序按照 A-Z 排列。

all or any

Python 非常受欢迎的原因之一是其可读性和表达性。

人们还经常把 Python 笑称为「可执行伪码(executable pseudocode)」。但是,当你可以编写这样的代码时,很难去反驳这种言论:

x = [True, True, False] if any(x):     print("At least one True") if all(x):     print("Not one False") if any(x) and not all(x):     print("At least one True and one False")

bashplotlib

想在控制台中绘图吗?

$ pip install bashplotlib

使用上面的行,即可在控制台中绘图。

collections

Python 有一些很棒的默认数据类型,但有时候它们可能不会尽如你意。

不过,Python 标准库提供了 collections 模块。这个方便的附加组件可以为你提供更多数据类型。

collections 模块:https://ift.tt/1nRrsxq

from collections import OrderedDict, Counter # Remembers the order the keys are added! x = OrderedDict(a=1, b=2, c=3) # Counts the frequency of each character y = Counter("Hello World!")

dir

你是否想过如何查看 Python 对象内部及其具有哪些属性?

输入以下命令行:

>>> dir() >>> dir("Hello World") >>> dir(dir)

当以交互方式运行 Python 时,这可能是一个非常有用的功能,并且可以动态地探索你正在使用的对象和模块。

想要了解更多,点这里:https://ift.tt/1JT5DIK

emoji

是的,真的有。请点击这里:https://ift.tt/2wx56tW

$ pip install emoji

别以为我不知道你会偷偷试它→→

from emoji import emojize print(emojize(":thumbs_up:"))

👍

from __future__ import

Python 流行的一个结果是,总有新版本正在开发中。新版本意味着新功能——除非你的版本已经过时。

不过,别担心。__ future__模块允许用户导入新版 Python 的功能。这简直就像时间旅行,或者魔法什么的。

__ future__模块:https://ift.tt/2MHFkOC

from __future__ import print_function print("Hello World!")

geopy

地理(Geography)对于程序员来说可能是一个具有挑战性的领域。但是 geopy 模块让它变得异常简单。

geopy 模块:https://ift.tt/2wzurDG

$ pip install geopy

它通过抽取一系列不同地理编码服务的 API 来工作,使用户获取一个地方的完整街道地址、纬度、经度,甚至海拔高度。

另外一个有用的功能是距离:它可以用你喜欢的度量单位计算出两个位置之间的距离。

from geopy import GoogleV3 place = "221b Baker Street, London" location = GoogleV3().geocode(place) print(location.address) print(location.location)

howdoi

陷入编码问题,却不记得以前见过的解决方案?需要检查 StackOverflow,但不想离开终端?

那么你需要这个有用的命令行工具:https://github.com/gleitz/howdoi。

$ pip install howdoi

无论你有什么问题都可以问它,它会尽力回答。

$ howdoi vertical align css $ howdoi for loop in java $ howdoi undo commits in git

但是请注意——它会从 StackOverflow 的最高票答案中抓取代码。也就是说它提供的信息并非总是有用……

$ howdoi exit vim

inspect

Python 的 inspect 模块非常有助于理解问题背后的详情。你甚至可以在 inspect 模块上调用其方法!

inspect 模块:https://ift.tt/1vowIyf

下面的代码示例使用 inspect.getsource() 打印自己的源代码。它还使用 inspect.getmodule() 打印定义它的模块。

最后一行代码打印出自己的行号。

import inspect print(inspect.getsource(inspect.getsource)) print(inspect.getmodule(inspect.getmodule)) print(inspect.currentframe().f_lineno)

当然,除了这些琐碎的用途之外,inspect 模块还能帮助你理解代码正在做的事。你还可以用它编写自文档化代码。

Jedi

Jedi 库是一个自动完成和代码分析的库。它使代码编写变得更快、效果更高。

除非你正在开发自己的 IDE,否则你肯定会对使用 Jedi 库作为编辑插件很感兴趣。

Jedi:https://ift.tt/2MFiVl5

你可能已经在使用 Jedi 了。IPython 项目就使用 Jedi 实现代码自动完成功能。

**kwargs

学习任何语言时都会遇到很多里程碑。对于 Python 来说,理解神秘的**kwargs 语法可能算是其中之一。

词典对象前面的双星号可以让你把该词典的内容作为命名参数输入到函数中。

词典的秘钥是参数名,值是传递给函数的值。你甚至不需要称它为 kwargs!

dictionary = {"a": 1, "b": 2} def someFunction(a, b):     print(a + b)     return # these do the same thing: someFunction(**dictionary) someFunction(a=1, b=2)

当你想编写能够处理事先未定义的命名参数的函数时,这个很有用。

列表推导式(List comprehensions)

我最喜欢 Python 编程的原因之一是它的列表推导式(https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions)。

这些表达式使得编写干净易读的代码变得很容易,那些代码读起来几乎像自然语言一样。

关于它们的更多使用信息请查看:https://ift.tt/2wAA2tb

numbers = [1,2,3,4,5,6,7] evens = [x for x in numbers if x % 2 is 0] odds = [y for y in numbers if y not in evens] cities = ['London', 'Dublin', 'Oslo'] def visit(city):     print("Welcome to "+city) for city in cities:     visit(city)

map

Python 通过许多内置功能支持函数式编程。map() 函数是最有用的函数之一——特别是当它与 lambda 函数结合使用时。

lambda 函数:https://ift.tt/2gQSqpB

x = [1, 2, 3] y = map(lambda x : x + 1 , x) # prints out [2,3,4] print(list(y))

在上面的例子中,map() 将一个简单的 lambda 函数应用于 x 中的每个元素。它返回一个 map 对象,该对象可以被转换成可迭代的对象,如列表或元组。

newspaper3k

如果你之前没有见过它,那么我建议你先查看:https://pypi.org/project/newspaper3k/。

它可以帮助你从大量顶级国际出版物中检索到新闻文章和相关元数据。你可以检索图像、文本和作者名。

它还有一些内置的 NLP 功能。

地址:https://ift.tt/2wy6dub

如果你想在下一个项目中使用 BeautifulSoup 或其它 DIY 网页抓取库,那么不如使用$ pip install newspaper3k,既省时又省事,何乐而不为呢?

运算符重载(Operator overloading)

Python 支持运算符重载。

它实际上是一个简单的概念。你有没有想过为什么 Python 允许用户使用 + 运算符来将数字相加,并级联字符串?这就是运算符重载在发挥作用。

你可以使用 Python 的标准运算符号来定义对象,这样你可以在与这些对象相关的语境中使用它们。

class Thing:     def __init__(self, value):         self.__value = value     def __gt__(self, other):         return self.__value > other.__value     def __lt__(self, other):         return self.__value < other.__value something = Thing(100) nothing = Thing(0) # True something > nothing # False something < nothing # Error something + nothing

pprint

Python 的默认 print 函数就可以实现打印功能。但如果尝试打印较大的嵌套对象,就会发现打印结果很丑。

这时 Python 标准库的 pretty printer 模块就可以发挥作用了。该模块可以将复杂的结构化对象以一种易读的格式打印出来。

pretty printer 模块:https://ift.tt/1FKWzEo

Python 开发者的必备技能之一就是处理复杂的数据结构。

import requests import pprint url = 'https://randomuser.me/api/?results=1' users = requests.get(url).json() pprint.pprint(users)

Queue

Python 支持多线程,而这是由 Python 标准库的 Queue 模块支持的。

该模块允许用户实现队列(queue)数据结构。队列数据结构允许用户根据特定的规则添加和检索条目。

『First in, first out』 (FIFO) 队列允许用户按照对象被添加的顺序来检索对象。『Last in, first out』 (LIFO) 队列允许用户首先访问最新添加的对象。

最后,优先级队列(priority queue)允许用户根据对象对应的优先级类别来检索对象。

如何使用 queue 在 Python 中实现多线程编程,示例详见:https://www.tutorialspoint.com/python3/python_multithreading.htm。

__repr__

在 Python 中定义一个类别或对象时,以「官方」方式将对象表示为字符串很有用。例如:

>>> file = open('file.txt', 'r') >>> print(file) 

这使代码 debug 变得简单很多。将字符串添加到类别定义,如下所示:

class someClass:     def __repr__(self):         return "" someInstance = someClass() # prints  print(someInstance)

sh

Python 是一种伟大的脚本语言,不过有时使用标准 os 和 subprocess 库会有点棘手。

sh 库提供了一种不错的替代方案。

sh 库:https://ift.tt/17ODYFp

该库允许用户像使用普通函数一样调用任意程序,这对自动化工作流和任务非常有用。

from sh import * sh.pwd() sh.mkdir('new_folder') sh.touch('new_file.txt') sh.whoami() sh.echo('This is great!')

类型提示(Type hints)

Python 是动态语言。在定义变量、函数、类别等时无需指定数据类型。

这有利于缩短开发周期。但是,简单的类型错误(typing issue)导致的运行时错误真的太烦了。

从 Python 3.5 版本开始,用户可以选择在定义函数时开启类型提示。

def addTwo(x : Int) -> Int:     return x + 2

你还可以定义类型别名:

from typing import List Vector = List[float] Matrix = List[Vector] def addMatrix(a : Matrix, b : Matrix) -> Matrix:   result = []   for i,row in enumerate(a):     result_row =[]     for j, col in enumerate(row):       result_row += [a[i][j] + b[i][j]]     result += [result_row]   return result x = [[1.0, 0.0], [0.0, 1.0]] y = [[2.0, 1.0], [0.0, -2.0]] z = addMatrix(x, y)

尽管非强制,但类型注释可以使代码更易理解。

它们还允许你在运行之前使用类型检查工具捕捉 TypeError。在进行大型复杂项目时执行此类操作是值得的。

uuid

生成通用唯一标识符(Universally Unique ID,UUID)的一种快速简单方法就是使用 Python 标准库的 uuid 模块。

uuid 模块:https://ift.tt/1rsFA5b

import uuid user_id = uuid.uuid4() print(user_id)

这创建了一个随机化后的 128 比特数字,该数字几乎必然是唯一的。

事实上,可以生成 2¹²²可能的 UUID。这个数字超过了 5,000,000,000,000,000,000,000,000,000,000,000,000。

在给定集合中找出重复数字的可能性极低。即使有一万亿 UUID,重复数字存在的概率也远远低于十亿分之一。

虚拟环境(Virtual environment)

这可能是 Python 中我最喜欢的事物了。

你可能同时处理多个 Python 项目。不幸的是,有时候两个项目依赖于相同依赖项的不同版本。那你要安装哪个版本呢?

幸运的是,Python 支持虚拟环境,这使得用户能够充分利用两种环境。见下列行:

python -m venv my-project source my-project/bin/activate pip install all-the-modules 

现在你在一台机器上具备独立的多个 Python 版本了。问题解决!

wikipedia

Wikipedia 拥有一个很棒的 API,允许用户以编程方式访问巨大体量的免费知识和信息。

wikipedia 模块使得访问该 API 非常便捷。

Wikipedia 模块:https://ift.tt/2wC4e79

import wikipedia result = wikipedia.page('freeCodeCamp') print(result.summary) for link in result.links:     print(link)

和真实的维基百科网站类似,该模块支持多种语言、页面消歧、随机页面检索,甚至还具备 donate() 方法。

xkcd

humour 是 Python 语言的一个关键特征,其名称来自英国喜剧片《蒙提·派森的飞行马戏团》(Monty Python and the Flying Circus)。Python 的很多官方文档引用了该喜剧片最著名的剧情。

幽默感并不限于文档。试着运行下列行:

import antigravity

将打开 xkcd 画的 Python 漫画。不要改变这一点,Python。不要改变。

YAML

YAML 代表 『YAML Ain』t Markup Language』。它是一种数据格式语言,是 JSON 的超集。

与 JSON 不同,它可以存储更复杂的对象并引用自己的元素。你还可以编写注释,使其尤其适用于编写配置文件。

PyYAML 模块(https://pyyaml.org/wiki/PyYAMLDocumentation)可以让你在 Python 中使用 YAML。安装:

$ pip install pyyaml

然后导入到项目中:

import yaml

PyYAML 使你能够存储任何数据类型的 Python 对象,以及任何用户定义类别的实例。

zip

给你支最后一招,非常酷。还在用两个列表来组成一部词典吗?

keys = ['a', 'b', 'c'] vals = [1, 2, 3] zipped = dict(zip(keys, vals))

zip() 内置函数使用多个可迭代对象作为输入并返回元组列表。每个元组按位置索引对输入对象的元素进行分组。

你也可以通过调用*zip() 来「解压」对象。

原文链接:https://medium.freecodecamp.org/an-a-z-of-useful-python-tricks-b467524ee747

]]> 原文: https://ift.tt/2MGQ4N5
RSS Feed

机器知心


Unsubscribe from these notifications or sign in to manage your Email Applets.

IFTTT

苹果自动驾驶汽车遭遇首次车祸

苹果公司的自动驾驶汽车在其硅谷总部附近的快速路上遭遇了首次交通事故:在本周五披露的报告中,苹果「被动地」向人们揭示了其自动驾驶项目的更多细节。所幸,这次事故无人受伤。

苹果的高管们从未公开谈论过该公司的自动驾驶汽车计划,但今年 7 月份前员工张晓浪涉嫌窃取商业机密被 FBI 逮捕事件中的法律文件曾经向我们透露了一些信息:苹果公司目前有大约 3.7% 的员工正在参与自动驾驶项目的研究,至少有 5000 人正在从事自动驾驶相关电路,以及「专有芯片」的设计工作。(参见:苹果华人自动驾驶工程师跳槽小鹏汽车前夕被 FBI 逮捕:被指窃取商业机密

自动驾驶对于苹果来说是一个全新的领域,但在这个赛道上已经有了很多强大的竞争者。其中包括谷歌旗下的 Waymo,来自传统汽车行业的通用汽车,以及像 Zoox 这样的创业公司。

在加州机动车辆管理局昨天披露的「涉及自动驾驶汽车碰撞报告」中,我们可以得知:

8 月 24 日,一辆隶属苹果的雷克萨斯 RX 450h 自动驾驶测试汽车以「自动驾驶模式」在加州 Sunnyvale 的 Lawrence 快速路并线向南时遭遇追尾,其时的车速不到每小时 1 英里。肇事车辆为一辆 2016 款的日产 Leaf,追尾时时速约为 15 英里/小时。

此前被媒体拍到的雷克萨斯 RX 自动驾驶测试车,这是一款豪华 SUV。

事故发生的时间为下午 3 时,天气晴朗。报告称,当时苹果的自动驾驶汽车正在并线位置减速,等待安全转向的机会。

报告同时表示,两辆汽车都有损伤,但无人受伤。根据向加州交通监管机构的安全规程,人类驾驶员必须能够控制目前在开放道路上测试的自动驾驶汽车。

通常来说,后车在机动车追尾事故中承担全部责任。但值得注意的是,苹果的汽车在拐弯时选择停止等待,而不是立即并线。或许在事故发生时,自动驾驶系统做出了异于人类驾驶员的决策,从而使得后车判断错误,进而追尾。不过很多时候,即使对于人类来说,转弯并线也不是一件容易的事。

「一个可能的解释是,这辆汽车当时并没有像人类驾驶员那样行动,」卡耐基梅隆大学教授 Phil Koopman 对此表示,他为自动驾驶汽车公司提供咨询。「如果它们不像人们那样开车,那么人们对自动驾驶车辆的期望会产生偏差。」

在路透社的报道中,苹果发言人确认公司已为此提交了事故报告,但拒绝进行进一步的评论。该发言人同时拒绝回答有关本次事故过错方是谁的问题。

事故发生大致位置的谷歌街景图。

在竞争对手们争相加入公共道路测试行列的几年里,苹果一直在努力对自己的项目保密。这家全球市值最大公司首次公开表示对于自动驾驶的兴趣还是在 2016 年。在致美国运输监管机构的一封信中,苹果敦促政府部门不要限制车辆的测试。

去年,苹果获得了加州自动驾驶汽车测试许可证。从去年起,苹果就在路上测试自己的自动驾驶汽车,至今已有 60 多辆汽车获得许可。该公司的研究员们也于去年 11 月发表了他们在汽车领域的首个公开研究成果——一个能够使行人检测变得更加容易的软件系统(参见:终于!苹果首次公开自动驾驶技术研究成果)。

今年 3 月,一辆 Uber 的自动驾驶汽车在亚利桑那州坦佩市的公共道路上与一名行人相撞,并致其死亡。这一事件使得美国交通监管部门对自动驾驶汽车的安全问题充满疑虑,迫使该公司暂停其自驾车测试活动。Uber 宣称将于今年年底让自动驾驶汽车重新上路。

加州机动车辆管理局表示,截至 8 月 31 日,他们已经收到 95 起自动驾驶车辆事故报告。目前已有数十个公司拿到了加州自动驾驶汽车测试许可,但测试期间,车上必须有一名人类安全驾驶员。

参考链接:

]]> 原文: https://ift.tt/2C75R2P
RSS Feed

机器知心


Unsubscribe from these notifications or sign in to manage your Email Applets.

IFTTT

华为最强AI芯980发布:全球首款7nm手机芯,6项世界第一

安妮 雷刚 发自 凹非寺 量子位 报道 | 公众号 QbitAI

"遥遥领先!"

这是华为消费者业务CEO余承东放下的狠话,他说自家即将推出的手机芯片麒麟980,将在全球范围内遥遥领先。

而且领先的不是别家,正是安卓阵营手机芯片寡头高通骁龙,以及苹果为iPhone打造的专属芯片。

于是此言一出,国内外都议论纷纷。有较真的,挖出各种工艺制造、性能提升、AI加持方面的信息;也有吃瓜的,就想坐等余承东是不是会打脸。

现在,答案来了。

在刚刚开幕的2018 IFA德国柏林国际电子消费展会上,华为以"奇点将至"之名,正式对外推出麒麟980

作为最新推出的AI手机SoC芯片,麒麟980全球首次商用领先的TSMC 7nm制造工艺,并基于CPU、GPU、NPU、ISP、DDR设计了全系统融合优化的异构架构。

如余承东所说,这款中国芯,3年开发,有6个业界第一加持:

  • 全球最早商用TSMC 7nm工艺的手机SoC芯片
  • 全球实现基于ARM Cortex-A76 CPU架构进行商业开发
  • 首款搭载双核NPU(Dual-NPU)的移动端芯片
  • 首款搭载最新的Mali-G76 GPU架构的移动端芯片
  • 通信方面率先支持LTE Cat.21,峰值下载速率1.4Gbps达业内最高
  • 内存方面支持全球最快的LPDDR4X颗粒,主频最高可达2133MHz

具体怎么回事,我们一项项看:

全球首款商用7nm手机芯片

想往高性能、低能耗和小体积方向走,就得提升工艺制程。

去年发布的华为970还尚处10nm工艺阵列,今年,麒麟抢占先机,赶在也是7nm制程的高通骁龙855前面,首发了第一款7nm手机芯片。

据TSMC的官方数据统计,相比上一代旗舰——10nm工艺制程的麒麟970,980性能提升约20%能效的提升约40%逻辑电路的密度的提升了60%,即原来的1.6倍。

就意味着,在更小的体积里,这个芯片能够装下更多的晶体管,从而能够实现更强的性能和功能。

在半导体芯片的研发过程里,7nm的工艺制程逼近了硅基半导体工艺的物理极限,还要克服复杂的半导体技术效应和晶体管本身的三维电阻电容带来的影响,麒麟980无异于在针尖上跳舞。

但余承东也强调,种瓜得瓜种豆得豆,这是华为3年攻坚换来的回报。

这位华为高管透露,为了研发麒麟980,华为在2015年就开始研究7nm芯片,2017年进入Soc工程验证,再到2018年进行量产,项目周期长达3年。

其中,1000多位高级半导体专家参与,5000多次的工程验证。

花费多少钱?理查德·余没展开说。

但在此次发布前,外界还多流传着华为斥资3亿美元研发麒麟980的消息。华为方面否定了这一消息,因为芯片为滚动开发,所以具体多少美元并不好界定,但数亿美元是肯定的。

对于研发投入比,华为表示自己做芯片仅仅定位来承载自己的硬件架构,来实现产品差异化、竞争力以及低成本。但从当前发展来看看,无论从竞争力和品牌来看,芯片的投入非常有价值。

不亏。

最新CPU架构

芯片若想好,设计架构少不了。这方面,麒麟980倒也是先行了一步。

作为全球首款基于ARM Cortex-A76开发而成的CPU,麒麟980的性能比970提升了75%,能效同步提升58%,比骁龙845性能领先37%,能耗降低32%。

这套全新设计的CPU架构麒麟CPU子系统,由2个超大核(基于Cortex-A76开发)、2个大核(基于Cortex-A76开发)和4个小核(Cortex-A55)的三档能效架构组成的。

其中,超大核主频达到2.6GHz,用来处理急速任务;大核主频达到1.9GHz,用于处理长时间的持续任务,而小核主频是1.8GHz,试用于日常的使用。

更具体来说,超大核主要用于游戏,大核用于社交通信等,而小核则在听音乐等方面发挥作用。

最新GPU架构

CPU为ARM以外,GPU架构也没有落后,同样基于ARM最新款Mali-G76 GPU架构开发

还是和麒麟970相比,980的GPU性能的提升46%,能效提升178%。对于用户而言,能够直接感受到在玩大型游戏的时候,不易卡顿,且不易变成"暖手宝"。

在图像处理方面,麒麟980采用全新升级第四代自研ISP,像素吞吐率比上一代提升46%,降噪与色彩还原能力大力提升。

华为方面表示,就拿玩游戏来说,和主流的产品相比,麒麟980性能基本上能够达到59.3帧/秒,接近60帧,而且加上GPU Turbo后可以保持基本稳定持续在60帧,性能更强,功耗更小。

同时,麒麟980还支持最快的DDR,带宽是比业界主流的水平要高20%,延迟比主流水平低32%。对于用户来说,内存大,操作快,运转起来就快。

当然,对于用户来说,不仅意味着玩游戏更爽,也意味着手机运行更顺畅。

除了GPU架构,华为此次依然大书特书的,还是AI。

AI加持

终端侧AI应用,华为已然轻车熟路。

去年推出业界首款人工智能芯片麒麟970搭载了寒武纪提供的NPU(嵌入式神经网络芯片),将AI手机带入大众眼前。

今年,AI再次加持麒麟芯片,而且还是"双倍的"。

首先,麒麟980集成了双NPU,比麒麟970的图像识别速度提升了120%。

从单NPU到双NPU带来的效果是AI的能力更强,强在哪些地方?

对于用户来说,可能最容易感受到的是图像与视频的处理方面。

一方面,在物体的识别方面,从以前识别到轮廓,到现在识别到细节。

另一方面,实时P图已是过去,现在可以实时检测视频了。在实时的物体分割上面,从略微粗放的场景划分,再到现在的精细划分,AI算力带来了970达不到的提升。

在新手机中,麒麟980允许同时实时"跟踪"多个对象,还能在视频中"换背景"。

麒麟980实现每分钟图像识别4500张,识别速度相比上一代提升120%。现场当然还拿845出来对比了一番。

除了图像处理,华为还自创了Flex-Scheduling技术,带来全新的AI的智能的预测和调度机制,用俗语来说,就如杀鸡焉用牛刀。

根据你所跑的应用,系统将智能地做三级的调度。比如听音乐时,系统可能只需要一个小核,用社交软件的时候,又动用了中核,有很多大量的负载的时候,比如大型游戏,因为游戏通常是消耗资源特别多,系统自动动用大核。

也就是说,这样一个更智能和精准的调度层级,在你需要性能的时候,给你最强的性能,不需要的时候,帮你将功耗降到最低。

性能总览

智能手机还是手机,通信质量、WiFi水平和GPS定位等性能也确实关乎用户体验,对此,华为对麒麟980信心十足。

据华为方面表示,今年新增了14层的接收器,实现了1.4Gbps的速率,这是全球最快的峰值下载速率,在全球率先支持LTE Cat.21。手机WiFi芯片Hi1103,理论峰值下载速率可达1.7Gbps,麒麟980拥有业界最快的手机wifi的速率。

同时,Hi1103支持业界领先的L1+L5双频GPS超精准定位,L5频段下定位精度提升10倍,有效改善手机定位精准度,让用户在地形复杂的城市峡谷及高架道路等地区使用地图导航时,能够免受"路痴"困扰,精准到达目标地点。

当然,作为最新旗舰芯片麒麟980,不可能会错过5G。

余承东透露,5G会在麒麟980周期内加持,会使用Balong 5000调制解调器准备5G芯片模组。

总体来说,麒麟980相比970有了6点突破——

工艺技术:从10nm-7nm,提升了10%速度,40%能效和1.6倍逻辑电路的密度

CPU:从基于Cortex-A73架构到基于Cortex-A进行76开发,性能提升了75% ,能效提升了58%

GPU:从基于Mali-G72设计到基于Mali-G76,性能提升46%,能效提升178%

NPU:从单个NPU进化到双NPU,图像识别速度是之前的2.2倍

网速:从1.2Gbps Cat.17提升到1.4Gbps Cat.21,提速16%

Max. Lpddr4:从1866MHz到2133MHz,带宽增加了20%增加,延迟减小22%

产品预告

最后,余承东还在麒麟980发布会上顺路带货。

会有2大产品线产品,搭载麒麟980。比如,华为新一代旗舰手机Mate 20,10月16日伦敦发布。

最后,one more thing,华为首款AI音箱Cube,今天也正式对外发布。

但这款产品明显面向海外,由亚马逊Alexa提供语音交互,内置4G路由器,传输速度最高300 Mbps。

具体售价和开售时间,暂未公布。

嗯,就酱~

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI· 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 https://ift.tt/2orA96V
RSS Feed

RSS5


Unsubscribe from these notifications or sign in to manage your Email Applets.

IFTTT

华为最强AI芯980发布:全球首款7nm手机芯,6项世界第一

安妮 雷刚 发自 凹非寺 量子位 报道 | 公众号 QbitAI

"遥遥领先!"

这是华为消费者业务CEO余承东放下的狠话,他说自家即将推出的手机芯片麒麟980,将在全球范围内遥遥领先。

而且领先的不是别家,正是安卓阵营手机芯片寡头高通骁龙,以及苹果为iPhone打造的专属芯片。

于是此言一出,国内外都议论纷纷。有较真的,挖出各种工艺制造、性能提升、AI加持方面的信息;也有吃瓜的,就想坐等余承东是不是会打脸。

现在,答案来了。

在刚刚开幕的2018 IFA德国柏林国际电子消费展会上,华为以"奇点将至"之名,正式对外推出麒麟980

作为最新推出的AI手机SoC芯片,麒麟980全球首次商用领先的TSMC 7nm制造工艺,并基于CPU、GPU、NPU、ISP、DDR设计了全系统融合优化的异构架构。

如余承东所说,这款中国芯,3年开发,有6个业界第一加持:

  • 全球最早商用TSMC 7nm工艺的手机SoC芯片
  • 全球实现基于ARM Cortex-A76 CPU架构进行商业开发
  • 首款搭载双核NPU(Dual-NPU)的移动端芯片
  • 首款搭载最新的Mali-G76 GPU架构的移动端芯片
  • 通信方面率先支持LTE Cat.21,峰值下载速率1.4Gbps达业内最高
  • 内存方面支持全球最快的LPDDR4X颗粒,主频最高可达2133MHz

具体怎么回事,我们一项项看:

全球首款商用7nm手机芯片

想往高性能、低能耗和小体积方向走,就得提升工艺制程。

去年发布的华为970还尚处10nm工艺阵列,今年,麒麟抢占先机,赶在也是7nm制程的高通骁龙855前面,首发了第一款7nm手机芯片。

据TSMC的官方数据统计,相比上一代旗舰——10nm工艺制程的麒麟970,980性能提升约20%能效的提升约40%逻辑电路的密度的提升了60%,即原来的1.6倍。

就意味着,在更小的体积里,这个芯片能够装下更多的晶体管,从而能够实现更强的性能和功能。

在半导体芯片的研发过程里,7nm的工艺制程逼近了硅基半导体工艺的物理极限,还要克服复杂的半导体技术效应和晶体管本身的三维电阻电容带来的影响,麒麟980无异于在针尖上跳舞。

但余承东也强调,种瓜得瓜种豆得豆,这是华为3年攻坚换来的回报。

这位华为高管透露,为了研发麒麟980,华为在2015年就开始研究7nm芯片,2017年进入Soc工程验证,再到2018年进行量产,项目周期长达3年。

其中,1000多位高级半导体专家参与,5000多次的工程验证。

花费多少钱?理查德·余没展开说。

但在此次发布前,外界还多流传着华为斥资3亿美元研发麒麟980的消息。华为方面否定了这一消息,因为芯片为滚动开发,所以具体多少美元并不好界定,但数亿美元是肯定的。

对于研发投入比,华为表示自己做芯片仅仅定位来承载自己的硬件架构,来实现产品差异化、竞争力以及低成本。但从当前发展来看看,无论从竞争力和品牌来看,芯片的投入非常有价值。

不亏。

最新CPU架构

芯片若想好,设计架构少不了。这方面,麒麟980倒也是先行了一步。

作为全球首款基于ARM Cortex-A76开发而成的CPU,麒麟980的性能比970提升了75%,能效同步提升58%,比骁龙845性能领先37%,能耗降低32%。

这套全新设计的CPU架构麒麟CPU子系统,由2个超大核(基于Cortex-A76开发)、2个大核(基于Cortex-A76开发)和4个小核(Cortex-A55)的三档能效架构组成的。

其中,超大核主频达到2.6GHz,用来处理急速任务;大核主频达到1.9GHz,用于处理长时间的持续任务,而小核主频是1.8GHz,试用于日常的使用。

更具体来说,超大核主要用于游戏,大核用于社交通信等,而小核则在听音乐等方面发挥作用。

最新GPU架构

CPU为ARM以外,GPU架构也没有落后,同样基于ARM最新款Mali-G76 GPU架构开发

还是和麒麟970相比,980的GPU性能的提升46%,能效提升178%。对于用户而言,能够直接感受到在玩大型游戏的时候,不易卡顿,且不易变成"暖手宝"。

在图像处理方面,麒麟980采用全新升级第四代自研ISP,像素吞吐率比上一代提升46%,降噪与色彩还原能力大力提升。

华为方面表示,就拿玩游戏来说,和主流的产品相比,麒麟980性能基本上能够达到59.3帧/秒,接近60帧,而且加上GPU Turbo后可以保持基本稳定持续在60帧,性能更强,功耗更小。

同时,麒麟980还支持最快的DDR,带宽是比业界主流的水平要高20%,延迟比主流水平低32%。对于用户来说,内存大,操作快,运转起来就快。

当然,对于用户来说,不仅意味着玩游戏更爽,也意味着手机运行更顺畅。

除了GPU架构,华为此次依然大书特书的,还是AI。

AI加持

终端侧AI应用,华为已然轻车熟路。

去年推出业界首款人工智能芯片麒麟970搭载了寒武纪提供的NPU(嵌入式神经网络芯片),将AI手机带入大众眼前。

今年,AI再次加持麒麟芯片,而且还是"双倍的"。

首先,麒麟980集成了双NPU,比麒麟970的图像识别速度提升了120%。

从单NPU到双NPU带来的效果是AI的能力更强,强在哪些地方?

对于用户来说,可能最容易感受到的是图像与视频的处理方面。

一方面,在物体的识别方面,从以前识别到轮廓,到现在识别到细节。

另一方面,实时P图已是过去,现在可以实时检测视频了。在实时的物体分割上面,从略微粗放的场景划分,再到现在的精细划分,AI算力带来了970达不到的提升。

在新手机中,麒麟980允许同时实时"跟踪"多个对象,还能在视频中"换背景"。

麒麟980实现每分钟图像识别4500张,识别速度相比上一代提升120%。现场当然还拿845出来对比了一番。

除了图像处理,华为还自创了Flex-Scheduling技术,带来全新的AI的智能的预测和调度机制,用俗语来说,就如杀鸡焉用牛刀。

根据你所跑的应用,系统将智能地做三级的调度。比如听音乐时,系统可能只需要一个小核,用社交软件的时候,又动用了中核,有很多大量的负载的时候,比如大型游戏,因为游戏通常是消耗资源特别多,系统自动动用大核。

也就是说,这样一个更智能和精准的调度层级,在你需要性能的时候,给你最强的性能,不需要的时候,帮你将功耗降到最低。

性能总览

智能手机还是手机,通信质量、WiFi水平和GPS定位等性能也确实关乎用户体验,对此,华为对麒麟980信心十足。

据华为方面表示,今年新增了14层的接收器,实现了1.4Gbps的速率,这是全球最快的峰值下载速率,在全球率先支持LTE Cat.21。手机WiFi芯片Hi1103,理论峰值下载速率可达1.7Gbps,麒麟980拥有业界最快的手机wifi的速率。

同时,Hi1103支持业界领先的L1+L5双频GPS超精准定位,L5频段下定位精度提升10倍,有效改善手机定位精准度,让用户在地形复杂的城市峡谷及高架道路等地区使用地图导航时,能够免受"路痴"困扰,精准到达目标地点。

当然,作为最新旗舰芯片麒麟980,不可能会错过5G。

余承东透露,5G会在麒麟980周期内加持,会使用Balong 5000调制解调器准备5G芯片模组。

总体来说,麒麟980相比970有了6点突破——

工艺技术:从10nm-7nm,提升了10%速度,40%能效和1.6倍逻辑电路的密度

CPU:从基于Cortex-A73架构到基于Cortex-A进行76开发,性能提升了75% ,能效提升了58%

GPU:从基于Mali-G72设计到基于Mali-G76,性能提升46%,能效提升178%

NPU:从单个NPU进化到双NPU,图像识别速度是之前的2.2倍

网速:从1.2Gbps Cat.17提升到1.4Gbps Cat.21,提速16%

Max. Lpddr4:从1866MHz到2133MHz,带宽增加了20%增加,延迟减小22%

产品预告

最后,余承东还在麒麟980发布会上顺路带货。

会有2大产品线产品,搭载麒麟980。比如,华为新一代旗舰手机Mate 20,10月16日伦敦发布。

最后,one more thing,华为首款AI音箱Cube,今天也正式对外发布。

但这款产品明显面向海外,由亚马逊Alexa提供语音交互,内置4G路由器,传输速度最高300 Mbps。

具体售价和开售时间,暂未公布。

嗯,就酱~

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI· 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 https://ift.tt/2orA96V
RSS Feed

RSS5


Unsubscribe from these notifications or sign in to manage your Email Applets.

IFTTT

JavaScript 之父联手近万名开发者集体讨伐 Oracle:给 JavaScript 一条活路吧!- InfoQ 每周精要848期

「每周精要」 NO. 848 2024/09/21 头条 HEADLINE JavaScript 之父联手近万名开发者集体讨伐 Oracle:给 JavaScript 一条活路吧! 精选 SELECTED C++ 发布革命性提案 "借鉴"Rust...