体験プロジェクト

学際科学科3年生向け 体験プロジェクト例

強化学習

AlphaZeroや様々な応用で注目されている強化学習について、基本的な手法を理解し、エージェントが試行錯誤を通じて賢くなる過程を小さな実験で観察しよう. たとえば、

  • 有名アルゴリズムであるQ学習やSARSAについて,教科書 のCliff Walking (Example 6.6)を題材に再現実験を行う
  • Open AI Gym の簡単な問題を学習させてみよう。たとえば、FrozenLake

機械学習

機械学習の有名アルゴリズムを実装してみよう.たとえば

  • EMアルゴリズムを教科書 PRMLの Figure 9.8 (第9章)を題材に再現実験を行い,理解を深めよう.

不完全情報ゲーム

近年急速に進歩した技術で、ポーカーなどで最善の戦略を計算するCounterfactual Regret Minimization (CFR)という手法を用いて、小さなゲームを解いてみよう。たとえば、じゃんけんやKuhn Poker 参考: An Introduction to Counterfactual Regret Minimizatio

囲碁とモンテカルロ木探索

オープンソースライブラリのlibegoの囲碁盤機能を使って、現在のコンピュータ囲碁プログラムの思考の要であるUCTの部分を自作してみよう。プレイアウト部分はboard.RandomLightMove(random);を使うと便利。原始モンテカルロ法より強くなることを確認する。 (発展) コンピュータ囲碁で一般的なプロトコルであるgtpの一部分(数個のコマンド)を実装して、goguiと接続して、人間や他のプログラムと対局できるようにする。

参考図書: コンピュータ囲碁 モンテカルロ法の理論と実践

ゲームとデータからの学習

  • 指手の確率の学習: 囲碁や将棋で、棋譜の指手を模倣するようなモデルを、最大エントロピー法やsoftmaxモデルなどで作成してみよう。予測精度を文献と比較したり、用いる棋譜との関係を検討する。 参考資料例: Computing Elo Ratings of Move Patterns in the Game of Go
  • 評価関数の学習1: オセロの評価関数を探索結果を教師として最小二乗法で作成する。Logistelloの特徴(feature)を使うと次元が100万程度まで大きくなるので、共益勾配法などを用いて効率よく計算する。
  • 評価関数の学習2: Temporal Differenceと呼ばれる強化学習を行って、将棋の駒の強さなどを、対局から学ぶプログラムを作成する。
  • 評価関数の学習3: Comparison Training (あるいはBonanza学習)の一部分を実装して、将棋の評価関数を学習させる。矢倉囲い、美濃囲いなどに組めることが目標。
  • 評価関数の学習4: CNNを使って、ニューラルネットワークで勝敗を予測するモデルを訓練する

2048

2048の思考プログラムを作ってみよう。(発展)世界記録の794076を塗り替えよう。

リアルタイムの意思決定

ぷよぷよで5連鎖を打てるプログラムを書いてみよう。(発展)日本記録を作ろう(たぶん20連鎖以上)

グラフとA*探索

最短路問題などを解くために、幅優先探索、ダイクストラ法、A*探索を実装して性能を評価しよう。たとえば、4x4あるいは5x5のスライドパズルを解いてみよう。マンハッタン距離などヒューリスティックの効果を確認する。 (発展)disjoint pattern database (Korf 2002)を使ってさらなる性能向上を確認する。

参考図書: エージェントアプローチ人工知能 4章

多数決サーバとネットワーク/分散プログラミング

コンピュータ将棋のプロトコルであるUSIで将棋プログラム(たとえばgpsfish)を制御して、多数決で次の一手を決めるサーバプログラムを作成してみよう。多数決であればpythonなどスクリプト言語で十分だが。(発展)GPS将棋が行うような本格的な分散探索機能の追加を視野にいれる場合は,Go言語やC++ の方が適する。