単純な賭け事ゲームを予測して遊ぶことを学ぶML

私は楽しいために構築しているシンプルなゲームを持っていますが、MLが単純なデータセットでどれくらいうまく機能するかを確認するだけです。

基本的には、これは次のようなターンがあるゲームです:

  • コンピュータは乱数$ x $を生成し、プレーヤを表示しません。

  • プレーヤーは、$ x $よりも低い数字を推測できます。賭け金$ w $

    を呼び出します。
  • 少数の$ g $を推測しようとします。

  • $ g \ lt x $の場合、プレーヤーは$ wg $ポイントを獲得します。

  • $ g \ ge x $の場合、プレーヤーは賭け金$ w $ポイントを失います。

プレイヤーが$ t $の開始時に$ f_t $の資金を持っている場合、これを置く別の方法は次のとおりです。

$$f_{t+1} = \begin{cases} f_t + wg,& \text{if } g\le x\\ f_t - w, & \text{otherwise} \end{cases}$$

演劇の例はここにある:

  • $ f = 50 $で始める
  • 1、$ x = 11 $、プレーヤーwagers $ w = 8 $、$ g = 9 $を推測します。ターン終了時にプレーヤーは$ + 72 $ポイントを獲得するので、$ f = 122 $となります。
  • 2回目は$ x = 10.5、w = 4、g = 7 $、ポイントは$ + 28 $、$ f = 150 $に変わります。
  • 3回目は$ x = 20、w = 1、g = 6 $、ポイントは$ 6 $、$ f = 156 $に変わります。
  • ターン4、$ x = 2、w = 10、g = 15 $、ポイントが$ -10 $、$ f = 146 $に変わります。

私はMLを使用して、パターンを見つけることができるかどうかを調べるために事前に生成されたターンを供給することによってこれを試して予測したいと考えました。複雑な変数はほとんどありませんので、あまり複雑ではないはずです。理想的には、MLがゲームのプレイ方法を学ぶことを望みます。

私はどのようなタイプのMLがこの種の問題に適用できるのだろうかと思いますか?私がゲームを簡単にしたとしても、どこから始めるべきかはわかりません。私は過去に作ったより複雑なゲームを持っているので、MLを同様に適用しようと思っています。

2
こんにちはNeil。まず、このような詳細な回答を提供し、私のひどく説明された質問を理解しようとしてくれたことに感謝します。ゲームはラウンドで構成され、各ラウンドには乱数1〜1000が生成されます。プレイヤーは前回のラウンドヒストリーを見ることができ、それに基づいて、現在のラウンド数を推測することができます。プレーヤーが彼の数の下で推測すれば、彼は彼が賭けた彼の合計の数(倍)を獲得する。だから、もし彼が10を賭ければ、その数は2になり、その数は5になるだろう。彼は20になるだろう。その数が1であれば、彼は10を失うだろう。
追加された 著者 Toby Speight,
よく私はあなたの数学の見た目をきれいにする方法を見つけようとずっとずっと努力していましたが、私はそれをもう一度編集できませんでした。スタック交換はいつも私がここにhehを望んでいないように感じる。とにかく、確かにあなたの数学は正確にどのようにセットアップされています。あなたが十分な経験を持っていることを知っているサイコロと一緒に転がすと、ロールはランダムになります。これらのロールは他のものに基づいています。私は、私が作り出した歴史的なゲームがたくさんあります。その中でパターンを探したいと思っています。自分自身で戦略を教えてもらいたいのですが、 。
追加された 著者 Toby Speight,
ああ、良い助けを感謝し、補強学習が良いと思う(私は自分自身がハッハッハ自分自身をよりスマートにするために何かをする必要があると思う)だからあなたはこの問題のscikitのセットアップの任意のタイプをお勧めですか?再度、感謝します
追加された 著者 Toby Speight,
ニール、あなたは上を行きました。本当にありがとう。
追加された 著者 Toby Speight,

1 答え

このゲームで出力される数値には、いくつかの異なるデータサイエンスとMLテクニックがあります。あなたは人間の選手のスタイルを分析しようとすることができます。実際の金額を無視して期待利益/損失のテーブルを生成し、$ x \ gt wか$ x \ leかどうかを知るだけで、プレーヤーがそれを見なかったとしても$ x $の確率分布を見積もることができます十分な例からw $。

あなたの最終的な目標が、コンピュータがどのようにそのようなゲームを再生するかを調べることである場合、明確な機械学習の選択肢は強化学習(RL)です。コンピュータがゲームをする唯一の方法ではありません。これには非常に多くの最適化手法があります。しかし、それは機械学習手法であり、データ観測から学習します。また、多くのバリエーションでは、特定の位置からの勝利の可能性や今後の報酬の予測など、興味深い数値解析が含まれています。

RLは単一のアルゴリズムではなく、単一の手法でもありません。代わりに問題を構成する方法であり、そのような問題を解決するすべての方法がRLとみなされます。 RLが機能するには、マルコフ決定プロセス(MDP)のような枠組みが必要です。良いニュースは、あなたのゲーム例とそれに類するものが既にMDPの良い例であるということです。

RLでは、エージェントがゲームをする方法をそのポリシーと呼びます。 RLの通常の目標には、特定のポリシーのパフォーマンスの測定、または最善のポリシーの発見が含まれます。

だから、どこから始めるの?まず、あなたのゲームでRLプロセスを試してみたいのであれば、おそらくいくつかのことをすべきです:

  • Understand what in the game is the State, what are the Actions and what are the Rewards.

    • The state is anything that the agent knows about and can affect the outcome. Probably the only thing to worry about here is the current funds $f$, although this may not have a huge influence unless $w$ can always go up to $f$. Note each value is treated as a different state.

    • The action is the agent's choice of both $w$ and $g$ - note each specific combination is considered a different action. If there are a large number of actions, this can make learning harder, requiring more advanced RL algorithms, so I recommend initially you try variations of your game with limited number of choices.

    • The most obvious choice of reward is the change to $f$ at the end of each turn. It doesn't have to be though, it depends on what you consider a "winning condition" to be for the game. See below.

  • Simplify the game options a little. Set a small limit to possible ranges of $x, w, g$. This will make it easier to try things out initially.

  • Set a clear goal that you want to achieve, and make sure that the game structure works for that. You may need to adjust the game representation for even simple change such as "get the most reward in 10 turns" - because that might encourage large wagers at certain steps, and the agent will need to know how many turns it has left (so your state becomes combination of $(f, t)$. Another variation that may work is to set the goal of getting to a certain amount of funds, such as 1000. In which case, the reward would not be the increase in $f$, but actually be +1 for getting to that target, and 0 for any other result. That might radically change the behaviour of the agent, which could be interesting to experiment with.

  • Look up simple Reinforcement Learning algorithms. I suggest you start with tabular methods - perhaps Monte Carlo Control, or Q-Learning. They can typically be implemented in a few tens of lines in Python/Numpy.

A useful resource for RL is Sutton & Barto's Reinforcement Learning: An Introduction. The draft of the second version is free to download.

2
追加された