今回は強化学習に関して自分自身で学んだことをアウトプットしようと思います。基礎中の基礎から書いてあるので、まったくわからないという方の参考になれば幸いです。中には間違ったことも書いているかもしれないのでもし気づいた方はコメントしてくださるととても嬉しいです。
強化学習とは
基本概念
機械学習の手法の一つで、機械もしくはシステム(エージェント)にあるタスクを与えて、それをエージェント試行錯誤させて解かせる手法。もう少し具体的にいうと、エージェントに現在の状態から、特定の行動を決定させ、この結果に対してフィードバック(報酬)を与える。この報酬を最大化するようにエージェントは学習をしていく。
押さえておくべき用語
- エージェント
強化学習によってタスクを解かせるシステムや機械のことを指す。 - 行動
エージェントが起こしたアクションのことを指す。例えば将棋を指せる場合なら一手ごとの棋譜のことを指す。 - 状態
エージェントが今おかれている状況のこと。例えば自動運転であれば、路面の状態や車両の数・自分自身の位置などを指している。 - 報酬
- エージェントの行動に対する成果のこと。エージェントが起こした行動が良かったものなのかを定義するためにこの報酬を利用する。
- 報酬は「即時報酬」と「累積報酬」の二つに分かれる。前者は行動後すぐに得られる報酬を指し、後者は報酬を足しわせたもので、最終的にこれが最大となるように問題を解いていく。
- 環境
エージェントに与えられた条件のこと。エージェントは環境下で行動を起こし、行動に伴って得られる報酬を最大化するように学習を進めていく。
「タスクを解くために、ある環境下においてエージェントは現在の状態から何かしらの行動を起こす。エージェントには行動結果に応じた報酬が得られる。エージェントは報酬が最大となるように行動を修正していく」という一連のプロセスが「試行錯誤」につながるというわけです。

強化学習の特性
強化学習の最大のつよみは「最終的な答えはわかっているが、具体的に何をすべきかが不明」といった問題に対してとても強力。
例えば、「自動運転をする」という問題を解くためには「アクセル、ハンドル、ブレーキをどのように操作するか」という問題に帰着するが、この与えられた条件によって最適な答えは変わってくる。様々な状況下でも最適な動作を導くために様々な試行錯誤を繰り返し、答えを見つけていく。なお、長期的な報酬を最大化するように設計されているが、基本的には目の前の状態でもっともよい報酬が得られるように行動するスタンスとなっている模様。
何に使える?
強化学習は我々の実社会において様々な場面で適用されています。代表的なものをピックアップして紹介します。
ゲーム
囲碁の人工知能(AlphaGo)がプロ棋士に勝利したというニュースから強化学習が爆発的に注目を浴びるようになったように、ゲームは外せない利用例でしょう。
下記の動画では、スーパーマリオブラザーズのステージを強化学習によって実施させるというものです。
ゲームをプレイさせることを応用し、ゲームテスターの負担軽減にも利用されているようです。下記の記事によりますとAI同士でキャラクターを戦闘させ、その勝敗結果から能力値の調整を行うということに利用しているみたいです。
レコメンド
ECサイトや動画サイトなどで「あなたへのおすすめ」という枠に個々のユーザーに沿った商品や動画を表示することがすっかり一般的になっていますが、これの裏側に強化学習を利用するということも可能です。表示された商品がクリックされたか否かをもとに学習をすすめるといったイメージです。
YouTubeでも実際に利用されており、下記の論文によるとユーザーのエンゲージメントが長期的高まるように学習させることで、ユーザーの視聴時間向上および推薦する動画の多様化を実現できた、というものでした。※2019年に発表された論文なので2023年の現在でも利用されているのかは不明です。

ロボット
「ロボットをプログラムで動かすのは非常に難しい」という定説を覆したのも強化学習です。下記のURLはGoogle AIに投稿された記事ですが、強化学習を利用して動物の動きをロボットに模倣・トレーニングさせる、移動能力を身に着けるというものでした。

アルゴリズム
強化学習にも様々なアルゴリズムがあるようで…代表的なものは下記三つのようです。アルゴリズムの詳細には別の記事で触れようと思います。
強化学習の難しい点
ここまで良いところばかりあげてきましたが、やはり課題はある模様。
報酬が遅れてやってくる
報酬は常に最速で得られるというわけではなく、遅れて得られることがしばしばある。そのため、現在の行動が答えに近づいているのかどうか不明瞭な状態でも状況を観察して行動しなければならない。
大量のデータと計算資源が必要
深層学習と強化学習を組み合わせた深層強化学習おいては、学習が十分に進むまでに必要なデータ数と計算リソースが多い傾向がある。また学習に非常に長い時間がかかる場合もあり、様々なパラメータをうまく調整しなければならない。解釈可能性が低い場合も多い。
おわりに
今回は強化学習の基本的な考え方、活用例などを記事にしてみました。
次回以降でアルゴリズムについて触れていこうと思います。
参考リンク・書籍

コメント