マナティ

作りながら学ぶ強化学習 -初歩からPyTorchによる深層強化学習まで

第1回 強化学習とは

SEやプログラマ、エンジニア、一般の方を対象に、少しずつ実際にプログラムを作りながら、強化学習および深層強化学習について解説していきます。

本連載をまとめ、さらに多くの記事を追加した書籍『つくりながら学ぶ!深層強化学習』を2018年7月に発売しました!

91985_ext_06_0.jpg
(上の書籍画像をクリックすると購入サイトに移動できます)

はじめに

 近年、強化学習(Reinforcement Learning)および、深層強化学習(Deep Reinforcement Learning)という言葉を耳にする機会が、非常に増えています。一方で「実際に強化学習を実装してみた」という方は、それほど多くないように感じています。

 実装経験がある方が少ない理由として、一般の方やプログラマ、エンジニアの方を対象とした強化学習の解説本が少ないからではないかと考えております。最近、ディープラーニング(深層学習)、機械学習、AIに関して、多くの解説本が出版されています。しかしながら強化学習・深層強化学習にフォーカスした書籍は少なく、しかも出版されている書籍の多くは、研究者の方が、研究者(もしくはその分野を学ぶ大学院生)を対象に執筆した、アカデミックな内容となっています。理論の説明が丁寧で数式が多く、実装コードは少ない傾向にあるため、研究者でない人間が強化学習を理解するには、いくぶんハードルが高いように感じます。

 そこで本連載では、SEやプログラマ、エンジニア、一般の方を対象として、実際にプログラムを少しずつ実装しながら、強化学習、深層強化学習を学び理解していただくことを目的とします。

教師あり学習、教師なし学習、強化学習

 本節では、3種類の機械学習手法(教師あり学習、教師なし学習、強化学習)の概要を紹介します。

 はじめに、言葉の意味を簡単に整理します。近年、AI(Artificial Intelligence)、機械学習(Machine Learning)、強化学習(Reinforcement Learning)、深層学習(Deep Learning)といった言葉が氾濫しています。AIは日本語では人工知能を意味し、その定義は研究者によって様々ですが(*1)、大まかには「人が知的だな~と感じるシステムや、そのようなシステムを搭載したロボット」を指します。そしてこのAIを実現する1つの手法が“機械学習”です。その機械学習の手法を大きく3つに分けると、教師あり学習、教師なし学習、強化学習となります。ただしこれら3つの分類は必ずしもMECE(Mutually Exclusive and Collectively Exhaustive、漏れなくダブりなく の意味)ではなく、なかにはどちらにも属するシステムも存在します。そして、深層学習はこの機械学習を実現する1つの手法となります。

教師あり学習

 3つ機械学習手法の1つである、教師あり学習について説明します。例えば「郵便番号の手書き数字を識別するシステム」は、教師あり学習となります。郵便番号の識別システムでは、7桁の郵便番号の手書き数字を、それぞれ0~9のデジタルな数値データに識別します。その他、様々な画像や音声、テキストデータの識別などに、教師あり学習が使用されます。

 教師あり学習は、学習フェイズと運用フェイズから構成されます。手書き数字の識別を例に、図を用いて解説します(図1.1)。

001.jpg

図1.1 教師あり学習を用いて、手書き数字を識別させる例 (*2)

 学習フェイズでは、0~9の手書き数字画像データを、教師データとしてたくさん用意します。ここで教師データとは、画像データに対して、正しい数値のラベルが用意されているデータのことです。つまり「この手書き数字画像は、1ですよ~」といった正解情報がデータに付随しているので、教師データと呼ばれます。そして学習フェイズでは、システムに手書き数字画像を入力したときに、可能な限り正しいラベル(数値)が出力されるよう、システムのパラメータを調整します。

 運用フェイズでは、ラベルがない手書き数字の画像データを入力し、その画像が0~9のどれであったか、ラベルを出力させます。きちんと学習できていれば、未知の手書き文字画像を入力したときに、人が見て正しい数値ラベルが出力されます。

教師なし学習

 続いて、教師なし学習について説明します。教師なし学習では、教師データは存在しません。教師なし学習を一言で表すと“グループ分け”です。たくさんのデータから、似ているデータをグルーピングします。例えば「自社の顧客を、購買データを元にグループ分けして分析するシステム」は教師なし学習となります。このシステムは購買履歴の特徴を分析して顧客を複数のグループに分け、グループごとに異なる販売戦略を実行するサポートをします。

 購買データの分析例を、図を用いて解説します(図1.2)。

002.jpg

図1.2 教師なし学習を用いて、購買データから顧客をグループ分けする例

 購買データとして、顧客ごとに、過去1年間の購入回数と、1回の購入の平均単価が格納されたデータを解析するとします。このデータを元に顧客をグループ分けしてみると、2つのグループに分けられ、青色のグループAは低頻度で高単価の商品を購入するグループであり、赤色のグループBは、リピートは多いが1回の購入単価が低いグループであると分かります。教師なし学習でグループ分けすれば、顧客ひとりひとりがどのグループに属しているかが分かり、グループごとに最適な販売戦略を行うことができます(ビジネスではもっと細かな分析が必要ですが)。

強化学習

 最後に強化学習について解説します。強化学習は主に「時系列変化を伴う制御課題の攻略」や「対戦型システムの戦略構築」に使用される手法です。例えば、ロボットの歩行制御システムや囲碁等の対戦プログラムに強化学習が使用されることがあります(図1.3)。

003.jpg

図1.3 強化学習が適用される例 *3

 強化学習では教師データはありませんが、まったく教師(正解)となる情報がないわけではありません。望ましい結果が得られた際には、報酬と呼ばれるものをシステムに与えてあげます。例えば、ロボットの歩行制御では「歩けた距離」が報酬であり、囲碁の対戦プログラムでは「勝ったか負けたか」が報酬となります。

 仮に教師あり学習でロボットの歩行制御を行うならば「脚の関節がこの角度で、速度がこれくらいのときはモーターAをこれくらい回せ」といちいち正解を教えてあげる必要があります。一方、強化学習では、コケずに歩けた距離を報酬として歩行制御システムに与えます。すると強化学習システムは「次はもっとたくさん歩けるように、歩き方を少し変更してみよう」と制御プログラムを自ら変更します。その結果、以前よりもたくさん歩けるようになり、そのうち歩き方そのものは教えていないのにどんどん歩けるようになります。囲碁等の対戦型プログラムでも、うまい人の打ち方を教えるわけでもなく、勝負に勝ったか負けたかだけを報酬として入力します。すると、強化学習システムが自分で打ち方を少し変更し以前よりも強くなります。自分で作った囲碁や将棋システムが、作成者よりも強いということが容易に実現されます。

 この説明だけを聞くと、強化学習はまるで魔法のようですが、実際にはいろいろな困難があります。強化学習の難しさについては、次回以降で詳細に説明していきます。

 今回は、3種類の機械学習手法(教師あり学習、教師なし学習、強化学習)の概要を紹介しました。次回は「近年なぜこれほどまでに、強化学習に注目が集まっているのか」の理由を紹介します。

引用
*1 人工知能は人間を超えるか ディープラーニングの先にあるもの (著)松尾 豊 KADOKAWA
*2 MNISTの画像データ(http://yann.lecun.com/exdb/mnist/
*3 viphotos/shutterstock、kirill_makarov/shutterstock

著者プロフィール

株式会社電通国際情報サービス ⼩川雄太郎(著者)
株式会社電通国際情報サービス(ISID)、技術本部 開発技術部に所属。ディープラーニングをはじめとした機械学習関連技術の研究開発・技術支援、およびHR techに関するデータ解析を業務とする。明石高専、東京大学工学部を経て、東京大学大学院新領域創成科学研究科、神保・小谷研究室にて、脳機能計測および計算論的神経科学の研究に従事し、2016年博士号(科学)を取得。東京大学特任研究員を経て、2017年4月より現職。