自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

游戲中的深度學習與人工智能

人工智能 深度學習
本文是作者跟大家分享的內(nèi)容是深度學習在游戲AI中的應用這樣一個話題。

[[190049]]

本文為大數(shù)據(jù)雜談4月27日微信社群分享內(nèi)容整理。

大家好,我是歡聚時代的高揚,這次跟大家分享的內(nèi)容是深度學習在游戲AI中的應用這樣一個話題。 

 

NPC的驅(qū)動粗分可以分成低級、中級、高級、特高級,這樣幾個類別。當然,按照其它的方式分也未嘗不可,這里主要是針對實現(xiàn)方式和應用場景的一個粗略劃分。 

 

低級NPC通常說的是一些游戲中所謂的雜兵,不涉及什么情節(jié),也沒有什么所謂的策略作為驅(qū)動?;旧暇褪前凑找欢ǖ脑O計好的路線行進,并直接攻擊游戲主角。這類游戲很常見,尤其是老的單機游戲中,絕大部分就是這類NPC。 

 

中級NPC常見于游戲群戰(zhàn)中的配合型NPC。這類機器人會有一定的事先編號的策略作為驅(qū)動,并且有簡單的應變能力。當然,這些都是人類事先設定好的策略內(nèi)容。比如優(yōu)先攻擊血量較低的游戲主角,比如在自己血量過少的時候會優(yōu)先進行回血等等,通過這些行為完成一定的活動序列差異。但是場景非常單一而且確定。 

 

高級NPC是指網(wǎng)游中的高級團戰(zhàn)中的配合。像王者榮耀、或者英雄聯(lián)盟一類的游戲有著豐富的走位、加血、加防御、減速……等等復雜的影響盤面的因素。這些因素對于人來說都是需要長期摸索和練習才能在不同場景中得以良好配合的,所以這類NPC的策略是比較難編寫的,至少很難找到一個相對確定的能夠保證較高勝率的策略編寫思路。 

 

 

特高級NPC泛指那些帶有較強的博弈性的對抗策略。在這種NPC需要對長期的盤面演變有較好的全局能力,通常更難直接編寫。如果嘗試使用窮舉的方式去做搜索來充當策略的話,其時間復雜度通常也是普通的計算單元難以承受的。所以,如果期望NPC在復雜環(huán)境中有比較好的表現(xiàn)那么就需要有更合適的方式,例如讓NPC自己在大量的游戲過程中自己學習最好的方式并逐步進化。 

 

 

這種情況下人工智能在游戲AI中的應用就越來越受到人們的關注。當然,人工智能的差距主要是體現(xiàn)在游戲環(huán)境的差距上。不同的游戲的NPC訓練其難度是不一樣,當然是越簡單的場景越容易訓練,體現(xiàn)出來的就是輸入的維度差距。少的游戲只有幾個維度,而一些較復雜的場景就有數(shù)萬個維度抑或更多。 

 

 

除此之外,人工智能的差距還體現(xiàn)在另一方面,那就是在這個過程中,人對訓練過程的參與程度的高低,我們當然是期望人為參與程度越低越好。越低說明這種模型或者方式的“自主性”越強,那么未來其自己進化的場景泛化性也就會越大。 

 

 

對于這一類需要使用訓練(自學習)的方式來進化的NPC來說,基本套路是固定的。如果能夠在全局范圍內(nèi),將模型轉(zhuǎn)化成為一個求最大值或者最小值的問題那么就可以通過凸優(yōu)化或者凹優(yōu)化的方式來解決。那么在這個建立模型的過程中就要設定好整個模型的評價函數(shù),并在策略的調(diào)整中使得評價函數(shù)取得極值。 

 

在落地的過程中可以使用經(jīng)典的統(tǒng)計方法來做,也可以用神經(jīng)網(wǎng)絡來擬合策略,當然也可以使用人工智能中比較經(jīng)典的強化學習的套路來做實現(xiàn),這些都是可以選擇的路徑。 

 

 

可以使用經(jīng)典的統(tǒng)計模型的多為概率性的博弈游戲,例如德州撲克、二十一點等等這些。不過這些模型在規(guī)則確定的情況下是幾乎只能按照靜態(tài)概型的情況通過排列組合來做計算的,所以局限性也比較強。 

 

 

如果使用神經(jīng)網(wǎng)絡算法(深度學習)來做游戲AI也是可以的,由于神經(jīng)網(wǎng)絡擁有很高的VC維,也就本身超強的擬合能力,所以是可以用來應對復雜場景的。那么在這其中最容易想到的就是使用卷積神經(jīng)網(wǎng)絡作為落地工具。卷積神經(jīng)網(wǎng)絡有著很好的特征提取的特性,收斂快,適合輸入為大量像素的情形。 

 

 

 

這里簡單介紹一下卷積網(wǎng)絡,卷積網(wǎng)絡是一種很常見的深度學習網(wǎng)絡構建方式。其中擁有卷積層、池化層和最終的輸出層。卷積層用來提取特征,池化層用來做降采樣,提高泛化能力,輸出層則是用來做分類或者預測,在這樣一個場景中則可以用來表示NPC的輸入,或者動作。也就是說,場景數(shù)據(jù)向量作為輸入,NPC動作作為輸出,網(wǎng)絡在訓練的過程中被投以大量的正樣本——也就是那些在游戲中行為正確的樣本。 

 

 

例如在象棋對弈中,象棋棋盤就可以描述成為一個9*9的向量,向量上的每個維度可以用線性無關的編碼描述有沒有棋子,有哪個棋子——這些作為整個盤面的描述信息輸入給卷積網(wǎng)絡。網(wǎng)絡的輸入部分則給一個“好棋”的描述,就類似于“車三進一”,“炮二平七”這樣的動作的向量化描述。 

 

 

 

請注意,在這個過程中,一定要給卷積網(wǎng)絡大量的正樣本,也就是那些比較靠譜的動作,這樣才能讓卷積網(wǎng)絡在這個過程中學到正確的動作。而如果相反,如果你給到網(wǎng)絡的是一些不太好的行棋動作,那么網(wǎng)絡同樣會把這些臭棋都學下來。顯然,這根本不是我們想要的東西。 

 

 

 

卷積網(wǎng)絡的優(yōu)點就如剛才我們說的那樣,收斂速度快,泛化能力好,應用場景廣。這就使得它可以在很多種不同的游戲中得以應用,用來當做NPC的大腦來訓練。 

 

 

 

但是同樣,卷積網(wǎng)絡也是有著自己的缺點,它需要大量的正樣本和人工干預。就以剛才的象棋來說,每一個盤面在輸入網(wǎng)絡的時候,都需要給定其一個人為標注過的“好棋”的描述。這樣訓練成本就大大增加了,所以這一點也就使得無法低成本獲得正樣本評價的場景中直接這樣使用卷積網(wǎng)絡成為了不可能。 

 

 

綜上所述,直接使用卷積網(wǎng)絡僅僅適合那些輸入數(shù)據(jù)量偏小,而且動作簡單,容易獲得正樣本的游戲。而其它局勢復雜的游戲通常都需要做一些改進才可以。 

 

 

目前比較先進的游戲AI的訓練方式是以2013年NIPS發(fā)表的關于DQN的論文為理論基礎的神經(jīng)網(wǎng)絡和強化學習的結合方式。先拋開DQN不管,我們先來說強化學習的基本概念。在強化學習的范疇中,通常有這樣幾個研究對象,一個是機器人,也叫本體,就是我們要訓練的對象;一個是環(huán)境,也就是機器人所處的場景;一個是動作,是機器人所發(fā)出的行為(Action);從環(huán)境中,機器人會不斷地得到兩種東西,一個是狀態(tài)(State),一個是獎勵(Reward)。 

 

 

一旦這個場景建立之后,其實就可以開始訓練了,作為機器人我們將獲得什么呢?當然是時間序列上的一系列State、Action、和Reward。請注意,這個Reward不一定只是獎勵,如果是一個正數(shù),那么就表示獎勵,如果是一個負數(shù)就表示懲罰。在一個事件序列上我們將連續(xù)不斷地獲得State、Action和Reward串。不過這里的Reward不是表示當前你的State和Action的獎勵,而是表示在前一個State的狀態(tài)下,由于你做了一個Action所帶來的獎勵值。 

 

 

既然有了這樣一系列的數(shù)據(jù),其實通過簡單的統(tǒng)計我們就能得到這樣一張表。如圖所示,縱列都是State,橫列都是Action,通過統(tǒng)計可以在表中填寫一個Reward值。也就是表示在某個State下,發(fā)出某個Action后所獲得的Reward值,這就是一個認知。那么在使用的時候,機器人可以通過查表,在一個State下,找到那個State下最大的Reward,和它對應的Action,然后做這個Action就可以獲得最大的獎勵值了。

不過這樣也有一個顯而易見的問題,那就是短時問題。因為State是連續(xù)的,前后之間也是有著一些潛在影響的。就像在玩沙羅曼蛇這種游戲的時候,如果為了吃個槍而在下一秒撞墻的話,那么吃槍的意義就不存在了。所以,即便在當前State下找到一個最大Reward的Action并不意味著它能夠在未來保證長期的Reward比較大。 

 

 

這種情況我們就需要這樣來看了,其實就像這樣一顆樹。時序上靠近前面的State就是樹根,時序上偏后的就是下面的樹枝樹葉的節(jié)點。下一層上所有的Action中Reward最大的其實并不意味著能引導一條全局Reward最大的路徑。換句話說,下一秒笑得最開心不代表能笑到最后。從這個圖上也能看出來,1-4-1這條路徑的總收益是沒有右側(cè)的1-1-5更好的。 

 

 

這種時候就需要這樣一種叫做Q-Learning算法的東西,公式就這樣寫。Q(s,a)表示的就是前面那張表的內(nèi)容,a和s分別是橫縱坐標。一個Q(s,a)就表示一個具體的值,這個值就是一個Reward。在這個算法中需要對整個表中的Q(s,a)不斷更新,更新的原則就像公式上所寫,其中alpha和gamma是一個權重系數(shù)。定性來說,Alpha代表對未來收益的重視程度,0就表示完全不考慮,1則表示當前的收益取決于下一個可以轉(zhuǎn)移到的狀態(tài)中那個Reward值最大的。

也就是可以這樣理解,如果把alpha配置成1的話,整個Q(s,a)的更新過程就是不斷把后一個狀態(tài)中Reward最高的值向前賦予。也就是可以解釋成,一個狀態(tài)被評價為“比較靠譜”是因為它后一個狀態(tài)“比較靠譜”,而這后一個狀態(tài)“比較靠譜”也是由于它的后一個狀態(tài)“比較靠譜”。這樣進行向前傳遞,也就容易解決短視問題了。 

 

 

 

來看這張圖,在這種假設前提下,基本我不能獲得每一個State下每一個Action的具體評價,也能夠在整個棋局最終結束的時候?qū)倮环浇o一個正值的Reward,并通過這種方式進行傳遞,最終把整個一條完整的“靠譜”的行為鏈找到。 

 

 

深度學習在這個場景中也是有應用的,現(xiàn)在用的比較多的是DQN,全稱叫做Deep Q-Network。這是強化寫出和深度學習的一種結合,網(wǎng)絡的輸入是一個盤面的信息,中間通過卷積層和全連接層,最后是一個SOFTMAX來擬合一個Q值也就是Action和其對應的Reward值的評價。 

 

 

DQN的損失函數(shù)是比較特殊的。在訓練的過程中,需要做兩件事:1、不斷把后面狀態(tài)的Reward向前部去做更新,就像剛才我們寫的那樣。2、在這個過程中讓一個狀態(tài)Statet和它的下一個狀態(tài)Statet+1通過網(wǎng)絡,讓他們產(chǎn)生的Reward評價差異最小。在整個算法最后收斂的時候,會有這樣一種現(xiàn)象,那就是那條最靠譜的路徑上所有的Statet和Statet+1的Reward值都一樣大。并且,Statet和Statet+1狀態(tài)的評價規(guī)則是一樣的。因此,這種情況下,任何一個State輸入網(wǎng)絡,都可以順著這個State下面最靠譜的那條路徑走下去。 

 

 

除此之外,其實也可以對這種機器人進行擴展。也就是說,評價函數(shù)不是讓它勝率最高,而是讓它在跟玩家游戲的過程中,使得玩家的游戲時長加大。這個技巧就比較多了,是需要把玩家的游戲節(jié)奏也作為訓練條件輸入的。 

 

 

總體來說,對于很多流量不充足的游戲平臺還是會需要這樣一種機器人來陪伴玩家進行游戲的。不管是連續(xù)贏、連續(xù)輸、沒有對手、沒有隊友,任何一種引起玩家不悅感覺的情況,機器人理論上都應該可以破解。 

 

對于一些更為復雜的模型,單純依靠普通的DQN已經(jīng)不能很好地解決問題了。因為維度過高,所以很可能導致模型收斂速度不理想。有時候可能需要借助一些其它的手段來進行決策,例如隨機決策森林等。也就是說可以建立多個精度較差的模型,讓它們各自根據(jù)自己的判斷來進行策略投票,最終通過表決的方式來決定策略。其實就是一個“三個臭皮匠頂個諸葛亮”的用法。 

 

 

最后進行一下游戲市場的展望,2016年中國的游戲市場大約1700億的盤子,這個規(guī)模還是很大的。 

 

 

目前據(jù)我們估算在眾多的游戲中,大概有30%在長尾中的用戶是由于“失配”的原因?qū)е碌牧魇Щ虿换钴S。那么機器人的作用就非常明顯了,就是希望通過它們與用戶的磨合最終彌補這30%的失配情形,最大程度提高長尾用戶的活躍程度。 

 

 

據(jù)推測在這長尾的容積中大概有700億左右的市場空間是可以由游戲機器人來彌補的,也就是剛才估算的那30%。其中棋牌類游戲的保守估算大約80億,所以說市場規(guī)模還是非常值得期待的。這也是我們逐步努力的目標。

作者介紹

高揚,著有《白話大數(shù)據(jù)與機器學習》、《白話深度學習與Tensorflow》、《數(shù)據(jù)科學家養(yǎng)成手冊》。其中《白話大數(shù)據(jù)與機器學習》已經(jīng)上市一年,在京東取得了400+的好評以及99%的好評度;《數(shù)據(jù)科學家養(yǎng)成手冊》是剛剛上市的作品,有吳甘沙先生以及CSDN創(chuàng)始人蔣濤先生等眾多名家的贊譽。重慶工商大學管理科學與工程專業(yè)碩士研究生事業(yè)導師。北京郵電大學計算機專業(yè)畢業(yè),從事數(shù)據(jù)庫、大數(shù)據(jù)、數(shù)據(jù)挖掘、機器學習、人工智能等相關工作研究,有3年海外工作經(jīng)驗。曾任金山軟件西山居大數(shù)據(jù)架構師,現(xiàn)任歡聚時代資深大數(shù)據(jù)專家。 

責任編輯:龐桂玉 來源: 大數(shù)據(jù)雜談
相關推薦

2020-10-29 10:27:29

人工智能技術數(shù)據(jù)

2021-02-25 10:23:01

人工智能科技機器學習

2021-03-30 13:45:00

人工智能

2016-06-17 15:45:58

機器 學習

2022-11-25 07:35:57

PyTorchPython學習框架

2021-04-07 10:52:35

人工智能深度學習

2020-12-29 14:17:06

人工智能機器學習深度學習

2021-04-16 09:53:45

人工智能機器學習深度學習

2021-04-07 10:48:45

人工智能深度學習

2022-11-13 08:11:03

TensorFlow人工智能開源

2021-08-03 10:23:26

人工智能AI數(shù)字化轉(zhuǎn)型

2021-12-09 15:03:10

人工智能AI人類思維

2018-05-11 14:34:24

人工智能機器學習深度學習

2016-09-01 14:47:56

人工智能機器學習深度學習

2022-06-08 10:29:28

人工智能機器人

2024-09-20 15:48:06

2017-03-18 16:28:40

人工智能機器學習深度學習

2021-02-22 10:59:43

人工智能機器學習深度學習

2017-07-26 16:26:47

數(shù)據(jù)中心人工智能技術

2021-12-15 10:48:12

物聯(lián)網(wǎng)人工智能
點贊
收藏

51CTO技術棧公眾號