国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

BetaMeow----利用機器學習做五子棋AI

bingchen / 1694人閱讀

摘要:簡言之,機器學習是內功,而數據挖掘則是機器學習的一種用途。但本質上是我在學習機器學習方面的實戰項目,所以我想辦法利用機器學習的方面的算法實現。

BetaMeow的起源

前段時間AlphaGo和李世石廣受關注,作為人工智能的腦殘粉,看完比賽后激動不已,因為有一定的機器學習的基礎,便打算擼一個棋類的AI,但我還算有點自知之明,圍棋AI,甚至google打算做得通用AI是做不出的了,所以打算擼一個五子棋的AI。

選取五子棋作為試手項目主要是以下幾點原因:

規則簡單。為了簡單起見,BetaMeow只要有一方練成五子就可以判輸贏。

受眾多。因為五子棋的規則相對簡單,使得其受眾遠比圍棋多,換句話來說,我把BetaMeow做出來了,那么可以測試的人也多。

機器學習的簡單介紹

近年機器學習數據挖掘,人工智能很火,但其實不少人對這些名詞其實是一頭霧水,我嘗試用我自己的語言解釋,如果有什么需要完善的地方,歡迎提出。

比如說,有一個模型能夠能夠根據一個人的社交動態,推斷出他是喜歡蘋果還是香蕉,那么,我現在想知道某個社交平臺上市喜歡蘋果的人多,還是喜歡香蕉的人多。顯然,我把社交平臺的數據扔進模型中跑一遍就可以了,但社交平臺數據肯定不是說一兩個txt文件這么簡單啊。這時就可能涉及網絡爬蟲(收集數據),分布式存儲(數據量巨大的時候),過濾無關的數據(數據清洗),修改模型使得符合當前業務場景(花式調參),跑完數據獲得結果后決定采取什么商業措施等。(BI)

機器學習就是負責考慮如何建立模型,而數據挖掘則是負責其他地方,不過一般來說,數據挖掘部分的工作可能會分開幾個部門來做。

簡言之,機器學習是內功,而數據挖掘則是機器學習的一種用途。而人工智能,就是更廣的概念了

五子棋AI

回到正題上,傳統的五子棋AI采用的搜索算法,這個方面其實已經很完善,聽聞已經出現了無解的結果(玩家無法取勝)。但BetaMeow本質上是我在學習機器學習方面的實戰項目,所以我想辦法利用機器學習的方面的算法實現。

最后選擇決策樹算法。通過決策樹判斷該局的狀況,屬于對方(玩家)占優還是己方(AI)占優。

什么叫決策樹

至于什么叫決策樹,有時真的是一圖勝千言。

圖片來至于http://www.52analysis.com/shujuwajue/2441.html

簡單來說,通過一層層的篩選下來,你就能獲得相應的結果。

如何構建決策樹

關于如何構建決策樹,如果需要了解文字說明,可以參考這里,如果需要參考python的代碼實現,可以參考下文給出的github地址,這里只給出簡單總結。

簡單描述

在一個二維集合(可以看成矩陣)中,第二維代表每一個決策的實例,用某種方式(例如信息增益(首先要計算熵))在確定一個最佳分割點(p),然后以該點作為根節點,此時剩下的子集有兩種情況,要么作為決策樹的結果,要么遞歸下去創建子樹。

選取特征

有句話叫好的數據勝過好的模型,經過這番實踐我算是真正認識到這句話的意思。機器學習的算法不是你隨便扔一個數據集下去,他都能訓練出一個有效的模型。我曾經把整個棋局扔給他它訓練,然而并沒有什么亂用。幾番周折才角色以連子形式作為訓練的內容。

舉個例子

[1,1,0,1,2]

這個訓練集表明,玩家的連子形式已經是1,1,0,1(0表示空位),如果玩家順利連成了4子,那么AI則徹底出于劣勢,因為如果4子是在棋盤中間的話,那么ai只能堵一邊,玩家還是可以在另一邊連成5子。

所以ai應該下在2號位,阻止其連成4子。

我的代碼中有大量如此的數據,用于教會ai決定是及時阻止對方,還是提高自己的連子數。(跑兩次不同的決策樹)

BetaMeow的未來與本文后話

BetaMeow現在顯然是不完善的。

首先是五子棋規則的本身,首先是五子棋棋盤應該15x15,然后無知的我把它弄成了19x19,然后規先后手的規則好像也有不同的規定,但我沒有考慮太多這方面,畢竟我的主要目的是機器學習的實踐,并非做出一個五子棋游戲。五子棋只是一個載體。
同樣是因為我的目的在于算法,所以界面不太美觀,甚至在不同分辨率上可能有問題(使用的bootstrap應該問題不大),所以如果有較為熟悉前端的朋友,歡迎修改修改后Pull Requese給我。

第二點,算法本身也有不完善的地方。
因為目前的方案是遍歷棋局,分析各店的形式,可能因為循環的原因,會導致后面的選擇覆蓋掉前一個選擇,從而錯過了一些最好的選擇。

下一步會是給每一個選擇的結果加上權重,從而避免上述問題。

嗯,說了這么多,最后給出這個項目的github地址

my_github

重要的事情再說一遍。

前端真的做得很爛,如果有熟悉前端的朋友幫我修改一下,真的萬分感謝。

這個github地址會記錄下我學習機器學習和數據挖掘的各種小項目(包括我之前的圖片識別的項目),將會持續更新很長一段時間,如果你對這個有興趣,歡迎關注和支持。

如果你也有機器學習和數據挖掘等相關的項目,歡迎推薦給我,大家互相學習的同時,我也會在我的項目的README中給出你項目的URL(你也要給出我項目的URL哦,親)

感謝關注和支持。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37897.html

相關文章

  • SegmentFault 技術周刊 Vol.23 - AlphaGo 兩連勝柯潔:“狗” 來了!

    摘要:的前世今生去年月,橫空出世,戰勝了韓國棋手李世石,贏下了人機對弈的第一戰。當然,隨著技術的不斷發展,人工智能有望在所有領域完全超越人類,成為超人類智能,為人類文明的發展做出更大的貢獻。 showImg(https://segmentfault.com/img/bVOgwC?w=900&h=385); AlphaGo 的前世今生 去年 3 月,AlphaGo 橫空出世,4:1 戰勝了韓國...

    anquan 評論0 收藏0
  • Python實現AI子棋

    摘要:可以說,每個評估函數就是一個選手,對不同的棋型每個選手自然有不同的看法和應對措施,當然他們的棋力也就因此各不相同了。方搜索最大值,人類方搜索最小值。了解了上述原理之后,就可以自己寫代碼實現了。 公眾號:Charles的皮卡丘作者:Charles 開發工具:Python版本:3.6.4相關模塊:graphics模塊。 環境搭建:安裝Python并添加到環境變量即可。 原理簡介:對于五子棋...

    Yangder 評論0 收藏0
  • AI智能子棋算法——假如我是計算機

    摘要:所有獲勝的數量和數量統計經過通過棋盤上所有可能勝利的情況不過種而已計算最合適的落棋目標如果我是計算機,接下來我要做的就是當聰明的人類下好棋之后,我怎樣下好自己的棋。 1.前言 記得讀大學時,有段時間特別喜歡和室友們下五子棋,由于腦子不是特別靈光,再加上室友確實經驗豐富,自己自然是屢屢戰敗。時光荏苒,一眨眼好多年過去了,很是懷念那時愜意的時光!大學畢業后,室友們都從事了不同行業的工作,我...

    CodeSheep 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<