##EasyReadMore##

2009年12月13日 星期日

基於神經網絡的人機對抗人工智能系統 part2








基於神經網絡的人機對抗人工智能系統 part2

文章網址:http://www.playdota.com/forums/2597/22522-20110-31070-32463-32593-32476-30340-20154-26426-23545-25239-20154-24037-26234-33021-31995-32479-65288-29702-35770-65289-a/


第四章 數學算法的實際應用


4.1 確定三大系統的參數和意義
三大系統為巡查系統、控制系統和指令中心。每個系統都有傳入、傳出兩類參數。

4.1.1 巡查系統
巡查系統使用完全工程學方法編寫。
巡查系統的參數有:
1)信號轉化方面
傳入參數:
①內容:己方角色總數量及棋子總數量、每個己方角色當前金錢資源、每個己方棋子當前的實力數據(生命力、戰 鬥力、已學技能、已購買物品),以及所處位置
敵方角色總數量及棋子總數量、每個敵方棋子當前的實力數據(生命力、戰鬥力、已學技能、已購買物品),以及 出現在己方棋子視野中的每個敵方棋子的位置
②類型:視覺信號
③描述:對於人類角色,上述信號都是通過人類的雙眼,以視覺圖像方式傳入大腦。
傳出參數:
①內容:內存中的數據
②類型:實數組
③描述:上述各項信號雖然以視覺圖像表達出來,通過人類的雙眼傳入大腦,但這些信號在電腦內存中都有對應的 內存地址。信號轉化實際上,是直接將這些信號對應的內存中的數據,傳送給指令中心。
2)行為限制方面
傳入參數:
①內容:每個電腦角色通過控制系統下達給棋子的指令
②類型:句柄——發佈指令的電腦角色,句柄——執行指令的棋子,整數——指令本身,句柄——目標單位或目標 地點
③描述:巡查系統檢查電腦角色下達的指令,將其與內置的固定規則進行運算、比較
傳出參數:
①內容:「允許」或「否決」
②類型:布爾值
③描述:如果下達給棋子的指令沒有違反最根本的規則,就允許該指令;反之否決該指令,並給電腦角色一個「警 告」懲罰,讓其重新調整角色。

4.1.2 控制系統
控制系統也使用完全工程學方法編寫。
控制系統的參數有:
傳入參數:
①內容:電腦角色通過指令中心實施評估後,下達的指令
②類型:句柄——發佈指令的電腦角色,句柄——執行指令的棋子,整數——指令本身,句柄——目標單位或目標 地點
③描述:棋子接收到指令後會立刻響應。
傳出參數:
①內容:棋子執行指令的結果
②類型:浮點數——指令完成度
③描述:用於反饋給命令中心,這次下達/響應指令是否成功。

4.1.3 命令中心
命令中心的參數有:
1)知己知彼方面
該功能使用完全工程學方法編寫。
傳入參數:
①內容:經過巡查系統轉化過的各種信號
②類型:實數組
③描述:巡查系統為電腦角色提供知覺
傳出參數:
①內容:己方角色及其控制的棋子的整體實力、敵方角色及其控制的棋子的整體實力
②類型:實數組
③描述:命令中心接收到巡查系統傳來的數據後,經過相關計算,生成敵我雙方目前實力的評估報告(一系列實數 ),儲存於電腦角色的記憶數組中。
2)探索活動區域方面
該功能使用半工程學、半模擬法——前饋網絡編寫。
傳入參數:
①內容:經過巡查系統轉化過的各種信號
②類型:實數組
③描述:傳入的信號主要是己方棋子的位置分佈,和敵方棋子的活動記錄。因為敵方棋子不可見,只有進入己方棋 子的視線內才會被察覺,所以命令中心會根據傳入參數,預測敵人出現的地點。
傳出參數:
①內容:三維坐標,及坐標的重要程度
②類型:實數組
③描述:整個活動範圍是三維的空間,用三個實數變量x、y、z表示一個三維坐標(x,y,z)。傳出的三維 坐標表示目的地,目的地所處的地域不同,重要性也不同。重要性是固定的,但命令中心會根據目的地的重要程度 ,自行決定是否派棋子去探索。
3)提升棋子實力方面
該功能使用半工程學方法、半模擬法編寫。
傳入參數:
①內容:經過巡查系統轉化過的各種信號
②類型:實數組
③描述:傳入的信號主要是跟電腦角色自己有關的數據,為自身當前擁有的金錢資源(用於購買物品),和棋子當 前的實力(為了學習技能)。
傳出參數:
①內容:技能的編號和物品的編號
②類型:整數
③描述:為了實現「有效提升」棋子實力這一目的,需要先掌握電腦角色和棋子當前的數據(一系列實數),然後 輸進一個訓練好的神經網絡系統。神經網絡識別這一系列數據後,將迅速並準確地給出對應的具體實 施方案。
4)實時評估方面
該功能使用模擬法——競爭網絡編寫。
傳入參數:
①內容:經過巡查系統轉化過的各種信號
②類型:實數組
③描述:電腦角色的棋子遇到敵方單個棋子時,需要迅速評估自己棋子和敵方棋子的實力;如果己方數個棋子同時 遇見敵方數個棋子時,不僅需要評估每一個棋子的實力,還得考慮敵我雙方棋子之間,互相配合的能力(換句話講 ,就是計謀)
傳出參數:
①內容:電腦角色對它的棋子發佈的指令
②類型:句柄——發佈指令的電腦角色,句柄——執行指令的棋子,整數——指令本身,句柄——目標單位或目標 地點
③描述:電腦角色經過實時評估後,就會做出決策。決策的內容就是一系列指令,控制棋子做出一系列能夠擊敗敵 方棋子,或保全己方棋子的行動。行動包括直接上前攻擊、迂迴、誘敵深入、埋伏落單棋子、輔助己方棋子,或者 撤退、掩護友方棋子等等。


4.2 三大系統的具體實現思路

4.2.1 巡查系統
1)信號轉化功能
由於各種信息的視覺信號,都與電腦內存中具體的數據相對應,所以,只要將這種對應關係整理出來,列成一個可 查詢的表格,就能實現信號轉化功能。

輸入待轉化信號 → 查詢表格 → 得到輸出結果

2)行為限制功能
違反規則的行為共有下列幾種:

使用作弊工具,非法修改角色的金錢資源 → 非法改變金錢
使用作弊工具,非法修改棋子的實力 → 非法提升實力
以任何方式利用DOTA自身的漏洞 → 利用BUG
利用任何手段,直接偵測到敵方棋子的位置等不可見的數據 → 非法偵察情報
在附近沒有敵方棋子防守的情況下,偷襲敵方建築物 → 非法進攻
一方陣營的角色為它們棋子購買的特殊物品的總數量超標 → 違反物品限制

這些違規行為都可以通過多組數據描述。
一旦一個電腦角色發出的指令,其具體數據通過逐條比較後,與違規行為數據組中的數據整體相似,就可以認定這 個指令違規。

4.2.2 控制系統
為了實現指令的發佈與響應功能,這裡構造一個指令隊列系統。
構造方式如下:
1)系統為每一個電腦角色的棋子分配一個指令隊列
2)每個指令隊列中包含有編號1至編號10,一共10個(總數可變)指令單元
3)每個指令單元均有6項數據,分別是指令單元的指令、指令的目標單位、指令的目標地點、指令的計時器、指 令的描述、指令的描述註解。
4)指令單元每項數據的作用:

數據名稱 描述
指令 表示該棋子需要執行的指令
目標單位 表示該單位需要對誰執行指令
目標地點 表示該單位需要在哪裡執行指令
計時器 表示該單位執行該指令最多花費多長時間
描述 表示該指令的行為描述,影響後續實時評估結果
描述註解 表示其他必要的描述,影響後續實時評估結果
完成度 表示這個指令完成度如何
表 2
5)指令隊列中若存在指令,棋子將按編號從1至指令總數量(最大數量10),依次執行指令單元中 的指令。
6)電腦角色對指令隊列進行的操作,共有如下幾種:
①下達一個立刻執行指令
下達的指令會直接替換編號1的指令單元中的指令,無論棋子剛才在做什麼,現在都會立刻執行新下 達的指令。
②在指定編號的指令單元中下達一個非立刻執行指令,或在指令隊列最後附加一個非立刻執行的指令
這可以讓棋子擁有做出一系列指定動作(即使用計謀)的能力。
③清除指令隊列中所有指令
這可以讓棋子處於原地待命狀態。
④計算指令完成程度
如果指令根本沒被執行,則輸出0,否則輸出完成度數值(百分比)
7)指令隊列原理
發佈指令給事物(電腦角色發佈指令給隊列)——事物接收指令並執行(棋子接收到指令,並執行),這一方式模 擬了人類「思考」——「行動」的過程。

4.2.3 命令中心
1)知己知彼功能
一個角色的整體實力包括其擁有的金錢資源,棋子本身實力(生命力、戰鬥力)和技能、物品對棋子本身實力的提 升。
由於DOTA的設定,一個角色和它控制的棋子自身各種數據一旦確定,就一定會有一個確定的整體 實力數值。
設一個角色金錢資源為M,棋子本身生命力為H,棋子本身戰鬥力為A,棋子已經學習的技能對生命力、戰鬥力的 提升為S、I,棋子已經購買的技能對生命力、戰鬥力的提升為S'、I',整體實力為T。
則會有一個線性函數F,使得T=F(M,H,A,S,I,S',I')。
對於每一個角色(無論敵我),由於它各種數值(除了坐標數值) 雖然會改變,但在一定時間範圍內(數秒到數分鐘)可以保持穩定不突變(就算現在突然改變了,但也再會保持一 定時間,才再次改變),因此在這段穩定期內,可以使用函數F求出整體實力T。
2)探索活動區域功能
①半工程學方面,由於整個活動區域內各項地形數值不會改變(地面不會在這裡凸起一塊,或凹進一塊等),因此 一個地域內的地形的重要性(是否利於防守、是否毫無戰略價值等),在一開始就被設置好了,不會 改變。
所以目標地點所處的地域,重要性也能通過一個可查詢表格實現。

輸入目標地點坐標 → 查詢表格 → 得到輸出結果

而目標地點坐標,可以通過對敵方棋子活動記錄預測(敵人最後出現在哪裡,就嘗試去哪裡探索),或者反向查詢 表格(輸入重要性,得到目標地點)來求出。
②半模擬法方面,由於電腦角色只需要求出自身、敵方每個未露面棋子整體實力,然後通過簡單權重計算,算出棋 子到達未探索的目的地時,萬一遇見敵方棋子時,是否敵得過即可。
所以構建一個只有一個神經元的系統。
神經元有五個輸入,為自身棋子的整體實力,與敵方每個未露面棋子的整體實力的大小比較。如果自身棋子的整體 實力比一個敵方棋子強大,對應的輸入就為1,否則為0.
神經元依次把五個輸入與其對應的權重(電腦角色對於每個敵方角色的實力預估)相乘,並求積的總和。如果最終 激勵值超過神經元的閾值,則去目標地點探索承擔的風險可以接受;否則表示去目標地點探索承擔的風險太大,不 可接受。
3)提升棋子實力功能
提升棋子實力主要通過兩點,技能的(多選一)學習和物品的(多選一)購買。
技能的學習:
技能可以提升棋子的生命力或戰鬥力。
每個棋子每一等級可以學習一個技能(從自身技能庫中五選一),由於一個技能不會同時提升生命力和戰鬥力,因 此需要評估所有類別的技能的各項數據,找出學習哪一個技能後,棋子整體實力提升最明顯。
對於一些棋子的部分技能,存在一些常識性學習規則,這些規則是人類角色通過無數次試驗,得到的常識。如果一 個棋子技能學習部分存在常識性學習規則,技能將優先按照該規則以固定的方式學習技能。
如果一個棋子沒有或只有很少常識性學習規則,那麼就需要使用一個通用技能學習神經網絡,通過該網絡求最優解 。
由於通用技能學習神經網絡需要做到五選一,存在競爭關係,因此需要使用競爭網絡。

構建一個只有輸入層和競爭層的雙層競爭網絡。

輸入層由處理單元構成,處理單元的作用是將輸入的,可以完整描述一個棋子自身實力的所有數據,轉化為一個輸 入模式。對於每一個棋子,輸入模式是通用的,但因為每個技能都不相同,所以競爭單元也不相同。
競爭層由五個競爭單元組成。每個競爭神經單元都與輸入層的處理單元相連接,如果一個競爭單元輸入的加權和最 大,則該競爭單元對應的技能成為優勝者,被棋子學習。
由於技能的複雜性,這個競爭網絡必須由人工監督訓練。
物品的購買:
物品也可以提升棋子的生命力或戰鬥力。
物品總量眾多,而且物品的購買不受棋子種類限制(就是說對於每一個棋子,它能購買的物品都是相同的)。物品 的購買僅僅受限於電腦角色的金錢資源,和棋子所攜帶物品總量(一個棋子最多可以攜帶6個物品) 。
電腦角色在為棋子購買物品時,不可能把每一個物品都買一遍,因此需要評估所有類別的物品的各項數據,找出購 買哪一個物品後,棋子整體實力提升最明顯。
對於一些棋子的部分物品,也存在一些常識性購買規則,這些規則是人類角色通過無數次試驗,得到的常識。如果 一個棋子物品購買部分存在常識性購買規則,物品將優先按照該規則以固定的方式購買。
如果一個棋子沒有或只有很少常識性學習規則,那麼就需要使用一個通用物品購買神經網絡,通過該網絡求最優解 。
由於通用物品購買神經網絡需要做到多選一,存在競爭關係,因此需要使用競爭網絡。

構建一個只有輸入層和競爭層的雙層競爭網絡。

輸入層由處理單元構成,處理單元的作用是將輸入的,可以完整描述一個棋子自身實力的所有數據,轉化為一個輸 入模式。對於每一個棋子,輸入模式都通用,競爭單元也通用的。無論棋子是什麼種類的,只要它的輸入模式與已 知的符合,就可以購買對應的物品。
競爭層由多個競爭單元組成,數量取決與物品總數。每個競爭神經單元都與輸入層的處理單元相連接,如果一個競 爭單元輸入的加權和最大,則該競爭單元對應的物品成為優勝者,被棋子購買。
由於物品的複雜性,這個競爭網絡必須也由人工監督訓練。
4)實時評估功能
發生遭遇戰時,巡查系統會對每個電腦角色進行通告,並為其提供戰況情報與數據。
對敵我雙方臨近戰場棋子整體實力的評估,是通過一個神經元進行的。這個神經元構造與實現「探索活動區域」功 能的神經元相似,只不過目的地坐標被自動設定為戰場。
這個評估是告訴一個電腦角色,加入戰鬥有多大風險,多大的勝算。電腦角色將評估結果於自身的性格值結合,最 後決定是否加入戰鬥。

電腦角色謀略的使用,是靠一個競爭網絡實現的。

這個競爭網絡的處理單元,將戰場的地形、坐標、範圍,以及參與戰鬥的敵我雙方的棋子整體實力等詳細數據,轉 化成一個輸入模式。對於每一個棋子,輸入模式都通用,競爭單元也通用。無論棋子是什麼種類的,只要它的輸入 模式與已知的符合,控制它的電腦角色就會做出相應的一系列動作(即實施謀略)。
競爭層有多個競爭單元組成,數量取決與一個角色可以做出的謀略或配合的總數。對於電腦角色,它們一開始並不 瞭解,也不能識別不同輸入模式對應的行為的意義。所以這個競爭網絡必須由監督人工訓練,由人告訴電腦角色, 什麼樣的行為是迂迴、是誘敵深入或埋伏落單敵方棋子等,以及什麼樣的輸入模式對應什麼樣的行為 ,等等。


第五章 總結
上述全部內容就是一個DOTA人工智能系統的構建理論和實現思路。
理論的核心內容是通過三大系統,即巡查系統、控制系統和命令中心,來實現一個人工智能的完整功 能。
1)巡查系統就像是個裁判,它為電腦角色提供知覺能力,同時每時每刻監督電腦角色的行為,如果發現電腦角色 違規,就會警告該角色並責令改正。
2)控制系統是一個帶有反饋環節的控制手段,它為電腦角色提供對棋子的絕對控制權力,使電腦角色能夠有效地 將思維通過棋子的行為表現出來。
3)命令中心類似於人類的大腦,它為電腦角色提供思維能力,電腦角色通過這個系統產生意識,會對感知環境, 並對對各種複雜狀況做出反應。
整個人工智能實際製作起來的難點,一是理論的建立,二是算法的設計,而算法的設計又依賴於現有 數據的輸入。
理論為實際算法和程序代碼提供思路,反過來實際算法和程序代碼會通過自身的設計、執行來支持理 論的正確性。
編寫一個DOTA人工智能系統雖然是非常費時的工作,但它由於使用了人工神經網絡系統,因此不論是功能方面 、排錯維護方面,還是算法複雜度、實際代碼所需量,都比完全工程學方法編寫的人工智能系統強大 。
目前,整個DOTA AI的程序代碼已經實現了第一大系統巡查系統的「信號轉化」功能,和第二大系統控制系統的全部功能「指令的 發佈/響應與執行結果反饋」。
所有系統中,以第三大系統命令中心「實施評估」功能最為重要。可以說一切其他的智能,都建立在電腦角色正確 識別當前環境、當前棋子實力等數據的基礎上。
要完整、精確地實現第第三大系統的功能,需要以各種數據錄入完畢、各個算法設計完畢、所有神經網絡正確訓練 完畢為前提。
目前整個DOTA AI的製作正在進行的階段,就是數據的錄入。只有將所有必要的數據錄入完畢後,所有依賴於數據完整的後續功 能(算法設計、神經網絡訓練)才有實現的可能。
總體來說,新版人工智能系統編程已經完成了40%,進度快速增長中。這個全新的,與舊版有著本質不同的人工 智能,預計完成時間——2009年年底。


參考文獻
[1]Mat Buckland[美].遊戲編程中的人工智能技術(AI Techniques for Game Programming).清華大學出版社. 2006.5
[2]JASS使用教程




基於神經網絡的人機對抗人工智能系統 part1






基於神經網絡的人機對抗人工智能系統 part1

文章網址:http://www.playdota.com/forums/2597/22522-20110-31070-32463-32593-32476-30340-20154-26426-23545-25239-20154-24037-26234-33021-31995-32479-65288-29702-35770-65289-a/

Harreke

摘要
人工智能是一門科學名稱。自電子計算機發明後不久,人工智能學科即宣佈創立,其目的就是要模擬人類的智力活 動機制來改進計算機的軟件硬件構成,使他們掌握一種或多種人的智能,以便在各種領域內有效替代人的腦力勞動 ,特別是解決用傳統軟硬件方法難以解決的問題,如模式識別,複雜的控制行為或對海量的數據進行 實時評估等。
所謂人工智能,就是由人工建立的硬件或軟件系統的智能,是無生命系統的智能。智能是人類智力活動的能力,是 一個抽像的概念。一個軟件或硬件系統是否有智能,只能根據它所表現出來的行為是否和人類某些行為相類似來做 判斷。
人工智能在計算機上的實現,有兩種不同的方式。一種是採用傳統的編程技術,使系統呈現智能的效果,而不考慮 所用方法是否與人或生物機體所用的方法相同。這種方法稱為工程學方法,它的編程方式雖然簡單,智能效果顯著 ,可是算法和程序一旦固定下來,智能就很難再進一步提高。另一種是模擬法,它不僅要看智能效果,還要求實現 方法和人類或生物機體所用的方法相同或類似。人工神經網絡是模擬人類或生物大腦中神經元的活動方式,屬於模 擬法。
人工神經網絡入門難度大,編程者需要為每一個對像設置一個智能系統來進行控制,新設置好的智能系統,雖然一 開始什麼都不懂,但它擁有學習的能力,可以通過學習,不斷提升智能,不斷適應環境、應付各種情況。通常來講 ,使用人工神經網絡雖然編程複雜,但編寫完成後的維護工作,將比使用其他方式編程後的維護更加 省力。
本文采用人工神經網絡構建一個完整的人工智能系統,並將該人工神經網絡理論應用於電腦領域的項 目DOTA。

關鍵詞:人機對抗,神經網絡,人工智能, DOTA

目錄
第一章 神經網絡系統概述
1.1 生物學神經網絡
1.2 人工神經網絡
1.2.1 人工神經網絡系統概念
1.2.2 人工神經網絡系統的組成
1.3 神經網絡的訓練
1.4 相關數學知識
1.4.1 人工神經元輸出的計算
1.4.2 反向傳播方法
第二章 人工神經網絡應用的設計
2.1 應用設計
2.2 DOTA簡介
2.2.1 DOTA概念
2.2.2 DOTA規則
2.2.3 DOTA現狀
2.2.3 DOTA AI概念
2.2.4 現有DOTA AI弊端
2.3 新版DOTA AI的理論設計
2.3.1 巡查系統
2.3.2 控制系統
2.3.3 指令中心
第四章 數學算法的實際應用
4.1 確定三大系統的參數和意義
4.1.1 巡查系統
4.1.2 控制系統
4.1.3 命令中心
4.2 三大系統的具體實現思路
4.2.1 巡查系統
4.2.2 控制系統
4.2.3 命令中心
第五章 總結
參考文獻
附錄


第一章 神經網絡系統概述


1.1 生物學神經網絡

人工神經網絡系統是模擬人思維的一種方式,仿照生物的大腦來工作。為了幫助理解,首先介紹一下生物大腦的工 作方式。
生物的大腦擁有稱為皮層的組織。大腦分為兩層:灰色的外層和白色的內層。灰色層只有幾毫米厚,但其中卻緊密 地分佈著數十億個被稱為神經元的微小細胞;白色層佔據了皮層組織的絕大部分空間,是由無數神經元相互連接組 成的。
神經元的構成是獨特的。每個神經元都長有軸突,用來將信號傳遞給其他神經元。
神經元由一個細胞體、樹突和一根軸突組成。樹突由細胞體向各個方向長出,用來接收信號;軸突也有很多分支, 通過分支的末梢和其他神經元的樹突相接觸,形成突觸。一個神經元是通過軸突和突出把產生的信號送至其他神經 元。每個神經元通過它的樹突,與大約1萬個其他神經元連接。
神經元利用電化學過程交換信號。輸入信號來自另一些神經元。這些神經元的末梢和本神經元的樹突相遇形成突觸 ,信號就從樹突上的突觸進入本細胞。雖然信號在大腦中的傳輸過程極其複雜,但也可以把它看做與計算機一樣, 利用二進制的0與1進行操作。
每個神經元只有兩種狀態:興奮和不興奮。神經元把所有從樹突的突觸上接受來的激勵信號,通過我們目前還未知 的的方式相加。如果相加所得結果超過某種閾值,則該神經元就會被激勵,變得興奮,同時產生一個激勵信號,通 過它軸突的突觸,把產生的信號傳給其他神經元;如果相加所得結果沒有超過閾值,該神經元就不會 被激勵。
雖然單個神經元的結構極其簡單,功能有限,頻率大約只有100Hz,但正因為有數量巨大的神經元,相互連接 構成一個龐大的並行處理網絡,所以整個神經網絡系統具備難以置信的能力:
1)能實現無監督的學習
功能完整的神經網絡系統可以實現自行學習,而不需要導師的監督教導。如果一個神經元在一段時間內受到較高頻 率的刺激,則它和輸入信號的神經元之間的連接強度就會在一定程度上改變,使得該神經元下一次受到刺激時,更 容易興奮。
2)對損傷有冗余性
神經網絡系統即使受到了損傷,它依然能執行複雜的工作。
3)處理信息的效率極高。神經元之間的信息傳遞速度,與計算機CPU中數據傳遞的速度相比,是非常非常慢的 。但因為神經網絡系統採取了並行處理方式,使得整個系統可以同時處理巨量的數據,因此整體處理速度得到極大 的提升。
4)善于歸納推廣
神經網絡系統和計算機不同,前者極其擅長模式識別,並能根據已經掌握的信息進行歸納推廣。比如,一個人可以 閱讀另一個人手寫的文字,即使這前者以前從未見過後者寫的東西。
5)擁有意識
這是神經學家和人工智能研究者至今仍在商討的話題。人擁有意識,這是無可辯駁的,但除了人以外,擁有完整神 經網絡系統的其他事物,是否也擁有意識?
綜上所述,一個人工的神經網絡系統,所要完成的任務,就是在現有計算機規模的約束下,盡可能地模擬生物學大 腦的這種並行處理機制,並且在其運作時,能夠顯示出許多與生物學大腦相類似的特性。


1.2 人工神經網絡

1.2.1 人工神經網絡系統概念
生物學大腦中的神經網絡系統是由很多神經元組成的,模擬大腦的人工神經網絡系統也是由很多稱為人工神經元的 單元組成。
人工神經元其實就是生物學神經元的簡化版,但卻是採用電子方式來模擬的。一個人工神經網絡系統裡使用的人工 神經元數量,差別可以非常大,從簡單的數個,到數千個,這完全取決與要用人工神經網絡系統要實 現的功能。
下面是一個人工神經元的結構圖:
w稱作權重,是浮點數。進入人工神經元的每一個信號都會與一個權重相聯繫。而正是有這些權重,一個人工神經 元才會有活躍性,才會對輸入的信號做出判斷。
假設所有權重w的取值為-1到1之間的一個隨機小數。因為權重有正有負,所以能夠影響與它有關聯的信號輸入。如果權重為正,就會對相 關聯的信號輸入起激發作用;如果權重為負,就會對相關聯的信號輸入起抑製作用。
一個人工神經元會把所有的輸入信號,與其對應的權重分別相乘,然後把相乘的結果作為給神經元核的輸入。神經 元核把這些經過權重調整過的輸入全部加起來,形成最終激勵值,激發這個人工神經元進入興奮或非興奮狀態。最 終激勵值也是一個浮點數,如果它超過這個人工神經元的某個閾值(假設閾值為1.0),則人工神經元會向外輸 出一個數值為1的興奮信號,反之則輸出一個數值為0的非興奮信號。
這就是人工神經元最簡單的一種激勵方式。這裡激勵值產生輸出值的過程,是由一個函數來完成,這個函數就叫階 躍激勵函數。

1.2.2 人工神經網絡系統的組成
生物學大腦裡的神經元是和其他神經元相互連接在一起的。為了創建一個人工神經網絡,人工神經元也要以相同的 方式互相連接在一起。
所有人工神經網絡系統中,中最容易理解並且也是最廣泛地使用的,是前饋網絡。該網絡把人工神經元一層一層地 連接在一起,每一層的人工神經元都向前一層饋送,直至獲得整個網絡的輸出。
前饋網絡共有3層。輸入層中的每個輸入都虧送到了隱藏層,作為該層的每一個人工神經元的輸入;從隱藏層的每 個人工神經元的輸出,都連到了輸出層的每一個人工神經元。
作為前饋網絡,實際上可以有任意多個隱藏層,每一層也可以有任意數目的人工神經元,這完全取決與要解決目標 的複雜性。


1.3 神經網絡的訓練
一旦神經網絡構建完畢,就可以對其進行訓練,使其處理數據的能力符合最初的設計要求。
假設需要該神經網絡識別物體A。
①為神經網絡中,每一個層、每一個人工神經元裡每一個權重賦予初始數值。
②對輸入層中的人工神經元輸入需要識別的一系列數據。
③對於每一種輸入配置,檢查它的輸出是什麼,並調整相應的權重。
輸入一張圖片,裡面畫的不是物體A,而是其他物品。這時網絡應輸出一個0。
對與每個非物體A的圖片數據,都要調節網絡權重,使得它的輸出趨向於0;對於每個物體A的圖片數據,也要調 節網絡權重,使得它的輸出趨向於1。
④成功識別出物體A後,通過再次訓練,就可以使網絡識別其他物體B、C、D等等。
這種類型的訓練稱為有監督的學習,用來訓練的數據成為訓練集。調整權重可以採用許多方法,這裡採用反向傳播 方法。


第二章 人工神經網絡應用的設計

2.1 應用設計
本文將使用神經網絡技術,設計一個人機對抗項目,並將這個人機對抗項目,應用於電腦上的一個多人的人人對抗 項目DOTA中。


2.2 DOTA簡介

2.2.1 DOTA概念
DOTA是電腦領域上新興的一個多人對抗項目,全稱為Defense Of The Ancients,即守衛遺跡。它的編寫者名為Ice Frog。

2.2.2 DOTA規則
DOTA是一個多人的人人對抗項目。但它的規則在某些方面與象棋類似。
1)參與對抗的對抗者最多為10人,分為兩大陣營,每方陣營各5人。
2)每個參與者扮演一名「棋子」。每個棋子擁有生命力、戰鬥力等屬性,可以通過學習不同的技能,購買不同的 物品提升自身的實力。
3)雙方所有棋子在一定的地域內活動。同時,雙方各有一座遺跡,和數個保衛遺跡的建築物。
4)每一方的棋子都必須不計一切代價保護己方的建築物和遺跡,同時利用一切可行方式去摧毀敵方的建築物和遺 跡。
5)一旦一方棋子率先突破防禦,摧毀了對方的遺跡,該方立即獲勝,並宣告對抗終結。

2.2.3 DOTA現狀:
DOTA於幾年前年開始流行。隨著它的編寫者Ice Frog不斷努力,DOTA的平衡性越來越高,內容越來越豐富,因此,DOTA迅速風靡全球。世界各地都頻 頻舉辦大型DOTA競技比賽,我國也在今年5月舉辦過世界級的競技大賽(WCG2009)。

2.2.3 DOTA AI概念:
但正因為DOTA是多人對抗項目,為了能進行對抗電腦必須聯網,而且還必須有他人參與。如果因為某些原因, 比如電腦無法聯網,或者參與的人數不足等,便無法正常進行對抗。
為了解決這些問題,一名國外編程高手Lazyfiend,簡稱RGB,於數年前編寫了一套人工智能系統,可 以生成數個電腦控制的角色(簡稱AI),來頂替人數的空缺,跟真正的人類競技。這就是DOTA上最初的人機 對抗項目。
這個人機對抗系統極大地緩解了因為電腦無法聯網或人數不足等原因,而不能正常進行對抗的問題。使用DOTA 人工智能系統進行競技的人不計其數。
因此,DOTA人機對抗項目獨立出來,成為與DOTA人人對抗項目齊名的新形項目——DOTA人工智能系統 ,簡稱DOTA AI。人們也分成了兩大類,一類跟其他人通過DOTA對抗,一類跟電腦通過DOTA AI對抗。

2.2.4 現有DOTA AI弊端
可是,隨著時間的推移,RGB的DOTA AI的弊端也就浮現出來。RGB由於完全採用了工程學方法編程,電腦角色的一切行為全都固定化,電腦角色控 制的棋子的行動套路全部是事先編好的,不會隨機應變。雖然這種人工智能系統在當時打敗了不少人,擊潰了不少 挑戰,但現在,人們已經看破了這種人工智能系統的運作方式,找出了它的致命破綻。
這可以用一個例子來比喻,人跟電腦下象棋時,電腦很厲害,人下不過,但多下幾局後,人發現,電腦下棋的方式 是完全固定的,每一步走棋都嚴格重複上一把的套路。因此,人可以從電腦這一成不變的下法中找出破綻,摸索出 完全克制電腦的套路,從而擊敗電腦。一旦有了克制的套路,人就可以一點都不動腦筋,只要簡單地按這種套路下 棋,就能輕易擊敗電腦——因為電腦不懂得隨機應變。
遺憾的是,RGB只對他的DOTA AI更新過幾次,就退出不再干了。流傳至今的,還只是他數年前編寫的、不懂得隨機應變的那套人工智 能系統。
現在DOTA的版本飛速更新換代,由於一直沒有人接替RGB的工作,從根本上改變DOTA AI智力底下的現狀,導致DOTA與DOTA AI之間的差距越來越大。
還是用下象棋舉例。電腦的程序更新之後,電腦就多了幾種下法,不再一成不變地使用那套已經被人看破的套路了 。一下棋,人自然又被電腦擊敗了。但再多下幾次,人又發現了電腦的致命破綻——多出來的那幾種套路,也全是 固定不變的。只要人摸清了電腦全部的套路之後,自然能摸索出克制這些固定下法的套路。總而言之,就算程序再 更新幾次,也沒有實質的用處;電腦的固定的套路無論有多少種,人只要多花點時間就能全部看破。
DOTA AI參與者的抱怨之聲越來越大,這時候國外又出現一名編程高手BuffMePlz,簡稱BMP。但他同樣沒 有能力從根本上改變DOTA AI智力低下的現狀。他所做的,只有一件事,那就是不停地更新程序,為人工智能系統機械地加入更多的固定的 算法。
人跟電腦下象棋,如果電腦只有固定的一種套路,人很快就能看破;如果電腦更新程序,多了幾種不同的但仍然固 定的套路,人就需要多花點時間看破;但如果電腦有了十幾種、幾十種、乃至上百種不同的套路,雖然每種套路還 是固定的,可由於數量激增,人要想看破,就需要花巨量的時間。這種機械式的程序更新,從某種意義上來說,能 極大緩解DOTA AI智力低下的問題。
固定套路數量的激增帶來的,首先是程序容量的劇增——程序容量越大,就可能隱藏越多的錯誤,導致電腦出問題 ;其次是工作量的劇增——編寫套路需要非常多的時間。
人們看破了電腦的套路後,編寫者就要編出另外的套路。可人們會更快地看破,因此編寫者又需要加快速度,絞盡 腦汁再編寫更多的套路——這種固定套路的人工智能系統,陷入了一個惡性循環,它的弊端無需置疑 。
本人於去年開始嘗試設計新的DOTA AI。


2.3 新版DOTA AI的理論設計
不同於RGB的完全工程學方法、完全固定套路的算法,本人將採用以模擬法為主導,工程學為輔助的算法,在理 論上構建一個人工智系統。
理論上,一個完整的人工智能系統,應包含如下幾大部分。

2.3.1 巡查系統
DOTA AI是建立在DOTA的基礎上的,所以最重要的一點,是必須嚴格遵守DOTA的各項規則,電腦角色的各種行 為不能超出DOTA規則所允許的範圍之外。
這些規則將通過一個巡查系統實現。由於規則是完全固定的,不會,也不容許有任何更改,因此該系統使用工程學 方法編程。
巡查系統是獨立於所有電腦角色之外的裁判,應該有如下功能:
1)信號轉化
把進行對抗時,所有傳遞給人類的、人類大腦可以識別的視覺、聽覺等信息,轉化為電腦角色可以識別的數字信號 。
這個功能為電腦角色提供知覺能力。
2)行為限制
因為人類角色在進行對抗前,已經熟知了對抗規則,所以會自覺地避免讓所控制棋子做出違規行為的 情形。
而巡查系統就起著實時監控電腦角色行為的功能,如果某個電腦角色的數據,有可能指引它控制的棋子做出違規的 行為,則巡查系統就對該電腦角色發出警告,使其修正數據。

2.3.2 控制系統
為了使電腦角色有效地控制它的棋子,必須有一個系統,能夠接收電腦角色發出的指令,並使棋子執 行該指令。
由於棋子應對電腦角色發出的指令絕對服從,因此控制系統也使用工程學方法編程。
控制系統應該有如下功能:
1)發佈指令
電腦角色可以通過這一功能,對它控制的棋子下達各種指令,比如移動、攻擊、撤退、防守,等等。
2)響應指令
電腦角色發佈一個指令後,棋子就必須立刻響應該指令,並嚴格執行。
3)執行結果反饋
棋子執行指令後,要對電腦角色匯報指令的執行情況。如果由於一些不可抗拒因素,指令未被執行,或者指令執行 不到位,電腦角色就要迅速做出其他決策。

2.3.3 指令中心
指令中心是整個人工智能系統的核心,它起著人類大腦的思維的作用。沒有指令中心,所有電腦角色也只不過是一 堆堆數據;有了指令中心,電腦角色就是真人一樣的存在,才有類似真人一樣的思維和行為。
指令中心應該有如下功能:
1)知己知彼
所謂「知己知彼,百戰不殆」,電腦角色想要正確做出決策,必須全面掌握己方和敵方的詳細數據。
雖然電腦角色可以控制的棋子種類很多,每個棋子的實力也不同,但由於棋子所有的能力(生命力、戰鬥力等)都 可以用具體的數據來表示,因此無論任何時候,一個由電腦角色控制的棋子,它的整體實力都可以靠一系列實數完 整地描述。所以這個功能用完全工程學方法實現。
2)探索活動區域
DOTA的活動區域很大,而棋子的視野很小,所以電腦角色需要通過讓棋子探索活動區域來掌握戰場狀況。因為 存在少數幾處固定的「兵家必爭之地」,但由於其他(不論人類還是電腦)角色控制的棋子是活動的,懂得轉移陣 地或建立臨時陣地,所以這個功能可以由半工程學方法、半模擬法共同實現。
3)提升棋子實力
為了戰勝敵人,需要使自己控制的棋子變得更強。增強棋子實力的方式是獲得經驗值、提升等級、學習技能、購買 物品。
DOTA中每個棋子都有經驗值的設定,通過與敵人對抗,每次對抗的勝利者都會獲得經驗值。
每當經驗值累積到一定程度,棋子的等級就會提升。
棋子每提升一次等級,就可以學習一個技能。一個棋子可以從它的技能庫中選擇一個技能(五選一) 進行學習。
DOTA中有數量眾多的物品可供電腦角色購買,並裝備給它控制的棋子。通過與敵人對抗,每次對抗的勝利者都 會獲得金錢獎勵,當金錢獎勵累積到一定程度,就可以從物品庫中購買一個物品(多選一),裝備給 它的棋子。
每個電腦的棋子實力都不相同,因此不同技能和不同物品對棋子起到的能力提升作用也不同,組合數量非常巨大。 雖然在技能學習和物品購買方面,存在一些已有的常識性規則,但更多時候還要靠模擬法實現。
4)實時評估
就算電腦角色知己知彼,也知道如何提升自己棋子的實力,但真正面對敵人時,就需要有快速反應能力,評估戰場 局勢,是攻是退、是堅守陣地還是呼叫支援。
RGB的人工智能系統最大的弊端就在於,這一戰場評估功能也採用了完全工程學編程,使得電腦角色沒有主動的 、實時的評估能力,只有被動的、反應速度慢的評估能力,而被人類角色用計謀輕易擊敗。
而新版人工智能系統採用模擬法編程,能使電腦角色擁有較強的分析能力和計謀使用能力,讓其更不 易被擊敗。
另外,電腦角色的實施評估能力要受到巡查系統的制約,即電腦角色不能以違規的方式對付敵方角色,敵方角色也 不能以違規的方式對付己方角色。
擁有上述三大系統後,這個人工智能理論設計就完成了。
下面可以開始將數學算法應用於理論當中。




2009年12月12日 星期六

關於對抗地圖的AI製作







關於對抗地圖的AI製作

文章網址:http://bbs.wow8.org/thread-112587-1-2.html

這貼在WE綜合討論區挺冷的,所以發到專區了。最近自己研究T觸發對抗AI頗有成效,但有兩大問題還沒解決。
一:讓AI英雄不隨便放技能,只要對英雄施放就行了。因為AI英雄一有魔就會對小兵放技能,到觸發條件(如「敵對英雄生命<50%)成立時它卻沒魔了。所以,如何做到AI英雄只對敵對英雄施放技能。
二:讓AI英雄優先攻擊一定範圍內的敵對英雄。

有嗎?我沒搜到。今晚又試了一整晚了,做出的AI還傻的不行。每次實驗都得保存地圖,再開WAR3進入地圖(因為是一張成品對抗圖),這樣試一次就得好長的一段時間。這麼幾次下來卻沒絲毫進展,搞得我都沒信心了,越弄越煩躁,可始終想要製作出較好的AI。唉......版主和大家盡量幫忙啊。

把英雄的主要技能複製一遍 在把複製的英雄技能該成只對英雄施放 不知道可行不 我還沒試過哈哈 其他你搞定了嗎 怎麼讓AI英雄萎縮在兵後面打怪 怎麼讓AI隨機路線移動 有的話能發下AI演示 希望能和你一起研究AI 能更好的弄好隋唐AI

LS所說的AI進攻與撤退不是我研究的重點,因為已經有這類演示了,而且很好理解,比如有xttn6768同學的
帝國軍事對抗3c AI :http://bbs.wow8.org/thread-86828-1-6.html,
dota+其他創意英雄 對抗混戰 AI 版1.00:http://bbs.wow8.org/viewthread.php?tid=89926&highlight=,cnjsxzpq 的
《遠征諾森德》v1.17AI未加密版:http://bbs.wow8.org/thread-58909-1-2.html。
個人覺得這些未加密AI對抗圖中,遠征諾森德的AI是比較不錯的。

額,LS說的改為只對英雄施放,那沉默,火焰雨,暴風雪之類的區域魔法就不大行了,因為英雄旁邊只要有一個小兵那就會被判定為對小兵施法了,就停了。

那群體的技能別該就行 我說的是單體技能這樣該就好 我只是提供下思路而已 你說的優先攻擊英雄 那個DOTA加AI混戰裡有的 只要該該就行了 另外那3個的萎縮AI不是太強 像真三AI那樣的萎縮就差不多了 你會嗎 會的話說下
嗯,其實玩起來DOTA混戰的AI英雄會更強點,有一局我甚至輸給電腦了,裡面的AI英雄會取得很多人頭,不像其它地圖AI英雄常被箭塔或小兵殺死。但是DOTA混戰的AI連技也很不完善,之所以會殺很多人,大部分原因是這圖的技能太BUG,CD短,傷害高,很容易搞死人。

這圖有優先攻擊英雄嗎,我目前還沒發現,你可以指一下嗎?我只發現那個AI反擊的觸發,就是只有敵對英雄攻擊AI英雄,AI才會去打他。而且,遊戲裡也不見得有優先攻擊現象。

如果單體技能設置成只對英雄,那貌似只能在英雄空格處打鉤,那樣很可能會傷及同盟的,對其它的又沒傷害。

至於AI猥瑣啊,那可以做的到,但一看就是很麻煩的,得寫很多觸發。我正處期末考試周中,所以沒時間多研究這個了,等實踐周開始後再做吧,請見諒!

我目前做的地圖嘛,其實就是把遠征大換血而來的,一開始就沒打算發表,也不能發表,只不過是用來學習的。而且圖裡的英雄只有少數屬於自己的原創,其它的都是從其他對抗圖引進的。所以呢,就不存在地圖名字這個問題啦!--!至於我自己的圖,那也是要到實踐周和放假後再製作的。
是同意DOTA6.59的AI不太完善不過他們要出新的厲害AI了 應該沒有優先攻擊對象吧 不過可以設觸發 dota+其他創意英雄 對抗混戰 AI 版1.02 早就有新版本了 在新圖發佈區下載 你沒注意嗎 在那個5秒觸發裡有的 攻擊MOFA000001那裡 AI萎縮我也是會點拉 不過比真三的萎縮差多了 等你試驗出強大的萎縮 發出來共享下 那期待你自己的圖能早日做出




※怎麼下載?Xuite硬碟 , MediaFire , Badongo,SendSpace
※文章可以轉貼嗎?可以,不過要註明出處、標示本站連結。
※載點可以轉貼嗎?不可以,不能盜連。
※建議瀏覽器:Chrome 或 Firefox 或 Opera 或 IE7以上
!請按+1來支持本站!