成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用Python寫出Gameboy模擬器,還能訓(xùn)練AI模型:丹麥小哥的大學(xué)項(xiàng)目火了

新聞 人工智能
感覺用 Atari 游戲研究人工智能有點(diǎn)「不夠接地氣」?現(xiàn)在我們可以使用 Gameboy 模擬器了。

感覺用 Atari 游戲研究人工智能有點(diǎn)「不夠接地氣」?現(xiàn)在我們可以使用 Gameboy 模擬器了。

[[322869]]

對于很多 80 后、90 后來說,任天堂 Gameboy 代表了青春的很大一部分。很多我們耳熟能詳?shù)挠螒蚨际亲畛醮钶d在這款 8 位游戲掌機(jī)上的,包括鼎鼎有名的《馬里奧》、《塞爾達(dá)》系列。對于國內(nèi)玩家來說,我們玩得最多的則應(yīng)該是《口袋妖怪》系列了。

用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了

這款游戲機(jī)距離首次發(fā)布已過去了 30 年時(shí)間,不過人們對于它的熱情卻絲毫不減。昨天,一款利用 Python 編寫的 Gameboy 模擬器在社交網(wǎng)絡(luò)上吸引了人們的廣泛關(guān)注。

用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了

爺?shù)那啻夯貋砹耍孔髡咴?Reddit 上發(fā)出的帖子迅速獲得了上千點(diǎn)贊。

該項(xiàng)目的作者之一 Mads Ynddal 宣布,PyBoy 的 1.0 版正式發(fā)布。

用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了

PyBoy 是什么?

簡而言之,它是一個(gè)完全用 Python 從頭開始編寫的 Game Boy 模擬器,并且支持通過 API 編寫腳本。研究者添加了類型定義,使其可以使用 Cython 編譯軟件,從而獲得與用 C 和 C++編寫的模擬器相媲美的性能。

項(xiàng)目鏈接:https://github.com/Baekalfen/PyBoy

特點(diǎn)

PyBoy 被設(shè)計(jì)成通過 Python 訪問,因此支持并鼓勵人們做實(shí)驗(yàn)研究,機(jī)器人和人工智能在作此嘗試。研究者正在構(gòu)建游戲特定的包裝器,目前,包裝器可讓程序員與俄羅斯方塊和超級瑪麗進(jìn)行交互,而不需要對 Game Boy 有深入的了解。可以參考該文檔:https://docs.pyboy.dk。

項(xiàng)目作者還想學(xué)習(xí)和嘗試更多奇特的功能,根據(jù)大學(xué)項(xiàng)目的研究,他們向模擬器添加了倒回功能,也就是說,您可以在任何游戲中倒回時(shí)間。

PyBoy 模擬器架構(gòu)

1990 年,任天堂為 Game Boy 申請了專利。下圖展示了該專利中 CPU、RAM、盒帶和顯示屏之間的集成與連接。

用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了

Game Boy 專利中的架構(gòu)圖。

PyBoy 項(xiàng)目成員基于此在 Python 中為每個(gè)組件制定類(class),從而在「主機(jī)系統(tǒng)」上為「客戶系統(tǒng)」搭建了基礎(chǔ)(系統(tǒng)運(yùn)行 Python)。該客戶系統(tǒng)就是虛擬的 Game Boy 硬件,理論上它能夠運(yùn)行為 Game Boy 編寫的每一個(gè)軟件部分。

下圖展示了 PyBoy 模擬器中所有類及其關(guān)系:

用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了

PyBoy 對強(qiáng)化學(xué)習(xí)的意義以及與其他環(huán)境的比較

這些年來,已有很多人開發(fā)過 Gameboy 模擬器,現(xiàn)在的電腦和手機(jī)上都有可運(yùn)行的工具。為什么要用 Python 來寫一款呢?當(dāng)然是用來訓(xùn)練人工智能的。

[[322871]]

想打游戲?Gameboy 對于現(xiàn)在的人來說恐怕有點(diǎn)「難以上手」。

最接近通用人工智能的方法——強(qiáng)化學(xué)習(xí)

通用人工智能這一概念指的是機(jī)器能夠成功完成任意一件人類能夠做到的智力型任務(wù)。目前我們對 AI 的研究距離這一目標(biāo)還差很遠(yuǎn)的距離,吳恩達(dá)之前就表示過,深度學(xué)習(xí)做的僅是高維的「curve fitting」。

不同于那些依靠預(yù)先收集數(shù)據(jù)(甚至需要大量人工標(biāo)記)的機(jī)器學(xué)習(xí)算法,強(qiáng)化學(xué)習(xí)是一種僅通過環(huán)境獎賞進(jìn)行訓(xùn)練的算法,其工作機(jī)制類似于人體內(nèi)部的多巴胺系統(tǒng)。強(qiáng)化學(xué)習(xí)是目前最接近于人類從經(jīng)驗(yàn)中學(xué)習(xí)這一能力的機(jī)器學(xué)習(xí)算法,尤其適用于智能體需要根據(jù)其所處環(huán)境進(jìn)行決策的情景。

下圖展示了 RL 智能體是如何僅以游戲圖像作為輸入,來學(xué)習(xí)馬里奧控制策略的。

用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了

為什么大量關(guān)于 RL 的研究都在 Atari 上進(jìn)行,而不是其他更實(shí)際的問題?

  • 關(guān)于 RL 的研究使用 Atari 作為基準(zhǔn)的原因主要有如下幾點(diǎn):
  • Atari 環(huán)境能夠讓我們使用相同的算法測試多個(gè)不同的環(huán)境,驗(yàn)證 RL 算法的通用性;
  • 由于輸入僅為游戲圖像,增加了問題的復(fù)雜性;
  • Atari 為研究人員提供了一個(gè)公認(rèn)的測試平臺,能夠較為公平地比較不同算法之間的性能;
  • RL 需要大量的交互數(shù)據(jù)進(jìn)行學(xué)習(xí),在真實(shí)環(huán)境中實(shí)際測試之前,Atari 為算法的初期驗(yàn)證提供了一個(gè)安全、快速、低成本的測試平臺。

下圖為一些 Atari 環(huán)境的展示:

用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了

Atari、PySC2 之類環(huán)境與 PyBoy 對比

上一小節(jié)介紹了在 Atari 環(huán)境中訓(xùn)練 RL 智能體的諸多優(yōu)勢,然而隨著 RL 的發(fā)展,這一相對較簡單的環(huán)境逐漸不再適用于目前新的 RL 研究。不久之前,由 DeepMind 提出的 Agent57 在所有 Atari 環(huán)境中表現(xiàn)均超越了人類玩家平均水平,也預(yù)示著在 Atari 環(huán)境上的 RL 研究逐漸進(jìn)入尾聲。

更困難環(huán)境有諸如 DeepMind 與暴雪合作的 PySC2,需要智能體學(xué)會復(fù)雜的協(xié)同、對抗策略。雖然 AlphaStar 在這一環(huán)境中取得了令人矚目的成果,但仍存在很多亟待解決的問題。以下為 PySC2 環(huán)境示意圖。

用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了

PyBoy 環(huán)境的難度可以說介于 Atari 與 PySC2 之間,它為我們提供了一個(gè)驗(yàn)證 RL 性能的新基準(zhǔn)。在將 RL 應(yīng)用于更復(fù)雜的實(shí)際問題之前,我們可以先在這一難度適中的環(huán)境中進(jìn)行低成本、高效的測試。

就像特斯拉的人工智能和自動駕駛視覺總監(jiān) Andrej Karpathy 說的,「One should always try a BB gun before reaching for the Bazooka.」

Github 介紹

如何安裝?

如果已經(jīng)配置了一個(gè)能夠正常運(yùn)行 Python 的環(huán)境,那么安裝會非常簡單:

  1. 通過軟件包管理器安裝 SDL2(sudo apt install libsdl2-dev 或是 brew install sdl2)
  2. 使用 pip install pyboy 安裝 Pyboy

可以直接從終端 $ pyboy file.rom 使用 PyBoy 或者在 Python 腳本中使用:

  1. from pyboy import PyBoy 
  2. pyboy = PyBoy('ROMs/gamerom.gb')while not pyboy.tick(): 
  3.     pass 

該項(xiàng)目同時(shí)支持 macOS, Raspberry Pi (Raspbian), Linux (Ubuntu), 以及 Windows 10.

PyBoy API 文檔

如果用戶需要創(chuàng)建一個(gè)自己的機(jī)器人或者是 AI,可以在 PyBoy Documentation (https://baekalfen.github.io/PyBoy/index.html) 找到所有用以支持的外部組件,其中各種類及其用法都非常詳細(xì),這里不再一一贅述。(如下圖結(jié)構(gòu)索引)

用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了

簡短示例

PyBoy 可以作為 Python 中的對象加載。所以它可以從另一個(gè)腳本進(jìn)行初始化,并可以由該腳本控制和探測。看一下 gamewrapper_tetris.py 上一個(gè)粗糙的「機(jī)器人」,正在與游戲進(jìn)行交互。當(dāng)然,所有的外部組件都可以在 PyBoy 文檔中找到。

對于一般的 Game Boy 文檔,可以查看 Pan Docs,其中包含了每個(gè)主題的詳細(xì)信息。

以下是從屏幕讀取數(shù)據(jù)的簡短演示,該代碼也可以在 gamewrapper_mario.py 中找到:

  1. import osimport sys 
  2. from pyboy import PyBoy, WindowEvent 
  3. # Makes us able to import PyBoy from the directory below 
  4. file_path = os.path.dirname(os.path.realpath(__file__)) 
  5. sys.path.insert(0, file_path + "/.."
  6. # Check if the ROM is given through argvif len(sys.argv) > 1
  7.     filename = sys.argv[1]else
  8.     print("Usage: python mario_boiler_plate.py [ROM file]"
  9.     exit(1
  10.  
  11. quiet = "--quiet" in sys.argv 
  12. pyboy = PyBoy(filename, window_type="headless" if quiet else "SDL2", window_scale=3, debug=not quiet, game_wrapper=True) 
  13. pyboy.set_emulation_speed(0)assert pyboy.cartridge_title() == "SUPER MARIOLAN" 
  14.  
  15. mario = pyboy.game_wrapper() 
  16. mario.start_game() 
  17. assert mario.score == 0assert mario.lives_left == 2assert mario.time_left == 400assert mario.world == (11)assert mario.fitness == 0 # A built-in fitness score for AI development 
  18. last_fitness = 0print(mario) 
  19.  
  20. pyboy.send_input(WindowEvent.PRESS_ARROW_RIGHT)for _ in range(1000): 
  21.     assert mario.fitness >= last_fitness 
  22.     last_fitness = mario.fitness 
  23.  
  24.     pyboy.tick() 
  25.     if mario.lives_left == 1
  26.         assert last_fitness == 27700assert mario.fitness == 17700 # Loosing a live, means 10.000 points in this fitness scoringprint(mario) 
  27.         breakelse: 
  28.     print("Mario didn't die?"
  29.     exit(2
  30.  
  31. mario.reset_game()assert mario.lives_left == 2 
  32.  
  33. pyboy.stop() 

如果你在加載了 Super Mario Land ROM 的情況下運(yùn)行上述代碼,則將在下面得到圖片和終端輸出。值得注意的是,Mario 的形態(tài)顯示為索引 0,1,16,17。

用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了

用Python写出Gameboy模拟器,还能训练AI模型:丹麦小哥的大学项目火了

作者簡介

該項(xiàng)目的作者 Asger Anders Lund Hansen、Mads Ynddal 和 Troels Ynddal 均來自丹麥。畢業(yè)于丹麥哥本哈根大學(xué)的 Mads Ynddal 表示,事實(shí)上這一 Gameboy 模擬器可以追溯到 2015 年他在大學(xué)期間的項(xiàng)目。

[[322874]]

Gameboy 模擬器的的 1.0 版發(fā)布了,但對于開發(fā)者們來說還有很多事可以去做。項(xiàng)目研發(fā)者表示,目前可以推進(jìn)的方向包括為模擬器加入聲音、彩色、Gameboy 模擬連線,以及更多游戲的封裝,當(dāng)然還有在其之上訓(xùn)練神經(jīng)網(wǎng)絡(luò)的示例。

希望在人們的努力下,Gameboy 中的游戲也能重獲新生。更重要的是,它現(xiàn)在還有了訓(xùn)練人工智能的任務(wù)。

 

責(zé)任編輯:張燕妮 來源: 機(jī)器之心
相關(guān)推薦

2020-05-13 10:28:06

Python 游戲機(jī)編程語言

2022-08-08 09:29:19

AIDeepMind

2024-02-19 08:35:00

2009-09-14 09:59:19

CCNA模擬器介紹CCNA

2022-01-24 15:15:20

丹麥MAKRO經(jīng)濟(jì)模型

2023-12-06 18:09:01

2024-03-11 16:33:26

機(jī)器狗訓(xùn)練

2009-09-04 16:05:08

2013-07-24 16:08:01

Android模擬器Genymotion

2014-11-17 10:34:15

2024-11-14 14:50:00

AI智能體

2022-03-29 14:54:13

數(shù)據(jù)科學(xué)編程開發(fā)

2025-04-01 09:54:09

AI算法大模型AI

2009-08-20 10:55:59

2009-08-07 10:53:24

JUNOS配置

2009-09-01 09:09:12

2019-02-20 11:24:27

Linux 開源操作系統(tǒng)

2013-07-11 15:55:30

Genymotion模擬器

2009-03-09 18:08:26

LinuxEvilvte終端模擬器

2014-06-06 10:32:11

Linux終端模擬器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久精品欧美一区二区三区不卡 | 国产精品自拍一区 | 日韩欧美中文在线 | 81精品国产乱码久久久久久 | 久久久蜜桃一区二区人 | 黄色小视频大全 | 精品亚洲一区二区 | 看一级毛片 | 亚洲精品一区二区三区蜜桃久 | 国内自拍真实伦在线观看 | 亚洲视频二区 | 欧美成年人视频在线观看 | 日韩免费网站 | 日韩精品免费视频 | 99精品一区二区 | 91精品国产日韩91久久久久久 | 亚洲精品一区二区网址 | 日本人做爰大片免费观看一老师 | 成人精品系列 | 天天操夜夜操 | 国产欧美一区二区精品久导航 | 青青草原综合久久大伊人精品 | 国产精品一区在线 | 国产一区免费视频 | 国产一区二区三区 | 欧美精品一区久久 | 日韩av一区二区在线观看 | 在线成人 | 日韩精品中文字幕一区二区三区 | 久久剧场 | 色综合色综合 | 欧美激情视频一区二区三区在线播放 | 久久久久国产精品 | 日本三级做a全过程在线观看 | 99re6在线视频精品免费 | 夜夜操操操 | 日韩高清国产一区在线 | 中国毛片免费 | 日韩二三区 | 成人精品一区二区三区中文字幕 | 国产精品久久久久久久久久久免费看 |