基于Vizdoom平台、强化学习和自然语言处理开发新的AI算法和环境生成算法。
使得AI代理能够通过新算法在算法随机生成的3D环境中达成NLP处理过的随机生成的任务并通过RL和DeepRL实现模型训练。
使用Python、pytorch、Vizdoom、Navdoom、Slade3、DeepRL-Grounding和一系列相关的lib实现。
由于代理在3D环境中训练消耗的时间过长,单GPU算力不够的关系,只实现了基本功能并没有对项目进行优化,导致毕设论文缺少了关键的evaluation对模型进行进一步的细致性能评估的部分。
基于A3C-LSTM算法更改的AI算法也没有在长时间步的情况下测试其中、长链思考的能力。
python maze.py {prefix}
这将会在generated map indicator文件夹下生成maze_'prefix'MAP01至maze'prefix'_MAP10共10张地图生成用的示意图。
python wad.py {prefix} {'your map`s name}
这将会调用generated map indicator文件夹中的示意图,并将其整合进同一个WAD中,生成一个 'your map's name'.wad 文件。
该WAD中包含了所有根据示意图生成的DOOM引擎可用的wad地图,共1-10关。
然后将wad地图手动移至DeepRL-Grounding-master文件夹的maps文件夹下。
由于时间问题,对生成的wad地图文件采用外部Slade3软件打开的方式查看生成是否正常。 Slade3官网:https://slade.mancubus.net/index.php
python env_test.py
env_test.py首先会检测DeepRL-Grounding-master文件夹中是否有上次训练所留存的模型,文件名为last_trained.pth。
如果有,则调用该预训练模型并继续后续训练。
如果没有,则将从0开始训练一个全新的模型。
训练完成后,env_test.py会将训练过的模型命名为last_trained.pth,并保存到DeepRL-Grounding-master文件夹内。
更改constants.py中的数据可以更改训练难度。
SIZE_THRESHOLD:物品大小阈值。大于阈值则该物品为大,小于阈值则该物品为小。
REWARD_THRESHOLD_DISTANCE:给于奖励的触发距离阈值。代理与物品间的距离小于这个距离,则认为代理获得了该物品,给于对应奖励。'Doom引擎中,通过检测玩家的hitbox与物品碰撞箱是否接触来判定是否捡起物品,可拾取物品的碰撞箱大小通常为20。'
CORRECT_OBJECT_REWARD:奖励值。用于强化学习部分的奖惩机制实现。
WRONG_OBJECT_REWARD:惩罚值。用于强化学习部分的奖惩机制实现。
MAP_SIZE_X, MAP_SIZE_Y:地图XY轴大小。用于地图生成。过大的地图会导致地形变复杂,代理在探索过程中的寻路时间会变长。
其余变量为原项目中的变量,训练过程中并未用到,因此保留并未更改。