淘优惠

淘优惠

scout流浪出装 新英雄腕豪怎么出装

热门文章 0

淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】

scout流浪出装,scout流浪,scout流泪

看着我,和600万名朋友一起玩技术~

“通关!”

前职业Dota2选手、玄斗鱼平台主播YYF大吼一声,随着屏幕上属于陈辉一方的遗迹水晶被打碎,YYF所在的野灭一方宣告了胜利。

YYF 是月夜枫三个字的缩写,熟悉 Dota 历史的人都知道这个名字代表曾经的第二届 Dota2 国际邀请赛冠军,今晚和他一起游戏的,是 YYF 所在的 OB 解说团的朋友们,他们也都是 Dota2 的前职业选手。

在此之前,OB 已经玩了整整 8 个小时,面对同样的五个对手,全败。短则十几分钟,长则五十多分钟,他们一场也没有赢过。即便是以前的直播中面对职业选手阵容,OB 也没有过如此惨淡的战绩。

最后一场,他们在长达八个多小时的努力后,终于赢下了第一场比赛,而这也是中国玩家两天时间里面对这个队伍的首胜。

因为他们的对手,叫 OpenAI Five ,一个多星期前刚刚打败过新科 Dota2 国际邀请赛冠军 OG 战队的 OpenAI Five,而 OG 已经是 OpenAI Five 打败的第四个也是最强的职业战队了。

在此前,OpenAI 团队宣布这将是 OpenAI Five 在 Dota2 的最后一次比赛。还给这比赛起了个名字,叫 “ OpenAI Five Finals ” ,最终之战。

随着 OG 战队被 OpenAI 干脆利落地 2 比 0 带走,许多人都说,Dota2 在围棋之后,也 被 AI “ 攻陷 ” 了。

比赛后,OpenAI 团队将在 4 月 18 日- 4 月 21 日开放一个 OpenAI Five Arena,可以让全球玩家挑战 OpenAI Five 。

三天时间,来自世界各地的 15000 多名 Dota2 玩家对 OpenAI Five 发起了挑战,在七千多场比赛过后,OpenAI Five 对人类的战绩是 7215C42 ,胜率高达 99.4% 。

挑战者中不乏 YYF 这样的前职业选手,更是有很多现役职业选手在其中,实力不可谓不强。

可是最终人类只能拿下 42 场胜利,可以看出 OpenAI Five 在操作、战术执行方面已经超越了大部分人类。

实际上,只要能在 OpenAI Five 手中撑过 32 分钟,就已经属于挑战者的前 100 名水平了。

人类在 AI 面前真的那么不堪一击吗?未必如此。

在排行榜上,我们可以看到一个非常奇怪的现象:排名前 9 的队伍中,有8 个是同一支队伍。

奖牌上的数字,代表着他们对 OpenAI Five 时,所达到的连胜数。

由于每一场比赛结束,战绩都会被记录,这个 ainodehna 所在的队伍达到 10 连胜后,排行榜也被 “ 屠榜 ” 了。

面对职业选手打起来都吃力的 OpenAI Five ,居然能干脆利落地拿下 10 连胜?这莫不是钦定了下一届 Dota2 国际邀请赛的冠军?可是这几个选手的 ID 分明没有任何一个是职业选手,这是怎么回事?

其实仔细一看他们的战绩,不难发现,每盘比赛他们基本都是人头落后的情况下获得了胜利的,这样的战绩,如果出现一两次,还可以怀疑是前期猥琐发育,后期一波打死对面,但是连着出现 10 次,就很有问题了,只可能是他们找到了击败 OpenAI Five 的打法。

这个俄罗斯队伍的直播录像证实了这个想法。

说来其实很简单,由于挑战赛里,英雄选择是有限制的,只有 18 名英雄可以选择,拼操作,已经有那么多人证明过人类和 AI 是无法相提并论的了,毕竟人类的反应极限也就是 100 多毫秒,差不多 0.1 秒,而且这只是理论可能。但是 AI 却可以轻易做到。

所以想要赢下游戏,最终还是要在游戏机制上做文章。

在 ainodehna 队伍的比赛中,他们 10 连胜用的是同一个阵容,隐形刺客、撼地者、水晶室女、影魔、流浪剑客。

他们的策略就是前期通过占线,让两个大哥影魔和流浪剑客积累基础的刷钱装备,然后三个辅助来吸引敌人的注意力,给影魔和流浪剑客创造刷钱的空间。

每盘的出装基本都是一致的,先出飞鞋( 可以快速传送,打钱更快 )、隐刀、BKB( 用于逃命和免疫控制 )、黯灭( 加深对建筑伤害 )。

在这些装备齐全后,他们就会尽量避免团战,然后找个机会击杀 Roshan ,拿到复活盾( 可以使人原地复活 ),然后由两个大哥轮流开启 BKB 打塔,即便敌人在攻击他们也无所谓,只要打完塔不死就是赚。

就这样一路一路地打下去,借助拆掉对面兵营后的兵线优势,让对方忙于清理兵线而不能出来打钱发育,最终顶着对面的攻击强行拆掉基地获胜。

虽然这样的打法非常没有观赏性,比不上 YYF 他们正面击溃 AI 来得好看,但却是针对 AI 的弱点后最有效的获胜方式。

Dota2 毕竟也算是一个多人即时策略游戏,在配合、操作等方面被碾压后,只能从策略方面入手,AI 会选择成功率最高的策略去执行,而 AI 的操作再厉害,终究也是要遵循游戏规则的。

更何况,现在的 OpenAI Five 还有很多条件的限制,比如只有 18 个英雄可以选择。

Dota2 有 100 多个英雄,如果全部开放选择,又会多出成千上万的可能性,而英雄之间的相互克制等关系,人类职业玩家可比 AI 熟悉多了,这也是决定胜负的关键点所在。

虽说这一次 OpenAI Five 在战绩上可以说是碾压了人类玩家,但是并不意味着 Dota2 就被 “ 攻陷 ” 了,撑死了只能说他们在 18/117 的 Dota2 游戏中打败了大部分人而已,只要 AI 的缺陷被找到,人类可以很轻易地战胜它们。

参考资料、图片来源:OpenAI Five ArenaTwitch

“ 反正我打不过。。。”

欢迎点赞、评论,分享你的观点~

dota流浪剑客出装

业界 | OpenAI提出Reptile:可扩展的元学习算法


选自OpenAI Blog

作者:ALEX NICHOL & JOHN SCHULMAN

机器之心编译

近日,OpenAI 发布了简单元学习算法 Reptile,该算法对一项任务进行重复采样、执行随机梯度下降、更新初始参数直到习得最终参数。该方法的性能可与 MAML(一种广泛应用的元学习算法)媲美,且比后者更易实现,计算效率更高。

元学习是学习如何学习的过程。元学习算法会学习任务的一个分布,每项任务都是学习问题,并输出快速学习器,学习器可从少量样本中学习并进行泛化。一个得到充分研究的元学习问题是 few-shot 分类,其中每项任务都是分类问题,学习器只能看到 1-5 个输入-输出样本(每个类别),之后学习器必须对新输入进行分类。下面,你可以尝试 OpenAI 的 1-shot 分类交互 Demo,其使用了 Reptile。

点击「Edit All」按钮,绘制三种不同的形状或符号,然后在后侧的输入区域绘制其中一个形状,就可以看到 Reptile 的分类效果。前三个图是标注样本:每个定义一类。最后的图表示未知样本,Reptile 输出其属于每个类别的概率。(请点击原文链接体验交互)

Reptile 的工作原理

和 MAML 类似,Reptile 会学习神经网络的参数初始化方法,以使神经网络可使用少量新任务数据进行调整。但是 MAML 通过梯度下降算法的计算图来展开微分计算过程,而 Reptile 在每个任务中执行标准形式的随机梯度下降(SGD):它不用展开计算图或计算任意二阶导数。因此 Reptile 比 MAML 所需的计算量和内存都更少。伪代码如下:

最后一步也可以把 Φ?W 作为梯度,将其插入如 Adam 等更复杂的优化器。

很令人震惊,该方法运行效果很好。如果 k=1,该算法对应「联合训练」(joint training):在多项任务上执行 SGD。尽管联合训练在很多情况下可以学到有用的初始化,但在 zero-shot 学习不可能出现的情况下(如输出标签是随机排列的)它能学习的很少。Reptile 要求 k>1,更新依赖于损失函数的高阶导数。正如 OpenAI 在论文中展示的那样,k>1 时 Reptile 的行为与 k=1(联合训练)时截然不同。

为了分析 Reptile 的工作原理,OpenAI 使用泰勒级数逼近更新。Reptile 更新最大化同一任务中不同小批量的梯度内积,以改善泛化效果。该发现可能在元学习之外也有影响,如解释 SGD 的泛化性能。OpenAI 的分析结果表明 Reptile 和 MAML 可执行类似的更新,包括具备不同权重的相同两个项。

在 OpenAI 的实验中,他们展示了 Reptile 和 MAML 在 Omniglot 和 Mini-ImageNet 基准上执行 few-shot 分类任务时具备类似的性能。Reptile 收敛速度更快,因为其更新具备更低的方差。OpenAI 关于 Reptile 的分析表明,我们可以使用不同的 SGD 梯度组合获取大量不同的算法。在下图中,假设我们在不同任务中使用不同批量大小的 SGD 执行 K 个更新步,产生 g_1,g_2,…,g_k k 个梯度。下图展示了在 Omniglot 上的学习曲线,且它由梯度的和作为元梯度而绘制出。g_2 对应一阶 MAML,即原版 MAML 论文提出的算法。由于方差缩减,使用更多的梯度会导致更快的学习或收敛。注意仅使用 g_1(对应 k=1)如预测那样在这个任务中没有什么提升,因为我们无法改进 zero-shot 的性能。

实现

实现的 GitHub 地址:https://github.com/openai/supervised-reptile

该实现应用 TensorFlow 进行相关的计算,代码可在 Omniglot 和 Mini-ImageNet 上复现。此外,OpenAI 也发布了一个更小的基于 JavaScript 的实现(https://github.com/openai/supervised-reptile/tree/master/web),其对使用 TensorFlow 预训练的模型进行了调整――以上 demo 就是基于此实现的。

最后,下面是一个 few-shot 回归的简单示例,预测 10(x,y) 对的随机正弦波。该示例基于 PyTorch:

论文:Reptile: a Scalable Metalearning Algorithm

地址:https://d4mucfpksywv.cloudfront.net/research-covers/reptile/reptile_update.pdf

摘要:本论文讨论了元学习问题,即存在任务的一个分布,我们希望找到能在该分布所采样的任务(模型未见过的任务)中快速学习的智能体。我们提出了一种简单元学习算法 Reptile,它会学习一种能在新任务中快速精调的参数初始化方法。Reptile 会重复采样一个任务,并在该任务上执行训练,且将初始化朝该任务的已训练权重方向移动。Reptile 不像同样学习初始化的 MAML,它并不要求在优化过程中是可微的,因此它更适合于需要很多更新步的优化问题。我们的研究发现,Reptile 在一些有具备完整基准的 few-shot 分类任务上表现良好。此外,我们还提供了一些理论性分析,以帮助理解 Reptile 的工作原理。

原文链接:https://blog.openai.com/reptile/

本文为机器之心编译,转载请联系本公众号获得授权。


为什么PyTorch的NumPy总会返回相同的随机数?

pythin return,pytorch detach().numpy(),python随机返回整数,python有没有return
展开全部
明敏 发自 凹非寺量子位 报道 | 公众号 QbitAI到底是怎样的一个bug,能让95%的Pytorch库中招,就连特斯拉AI总监深受困扰?还别说,这个bug虽小,但有够“狡猾”的。这就是最近Reddit上热议的一个话题,是一位网友在使用再平常不过的Pytorch+Numpy组合时发现。最主要的是,在代码能够跑通的情况下,它甚至还会影响模型的准确率!除此之外,网友热议的另外一个点,竟然是:而是它到底算不算一个bug?这究竟是怎么一回事?事情的起因是一位网友发现,在PyTorch中用NumPy来生成随机数时,受到数据预处理的限制,会多进程并行加载数据,但最后每个进程返回的随机数却是相同的。他还举出例子证实了自己的说法。如下是一个示例数据集,它会返回三个元素的随机向量。这里采用的批量大小分别为2,工作进程为4个。然后神奇的事情发生了:每个进程返回的随机数都是一样的。这个结果会着实让人有点一头雾水,就好像数学应用题求小明走一段路程需要花费多少时间,而你却算出来了负数。发现了问题后,这位网友还在GitHub上下载了超过10万个PyTorch库,用同样的方法产生随机数。结果更加令人震惊:居然有超过95%的库都受到这个问题的困扰!这其中不乏PyTorch的官方教程和OpenAI的代码,连特斯拉AI总监Karpathy也承认自己“被坑过”!但有一说一,这个bug想要解决也不难:只需要在每个epoch都重新设置seed,或者用python内置的随机数生成器就可以避免这个问题。到底是不是bug?如果这个问题已经可以解决,为什么还会引起如此大的讨论呢?因为网友们的重点已经上升到了“哲学”层面:这到底是不是一个bug?在Reddit上有人认为:这不是一个bug。虽然这个问题非常常见,但它并不算是一个bug,而是一个在调试时不可以忽略的点。就是这个观点,激起了千层浪花,许多人都认为他忽略了问题的关键所在。这不是产生伪随机数的问题,也不是numpy的问题,问题的核心是在于PyTorch中的DataLoader的实现对于包含随机转换的数据加载pipeline,这意味着每个worker都将选择“相同”的转换。而现在NN中的许多数据加载pipeline,都使用某种类型的随机转换来进行数据增强,所以不重新初始化可能是一个预设。另一位网友也表示这个bug其实是在预设程序下运行才出现的,应该向更多用户指出来。并且95%以上的Pytorch库受此困扰,也绝不是危言耸听。有人就分享出了自己此前的惨痛经历:我认识到这一点是之前跑了许多进程来创建数据集时,然而发现其中一半的数据是重复的,之后花了很长的时间才发现哪里出了问题。也有用户补充说,如果 95% 以上的用户使用时出现错误,那么代码就是错的。顺便一提,这提供了Karpathy定律的另一个例子:即使你搞砸了一些非常基本代码,“neural nets want to work”。你有踩过PyTorch的坑吗?如上的bug并不是偶然,随着用PyTorch的人越来越多,被发现的bug也就越来越多,某乎上还有PyTorch的坑之总结,被浏览量高达49w。其中从向量、函数到model.train(),无论是真bug还是自己出了bug,大家的血泪史还真的是各有千秋。所以,关于PyTorch你可以分享的经验血泪史吗?欢迎评论区留言讨论~参考链接:[1][2][3]― 完 ―