openai入门(open教程)

http://www.itjxue.com  2023-02-24 12:09  来源:未知  点击次数: 

告别面向Google编程,Copilot测试版本体验

最近OpenAI和GitHub联合发布了一个名为Copilot代码生成工具。这个工具基于GPT-3自然语言处理模型开发,并使用GitHub上的数十亿行代码作为训练数据,实现在写代码时自动提供代码建议的功能。

目前该产品已经在Vscode extenison中上线。作为长期面向Google编程的小白,当然是偷懒等不了明天,早早在官网排队等待试用名额,幸运地在一两周前获得了试用机会。

一周的体验下来,我认为Copilot的功能相较于其他代码补齐工具而言更加强大,更加灵活,甚至有时让我有种仿佛Copilot真的能读懂我的想法和代码,并且将其实现的感觉。显著提高了写码效率。

大家对GPT-3并不陌生 - 或许是2020年最火的自然语言处理模型,训练成本接近500万元,模型参数超过1750亿个。他是一个自回归模型,通俗理解就是输入一段文本的前一部分,预测接下来的文本的概率分布。GTP-3 自问世以来就被开发成几十个大大小小的不同应用,例如进行一些创作性写作(诗歌,小说等),编写前端代码(debuild.co)等等。

鲁迅曾经说过,XXX是最好的语言,既然GTP-3在语言方面如此有天赋,那么在写代码方面应该也会有所建树吧。果然CodeX - 基于GTP-3微调后的编程语言版本也在不久后问世,而Copilot正是CodeX的第一个商业化应用。

Copilot官网中列举了Copilot的四个使用方向:

可以说,如果真的能实现上述所说的四点,那么真的是可以极大地提高代码编写效率,在拿到试用资格后,我就如上几点进行了体验和测试,究竟能不能达到官网上所说的神奇效果呢?

首先我创建了一个新的项目,正巧当时打算瞄一眼比特币的价格,对了,要不让Copilot帮我写一个吧!我在注释中定义了想要的函数,看看Copilot能不能读懂我的意思呢?

第一次运行的时候我实实在在地被“惊吓”到了,Copilot似乎是理解了我的注释,刚开始定义函数,Copilot就迫不及待给我推荐了传入的参数,紧接着又推荐了完整的函数代码。虽然之前也存在类似语言转代码生成工具,但是使用的丝滑程度和生成代码的准确度上,个人感觉Copilot都遥遥领先于其他工具。

更多时候,我们需要在已有代码上进行添加或者修改,其中不乏需要写一些功能,格式较为相似的函数。有时我会选择直接复制粘贴函数然后进行修改,但是一旦需要修改的变量较多,往往会遗漏导致测试时报错。那么在类似场景下,Copilot是否能给我们提供一个更合适的“参考答案”呢?

我用以下代码进行了一个简单测试,在DeepaiImageApi模块中,我想要通过两个不同函数分别实现将图片数据和图片url传给DeepAI提供的API接口。在我定义了第一个函数方法之后,来看看Copilot是否能根据我的注释直接生成我想要的代码吧:

结果是非常Amazing啊,可以看出Copilot不仅提供了符合范式的函数名,代码以及符合项目代码的参数调用,并且对函数内容也有相对应的改动(request.post中传入的files参数由image变成了url)。说明copilot的确将本地文件中的代码作为了模型的输入值,并且很好地“理解”了代码中的重要特征,如格式,规范,结构等等。

总体而言,虽然Copilot生成的代码在多数情况下还需要检查和调整,但是他革命性的代码生成效果还是把初步接触Copilot的我惊艳到了,有时就算程序已经写好,我还是会特意按下Ctrl+Enter查看copilot提供的不同思路和方法。

最后夹带一点点个人观点,有人质疑Copilot成熟以后或许会抢走部分程序员的饭碗,或者让程序员自主思考的能力逐渐退化,作为一个入门码农来说我目前觉得并不需要担心。Copilot给我的感觉像是一个专门提供给程序员的Google,或是一套整理齐全,索引完备的代码答案库,在面对多数人遇到过的类似问题的时候,可以提高编程效率,减少面向Google编程时搜索合适答案的时间。

而另一方面,GTP-3本质上是一个自回归模型,我们无法依赖其提供给我们更加创新的算法或代码方案,当大多数程序员从重复且枯燥的代码中解放出来的时候,或许会就有更多的人类智慧被利用在创新性的工作中,从而加速行业的进步。

索尼赛车AI登上《自然》封面

索尼赛车AI登上《自然》封面

索尼赛车AI登上《自然》封面,报道称,去年7月,该人工智能首次与《GT赛车》的四名顶尖车手展开了较量,并在当年10月的另一场比赛中战胜了人类车手。索尼赛车AI登上《自然》封面。

索尼赛车AI登上《自然》封面1

“我们追求人工智能,是为了最终更好地了解人类。”

作为这个世代中为数不多的拟真赛车游戏,《GT赛车Sport》的玩家们可能从来没有想过,自己玩的游戏,有天会登上世界顶级科学期刊《自然》(Nature)的封面。

在昨天,索尼公布了一款由其旗下AI部门开发的人工智能技术,同时它也相应地成为了本周《自然》的“封面人物”,而这个人工智能的成就,是在《GT赛车Sport》中击败了全球一流赛车游戏选手们。

Nautre第7896期封面

或者,用“征服”这个词来形容更为合适。在索尼演示的四位AI车手与四名职业赛车玩家的对决中,冠军AI的最高圈速比人类中的最优者快了两秒有余。对一条3.5英里长度的赛道而言,这个优势一如AlphaGo征服围棋。

在近五年的研发时间里,这个由索尼AI部门、SIE还有PDI工作室(也就是《GT赛车》开发商)共同研发的AI完成了这个目标。

索尼为这个AI起名为GT Sophy。“索菲”是个常见的人名,源自希腊语σοφ α,意为“知识与智慧”。

Sophy和一般的游戏AI有什么区别?

AI在游戏中打败人类,并不是一件稀奇事。OpenAI在“冥想训练”了成千上万场DOTA2后击败过当时的Ti8冠军OG,谷歌的AlphaStar也曾面对《星际争霸2》的顶级职业选手时表现过碾压态势,而我们每个普通玩家,也都尝过“电脑[疯狂的]”的苦头。

2019年,OpenAI曾经在仅开放部分英雄选用的限制条件下击败过OG

但这些“打败”并非一回事。要明白GTS中的AI车手Sophy意味着什么,首先要明确Sophy和其一个单纯“你跑不过的AI”有什么区别。

对过往赛车游戏里的AI而言,尽管呈现形式都是游戏中非玩家控制的“智能体”,但传统意义上的AI车手通常只是一套预设的行为脚本,并不具备真正意义上的智能。

传统AI的难度设计一般也是依赖“非公平”的方式达成的,比如在赛车游戏中,系统会尽可能削弱甚至消除AI车的物理模拟,让AI车需要处理的环境参数远比玩家简单。

而要塑造更难以击败的AI敌人,也不过是像RTS游戏中的AI通过暗中作弊的方式偷经济暴兵一样,让AI车在不被注意的时刻悄悄加速。

所以对于具备一定水平的玩家而言,赛车游戏里的传统AI在行为逻辑和策略选择上几乎没有值得参考的点,遑论职业赛车游戏选手。

而Sophy则是和AlphaGo一样,通过深度学习算法,逐渐在模拟人类的行为过程中达到变强:学会开车,适应规则,战胜对手。

这种AI带给玩家的,完全是“在公平竞争中被击败”的体验。在被Sophy击败后,一位人类车手给出了这样的评价:“(Sophy)当然很快,但我更觉得这个AI有点超乎了机器的范畴……它像是具备人性,还做出了一些人类玩家从未见过的行为。”

这难免再次让人联想到重新改写了人类对围棋理解的AlphaGo。

相对于围棋这种信息透明的高度抽象游戏,玩法维度更多、计算复杂度更高的电子游戏,在加入深度学习AI之后,其实一直很难确保“公平竞技”的概念。

例如在2019年征战《星际争霸2》的AlphaStar,基本没有生产出新的战术创意,只是通过无限学习人类选手的战术,再通过精密的多线操作达成胜利——即便人为限制了AlphaStar的APM,AI完全没有无效操作的高效率也并非人类可比。

这也是为什么在AlphaStar与人类职业选手的对抗记录里,当AI用“三线闪追猎”这样的神仙表演击败波兰星灵选手MaNa后,并不服气的MaNa在赛后采访中说出了“这种情况在同水平的人类对局中不可能出现”这样的话。

AlphaStar用追猎者“逆克制关系”对抗MaNa的不朽者部队

同样,《GT赛车》也是一款与《星际争霸2》具备同样复杂度的拟真赛车游戏。

在专业赛车玩家的眼中,路线、速度、方向,这些最基本的赛车运动要素都可以拆解为无数细小的反应和感受,车辆的重量、轮胎的滑移、路感的反馈……每条弯道的每次过弯,都可能存在一个绝佳的油门开度,只有最顶级的车手可以触摸到那一缕“掌控”的感觉。

在某种意义上来讲,这些“操纵的极限”当然能够被物理学解释,AI能掌握的范围显然要大于人类。所以,Sophy的反应速度被限制在人类的同一水平,索尼为它分别设置了100毫秒、200毫秒和250毫秒的反应时间——而人类运动员在经过练习后对特定刺激的反应速度可以做到150毫秒左右。

无疑,这是一场比AlphaStar更公平的战斗。

Sophy学会了什么

和Sophy为数众多的AI前辈一样,它也是利用神经网络等深度学习算法来进行驾驶技巧的训练。

Sophy在训练环境中会因为不同的行为遭受相应奖励或者惩罚——高速前进是好的,超越前车则更好;相应地,出界或者过弯时候撞墙就是“坏行为”,AI会收获负反馈。

在上千台串联起的PS4组成的矩阵中,Sophy经受了无数次模拟驾驶训练,在上述学习里更新自己对《GT赛车Sport》的认知。从一个不会驾驶的“婴儿”到开上赛道,Sophy花费了数个小时的时间;一两天后,从基础的“外内外”行车线开始,Sophy已经几乎学会了所有常见的赛车运动技巧,超越了95%的人类玩家。

索尼AI部门为Sophy搭建的“训练场”

然而,赛车并不是一个人的游戏。即便Sophy在去年7月份的比赛中,已经可以没有其他赛车的情况下拥有超出顶级人类选手的计时赛成绩,但在真实的多人游戏中,Sophy还需要学会与对手进行对抗上的博弈,理解其他车手的行为逻辑。

因此,索尼AI部门的科研人员对Sophy进行了更多的“加练”,比如面对其他车时如何插线超车、阻挡卡位。到最后,Sophy甚至还被“教育”到能够理解和遵守赛车运动中的比赛礼仪——比如作为慢车时进行让车,同时避免不礼貌的恶意碰撞。

赛车游戏中的AI车,一般即便会尝试躲避与玩家擦碰,其实现方式也只是不自然地闪躲。而Sophy呈现出的“比赛理解”,都是依靠脚本运行的传统赛车AI无法做到的。

到了10月,Sophy已经可以在正式的同场比赛中击败最顶级的人类选手。

索尼邀请的四位人类车手,其中包括GT锦标赛三冠王宫园拓真

比如第一场在Dragon Trail(龙之径)上进行的比赛。作为《GT赛车Sport》的驾驶学校尾关,每个GTS玩家应该都相当熟悉这条赛道(以及DLC中的“汉密尔顿挑战”)。在数万个小时的训练过后,排名第一的Sophy车手已经可以踩着绝对的最优路线保持全程第一。

而在四个Sophy与四位人类车手角逐的第二个比赛日中,AI们的优势进一步扩大了——几乎达成了对顶级人类玩家的碾压。

如果只是在路线的选择和判断上强过人类,用更稳定的过弯来积累圈速优势,这可能还没什么大不了的。

但研究者们认为,Sophy几乎没有利用在用圈速上的绝对优势来甩开对手(也就是AI身为非人类在“硬实力”上更强的部分),反而在对比赛的理解上也超过了人类玩家,比如预判对手路线的情况下进行相应的对抗。

在《自然》论文所举的案例中,两名人类车手试图通过合法阻挡来干扰两个Sophy的首选路线,然而Sophy成功找到了两条不同的轨迹实现了超越,使得人类的阻挡策略无疾而终,Sophy甚至还能想出有效的方式来扰乱后方车辆的超车意图。

Sophy还被证明能够在模拟的萨尔特赛道(也就是著名的“勒芒赛道”)上执行一个经典的高水平动作:快速驶出前车的尾部,增加对前车的阻力,进而超越对手。

更令研究者称奇的是,Sophy还捣鼓出了一些非常规的行为逻辑,听上去就像AlphaGo用出新的定势一样。通常,赛车手接受的教育都是在过弯时“慢进快出”,负载只在两个前轮上。但Sophy并不一定会这么做,它会在转弯时选择性制动,让其中一个后轮也承受负载。

而在现实中,只有最顶级的F1车手,比如汉密尔顿和维斯塔潘,正在尝试使用这种三个轮胎快速进出的技术——但Sophy则完全是在游戏世界中自主学会的。

曾经取得三次GT锦标赛世界冠军的车手宫园拓真在与AI的对抗中落败后说,“Sophy采取了一些人类驾驶员永远不会想到的赛车路线……我认为很多关于驾驶技巧的教科书都会被改写。”

“为了更好地了解人类”

区别于以往出现在电子游戏中的先进AI们(比如AlphaStar),Sophy的研究显然具备更广义、更直接的现实意义。

参与《自然》上这篇论文撰写的斯坦福大学教授J.Christian Gerdes就指出,Sophy的成功说明神经网络在自动驾驶软件中的作用可能比现在更大,在未来,这个基于《GT赛车》而生的AI想染会在自动驾驶领域提供更多的帮助。

索尼AI部门的'CEO北野宏明也在声明中表示,这项AI研究会给高速运作机器人的研发以及自律型驾驶技术带来更多的新机会。

Sophy项目官网的介绍

但如果我们将目光挪回作为拟真赛车游戏的《GT赛车》本身,Sophy的出现,对大众玩家和职业车手而言同样具备不菲的意义。

正如文章前面所说,在目前市面上大多数拟真赛车游戏中,“传统AI”已经是一个完全不能带给玩家任何乐趣的事物。这种依赖不公平条件达成的人机对抗,与赛车游戏开发者希望带给玩家的驾驶体验是相悖的,人类玩家也无法从中获得任何教益。

在索尼AI部门发布的纪录片中,“GT赛车之父”山内一典就表示,开发无与伦比的AI可能是一项了不起的技术成就,但这对普通玩家来说可能不是什么直白的乐趣。

因此,山内承诺在未来的某个时候,索尼会将Sophy带入到三月份即将发售的《GT赛车7》中。当Sophy能够更加了解赛场上的环境和条件,判断其他车手的水平,一个这样智能又具备风度的AI,就能够在与人类比赛时,为玩家提供更多真实的快乐。

在拟真赛车游戏逐渐“小圈子化”,众多厂商都做不好面对纯新玩家的入门体验的今天,或许一个AI老师的存在,有机会能给虚拟世界中的拟真驾驶带来更多的乐趣,就像《GT赛车4》的宣传片片头所说,“体验汽车生活”。

这可能才是一个基于游戏而生的AI能为玩家带来的最重要的东西——如同山内一典对Sophy项目的评论, “我们不是为了打败人类而制造人工智能——我们追求人工智能,是为了最终更好地了解人类。”

索尼赛车AI登上《自然》封面2

据路透社伦敦2月9日报道,索尼公司周三说,它创造了一个名为“GT索菲”的人工智能(AI)代理,能击败《GT赛车》——PlayStation平台上的模拟赛车游戏——中全球最优秀的车手。

该公司在一份声明中说,为了让“GT索菲”为这款游戏做好准备,索尼公司的不同部门提供了基础人工智能研究成果、超现实真实世界赛车模拟器,以及进行大规模人工智能训练所需的基础设施。

报道称,去年7月,该人工智能首次与《GT赛车》的四名顶尖车手展开了较量,它吸取了这次比赛的经验,并在当年10月的另一场比赛中战胜了人类车手。

这款人工智能的设计团队领导者、索尼人工智能美国公司负责人彼得·沃尔曼说:“我们用了大约20台PlayStation游戏机,同时运行大约10到12天,才训练‘GT索菲’从零开始达到超人类水平。”

报道指出,虽然人工智能曾在国际象棋、麻将和围棋比赛中击败人类,但索尼公司说,掌握赛车驾驶技术的难点在于,许多决定是必须实时做出的。

据报道,索尼的竞争对手微软公司最近斥资近690亿美元收购了动视暴雪公司。微软一直在利用游戏来改进人工智能,其方式是不断为人工智能模型提供新挑战。

报道称,《GT赛车》是一款模拟赛车电子游戏,1997年问世,已售出8000多万套。

索尼希望将学习到的东西应用到其他PlayStation游戏中。该公司说:“有很多游戏可以对人工智能构成不同挑战,我们期待开始解决这些问题。”

索尼赛车AI登上《自然》封面3

还记得前几天索尼预告即将公布的重要AI消息吗?最近,索尼正式宣布,其研究人员已经开发出了一款名为“GT Sophy”的AI车手,可以击败人类顶尖的车手获得冠军。

据悉,索尼对于“GT Sophy”使用了异种称为强化学习的方法进行训练。其本质就是不断的试错,将AI扔进一个没有指令的环境中,达到目标即可获得奖励。

索尼的研究人员表示,它们必须谨慎地设计奖励,譬如微调碰撞惩罚,调整各种目标地优先级,从而保证AI地驾驶风格足够激进,但又不只是在路上欺负对手。

在强化学习的帮助下,AI只需要几小时的训练,就已经适应了赛道飙车。并且在一两天内做到了训练数据快过95%的车手。经过45000小时的总训练,目前AI已经在索尼PS5的《GT赛车》游戏中取得了惊人的成绩,击败顶级人类车手已不是问题。

索尼用AI对三位顶级电子竞技车手进行了测试,没有一个人能够在计时赛中击败AI。而他们也从AI竞赛中学到了新战术,学习AI的路线,掌握更好的入弯时间点。

索尼目前表示,他们正在努力将GT Sophy整合到未来的《GT赛车》游戏中,不过尚没有提供任何具体的时间表。

再结合之前索尼造车的各种消息,这款AI没准还能用在现实世界汽车的自动驾驶技术上,前景可谓十分乐观。

浅谈策略梯度(PG)算法

Policy Optimization(策略优化)是强化学习中的一大类算法,其基本思路区别于Value-based的算法。因此,很多教科书都将model-free RL分成两大类,Policy Optimization和Value-based。本系列博客将会参考OpenAI发布的入门教程 Spinning Up [1] ,Spinning Up系列是入门Policy Optimization的非常好的教材,特别适合初学者。Policy Gradient(策略梯度,简称PG)算法是策略优化中的核心概念,本章我们就将从最简单的PG推导开始,一步步揭开策略优化算法的神秘面纱。

如果用一句话来表达 策略梯度 的直观解释,那就是“如果动作使得最终回报变大,那么增加这个动作出现的概率,反之,减少这个动作出现的概率”。这句话表达了两个含义:

本节我们将一步步推导出策略梯度的基础公式,这一小节非常重要,理解了推导过程,就基本上理解了策略梯度的核心思想。所以,一定要耐心的把这一小节的内容全部看懂,最好能够达到自行推导的地步。

我们用参数化的神经网络表示我们的策略 ,那我们的目标,就可以表示为调整 ,使得 期望回报 最大,用公式表示:

在公式(1)中, 表示从开始到结束的一条完整路径。通常,对于最大化问题,我们可以使用梯度上升算法来找到最大值。

为了能够一步步得到最优参数,我们需要得到 ,然后利用梯度上升算法即可,核心思想就是这么简单。

关键是求取最终的 回报函数 关于 的梯度,这个就是 策略梯度 (policy gradient),通过优化策略梯度来求解RL问题的算法就叫做 策略梯度算法 ,我们常见的PPO,TRPO都是属于策略梯度算法。下面我们的目标就是把公式(2)逐步展开,公式(2)中最核心的部分就是 ,这也是这篇博客最核心的地方。

在以上的推导中,用到了log求导技巧: 关于 的导数是 。因此,我们可以得到以下的公式:

所以,才有公式(5)到公式(6),接下来我们把公式(7)进一步展开,主要是把 展开。先来看看

加入log,化乘法为加法:

计算log函数的梯度,并且约去一些常量:

因此,结合公式(7)和公式(9),我们得到了最终的表达式

公式(10)就是PG算法的核心表达式了,从这个公式中可以看出,我们要求取的策略梯度其实是一个期望,具体工程实现可以采用蒙特卡罗的思想来求取期望,也就是采样求均值来近似表示期望。我们收集一系列的 ,其中每一条轨迹都是由agent采用策略 与环境交互采样得到的,那策略梯度可以表示为:

其中, 表示采样的轨迹的数量。现在,我们完成了详细的策略梯度的推导过程,长舒一口气,接下来的工作就比较轻松了,就是在公式(10)的基础上修修改改了。

再进行简单修改之前,我们再总结一下公式(10),毕竟这个公式是PG算法最核心的公式:

我们继续观察公式(10),对于公式中的 ,表示整个轨迹的回报,其实并不合理。对于一条轨迹中的所有动作,均采用相同的回报,就相当于对于轨迹中的每一个动作都赋予相同的权重。显然,动作序列中的动作有好有坏,都采取相同的回报,无法达到奖惩的目的,那我们该怎么表示 某个状态下,执行某个动作 的回报呢?

一种比较直观思路是,当前的动作将会影响后续的状态,并且获得即时奖励(reward),那么我们只需要使用 折扣累计回报 来表示当前动作的回报就行了,用公式表示为:

这在spinning up中叫做reward to go,所以,公式(10)可以表示为:

当然,使用reward to go的权重分配还是相当初级,我们可以使用更加高级的权重分配方式,进一步减少回报分配的方差,限于篇幅原因,我们后续再聊。

本章我们花了大量的篇幅推导了策略梯度(PG)的核心公式,得到了关键表达式(10),理解该公式对于我们后续理解整个PG算法族非常有帮助,希望大家能够认真的理解这一公式推导过程。

(责任编辑:IT教学网)

更多

推荐其他营销文章