強化学習とは?強化学習の仕組みを徹底解説2こんにちは、AI研究所見習い研究員のショウです。今回は、前回の記事「強化学習とは?強化学習の仕組みを徹底解説」に引き続き、どのような仕組みになっているのかを少し違う視点でご紹介します。learning)とは?強化学習を理解するのに分かりやすい例えは「パブロフの犬」です。犬にエサを与える時、ベルを鳴らしてから与えるという事を繰り返していると、ベルを鳴らすだけで犬がよだれを垂らすようになるというものです。強化学習を語る際にも十分適用できます。強化学習を単純に考えると「報酬を与えることによって行動を促す」ことだからです。報酬は「餌」になります。この「餌」が与えられる「条件」をベルの音とすると、この「条件」を何百回も「餌を与える前」に繰り返すことによって「条件」だけで「涎を流す」という行動が促されるます。食べ物を消化するための涎が分泌されます。ベルの音とという条件が「必ず餌の前に鳴る」と脳が判断したら、ベルの音=餌と認識して、ベルの音=餌=「餌を消化するための涎を流す」という一連の行動が生まれます。本来なら餌が報酬になりますが、ベルの音がなった時必ず餌が貰えるなら、ベルの音を報酬として、脳が認識するようになります。強化学習の説明の続きをする前に、よく誤解される「教師あり学習」と強化学習の違いを、軽く説明します。「ベルの音」と「餌が貰える」の関連付け作業を最初から教師(正解データ)が与えます。強化学習では、この関連付け作業を学習を行っていく過程で、自分で「発見」をしていきます。強化学習は、大脳が発達している動物の、より自然な学習形態に近いと言えそうです。強化学習においてはさらに「罰則」が存在します。褒められることも、自分は頑張ったと感じる充足感も「報酬」になります。頑張れなかった、サボった、それによってもたらされる「劣等感」さらに、周りの人間に失望されること、親などに叱られることが「罰則」になります。「エージェント」は「いい点数をとって人に褒められる」ことを目的として、行動することになります。「悪い点数をとって人に叱られる」ことが罰則となり、これを避けるようにも行動します。これをコンピューターによって「エージェント」は「何百回」も「実際に体験」します。現実の「子供」は「エージェント」のように「何百回もの実体験」を「短期間」で重ねることはできません。「現実」のように「必ずしも人は報酬と罰則のみによって行動している」とは限りません。強化学習をイメージしやすくするための例えです。行動が単純に「報酬と罰則によって決定付けされている物事」ならコンピューターによってこの「訓練」を「短期間」で「繰り返す」ことによって「エージェント」は「短時間」で賢くなり、「人が望む行動」してくれるようになります。「AlphaGo」などがそれにあたります。勝ち越すなど、かなりの成果をあげています。「低スコア」「負ける」ような行動が罰則となり、それを基に行動させるよう、コンピューターに計算させることができます。強化学習はこの「報酬」と「罰則」のルールをどうように決めているのでしょうか。今からそのルールにあたる、アルゴリズム(計算方法)を説明していきたいと思います。Q-Learning(Q値)それでは強化学習がどのように学習を進めていくかの概要を基本的なアルゴリズムQ-Learningで説明していきます。状態と行動と報酬ここで、簡単に3つの大事な要素を紹介します。状態:s(State):現在どのような状態、状況になっているかを示すもの。将棋でいう「現在の譜面そのもの」や「戦況」です。行動:a(Action):どのような行動を起こすか。将棋でいうなら「2六步を指す」や「7六歩を指す」です。報酬:r(Reward):行動を起こした結果の利益です。下の図のような場面があるとします。ここで、1二金と打つと、玉は3一玉と移動して、詰めなくなってしまいます。2二金と打てば、ここで詰みになります。この詰みになることをReward(r:報酬)として、+1点とすると詰みにならない行動は(r:報酬)−1点。その他を0点と決めます。将棋の場合持ち駒がありますのでより複雑になりますが、ここでは簡略化して、持ち駒「金」を各マス目に置いた場合の点数を振り分けます。報酬を与えているからです。Q-Learningは極端にいうと、上の画像の左上(右上からでもいい)から順次「取り敢えず試してみて」、「その行動によってどんな報酬が得られたのか」を計算していく方法になります。とった時)この値を最大化していけばいいのです。ここで上の画像を見て気付いたかたもいるかもしれませんが、1手で詰む「2二金」と2手で詰む「3二金」が同じ+1になっています。将棋の目的は「相手に勝つ」ことです。美しい指し手を披露したら「点数が加算される」といったことは加味されません。同じ1点とみなされます。将来的にもらえる報酬を鑑みた値をみています。時間割引率しかし、実際問題としてはできるだけ最短で勝利を得たほうがその1手に「価値」があると考えるでしょう。そこでγ(ガンマ)「時間割引率」の考えが出てきます。この時間割引率に行動した回数を指数として累乗していき、さらに報酬を掛けて加重していきます。これにより、最終的には同じ報酬でも時間が経過するごとに最大値が減っていくように調整してあげます。分かりやすく考えます。+(0.9)^3*rt+3(10)となり、報酬が最大になるような方策(ポリシー)を見つけることが、強化学習の目的とすると4回より、2回で報酬が最大となる方策(ポリシー)を選択するように学習します。=(0.9)^0*rt(10)となります。(DQN)Q-Learningをある方策のもと繰り返し、繰り返し行っていけばいつかは最適な値Q(s,a)を見つけてくれます。QーLearningは単純なタスク。計算もすぐに終わります。前述した「将棋」などはとても複雑な構成をしています。9マス×9マス棋盤に駒数が自分相手合わせて、40。多種多様な戦略と戦術とそれに基づいた行動が存在します。Learningの手法を組み合わせることができれば、最適な値Q(s,a)の近似値を複雑な状況下に置いて導き出すことができることをGoogleの子会社ディープマインドが発見しました。Q-Networkです。Learningの芯の部分を説明します。Learningの手法が使われたのかも理解でき、さらに、今まで説明してきた簡単な強化学習の概念と実は似ていることにも気付くはずです。Propagation)上の画像のニューラルネットワークから伸びる矢印は省略してあります。入力が出力に与える影響の「重要度」を調整する値が含まれています。Learningの真髄です。簡略して説明するなら入力に対して出力した値を正解データと見比べて、その誤差を計算。Learningがやっていることです。Learningモデルと、Q-learningをどのように組み合わせているのかを説明していきます。Learningを図解したものです。Q-Learningは各時刻の行動:a:と状態:s:からQ-Tableを作り、それを基にQ値を導き出します。Q-Learningは各時刻の状態:s:がQ-Learning用のニューラルネットワーク層を介して、各行動:a:の時のQ値を求めます。逆伝播で重みを最適な値に更新していきます。ピンポンゲームでは具体的な事例を混じえた説明をしていきます。始めに、学習対象となる素材は「単純なピンポンゲーム」にします。これは画像の通り、単純にやってくるボールを穴に入れるだけです。ボールを落としたらゲームオーバーどれだけ高得点できるかで競い合います。畳み込み層これらの画像一つ一つを状態として認識させます。計算量の削減のため、必要な情報だけを整理させます。今回のピンポンゲームで重要なステータス(状態)は玉の位置と、それを弾くボードの位置、それからスコアのための穴の位置です。それだけ把握できればいいので、画像をグレイスケール(白黒にする)してさらに小さくして重ねていきます。Layer)で活性化関数を使い各アクションごとのQ値を導きだします。CNNを簡単に説明すると、画面を小さな画面に分割して、それを端から端までスライドさせて、各画像のピクセル情報を認識していく手法です。入力した値が1より大きければそのまま入力の値を出力します。Replayここでもう少し機能を付け足せばDQNの完成です。replay(経験の繰り返し)です。これは前述したDQNの前段階の2つの弱点を補う形になります。・前に行った経験を忘れないようにする。・各経験のデータの相関関係を減らす。前に行った経験を忘れないようにする。これはそのままですが、前述の内容だと連続してまとまった環境のサンプル(画像を重ね合わせたもの)を繰り返しの中でニューラルネットワークに渡すだけでしたが、これだと前の経験を次の経験で上書きしてしまいます。新たにレベル2のステージを学習する時はレベル1の情報を忘れてしまうのです。Bufferというものを作ります。Experiencesとして保存しておけば各経験値ごとの期待値をニューラルネットワークにて精査できます。各データの相関を減らすもう一つの問題です。それは、全ての行動は次の状態に影響してしまうということです。なると最終的に報酬を得た状態へ辿り着くために見つけたルートをエージェントはワンパターンに繰り返すだけになってしまいます。機械学習における過学習に似ているかもしれません。学習を行う際はそこからランダムに選び出して利用させます。行動を起こした結果の報酬が「左パターン」だった。今度はもう一回はじめから学習して、「右パターン」を発見した。「真ん中パターン」もあった。この経験をランダムにサンプリングすることによって同じゴールでも様々なバリエーションの行動を取ることができます。(はっきりいって今回の場合は非常にシンプルなのでバリエーションも何もないですが)おわりにここまでで一旦強化学習についての説明は終わります。深く理解されたい方は、強化学習プログラミングセミナーを受講してみてください。最後までお読み頂きありがとうございました。私たちAI研究所は、ビジネス向けAI完全攻略セミナーを開催しています。初心者でも数学がわからなくてもより詳しく理解したい方でも満足いただける内容となっており、おかげさまで1,500人を超える受講者の方に受講していただきました。AI未経験者でも1日のセミナーを通してAIの理論や仕組みを理解し、AIを業務で活用できるようになります。AIプロジェクトを進めたい方にオススメのセミナーです。「AI(人工知能)ってなんだか分からないけど、凄そう」「ディープラーニングって用語を最近よく聞くけど、何の事を言っているのかさっぱり分からない」そういった人たちや、AI(人工知能)を使って業務効率を計りたいけど何をやったらいか分からないという方にもオススメのセミナーです。私たちAI研究所は、AIエンジニアになるための3日間集中セミナーを開催しています。AIやプログラム未経験者でも3日間のセミナーを通してAIの理論や仕組みを理解し、AIのプログラムを構築できるようになります。「AI(人工知能)ってなんだか分からないけど、凄そう」「ディープラーニングって用語を最近よく聞くけど、何の事を言っているのかさっぱり分からない」そういった人たちや、AI(人工知能)を使って業務効率を計りたいけど何をやったらいか分からないという方にもオススメのセミナーです。事務経験を経て、2016年9月よりAI研究所に入所。AIセミナー責任者、講師。AIについての幅広い知識を持ち、人に分かりやすく伝える技術を持つ。AIを事業や仕事に取り入れる方法について日々講義しています。RESERVED.ご希望のコースを選択してください。自分でコースを自由にカスタマイズする。