[討論] 分析局勢
看板Prob_Solve (計算數學 Problem Solving)作者H45 (!H45)時間18年前 (2007/02/14 16:14)推噓4(4推 0噓 5→)留言9則, 3人參與討論串1/2 (看更多)
有一個演算法
輸入目前的狀態和過去的經驗
就可以預測未來所有可能的狀態、並且根據過去的經驗做學習
然後輸出最佳的行動給使用者
這個演算法可以用在圍棋、西洋棋、象棋、五子棋……等各式棋類
也可以用在魔獸、星海、世紀……等各式即時戰略
更可以用在天堂、魔獸世界、完美世界、楓之谷……等各式線上遊戲
這是人工智慧....
================
以上是開場白
現在的人工智慧技術並不如人腦聰明
上面的例子都還沒有令人稱讚的人工智能
電腦下圍棋很弱、即時戰略也不行
只有線上遊戲和不太複雜的棋類還過得去
====================================
扯了一大堆,現在開始縮小討論的點....
現在我們的演算法可以預測未來所有可能的狀態
這沒問題,模糊理論可以減少許多類似的狀態
我們的演算法可以根據過去的經驗做學習
這也對,過去失敗的例子可以告訴演算法現在不可以再犯
過去成功的例子可以告訴演算法現在可以繼續套用
這兩個都沒問題,所以最後我們會得到最佳的行動....是這樣嗎?
並沒有這麼簡單
首先,評估函數不好設計也不好實作
只有該領域的專家才知道什麼狀態叫作「好」,什麼狀態叫作「不好」
你會算圍棋的劫材誰多誰少嗎....? 只有圍棋的專家才會算吧!?
再來,預測未來所有可能的狀態
雖然模糊理論可以做,但是差之毫厘失之千里
什麼樣的狀態需要搜尋,什麼樣的狀態不需要搜尋
這邊也一樣,只有該領域的專家才知道
等等,這樣推論下去,豈不是要扯到專家系統了?
呵....並不是的
因為以上通通不是重點....
我所著眼的點,在「機器學習」
過去失敗的經驗,現在不可以再犯
過去成功的經驗,現在可以繼續套用
失敗的經驗和成功的經驗,專家會告訴演算法,所以我們不需要擔心這個
重要的是,儲存這些「經驗」,將會耗費大量的「空間」
所以我們得想個妙計來減少需要的空間來儲存這些「經驗」
有人估計圍棋的所有可能大約是 10^100
這是一個天文數字
如果我們把「所有」的經驗通通存起來
第一個掛點的肯定是硬碟
試想,我們的大腦,有160GB嗎?
腦細胞雖然很多,但是硬碟的空間肯定比大腦能記的東西還多
可是人腦又比目前的電腦聰明
所以重點是「儲存的東西」是什麼
我們只要儲存「關鍵」、「有用」的東西就好了
不重要的、不常用到的東西,就「遺忘」它
===================================================
好了,現在目標確定了:想個法子讓演算法只記錄重要的部分,並且遺忘不重要的部分
Oops, 也許有人聯想到「類神經網路」
好,我暫時先不考慮那個領域
一切由零開始
回想小時候下棋的時候
如果你輸棋了,那麼肯定是上一步下錯了,要不然就是上上一步下錯,再不然就是上上上
一步下錯....
回想小時候玩格鬥天王的時候
如果你被連續接個好幾段,那麼肯定是前一秒內的動作錯了,要不然就是前兩秒內的動作
錯了,再不然就是前三秒內的動作錯了
好,重點是,到底是哪步做錯了??
一般的作法是,把每次嘗試的方法都記下來
如果你發現昨天你下圍棋的時候,和現在的盤面一模一樣,而且下了某一步棋後輸掉
那麼今天你就不要再下那個地方
如果你發現前天你和別人打格鬥天王,出現和前天一模一樣的畫面,而且在跳起來之後
馬上被接個好幾段,那麼你今天就不要再跳起來了....
有發現什麼問題嗎?
第一個嚴重的問題是:所有的經驗都要記下來,但是硬碟沒有足夠的空間給我們放
第二個嚴重的問題是:也許真正的問題並不是跳起來,而是前兩秒往前亂衝才會這樣....
意思是說:存放空間不足;以及學習錯誤
好的,第一個問題還算不難解決,至少比第二個問題還簡單..(但是也不是那麼簡單..囧)
解決存放空間不足的問題:
1. 只記錄最失敗的那一刻。 (人在輸球的時候,也是只記住明明「那」一球可以贏的
只是自己沒有掌握好)
2. 遺忘最沒被用到的經驗。 像是LRU (Least recently used) 般的機制
================================================================
OK, 排除掉這些問題了....
第二個嚴重的問題:也許真正的問題並不是跳起來,而是前兩秒往前亂衝才會這樣....
回想小時候下象棋的時候
以為自己下了一手妙棋,卻在繼續推演10幾手的時候才發現剛剛的妙棋變成了大惡手
回想當年玩魔獸爭霸的時候
以為自己可以集中火力攻擊蜘蛛,結果卻被寒冰甲反將一軍
真正的問題出在哪?
在發現局勢變壞的時候,有辦法了解問題點是前10步的惡手嗎?
難道集火攻擊錯了嗎? 問題是出在集火身上嗎?
也許有人會懷疑評估函數做錯了
這個懷疑永遠是對的
因為事實上沒有「完美」的評估函數
評估函數本質上的問題將是機器學習所要解決的問題
那我們該怎麼辦
評估函數是該領域的「專家」做出來的
如果我們膽敢更動這個「寶貴」的東西
誰知道這個評估函數會不會變笨??
好,也許我們有辦法「偵測」局勢開始變壞
而變壞的問題源就是那個看似妙手的大惡手
重點是,該怎麼偵測?
也許我可以畫一個K線圖
看看什麼時候開始跌破壓力線....
或是畫一個均線圖
看什麼時候均線再也拉不回來......
如果有人看過世紀帝國遊戲結束後的時間與人數的關係圖,也許會知道我在說什麼....
滅掉某一家之後,他的人數會大幅減少,並且一蹶不起,就像股市崩盤一樣
不知道有沒有辦法偵測這種東西呢?
輸入:{(x, f(x))|x, f(x)屬於R}
輸出:突然一蹶不起的臨界點....(我實在無法給它一個明確的定義 ˊˋ)
演算法:?
希望有板友可以提供任何心得
或是任何可以延伸出去的資訊,在此先謝過了!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.213.121
推
02/14 16:49, , 1F
02/14 16:49, 1F
→
02/14 16:50, , 2F
02/14 16:50, 2F
推
02/15 09:18, , 3F
02/15 09:18, 3F
推
02/15 11:42, , 4F
02/15 11:42, 4F
→
02/15 11:44, , 5F
02/15 11:44, 5F
→
02/15 11:44, , 6F
02/15 11:44, 6F
→
02/15 11:47, , 7F
02/15 11:47, 7F
→
02/15 11:48, , 8F
02/15 11:48, 8F
推
02/15 11:51, , 9F
02/15 11:51, 9F
討論串 (同標題文章)
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章