強化学習とは機械学習の手法の一つ
AIは入力に対して、さまざまなアルゴリズムを用いて結果を出力します。このプロセスを可能とする仕組みが「機械学習」であり、そのうちの手法の一つが「強化学習」です。
強化学習では、「報酬」となるスコアが最大化するための行動を学習します。この「報酬」については後ほど詳しくご説明します。AIの開発では将来的にどのような処理を実行させるかで、学習に用いる手法が異なります。
教師あり学習・教師なし学習・ディープラーニングとの違い
機械学習には、強化学習のほかにも、教師あり学習や教師なし学習、ディープラーニングといった手法があります。いずれも、強化学習とは学習方法が異なります。
教師あり学習
教師あり学習では、正解となるラベルが付与された学習データを用いて正解のパターンを学習します。これにより複数の情報の中から特定の対象を識別することなどが可能となります。
教師なし学習
教師なし学習では、正解となる情報がない状態で学習を行います。主に、データ内に存在する未知のパターンを発見するときなどに用いられる手法です。
ディープラーニング
ディープラーニングは、人間の神経細胞を模倣したニューラルネットワークを用いて行う機械学習で、深層学習とも呼ばれます。この学習手法には、AI自身が学習要素を見つけ出すという特徴があります。
また、近年では「深層強化学習」という、従来の強化学習にニューラルネットワークを用いた学習手法が登場しています。
強化学習の仕組みと基本用語
AIの強化学習では、複数の要素が関係し合い最適な行動の学習が行われます。わかりやすくするため、ここでは、料理を例に挙げてご説明します。
料理をするためには、料理に関する知識と料理を行うシェフ(エージェント)の存在が必要です。ここでのシェフは、料理を完成させるという目的のために学習を行います。
まず、シェフは調理場という「環境」で注文を受けます。注文を受けた「状態」のシェフはその注文を「観測」し、具材を洗う、切るといった具体的な「行動」を取ります。行動によって料理における工程の状態が変わるため、再度シェフは観測し、料理の完成に必要な行動を実施します。
学習初期のシェフは、具材を洗う前に火を通してしまうなど、正しいプロセスを行わない場合もあります。このときペナルティーを与え、具材を洗うべき状態においては具材を洗うという行動を学習させ、正しく状態と行動がひもづいたときに「報酬」を与えます。
これらの過程を繰り返し、報酬が与えられるように試行錯誤したシェフは、目標である料理の完成を達成し、方策を学習します。以下に、各用語に関する説明を記載します。
①エージェント
強化学習におけるエージェントとは、学習を行うモデルを指します。例えば、AIの開発におけるエージェントはAIであり、自動運転のプログラムを開発している場合は、そのプログラムがエージェントとなります。
エージェントは環境の中で与えられた状態を観測し、行動します。その結果から報酬もしくはペナルティーが与えられ、報酬のスコアを最大化させるための行動を学習します。
②環境
環境は、エージェントが行動を決定するために必要な前提条件を指します。内容はさまざまであり、シンプルなものから複雑なものまで存在します。また、自動運転の開発などでは、物理的なシステムではなくシミュレーターを使用する場合があります。
強化学習では環境がエージェントの行動に対して状態や報酬を返します。そのため、環境とエージェントは、相互作用の関係であるといえます。
③状態
状態とは、環境の中でエージェントに与えられる状況のことです。エージェントが行動をすると、環境はその出力結果を受け取り、次の新しい状態を与えます。
状態を与えられたエージェントは再度観測を行い、行動を決定します。そのため、エージェントは環境の中で常にいずれかの状態に置かれています。
④観測
エージェントは常に行動して試行錯誤するため、その都度状態が変化します。この変化する状態の把握を観測といいます。
観測では与えられた状態と望んだ行動が正しく一致しているかが重要です。しかし、学習初期では観測と行動がうまく関連していないため、正しい行動が実行されない場合もあります。
⑤行動
行動とは、環境から与えられた条件に対する出力結果です。どのような出力が行われるかはエージェントの種類によって異なりますが、一般的には数値やコードが出力されます。
エージェントは状態に対して行動をしますが、その際の指針として方策というルールが存在します。先ほどの料理で例えると、洗う、切るといった単一の動作が行動であり、野菜であれば洗うなど、行動決定における指針が方策です。
⑥報酬
報酬はスコアともいわれる、エージェントの行動によって環境から与えられる数値情報です。エージェントの行動の評価と報酬の設定は、人間が行います。また、報酬には状態の観測から正しい行動が行われるように調整する役割があります。
行動の学習ではエージェントの各行動を関数で比較し、報酬の最大化に適したものを方策として採用します。方策は学習の中で変動し、報酬の最大化に適したものとなるように調整されます。
強化学習の代表的なアルゴリズム
強化学習ではエージェントが報酬のスコアを最大化させるための行動を学習しますが、何を指針として学習するかは、アルゴリズムによって決定します。ここでは強化学習で用いられる代表的なアルゴリズムを3つご紹介します。
Q学習
Q学習とは、特定の行動の価値であるQ値をQテーブルという一覧表へ入力し、状態と行動とQ値の組み合わせをそれぞれ管理して行う「オフポリシー」の学習方法です。オフポリシーとは、現在の方策に依存せず学習を行うアルゴリズムという意味です。
Q値は将来的に得られる報酬の累積値であり、エージェントはQ値が最も高くなる行動を学習します。この値を導き出すには、Q関数とも呼ばれる、行動価値関数が利用されます。行動価値関数とは、ある状態(State)から、エージェントの特定の行動(Action)の価値を算出する関数です。
また、Q学習は今まで学習してきた結果に従い行動する「活用」と、試していない行動を取る「探索」をバランスよく行い、最適な行動を学習します。しかし、Q値が理論上高くなる行動を選び続けるため、現実的に価値が低いと思われるものでも価値が高いと評価する場合もあります。
SARSA
SARSAは、S=State(現在の状態)、A=Action(行動)、R=Reward(報酬)、S’=Next State(次の状態)、A’=Next Action(次の状態での行動)の頭文字を並べたアルゴリズムであり、これらの順に沿って学習が進みます。
特徴としては、現在の方策(Policy)に基づいて学習を行う「オンポリシー」のアルゴリズムのため、エージェントが実際に行動した経験であるA’に基づいてQ値の更新を行う点が挙げられます。また、Q学習と同様にQ関数を活用しますが、SARSAはより現実的な安定した学習が可能とされています。
そのため、SARSAは安定性を重視したロボット開発などで活用されます。その際、Q学習に比べて学習の安定に時間がかかる点を把握しておく必要があります。
モンテカルロ法
モンテカルロ法とは、エージェントが学習を開始する初期状態から終了するまでを一つのエピソードとして扱い、それらの結果の平均値を算出し、その平均値より高い平均値を得られるように学習するアルゴリズムです。主に、終了条件が明確に存在する場合に適しています。
具体的な活用例には、チェスや囲碁といったゲームのログから最適な行動を見つけたり、プロジェクトの収益の目標達成率がどれくらいあるかの予測をしたりする場合などがあります。
注意点として、モンテカルロ法はエピソードの終了時に行動や状態の価値を更新するため、1ステップごとに行動の価値を更新できるQ学習やSARSAに比べて、学習の効率が悪く、結果として全体の学習に時間がかかる傾向があります。一方で、試行回数が多いほど精度が高まるといったメリットもあります。
強化学習の身近な活用例
最適なアルゴリズムの選択によって、サービス機能の拡張やデータ分析の向上などが可能となります。強化学習はすでに身近なサービスでも採用されており、複数の分野で活用されています。ここでは、強化学習が用いられている具体例をいくつかご紹介します。
コンテンツのレコメンド機能
強化学習によるコンテンツのレコメンド機能では、ユーザーごとのさまざまなデータに基づいてAIがお薦めコンテンツを提示します。従来では、あらかじめ設定されたルールや、ほかのユーザーの行動データなどに基づいてレコメンドされていました。
例えば、動画ストリーミングサービスのNetflixでは、ユーザーによって表示するサムネイル画像を変えています。これは強化学習の応用だといえます。
金融業界のデータ分析
金融業界では、投資戦略の設計や市場のデータ分析などに強化学習が導入されています。これは、エージェントが過去の大量のデータから試行錯誤を行い、利益を最大化するための戦略を効率的に考えられるためです。
また、近年では、ディープラーニングと組み合わせた深層強化学習の登場により、より複雑な市場パターンの分析が可能になっています。
ゲームAI
強化学習の有名な活用例には、2016年登場の「AlphaGo」があります。過去にプロの棋士に勝利したことで話題となりました。こちらはGoogle社が開発を行った囲碁のAIであり、これにも深層強化学習が活用されています。
現在では、AlphaGoに勝利した「AlphaZero」が登場しています。こちらはGoogle DeepMind社が開発しており、将棋やチェスなど、ほかの種別のゲームにも対応可能です。これらの技術は、今後もさまざまな分野での応用が期待されています。
強化学習の流れ【6ステップ】
強化学習の開発では、いくつかのプロセスを踏む必要があります。ここでは、強化学習を行う流れを各ステップにおけるポイントとともにご紹介します。
STEP1:エージェントが動作する環境を作成する
まず、強化学習を行う対象のエージェントが動作する環境の定義が必要です。環境にはシミュレーションモデルや物理的なシステムを使用できますが、シミュレーションモデルの方が安全に実験可能なため、こちらが推奨されています。
STEP2:報酬を定義する
次に、エージェントが行動した結果である報酬を定義します。エージェントは報酬の最大化を目的に行動するため、適切な報酬の設定はエージェントの学習効率において最も重要なポイントです。
特に、強化学習では短期的な報酬だけでなく、長期的な報酬とのバランスの考慮が重要です。開発を進める上では、何が目的かを明確にしておくと、学習が思いどおりに進まないといった問題を回避することが可能です。
STEP3:エージェントを作成する
続いて、学習対象であるエージェントを作成します。ここでは方策を表現する方法と、強化学習の学習アルゴリズムの選択が重要です。これは、方策表現と学習アルゴリズムでそれぞれ適した分野があり、目的に沿った手法の選択がエージェントの学習効率に直接関係するためです。
例えば、方策の表現にはテーブル形式やニューラルネットワークが用いられますが、方策をどのように表現するかで問題への対応可能な範囲が変わるため、拡張性などの考慮が欠かせません。
また、学習アルゴリズムはエージェントの出力結果である値を最大化する手法のため、方策の表現と同様に、目的に沿ったものを選択することが学習効率の向上には重要といえます。
STEP4:エージェントの学習と検証を行う
エージェントの学習では、どの条件に達した場合に学習を停止するかといったオプションを設定し、方策の調整を行います。
エージェントは環境から与えられた状態ごとに行動しますが、学習を停止する条件の設定により、方策の調整が可能となります。学習の終了後、採用された方策を必要に応じて調整するほか、エージェントの学習結果が目標値から離れているような場合には、報酬の設計や方策の見直しを行い再度学習します。
しかし、一般的に強化学習では最適な方策の学習に必要なデータ収集量が少なく、サンプル効率が低いといえます。そのため、複雑な開発の場合は、学習に数日かかることも考えられます。
STEP5:学習済みの方策表現を展開する
強化学習でのエージェントの学習には、反復的なプロセスが必要です。実際に生成された学習済みの方策を、C言語やC++などのプログラミング言語や並列処理に特化したCUDAコードなどを使用し、展開します。
この時点で方策は外部リソースなどに依存せず、独立して動作するスタンドアロンシステムとなっています。学習結果によっては、ワークフローの初期まで戻り調整する場合もあります。
STEP6:定期的に評価・再学習を行う
強化学習後もエージェントは定期的な評価を行い、再学習を実施することで、より長期的なパフォーマンスの維持が可能となります。常に最適な選択をするには最新の環境に合わせた方策の設定が必要不可欠です。
しかし、継続学習において既存のモデルを使用する際は、破滅的忘却という、新しい知識の学習により古い知識が失われてしまう事象が発生しないように注意が必要です。例えば、リハーサル手法といった対策は、継続学習において破滅的忘却を軽減するのに役立ちます。
まとめ
ここまで、強化学習の仕組みや基本用語、ディープラーニングとの違い、代表的なアルゴリズム、身近な活用例などをご紹介しました。強化学習は機械学習の手法の中でも最先端といわれており、注目を集めています。
近年では強化学習とディープラーニングを組み合わせた深層強化学習なども登場し、ますます技術の発展が期待されています。この記事が、強化学習の理解の一助となりましたら幸いです。
AIエンジニアとしての転職ならSky株式会社
Sky株式会社では、最新AIプラットフォームの導入や、効率的な活用のための研修などを行い、AI活用文化の醸成に取り組んでいます。また、技術や知識を共有する企業文化、手を挙げれば挑戦できる土壌など、AIエンジニアとして成長できる環境が整っています。AIエンジニアとしてのキャリアアップや転職を考えている方は、ぜひ一度Sky株式会社への応募をご検討ください。