泓泰

OpenAI公开【kāi】Dota 2论文:胜率99.4%,「手术【shù】」工具连续【xù】迁移训练

admin
OpenAI公开Dota 2论文:胜率99.4%,「手术」工具连续迁移训练-第1张-游戏相关-泓泰

前言:

此【cǐ】时你们对“dotaai地图哪个版本【běn】正版”大致比【bǐ】较重视,咱们都需要知【zhī】道一些【xiē】“dotaai地图哪个版本正版”的相关内容。那么小【xiǎo】编在网络上搜【sōu】集了【le】一些有关“dotaai地图【tú】哪个版本正【zhèng】版””的相【xiàng】关知识,希望兄弟们【men】能喜欢,姐妹们【men】快快来了解一【yī】下吧!

选自OpenAI

作者:Berner等机器之心编译
参与:熊猫

OpenAI 的 Dota 2 人工智能智【zhì】能【néng】体项目 OpenAI Five 已【yǐ】经经【jīng】历了【le】三年的发展。在 2019 年 4 月 13 日,OpenAI Five 成【chéng】为了首【shǒu】个战胜了世界【jiè】冠军战队的 AI 系统,但【dàn】是当【dāng】时 OpenAI 没有公【gōng】开相【xiàng】关的论文和算【suàn】法细【xì】节。近日,OpenAI 终于发布【bù】了描述该项目的论文《Dota 2 with Large Scale Deep Reinforcement Learning》。

人工智能的【de】长【zhǎng】期目标是解决高【gāo】难度的真实世界难【nán】题。为了实现这一目标,研究者在【zài】近几十年的【de】时间里将游戏作为研究 AI 发展的基石。从双陆【lù】棋【qí】(1992)到国际【jì】象棋【qí】(1997)再【zài】到 Atari 游戏(2013),在 2016 年,AlphaGo 凭【píng】借深度强化学【xué】习和蒙特卡【kǎ】洛树搜【sōu】索战胜了【le】围棋世界【jiè】冠军。近【jìn】些【xiē】年【nián】来,强化学习(RL)也在更多【duō】类型的【de】任【rèn】务上【shàng】得到了应【yīng】用,比如机器人操作、文本摘【zhāi】要以及《星际争霸》和《Minecraft》等视频游戏。

相比【bǐ】于【yú】国【guó】际象棋或围棋等之前的 AI 里程【chéng】碑,复【fù】杂视频游戏更具备【bèi】现实【shí】世【shì】界【jiè】问题【tí】那样的复杂性和连【lián】续性。而 Dota 2 是 Valve Corporation 于 2013 年发行的一款【kuǎn】多人实时战略游戏,该游戏在 2013 年到【dào】 2019 年【nián】之间的同【tóng】时在线【xiàn】玩家【jiā】数在 500 000 到 1 000 000 之间。
该游戏也有很【hěn】多全职【zhí】的【de】职业玩家;其 2019 年国际冠军赛的【de】奖金【jīn】池已经超过【guò】了 3500 万美元(这是【shì】全世界电子【zǐ】竞技游戏中最多的)。该游戏由于一局时【shí】间较长【zhǎng】、部分可观【guān】测性以及高维度的观察【chá】和动作空间,这些给【gěi】强【qiáng】化学习带来了严峻的挑战。另外,Dota 2 的规则【zé】也很复杂——该【gāi】游【yóu】戏已经历经超【chāo】过十【shí】年的【de】活跃开发【fā】,其游戏【xì】逻辑使用了数十万行代码来实现。

要为【wéi】这样复杂的环境【jìng】创造【zào】合适的智能体,关键是要将现有的【de】强化学习系【xì】统扩展至【zhì】前所未有的规模,这需要在【zài】数以千【qiān】计的【de】 GPU 上执行几【jǐ】个月的训【xùn】练。为了实现这一目标【biāo】,OpenAI 构建了一个分布式的【de】训练系统,训练出【chū】了名为【wéi】 OpenAI Five 的【de】 Dota 2 游戏智能【néng】体。2019 年 4 月【yuè】,OpenAI Five 击【jī】败了一支 Dota 2 世界冠军战队(OG 战队【duì】),这是【shì】首个击败电子竞【jìng】技【jì】游【yóu】戏世界冠军的 AI 系统。OpenAI 也将该系统开放给了 Dota 2 社区进行【háng】对战试玩【wán】;在超过 7000 局游戏中,OpenAI Five 的【de】胜【shèng】率【lǜ】为 99.4%。
论文【wén】地址:https://cdn.openai.com/dota-2.pdf

OpenAI 表示【shì】,训练过程【chéng】还面临着另外一个难题:游【yóu】戏【xì】环境和代码一直在不【bú】断【duàn】升级和变【biàn】化。为了【le】避免在每【měi】次变化之后再从【cóng】头【tóu】开始训练,他们开发出了一套工具【jù】,能以最低的性能损【sǔn】失继续【xù】完成训练——OpenAI 将其称【chēng】之为「手术(surgery)」。在【zài】超过【guò】 10 个月【yuè】的训练过程中,OpenAI 大约每两周【zhōu】执【zhí】行一次手术。这套工具让 OpenAI 可以经常【cháng】改进他们的智能体,这只需要【yào】很短的时间——比【bǐ】典型的从头开【kāi】始训练方【fāng】法要短得【dé】多【duō】。随着 AI 系统解决的问题越来越大,越来越【yuè】难,进一步研究不断变化的环境和【hé】迭代开发就【jiù】显【xiǎn】得至【zhì】关重【chóng】要了。

Dota 2 难在哪儿?

Dota 2 游戏对【duì】战【zhàn】发生在一个方形的地图中,两支队伍各自保【bǎo】卫位于【yú】对角线上【shàng】的己【jǐ】方基地。每支队伍的基地都【dōu】有【yǒu】一个【gè】远古遗迹(ancient);当某方的远古遗迹被敌方摧毁时,游戏便宣【xuān】告【gào】结束【shù】。每支【zhī】队伍由 5 位玩【wán】家组成【chéng】,每位玩家控制【zhì】一个英【yīng】雄单位,每个英【yīng】雄都【dōu】有自己独特的技能【néng】;游戏【xì】期间,每方【fāng】都有持续派出的「小【xiǎo】兵(creep)」单位,但【dàn】这些小【xiǎo】兵不由玩家控制,它们会按路径向敌【dí】方【fāng】基地前进,并【bìng】会攻击任何出现在其攻击范【fàn】围内的敌方单【dān】位【wèi】和【hé】建筑;玩家可从【cóng】小兵收集金币和经验等资源,然【rán】后【hòu】可通过购买【mǎi】物品和升级来提升英雄【xióng】的战斗力。

为了玩 Dota 2,AI 系统必须解决多种难题:

长时间对局【jú】。Dota 2 游【yóu】戏一【yī】般【bān】会以【yǐ】 30 帧【zhēn】每秒的速度【dù】持续大【dà】约 45 分【fèn】钟。OpenAI Five 每 4 帧选择一【yī】个动作【zuò】,则每局【jú】比赛需要【yào】执行大约 20000 步。比较一下,国【guó】际象【xiàng】棋一般持【chí】续 80 步,围棋是 150 步。部分可观察的状态。每支队【duì】伍都【dōu】只能看【kàn】见己方单位和建筑【zhù】附近的部分游【yóu】戏状【zhuàng】态【tài】;地图中的其余【yú】部【bù】分都是隐藏起来的。如果【guǒ】要玩得好,需要【yào】基【jī】于不完【wán】整的数据进行推断以及建模敌方的行为。高维【wéi】度【dù】的动作【zuò】和观察空间。Dota 2 有一个【gè】很大的地图,地图中有【yǒu】 10 个【gè】英雄、几十个建筑、几十【shí】个非玩家单位【wèi】,另外还有【yǒu】神符、树和侦查守卫(眼【yǎn】)等长尾的游【yóu】戏特征。

OpenAI Five 每个时间步骤会观察【chá】大约 16 000 个【gè】值(大部分是【shì】浮点【diǎn】数和有数百种可能性的类【lèi】别值)。同【tóng】时【shí】,OpenAI 对动【dòng】作空间【jiān】进行【háng】了离散【sàn】化处理;其模【mó】型在每个时间步骤从 8000 到【dào】 80000(具体数量取决于英雄)个动作选【xuǎn】择一个【gè】。相【xiàng】比之下,国际【jì】象棋【qí】每次观察需要大约 1000 个值(这些值大都是有 6 个可能性的类【lèi】别值),围棋【qí】大约需要 6000 个值(全【quán】都是二元值)。围棋的分【fèn】支因子(branching factor)大约是 35 个可行动作,围【wéi】棋的【de】大约【yuē】是 250。

另外需要说明,OpenAI Five 在玩常规【guī】模式【shì】的游戏时【shí】还有两个限制条件【jiàn】:

英【yīng】雄池只有【yǒu】 17 个英【yīng】雄——在常规【guī】游戏【xì】时,玩家是在比赛前从【cóng】 117 个【gè】英雄中选择【zé】一个,而 OpenAI Five 目【mù】前【qián】只支持其中 17 个;不支持能让玩家同时暂时控制多个单位的【de】物品(幻象神【shén】符【fú】、支配头盔、幻影斧、死灵书)。OpenAI 移【yí】除【chú】这些物品的原因是【shì】控制多【duō】个单位会引入额外【wài】的【de】技术复杂性。

训练系统

让 AI 玩 Dota

为了【le】将「以超人级水平玩【wán】这【zhè】个复杂【zá】游戏」的模糊问题转换成一个【gè】可以优化【huà】处理【lǐ】的详细目【mù】标,OpenAI 提出了以下框架。

尽【jìn】管【guǎn】 Dota 2 引擎的运行频率【lǜ】是 30 帧每秒【miǎo】,但 OpenAI Five 每隔【gé】 4 帧【zhēn】(称为一【yī】个时间【jiān】步骤)才采取一个动作。在每个【gè】时间步骤,OpenAI Five 都从游戏引擎【qíng】接收一个【gè】观察,其中编码了作为人【rén】类玩【wán】家可【kě】以看到的所有信息,比如【rú】单位血量、位【wèi】置等。然后,OpenAI Five 向游戏引擎返回一个离散的【de】动作,其中编码了一个所【suǒ】需的移动、攻【gōng】击等【děng】。

当然,某些游戏机【jī】制【zhì】是用人工编【biān】写的逻【luó】辑控制的【de】,而不【bú】是使用策略。这其【qí】中包括:英雄购买物【wù】品、获得【dé】技能的指令、对独【dú】特的信使单位的控制、英【yīng】雄应当保留物品。OpenAI 表示【shì】,他们相信用【yòng】 AI 方【fāng】法替代人工编【biān】写规则最【zuì】终能让智能体【tǐ】取得【dé】更好的表现,但即便如此,现有的【de】智能体【tǐ】就【jiù】已经取得了超人类的表现。

在训练期间,环境中的某些【xiē】属【shǔ】性经过了随机化处理,包括游戏中的英雄和英雄购买的物品。因为【wéi】在【zài】与【yǔ】人类【lèi】对手【shǒu】对【duì】战时【shí】会出现各种不同【tóng】的战略和情况,所以【yǐ】为了【le】保证稳【wěn】健性,必【bì】须进【jìn】行足【zú】够多样化的训练。

OpenAI 将【jiāng】策略 π 定义为从观察历【lì】史映射到动作的概率分布的函【hán】数,并将其参数化为【wéi】了【le】一【yī】个有大约 1.59 亿个参【cān】数(θ)的循【xún】环神经网络。该神经网络主要由【yóu】单层的【de】 4096 单元的 LSTM 构【gòu】成(见图 1)。给定【dìng】一个策【cè】略【luè】,OpenAI 玩【wán】游戏的方式是在每【měi】个时间步骤【zhòu】不断重【chóng】复地将当前观察传递【dì】为输【shū】入【rù】,然后从【cóng】输出的分布【bù】采样一个动作【zuò】。

图 1:简化版的 OpenAI Five 模型架构

为了控制【zhì】一支队伍的【de】五个英【yīng】雄【xióng】,OpenAI 为每个英雄都使用【yòng】了同一策略【luè】函【hán】数(具有相同的参数 θ)的不同副本。因为 Dota 2 中的可见信【xìn】息【xī】和【hé】战争迷雾(迷雾中友方单位附【fù】近的区域是可见的)是全队共【gòng】享的【de】,所【suǒ】以【yǐ】每位英雄的【de】观察几【jǐ】乎都是相同【tóng】的。

不【bú】过【guò】,OpenAI Five 并【bìng】不直接使【shǐ】用屏幕【mù】上的像素信息,而是使用了一个数据数组集【jí】来近似【sì】人类玩家【jiā】可获得的信息。这样的近【jìn】似是不【bú】完美的;人【rén】类玩家【jiā】能够获【huò】得的很多片段信息都没有【yǒu】被编【biān】码在观察中。另一方面,尽管 OpenAI 已经尽力确保模型获得的所有【yǒu】信息【xī】都是人类可以获得的所有【yǒu】信息,但人类在每个时【shí】间步【bù】不【bú】可能同【tóng】时看完所【suǒ】有可用信息——人类必【bì】须主动点【diǎn】击【jī】地【dì】图和状【zhuàng】态指示【shì】器的【de】不同部分才行。

对策略进行优化

OpenAI 的【de】目标是找到能【néng】最大化与人【rén】类职业玩家【jiā】对战【zhàn】时获【huò】胜的概率的策略。在实践中,研究者对奖励【lì】函数执行【háng】了最大化【huà】操作,这个【gè】奖励函【hán】数【shù】还包含一些其它信号,比如【rú】角色死亡、收集资源【yuán】等。
另外【wài】,他们【men】还【hái】应用了多【duō】种技术以在计算奖【jiǎng】励函【hán】数时利用该问【wèn】题的零和多玩家【jiā】(zerosum multiplayer)结构【gòu】。比如说,通过减去敌方队伍所获得的【de】奖励【lì】,使得智能体的奖励【lì】被对称化处理(symmetrize)。
OpenAI 团队在该项目一开始【shǐ】就构【gòu】建好了【le】这【zhè】个奖励函数,因为团队对游戏的有一定的了解【jiě】。尽【jìn】管随着【zhe】游戏版本更新,这个奖励函数也有【yǒu】过些许变化,但【dàn】他们发现初始的【de】奖励选择效果已经很好。而之后增加【jiā】的奖励【lì】信【xìn】号对训练【liàn】成【chéng】功而言也【yě】非常重【chóng】要。

对于策略的训【xùn】练则使用了【le】近端策略优化(PPO),这是 Advantage Actor Critic 的【de】一种【zhǒng】变体【tǐ】。这种优化【huà】算法使【shǐ】用了通用优势估计(GAE),这是一【yī】种标准的基于优势【shì】的方差缩减技术,可稳【wěn】定和加速训练【liàn】。OpenAI 使用了一个中心化的共【gòng】享【xiǎng】式【shì】的 LSTM 模块来【lái】训练网络。这一模块会向不同【tóng】的全连接层提供输入,从而【ér】得到策略和价值函数输出。

图 2:系统概况:该训练系统由 4 种主要类型的机器构成

OpenAI 使用了从 Dota 2 收集的自我【wǒ】博【bó】弈(self-plaer)经验来训【xùn】练策略;在 16 个时间步的样本【běn】上使用了【le】带有截断式的反向【xiàng】传【chuán】播的 Adam 优化【huà】器【qì】。

系统【tǒng】使【shǐ】用「Rollout」运【yùn】行自我博弈。它们以接近 1/2 的实时时【shí】间运行【háng】这【zhè】些游戏,因【yīn】为 OpenAI 团队发【fā】现以【yǐ】这样的速度能并【bìng】行运行略多于【yú】两倍的游戏【xì】,从而增大总【zǒng】吞吐量。

「Rollout」能以【yǐ】异步的方式发送【sòng】正在【zài】进行的游戏中的数据,而【ér】不是等到【dào】整局【jú】游戏结束才发【fā】送数据进行优化【huà】。

整个系统运行在自定义【yì】的分【fèn】布【bù】式训练平【píng】台 Rapid 上,基于谷歌的云平台上。为了执行【háng】快速 GPU 训练,研究【jiū】者还使用了【le】 blocksparse 软件库。

通过「手术」实现连续迁移

当然随着【zhe】项目推进【jìn】,代【dài】码和游戏环【huán】境也在逐【zhú】渐变【biàn】化【huà】。为了解【jiě】决从头开始训练的问题,OpenAI 提出了一【yī】种名【míng】为「手术(surgery)」的新方法。

「手术」可【kě】被视为一套工具集,它能【néng】够对【duì】旧模型执行离【lí】线操作,从而得到与新【xīn】环境兼容的【de】新模型。即【jí】便【biàn】这【zhè】个新模型的参数向【xiàng】量与旧模型的大小和语【yǔ】义不同,但【dàn】它也仍然能以同样【yàng】的【de】水平执行游【yóu】戏策略。然后,OpenAI 使用【yòng】有新【xīn】参数向量的【de】新模【mó】型开【kāi】始在新环【huán】境中进行训练。在环境、观【guān】察【chá】和动作空间都不变【biàn】的最简【jiǎn】单情况下,其【qí】标准【zhǔn】简化为:坚持让新策略实现【xiàn】与旧策略一样的从所观察【chá】状态到动作的概率的函数:

这是保留变换的 Net2Net 风格的函【hán】数的【de】一【yī】个特例。OpenAI 已经开发出了能尽可能准确地【dì】实现【xiàn】公式(1)的工具(如【rú】添加观【guān】察【chá】、扩【kuò】展层和其它情况);而【ér】当对【duì】环境、观察空间或动作空间的修改【gǎi】类型无法完全满足【zú】准确实【shí】现的标【biāo】准时,也可以近似地实【shí】现它。

表 1:在 OpenAI Five 训练期【qī】间执【zhí】行过的【de】所【suǒ】有成【chéng】功的「手术」和重大【dà】的环境改变

「手术」能在无损性能的同时实现连续的训练(见图 4)。

图 4:在正在开发中的环境中训练

实验和评估

OpenAI Five 是从 2018 年 6 月 30 日【rì】到【dào】 2019 年【nián】 4 月 22 日的单次训练过程【chéng】的产物。经过十个月【yuè】的 770±50 PFlops/s·days 计算【suàn】量的训练之后,其【qí】在三局【jú】两胜制比赛中击败了【le】 Dota 2 冠军战队,并在持【chí】续多【duō】日的在线展示中击败了 99.4% 的人【rén】类玩家。

为了有效【xiào】地利用这种水平的【de】算力【lì】,整个系统【tǒng】进行了三个方向的扩展【zhǎn】。第一,批大【dà】小为 100 万【wàn】到 300 万【wàn】的时间步(将其分组为【wéi】长度在【zài】 16 的展开式【shì】 LSTM 窗口)。第【dì】二,使用了超过 1.5 亿【yì】参数的模型。第【dì】三,OpenAI Five 的训练用去了 180 天【tiān】(由于重启和恢复【fù】,实际时间超【chāo】过 10 个月)。
相比于 AlphaGo,OpenAI Five 的批大小大 50 到 150 倍,模【mó】型大【dà】 20 倍,训练时间【jiān】长 25 倍。但【dàn】同期【qī】也【yě】有另一【yī】些研究能在规【guī】模与这【zhè】一项目【mù】匹敌或甚至规模更【gèng】大一些,比如 DeepMind 的《星际争霸 2》智能体研究《Grandmaster level in StarCraft II using multi-agent reinforcement learning》以【yǐ】及 OpenAI 的一【yī】项机器人研【yán】究《Solving Rubik's Cube with a Robot Hand》。

人类评估

在训练期间,OpenAI Five 与许【xǔ】多业余玩家、职业玩家和职【zhí】业战【zhàn】队进行了比赛【sài】,以便跟踪记录【lù】研【yán】究【jiū】进展。

4 月 13 日,OpenAI Five 与 Dota 2 现世界【jiè】冠军 OG 战队进行了一场高【gāo】水平【píng】的竞【jìng】技比【bǐ】赛,在【zài】三局两胜比赛中获胜(9-21),这【zhè】表明 OpenAI Five 确实【shí】能学习到最高水平的操【cāo】作技【jì】术。

但是,机器学习系统通常不能【néng】很【hěn】好地应对意料【liào】之外的情【qíng】况。尽管在展【zhǎn】示比赛中胜过世界冠【guàn】军【jun1】确【què】实能说明 OpenAI Five 能【néng】力出色,但【dàn】这不能证【zhèng】明其能【néng】够广泛地理解人类社区可能面临【lín】的各种【zhǒng】难题。
为了探索【suǒ】 OpenAI Five 能否被稳定地用【yòng】于【yú】创造性或分布外的玩法,OpenAI 启动【dòng】了 OpenAI Five Arena(竞【jìng】技场),在 2019 年【nián】 4 月【yuè】 9-21 日期间开放给公众【zhòng】进行在线挑【tiāo】战。OpenAI Five 与 3193 支队伍【wǔ】共进行了【le】 7257 局比赛【sài】,胜率为 99.4%。29 支队伍在总共 42 场【chǎng】比赛中【zhōng】击败了【le】 OpenAI Five。

尽【jìn】管【guǎn】人类评估【gū】才是最终【zhōng】目标,但也需要在训练【liàn】期间对智能体进行自动化的评估。OpenAI 的做【zuò】法是以 TrueSKill 评分系统为指标,比【bǐ】较【jiào】一些固【gù】定【dìng】的【de】参照。图 3 给出【chū】了 OpenAI Five 的 TrueSkill 评分随时间【jiān】的变【biàn】化情况。

图 3:OpenAI Five 的 TrueSkill 评分在训练期【qī】间的【de】变化情况

通过 Rerun 验证「手术」的效果

为了验证新提出的「手术」方法所能节省的时间和资源,OpenAI 在【zài】 2019 年 5 月【yuè】 18 日到 2019 年【nián】 6 月 12 日【rì】之间【jiān】训练了另【lìng】一【yī】个智能【néng】体【tǐ】,但仅使用了【le】最终的环境、模型架构等。OpenAI 称这个训练过程为 Rerun,其【qí】没有经历【lì】蜿蜒曲折的游戏规则变化、对【duì】神经【jīng】网络参数【shù】的【de】修改、对超参数的在【zài】线实【shí】验等等。

Rerun 完成了两个月的【de】 150 ± 5 PFlops/s·days 计算量的【de】训练(见图 4)。这个时间【jiān】跨度显著长【zhǎng】于「手术」变化【huà】的频率(每 9-21 周【zhōu】一次)。简【jiǎn】单比【bǐ】较来看,如果在【zài】 20 次重大手术之后的每一次都【dōu】从【cóng】头开【kāi】始训练,则该项目【mù】需要耗时 40 个月,而不是【shì】 10 个月(在实际操作【zuò】时【shí】,一般更倾向于做更少的改变)。手术的另一个【gè】优势是总【zǒng】是会有能【néng】力出色【sè】的【de】智能体可供评估,这能显著收紧实验【yàn】改变的【de】迭代周期。对于 OpenAI Five 的目标(探索全【quán】新【xīn】任务和构【gòu】建全新环【huán】境)而言,持续性的训【xùn】练具有显【xiǎn】著的【de】重大优势。

图 4:OpenAI Five 与 Rerun 的训练过程

当【dāng】然,在环境是【shì】预构建【jiàn】的【de】和一开始就【jiù】被很好理解的环境中,对「手【shǒu】术」的需求会很小。Rerun 消耗的资源【yuán】仅有 OpenAI Five 的 20%:如果【guǒ】能【néng】提前获取最终训练环【huán】境,就没【méi】有必要在不同的游戏版本【běn】上开始训练。

Rerun 的最终性能比 OpenAI Five 更【gèng】好【hǎo】,与 OpenAI Five 最终版对战【zhàn】的胜率超过 98%。OpenAI 团队的想法是希【xī】望验证【zhèng】最终的代码【mǎ】和超【chāo】参数可以【yǐ】重现 OpenAI Five 的【de】性能,因此他们就此停止了训练【liàn】。他们相信 Rerun 还能实现进一步的提升,不仅包括能够继【jì】续提升【shēng】的【de】性能,还有学习率和【hé】视【shì】野【yě】范围等没有最终确定的超【chāo】参【cān】数。

「手术【shù】」过【guò】程让 OpenAI 能【néng】成功地每周修改环境【jìng】。但是,OpenAI Five 最终达【dá】到的水平还是逊于从【cóng】头开始训练的模型所能实现的水【shuǐ】平【píng】。学习【xí】如何在长时间训练的同时又不影响最终性能是一个【gè】很【hěn】有潜【qián】力【lì】的未来研究方【fāng】向。

最后,尽管目前构想的「手术【shù】」还远不够完【wán】美,有了合适的工具,这种方法能【néng】在【zài】无需为重启训练的同【tóng】时【shí】,将特定【dìng】的【de】变化整【zhěng】合进长时间运行【háng】的实验中。

标签: #dotaai地图哪个版本正版