今天開始研究如何運用手上的200萬筆歷史記錄,這個過程讓我重新思考了整個Project的方向。起初被 AI 提供的幾個建議所吸引,特別是 Reinforcement Learning 和 Q-Learning 這兩個選項。老實說,當下真的被這個想法迷住了 - 想像著只要輸入場景,AI 就能給出最高 EV 的action,這願景實在太誘人。
然而在稍微研究 Deep Q-Learning 後,我逐漸意識到事情沒有想像中簡單。德州撲克本質上是個不完整資訊的遊戲,我們永遠無法看到對手的手牌。這個特性讓 Q-Learning 的獎勵系統變得極其複雜。原本以為 200 萬筆記錄是個龐大的數據集,但考慮到需要德州撲克的變數和特性,這個數量可能還遠遠不夠。
特別讓我困擾的是獎勵系統的設計。在撲克中,你可能做出了一個 +EV 的決定,卻因為短期波動而輸掉籌碼。反之,一個理論上較差的決定可能因為好運而獲勝。要如何在這種高度不確定性中建立一個可靠的獎勵機制?這個問題讓我開始懷疑 Q-Learning 是否適合這個Project。
經過一番思考後,我決定轉向另一個可能更實用的方向:建立對手模型系統。這個想法讓我想起以前用 Hand2Note 研究玩家池的經驗。不同的是,這次我要用 Python 來建構一個能預測對手傾向和範圍機率的模型。具體來說,就是分析在特定場景下,一般玩家會選擇 raise、call 或 fold 的比例,再結合 showdown 時的牌面資訊,建立一個可以推測對手手牌範圍的預測模型,然後再使用類似PyPokerEngine這類的工具來訓練AI。
這個新方向雖然看似不如 AI 決策那麼炫酷,但可能更符合撲克的本質。畢竟撲克不僅是一個數學遊戲,更是一個關於資訊不對稱和決策調整的遊戲。如果能大略預測對手的傾向和範圍,我們就能做出更有針對性的決策。