近期在學習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