10分鐘機器學會打牌——21點

10分鐘機器學會打牌——21點

最近學到哪,寫到哪哈。

這個周末又看了下,機器學習的應用。對,就是用來打牌(21點)。雖然21點感覺並不是很難,但是如何讓機器自己學會打牌呢?這個還是蠻有意思的。反正是玩,自學就學點好玩的~

我將盡量避免專業名詞和數學, 因為TM我也不會,雖然琢磨了很久。很尷尬。

【劇透】為了方便時間不夠的同學,先劇透下

Q-Learning 簡單來說,就是做一張大表,然後把所有的狀態下,所有可選的動作記錄下來。 然後通過訓練,算出每個狀態下,每個動作的 分數。

然後依照分數進行指導後續的動作;

關鍵是,如何定義分數和把分數計算出來。 這個就得慢慢講了,沒辦法劇透了。。。

【演算法介紹】

Q-Learning, 該演算法屬於強化學習基礎演算法。強化學習就是大名鼎鼎的阿法狗Zero的核心部分之一。

一般新聞裡面講,強化學習通過試錯來學習。那麼具體是如何做到的呢? 反正我是很好奇。

Q-learning 就是基礎的強化學習演算法,接下來我將介紹該演算法。

首先,機器學習學的是什麼呢? 這個必須先明確, 學的是決策機制

講到學習,大家可能會想到吃一塹長一智之類的詞。 一個地方摔倒了,下次不能再摔了, 這就是學習。抽象點講,你為什麼摔倒了呢。那是你在離水坑0.1米(狀態1)的地方,採取了錯誤的動作(動作1),結果摔倒了。如果摔倒這個結果能打分的花,你可能會給-100分

那麼總結下,你的試錯就是,在狀態1(s1)採取了錯誤的動作(a1), 結果得分(r) = -100

那麼你學到了什麼呢? 很簡單呀,你學到了這個教訓呀。 反正下次再到這個地方,你不會再往前走了,你會試試其他方向。

本質上真的真的就這麼簡單,我自己都不敢相信。

那我們讓情況複雜點,一般我們的目標不是摔倒,而是正向的。

假設,現在的任務是一隻小猴子(位子1),需要到位子6拿到香蕉。 拿到香蕉算100分。如何讓他自己找到拿香蕉的路呢?並且學會找到拿香蕉的路呢。 當然啦,他肯定不能預知下一個位子哈。

那問題來了,小猴子怎麼學會走到位子6呢?

再回到那個水坑的例子,其實假設猴子在位子5,不小心走到了位子6,吃到香蕉獎勵100,那麼下次他再到這個位子5的時候就會重複這個選擇;

它心目中這個選擇應該值一些分數,雖然可能不是100.這裡需要引入一個類似折現率的概念。比如猴子在(位子5,向右)之後一步吃到了100分,那麼之前一步的分數就是100*90%;這就是類似折現或者衰減的概念。(90%是人為規定的,你也可以規定成85%,當然要比1小)

這個時候我們就完成了分數的反向傳遞,從6傳到了5.

當下次從位子4走到位子5時,位子5的分數90分,就會傳到到(位子4,向右)

100*90%*90%=81

這樣重複多次,就能傳到位子3,2,1 (不考慮學習率)

那麼(位子5,向左)的分數呢? 假設路徑是:

4-5(左)-4-5-6

大家看到上面的(位子5,向右),離位子6有三個動作。即100*90%*90%*90%,肯定比向右的獎勵值小。

總結下,Q-Learning 就是要通過獎勵值的反向傳遞,完成整張Q值表。

後續,猴子到每個位子,就看下向左的分數,和向右的分數,比一比就好啦

說了這麼多,終於回到正題(21點)

【21點規則】

  • 玩家單獨面對莊家,並且會洗牌(所以沒辦法用之前的牌算概率)
  • 21點最大,超過21點自動輸;花牌算10點,Ace算11點或者1點
  • 開局玩家和莊家各兩張牌,一張顯示出來,一張蓋住;
  • 玩家要牌先直到滿意為止;
  • 然後庄家亮牌,抽牌到17或者更高;

對於21點來說,我們的狀態就是牌面,(我方總分數,對方分數),選擇就是抽牌或者不抽,獎勵就是(勝利1,失敗-1,平0)

其實,21點最多也只能抽個三四張牌。那麼我們的決策鏈路比上面那個猴子的例子更簡單,複雜的點是21點的狀態很多。 我放手牌有很多種可能,對方手牌也有很多種可能。

還剩下代碼實踐部分和學習率,將於明天給大家解釋。

請關注我的微信公眾號,陪我一起自學機器學習~~:好奇寶寶與機器學習

weixin.qq.com/r/rSmFnTT (二維碼自動識別)


推薦閱讀:

機器學習各種熵:從入門到全面掌握
吳恩達導師Michael I.Jordan學術演講:如何有效避開鞍點(視頻+PPT)
2017年深度學習頂級論文盤點
邏輯回歸的重要性
機器學習萌新必學的Top10演算法

TAG:科技 | 機器學習 | 神經網路 |