作者H45 (!H45)
站内Prob_Solve
标题[讨论] 分析局势
时间Wed Feb 14 16:14:54 2007
有一个演算法
输入目前的状态和过去的经验
就可以预测未来所有可能的状态、并且根据过去的经验做学习
然後输出最佳的行动给使用者
这个演算法可以用在围棋、西洋棋、象棋、五子棋……等各式棋类
也可以用在魔兽、星海、世纪……等各式即时战略
更可以用在天堂、魔兽世界、完美世界、枫之谷……等各式线上游戏
这是人工智慧....
================
以上是开场白
现在的人工智慧技术并不如人脑聪明
上面的例子都还没有令人称赞的人工智能
电脑下围棋很弱、即时战略也不行
只有线上游戏和不太复杂的棋类还过得去
====================================
扯了一大堆,现在开始缩小讨论的点....
现在我们的演算法可以预测未来所有可能的状态
这没问题,模糊理论可以减少许多类似的状态
我们的演算法可以根据过去的经验做学习
这也对,过去失败的例子可以告诉演算法现在不可以再犯
过去成功的例子可以告诉演算法现在可以继续套用
这两个都没问题,所以最後我们会得到最佳的行动....是这样吗?
并没有这麽简单
首先,评估函数不好设计也不好实作
只有该领域的专家才知道什麽状态叫作「好」,什麽状态叫作「不好」
你会算围棋的劫材谁多谁少吗....? 只有围棋的专家才会算吧!?
再来,预测未来所有可能的状态
虽然模糊理论可以做,但是差之毫厘失之千里
什麽样的状态需要搜寻,什麽样的状态不需要搜寻
这边也一样,只有该领域的专家才知道
等等,这样推论下去,岂不是要扯到专家系统了?
呵....并不是的
因为以上通通不是重点....
我所着眼的点,在「机器学习」
过去失败的经验,现在不可以再犯
过去成功的经验,现在可以继续套用
失败的经验和成功的经验,专家会告诉演算法,所以我们不需要担心这个
重要的是,储存这些「经验」,将会耗费大量的「空间」
所以我们得想个妙计来减少需要的空间来储存这些「经验」
有人估计围棋的所有可能大约是 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
1F:推 SCSonic:师大有位研究生,在作围棋的破解程式的样子 02/14 16:49
2F:→ SCSonic:不过那是四年前的事XD 现在应该作完了 02/14 16:50
3F:推 march20:"突然一蹶不起"是指值变得极差还是什麽意思@@? 02/15 09:18
4F:推 H45:我无法给它明确的定义,而这也是我想问的问题之一 02/15 11:42
5F:→ H45:这问题就是在股市的K线图中能找到跌破支撑线的关键时间 02/15 11:44
6F:→ H45:在某n时间区段的均线来看,斜率一直是负数 (可是n要取多少?) 02/15 11:44
7F:→ H45:由市场资讯判断出经济大恐慌的前一刻 02/15 11:47
8F:→ H45:嗯....这不是要预测,而是由过去的资讯中找到有用的资讯 02/15 11:48
9F:推 H45:可是我不知道要从哪个角度来思考 02/15 11:51