• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    黑白棋AI設計探究

    2017-04-27 11:44:17黃海同
    電腦知識與技術 2016年29期
    關鍵詞:人工智能算法

    黃海同

    摘要:與博弈有關的算法近年來取得了巨大進步,將這些算法應用于黑白棋AT設計可以帶來顯著的效果。該文所述的探究中,將傳統(tǒng)的AI算法針對黑白棋做一些有效的改進,并使用MCTS搜索、機器學習等方法,很大程度上提高了AT的水平。

    關鍵詞:黑白棋;人工智能;算法

    中圖分類號:TP18 文獻標識碼:A 文章編號:1009-3044(2016)29-0198-03

    1簡介

    黑白棋是被稱為“設計理念”僅次于圍棋的棋類游戲。它的棋盤只有8*8大,乍一看貌似簡單,以為只要略微搜索就可以窮盡其中的路數(shù)。然而隨著探究的不斷深入,這個看似簡單的游戲卻不斷涌現(xiàn)出它神秘莫測的一面。

    作為一名高中生,經(jīng)過為數(shù)不多課余時間的努力,我所設計的黑白棋程序bwcore實力已經(jīng)達到相當?shù)乃?。?jīng)測試,它在北京大學人工智能對抗平臺botzone.org上戰(zhàn)力排行達到第一。通過與另外一些AI的測試表明,目前的bwcore可以輕易打敗國內(nèi)個人編寫的程序,亦能與專業(yè)公司開發(fā)的黑白棋軟件(zebra,傷心黑白棋等)相抗衡。

    本篇著重講述了bwcore是如何更好地運用各類算法,使之融入到黑白棋AI設計中,達到提高AI水平的目的。本文還對AI設計作了一定程度的研究,先是介紹了一些較基礎的算法在黑白棋AI設計中的應用,而后還探討了實現(xiàn)AI的一些更高級的方法,以求有所突破。

    2AI設計

    2.1Minimax搜索

    Minimax搜索的第一要義是雙方都按照對自己最有利的決策,對盤面進行模擬。如果能夠評價某一時刻其中一方的優(yōu)劣程度,則另一方走棋時就會選一種使對方優(yōu)勢盡可能小的走法。如圖所示,按照這種方式模擬出井字棋所有可能的局面,所有局面就構成一棵極大極小博弈樹。

    根據(jù)上述做法,不難寫出簡易MiniMax搜索的代碼。當搜索達到指定深度后,進行當前局面的分值估算。val為當前層的分值,當前層的顏色與己方相同時,使之盡可能大。

    float Cmp_BW::MaxMinSearch(Map&fmap,int col,int deep)

    {

    if deep>target_deep Then

    search_cnt++;

    return Sence_Evalution

    For-Each place_in_board

    If place_is_availaleThen

    MakeMove

    ret=MaxMinSearch(board.color_other,deep+1);

    UnMakeMove

    if col==my_color Then

    2.2剪枝與改進

    Minimax算法提供了一種在博弈樹上尋求最優(yōu)解的方法,但缺點很明顯。算法需要遍歷博弈樹上所有可能的情況,盡管很多時候是根本不可能的(例如一方選擇了一個明顯劣勢的位置)。通過AlphaBeta剪枝可以減少這種情況發(fā)生。如果當前結點獲得的值已經(jīng)小于其父節(jié)點之前得出的值,那么就沒有繼續(xù)搜索的必要,因為按照選擇的邏輯,這個節(jié)點一定會被父節(jié)點排除在外。

    經(jīng)測試,搜索的節(jié)點數(shù)明顯減少,約為原來的3/4次方。

    測試表明,一般人已經(jīng)難以戰(zhàn)勝4~5層的搜索了。而把搜索深度設定為4層可以在botzone排行榜上達到約40名。

    3高級搜索方法

    3.1蒙特卡洛搜索

    谷歌的圍棋智能AlphaGo就使用了基于蒙特卡洛樹搜索(MCTS)的搜索方式。MCTS在圍棋領域十分成功,在其他方面也有很大的借鑒意義。

    蒙特卡洛搜索通過對局面的隨機模擬來獲得對各個節(jié)點搜索的關注程度,可以說在理念上很接近人的思維方式。UCT算法是蒙特卡洛搜索的一種,旨在得分未知的前提下使期望得分最大。UCT算法為每一個節(jié)點計算UCB值,每次擴展時選擇UCB最大的節(jié)點。

    其中,X表示以前的收益,N表示總次數(shù),T表示當前階段的次數(shù)。這個式子的蘊含的內(nèi)容是,如果一個節(jié)點的得分很高,那么就它很值得深入研究,而一些得分較低的節(jié)點有時也會去嘗試,但次數(shù)不會很多。在極端條件下,多個選擇方案中有一個方案的值遠好于其他方案,則UCT算法的收斂速度很快。另一方面,如果所有方案得分相差不大,UCT隨著搜索次數(shù)的增加,所有節(jié)點的得分趨于穩(wěn)定。

    結果表明單純的UCT算法效率極高,經(jīng)過很少時間就估算出精確值相近的結果。但因有時隨機選點得出結果差異大,下棋時偶爾會出現(xiàn)失誤。但總體而言,樸素的UCT算法的效果已經(jīng)很優(yōu)秀,測試過程中棋力超過前面基于MiniMax搜索的算法??梢韵胍姡绻茉赟imulation過程中加以優(yōu)化,還有很大提升空間。

    3.2遺傳算法

    遺傳算法也是比較好的搜索方式,它通過借鑒生物界的進化規(guī)律來加強搜索。將前面的搜索局面各行列情況視為遺傳算子,搜索過程中經(jīng)過交叉、變異算子,評估新算子的可靠程度,將進化較成功算子反作用于搜索,每次得出更好的搜索方法。具體過程如下:

    1)隨機生成n個個體作為迭代的初始群體;

    2)計算群體中每個個體的適應程度;

    3)進行選擇,把適應度高的個體的基因傳遞給下一代;

    4)使新生成個體的基因交叉互換;

    5)對基因做一定程度的變異;

    6)返回2),除非適應度達到指定水平或已經(jīng)達到最大迭代次數(shù)。

    經(jīng)過多次迭代,適應度高(這里即勝率高)的基因將遺傳下來,最終得到高度適應的群體,即我們下一步所期望的走法。

    4機器學習與增強學習

    前面的幾種搜索方法比原先單純的搜索更具智能性,有更高的效率。目前為止,我們還未對局面的評估做出很好的改進。而估價函數(shù)的選取十分困難,大多依靠編寫者自己的直覺,有時為了讓某個權重來達到合適的值,還要耗費大量時間進行試驗并調節(jié)。所幸,運用機器學習的方法可以使這些問題得到較好的解決。

    4.1決策樹與隨機森林

    決策樹(Decision Tree)是其中一種比較簡單的做法。決策樹可用于對帶標簽數(shù)據(jù)的分類,并可以在相對短的時間得出效果良好的結果。依照數(shù)據(jù)標注的特點,決策樹的每一個分支對這些樣本進行劃分,最終使樣本按照標簽歸類。預測時,將想要預測的數(shù)據(jù)選擇相應分支找到對應的歸屬即可。

    在黑白棋中,如果將黑方獲勝視為樣本中的正類,白方獲勝視為負類,棋盤上黑白棋子的位置作為樣本的標簽,就可以將對局面的評價轉化為分類問題。決策樹通過不停尋找最優(yōu)分裂使數(shù)據(jù)更好地被分離。這里使用C4.5算法,通過信息熵獲得最優(yōu)分裂。由于單純使用棋子的位置作為標簽信息量較大且十分復雜,容易造成一種稱為過擬合的問題。將決策樹上改為隨機森林,可以避免了過擬合,節(jié)約了訓練時間。

    4.2神經(jīng)網(wǎng)絡算法

    人工神經(jīng)網(wǎng)絡是當下計算機話題最熱門的內(nèi)容之一。神經(jīng)網(wǎng)絡的種類繁多,BP神經(jīng)網(wǎng)絡是神經(jīng)網(wǎng)絡中最簡單的一種模型。

    BP神經(jīng)網(wǎng)絡的結構如圖,左邊為輸入層節(jié)點,右邊為輸出層節(jié)點,中間包含一個或多個隱含層。

    每個神經(jīng)元從其上一層獲得輸入,將輸入通過自身權值和閾值變換后施以適當激活函數(shù),傳遞到下一次神經(jīng)元。這樣的過程稱為正向傳遞(Fowed Transfer)過程。根據(jù)正向傳遞得到的網(wǎng)絡輸出與訓練目標比較計算當前網(wǎng)絡的誤差,然后向前調整各個神經(jīng)元權值,就是所謂的反向傳遞(Reverse Transfer)過程。BP網(wǎng)絡不停通過這種方式訓練減小誤差,最終使每個訓練輸入都收斂于目標輸出。

    這里使用棋盤上黑白棋子的分布作為輸入層節(jié)點,用01表示,輸出層表示輸贏棋子數(shù)。訓練結果表明,雖然目前的網(wǎng)絡能較好地擬合訓練集中的局面,但對于推廣與訓練集不同的輸入數(shù)據(jù)較為困難,這可能是因為當前所使用網(wǎng)絡的局限性。此外,BP神經(jīng)網(wǎng)絡隱含層的層數(shù)不宜過多,否則收斂十分緩慢。使用深度學習中更高級的神經(jīng)網(wǎng)絡如卷積神經(jīng)網(wǎng)絡(CNN)等應該能夠得到更好的效果,但過程比較復雜,目前個人難以實現(xiàn)。

    4.3訓練方式

    學習算法需要進行訓練,一種方式是使用接近后期時搜索得出的結果,這種方式獲得樣本的準確度較高。如果按照終局搜索步數(shù)15-20步計,訓練好的AI將可以在近30步時獲取很大優(yōu)勢。

    //用后期對局結果作為樣本訓練

    void Cmp_BW::train(int repeat)

    For lxain_count

    For remain_step>target_step

    run_easy(map)//使用簡單方式下棋,節(jié)約時間

    score=getScore(map)//獲得比分

    deetree.tmin(map,score);//用樣本訓練

    5總結

    本次設計AI運行結果已經(jīng)超過了預期的目標,此前沒有想到過可以在排行榜占據(jù)第一的位置。當然,目前算法距離其所能達到的最高水準還有較大差距,因為看起來還有一些明顯的改進方案。不過,作為一個純屬興趣愛好出發(fā)而編寫的程序,能夠取得較好的結果已令人滿意。由于無法在這方面投入太多的時間,所以目前本人對黑白棋AI的研究大致到此,希望將來能夠繼續(xù)深入探究這一方面的問題。

    猜你喜歡
    人工智能算法
    我校新增“人工智能”本科專業(yè)
    基于MapReduce的改進Eclat算法
    Travellng thg World Full—time for Rree
    2019:人工智能
    商界(2019年12期)2019-01-03 06:59:05
    進位加法的兩種算法
    人工智能與就業(yè)
    算法初步兩點追蹤
    數(shù)讀人工智能
    小康(2017年16期)2017-06-07 09:00:59
    基于增強隨機搜索的OECI-ELM算法
    下一幕,人工智能!
    南風窗(2016年19期)2016-09-21 16:51:29
    新津县| 永修县| 江津市| 隆德县| 平阳县| 翁源县| 通城县| 灵山县| 庄河市| 乌苏市| 文山县| 滦平县| 雅江县| 怀仁县| 京山县| 广州市| 绥宁县| 北海市| 舟山市| 镇巴县| 龙游县| 都江堰市| 肇东市| 定日县| 绿春县| 沐川县| 仲巴县| 五莲县| 张家界市| 明溪县| 卢湾区| 古交市| 佛冈县| 安岳县| 鲁甸县| 兴义市| 宿迁市| 盘山县| 湖南省| 定西市| 阿城市|