前回までで、機械学習における代表的な3つの手法のうち、「教師あり学習」「教師なし学習」の2つについて説明しました。今回は最後の1つ、「強化学習」と呼ばれる手法の概要を説明します。

強化学習は、一言で言うと「ある状態におけるさまざまな行動を評価し、より良い行動を自動的に学習する手法」です。特に、最近話題の囲碁・将棋といったゲームや、ロボットの動作を制御する上で高い性能を発揮します。

強化学習における「学習」とは?

強化学習は、「ある状態において次にどの行動をとるべきか」というルールを試行錯誤によって導き出す手法です。ある行動をとってみて、その結果の善し悪しに応じて「ある状態において次にどの行動をとるべきか」のルールを改善していくのです。これは人が経験則を作り上げる方法と似ています。

「次にどの行動をとるか」のルールは、「次にとれる各行動をとる確率」として表されます。これは例えば、左右どちらかに進める状況において「右に行く確率30%、左に行く確率70%」のようなものです。もし「右に行く確率30%、左に行く確率70%」というルールを保持している場合、コンピュータは左に行くことを選択することのほうが多いでしょう。そして左に行った結果、良くない状態になった場合は、自分の保持しているルールが良くないと判断し、左に行く確率を下げ、右に行く確率を上げるのです。

コンピュータはこのような試行を繰り返し、最終的に良い状態にたどり着く可能性の高い行動をとりやすくなるように行動の確率を調整していきます。これが、強化学習における「学習」です。「右に行くか左に行くか」を決めるのではなく、「右に行く確率と左に行く確率」を決める点に注意してください。

結果に応じて「行動の確率」を調整

では、コンピュータは「良い状態にたどり着く可能性の高い行動(価値のある行動)」をどのようにして見つけるのでしょうか。

私たちは、ある状態において何らかの行動をとった場合、次の状態へと移ります。そしてその状態でまた何らかの行動をとり、次の状態へと移る……というプロセスを繰り返します。例えば、お小遣いの残金が0円のときに大変なお手伝いをして500円のお小遣いをもらったら結構リッチな状態になりますし、楽なお手伝いをして100円のお小遣いをもらったらちょっとだけリッチな状態になるでしょう。

  
状態 行動 報酬 次の状態
お金がない状態 大変なお手伝いをする 500円 結構リッチな状態
お金がない状態 楽なお手伝いをする 100円 ちょっとだけリッチな状態

よりリッチな状態になりたい場合、この2つの行動のどちらがより「良い行動」でしょうか。当然、「結構リッチな状態」になれる「大変なお手伝いをする」という行動のほうが価値が高いと考えられます。

「ある行動によって引き起こされる次の状態が良ければOK」と考えるのであれば、この比較で十分でしょう。しかし、次の状態がほかと比べて多少悪かったとしても、最終的に最も良い状態になりたいと思うことのほうが現実には多いのではないでしょうか。

簡単な例で説明しましょう。

お手伝いの大変さに応じて10円から1,000円までのお小遣いがもらえ、保有しているお小遣いの額によって、「リッチ状態」が変化するとします。また、お手伝いのルートは、以下の図のように決まっているとします。

お手伝いの大変さに応じてお小遣いがもらえる

この状況で1つのルートしか通れないとしたら、ABCのうち、どのルートでお手伝いをすれば最もリッチな状態(最も多くのお小遣いを保有した状態)になれるでしょうか。

もし、今すぐお金が欲しいのであれば、すぐに100円がもらえるルートCが良いでしょう。しかし、長い目で見ると、累計1,020円もらえるルートAが一番たくさんのお小遣いをもらえます。強化学習で重要なのは、この「累積報酬」という考え方です。目先の利益ではなく、長い目で見たときに最も多くの報酬が得られるルートにたどり着けるように(最善だと思われる行動を取りやすいように)学習していくのです。

より複雑な「現実」に対応するために

今回の例は非常にシンプルなのでわかりやすいのですが、現実はもっと複雑です。考えられる「状態」はたくさんありますし、状態に応じてとれる行動の種類も豊富にあるでしょう。状態から次の状態への連鎖は非常に長く続きます。

強化学習では単なる累積報酬ではなく、後からもらえる報酬の価値は少し割り引いて考える「割引累積報酬」という考え方を用います。

この例で、単純な累積報酬を計算してみると、ルートAでは1,020円、ルートBでは610円、ルートCでは610円になりますが、割引累積報酬の考え方では後から手に入る報酬の価値を下げて評価します。

例えばルートAであれば、最初に手に入る10円は額面通りの価値だと考えますが、次に手に入る10円は9円の価値(元の9割の価値)、最後に手に入る1,000円は810円の価値(元の9割の価値に対して、さらに9割の価値)しかない、といった具合です。なお、後でもらえる報酬を元の何割の価値と考えるかについては、あらかじめ人間が決めておく必要があります。

割引累積報酬の考え方で、それぞれのルートの報酬を再度計算してみましょう。すると、ルートAの割引累積報酬は829円、ルートBの割引累積報酬は541円、ルートCの割引累積報酬は558円となります。したがって、単純な累積では最終的に同じお小遣いを受け取れるルートBとルートCですが、「ルートCに進むほうが価値が高い」と判定されます。

割引累積報酬の考え方で報酬を計算した場合

「状態1にいるとき、次にどの行動をとるのが良いか」という問題は、「次の状態に進むことによって、どのくらい割引累積報酬がもらえそうか」と考えることによって解くことができるのです

今回はわかりやすくするために、お手伝い(行動)をするとお小遣い(報酬)がもらえ、それによってリッチ度(状態)が変わるという「行動によって報酬が一意に決まり、報酬によって状態が決まる」例を挙げて説明しました。

しかし、実際には行動による報酬が固定されていることはまれです。そのため、通常はまず報酬を適切に設定する必要があります。例えば、将棋の場合は、ある状態で「『歩』を1つ動かす」や「『角』を斜めに1つ動かす」といった行動に対する報酬を決めなければなりませんが、これを一意に決めることは難しいでしょう。

将棋のように最終的な勝敗でそれまでの行動の善しあしが決まる場合は、勝敗を報酬と考え(勝ちなら報酬を与え、負けなら報酬は与えない)、そこから逆算してそれまでの行動に対する報酬を決定する方法もあります。

※ 強化学習を今後さらに学習したい方のために正確に書くならば、「ある行動確率(次にどの行動をどれくらいの確率でとるか)に従った場合、ある状態からスタートして将来もらえる割引累積報酬の期待値」となります。

* * *

以上、今回は強化学習の概要について説明しました。これで、機械学習で特にメジャーな3つの手法を全てご紹介したことになります。

機械学習には目的に応じてさまざまな方法が存在し、それらが内容に応じて「教師あり学習」「教師なし学習」「強化学習」に分類されています。ただし、機械学習だからと言って、何でも解ける魔法のような方法が存在するわけではありません。それは、今後ご紹介するディープラーニングも同様です。

機械学習を活用するために最も重要なことは、「解きたい課題を機械学習で解ける問題に落とし込むこと」です。解きたい課題にうまくフィットする方法を選択することができれば、機械学習が人を超える精度で課題を解決してくれるかもしれません。

著者紹介


国立研究開発法人 情報通信研究機構
ユニバーサルコミュニケーション研究所
データ駆動知能システム研究センター 専門研究員
大西可奈子

2012年お茶の水女子大学大学院博士後期課程修了。 博士(理学)。同年、大手通信会社に入社。2016年より現職。
一貫して自然言語処理、特に対話に関する研究開発に従事。
人工知能(主に対話技術)に関する講演や記事執筆も行う。
twitter:@WHotChocolate