見出し画像

[強化学習]-マルコフ決定過程(MDP)の迷路問題を理解してみた

強化学習におけるマルコフ決定過程(MDP)の迷路問題とは、エージェントが状態を認識し、行動を選択して報酬を最大化する数学モデルのことです。要するに、強化学習の基本フレームワークです。今回は、マルコフ決定過程(MDP)の迷路問題における、一番簡単なPythonプログラム紹介です。

【お断り】
前回解説したように、強化学習の説明側の問題として、前提の説明なしに、いきなり(問題と)解説が始まります。今回は、強化学習で必ず出てくるこの迷路問題ですが、この基本プログラムを理解してないと???になります。


(1)はじめに

機械学習と数理最適化 Advent Calendar 2023 チャレンジ の文書です。

の下図のとおり、強化学習の分です。


(2)想定している一般的な活用シーン

マルコフ決定過程(MDP)の迷路問題の一般的な活用シーンは以下の通りです。

  1. 強化学習研究: マルコフ決定過程(MDP)の迷路問題は、強化学習アルゴリズムのテストベッドとして使われ、エージェントが最適な行動戦略を学習する際のトレーニング環境として活用されます。

  2. ロボティクス: ロボットや自動運転車のナビゲーション設計において、環境のモデリングや制御にMDPの概念が応用されます。

  3. 資源管理: 自然資源の管理、エネルギー供給の最適化、在庫管理、スケジューリング問題など、リソースの最適な利用を求める問題にMDPが応用されます。

  4. ゲームAI: コンピュータゲームのAI設計において、ゲーム内のキャラクターやエージェントの行動を制御するためにMDPが使用されます。

  5. マーケティング戦略: マーケティングキャンペーンや広告の最適なスケジューリングやリソース割り当てにMDPが適用され、収益を最大化するための戦略を策定します。

これらのように、マルコフ決定過程(MDP)の迷路問題が意思決定プロセスをモデル化し、最適な戦略を見つけるための強力なツールとして役立っています。

(3)当コードについて

このマルコフ決定過程(MDP)の迷路問題 というPythonプログラムは、異なる行動パターンを定義し、それぞれのパターンを1000回繰り返してゴールに到達する回数を評価するものです。

(4)コード概要


以下に、コードの概要と詳細な説明を示します。

1.プログラムの最初の部分で、行動パターンを定義。

2.次に、これらの行動パターンがリストにまとめられます。

3.メインのループで、各行動パターンに対し,1000回のゲームプレイのループが行われ、
a各ゲーム内で指定された行動に基づいて進行 
b.ゴールに到達した場合、報酬を加算してゴールに到達した回数を計算

(5)コード詳細説明

コードの詳細説明です。

0.環境設定
プログラムの最初の部分では、5つの異なる行動パターン(actions_1からactions_5)がリストとして定義されています。それぞれの行動パターンは、ゲーム内でどの方向に移動するかを示す整数のリストです。

1.行動パターン定義
次に、これらの行動パターンがリストに格納され、patternsというリストにまとめられています。

2,行動パターン 評価

  • メインのループで、各行動パターンに対して以下の処理が行われます:

    • 状態の初期化 (env.reset())

    • 1000回のゲームプレイのループ

    • 各ゲーム内で指定された行動に基づいて進行 (env.step(action))

    • ゴールに到達した場合、報酬を加算してゴールに到達した回数を計算

    • ゲームが終了したら、次のゲームへの移行 


Google Colaboratory(通称Colab)は、Googleが提供するクラウドベースのJupyterノートブック環境で動作するようにしてあります。
元データを設定して、自社環境に合う形で使ってくさい。

今回は、 マルコフ決定過程(MDP)の迷路問題というPythonプログラム全文です。


######################
# 1.行動パターン定義 #
######################
actions_1 = [2, 2, 1, 1, 1, 2] # 右、右、下、下、下、右
actions_2 = [1, 1, 2, 2, 1, 2] # 下、下、右、右、下、右
actions_3 = [1, 1, 2, 1, 2, 2] # 下、下、右、下、右、右
actions_4 = [2, 2, 2, 0, 1, 1, 1, 2] # 右、右、右、左、下、下、下、右
actions_5 = [2, 2, 1, 1, 1, 0, 2, 2] # 右、右、下、下、下、左、右、右

#######################
# 2,行動パターン 評価 #
#######################
patterns = [actions_1, actions_2, actions_3, actions_4, actions_5]
for n, actions in enumerate(patterns): # 各パターンで動かす
    score = 0 # 各パターンでゴールに到達した回数
    for i in range(1000): # 1000回ゲームを行う
        s = env.reset() # 状態を初期化し、それを返す
        done = False
        score_per_episode = 0 # 各ゲームでゴールに到達したかどうか(0か1)
        while not done:
            for action in actions: # 定義した行動のリストを逐次的に入力していく
                new_state, reward, done, _, info = env.step(action) # 行動を入力して進める
                score_per_episode += reward # ゴールに到達した場合報酬は1, それ以外は0
                if done: # 終了判定(done)がTrueとなった場合終了
                    break
        score += score_per_episode # ゴールに到達した回数を更新
    print('pattern {}: {}/1000'.format(n+1, score)) # 1000回のうち何回ゴールにたどり着いたか出力

## Pythonプログラム ##



Colabについてわかりやすく説明します。

  1. 無料で利用可能: Colabは無料で利用できます。Googleアカウントを持っていれば、ブラウザ上で簡単に利用できます。GPUやTPUも利用でき、機械学習やディープラーニングのトレーニングなどに便利です。

  2. Jupyterノートブック形式: ColabはJupyterノートブック形式を採用しています。コードセルとテキストセルを組み合わせ、コードの実行と説明文を同じ場所で管理できます。

  3. クラウドベース: Colabはクラウド上で動作するため、自分のマシンに環境を構築する必要がありません。また、Google Driveとの連携も容易で、ノートブックを保存し、共有することができます。

  4. 豊富なライブラリとハードウェアアクセラレーション: Colabには多くの機械学習やデータサイエンスに使用されるライブラリが事前にインストールされています。また、GPUやTPUなどのハードウェアアクセラレーションも利用可能で、大規模な計算を高速に行うことができます。

  5. 共有と協力: ノートブックはGoogle Driveに保存され、他のユーザーと共有しやすいです。また、リアルタイムで共同作業も可能です。

  6. データの可視化と解析: Colabにはデータの可視化や解析に役立つツールが豊富に組み込まれています。例えば、MatplotlibやSeabornなどのライブラリを使ってグラフを描画することができます。

Colabは教育、研究、プロトタイピング、データ解析、機械学習のトレーニングなど、さまざまな目的に利用されています。無料で使えるため、手軽に始めることができ、Googleのクラウドリソースを利用できる点が魅力です。

追記:
機械学習と数理最適化について

機械学習と数理最適化 Advent Calendar 2023 チャレンジ している理由

#機械学習 ,#ChatGPT,#量子コンピューター,#AI,
#クリスマス ,#AIとやってみた,#アドベントカレンダー,#量子コンピューター,#数理最適化,#量子アニーリング

よろしければサポートよろしくお願いします。いただいたサポートは、日中韓とアメリカのリアルタイム感情分析を進めるために使わせていただきます