Q学習:強化学習について知っておくべきことはすべて



この記事では、Pythonコードを介した強化学習の美しいアナロジーを通じて、Q学習の詳細で包括的な知識を提供します。

そして 業界でトップの流行語の1つであり、正当な理由があるいくつかのドメインです。 AIは、機械が人間の行動を模倣できるようにすることが主な目標であることを考慮して、2020年までに230万人の雇用を創出する予定です。変じゃない?そこで、今日は、強化学習の構成要素であるQ学習について次の順序で説明します。

強化学習とは何ですか?

私たちの日常生活を見てみましょう。私たちは環境内で数多くのタスクを実行しますが、それらのタスクの中には報酬をもたらすものもあれば、そうでないものもあります。私たちはさまざまな道を探し続け、どの道が報酬につながるかを見つけようとし、行動に基づいて目標を達成するための戦略を改善します。これは私の友達で、強化学習の最も単純な例えの1つです。





主な関心分野:

  • 環境
  • アクション
  • 褒賞
  • 状態

強化学習-q学習



強化学習は、システムが独自の決定の結果から学習できるようにする機械学習の分野です。これは、意思決定が順次であり、目標が長期的である特定の種類の問題を解決します。

Q学習プロセス

ここでの問題ステートメントを使用して、Q学習とは何かを理解しましょう。強化学習ソリューションの主要コンポーネント、つまりエージェント、環境、アクション、報酬、状態を定義するのに役立ちます。

自動車工場の例え:



私たちはロボットでいっぱいの自動車工場にいます。これらのロボットは、自動車の組み立てに必要な部品を運ぶことで、工場の作業員を支援します。これらのさまざまな部品は、工場内のさまざまな場所の9つのステーションに配置されています。パーツには、シャーシ、ホイール、ダッシュボード、エンジンなどが含まれます。 Factory Masterは、シャーシが設置されている場所を最優先事項として優先しています。ここでセットアップを見てみましょう:

州:

ロボットが特定のインスタンスに存在する場所は、その状態と呼ばれます。名前で覚えるよりもコーディングする方が簡単だからです。場所を数字にマッピングしましょう。

行動:

アクションは、ロボットが任意の場所に移動することに他なりません。ロボットがL2の場所にあり、ロボットが移動できる直接の場所がL5、L1、およびL3であるとします。これを視覚化すると、これをよりよく理解できます。

報酬:

ある状態から別の状態に直接移動すると、ロボットに報酬が与えられます。たとえば、L2から直接L5に到達でき、その逆も可能です。したがって、どちらの場合も1の報酬が提供されます。報酬テーブルを見てみましょう。

ファクトリマスターがシャーシの場所を優先したときのことを思い出してください。 L7だったので、この事実を報酬テーブルに組み込みます。したがって、(L7、L7)の場所に非常に大きな数(この場合は999)を割り当てます。

キュウリjavaセレンwebdriverの例

ベルマン方程式

ここで、ロボットがポイントAからBに移動する必要があるとします。ロボットは、正の報酬をもたらすパスを選択します。そのために、フットプリントの観点から報酬を提供するとします。

配列phpを印刷する方法

しかし、ロボットが2つ以上のパスを見ることができる中間のどこかから開始した場合はどうなるでしょうか。したがって、ロボットは決定を下すことができません。これは主に、ロボットが 記憶 。ここでベルマン方程式が登場します。

V(s)= max(R(s、a)+&#120632V(s ’))

どこ:

  • s =特定の状態
  • a =アクション
  • s '=ロボットがsから移動する状態
  • &#120632 =割引係数
  • R(s、a)=状態(s)とアクション(a)を取り、報酬値を出力する報酬関数
  • V(s)=特定の状態にあることの値

これで、目的地の下のブロックの報酬は1になります。これは最高の報酬ですが、他のブロックはどうでしょうか。さて、ここで割引係数が出てきます。割引係数を0.9と仮定して、すべてのブロックを1つずつ埋めていきましょう。

マルコフ決定過程

ロボットがオレンジ色のブロックにあり、目的地に到達する必要があると想像してください。しかし、わずかな機能障害があったとしても、ロボットは上昇するのではなく、どちらの道を進むべきかについて混乱します。

したがって、意思決定プロセスを変更する必要があります。それはしなければならない 部分的にランダム そして 部分的にロボットの制御下にある 。ロボットがいつ機能不全になるかわからないため、一部はランダムであり、一部はまだロボットの決定であるため、制御されています。そして、これはマルコフ決定過程の基礎を形成します。

マルコフ決定過程(MDP)は、離散時間確率制御過程です。これは、結果が部分的にランダムで、部分的に意思決定者の制御下にある状況で意思決定をモデル化するための数学的フレームワークを提供します。

したがって、元のベルマン方程式を使用して変更を加えます。私たちが知らないのは次の状態、つまりです。 s ’。 私たちが知っているのは、ターンのすべての可能性であり、方程式を変えましょう。

V(s)= max(R(s、a)+&#120632 V(s ’))

V(s)= max(R(s、a)+&#120632 &シグマs ’P(s、a、s ’) V(s '))

P(s、a、s ’): 状態から移動する確率 s s ’ アクション付き

&シグマs ’P(s、a、s ’) V(s ’): ロボットのランダム性の期待

V(s)= max(R(s、a)+&#120632((0.8V(roomアップ))+(0.1V(部屋ダウン)+…。))

それでは、Qラーニングに移行しましょう。 Q学習は、移行先の状態の可能な値を決定するのではなく、状態に移行するために実行されるアクションの品質を評価するという考えを提起します。

これは、特定の状態に移行するためのアクションの品質を評価するというアイデアを取り入れた場合に得られるものです。それらを削除すると、更新されたベルマン方程式から 最大 コンポーネントでは、可能なアクションに対して1つのフットプリントのみを想定しています。 品質 アクションの。

Q(s、a)=(R(s、a)+&#120632 &シグマs ’P(s、a、s ’) V(s '))

アクションの品質を定量化するこの式では、V(s)がQ(s、a)のすべての可能な値の最大値であると想定できます。それでは、v(s ’)をQ()の関数に置き換えましょう。

Q(s、a)=(R(s、a)+&#120632 &シグマs ’P(s、a、s ’) 最大Q(s ’、a’))

Q学習の最終的な方程式に一歩近づいています。をご紹介します 時間差 時間の経過に伴う環境の変化に関するQ値を計算します。しかし、Qの変化をどのように観察しますか?

TD(s、a)=(R(s、a)+&#120632 &シグマs ’P(s、a、s ’) 最大Q(s ’、a’))– Q(s、a)

再帰的フィボナッチc ++

同じ式で新しいQ(s、a)を再計算し、それから既知のQ(s、a)を減算します。したがって、上記の式は次のようになります。

Qt(s、a)= Qt-1(s、a)+αTDt(s、a)

Qt(s、a)= 現在のQ値

Qt-1(s、a)= 以前のQ値

Qt(s、a)= Qt-1(s、a)+α(R(s、a)+&#120632 max Q(s ’、a’)-Qt-1(s、a))

Q学習デモ:NumPy

使用します Qラーニングがどのように機能するかを示すNumPy。

ステップ1:インポート、パラメーター、状態、アクション、および報酬

import numpy as np gamma = 0.75#割引係数alpha = 0.9#学習率location_to_state = {'L1':0、 'L2':1、 'L3':2、 'L4':3、 'L5':4、 ' L6 ':5、' L7 ':6、' L8 ':7、' L9 ':8}アクション= [0,1,2,3,4,5,6,7,8]報酬= np.array( [[0,1,0,0,0,0,0,0,0]、[1,0,1,0,0,0,0,0,0]、[0,1,0,0、 0,1,0,0,0]、[0,0,0,0,0,0,1,0,0]、[0,1,0,0,0,0,0,1,0] 、[0,0,1,0,0,0,0,0,0]、[0,0,0,1,0,0,0,1,0]、[0,0,0,0、 1,0,1,0,1]、[0,0,0,0,0,0,0,1,0]])

ステップ2:インデックスを場所にマッピングする

state_to_location = dict((state、location)for location、state in location_to_state.items())

ステップ3:Q学習プロセスを使用して最適なルートを取得する

def get_optimal_route(start_location、end_location):rewards_new = np.copy(rewards)ending_state = location_to_state [end_location] Awards_new [ending_state、ending_state] = 999 Q = np.array(np.zeros([9,9]))#Q- range(1000)内のiの学習プロセス:#ランダム状態の取得current_state = np.random.randint(0,9)#Pythonは上限のplayable_actions = []を除外します#range(内のjの新しい報酬マトリックスを反復処理します9):rewards_new [current_state、j]> 0の場合:playable_actions.append(j)#次の状態につながるランダムアクションを選択しますnext_state = np.random.choice(playable_actions)#時間差の計算TD = Awards_new [current_state 、next_state] +ガンマ* Q [next_state、np.argmax(Q [next_state、])]-Q [current_state、next_state]#ベルマン方程式を使用してQ値を更新Q [current_state、next_state] + = alpha * TD#開始位置を使用して最適なルートを初期化しますroute = [start_location]#開始位置を使用してnext_locationを初期化しますnext_location = star t_location#最終的な場所に到達するために必要な正確な反復回数がわからないため、whileループは反復に適していますwhile(next_location!= end_location):#開始状態をフェッチしますstarting_state = location_to_state [start_location]#開始状態に関連する最大のQ値をフェッチしますnext_state = np.argmax(Q [starting_state、])#次の状態のインデックスを取得しました。しかし、対応する手紙が必要です。 next_location = state_to_location [next_state] route.append(next_location)#次の反復の開始位置を更新しますstart_location = next_location return route

ステップ4:ルートを印刷する

print(get_optimal_route( 'L1'、 'L9'))

出力:

これで、Qラーニングは終了です。 Qラーニングの動作と、時間差、ベルマン方程式などのさまざまな依存関係について理解していただければ幸いです。

エドゥレカの 教師あり学習、教師なし学習、自然言語処理などのテクニックに習熟します。これには、ディープラーニング、グラフィカルモデル、強化学習など、人工知能と機械学習の最新の進歩と技術的アプローチに関するトレーニングが含まれます。