Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suphx-style reward shaping #1127

Open
5 of 7 tasks
sotetsuk opened this issue Aug 24, 2022 · 7 comments
Open
5 of 7 tasks

Suphx-style reward shaping #1127

sotetsuk opened this issue Aug 24, 2022 · 7 comments
Assignees

Comments

@sotetsuk
Copy link
Collaborator

sotetsuk commented Aug 24, 2022

エピソードのデフォルトの定義をどうするかがまだ決まってないが(今は選択可)、半荘を1エピソードとするのは流石に無意味なので、1局毎にエピソードとする。
このとき、報酬をどう決めるかが問題になるので、suphx-likeなreward-shapingをする。

GRUが意味がないので、単純に今の点棒状況から回帰する。

  • 特徴量を調べる @nissymori
  • 少量データでデータ作成をしてみる
  • 少量データで回帰を学習してみる
  • 学習したモデルをnumpyへ吐き出せるか確認
  • データを増やして学習、モデルをコミット
  • モデルを報酬に組み込む
  • この挙動をデフォルトにする
@sotetsuk
Copy link
Collaborator Author

workspace/suphx-reward-shaping の下で作業 @nissymori

@nissymori
Copy link
Collaborator

特徴量 suphnx論文より

  • 持ち点
  • 上がり点/失点
  • 本場
  • 詰み棒

suphnxでは上記のの情報をGRUに渡しているつまりj局目の場合j組ある.
slackでの議論のように現在の情報のみから予測したい.

GRUでは過去の情報の系列から局数, 自風なども推論可能だが一局のみから予測する場合は明示的に特徴量を用意した方がよさそう.

  • 局終了時の持ち点
  • 本場
  • 詰み棒
  • 自風

@nissymori
Copy link
Collaborator

jaxで学習したモデルをnumpyへ吐き出せるか確認

簡単な例を作って確認.
https://colab.research.google.com/drive/1Hn5TADrD7NUHjxo0QqfSUQ8UX_XuPKId?usp=sharing

学習が終わったモデルの重みを
jnp.save("weights.npy", weights)で保存
jnp.load("weights.npy")でロードできる.
loadしたobjectのtypeを確認するとnumpy.ndarrayなので少なくともこの方法でjaxで学習させた重みをnumpyのarrayとして使える.

@nissymori
Copy link
Collaborator

nissymori commented Sep 4, 2022

特徴量 | 前処理方法

  • 4人の点 | ÷ 100000
  • 自風: one-hot
  • 親: one-hot
  • 本場: 整数 | ÷ 4
  • 詰み棒: 整数 | ÷ 4
  • 局: 整数 8以上は全て7にする. | ÷ 7

当初は, 自身の点, 下家, 上家, 対面の順で並べるつもりでしたが, 自風と, 親の情報を与えるので, 順番をあえて指定する必要なはいのではないかと思いました. いったんやってみてダメだったら当初の予定通りやってみようと思います.

target

順位点 ÷ 100

concatenate pattern

  1. concatしたものをinput
  2. one-hotだけNNを用意してhidden layer で他の特徴量とconcat

とりあえず1. で良いかなと思っています.

@sotetsuk
Copy link
Collaborator Author

sotetsuk commented Sep 4, 2022

上家とかの並びにするのは重要な気がするけどなあ

@nissymori
Copy link
Collaborator

上家とかの並びにするのは重要な気がするけどなあ

単純に4人の点/100000だと全くうまくいかないのでこちらに変えます!

@nissymori
Copy link
Collaborator

nissymori commented Sep 16, 2022

変更点

  • 特徴量として残りの親の数を追加する.
  • 風の情報を
  • 出力は4次元[起家, ..ラス親]
  • NNは8個用意するmodel_0, ...model_7

procedure

  • 南4のデータから順位点をmodel_7に予測させる
  • 南3のデータのmodel_7の予測結果をmodel_6に予測させる.
  • 以下繰り返す.

ToDo

  • 特徴量実装
  • 特徴量テスト
  • 訓練関数実装
  • 訓練関数テスト
  • plot関数実装
  • plot関数テスト
  • コマンドライン整備
  • 実験

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants