閱讀541 返回首頁    go 機器人


人工智能在遊戲中的十個應用場景

本文大約3000字,泛讀時間11分鍾,精讀需要半小時以上。

最基礎的概念

人工智能的概念,受到眾多科幻小說的“普及”,大家都對其有了初步的印象。從本質上,這種印象並沒有什麼壞處,但具體到“專業”與“非專業”群體時,你向被人描述你對“人工智能”的未來想法時,別人就會覺得你不懂人工智能,很Low。

人工智能這玩意,用普通話應該怎麼說?

用普通話了解人工智能

假設一張圖片,分辨率是28*28,這張圖上別人手寫了個位的阿拉伯數字,那麼,計算機該如何識別圖上的數字?

這也許不是最簡單,但絕對是最典型的例子,有了解過人工智能的童鞋,一定對這個例子十分熟悉,如果不了解,不要緊,我們稍後對它更多的介紹,現在,把注意力放到這個問題。

如果要使用人工智能技術去解決這個問題,首先就需要明白人腦是怎麼處理這個問題的。通常,我們會把問題拆分為:“輸入”、“輸出”,通過不斷的將輸入信息與輸出信息做關聯,最後大腦在沒有看到輸出信息的時候,通過輸入信息也能判斷出結果。

再簡單點的例子就是:

我們的老師,告訴了我們 “1 1 = 2”

通過作業題的訓練,當我們看到 “1 1 =” 時候,自然就明白了後續的結果:2

其中:“1 1 =” 就是輸入參數

而2,就是我們大腦的輸出結果

有關大腦如何決策與學習的例子,可以參考《認知模型》。

“人工智能”的基本原理,也是如此,我將其稱唿為“映射”,其執行過程就是:“給當前輸入的參數,找到一個最合適的結果,並輸出”。

回到“手寫數字識別” 問題上,假設我們已經有了很多手寫數字的數據,其中包含了圖片,與圖片對應結果,也就是阿拉伯數字的0~9,接下裏,我們隻用不斷的告訴計算機:這張圖,就是這個數字,那張圖,就是那個數字即可。

當人腦不斷的被告知這是“1”時,當下一次不給告知時,我們就這是1.

同樣的,當“人工智能”的計算機被不斷的告訴這是1後,下一次不告訴他結果時,他也知道這是1.

這,就是“人工智能”最基礎,也是最重要的作用:

“通過過往的學習,去映射最近似的結果”。

案例

基於現在的技術,計算機還隻能理解數學問題,所以像圖片這樣的信息,我們都要把它轉化為數學表達,才能讓計算機認識這些“輸入”的東西。

在《MNIST機器學習入門》中,對這個案例進行了詳細的講解,而文章的此處,我們就簡單的對其進行介紹。

1. 假設,我有一個“人工智能”,我叫他X先生。

2. 假設,我有一堆手寫圖片,我叫他:Inputs數據集。

3. 假設,我還提前知道了,這些手寫的圖片對應什麼數字,我叫他:Labels數據集

那麼,接下來我該怎麼做?

結合前麵的知識點,我想部分觀眾的心理應該能從最上層的邏輯明白我應該做些什麼。很簡單。

第一步:在X先生的耳邊,嘮叨幾千字,告訴他每一張圖,對應著哪個數字

第二步:給X先生一張圖,問問他,你識不識得?

第三步:向別人吹牛逼:“我的朋友X先生,他已經能夠識別人類手寫的數字了!”

普通話

用普通話來說,人工智能就是一個黑盒子,它的機製與我們的人腦是一樣的,不同的是輸入的信息不同,所以暫時無法讓人工智能變成人類一般的智能。

但在具體的應用範圍內,我們將人與人工智能所遇到的環境信息都限定得一樣了,人工智能就會發揮出與人一般,甚至比人還要好的效果。

再次記住:“一個黑盒子,多次丟進去環境信息 結果,就可以隻憑環境信息得到之前學會的結果。”這是人工智能的本質。

超級簡單的案例

要想功夫深,基礎就得好,今天我們先不講解各種具體的實現,我們針對人工智能的概念,以及它的應用場景,進行大膽的假設與設計。

通過上麵的例子,我們已經明白,假設存在一個人工智能,我叫X先生,他的作用不過是把曾經 輸入 與 輸出 的關連複習好,當我們展現給他 輸入 時,他就會告訴我們,根據他的學習,此時應該出現的結果應該是……

問題來了,我們知道了這種機製後,這種模仿人類大腦的機製後,如何用到遊戲中?

場景一、SLG中的用戶行為模擬

這個標題是不是吼厲害,每個字都看得懂,連在一起就無法給出清晰的定義。

沒關係,三分鍾後,你就會喊出:“我曹,原來這麼簡單!”

準備好了嗎?我們開始!

設計目的

了解SLG遊戲類型的用戶應該知道,SLG品類的遊戲對於用戶量的需求是十分龐大的,通常一個服務器需要幾千名用戶共同生存,它的生態才是健康的,直白點的話就是:“才有足夠的免費玩家讓付費玩家去欺負”。

那麼,模擬出行為類似於真人的機器人,就是突破該品類市場難度的重要方向。

從簡單的應用題開始

我們假設一款SLG中,玩家有一下行為:建造、造兵,打野

再假設玩家看到的信息有:建築等級,金錢,兵力

我們先從玩家的大腦開始分析,有這個一個邏輯:“當玩家看到遊戲內的信息(inputs)時,做出了選擇(labels)“,這和人工智能的原理一模一樣。

其中,包含了一個未知信息:“當玩家做出決策時,我們不知道他觀察了哪些信息。”

通常我們寫普通AI時,就需對它們進行逐一的判斷。

n 如果 兵力足夠 ,那麼 去打野

n 如果 錢 足夠,那麼去建築 或 造兵

n …

等等之類的,通常是通過非常複雜的“人工編寫”的智能去完成NPC的行為邏輯。

建模

回歸到人工智能的話題上,這個命題就會變得十分的簡單。

再次思考之前我們得到的結論,人工智能不過是:“一個X先生,你要不斷的丟給他數據,以後再丟類似的,他就知道結果是啥了。“

也就是說,關於人工智能的建模過程,就是建立輸入與輸出一一對應的過程,而建出來的模型,也就是平常所說的:“數據模型“。

問題:對於SLG玩家這個命題,其中哪些數據,是需要輸入的,哪些數據,是輸出的?

參考前麵“手寫數字識別”的例子,labels的取值範圍為0~9,於是教程裏通過標記位的方式,來將結果整合成統一的表達方式。這裏麵有三種行為,分別是:“建造”、“造兵”、“打野”。我們就手動的,做出三種label,分別代表它們:

- 建造 = [1,0,0]

- 造兵 = [0,1,0]

- 打野 = [0,0,1]

而inputs,整理後,就成了

- [1,333,44] = 【等級,金錢,兵力】

代表著,我等級為1,金錢為333,兵力為44。

最後,我們就有一種映射表達式:

- [1, 999, 0] = [1,0,0]

//這代表著,當我一級時,有999的錢,我沒有兵,所以我去建造。

再通俗點說,也就是,我輸入了長度為3的數據,會得到一個長度為1的結果。

數據

建出了這樣的模型後,缺乏的就是數據源,我們的題目是:“模擬用戶的行為”,所以數據來源不是電腦對抗(類似於Zero戰勝阿爾法狗),而是通過學習玩家的行為,來模擬玩家的決策方式,更接近於阿爾法狗的實現模式。

我們采集每個用戶在進行有效決策時,他的角色信息,這樣,我們就可以得到大量的,來源於玩家的數據。

最後就會形成類似於下麵這樣的數據集:

在程序裏能夠得到這樣的數據後,在本篇中暫時忽略歸一化等操作,我們把這張表交給X先生,等他做出的充足的學習後,他就可以根據此時的三個環境參數,來判斷應該做出什麼樣的行為。

如果還沒有明白的觀眾,我可以再詳細的解釋一下剛才我們做了什麼。

我們建了一個模型

等玩家玩的時候,數據按照模型的要求被記錄了下來

我們把玩家數據丟給X先生

X先生學習完後,能夠根據當前輸入做出決策,模仿出玩家的樣子進行遊戲

這種實現方式,避免的複雜邏輯“人工編寫”,當信息量隻有如例子所示的三個元素時,我們還可以通過人工編寫去達到AI的靈巧,但輸入數據的長度達到幾十個時,我們就難再編寫出不容易被看出的遊戲AI。

結束語

概念講解到此,X先生已經能夠在這個超級簡單的版本的SLG中進行自我控製行為,這些行為來源於在相同機製下,其他玩家大量的做出了如此的決策被X先生所學習。

本篇文章作為整個係列的開篇,不求精彩,隻求能夠最簡單的方式,向大家傳達什麼是人工智能這個概念,並通過一個超級簡單,但絕對可以實用的案例,描述了人工智能這玩意在沒有複雜的代碼邏輯與數學知識時,是如何被一個工程師應用到具體的項目中。

我們的文章題目,是“十個應用”場景,也就是說,我真的儲備了從簡到到複雜的十個應用場景來向大家描述,當今的技術,在遊戲中實現人工智能幫助我們提升遊戲體驗是多麼簡單的一件事。

但在寫的過程中,我也遇到了困難,這是一個看起來很高級的學科,想要很好的在遊戲中設計出這樣的應用場景,就需要設計的人既懂得遊戲設計,也要懂得人工智能。當我講解概念時,人們就會說缺乏實例,而當我講解實例時,文章又會顯得冗長惡心。

所以在第一篇,我會盡量的用最簡單的方式先把概念講出來,這部分內容就不分策劃還是程序,大家都可以看,而之後的章節,我也會去探索如何更好的將這種設計與技術融合的文章給表達清楚。

今天的內容就到這裏,謝謝大家。也希望大家隨意在文章評論區攻擊,畢竟你們的攻擊,才是我們進步的最大源泉。

後續內容

如果沒有太監,根據目錄,接下來的內容可能會有:

本文由EEA探娛互動研究院(Explore Entertainment Academy)在騰訊GAD上發布,前往騰訊GAD平台,可與作者互動,探討文章內容。

最後更新:2017-11-09 22:55:47

  上一篇:go OLED+人工智能利好助推,黑馬股再度現身,將遠甩天業股份!
  下一篇:go 人工智能與汽車駕駛