calm textgame
1.0.0
EMNLP 2020 論文《Keep CALM and Explore: Language Models for Action Generation in Text-based Games》的程式碼與資料。
我們的ClubFloyd 資料集( calm/lm_data.zip
) 是從 ClubFloyd 網站抓取的,包含 426 個人類遊戲記錄,涵蓋 590 個不同類型和風格的基於文字的遊戲。
此資料由 223,527 個上下文-操作對組成,格式為[CLS] observation [SEP] action [SEP] next observation [SEP] next action [SEP]
。我們使用[CLS] observation [SEP] action [SEP] next observation [SEP]
作為上下文來訓練語言模型(n-gram,GPT-2)來預測next action [SEP]
,並表明這種動作生成能力泛化與強化學習結合時,可以識別未見過的遊戲並支援遊戲玩法。
pip install torch==1.4 transformers==2.5.1 jericho fasttext wandb importlib_metadata
git clone https://github.com/princeton-nlp/calm-textgame && cd calm-textgame
ln -s ../lm calm && ln -s ../lm drrn
(如果 fasttext 的 pip 安裝失敗,請嘗試此處的建置步驟:https://github.com/facebookresearch/fastText#building-fasttext-for-python)
cd calm
unzip lm_data.zip
python train.py
可以在此下載 GPT-2 和 n-gram 模型的訓練模型權重。
cd ../drrn
python train.py --rom_path ../games/ ${GAME} --lm_path ${PATH_TO_CALM} --lm_type ${gpt_or_ngram}
from lm import GPT2LM
model = GPT2LM ( "model_weights/gpt2" )
print ( model . generate ( "[CLS] observation [SEP] action [SEP] next observation [SEP]" , k = 30 ))
@inproceedings{yao2020calm,
title={Keep CALM and Explore: Language Models for Action Generation in Text-based Games},
author={Yao, Shunyu and Rao, Rohan and Hausknecht, Matthew and Narasimhan, Karthik},
booktitle={Empirical Methods in Natural Language Processing (EMNLP)},
year={2020}
}
感謝杰奎琳託管精彩的 ClubFloyd 網站並允許我們使用!
該程式碼借鑒了 TDQN(對於 RL 部分)和 Huggingface Transformers(對於 CALM 部分)。
如有任何疑問,請聯絡姚舜宇<[email protected]>
。