Upgrade to Pro — share decks privately, control downloads, hide ads and more …

深層強化学習を用いたテトリスBotの作成の試行

thirofoo
May 05, 2024
310

 深層強化学習を用いたテトリスBotの作成の試行

thirofoo

May 05, 2024
Tweet

Transcript

  1. 1.1 テトリス実装 + 右の動画のように可視化される + 標準出力を使ったCLI環境で動く実装 + ゲームスコア内訳 + ミノを配置できれば1点

    + 1ライン消すと100点 + 2ライン消すと300点 + 3ライン消すと500点 + 4ライン消すと800点 + ゲームオーバーは-1点 + src/tetris_gym内に実装されている
  2. 3.1.1 実験1 (初期モデル) 𝜖𝑠𝑡𝑎𝑟𝑡 = 1.0, 𝑑𝑖𝑠𝑐𝑜𝑢𝑡 = 0.9 𝜖𝑚𝑖𝑛

    = 0.00001, 𝜖𝑑𝑒𝑐𝑎𝑦 = 0.995, 𝑙𝑟 = 0.001 NN: ・入力: 行動後の状態 ・出力: 場面の評価値 ・Dense(128)→Dense(64) ・活性化関数: ReLU, 出力層はリニア ・全結合 ・loss関数:HuberLoss
  3. 3.2.1 実験2 (特徴量と隠れ層を増やす) 𝜖𝑠𝑡𝑎𝑟𝑡 = 1.0, 𝑑𝑖𝑠𝑐𝑜𝑢𝑡 = 1.00 𝜖𝑚𝑖𝑛

    = 0.001, 𝜖𝑑𝑒𝑐𝑎𝑦 = 0.995, 𝑙𝑟 = 0.001 NN: ・loss関数: MSE ・中間層(64)→ 中間層(64)→ 中間層(32) ・活性化関数: ReLU, 出力層はリニア ・全結合
  4. 3.2.1 実験2 (特徴量と隠れ層を増やす) 特徴量 ( Dellacherie's Algorithm *[1] ) 1.

    Hole_count 2. Latest_clear_mino_count 3. Row_transitions 4. Column_transitions 5. Bumpiness 6. Eroded_piece_cells 7. Cumulative_well 8. Aggregate_height 9. Abobe_block_suqared_sum
  5. 3.2.1 実験2 (特徴量と隠れ層を増やす) 特徴量 ( Dellacherie's Algorithm *[1] ) 1.

    上部にブロックがある空マスの総和 2. 直近でラインを消したミノの設置時の高さ 3. 行方向の空マス→ブロック、ブロック→空マスの遷移の数の総和 4. 列方向の空マス→ブロック、ブロック→空マスの遷移の数の総和 5. 隣り合う列の高さの差の総和 6. 直近で消したライン * ライン消しに貢献したミノのブロック数 7. 左右がブロックの空マスが k 連続の時の k の二乗和 8. 各列の高さの総和 9. 各空マスの上部にあるブロックの数の二乗和
  6. 3.2.2 結果 + (学習時間: 8時間, 平均: 1000Line, Episode: 5000) +

    5000 episodes程度までのLossとRewards + 学習を高速化するために累積報酬が1000を超えたら学習打ち 切りにしている + 安定して1000に到達するまで1500 episodes + その後1000を超えないように積んでいき、最後一気にライン を消すことで + 900 -> 4lines(+800) -> 1700 + のような動きを学習している + ロスは増大しているが、学習はうまくいっているので謎
  7. 3.3.2 結果/考察 + 最初と比べると、下段~中段の穴の数が減り、うまく敷き 詰められているように見える + どちらか一方に寄って、片側に1-2マスほど残している + -> 得点が高いIミノやOミノなどを使った一気に2~4ライ

    ンを消す操作を期待してこのような行動をしている + -> 人間にも見られるプレイ方法を模倣できている + 上段だけでラインを消去することがほぼなくなっている + 止めなければ、半永久的にプレイし続けられる