(57)【要約】【課題】複数個のパラメータの値を同時に選択して、パラメータの最適化の高速化を図ることができるようにする。【解決手段】最適化装置１０は、評価用データ及び評価対象のパラメータの値に基づいて計算を行い、計算結果の評価を表す評価値を出力する評価部１２０と、評価部１２０により出力された評価値、及びパラメータの値の組合せに基づいて、パラメータの値に対する評価値を予測するためのモデルを学習し、学習したモデルに基づいて、評価部１２０が次に評価するパラメータの値を複数決定する選択部１００と、評価部１２０による処理と、選択部１００による決定とを繰り返すことにより得られる、最適化されたパラメータの値を出力する出力部１６０と、を備える。最適化装置１０の評価部１２０は、選択部１００によって複数決定されたパラメータの値の各々について、評価用データ及びパラメータの値に基づいて計算を行い、評価値を出力することを並列に行う。【選択図】図１
2020181318.tif 000002
【特許請求の範囲】
【請求項１】
評価用データ及び評価対象のパラメータの値に基づいて計算を行い、計算結果の評価を表す評価値を出力する評価部と、
前記評価部により出力された前記評価値、及び前記パラメータの値の組合せに基づいて、前記パラメータの値に対する前記評価値を予測するためのモデルを学習し、学習した前記モデルに基づいて、前記評価部が次に評価する前記パラメータの値を複数決定する選択部と、
前記評価部による処理と、前記選択部による決定とを繰り返すことにより得られる、最適化された前記パラメータの値を出力する出力部と、
を備え、
前記評価部は、前記選択部によって複数決定された前記パラメータの値の各々について、前記評価用データ及び前記パラメータの値に基づいて計算を行い、前記評価値を出力することを並列に行う
最適化装置。
【請求項２】
前記選択部は、
前記評価部により出力された前記評価値、及び前記パラメータの値の組合せに基づいて、前記モデルを学習し、学習した前記モデルから得られる前記評価値の予測値の平均及び分散を用いた関数である獲得関数を用いて、所定の方法で決定したパラメータの値を初期値として、勾配法を用いて前記獲得関数の極大値を取るパラメータの値を得ることを複数回繰り返し、前記獲得関数の極大値を取るパラメータの値のうち、前記獲得関数の値が大きいパラメータの値を複数個選択することにより、前記評価部が次に評価する前記パラメータの値を複数決定する請求項１記載の最適化装置。
【請求項３】
前記パラメータは複数の要素を含み、
前記選択部は、一部の要素に関して、前記モデルを学習し、前記モデルから得られる前記獲得関数を用いて、前記獲得関数の極大値を取る前記一部の要素の値を得ることを複数回繰り返し、
他の一部の要素に関して、前記モデルを学習し、前記モデルから得られる前記獲得関数を用いて、前記獲得関数の極大値を取る前記他の一部の要素の値を得ることを複数回繰り返し、
複数回得た前記一部の要素の値と、複数回得た前記他の一部の要素の値とを組み合わせてえられる前記パラメータの値から、前記評価部が次に評価する前記パラメータの値を複数決定する請求項２記載の最適化装置。
【請求項４】
前記評価部は、少なくとも１つの計算装置を用いて前記計算を行い、計算結果の評価を表す評価値を出力することを並列に行う請求項１〜請求項３の何れか１項記載の最適化装置。
【請求項５】
前記モデルは、ガウス過程を用いる確率モデルである、
請求項１〜請求項４の何れか１項に記載の最適化装置。
【請求項６】
評価部が、評価用データ及び評価対象のパラメータの値に基づいて計算を行い、計算結果の評価を表す評価値を出力し、
選択部が、前記評価部により出力された前記評価値、及び前記パラメータの値の組合せに基づいて、前記パラメータの値に対する前記評価値を予測するためのモデルを学習し、学習した前記モデルに基づいて、前記評価部が次に評価する前記パラメータの値を複数決定し、
出力部が、前記評価部による処理と、前記選択部による決定とを繰り返すことにより得られる、最適化された前記パラメータの値を出力する
ことを含み、
前記評価部が出力することでは、前記選択部によって複数決定された前記パラメータの値の各々について、前記評価用データ及び前記パラメータの値に基づいて計算を行い、前記評価値を出力することを並列に行う
最適化方法。
【請求項７】
評価用データ及び評価対象のパラメータの値に基づいて計算を行い、計算結果の評価を表す評価値を出力し、
前記出力された前記評価値、及び前記パラメータの値の組合せに基づいて、前記パラメータの値に対する前記評価値を予測するためのモデルを学習し、学習した前記モデルに基づいて、次に評価する前記パラメータの値を複数決定する
ことを繰り返すことにより得られる、最適化された前記パラメータの値を出力する最適化処理であって、
前記評価値を出力することでは、複数決定された前記パラメータの値の各々について、前記評価用データ及び前記パラメータの値に基づいて計算を行い、前記評価値を出力することを並列に行う
前記最適化処理を、コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、最適化装置、最適化方法、及びプログラムに関する。
【背景技術】
【０００２】
人間行動や気象など、様々なシミュレーションでは、自動的に決定されず人手にて事前に指定するべきパラメータが存在する。同様のパラメータは機械学習、ロボット制御、実験計画にも見られ、それらのパラメータを自動的に最適化する技術である、ベイズ最適化が提案されている（非特許文献１）。ベイズ最適化では、何かしらの評価値を用意し、その評価値が最大または最小になるようにパラメータを調整する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Shahriari, B., Swersky, K.,Wang, Z., Adams, R. P. and Freitas, de N.: Taking the human out of the loop: A review of bayesian optimization, Proceedings of the IEEE, Vol. 104, No. 1, pp. 148-175 (2016).
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、ベイズ最適化を対象とする。ベイズ最適化は、パラメータの選択と、そのパラメータの評価値の取得、の２つの操作を繰り返す。このうち、パラメータの評価値の取得はマルチコアのＣＰＵや複数のＧＰＵを用いることで複数個並列に処理することが可能である。しかし、ベイズ最適化は複数個のパラメータの値を同時に選択することができないため、並列処理を有効に活用することができない。よって、複数個のパラメータの値を同時に選択する手法が必要である。
【０００５】
本開示は、上記の点に鑑みてなされたものであり、複数個のパラメータの値を同時に選択して、パラメータの最適化の高速化を図ることができる、最適化装置、最適化方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本開示の第１の態様の最適化装置は、評価用データ及び評価対象のパラメータの値に基づいて計算を行い、計算結果の評価を表す評価値を出力する評価部と、前記評価部により出力された前記評価値、及び前記パラメータの値の組合せに基づいて、前記パラメータの値に対する前記評価値を予測するためのモデルを学習し、学習した前記モデルに基づいて、前記評価部が次に評価する前記パラメータの値を複数決定する選択部と、前記評価部による処理と、前記選択部による決定とを繰り返すことにより得られる、最適化された前記パラメータの値を出力する出力部と、を備え、前記評価部は、前記選択部によって複数決定された前記パラメータの値の各々について、前記評価用データ及び前記パラメータの値に基づいて計算を行い、前記評価値を出力することを並列に行う。
【０００７】
本開示の第２の態様の最適化装置は、第１の態様の最適化装置において、前記選択部は、前記評価部により出力された前記評価値、及び前記パラメータの値の組合せに基づいて、前記モデルを学習し、学習した前記モデルから得られる前記評価値の予測値の平均及び分散を用いた関数である獲得関数を用いて、所定の方法で決定したパラメータの値を初期値として、勾配法を用いて前記獲得関数の極大値を取るパラメータの値を得ることを複数回繰り返し、前記獲得関数の極大値を取るパラメータの値のうち、前記獲得関数の値が大きいパラメータの値を複数個選択することにより、前記評価部が次に評価する前記パラメータの値を複数決定する。
【０００８】
本開示の第３の態様の最適化装置は、第２の態様の最適化装置において、前記パラメータは複数の要素を含み、前記選択部は、一部の要素に関して、前記モデルを学習し、前記モデルから得られる前記獲得関数を用いて、前記獲得関数の極大値を取る前記一部の要素の値を得ることを複数回繰り返し、他の一部の要素に関して、前記モデルを学習し、前記モデルから得られる前記獲得関数を用いて、前記獲得関数の極大値を取る前記他の一部の要素の値を得ることを複数回繰り返し、複数回得た前記一部の要素の値と、複数回得た前記他の一部の要素の値とを組み合わせて得られる前記パラメータの値から、前記評価部が次に評価する前記パラメータの値を複数決定する。
【０００９】
本開示の第４の態様の最適化装置は、第１の態様から第３の態様のいずれか１態様の最適化装置において、前記評価部は、少なくとも１つの計算装置を用いて前記計算を行い、計算結果の評価を表す評価値を出力することを並列に行う。
【００１０】
本開示の第５の態様の最適化装置は、第１の態様から第４の態様のいずれか１態様の最適化装置において、前記モデルは、ガウス過程を用いる確率モデルである。
【００１１】
上記目的を達成するために、本開示の第６の態様の最適化方法は、評価部が、評価用データ及び評価対象のパラメータの値に基づいて計算を行い、計算結果の評価を表す評価値を出力し、選択部が、前記評価部により出力された前記評価値、及び前記パラメータの値の組合せに基づいて、前記パラメータの値に対する前記評価値を予測するためのモデルを学習し、学習した前記モデルに基づいて、前記評価部が次に評価する前記パラメータの値を複数決定し、出力部が、前記評価部による処理と、前記選択部による決定とを繰り返すことにより得られる、最適化された前記パラメータの値を出力することを含み、前記評価部が出力することでは、前記選択部によって複数決定された前記パラメータの値の各々について、前記評価用データ及び前記パラメータの値に基づいて計算を行い、前記評価値を出力することを並列に行う。
【００１２】
上記目的を達成するために、本開示の第７の態様のプログラムは、評価用データ及び評価対象のパラメータの値に基づいて計算を行い、計算結果の評価を表す評価値を出力し、前記出力された前記評価値、及び前記パラメータの値の組合せに基づいて、前記パラメータの値に対する前記評価値を予測するためのモデルを学習し、学習した前記モデルに基づいて、次に評価する前記パラメータの値を複数決定することを繰り返すことにより得られる、最適化された前記パラメータの値を出力する最適化処理であって、前記評価値を出力することでは、複数決定された前記パラメータの値の各々について、前記評価用データ及び前記パラメータの値に基づいて計算を行い、前記評価値を出力することを並列に行う前記最適化処理を、コンピュータに実行させるためのプログラムである。
【発明の効果】
【００１３】
本開示によれば、複数個のパラメータの値を同時に選択して、パラメータの最適化の高速化を図ることができる、という効果が得られる。
【図面の簡単な説明】
【００１４】
【図１】実施形態の最適化装置の一例の構成を示すブロック図である
【図２】実施形態のパラメータ・評価値蓄積部に記憶される情報の一部の例を示す図である。
【図３】最適化装置として機能するコンピュータの一例の概略ブロック図である。
【図４】実施形態の最適化装置における最適化処理ルーチンの一例を示すフローチャートである。
【図５】複数個のパラメータの値を選択する方法を説明するための図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本開示の実施形態を詳細に説明する。一例として、本実施形態では、歩行者の流れ、いわゆる人流のシミュレーション（以下、「人流シミュレーション」という）を行った結果から計算される評価値に基づいて、歩行者を誘導する誘導装置のパラメータを最適化する最適化装置に対し、本開示の最適化装置を適用した形態について説明する。
【００１６】
本開示の例において、計算は人流シミュレーションを行うことに相当し、パラメータｘは誘導の仕方を決定する方法に相当する。パラメータｘは複数要素（次元）のパラメータであり、要素数はＤであるとする。つまりｘ=(ｘ1,…,ｘD)であり、ｘ1,ｘ2,…は1つ目,2つ目,…のパラメータの要素である。ここで、ｔは繰り返し回数を示し、ｋはその繰り返しにおける選択されたパラメータを1から順に並べたときの順番であるとして、パラメータの値をｘt,kと表す。またＫを１回の繰り返しにて選択するパラメータの値の個数であるとする。
【００１７】
＜本実施形態の最適化装置の構成＞
図１は、本実施形態の最適化装置の一例の構成を示すブロック図である。
【００１８】
一例として、本実施形態の最適化装置１０は、ＣＰＵ（Central Processing Unit）と、ＲＡＭ（Random Access Memory）と、後述する最適化処理ルーチンを実行するためのプログラムや各種データを記憶したＲＯＭ（Read Only Memory）と、を含むコンピュータで構成することができる。具体的には、上記プログラムを実行したＣＰＵが、図１に示した最適化装置１０の選択部１００、評価部１２０、及び出力部１６０として機能する。
【００１９】
図１に示すように本実施形態の最適化装置１０は、選択部１００、評価用データ蓄積部１１０、評価部１２０、パラメータ・評価値蓄積部１３０、及び出力部１６０を備える。
【００２０】
評価用データ蓄積部１１０は、評価部１２０が人流シミュレーションを行うために必要な評価用データを記憶する。評価用データは、誘導を行うに当たり、歩行者の状況の計算に必要なデータであり、例えば、道路の形状、歩行者の進行速度、歩行者の人数、各歩行者のシミュレーション区間への進入時間、それらの歩行者のルート、及び人流シミュレーションの開始時間や終了時間等が挙げられるが、これらに限定されるものではない。これらの評価用データは、任意のタイミングで最適化装置１０の外部から評価用データ蓄積部１１０に入力され、評価部１２０の指示に応じて評価部１２０に出力される。
【００２１】
評価部１２０は、評価対象のパラメータの値ｘt,k（ｋ＝１,２,…,Ｋ）と、評価用データ蓄積部１１０から得られた評価用データと、に基づいて、人流シミュレーションを行い、評価対象のパラメータの値ｘt,k毎に、評価値ｙt,kを導出する。
【００２２】
本実施形態では一例として、人流シミュレーションの結果である評価値ｙは、歩行者が目的地に到達するまでに要した時間としている。
【００２３】
具体的には、評価部１２０には、評価用データ蓄積部１１０から取得した評価用データが入力される。
【００２４】
また、評価部１２０には、選択部１００から、次回の人流シミュレーションにおけるＫ個のパラメータの値ｘt,k（ｋ＝１，２，・・・，Ｋ）が入力される。換言すると、人流シミュレーションの回数をｔとすると、評価部１２０には、選択部１００から、ｔ＋１回目の人流シミュレーションのＫ個のパラメータの値ｘt,k（ｋ＝１,２,…,Ｋ）が入力される。
【００２５】
評価部１２０は、複数の計算装置２００を用いて、評価対象のパラメータの値ｘt,k（ｋ＝１,２,…,Ｋ）と、評価用データ蓄積部１１０から得られた評価用データと、に基づく人流シミュレーションを並列に行い、評価対象のパラメータの値ｘt,k毎に、評価値ｙt,kを導出する。ここで、複数の計算装置２００は、並列処理が可能な複数個のＣＰＵ又はＧＰＵを備えた一つの装置であってもよい。
【００２６】
パラメータ・評価値蓄積部１３０は、評価部１２０から入力された、評価部１２０が過去に行った人流シミュレーションのデータを記憶する。具体的には、パラメータ・評価値蓄積部１３０が記憶するデータは、ｔ回目（ｔ＝０，１，２，…）に選択されたｋ番目のパラメータの値ｘｔ,k、及びｔ回目のｋ番目の評価値ｙｔ,kである。ｔ＝１，２，…、ｋ＝１，２，…,Ｋにおけるｘt,kの集合と、ｔ＝０、ｋ＝１，２,…,ｎにおけるｘt,kの集合を合わせた集合をＸと表す。ｔ＝１，２，…、ｋ＝１，２，…,Ｋにおけるｙt,kの集合と、ｔ＝０、ｋ＝１，２,…,ｎにおけるｙt,kの集合を合わせた集合をＹと表す。図２に、パラメータ・評価値蓄積部１３０に格納する情報の一部の例を示す。
【００２７】
選択部１００は、評価部１２０により出力された評価値ｙt,k、及びパラメータの値ｘt,kの組合せに基づいて、評価値を予測するためのモデルを学習し、学習したモデルに基づいて、評価部１２０が次に評価するパラメータの値を複数個決定する。
【００２８】
具体的には、選択部１００は、モデル当てはめ部１４０及び評価パラメータ決定部１５０を備えている。
【００２９】
モデル当てはめ部１４０は、パラメータ・評価値蓄積部１３０から受け取ったＸ,Ｙ、もしくはＸ,Ｙの一部から、評価値を予測するためのモデルを学習し、評価パラメータ決定部１５０に出力する。
【００３０】
評価パラメータ決定部１５０は、モデル当てはめ部１４０から受け取ったモデルから得られる評価値の予測値の平均及び分散を用いた関数である獲得関数を用いて、所定の方法で決定したパラメータの値を初期値として、勾配法を用いて獲得関数の極大値を取るパラメータの値を得ることを複数回繰り返し、獲得関数の極大値を取るパラメータの値のうち、獲得関数の値が大きいパラメータの値を複数個選択することにより、次に評価をすべきパラメータの値ｘt,k（ｋ＝１，２,…,Ｋ）を選択し、それを評価部１２０に出力する。
【００３１】
出力部１６０は、評価部１２０による処理と、選択部１００による決定とを繰り返すことにより得られる、最適化されたパラメータの値を出力する。出力先の例は、歩行者の誘導装置である。
【００３２】
最適化装置１０は、一例として、図３に示すコンピュータ８４によって実現される。コンピュータ８４は、ＣＰＵ（Central Processing Unit）８６、メモリ８８、プログラム８２を記憶した記憶部９２、モニタを含む表示部９４、及びキーボードやマウスを含む入力部９６を含んでいる。ＣＰＵ８６は、ハードウェアであるプロセッサの一例である。ＣＰＵ８６、メモリ８８、記憶部９２、表示部９４、及び入力部９６はバス９８を介して互いに接続されている。
【００３３】
記憶部９２はＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、フラッシュメモリ等によって実現される。記憶部９２には、コンピュータ８４を最適化装置１０として機能させるためのプログラム８２が記憶されている。また、記憶部９２には、入力部９６により入力されたデータ、及びプログラム８２の実行中の中間データなどが記憶される。ＣＰＵ８６は、プログラム８２を記憶部９２から読み出してメモリ８８に展開し、プログラム８２を実行する。なお、プログラム８２をコンピュータ可読媒体に格納して提供してもよい。
【００３４】
＜本実施形態の最適化装置の作用＞
次に、本実施形態の最適化装置１０の作用について図面を参照して説明する。図４は、本実施形態の最適化装置において実行される最適化処理ルーチンの一例を示すフローチャートである。
【００３５】
図４に示した最適化処理ルーチンは、例えば、評価用データが評価用データ蓄積部１１０に記憶されたタイミングや、最適化装置１０の外部から最適化処理ルーチンの実行指示を受け付けたタイミング等、任意のタイミングで実行される。なお、本実施形態の最適化装置１０では、最適化処理ルーチンの実行前に、人流シミュレーションを行うために必要な評価用データを、評価用データ蓄積部１１０に予め記憶させた状態としておく。
【００３６】
図４のステップＳ１００で評価部１２０は、パラメータ・評価値蓄積部１３０から、人流シミュレーションに必要な評価用データを取得する。また、評価部１２０は、複数の計算装置２００を用いて、後述のモデルの学習を行うデータを生成するための予備評価をｎ回行い、パラメータの値ｘ0,k、評価値ｙ0,kを得る。ここでｋ＝１，２,…,ｎである。ｎの値は任意である。また、予備評価を行うパラメータの設定の仕方は任意である。例えば、ランダムなサンプリングによってパラメータを選択したり、人手により選択したりする方法がある。
【００３７】
ステップＳ１１０で選択部１００は、繰り返し回数ｔ＝１を設定する。下記では繰り返し回数がｔ回目である時の実施の形態を述べる。
【００３８】
ステップＳ１２０でモデル当てはめ部１４０は、パラメータ・評価値蓄積部１３０から過去の繰り返しにおけるパラメータと評価値のデータ集合Ｘ,Ｙを取得する。
【００３９】
ステップＳ１３０でモデル当てはめ部１４０は、データ集合Ｘ,Ｙからモデルを構築する。モデルの一例としてガウス過程を用いる確率モデルがある。ガウス過程による回帰を用いると、任意の入力ｘに対して、未知の指標ｙを正規分布の形で確率分布として推論することができる。つまり、評価値の予測値の平均μ(ｘ)と予測値の分散（これは予測値に対する確信度を表す）σ(ｘ)を得ることができる。ガウス過程は、複数の点の関係性を表すカーネルという関数を用いる。カーネルは何でもよい。一例として、式（１）で表されるガウスカーネルがある。
【００４０】
【数１】
2020181318.tif 000003
（１）
【００４１】
ここでθは0より大きい実数をとるハイパーパラメータである。θの一例として、ガウス過程の周辺尤度が最大になる値に点推定した値を用いる。
【００４２】
ステップＳ１４０〜ステップＳ１６０では、評価パラメータ決定部１５０が、評価を行うパラメータの値ｘt,k (ｋ＝１，２,…Ｋ)を選択する。この時、受け取ったモデルを用いて、パラメータの評価値の予測値を得て、そしてこのパラメータを実際に評価するべき度合いを数値化する。この数値化を行う関数は獲得関数α(ｘ)と呼ばれる。獲得関数の一例として、式（２）に表されるｕｐｐｅｒ  ｃｏｎｆｉｄｅｎｃｅ  ｂｏｕｎｄがある。ここで、μ(ｘ)とσ(ｘ)はそれぞれモデルで予測した平均と分散であり、β(t)はパラメータであり、一例としてβ(t)=log tとする。
【００４３】
【数２】
2020181318.tif 000004
（２）
【００４４】
上記の式は、最大化を行う場合であり、最小化を行う場合はμ(ｘ)を−μ(ｘ)に置き換える。
【００４５】
パラメータを選択するプロセスは以下である。まず、ステップＳ１４０で評価パラメータ決定部１５０が、ｊ＝１とする。
【００４６】
そして、ステップＳ１５０で評価パラメータ決定部１５０が、適当なパラメータｘjを初期値として設定する。ｘjの設定方法はランダムサンプリングなどが考えられるがどのような方法でも構わない。そして、評価パラメータ決定部１５０が、ｘjを入力の初期値として、勾配法（例えばL-BFGS-B）を用いて獲得関数α(ｘ)の極大値ｘj,mを得る。このとき、後述する手法１を採用する場合には、勾配法にてパラメータｘの全要素に対して最適化を行う。一方、後述する手法２を採用する場合には、一部のパラメータの要素のみ（例えば、Ｄ＝３のときに１つ目と２つ目の要素のみ）を選択し、その要素のみ最適化を行って、一部の次元に対する獲得関数の極大値をｘj,mとして得る。
【００４７】
その後、評価パラメータ決定部１５０が、ｊ＝ｊ＋１とする。
【００４８】
ステップＳ１６０で、評価パラメータ決定部１５０が、ｊが最大回数Ｊを超えているか否かを判定する。ｊが最大回数Ｊを超えている場合には、評価パラメータ決定部１５０が、ステップＳ１７０に移行し、そうでない場合には、評価パラメータ決定部１５０が、ステップＳ１５０に戻る。よってステップＳ１５０の処理は複数回行われることになる。ここで、獲得関数α(ｘ)は一般的には多峰性を持つ、非凸な関数であるため、極大値は最大値であるとは限らない。よって、設定されるｘjの値によって、得られるｘj,mは異なりうる。また、手法２を採用して、一部の要素のみを選択してから勾配法にて最適化した場合は、選択した要素によっても、得られるｘj,mは異なる。
【００４９】
ステップＳ１７０で、評価パラメータ決定部１５０が、ｊ＝１,．．,Ｊにおけるｘj,mを用いてｋ＝１,２,…,Ｋにおけるｘt,kを決定する。これには、基本である手法１と、派生である手法２の、２種類の手法ある。
【００５０】
まず手法１について説明する。最初にｘjによっては複数のｊにてｘj,mが同じパラメータを表している場合があり、これを重複しているものとみなし、この重複がなくなるようにパラメータの値を除外したものをパラメータの値の集合Ｘmとして得る。この状態で得られたパラメータの値の集合Ｘmの要素は全て異なるパラメータの値を表している。そして、Ｘmの要素であるパラメータの値ｘj,mの獲得関数の値を計算し、この値が大きい順にＫ個選択しこれをｋ＝１,２,…,Ｋにおけるパラメータの値ｘt,kとする。図５に選択するパラメータの値の例（４個のパラメータの値を選択する場合）を示す。
【００５１】
図５に示すように、獲得関数は多峰関数であり、最大値の他に極大値が存在する。これらは、最大値の次に優先して調べるべきパラメータである。本実施の形態では、この極大値を、獲得関数の値が大きい順に複数個選択することで、複数個のパラメータの値の選択を行えるようにする。
【００５２】
次に手法２について説明する。これはステップＳ１５０にてパラメータの一部の要素のみを勾配法にて最適化した場合に適用できる方法である。最初にｘj,mの重複を除外することは手法１と同一である。次に、ｘj,mを得る時に最適化した一部の要素だけをｘj,mから取り出す。そして、当該一部の要素とは違う他の一部の要素を最適化した、別のｘj,mから同様に最適化した要素だけを取り出し、要素同士を組み合わせることによって新しいパラメータの値を得る。これを考えられる要素の組合せ全てで行い、得られたパラメータの値の集合をＸmとする。
【００５３】
具体的には、高次元のベイズ最適化として、以下の式に示すように、高次元関数ｆを低次元関数ｆ(1)...ｆ(M)の足し合わせであると仮定し、最適化を実行する手法を用いる。
【００５４】
【数３】
2020181318.tif 000005
【００５５】
このとき、それぞれの低次元関数ｆ(1)...ｆ(M)に関する獲得関数の各々について、当該獲得関数の極大値をｋ個とってくると、ｋのＭ乗種類だけ、パラメータの値の組合せが得られる。これらの組合せの中から、高次元関数ｆの獲得関数の値が大きい順に複数個のパラメータの値を選択する。
【００５６】
例えば、Ｊ＝４,Ｄ＝２であり、ｊ＝１，２ではｘjの１つ目の要素のみを勾配法で最適化しｘj,mを得て、ｊ＝３，４ではｘjの２つ目の要素のみを勾配法で最適化しｘj,mを得た場合を考える。この時、ｘ1,mとｘ2,mの１つ目の要素のみを取り出したものであるｘ1,m,1とｘ2,m,1を取り出し、またｘ3,mとｘ4,mの２つ目の要素のみを取り出したものであるｘ3,m,2とｘ4,m,2を取り出す。これらを組み合わせる組合せとして４通り考えられる。つまり、ｘ1,m,1とｘ3,m,2を組み合わせるもの、ｘ2,m,1とｘ3,m,2を組み合わせるもの、ｘ1,m,1とｘ3,m,2を組み合わせるもの、ｘ2,m,1とｘ4,m,2を組み合わせるものがある。よって、Ｘm={(ｘ1,m,1,ｘ3,m,2),(ｘ2,m,1,ｘ3,m,2),(ｘ1,m,1,ｘ4,m,2),(ｘ2,m,1,ｘ4,m,2)}である。あとは、この集合Ｘmを用いて手法１と同様に全要素についての獲得関数の値が大きい順にｋ＝１,２,…,Ｋにおけるパラメータの値ｘt,kを選択する。
【００５７】
ステップＳ１８０で評価部１２０は、評価用データ蓄積部１１０から送信された評価を行うために必要なデータと、評価パラメータ決定部１５０から送信されたｋ＝１,２,…,Ｋにおけるパラメータｘt,kを用いて、複数の計算装置２００により評価を並列に行い、評価値ｙt,k(ｋ＝１,２,…,Ｋ)を得る。そして、評価部１２０は、パラメータ・評価値蓄積部１３０に、パラメータｘt,kと評価値ｙt,kを格納する。このとき、評価を実施するための複数の計算装置２００を用いることで、並列処理を用いて評価値ｙt,kを複数のｋに対して同時に取得する。
【００５８】
ステップＳ１９０で、出力部１６０が、繰り返し回数が規定の最大数を超えているか判断し、超えていない場合はステップＳ１２０に戻り、超えている場合は、本最適化処理ルーチンを終了する。繰り返し回数の最大数の一例は１０００回である。本最適化処理ルーチンの終了時は、出力部１６０にて評価値が最良のパラメータの値を出力する。
【００５９】
以上説明したように、本実施形態の最適化装置１０は、評価用データ及び評価対象のパラメータの値に基づいて計算を行い、計算結果の評価を表す評価値を出力する評価部１２０と、評価部１２０により出力された評価値、及びパラメータの値の組合せに基づいて、パラメータの値に対する評価値を予測するためのモデルを学習し、学習したモデルに基づいて、評価部１２０が次に評価するパラメータの値を複数決定する選択部１００と、評価部１２０による処理と、選択部１００による決定とを繰り返すことにより得られる、最適化されたパラメータの値を出力する出力部１６０と、を備える。最適化装置１０の評価部１２０は、選択部１００によって複数決定されたパラメータの値の各々について、評価用データ及びパラメータの値に基づいて計算を行い、評価値を出力することを並列に行う。
【００６０】
本実施形態の最適化装置１０では、一回の繰り返しで、複数個のパラメータの値を選択し、それらを並列処理で評価することで、少ない繰り返し回数で最適化を行う。従って、本実施形態の最適化装置１０によれば、複数個のパラメータの値を同時に選択して、パラメータの最適化の高速化を図ることができる。
【００６１】
なお、本開示は、上記実施形態に限定されるものではなく、この本開示の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【００６２】
上記実施形態では、最適化装置１０を、パラメータｘを誘導の仕方とした人流シミュレーションに適用した形態について説明したが、これに限定されるものではない。
【００６３】
例えば、他の実施形態として最適化装置１０は、パラメータｘを信号の切り替えタイミング、評価値ｙを目的地までの到達時間等とした交通シミュレーションに適用することができる。また例えば、他の実施形態として最適化装置１０は、パラメータｘをアルゴリズムのハイパーパラメータ、評価値ｙを推論の正解率等とした機械学習に適用することができる。
【００６４】
また、本実施形態では、上記プログラムが予めインストールされている形態について説明したが、当該プログラムを、コンピュータが読み取り可能な記録媒体に格納して提供することも可能であるし、ネットワークを介して提供することも可能である。
【符号の説明】
【００６５】
１０   最適化装置
１００ 選択部
１１０ 評価用データ蓄積部
１２０ 評価部
１３０ パラメータ・評価値蓄積部
１４０ モデル当てはめ部
１５０ 評価パラメータ決定部
１６０ 出力部
２００ 計算装置
【図１】
2020181318.tif 000006
【図２】
2020181318.tif 000007
【図３】
2020181318.tif 000008
【図４】
2020181318.tif 000009
【図５】
2020181318.tif 000010