Re: [請益] 關於一些遊戲的AI

看板GameDesign作者 (謊言接線生)時間11年前 (2012/11/29 08:43), 編輯推噓15(15034)
留言49則, 5人參與, 最新討論串4/22 (看更多)
※ 引述《LaPass (LaPass)》之銘言: : 圍棋全部都是戰略成分 : 就連局部攻殺,也要考慮做出來的厚勢的方向 : 光憑這一點就會讓AI陷入很大的弱勢 : 然而,更嚴重的問題是,圍棋中的不確定性太高 : 一塊棋子死在那邊,有時候是死活不定的 : 死的棋搞不好會被下成活的,反殺另一邊 : 在圍棋的小區域戰鬥來講,AI很強,因為AI會用暴力去算 : 但中、大區域的死活問題AI就常常出錯 不對,圍棋的問題是算不完,而不是AI無法懂「厚勢」。圍棋中很重要的一件事 情是,厚勢本身並不能取得勝利,它是要被拿來攻擊對手弱棋,直到你真的利用了這 個厚勢取得了實利的那一刻它才真的得利──有沒有注意到重點?最終的利益仍然是 目數或子數。只要AI算得清後續所有下法賺取的目數或子數,AI就能下得出運用厚勢 的棋。 圍棋的難度在於其評估函數超級簡單,可是就是很單純地複雜度太高算不完。當 然,這是就最基本的決策樹展開解決的方式而言。因為算不完是註定的,所以會有採 用不全依賴窮舉而是嘗試模擬人類思考方式的研究方法,但是那做的就是把評估函數 複雜化模糊化然後可能帶有人類主觀並可能錯誤的解釋,去換取運算複雜度的下降。 : : 另一個不確定的因素是 : 「兵團」的區分方式 : 圍棋在這點,跟其他棋類有很大的差別 : 也跟SLG有決定性的差別 這個地方,我覺得你對於戰略遊戲、圍棋在AI上的思考方向有深深的誤解,是什 麼讓你覺得戰略遊戲完全不需要考慮軍團,而又是什麼讓你覺得圍棋非得考慮軍團的 ? : 在圍棋的世界中 : 單一一顆「棋子」的死活不重要 : 「兵團」(一塊棋子)的死活才重要 為什麼你會覺得SLG、RSLG或RTS之中單一單位的死活比整團兵或整個戰局重要呢 ?我不知道你有玩過多少SLG、RSLG或RTS,我們就拿Starcraft來講好了,星海中多 得是把狂戰士衝進對手地雷坦克陣送死吸引砲火,但卻能換取整個會戰的勝利。又或 是甚至刻意正面佯攻比對手多損失一些兵力,可是換取敵後方空投成功破壞經濟,導 致對手短期內空有比你略多的兵力卻沒法一波攻下你,長期經濟卻輸掉了的思考。 : 但區分兵團就可以讓AI很吃力 : 尤其是混亂的局面 : 有時候會看到AI連這點都會誤判 : 這對人來說是很簡單的能力 : 但是AI對這方面很弱 就是因為在這方面很弱,所以在戰略遊戲上的AI才也因此一樣很弱,正是因為戰 略遊戲同樣需要這樣的思考。不要說別的,光是要AI去對地型分析,去看出所謂兵法 中「以一擊十,莫善於厄;以十擊百,莫善於險;以千擊萬,莫善於阻」的厄地、險 地及阻地,決定出會戰地點,而且分析出最適合兵種的分配,這就不是單一兵種的圍 棋能夠相較的困難度了。尤其所謂厄地、險地及阻地的定義還會隨著遊戲設定及雙方 擁有兵種的不同而隨時有大幅度的變化(比如,當你的空軍優於對方,那地面的狹道 對你來說就是最適合迎擊的險阻。然而剛剛你為了空投破壞對方經濟送掉了一些空軍 失去空優,結果這個險阻之地反而可能一變而成對方有利的地點了)。 : 總而言之,在圍棋中要面對的是很模糊的計算 : 這跟SLG跟其他棋類是很明顯的差異 : 講白一點,圍棋的規則剛好壓在AI弱項上 這個結論剛好跟我所知是完全相反就是XD 這樣講好了。圍棋棋盤要是小一些算得完,它就是一個要算久一點的井字棋而已 ,規則上並沒有任何不利於AI計算的點。就算是全知型的戰略遊戲也一樣,只要能計 算完所有可以利用的手段之後的發展,那它也一樣是個要算久一點的井字棋而已。 但戰略遊戲比較機車的是其中還有帶戰爭迷霧的類型,這一類遊戲從根本上就無 法窮舉解決,這種遊戲才會被迫模糊計算,才是比較所謂「規則壓在AI弱項上」的類 型。因為有未知的部分,所以無論計算量再小,AI都無法保證100%解決問題,迷霧中 永遠有驚喜。 -- 「珍貴的回憶?還不是跟夢一樣虛幻不實的東西?你想要什麼樣的回憶,我幫你 做出來啦!」 --艾蜜思,謊言事務所實現使者 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.24.199.141 ※ 編輯: ddavid 來自: 114.24.199.141 (11/29 08:54)

11/29 09:25, , 1F
你是不是不了解圍棋中的「兵團」的意思?
11/29 09:25, 1F

11/29 09:25, , 2F
連在一起的棋子的死活是一起算的
11/29 09:25, 2F

11/29 09:26, , 3F
那是圍棋中的專有名詞
11/29 09:26, 3F
雖然我很想說這可能是過度狹義解釋才造成你以為戰略遊戲沒有這種概念。我舉 個簡單的例子:戰略遊戲你兵活下來再多,你的主要勝負目標失敗了,你整體就失敗 了。也就是說,你的整體原本就是可以視為一個總軍團,裡面單兵的勝負永遠不如總 軍團的勝負重要。 而一個總軍團為了達成總目標,他會發展出許多的子目標需要完成,而為了完成 每一個子目標就會分出許多子軍團。每一個子軍團也是一個整體,裡面的單兵輸了沒 關係,子目標完成就是該子軍團整體的勝利,而子軍團所有的成果之總合就會決定總 目標是否完成。但是,無論再怎樣用這種「整體」的方式去概念化、模糊化,最終的 勝負判定終究是可以從細微的每一個單位之行動(用圍棋來說就是每一手)的累積來 推算。圍棋確實是一整塊相黏棋的共生共死,但每一塊棋都是一手一手下出來的,每 一個turn你要推算的永遠都只有一手,雖然為了推算這一手你可能得算到整個棋盤、 算到後面的無數手。

11/29 09:38, , 4F
但問題是AI對圍棋中的軍團認定是有問題
11/29 09:38, 4F
其實我真的不太懂LaPass你的疑問在哪,這樣講好了,如果圍棋棋盤就只有4x4 ,它規則都一樣,你會覺得它是算不完的東西嗎。只要窮舉了所有可能,勢的概念基 本上是自然產生的,到最後勝負評估就是目數或子數,相黏棋的共生共死是基本計算 勝負所需的規則,本來就會算到。 你說的軍團認定,應該是指發生在對局中,某些還沒有真正連起來的棋,到底是 否要預設它們將來為相連的判斷吧。但這問題還是一樣,就是因為盤面太大算不完的 關係而已,只要算完你自然就知道之後雙方怎麼下,某些棋是否會相連,而造成的勝 負又是如何,評估函數根本沒有為此而變複雜。是因為算不完,才被迫用人為複雜化 評估函數的方式來減少運算量,而不是規則上評估函數就很複雜,這一點的因果不要 弄反了。 講到那個戰略遊戲的軍團觀剛好是我有一段時間在研究的東西,雖然我最後也沒 研究出很直接可以用的General Framework就是了......要想用單一架構 + 規則 Plug-in整合所有類型的戰略遊戲實在難度有點高XD 某些東西窮舉得完那還罷了,但很多光是最小子軍團的子目標就窮舉不完了,我 就是實際做過了,要說這東西比圍棋簡單我根本覺得不可能啊,除非是規則非常特化 而地圖非常小才可能。 事實上這跟以前在這版也談過的,MTG的General AI處理是大同小異的問題,雖 然一個是戰略遊戲一個是紙牌集換式遊戲,可是其中大概念其實非常相似。

11/29 10:01, , 5F
其實我之前也過泛用型的策略AI這種事....
11/29 10:01, 5F

11/29 10:02, , 6F
那個等下講,先講戰略遊戲的AI的問題..... 戰略遊戲一般都
11/29 10:02, 6F

11/29 10:02, , 7F
是用場的觀念下去算,而不該用窮舉的吧? orz
11/29 10:02, 7F
我想這就是你誤解的地方了,你把「現有的」那些爛SLG AI當成是SLG AI的一般 性解法,我事實上可以告訴你大多數的戰略遊戲AI根本連什麼場不場的都沒有考慮, 幾條if-else經驗法則就打發掉了,複雜一點的像Starcraft的也就是給它一些事先寫 好的套路,下去看目前狀況大概適合哪一種就照經驗法則run下去罷了。這些根本不 是去解問題,是人先解好了問題(而且用了很爛,其實根本沒有解開的解法)寫好給 電腦直接用。 這當然是一種AI,但是解題的責任卻其實還是在人身上,而且沒有超出事先寫好 規則以外的隨機應變能力。

11/29 10:08, , 8F
連圍棋這麼小的棋盤都會用場的觀念下去計算了.... 那種非棋
11/29 10:08, 8F

11/29 10:10, , 9F
格的場地不用場的觀念下去算是要怎麼知道地域....= =
11/29 10:10, 9F
我直接這樣講啦,戰棋就是棋類,只要你的資訊是全公開的情況,你拿來解棋類 的演算法就是拿來解它們的演算法,然後因為選項更多盤面更大所以複雜度更高更算 不完啦,而遊戲製造商不可能這樣幹,所以隨便寫些簡單規則就上了。你玩SLG總也 想過「要是我來控對面的部隊,我軍根本就死無葬身之地嘛」這種事吧XD 只要能窮舉完成,根本不需要場的概念。我不知道你對這點有多少理解,要是你 沒有這個概念,我們根本沒法繼續討論下去,因為你說的AI其實都已經是在談人為事 先解了部分題、被干涉過的版本了,而不是全然自行運算 + 學習的AI了。

11/29 10:14, , 10F
這點我同意..... 所以我才會覺得那種幾萬*幾萬的地圖不用
11/29 10:14, 10F

11/29 10:14, , 11F
filed下去算很奇怪....
11/29 10:14, 11F
這種人為干涉加入概念的AI,其實比的都是人類事先解題的功力,比如說假設某 個時代電腦超慢連井字棋都算不完,可是有人就硬是找出了規則說先手下中間一定可 以下到至少不輸,那結果這個AI並不是本身算得好,是因為那個人提供了一個保證 Dominate此遊戲的知識。 現在圍棋只是因為硬算算不完,而就算人為也沒有人能提供100% Dominating的 知識,所以才有一直做下去的空間。戰略遊戲亦同,只要窮舉不完 + 沒有人可提供 Dominating知識,那難度是不會輸給圍棋的。現在說圍棋用場啊、用連通(某個大學 學長就做這個)、或是分析棋譜啊之類的,也都是眼前人腦能夠想出來可用的一些被 認為相對可用的概念,但哪一天要是哪個天才提出了更好的概念,場說不定就直接被 丟棄不用了(只是假設)。這些人為概念直到真正有決定性之前,沒有一個是絕對必 要元素的。唯一絕對必要的元素只有由基本規則直推得到的標準評估函數而已。

11/29 10:46, , 12F
同意
11/29 10:46, 12F

11/29 10:48, , 13F
我當初是直覺認定不會有人把策略遊戲的規則搞到這麼複雜,
11/29 10:48, 13F

11/29 10:50, , 14F
才會認為圍棋會比較難
11/29 10:50, 14F

11/29 10:54, , 15F
回個文好嗎? XDD
11/29 10:54, 15F

11/29 10:58, , 16F
以圍棋來說 我相信人腦也不會去窮舉 每一步是有時間
11/29 10:58, 16F

11/29 10:59, , 17F
限制的 但是用超級電腦來窮舉 我是覺得可行的
11/29 10:59, 17F

11/29 11:00, , 18F
人腦在判斷局部的話的確是窮舉,不過會先用直覺去挑幾個看
11/29 11:00, 18F

11/29 11:01, , 19F
ddavid有一點我不同意 每個回合要計算的是2手 對面會
11/29 11:01, 19F

11/29 11:01, , 20F
起來「有味道」的棋步去算
11/29 11:01, 20F

11/29 11:01, , 21F
怎麼下 會影響到自己怎麼下
11/29 11:01, 21F
窮舉就是將對方的所有回應也都考慮以後挑最佳呀,考慮一下井字棋你人腦怎麼 窮舉的就OK了,不管怎麼下,至少九手之後一定會導向一個結束的盤面,所有可能性 都有了以後再回推是不是有一手不管對方怎麼應都能至少通往一種自己贏/不輸的盤 面即可。反過來說,如果我方所有著手,對方的應手都能導向至少一種你輸的結果, 表示從目前開始下的話,在雙方可以下出最佳著手的前提下,你已經敗定。 而所謂一種遊戲被窮舉解決掉,就是這個窮舉已經算完所有可能性,可以直接回 推到第一手就確定雙方最佳情況下的勝負了。和局也是可能的,比如在沒有特別限制 什麼禁手的西瓜棋(http://taiwanpedia.culture.tw/web/content?ID=24221)來說 ,最佳解應該是雙方和局吧(以前有做過,不過沒有真的去窮舉完,所以我只說「應 該」,雖然就規則上看是無禁手的情況雙方永遠都有不被吃子的著手存在)。

11/29 11:15, , 22F
我覺得可以拿LoL的AI來討論,跟SLG比起來相對簡單(只需要操
11/29 11:15, 22F

11/29 11:16, , 23F
做一個單位) 但是光是前方一個敵人走進草叢要不要追擊
11/29 11:16, 23F

11/29 11:16, , 24F
可能就要算整場的概念了..
11/29 11:16, 24F

11/29 11:16, , 25F
AI畢竟還是人腦寫出來的,要計算也只能往寫的人能預測方向
11/29 11:16, 25F

11/29 11:17, , 26F
我個人覺得AI其實是將人腦推往無窮計算的極限而已..
11/29 11:17, 26F

11/29 11:18, , 27F
這也是遊戲能夠做到的程度,要做到自然學習的AI
11/29 11:18, 27F

11/29 11:19, , 28F
我到是很想教AI自己去想去學習.....
11/29 11:19, 28F
可以找一下Data Mining跟Maching Learning領域就在嘗試幹這回事XD。當然它 們都可以說是原本AI領域的延伸/變體就是,雖然嚴格來講也是有不同之處啦。

11/29 11:19, , 29F
背後的運算跟資料庫就不是一般遊戲能夠負荷的了..雖然特意
11/29 11:19, 29F

11/29 11:19, , 30F
往這方向做也算一個特殊的遊戲XD
11/29 11:19, 30F

11/29 11:21, , 31F
自然學習...其實我對AI沒特別研究啦,在我認知中自然學習
11/29 11:21, 31F

11/29 11:22, , 32F
需要儲存大量樣本 然後依造一個演算法去決定最後的結果
11/29 11:22, 32F

11/29 11:22, , 33F
那個演算法也是人寫出來的不是嘛?
11/29 11:22, 33F
比較General的Maching Learning演算法基本上都沒有針對遊戲規則上的偏頗就 是了,主要是不針對遊戲規則的一些機率假設啦。 至於需不需要一個資料庫其實是看演算法,有的把Model學出來後只要存Model架 構就好,大多數資料可以丟掉。再舉井字棋為例,當你已經學出先手下正中必不輸時 ,我方先手下另外八個位置的資料就一點都不用存了......類似這種概念。

11/29 12:18, , 34F
整個推文推到那麼長其實是因為感覺要是刻意每有一點想回就
11/29 12:18, 34F

11/29 12:18, , 35F
所以是用人腦寫的演算法去分析要儲存的情報嚕..
11/29 12:18, 35F

11/29 12:18, , 36F
回文,感覺好像會很有戰文的感覺,其實大家都只是分享意見
11/29 12:18, 36F

11/29 12:19, , 37F
就回阿 還能針對不同細向討論XD
11/29 12:19, 37F

11/29 12:19, , 38F
,只是不知不覺想講的講完就你看看我的推文已經這麼大了XD
11/29 12:19, 38F

11/29 13:04, , 39F
拜託回文.... 這一長串我連看都不想看
11/29 13:04, 39F

11/29 13:05, , 40F
這種推文法根本就虐待眼睛
11/29 13:05, 40F

11/29 13:07, , 41F
版主要不要處理一下
11/29 13:07, 41F

11/29 13:15, , 42F
這情況「無法」處理 XDDDDDD
11/29 13:15, 42F

11/29 13:16, , 43F
需要我幫忙把推文內容色碼修掉嗎?也許會好一點XD
11/29 13:16, 43F

11/29 13:16, , 44F
剩下就只能希望後續版友(包括我)用回的這樣XD
11/29 13:16, 44F

11/29 13:17, , 45F
正常的討論還是用回文的吧 不然容易失焦
11/29 13:17, 45F

11/29 13:17, , 46F
主要是有人用推文回應我就很自然推回去......就......XD
11/29 13:17, 46F

11/29 13:18, , 47F
建議你把推文分段 因為這是你的文章 你回應可以用修文
11/29 13:18, 47F

11/29 13:18, , 48F
的方式巧妙的把文章隔開
11/29 13:18, 48F

11/29 13:19, , 49F
我把我自己的推文整理一下好了
11/29 13:19, 49F
※ 編輯: ddavid 來自: 114.32.156.172 (11/29 13:46) ※ 編輯: ddavid 來自: 114.32.156.172 (11/29 13:53)
文章代碼(AID): #1Gjg-d3L (GameDesign)
討論串 (同標題文章)
文章代碼(AID): #1Gjg-d3L (GameDesign)