DataScience 板


LINE

嗨各位,最近花了一些時間學習機器學習相關主題,想說來用python設計一個會玩21點的 機器人好了,以下會簡單介紹我使用的遊戲環境,深度神經網路,和相關成果。 一、遊戲環境:openAI的gym,簡單程式碼如下 https://imgur.com/wCFHI5t 可以看到要在python搭建Blackjack環境其實非常簡單,import完gym之後用gym.make就能 搭建各種遊戲環境。 二、規則: 而我們這個遊戲是我們要擔任player的角色和莊家(dealer)對賭,我們起始會有兩張 手牌,莊家則會有一張。點數方面2~10都以牌面作為點數,J,Q,K都算10點,ace可算1或1 1。 我們只有兩種動作可以選擇:拿牌(hit)或不拿(stand)。 目標是讓手牌點數和最靠近21點,若超過21點(爆牌)則直接判定輸了。 在我們決定不拿牌後,換莊家開始拿牌,莊家若手牌和低於17點,必須繼續要牌。 最後比誰的牌點數和最靠近21誰就贏了。 後續我還有改寫gym的環境讓我們可以做雙倍加注(double),讓玩家可以採取 更多策略,更符合實際情況。 總之這張圖的重點在env.step(action)那行,簡單說就是 我們隨機採取了一個action(0代表stand, 1代表hit)然後observation就是遊戲當前狀態 ,會回傳一組數字:(我方當前手牌和, 莊家手牌, 我方是否有ace),那reward就是強化 學習當中很重要的機制,可以讓我們透過這種獎懲機制去訓練模型,-1代表輸了;0代表 我們還沒爆牌或是平手;1代表我們贏了。done回傳True或False表示當局結束與否。 在完全採取隨機action的情況下玩10萬場的勝率約27%。 三、訓練方法:Deep Q Learning 我是用keras搭建神經網路的,因為比tensorflow簡潔直觀。附上我使用的超參。 https://imgur.com/Fbv8Nwp 我搭建了三層fully connected layer,activation function都用relu沒問題, 但output layer的activation function就不能用relu了,因為在DQN中我們的input 是遊戲的state也就是我們上面提到的observation,我們的output則是在碰到這樣的 state,我們“採取各個動作預期的reward們” 打個比方:我們可能input [11, 6, 0],表示我們手牌和是11,莊家拿6,我們沒ace。 這個神經網路的output應該要像這樣 [-0.4 0.2],其中-0.4表示採取stand預期的 reward,0.2表示採取hit預期的reward,那我們當然希望reward越大越好所以就採取 hit這個動作。 因此這個output通常是有正有負的,不能用relu,那就用linear吧。 再簡單提一下memory,是我們儲存各個observation跟action的地方,在訓練的時候 會從中隨機抽樣用TD的方法去不斷更新我們的神經網路。 四、基本版訓練成果: https://imgur.com/9l0Akrl 靠左的數字是我們的手牌,上面的數字是莊家的手牌,H(hit拿牌)或S(stand不拿) 則是這個神經網路打算採取的策略,會有兩段是因為上面那段是手上沒有ace的情況 ,下面是有ace的。 可以看到這個神經網路已經可以做出和人類非常相近的決策:在大牌選擇stand, 小牌選擇hit,並在手上有ace的時候更積極hit。而在這樣策略下勝率提升到42%, 敗率49%。 也就是說平均每下注一百元會輸掉七元,雖然相較完全隨機玩有顯著的進步,但還有 進步空間,因此我決定加入其他戰略(double)讓玩家可以選擇雙倍下注,看能不能 讓機器人有更聰明的表現。 五、加入double戰略 由於openAI的原始程式碼並沒有double的功能因此我自己改寫了一下他們的程式碼, 簡單來說現在玩家可以選擇在第一手要不要double,要是double的話,玩家只能再拿 一張牌,然後莊家開始要牌。 神經網路方面我一樣用DQN下去train,只是在output的時候變成輸出三種動作的 期望reward。除此之外我參考了周莫煩的code和prioritised replay的paper實作了 優先回放,其中有用到sumtree的資料結構。也加入了doubleDQN的訓練方法。 六、double版訓練成果 在看這個神經網路的決策之前我們先看一下我們人類推算出的最佳21點戰略表。 https://imgur.com/15vKVBF 然後這是我們的神經網路在面對各種情況所下的決策表。 https://imgur.com/eKQzWDW 可以看到明顯它學習到在我們握有9, 10, 11且莊家是weak hand的時候可以進行 double,還有在手上有ace的時候該如何double等等。雖然不盡完美,但在我用這個 神經網路下去玩一百萬場的結果平均每一百元大約輸2.X元左右,如果真的要贏錢, 可能還要加上split的戰略和算牌了。 七、結語 其實發文也同時是記錄自己的學習筆記和找到同樣對RL也有興趣的朋友、前輩一起 討論啦,感謝大家耐心看完。要是對我的程式碼有興趣歡迎到我的github按個星https:// github.com/blue0107/DQN-blackjack-pokerbot,歡迎大家討論 指教啦! --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.246.75.8
※ 文章網址: https://webptt.com/m.aspx?n=bbs/DataScience/M.1535696714.A.DA8.html
1F:推 goroundround: 推實作!強一點來做一發lol08/31 14:35
※ 編輯: b05703 (27.246.75.8), 08/31/2018 14:47:56
2F:推 tritonight: 推08/31 15:43
3F:推 nistik84114: 推 08/31 18:11
4F:推 st1009: 推08/31 19:55
5F:→ b05703: 程式碼上傳到github囉08/31 21:17
6F:推 dddddd67: 讚08/31 21:17
※ 編輯: b05703 (27.246.75.8), 08/31/2018 21:23:05
8F:→ yoyololicon: 副檔名怎麼消失惹 08/31 22:52
9F:→ b05703: 你說在github裡面嗎 我看一下 08/31 23:33
10F:推 ymymio: 不推 不行 09/01 01:14
11F:推 y956403: 有實作有推 09/01 05:40
12F:推 gn02335338: 推 09/01 11:16
13F:推 goobbye: 很有趣,推@@~ 09/01 13:24
14F:推 st1009: 可以請問一下大該是花了多久的時間嘛? 09/01 15:18
15F:→ b05703: 從我開始學什麼是DQN到完成大約一個多禮拜吧 我花比較多 09/01 15:40
16F:→ b05703: 時間在理解別人的code和讀prioritized replay的論文 歡迎 09/01 15:40
17F:→ b05703: 聊聊哈哈 09/01 15:40
18F:推 h5904098: 有趣推 09/01 19:19
19F:推 a78998042a: 推 09/03 00:34
20F:推 thefattiger: RL推推 09/03 10:42
21F:推 billy8407: q 09/04 21:40
22F:推 vvind: 推 09/13 17:55
23F:推 Echeo: Push 10/07 20:05
24F:推 uukoQAQ: 推推 01/06 20:41







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP