用文字生成游戲關(guān)卡自己玩是一種什么樣的體驗(yàn)?
GitHub 今日熱榜項(xiàng)目《GPT 版馬里奧》了解一下~
瞧,你只需在文本框中輸入“多點(diǎn)管道,多點(diǎn)敵人,少點(diǎn)障礙物,elevation 低點(diǎn)”:
點(diǎn)擊“Generate level”,就能獲得自己的馬里奧游戲了:
左邊是玩耍區(qū),按方向鍵和 a、s、d 鍵進(jìn)行控制就能直接玩,右邊則是根據(jù)你的要求生成的整體效果圖。
隨意設(shè)置這幾個選項(xiàng),還能解鎖更多樣式。
比如障礙物少一點(diǎn)的:
又或者是管道少一點(diǎn)、障礙物多一點(diǎn)的:
……
這一波,簡直童年回憶拉滿,媽媽再也不用擔(dān)心我無聊了
不得不提的是,以上你看到的這些效果,都是基于 GPT-2 完成的 ——
大語言模型又立功了~
用 GPT2 生成馬里奧關(guān)卡
該項(xiàng)目背后的模型名叫 MarioGPT。
它是首個基于文本生成游戲關(guān)卡(text2level)的模型,在 GPT2(distilgpt2)上微調(diào)而成,作者來自哥本哈根信息技術(shù)大學(xué)。
其訓(xùn)練素材包括《超級馬里奧兄弟》和《超級馬里奧兄弟:失落的關(guān)卡》,由視頻游戲關(guān)卡語料庫提供。
具體原理如下圖所示:
和 GPT2 一樣,MarioGPT 能夠?qū)ο乱粋€ token 序列進(jìn)行預(yù)測。
其中的關(guān)卡被表示為字符串,它會經(jīng)過一個字節(jié)對編碼器(Byte-Pair Encoding)進(jìn)行 tokenize。
關(guān)卡是被按列進(jìn)行分解的,并展平為單個向量(或者是多個關(guān)卡組成一批向量)。
為了將用戶輸入的信息進(jìn)行合并,作者給 MarioGPT 安排了一個凍結(jié)文本編碼器,它以預(yù)訓(xùn)練的雙向 LLM(BART)形式出現(xiàn)。
與此同時,在這里輸出模型前向傳播的平均隱藏狀態(tài)(hidden state)。
最后,將輸出的狀態(tài)用于 GPT2 架構(gòu)的交叉注意力層,并與傳遞到模型中的實(shí)際關(guān)卡序列進(jìn)行結(jié)合就可以了。
對于 MarioGPT 的效果,作者則表示很驚訝,因?yàn)樗罱K生成的結(jié)果中,有 88% 都是可以用來實(shí)際進(jìn)行闖關(guān)的。
怎么玩?
由于 MarioGPT 已經(jīng)開源,大家也可以自己下載體驗(yàn)一把。
確保電腦安裝了 3.8 + 版本的 python 后,使用 pip 命令或者 git 一下:
“pip install mario-gpt” 或 “git clone git@github.com:shyamsn97 / mario-gpt.git >python setup.py install”
生成關(guān)卡最少只需要下面這些代碼:
作者在項(xiàng)目中也提供了更深入的教程。
要想自己上手試一試生成的關(guān)卡,可以:
(1)去 Huggingface 上的 demo 上玩。它甚至可以不用你輸入文本,直接在每個元素上選擇“多”或者“少”等選項(xiàng)生成任意關(guān)卡。
(2)通過代碼控制:使用 play 和 astar 函數(shù),前提是你電腦安裝了 Java 8+。
感興趣的朋友快去試試吧~目前 MarioGPT 已經(jīng)有超過 500 + 人標(biāo)星了。
論文地址:
https://arxiv.org/abs/2302.05981
項(xiàng)目地址:
https://github.com/shyamsn97/mario-gpt
HF 試玩地址:
https://huggingface.co/spaces/multimodalart/mariogpt
本文來自微信公眾號:量子位 (ID:QbitAI),作者:豐色
廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。