ゲームエンジンを活用した強化学習
2021年1月25日
カテゴリー:レポート
1. 現実世界での強化学習の課題
強化学習とは機械学習の手法の一つで,学習の主体であるエージェントが環境から
受け取った状態に対して行動を選択し,環境からその行動に対して報酬という
フィードバックを受け取り,将来にわたっての報酬を最大化するような行動を学習する手法です(図5-1).
つまり,短期的な利益ではなく,長期的なプロセスの結果の利益を最大化させる手法です.
強化学習の過程では試行錯誤を繰り返すため常に適切な行動をとるとは限りません.
現実世界で学習を行った場合,自動車やドローンが事故を起こしたり人に危害を与えたりする可能性があります.
2. ゲームエンジンで使える強化学習ライブラリ
2017年9月,3DゲームエンジンであるUnity(米Unity社)がUnity内で強化学習を行えるML-Agentsというライブラリを公開しました.Unityは3Dゲームを開発するための統合開発環境ですが,CADデータを持つ製造業や建設業,ボリュームデータを持つ医療分野をはじめとして,3次元データを持っているゲーム以外の分野での活用が広がっています.
ML-Agentsは, Googleが開発しオープンソースで公開している機械学習用ライブラリTensorFlowと,OpenAIが2017年に発表した強化学習アルゴリズムPPO(Proximal Policy Optimization)を使用しています.ML-Agentsを用いることでPython等のプログラムを組むことなく,Unity側のプログラムの開発だけで強化学習が可能になります.
3. なぜ,ゲームエンジンで強化学習か?
ML-Agentsの公式サイトには以下のように書かれています.
-学術研究者が視覚的コンテンツとリアルな物理から複雑な行動を研究する
-産業および企業の研究者が,ロボティクス,自動運転,他の産業用アプリケーションなどの大規模な並列処理の訓練環境を実装する
-ゲーム開発者が複数エージェントを使ったゲームの動的難易度調整などの課題に取り組む
(https://unity3d.com/jp/machine-learningより引用)
Unityを始めとするゲームエンジンの多くには物理エンジンが備わっています.UnityにはPhysX(NVidia社)という物理エンジンが搭載されています.物理エンジンを使うことで,物体に重力がかかったり,力が加わったり,他の物体と相互作用が発生した際に,物理特性によって制御され,現実的な挙動で動作させることができます(基本的に剛体運動のみで流体などは含みません).物理エンジンによってバーチャルな空間が現実世界と同等の物理法則にしたがうことになります.そのためCADデータやボリュームデータ, 3Dスキャナ等で取り込んだ3次元データを使って,現実と同等の物理法則のもとで強化学習が行えることになります.バーチャルな空間に学習環境を用意することで,
-安全に学習を行わせることができる
-多様なシチュエーションを簡単に用意することができる
-実時間以上の速度で学習ができる
といった恩恵を受けることができます.
4. ゲームエンジンによる強化学習の活用に向けた弊社の取り組み
私たちはこのような,バーチャルな世界に現実世界を再現させて,その中で学習を行うことに取り組み始めています.今回は,カートポール問題と呼ばれる,強化学習で古くから用いられる単純な実験をご紹介します. カートポール問題とは,左右に動くカートの上にポールを立て,倒れないように制御する問題です.
適当にカートを動かすようにして,ポールの角度が垂直に近い状態を維持していればいるほど高い報酬を与えるようにプログラムを準備します.最初はすぐにポールを倒してしまいますが,50万回ほど学習させるとほぼ安定してポールを倒さないように制御できるようになりました.UnityとML-Agentsを使うことで非常に簡単に環境を作り学習させることができました.
5. 最後に
今回紹介した事例はシンプルな問題でしたが, このような物理エンジンを備えたゲームエンジンを用いればバーチャル空間内で安全に学習経験を積むことができ,事故リスクを減らしていくことができるでしょう.今後は自動運転やロボット制御といった現実の具体的な課題を対象にして取り組みたいと考えています.また,私たち構造計画研究所では,このようにゲームエンジンを産業用途に利用することで高品質で高機能なソフトウェアを高い生産性で開発することを実現しております.
Contact
まずはお気軽にお問い合せフォームからお問い合わせください。