Tensorflowエージェントを使用した強化学習[2022]
公開: 2021-01-01強化学習は、世界チャンピオンの囲碁プレーヤーを打ち負かすためのDeepMindのAlphaGoメソッドの比較的最近の成功により、貴重な人気を得ています。 AlphaGoメソッドは、ディープニューラルネットワークでの強化学習によって部分的に教育されました。
この学習スタイルは、古典的な教師ありおよび教師なしパラダイムからの機械学習の特徴です。 強化学習では、ネットワークはディープニューラルネットワークを使用して環境データ(状態と呼ばれる)に応答し、エージェントの動作に影響を与えて報酬を最適化しようとします。
この手法は、ネットワークがAtariやその他のビデオゲームなどのスポーツをプレイする方法や、ゲームの形式として書き直すことができるその他の課題を学習するのに役立ちます。 このチュートリアルでは、強化学習の一般的なモデルとして、Q学習の幅広い原則を紹介し、TensorFlowにディープQ学習を組み込む方法を示します。
目次
強化学習の概要
上記のように、強化学習はいくつかの基本的なエンティティまたは原則で構成されています。 それらは、条件と報酬を作成する環境、および特定の環境でアクションを実行するエンティティです。 次の図では、この相互作用を確認できます。
このような設定でのエージェントのタスクは、エージェントが受け取る状態とインセンティブ情報を分析し、報酬から受け取る入力を最大化する動作を選択することです。 エージェントは、世界との繰り返しの接触、つまりゲームの繰り返しプレイによって学習します。
成功するには、エージェントが次のことを行う必要があります。

1.状態、行動、および結果として生じるインセンティブの間のリンクを学ぶ
2.(1)から選択するのに最適な動きを決定します
実装(1)では、(2)に通知するために使用できる特定の原則のセットを定義する必要があり、(2)は運用戦略と呼ばれます。 ディープQを使用して(1)と(2)を適用する最も一般的な方法の1つは、ディープQネットワークとイプシロングリーディポリシーです。
学ぶ:初心者に最も人気のある5つのTensorFlowプロジェクト
Q学習
Q学習は、エージェントが実行できるアクションを示すデータを配信する価値ベースの方法です。 ある状態で複数のゲームプレイにわたってアクションを実行することの利点をまとめたテーブルを作成することは、アクションの基礎となる原則を生成するという元々直感的な概念です。 これにより、最も有益な動きがどれであるかを追跡できます。 手始めに、3つの状態と2つの潜在的なアクションを持つ各状態の単純なゲームを考えてみましょう-表はこのゲームの報酬を表す場合があります:
アクション1 | アクション2 | |
状態1 | 0 | 10 |
状態2 | 10 | 0 |
状態3 | 0 | 10 |
上の表からわかるように、この単純なゲームでは、エージェントが状態1でアクション2を実行すると、アクション1を実行すると、報酬は10になりますが、報酬はゼロになります。 状態2では、条件が逆になり、状態3は最終的に状態1に似ています。エージェントがこのゲームを任意に探索し、3つの状態のいずれかで最も多くの報酬を得た行動を集計した場合(たとえば、この知識を配列に格納する)、したがって、上記の表の実際の形式が効果的にわかります。
言い換えれば、エージェントが過去に学習した最高の報酬を提供する行動を実際に選択した場合(上記の表の何らかの形式を効果的に学習した場合)、ゲームを効果的にプレイする方法を学習したはずです。 単純に合計によってテーブルを作成することが適切な場合、なぜQ学習、次にニューラルネットワークのような派手なアイデアが必要なのですか?
延期された報酬
さて、最初の明白な答えは、上記のゲームは単純に非常に単純で、状態ごとに3つの状態と2つの動作があるということです。 真のゲームははるかに複雑です。 上記の場合の遅延報酬の原則は、存在しない他の重要な概念です。 エージェントは、最も現実的なゲームを適切にプレイするための手順を実行できるようになることを学ぶ必要があります。これは必ずしも報酬につながるとは限りませんが、後で大きな報酬が得られる可能性があります。
アクション1 | アクション2 | |
状態1 | 0 | 5 |
状態2 | 0 | 5 |
状態3 | 0 | 5 |
状態4 | 20 | 0 |
上記のゲームのすべての状態でアクション2が実行されると、エージェントは状態1に戻ります。つまり、最初に戻ります。 状態1から3では、5のクレジットを取得します。 したがって、すべての州1〜3でアクション1が実行された場合、エージェントは次の州に移動しますが、州4に入るまで報酬を受け取らないものとし、その時点で20の報酬を受け取るものとします。
言い換えると、エージェントは、アクション2を実行して5の瞬間的な報酬を取得しない場合に適していますが、代わりにアクション1を選択して、状態を継続的に続行し、20の報酬を取得できます。遅延報酬値が高すぎる場合に遅延報酬をもたらす行為を選択する。
また読む: Tensorflow画像分類
Q学習ルール
これにより、Q学習ルールを明確にすることができます。 ディープQ学習では、ニューラルネットワークは現在の状態sをベクトルとして取り、その状態での潜在的な動作aごとにQ値を返す必要があります。つまり、両方のQ(s、a)を返す必要があります。 sおよびa。 このQ(s、a)は、トレーニングで次のルールを使用して修正する必要があります。
Q(s、a)= Q(s、a)+ alp [r +γmaxQ(s'、a')– Q(s、a)] + alp [r +γmaxQ(s'、a')

この法律は、アップグレードのために少し開梱する必要があります。 次に、Q(s、a)の新しい値では、上記の式の右辺に追加のビットを挿入して、既存の値を変更する必要があることがわかります。 左から右に切り替えます。 しばらくの間、アルファを忘れてください。 角かっこ内に、最初の単語がrであることがわかります。これは、州で行動を起こすことで獲得した賞を表します。
これは即座の報酬です。 遅延満足はまだ含まれていません。 次の言葉は、延期されたインセンティブの見積もりです。 まず、遅延報酬効果を割り引くγ値があります。これは常に0から1の間です。これについては1秒で詳しく説明します。 次の項maxa'Q(s、' a')は、次の条件で使用可能な最大Q値です。
少し簡単にしましょう。エージェントは状態で開始し、アクションaを実行し、状態で終了します。次に、コードは状態のQの最大値、つまりmax a'Q(s'、a')を指定します。 では、なぜMax a'Q(s'、a')センスが考慮されるのですか? それが有効になり、状態がsの場合、ハンドラーに送られる可能な完全な報酬を表すことが知られています。
ただし、γはこの値を割り引いて、可能なインセンティブを永久に待つことはエージェントにとって望ましくないことを考慮に入れています。エージェントは、最小の時間で最大の賞をターゲットにする方が適切です。 Q(s'、a)'値は、状態Q(s'、a)の割引動機を維持するため、その後の経済に対する最も高い割引インセンティブ、つまりQ(s'、a)'も暗黙的に保持することに注意してください。 ' 等々。
これは、エージェントが即時報酬rだけでなく、将来の割引インセンティブの可能性にも基づいてアクションを選択するためです。
ディープQ学習
ディープQ学習は、トレーニングフェーズ全体を通じてQ学習更新法に従います。 つまり、状態sを入力として受け取るニューラルネットワークが作成され、状態sの各動作に適切なQ(s、a)値を生成するようにネットワークがトレーニングされます。 次に、エージェントのアクションは、最大のQ(s、a)値を持つアクションを実行することによって選択されます(ニューラルネットワークの出力からargmaxを取得することによって)。 これは、下の図の最初のステップで確認できます。
アクションの選択とトレーニングの手順–ディープQ学習

この転送が行われ、アクションが選択されると、エージェントはアクションを実行します。 その後、エージェントは、その状態からアクションを実行するためにどのようなインセンティブが与えられているかについてのフィードバックを取得します。 Q学習ガイドラインに沿って、私たちが今やりたい次のステップは、ネットワークをトレーニングすることです。 2番目の部分では、これは上の図で確認できます。
状態ベクトルsはネットワークトレーニングのx入力配列であり、y出力トレーニングサンプルはアクションの選択プロセス中に収集されたQ(s、a)ベクトルです。 ただし、上の図に示すように、アクションaに対応するQ(s、a)値の1つは、r +γQ(s'、a')の目標を持つように設定されています。 このようにネットワークをトレーニングして、長期的な利益のためにどの動作を選択するのが最適かをエージェントに伝えることにより、ネットワークからのQ(s、a)出力ベクトルは時間の経過とともに強くなります。
強化学習の長所:
- 強化学習は、従来のアプローチでは克服できない非常に困難な課題を解決するために使用できます。
- この戦略は、達成するのが非常に難しい長期的な結果を生み出すために選択されます。
- この学習パターンは、人間の学習にいくぶん似ています。 したがって、それは完璧に近づいています。
- モデルは、テスト段階で発生した間違いを修正します。
- モデルによってエラーが修正された場合、同じミスが発生する可能性はわずかに低くなります。
- これは、特定の問題を解決するための最良のパラダイムを作成します。
強化学習の短所
- スキームとしての強化学習は、多くの異なる点で正しくありませんが、それが役立つのはまさにこの品質です。
- 強化学習が多すぎると、状態が圧倒され、結果が低下する可能性があります。
- 強化学習は、根本的な問題を解決するために使用されるよりも好ましくありません。
- 強化学習には、大量のインテリジェンスと大量の計算が必要です。 それはデータを大量に消費します。 そのため、ビデオゲームに非常によく適合し、ゲームを何度もプレイでき、多くの詳細を取得できるようです。
- 強化学習は、宇宙がマルコフであると想定していますが、そうではありません。 マルコフモデルは、各発生の確率が前のイベントで達成された条件のみに依存する一連の可能なイベントを記述します。
次は何?
機械学習を習得し、チックタックトーをプレイするエージェントのトレーニング方法やチャットボットのトレーニング方法などを学びたい場合は、upGradの機械学習と人工知能のPGディプロマコースをご覧ください。
TensorFlowとは何ですか?
機械学習で広く使用されているプログラミング言語であるPythonには、膨大な数の関数ライブラリが付属しています。 TensorFlowは、Googleが立ち上げたPythonライブラリの1つであり、迅速かつ効率的な数値計算をサポートしています。 これは、Googleによって作成および保守されているオープンソースのライブラリであり、ディープラーニングモデルの開発に広く使用されています。 TensorFlowは、プロセスを簡素化するために他のラッパーライブラリと一緒に使用されます。 ディープラーニングでも使用されている他の数値ライブラリとは異なり、TensorFlowは、アプリケーションと本番環境機能の研究開発の両方のために開発されました。 シングルCPU、モバイルデバイス、分散コンピューターシステムを搭載したマシンで実行できます。
機械学習におけるTensorFlowのような他のライブラリは何ですか?
以前は、機械学習エンジニアはさまざまな機械学習アルゴリズムのすべてのコードを手動で記述していました。 現在、同様のアルゴリズムに対して毎回同じコード行を記述しているため、統計モデルと数学モデルは時間がかかるだけでなく、非効率的で退屈なものでした。 回避策として、関数を再利用して時間を節約するためにPythonライブラリが導入されました。 Pythonのライブラリのコレクションは膨大で用途が広いです。 Pythonで最も一般的に使用されるライブラリには、TensorFlow以外に、Theano、Numpy、Scipy、Pandas、Matplotlib、PyTorch、Keras、Scikit-learnがあります。 Pythonライブラリは、C /C++ライブラリとも簡単に互換性があります。
TensorFlowを使用する利点は何ですか?
TensorFlowの多くの利点により、ディープラーニングと機械学習で計算モデルを開発するための非常に人気のあるオプションになっています。 第一に、それはそのグラフィカルな表現で強化されたデータ視覚化フォーマットをサポートするオープンソースプラットフォームです。 プログラマーはこれを簡単に使用してノードをデバッグできるため、時間を節約でき、ニューラルネットワークコードの全長を調べる必要がなくなります。 TensorFlowはあらゆる種類の操作をサポートしており、開発者はこのプラットフォーム上であらゆるタイプのモデルまたはシステムを構築できます。 Ruby、C ++、Swiftなどの他のプログラミング言語と簡単に互換性があります。