mjx-project / mjx

Mjx: A framework for Mahjong AI research
https://colab.research.google.com/drive/1m1wOT_K2YFtuV6IO7VgWk4ilVhTKqRFU?usp=sharing
MIT License
167 stars 18 forks source link

[API] 強化学習する際の行動空間の設計を考える #643

Open sotetsuk opened 3 years ago

sotetsuk commented 3 years ago

ややこしいのが

sotetsuk commented 3 years ago

行動の種類

sotetsuk commented 3 years ago

https://github.com/openai/gym/blob/master/gym/spaces/tuple.py

もし、チーが一種類しかなく、赤もなければ、

Tuple(34, 2, 2, 2, ...., 2)

で終わりだったが、現実はそうではない。

sotetsuk commented 3 years ago

赤の扱い方

  1. 34 => 37
  2. 別の赤を使うみたいなbinaryの行動次元を追加する
sotetsuk commented 3 years ago

チー

全パターン数N

3 7 3 (= 63) くらい

状態依存のパターン数M

高々5くらい。捨てられた牌の数をXとすれば

  1. しない
  2. X, X+1, X+2
  3. X-1, X, X+1
  4. X-2, X-1, X

ソリューション

  1. NNの都合を無視すれば、全チーのパターンNを列挙して、Discrete(N)を使う
  2. 状態依存のパターン数Mを列挙して、Discrete(M)を使う
sotetsuk commented 3 years ago

鳴きはチーポンカン含めて全部一緒の方が良いか

くらいだったら

sotetsuk commented 3 years ago
habara-k commented 3 years ago

未解決

openai/baseline においてTuple, Multi, Discreteがどのようにvector化されているのか?

sotetsuk commented 3 years ago
sotetsuk commented 3 years ago
sotetsuk commented 3 years ago

PettingZooの麻雀を確認してもいいかもしれない(中麻で赤はないが) => かなりsimplifyされてて参考にはならなさそう。

sotetsuk commented 3 years ago

冷静に考えると、加カンも34種類必要...(ポンを2つ以上しているとき用)

sotetsuk commented 3 years ago

いくつかベクトル化の仕方を提供する形になるか(ユーザも定義できる)

sotetsuk commented 3 years ago

全部列挙するのが、いくつになるのか厳密に数える

  1. Tsumo (1)
  2. Kyuusyu (1)
  3. Ankan (34)
  4. Kakan (34)
  5. Riichi (1)
  6. Discard (34+3 =37)
  7. No (1)
  8. Ron (1)
  9. Chi ((3+7) * 3 = 30)
  10. Pon (34+3 = 37)
  11. Minkan (1)

計178 (?)

sotetsuk commented 3 years ago

ちょっとポンの赤の扱いだけ検討の余地がある気がしてきた

sotetsuk commented 3 years ago

例えば天鳳でポンのボタンは赤を持っていなければ一つしか出てこないことが決まっているわけで、それなのに37種類あるのは変な気がする。

とかの方が自然な気がするなあ。。。

sotetsuk commented 3 years ago

ただ、ポンを二択にするなら、例えばチーも五択でいいじゃんってなりそう。

sotetsuk commented 3 years ago

Ponが37択の懸念は

sotetsuk commented 3 years ago

11 x 37 通りも考えられるといえば考えられるが。。。

sotetsuk commented 3 years ago

確定版

合計143

sotetsuk commented 3 years ago

これらベクトル化はmjx側で実装

みたいな感じか。(命名は検討の余地がある)

sotetsuk commented 3 years ago

=> 否決

sotetsuk commented 3 years ago

ツモ切りを検討していなかった。。。。。。。。。

sotetsuk commented 3 years ago

ツモ切りを検討していなかった。。。。。。。。。

discardの次元を2倍にするのが一番シンプルか。

sotetsuk commented 3 years ago

確定版

  • Discard (34+3 =37)
  • Chi ((3+7) * 3 = 30)
  • Pon (34+3 = 37)
  • Kan (34)
  • Tsumo (1)
  • Ron (1)
  • Riichi (1)
  • Kyuusyu (1)
  • No (1)

合計143

ツモ切りを追加すると

合計180

sotetsuk commented 3 years ago

追加で、

とかはありかもしれない。