近期在学习Unity中的机器学习插件ML-Agents,作一些记录,用以简单记录或交流学习。html
先简单说一下机器学习使用的环境场景:高视觉复杂度(Visual Complexity,例如星际争霸、Dota2职业玩家与AI竞技)、高物理复杂度(Physical Complexity,例如模拟两足、四足生物行走,这里Unity ML-Agents官方也有相关例子)、高认知复杂度(Congnitive Complexity,例如AlphaGo)。以上几种场景利用传统算法较难搞,而利用机器学习,会更加容易解决这些问题。python
而ML-Agents(Machine Learning Agents),则是Unity中使用的一款开源机器学习插件,利用该插件,能够实现一些游戏对象的智能操做。例如控制 NPC 行为(采用各类设置, 例如多个 agent 和对抗)、对游戏内部版本进行自动化测试、以及评估不一样游戏设计决策的预发布版本等等。git
ML-Agents中主要有两种学习方法:强化学习(Reinforcement Learning)和模仿学习(Imitation Learning),它们各自特色以下:github
强化学习:经过奖励(Reward)学习;试错;超高速模拟;代理(Agent)在任务中趋向“最优”。官方最开始几个例子都是强化学习。算法
如上图,其中Agent就是在游戏对象上的代理,经过外部环境(这里在训练的时是利用外部PythonAPI,或是使用训练好的TensorFlow模型)根据Agent的行为(Action)来返回激励(状态或是奖励),Agent接收到激励后,再改变本身的行为反馈给外部环境,从而造成闭环学习过程。浏览器
模仿学习:经过示例(demonstration)学习;没有奖励的必要;实时交互;代理(Agent)在任务中趋向“人同样的行为”。网络
AI会借助特定模仿对象的行为学习,实际操做中AI会实时收集老师的示范操做,帮助学习,在实时交互的过程当中,让AI更趋向人的行为。架构
更多ML-Agents的介绍会在以后记录,例如ML-Agents的架构等等。框架
主要下载这么几个东西(附带版本号,近期入手的,因此版本都整最新的搞起【2020.03.08】):机器学习
Unity 2019.2.0f1 (64-bit)。这里用的是Unity2019.2版本,其余版本应该也行,最好2018保底。
Anaconda3 v2019.10。另外我创建的工程中,Python版本是v3.7.6,TensorFlow的版本对应是2.0.1。
下面一一讲解如何对这些进行安装。
CUDA与cuDNN是干啥的,贴网上两段话:“CUDA是NVIDIA推出的CUDA运算平台的工具集,CUDA提供了一个强大的开发环境,用于开发高性能的GPU加速应用。经过CUDA,你能开发、优化和部署你的应用在多种平台,例如GPU加速嵌入式系统、桌面工做站,企业数据中心,云平台和HPC超级计算机。”、“cuDNN专门针对深度神经网络框架设计的一套GPU计算加速方案。全世界的深度学习研究者和框架开发者都使用CUDNN来加强GPU计算性能。”这里其实不太清楚对A卡是咋适配的,因此我默认使用的都是N卡。。。
简而言之,这两个东西就是给显卡配置环境的,让你的显卡具备机器计算的环境。话很少说,直接开始:
地址:https://developer.nvidia.com/cuda-downloads
如今点进去应该直接就是10.2版本的下载,不是的话点击“Legacy Releases”找,也能够直接下载最新的试试看。我是Windows系统,所以以Windows为例(别的系统。。仍是本身再找找有没有别的配置方案)。
点击以后出现以下画面,能够照个人选。
这里面Version是选系统的版本。Installer Type就是选择安装类型,若是选择exe(local),那就是要下载CUDA完整包,前面的exe(network)会利用官方的下载器下载。两个均可以试试,看哪一个快,我是用下载器下载比较快。
注意:开始安装CUDA前,须要关闭任何正在运行的Unity和Visual Studio程序。
若是下载network类型的话,下载好后直接打开,解压地址随意选择,点OK。出现以下画面。
注意:这里会检查系统的兼容性,若是不兼容的话,它会有Warning的提示,要是没有直接显示赞成NVIDIA软件许可协议的话,就要注意了,这里应该是CUDA的版本与你的显卡不兼容,因此能够试着换个低版本的CUDA下载安装。
若是CUDA版本与显卡版本匹配的话直接显示许可协议赞成,以下图。
后面的能够都默认,一路“下一步”,装完就OK。
地址:https://developer.nvidia.com/cudnn
在页面中选择“Download cuDNN”。
点击后,会出现如下画面,这里咱们须要有一个NVIDIA的帐号,有的话直接登陆,没有的话花2分钟注册一个登陆便可。
我这里直接登陆,出现的画面中点击“I Agree to the Terms of the……”。
这里咱们选择和以前CUDA对应的版原本下载,以前咱们下载的是CUDA 10.2,所以直接选择第一个就行。打开选项后选择对应系统版本进行下载,咱们这里选择Win10。
下载以后是一个压缩包,以下。
解压以后,将解压文件中的“bin”、“include”、“lib”三个文件夹覆盖到以前CUDA安装的路径下,若是以前CUDA安装时未改路径的话,应该是这个路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2
至此,CUDA和cuDNN安装完毕,下面还要对“环境变量”进行配置。
在开始菜单中,搜索“envir”,总之进入“编辑系统环境变量”。
点击“环境变量”。
而后在“系统变量”中点击“新建”,按下图输入。
注意,上面是用户的环境变量,下面是系统的环境变量,我以前没注意,都把这些变量加到上面去了,不过应该只要用本身的用户登陆都行,你们能够把变量加到下面去。
而后还要在在系统变量的“Path”中加入两个路径。
以上就是CUDA和cuDNN的环境变量配置,以后装AnaConda3还须要进行环境变量配置,以后会有写到。
地址:https://www.anaconda.com/distribution/
进入网站后,找到下面的截图,按本身的系统须要下载。
下载好后,进行安装。
一路下一步就行,最好选择默认路径进行安装,里面的选项选不选也随意,而后Install就行。
这一步应该不是必须的,但以防万一,仍是配置一下。仍是进入“编辑系统环境变量”,在系统变量(或用户变量)的Path里新建如下四个地址(这里的地址是根据以前Anaconda安装路径来设定的,我这里的路径是默认路径):
下载地址:https://github.com/Unity-Technologies/ml-agents
我下的是master分支上的,也就是2020年3月5号左右,版本是0.15.0。
固然,在git上下载太慢了,并且下下来可能压缩包还包含错误,坑的呀批。因此建议利用码云下载,快捷方便,具体能够看下面网址的教程:
http://www.javashuo.com/article/p-wyhvodov-w.html
下载好后在任意地方解压,以下。
以上源码下载好后,以做备用,下面先配置Anaconda。
在用Anaconda建立环境时,会自动下载相应的依赖库,包括python、tensorflow、pip、wheel等等。虽然我也不知道这些是干啥的。。。可是默认用国外的地址下载慢的要死,并且颇有可能在建立环境时失败!
因此须要换下载这些库的地址,方法不少,网上不少是敲命令行,我这里直接修改配置文件来换源。找到C:\Users\ <你的用户名> 文件下,有一个名为“.condarc”文件,则是Anaconda的配置文件,打开进行编辑。
能够直接按个人进行配置,我配置的是清华的镜像源,里面好像还乱入了个中科大的。
https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
而后保存,进行下面的步骤。
Anaconda的环境建立能够用Anaconda Prompt,也就是命令行来创建,也能够利用Anaconda Nvigator来建立,后者主要是可视化的建立过程。这玩意其实就是搭建训练平台,以后Unity中的项目训练经过socket和Anaconda中你搭建好的mlagents环境进行通讯,实现训练过程。
首先找到“Anaconda Navigator”运行。
运行后找到“Environments”,新装的里面只有一个“base(root)”,我这里以前已经创建好了一个ML_Agents,不用管它,咱们新建一个,点击“Create”。以下图:
点击后,出现以下对话框,其中Name随意写,Python版本就选3.7。
而后创建,会等一下子,能够看到右下角有进度条不停滑动,若是这里滑动半天,最后提示失败,那就说明是由于依赖库没有下载下来,那你就须要参考前面的“Anaconda换源”来换个镜像地址试试看。
这里若是成功的话,咱们进行下一步。
创建成功后,例如我创建的环境叫“EnvirExample”,而后点击三角符号,“Open Terminal”,这个时候咱们就进入命令台模式了,以后都须要在这里输入命令进行操做。
到这里后,咱们cd到以前下好ml-agents源码解压的地方,例如我这里是桌面地址,则输入以下命令:cd /d C:\Users\Xu\Desktop\ml-agents ,而后回车。
而后,下面须要恢复ml-agents须要的库,这里须要装两个文件夹里的东西,分别是ml-agents-envs和ml-agents。
所以,下一步咱们在命令行里先敲: pip install -e ml-agents-envs 。以下:
按理来讲,这里会进行就会自动下载依赖文件了,结果我在这里卡了很久,可能会出现如下错误:
整了半天,还有各类别的错误出现,最后总结出来的缘由是,由于镜像站太慢或者是没有相对应的库,所以找到了解决方案:
http://www.manongjc.com/detail/8-newslizewxdvgby.html
上面的地址是解决方法,也能够不用看,在这一步,咱们只须要修改命令为:
pip install -e ml-agents-envs -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
这样的话,就能够经过豆瓣镜像下载库了,这里大坑。成功后的样子:
而后,用一样的方法下载ml-agents文件架下的库,命令以下:
pip install -e ml-agents -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
若成功则显示以下:
上面的样子可能长得不同,总之若是安装成功,那命令行里确定没有相似黄色、红色的字体,就说明这两个文件夹中的环境配置成功了!最麻烦的配置已通过去了。下面咱们就能够开始使用了!!激动激动~
咱们这里直接用一个ml-agents官方的实例来实验一下,先打开Unity,打开官方的项目,官方项目就在ml-agents源码的“Project”文件夹中,以下图:
我用2019直接打开,会提示我源工程版本较老,自动升级一下就行。
打开项目后,咱们在Project->Assets->ML-Agents->Examples->3DBall->Scenes->中找到3DBall场景,以下:
这里咱们能够直接运行,能够看到12个小平台努力不让球掉落,这里每一个平台的Agent已经有官方训练好的Model了,后缀名为.nn,以下图:
咱们用ml-agents中的强化学习时,其实就是预先没有这个训练模型(即这个.nn文件),咱们本身须要训练一个出来。
Unity先中止运行。
打开咱们以前在Anaconda中的控制台,以前安装完环境应该还没关,固然要是关了从新打开的话,记的仍是要选择咱们建立的环境,个人是“EnvirExample”,而后打开Terminal。同时还要cd到ml-agents的目录去,个人在桌面,则输入:cd /d C:\Users\Xu\Desktop\ml-agents 。
总之须要知足前面括号里是你建立的环境,后面是ml-agents源码目录。
而后输入如下命令,准备开始训练:
mlagents-learn config\trainer_config.yaml --run-id=test01 --train
这里第二个“config\trainer_config.yaml”就是源文件中对这次训练的配置文件。
出现画面后,切换到Unity上开始运行项目。就能够进行训练啦~
这个例子应该会训练500000步,训练完后,会输出相应的模型文件。
这里就是训练出的模型,能够替换Unity中的模型文件,试试看本身训练出的数据。
在控制台里,还能够输入一下命令查看训练图:
tensorboard --logdir=summaries
而后在浏览器里复制地址,我这里的是http://localhost:6006/。打开以后就能够看到训练统计数据了~
至此,ml-agents的配置和初运行就大功告成啦~!
引用:https://www.bilibili.com/video/av49257917?from=search&seid=5553688680482591789