SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

翔泳社 新刊紹介(AD)

深層学習が強化学習において果たす役割とは?『現場で使える!Python深層強化学習入門』から紹介

  • このエントリーをはてなブックマークに追加

 AIサービスのみならずロボティクス分野でもその応用が期待されている深層強化学習。AI開発に携わる第一線の著者陣が開発手法について解説した『現場で使える!Python深層強化学習入門』(翔泳社)より、「Chapter1 強化学習の有用性」を抜粋して紹介します。

  • このエントリーをはてなブックマークに追加
本記事は『現場で使える!Python深層強化学習入門 強化学習と深層学習による探索と制御』から抜粋したものです。掲載にあたり、一部を編集しています。

 この記事では強化学習のアルゴリズムを理解するための前段として、機械学習の概要について説明します。さらに、機械学習において強化学習が他の学習法と本質的に異なる点を明らかにしつつ、その有用性について解説します。最後の節では、深層学習が強化学習において果たす役割について考察します。

1.1 機械学習の分類

 昨今の人工知能の目覚ましい発展を支えている基礎技術は、深層学習や強化学習に代表される機械学習であると言えます。本節では、機械学習を構成する3つの手法、すなわち、教師あり学習、教師なし学習、強化学習の概要について説明します。

 近年、人工知能あるいはAI(Artificial Intelligence)という言葉をよく耳にします。人工知能と聞くとSF映画に現れて人類と敵対する、いわゆる「強いAI」を思い浮かべる人が多いでしょう。スタンリー・キューブリックによるSF映画の古典的名作『2001年宇宙の旅』には、HAL 9000という人工知能が登場します。この人工知能は、人間と同様に何でもこなす汎用型人工知能です。映画では、木星に向かう宇宙船ディスカバリー号の運航、乗務員の健康状態の維持管理、食事の世話はもちろん、乗務員の話し相手になったり、チェスの相手もしています。

 2001年から18年が過ぎた2019年現在、HAL 9000のような汎用型人工知能の開発はまだ発展途上ですが、様々なタスクに特化した人工知能の発展には目覚ましいものがあります。自動運転技術は、実用化されつつありますし、深層学習による画像認識は既に人間の認識精度を超えています。機械翻訳や対話ボットの精度も深層学習の適用により著しく向上しました。HAL 9000は、乗務員のチェスの相手もできますが、Google DeepMindによるAlphaGoは、囲碁で人間のプロ棋士に勝てるまでになりました。AlphaGoがここまで強くなれたのは、深層学習による棋譜の理解に加えて、深層ネットワーク同士を対戦させながら強化学習して鍛えたことによるものです。

 今日、人工知能と呼ばれているものを支えている基礎技術は、機械学習と言ってよいでしょう。機械学習は、大量なデータ間の統計的関係性を学習した結果をもとに、予測や分類といった問題に取り組むアプローチです。機械学習では、データ間の統計的関係性をモデルとして定式化して、そのパラメータを訓練用データを学習することにより推定します。したがって、モデルの信頼性を保証するには大量のデータが必要となります。近年、計算機性能が飛躍的に向上した結果、大量データを短時間で処理することが可能となり、深層学習を含む機械学習の性能が著しく向上しました。

 機械学習の手法は、大きく3種類に分類できます。「教師あり学習」「教師なし学習」「強化学習」の3種類です。本書のテーマである「強化学習」の説明に進む前に、これらの3つの手法について簡単に説明します。

MEMO 1.1 強いAIと弱いAI

 強いAIと弱いAIという概念は、アメリカの哲学者J.R.サール(John Rogers Searle)により提唱された概念です。J.R.サールは、人工知能が自意識を獲得できるかという問いを考察し、人間のように自我や自意識を持つ人工知能を強いAI(strong AI)、人間と同程度かそれ以上の知的処理を行えるが、自我や自意識を持たない人工知能を弱いAI(weak AI)と呼んで区別しました。

 近年の深層学習の発展は、人間による設計を介さずに画像から特徴量を抽出できるなど、弱いAIとしての人工知能に飛躍的な発展をもたらしました。さらに、深層学習による認知と強化学習による制御を組合せた深層強化学習は、一見して人間の自律的な知的活動を再現しているようにも見えます。しかし、こうした人工知能は、人間が考えたアルゴリズムにしたがって推論と制御を行っているに過ぎません。強いAIの登場を危惧するのは、時期尚早かもしれません。

1.1.1 教師あり学習

 異なるデータ間の関係性を、一方を入力(説明変数)、他方を出力(目的変数)とする関数関係として記述し、関数出力を観測データ(目的変数)に近づけるように学習する方法です。この場合、関数出力という回答(予測)に対して、観測データ(目的変数)が正解(教師データ)の役割をするので、教師あり学習(supervised learning)と言います。

 教師あり学習において目的変数が連続変数の場合、予測関数を推定する学習は回帰分析とも呼ばれます。一方、目的変数がラベルのようなカテゴリカル変数の場合、予測関数は各ラベルが付与される確率であり、その値が最大となるラベルが正解ラベルと一致するように学習します。正解ラベルを予測する学習は判別分析とも呼ばれます(図1.1)。

 いずれの場合も、教師あり学習を行うには、予め説明変数に対して目的変数が教師データとして紐づいていなければなりません。例えば、深層学習で画像識別ネットワークを学習する場合、猫の画像には「ネコ」、犬の画像には「イヌ」というラベルが予め付与されている必要があります。教師あり学習で精度のよい学習結果を得るには、大量のラベル付きデータを必要とします。

図1.1 教師あり学習
図1.1 教師あり学習

1.1.2 教師なし学習

 教師なし学習(unsupervised learning)とは、異なるデータ間の関係性をデータの分布や変数間の相関関係などデータ構造に基づいて学習する方法です。クラスタリングによるデータ分類や次元圧縮による特徴量抽出などが挙げられます(図1.2)。例えば、Ward法などの階層的クラスタ分析法では、データ点の集合をデータ間距離が小さい2点から順に階層的に統合することで、いくつかのまとまったクラスタに分類します。データ間距離しか使わないので教師データは不要です。次元圧縮の代表的手法である主成分分析では、データ空間を記述する変数軸に回転操作を行って、データ分散が大きい順に、回転後の変数軸を主成分(特徴量)として抽出します。この場合、データの線形変換を行っているだけなので、教師データは必要ありません。

図1.2 教師なし学習
図1.2 教師なし学習

 また、深層学習モデルの1つであるAutoEncoderは、画像などの入力を、ニューラルネットワークを経て中間層に圧縮(encoding)した上で、同様のニューラルネットワークを経て入力画像を復元(decoding)します。復元した画像を、もとの入力画像に近づけるように学習することで中間層を非線形な特徴量として抽出できます(図1.3)。

図1.3 AutoEncoder
図1.3 AutoEncoder

 AutoEncoderでは、入力画像そのものが教師の役割をしますが、入力以外の教師データを必要としないという意味で教師なし学習と見なすことができます。ちなみに、AutoEncoderは学習に用いた画像群に含まれていない画像的特徴を再現できず異常として検出するので、画像を使った異常検知手法としての応用が考えられます。

1.1.3 強化学習

 教師あり学習や教師なし学習は、所与のデータについてデータ間の関係性やデータ構造を学習する手法です。その目的は、観測データを分析して理解することであり、人間の知的行動に当てはめると「認知」に対応します。しかし、自動車の運転のような高度な知的操作を機械学習で代用しようとした場合、認知だけでは十分ではありません。運転免許教習所の技能実習では、自動車の運転は、「認知」「判断」「行動」の3つからなると教わります。機械学習においても「認知」の他に、「判断」「行動」について学習する必要が生じます。

 強化学習(reinforcement learning)とは、端的に言えば、「認知」した状況の下で最適な「行動」を「判断」すること、すなわち「制御」を学習する方法です(図1.4)。ここで言う「判断」とは、所与の状況(例えば、前方の車に接近したとき)において、最適な行動(ブレーキを踏んで減速する)が何かを判断することを意味しますが、行動が最適かどうかを知るには、その状況における行動の「価値」を知る必要があります。行動の価値は、予め定量的に与えられているわけではないので、試行錯誤を通して獲得するしかありません。このように、強化学習には試行錯誤が不可欠です。

図1.4 制御の仕組み
図1.4 制御の仕組み

 ところで、強化学習は、最適な行動を教師と見なせば教師あり学習の設定にも似ています。しかし、学習目的は明確でも正解を定義することが難しいため、教師あり学習を適用しづらい問題が数多くあります。例えば、自動車の運転操作を教師あり学習する場合を考えてみましょう。交差点の手前で信号が黄色に変わったとき、ブレーキを踏んで止まるのが正解でしょうか? その時点で後続車がなくスピードも出ていなければ、ブレーキを踏むのが正解です。しかし、後続車が迫っていてスピードが出ている場合、ブレーキを踏むことは後続車との衝突を引き起こすので明らかに不正解です。つまり、その時点で何が正解なのかは、周辺状況や走行状態に依存して変わります。

 ある行動(ブレーキを踏むなど)に対して、直接的に正解を定義することが難しい場合でも、行動のもたらす結果に応じて「報酬」を返すことで間接的に評価することはできます。先程の自動車の例では、ブレーキを踏んだ結果、スムーズに停止できれば正の報酬+1、後続車が衝突したり、急ブレーキをかけるなどスムーズに停止できなければペナルティとして負の報酬-1を与えることでブレーキを踏むという行動を評価できます。このように、行動に対するフィードバックとして報酬を受け取りながら、最適な行動の選び方を学習する方法が、強化学習に他なりません。次節では、強化学習と他の学習法との違いについて、もう少し詳しく見てみましょう。

1.2 強化学習でできること

 ここでは、機械学習における強化学習と他の手法との違いを考察し、強化学習が探索と活用を繰り返しながら環境の制御を学習する手法であることを理解します。

 ここで強化学習の問題設定を整理しましょう。強化学習では「認知」「判断」「行動」を行う主体あるいは仕組みのことをエージェント(agent)と呼びます。自動車の運転で考えると、エージェントは自動車のドライバーに対応します。一方、エージェントが制御しようとする対象のことを、強化学習では環境(environment)と呼びます。自動車およびその周辺を含む系全体が環境に対応します。

 自動車の運転では、ドライバーは自動車のスピードメータを見て走行速度を把握し、前方やバックミラーに映る後方を目視することで周辺状況を把握します。これは、エージェントが環境を「認知」することに当たります。その結果、前方を走る車との車間距離が短いと「判断」すれば、減速するという「行動」を起こします。こうして前方車との衝突を回避できれば、環境は正の「報酬」をエージェントに返し、回避できなければペナルティとして負の「報酬」をエージェントに返します。エージェントは、報酬という環境からのフィードバックをもとに行動を起こす判断基準を修正しながら、環境を制御する方法を学習していきます(図1.4)。

 以上をまとめると、強化学習とは、エージェントが環境との相互作用を通じて情報収集しながら、環境を制御する方法を学習することであると言えます。エージェントは制御器とも呼ばれ、環境の置かれた状態に基づいて行動を選択しながら、環境を制御することを目的とします。一方、ここで言う環境とは、状態とその変化を規定するシステムを意味します。例えば、ロボット制御の場合、ロボットの各部の位置と速度、各関節の角度とその回転速度などが環境を記述します。エージェントは、何らかのアルゴリズムにより適切な操作を選択しながら、ロボットの動きや姿勢を制御するプログラムに対応します(図1.5)。

図1.5 強化学習の仕組み
図1.5 強化学習の仕組み

 教師あり学習においても、制御を学習することは可能です。自動車の運転を例に考えてみましょう。教習所で教官がお手本となる運転を見せてくれます。生徒は、その運転法を真似して同じように操作することを学びます。実際、機械学習においても、人間のエキスパートの操作法を真似しながら制御を学習する方法、いわゆる「模倣学習」が盛んに研究されています。

 確かに教師あり学習でも制御を学習することはできますが、その場合、学習結果は教師データに特化しているため、ノイズとして教師データには含まれていない摂動が加えられると、適切な操作を返すことができません。教師あり学習では、教師を模倣することが目的であり、行動を評価することはないので、状況に応じて適切な行動を選択できないのです。

 その点、強化学習では、教師あり学習のように正解が予め用意されていなくても、エージェントの行動(action)に対する評価を環境から報酬(reward)として受け取ることで、エージェントは自らの行動選択ルールを改善することができます。強化学習では、エージェントの行動選択ルールを方策(policy)と呼びます(図1.6)。最適な方策を学習して、その方策に基づいてエージェントが環境を制御できるようにすることが強化学習の目的です。

図1.6 方策(policy)による行動決定
図1.6 方策(policy)による行動決定

 強化学習でできることについて、もう少し見てみましょう。正解がなくても学習できるということは、正解がわからない、あるいは直接的に定義できない場合でも、強化学習なら方策を学習できます。例えば、2足歩行ロボットの制御の場合、長い距離を倒れずに歩くための足の動かし方は複雑で、正解例も歩くときの状況に応じて無限に存在します。このような場合でも、例えば、連続歩行距離(倒れずに歩いた距離)を報酬として与えることで、試行錯誤を何度も繰り返したのちに歩き方を習得できます(図1.7)。

図1.7 報酬による方策評価
図1.7 報酬による方策評価

 巡回セールスマン問題のような組合せ最適化問題では、問題の規模が大きくなると可能な経路の数が訪問する都市数の階乗で増えるので正解を見つけること自体が難しくなります。囲碁などのゲームも同様です。この場合、棋譜を正解として教師あり学習で囲碁の手順を学習することはできても、対戦に勝つためには状況に応じて最適な一手を打たねばなりません。自動車の運転においても、状況に応じて対応の仕方は一通りではありません。このように解の空間が広すぎて実際上は正解がわからない状況においても、強化学習では観測された報酬系列から行動の将来価値を評価しながら、方策を改善できます。

 さらに、強化学習のもう1つの特徴として、探索による情報収集と活用による最適化をバランスよく織り交ぜながら学習していきます。つまり、環境についての知識がなくても探索と活用を繰り返しながら最適な方策を学習できるのです。このように、環境モデルの知識を前提としない学習法をモデルフリー(modelfree)な学習と呼びます。

図1.8 モデルフリーな探索
図1.8 モデルフリーな探索

 図1.8は、モデルフリーな学習を絵で表したものです。環境モデルは未知なので、中身のわからない箱(ブラックボックス)として表されています。エージェントは環境モデルから情報を得るために、箱をハンマーで叩くという行動を試みます。その結果、箱からコインが何枚か出てきました。これは、環境モデルが行動に応じて報酬を返すことを意味します。このように、エージェントはハンマーで箱のいろんな場所を叩いて箱の反応を見ながら探索を重ねていき、どこを叩けば収益が最大となるかを学習していきます。

 このように強化学習では、モデルフリーな状況でも様々な行動を試しながら探索を重ねていき、最適な行動を選ぶための方策を学習していきます。強化学習により、モデルフリーな制御を実現できるのです(2.3節参照)。

 最適化アルゴリズムとしては、強化学習の他にも遺伝アルゴリズムなどのメタヒューリスティクスや、整数計画問題に対する分枝限定法などの厳密解法も存在します。一般に、メタヒューリスティクスでは、候補となる近似解を多数生成して評価するため、計算量が膨大になります。また、厳密解を当てはめる場合、解を段階的に絞り込んでいくので、解を得るまでに時間を要します。その点、強化学習は、サンプリングやブートストラップを適用して計算リソースを抑えつつ、探索と活用を繰り返しながら着実に解を絞り込んでいくことができます(2.4節参照)。つまり、メタヒューリスティクスと厳密解の両者の利点をうまく取り込んだ学習法であると言えます。

1.3 深層強化学習とは

 深層学習による特徴抽出と強化学習による予測制御を組合せることで、ゲームAIやロボット制御などの複雑なシステムの制御ができるようになりました。本節では、深層学習が強化学習において果たす役割について考察します。

 強化学習においては、環境についての知識は未知であるため(モデルフリー)、探索によって環境について情報収集する必要があります。例えば、囲碁やビデオゲームを習得する場合、囲碁の盤面の石の配置とか、ビデオゲーム画面のキャラクターの配置などから、ゲームの状況を把握して次の一手を決定しなければなりません。このような場合、盤面やゲーム画面などの2次元の画像情報から、ゲームの局面という高次の特徴量を抽出することが要求されます。車の自動運転においても、センサーが取得した画像情報から歩行者や障害物の特徴を把握して適切な操作をしなければなりません。

 さらに、囲碁の場合で考えると、盤面の特徴を把握して局面を理解できたとして、その後の戦略を何手先までも先読みして最適な一手を選択する必要があります。その場合、一連の行動とそのもたらす結果として、状態と報酬の系列を事前にシミュレーションする必要があります。つまり、状態・行動・報酬の系列データを逐次的に生成する仕組みが必要です。

 このように、強化学習の適用には、観測データからの特徴量抽出と、予測シミュレーションを可能とする系列データ生成とが必要となります。これら2つの重要な仕組みを提供するのが深層学習です。深層学習(Deep learning)は、ニューラルネットワークの層を多数積んだ深層ニューラルネットワーク(DeepNeural Network, DNN)とそれらを学習するための一連の技術体系をまとめたものです。

 観測データからの特徴量抽出器としては、畳み込みニューラルネットワーク(Convolutional Neural Network, CNN)が有効であることが知られています。これは、畳み込み演算と言われる演算操作により、一定の拡がりを持つ空間情報を集約して次の層に渡す処理を繰り返しながら、空間情報の特徴量を抽出する方法です。

 CNNでは、こうして得られた特徴量を利用して様々なタスクに適用することができます。例えば、画像分類問題に適用する場合、画像に対して被写体の分類ラベル(ネコ、イヌ、ヒト)が一意に紐づく画像セットを訓練データとして、画像から分類ラベルを予測するモデルを学習します(図1.9)。その際、CNNによる特徴量出力を全結合ニューラルネットワークからなるラベル予測モデルに渡して学習することで、人間を超える分類精度を達成することができました。

図1.9 CNNによる画像分類
図1.9 CNNによる画像分類

 系列データ生成器としては、再帰型ニューラルネットワーク(Recurrent Neural Network, RNN)が有効なモデルとして知られています。これは、ニューラルネットワークの層の情報を時間方向にも伝播することで系列データを学習できるようにしたものです。具体的には、ある層の情報を次の層に渡すだけでなく、次時点の同じ層にも再帰的に渡すことで系列データの特徴を把握します。また、こうして学習されたRNNを用いて、逐次的に系列要素を1個ずつ予測しながら系列データを生成することができます(図1.10)。この技術は、言語の自動翻訳に応用され、高い精度の翻訳を実現できるようになりました。

図1.10 RNNによる系列データ生成
図1.10 RNNによる系列データ生成

 こうした深層学習による特徴量抽出と系列データ生成を強化学習に適用して、これまで制御が難しいと考えられていたタスクを制御できるようにする試みが深層強化学習です。本書では、強化学習と深層学習のアルゴリズムについて詳しく解説した上で(第1部)、深層強化学習の適用事例として、連続変数の制御、組合せ最適化問題、系列データ生成、といった興味深いタスクについて実装をベースに紹介します(第2部)。

 ところで、本書で扱う適用事例に共通しているのは、行動を表す変数が連続変数であったり、行動の選択肢の数が多い(高次元)などの理由により、強化学習でよく用いられているQ学習での取り扱いが難しいということです。こうした高次元または連続な行動変数による制御を扱うには、所与の状態における行動の価値を推定するよりも、行動の確率分布を記述する方策(policy)を学習するほうが有効です。

 そこで、本書では、強化学習アルゴリズムの中でも方策勾配法やActor-Critic法といった方策ベースの手法を詳しく解説します(2.4節)。また、深層学習においては、系列データ生成で重要となるRNNおよび長期・短期記憶(Long Short Term Memory, LSTM)による拡張について詳しく解説します(第3章)。

現場で使える!Python深層強化学習入門

Amazon SEshop その他


現場で使える!Python深層強化学習入門
強化学習と深層学習による探索と制御

著者:伊藤多一、今津義充、須藤広大、仁ノ平将人、川崎悠介、酒井裕企、魏崇哲
発売日:2019年8月7日(水)
価格:3,672円(税込)

本書について

AI開発に携わる第一線の著者陣が深層強化学習の開発手法について書き下ろした注目の1冊です。

 

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
翔泳社 新刊紹介連載記事一覧

もっと読む

この記事の著者

渡部 拓也(ワタナベ タクヤ)

 翔泳社マーケティング課。MarkeZine、CodeZine、EnterpriseZine、Biz/Zine、ほかにて翔泳社の本の紹介記事や著者インタビュー、たまにそれ以外も執筆しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11687 2019/08/30 07:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング