見出し画像

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

マルコフ決定過程(MDP)とは、強化学習の行動に対する状態と報酬の確率的な関係を表すフレームワークで、最適な戦略を見つけるための数学モデルのことです。要するに、強化学習の基本中の基本フレームワークです。今回は、マルコフ決定過程(MDP)の一番簡単なPythonプログラム紹介です。

【お断り】
強化学習の問題として、前提の説明なしに、いきなり問題と解説が始まります。例えば、下記のような強化学習の定番学習サイト。

上記URLでは、いきなり LunarLander-v2 でプログラムがスタートしているので、そもそも LunarLander-v1 ってなに?? という話で、これがマルコフ決定過程(MDP)の一番簡単なPythonプログラム紹介であり、それはもちろん理解している前提で話がすすむので、部外者からみると???なのです。 


[ LunarLander-v1 ]とは?
環境は、Frozen Lake(凍った湖)に設定されております。
エージェントは、スタート地点(左上)からゴール地点(右下)へと穴に落ちることなく凍った湖の上を渡ることを目指します。報酬は、氷の湖を渡ることになります。

 LunarLander-v1 とは?

詳しくは下記URLで詳しく説明されています。ありがとうございました。

やっと本題…..

(1)はじめに

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

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

マルコフ決定過程とマルコフ連鎖の違い

下記URLで取り上げたマルコフ連鎖とこのマルコフ決定過程(MDP)とは、関連はあります。しかし、両者は同じマルコフ性質に基づいていますが、異なる概念です。

※マルコフ性質:将来の状態が現在の状態だけに依存し、過去の状態や出来事には無関係である性質、のことです。

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

異なる行動パターンが与えられた場合に、それらのパターンが特定のゲーム環境でどれだけ効果的かを評価するのに役立ちます。つまり、
1.ゲーム環境に対して最適な行動パターンを見つける
2.強化学習などのアルゴリズムを適用する
行動パターンの初期評価を行うことができます。だから今回取り上げている強化学習の基礎である、マルコフ決定過程(MDP)の基礎、とされているのです。

(3)当コードについて

このLunarLander-v1 というPythonプログラムは、OpenAI Gymライブラリを使用して、FrozenLake-v1と呼ばれる迷路ゲームの環境を設定し、指定された行動パターンに基づいてゲームを評価するものです。。

(4)コード概要


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

環境設定: FrozenLake-v1環境の設定と初期化。

  1. 行動パターン定義: ゲーム内で実行する行動パターンを指定。

  2. 行動パターン評価: 指定された行動パターンを順番に実行し、その結果を表示。

(5)コード詳細説明

コードの詳細説明です。

環境設定:

  • Gymライブラリをインポートし、FrozenLake-v1環境のインスタンスを作成します。

  • render_modeパラメータを'ansi'に設定して、ゲームの可視化を行います。

  • 環境を初期化し、初期状態を取得し、それをprint関数で表示します。

  • env.render()を使用して、状態を可視化します。

  1. 行動パターン定義:

    • actionsリストに、実行したい行動のリストを格納します。この場合、[2, 2, 1, 1, 1, 2]は右、右、下、下、下、右の順番で行動を表します。

  2. 行動パターン評価:

    • actionsリスト内の行動を順番に実行します。

    • env.step(int(action))を使用して、環境内で行動を実行し、新しい状態(new_state)、報酬(reward)、ゲームの終了判定(done)、追加情報(info)を取得します。

    • 各行動の結果を詳細に表示します。行動、報酬、新しい状態、遷移確率などが表示されます。

    • ゲームが終了した場合(doneがTrueになった場合)、プログラムの実行を終了します。


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

今回は、LunarLander-v1 というPythonプログラム全文です。



##############
# 0.環境設定 # 
##############
import gym

# FrozenLake-v1 インスタンス作成
env = gym.make("FrozenLake-v1", render_mode='ansi')

# 環境初期化
s = env.reset()
print(s)  # print関数で状態を確認
env.render()  # 状態の可視化

######################
# 1.行動パターン定義 #
######################
actions = [2, 2, 1, 1, 1, 2]  # 行動をリストで順番に格納しておく

#######################
# 2,行動パターン 評価 #
#######################
for action in actions:  # 定義した行動のリストを逐次的に入力していく
    new_state, reward, done, info = env.step(int(action))  # 行動を入力して進める
    print('\n行動:', action)
    print('報酬:', reward)
    print('状態:', new_state)
    print('遷移確率:', info['prob'])
    env.render()  # 状態の可視化
    if done:  # 終了判定(done)がTrueとなった場合終了
        break


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とやってみた,#アドベントカレンダー,#量子コンピューター,#数理最適化,#量子アニーリング

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