昨年、DeepMindのAlphaGoは世界囲碁チャンピオンのイ・セドルを4対1で破った。強化学習が世界の舞台に登場した様子を、2億人を超える視聴者が視聴しました。数年前、DeepMind は Atari のゲームをプレイできるロボットを開発して話題を呼んだ。同社はすぐにGoogleに買収された。 多くの研究者は、強化学習が汎用人工知能を生み出すための最善の方法であると考えています。これは多くの未解決の課題と大きな可能性を秘めた刺激的な分野です。 強化学習は最初は非常に難しいように思えるかもしれませんが、実際に始めるのは難しくありません。この記事では、キャッチゲームをプレイできるシンプルな Keras ベースのボットを作成します。 キャッチゲーム オリジナルのキャッチゲームインターフェース キャッチは、子供の頃に遊んだことがあるかもしれない非常にシンプルなアーケード ゲームです。ゲームのルールは次のとおりです。果物が画面の上から落ちてくるので、プレイヤーはバスケットでそれをキャッチする必要があります。キャッチした果物ごとに、プレイヤーは 1 ポイントを獲得します。逃した果物ごとに、プレイヤーは 1 ポイントを失います。ここでの目標は、コンピューターが自力でキャッチゲームをプレイできるようにすることです。ただし、このような美しいゲームインターフェースは使用しません。代わりに、タスクを簡素化するために、ゲームの簡略化されたバージョンを使用します。 簡素化されたキャッチゲームインターフェース キャッチゲームをプレイする場合、プレイヤーは 3 つの可能なアクションの中から選択します。プレイヤーはバスケットを左、右に動かしたり、静止させたりすることができます。この決定はゲームの現在の状態によって異なります。つまり、果物がどこに落ちるか、バスケットの位置によって異なります。私たちの目標は、ゲーム画面の内容に基づいて、最高スコアをもたらすアクションを選択するモデルを作成することです。 このタスクは単純な分類問題として考えることができます。ゲームの専門家にゲームを複数回プレイしてもらい、その行動を記録します。その後、ゲームの専門家がプレイする方法と同様に、「正しい」アクションを選択することでモデルをトレーニングできます。 しかし、これは実際には人間が学習する方法ではありません。人間は、何の指導も受けずにキャッチボールのようなゲームを自分で学ぶことができます。これはとても便利です。 「キャッチ」のような簡単なゲームを習得したいたびに、そのゲームを何千回もプレイする専門家チームを雇わなければならないとしたらどうでしょう。これは必然的に非常に高価で時間がかかります。 強化学習では、モデルはラベル付けされたデータに基づいてトレーニングされるのではなく、過去の経験を通じてトレーニングされます。 深層強化学習 強化学習は行動心理学にヒントを得ています。モデルに「正しい」動作を与える代わりに、報酬とペナルティを与えます。モデルは、環境の現在の状態 (コンピューター ゲーム画面など) に関する情報を取得します。すると、ゲーム コントローラーと同じようにアクションが出力されます。環境はこのアクションに応答し、次の状態と報酬または罰の行動を提供します。
そこからモデルは学習し、報酬を最大化するアクションを探します。 実際には、これを行う方法はたくさんあります。次に、Q学習について見てみましょう。 Q-Learning は、コンピューターに Atari ゲームをプレイするようトレーニングするために使用されたときに大きな話題を呼びました。今日でも、Q 学習は依然として非常に重要な概念です。最新の強化学習アルゴリズムのほとんどは、Q 学習の改良版です。 Q学習を理解する Q 学習を理解する良い方法は、キャッチゲームとチェスゲームを比較することです。 どちらのゲームでも、状態 S が与えられます。チェスでは、これは盤上の駒の位置を表します。キャッチゲームでは、これは果物とバスケットの位置を表します。 次に、プレイヤーは A と呼ばれるアクションを実行します。チェスでは、プレイヤーは駒を動かします。キャッチゲームでは、バスケットを左、右に動かすか、現在の位置に維持することを意味します。これに基づいて、報酬 R と新しい状態 S' が得られます。 キャッチゲームとチェスの共通点の 1 つは、アクションの直後に報酬が現れないという点です。 キャッチゲームでは、果物がバスケットに落ちるか、床に落ちた場合にのみ報酬が得られます。チェスでは、ゲーム全体の勝敗が決まった後にのみ報酬が与えられます。これは報酬がまばらに分配されることを意味します。ほとんどの場合、R はゼロのままです。 生成される報酬は必ずしも前のアクションの結果ではありません。おそらく、ずっと以前にとられた何らかの行動が勝利の鍵だったのでしょう。最終的な報酬の原因となるアクションを特定することは、多くの場合、クレジット割り当て問題と呼ばれます。 報酬は遅れて得られる性質があるため、優れたチェス プレイヤーは、最もすぐに目に見える報酬だけに基づいて動きを選択することはありません。代わりに、彼らは予想される将来の報酬を考慮し、それに基づいて選択を行います。たとえば、次の動きで相手の駒の 1 つを除去できるかどうかだけを考慮するのではなく、また、長期的に見て有益な行動も検討します。 Q 学習では、最も高い将来の報酬が期待されるものに基づいてアクションを選択します。この計算には Q 関数を使用します。この数学関数は、ゲームの現在の状態と指定されたアクションという 2 つの変数を取ります。したがって、これをQ(状態、アクション)として記録できます。状態 S では、各可能なアクション A の報酬を推定します。アクション A を実行して次の状態 S' に入った後、すべてが完璧であると想定します。 与えられた状態SとアクションAに対して、期待される将来の報酬Q(S,A)は、即時の報酬Rとその後の期待される将来の報酬Q(S',A')の合計として計算されます。次のアクションA'が最適であると仮定します。 将来の不確実性のため、Q(S', A')に係数γを掛けて割り引きます。 Q(S,A) = R + γ * 最大Q(S',A') チェスの名人は将来の報酬を頭の中で予測するのが得意です。言い換えれば、Q関数Q(S,A)は非常に正確です。ほとんどのチェスのトレーニングは、より優れた Q 関数の開発を中心に行われます。プレイヤーはチェスのマニュアルを使用して、特定の動きがどのように発生するか、また特定の動きが勝利につながる可能性がどの程度あるかを学びます。しかし、機械はどのようにして Q 関数の品質を評価するのでしょうか?ここでニューラル ネットワークが役立ちます。 最終申告 ゲームをプレイするとき、次のような部分を含む多くの「体験」があります。
これらの経験が私たちのトレーニングデータとなります。 Q(S,A)を推定する問題を回帰問題として定義することができます。この問題を解決するには、ニューラル ネットワークを使用できます。 S と A からなる入力ベクトルが与えられた場合、ニューラル ネットワークは Q(S, A) の値がターゲット R + γ * max Q(S', A') に等しいと予測できる必要があります。 異なる状態Sと異なるアクションAに対するQ(S, A)を非常に正確に予測できれば、Q関数を非常に正確に近似することができます。 Q(S, A)と同じニューラルネットワークを介してQ(S', A')を推定することに注意してください。 トレーニングプロセス 一連の経験 <S、A、R、S'> が与えられた場合、トレーニング プロセスは次のようになります。
ゲーム中、すべての体験はリプレイメモリに保存されます。これは、<S、A、R、S'> ペアを格納する単純なキャッシュのようなものです。これらのエクスペリエンス リプレイ クラスは、トレーニング データを準備するためにも使用できます。次のコードを見てみましょう。
モデルの定義 それでは、Q 学習を使用してキャッチ ゲームを学習するためのモデルを定義しましょう。 Tensorflow のフロントエンドとして Keras を使用します。私たちのベースライン モデルは、シンプルな 3 層の高密度ネットワークです。このモデルは、キャッチ ゲームのシンプルなバージョンでうまく機能します。完全な実装は GitHub でご覧いただけます。 より複雑なモデルを試して、より良いパフォーマンスを実現できるかどうかを確認することもできます。
探検する Q 学習の最後の要素は探索です。日々の生活は、日常の行動よりも良いことがあるかどうかを知るために、時には奇妙なことやランダムなことをしなければならないということを教えてくれます。 Q学習でも同様です。常に最善の選択をするということは、これまで探索したことのない道を見逃してしまう可能性があることを意味します。これを避けるために、学習者はランダムな項目を追加することがありますが、必ずしも最適な項目が追加されるとは限りません。トレーニング方法は次のように定義できます。
このゲーム ボットを 5000 エポックにわたってトレーニングしたところ、パフォーマンスが非常に良好でした。 ロボットの動きを捉える 上の GIF でわかるように、ロボットは空から落ちてくるリンゴをキャッチできます。このモデルの学習プロセスを視覚化するために、各エポックの勝利の移動平均をプロットしたところ、次のようになりました。 次に何をすればいいでしょうか?これで、強化学習についての基本的な直感が得られました。完全なコードについてはチュートリアルを参照することをお勧めします。ぜひお試し下さい。 |
<<: AI大学院生は年間50万元を稼ぐことができるが、彼らの給料は学校を卒業する前からすでに奪われている。
>>: 今週の Github の人気プロジェクトの概要: 自然言語処理 Python ライブラリ spaCy が最もホットです!
この記事では、主に統計アルゴリズム、分類アルゴリズム、クラスタリング アルゴリズム、協調フィルタリン...
現在、人工知能や5Gなどの技術の助けを借りて、我が国のドローン開発は急速な成長の軌道に乗っています。...
最近、海外メディアの報道によると、数学者たちは自分たちには解決できない機械学習に関連したコンピュータ...
イーロン・マスク氏の人工知能企業xAIは最近、GroKと呼ばれる人工知能チャットボットをリリースした...
[[441161]]最近のガートナー社の 2 つのレポートによると、AI および機械学習プロジェク...
[[249507]]過去 1 か月間の教育業界のホットなキーワードを本当に選ぶとしたら、それは間違...
[[251517]] 12月4日(浙江オンライン記者曽福全)このほど杭州で開催された浙江脳画像サミ...
11月5日、Wave Summit+2019 Deep Learning Developer Sum...
第三者の介入なしに何十億ものデバイスを接続してデータを交換できるため、モノのインターネット (IoT...
[[426283]]毎日肖像画を模写する練習を続けた結果、この芸術家はいくつかの重要な特徴だけを描い...