(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-11
(45)【発行日】2024-11-19
(54)【発明の名称】設定装置、設定方法およびプログラム
(51)【国際特許分類】
G05B 13/04 20060101AFI20241112BHJP
G05B 23/02 20060101ALI20241112BHJP
【FI】
G05B13/04
G05B23/02 E
(21)【出願番号】P 2023515941
(86)(22)【出願日】2021-04-20
(86)【国際出願番号】 JP2021016105
(87)【国際公開番号】W WO2022224364
(87)【国際公開日】2022-10-27
【審査請求日】2023-10-04
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100181135
【氏名又は名称】橋本 隆史
(72)【発明者】
【氏名】窪澤 駿平
(72)【発明者】
【氏名】大西 貴士
【審査官】牧 初
(56)【参考文献】
【文献】特開2008-304970(JP,A)
【文献】特開2006-344004(JP,A)
【文献】特開2009-244933(JP,A)
【文献】特開2005-050283(JP,A)
【文献】特開平06-289179(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 11/00-17/02
G05B 23/00-23/02
(57)【特許請求の範囲】
【請求項1】
模擬対象を模擬するシミュレータのパラメータ値を設定するパラメータ値設定手段と、
前記シミュレータの出力値と、前記シミュレータの出力値による模擬の対象となる基準出力値とに基づいて、
前記シミュレータの出力値毎の項目である出力項目毎の重みを計算する重み計算手段と、
前記シミュレータの出力値と前記基準出力値と前記重みとに基づく評価関数を用いて、前記パラメータ値設定手段による前記シミュレータのパラメータ値の設定の学習を制御する学習制御手段と、
を備える設定装置。
【請求項2】
前記重み計算手段は、前記出力項目毎の誤差を正規化した正規化後誤差が大きい
前記出力項目ほど小さい重みになるように、前記出力項目毎の重みを計算する、
請求項1に記載の設定装置。
【請求項3】
前記シミュレータの出力値と前記基準出力値との誤差の、前記パラメータ値の空間における勾配を示す勾配ベクトルを、
前記出力項目毎に計算する勾配ベクトル計算手段
をさらに備え、
前記重み計算手段は、前記勾配ベクトルと、前記勾配ベクトルを全ての前記出力項目について平均した平均勾配ベクトルとの差異が小さいほど重みが大きくなるように、前記出力項目毎の重みを計算する
請求項1に記載の設定装置。
【請求項4】
前記学習制御手段は、前記シミュレータによる前記模擬対象のシミュレーション上の時間で、前記パラメータ値設定手段が前記パラメータ値を設定する時間よりも未来の時間を含む時間における前記シミュレータの出力値に基づく前記評価関数を用いる、
請求項1から3の何れか一項に記載の設定装置。
【請求項5】
模擬対象を模擬する第1シミュレータのパラメータ値を設定するパラメータ値設定手段と、
前記模擬対象を模擬
し、出力値が前記第1シミュレータの出力値による模擬の対象となる基準出力値として用いられる第2シミュレータの出力値と、前記第1シミュレータに、前記第2シミュレータへの入力値と同じ入力値が入力されたときの前記第1シミュレータの出力値とに基づく評価関数を用いて、前記パラメータ値設定手段による前記第1シミュレータのパラメータ値の設定の学習を制御する学習制御手段と、
を備える設定装置。
【請求項6】
前記第2シミュレータのパラメータ値を変化させるパラメータ値変更手段
をさらに備え、
前記第2シミュレータの出力値は、前記パラメータ値変更手段が前記第2シミュレータのパラメータ値を変化させるときの出力値を含む、
請求項5に記載の設定装置。
【請求項7】
コンピュータが、
模擬対象を模擬するシミュレータのパラメータ値を設定し、
前記シミュレータの出力値と、前記シミュレータの出力値による模擬の対象となる基準出力値とに基づいて、
前記シミュレータの出力値毎の項目である出力項目毎の重みを計算し、
前記シミュレータの出力値と前記基準出力値と前記重みとに基づく評価関数を用いて、前記シミュレータのパラメータ値の設定の学習を制御する、
設定方法。
【請求項8】
コンピュータが、
模擬対象を模擬する第1シミュレータのパラメータ値を設定し、
前記模擬対象を模擬
し、出力値が前記第1シミュレータの出力値による模擬の対象となる基準出力値として用いられる第2シミュレータの出力値と、前記第1シミュレータに、前記第2シミュレータへの入力値と同じ入力値が入力されたときの前記第1シミュレータの出力値とに基づく評価関数を用いて、前記第1シミュレータのパラメータ値の設定の学習を制御する、
設定方法。
【請求項9】
コンピュータに、
模擬対象を模擬するシミュレータのパラメータ値を設定することと、
前記シミュレータの出力値と、前記シミュレータの出力値による模擬の対象となる基準出力値とに基づいて、
前記シミュレータの出力値毎の項目である出力項目毎の重みを計算することと、
前記シミュレータの出力値と前記基準出力値と前記重みとに基づく評価関数を用いて、前記シミュレータのパラメータ値の設定の学習を制御することと、
を実行させるためのプログラム。
【請求項10】
コンピュータに、
模擬対象を模擬する第1シミュレータのパラメータ値を設定することと、
前記模擬対象を模擬
し、出力値が前記第1シミュレータの出力値による模擬の対象となる基準出力値として用いられる第2シミュレータの出力値と、前記第1シミュレータに、前記第2シミュレータへの入力値と同じ入力値が入力されたときの前記第1シミュレータの出力値とに基づく評価関数を用いて、前記第1シミュレータのパラメータ値の設定の学習を制御することと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、設定装置、設定方法およびプログラムに関する。
【背景技術】
【0002】
シミュレータのパラメータ値の計算方法を強化学習にて学習することが提案されている。
例えば、特許文献1には、ごみ焼却プラントのシミュレータのパラメータ(プロセスモデルのプラントモデルを特徴付ける数値)を強化学習(Q-Learning、TD学習法など)にて学習することが記載されている。また、特許文献1には、報酬を、実測と計算の状態量の間にある差に応じて定めることが記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
プラントが複数のセンサを備える場合など、模擬対象から複数項目の出力値を得られる場合が考えられる。この場合に、シミュレータのパラメータ値の設定の学習を効果的に行えることが好ましい。
【0005】
本発明の目的の一例は、上述した課題を解決することのできる設定装置、設定方法およびプログラムを提供することである。
【課題を解決するための手段】
【0006】
本発明の第一の態様によれば、設定装置は、模擬対象を模擬するシミュレータのパラメータ値を設定するパラメータ値設定手段と、前記シミュレータの出力値と、前記シミュレータの出力値による模擬の対象となる基準出力値とに基づいて、前記シミュレータの出力値毎の項目である出力項目毎の重みを計算する重み計算手段と、前記シミュレータの出力値と前記基準出力値と前記重みとに基づく評価関数を用いて、前記パラメータ値設定手段による前記シミュレータのパラメータ値の設定の学習を制御する学習制御手段と、を備える。
【0007】
本発明の第二の態様によれば、設定装置は、模擬対象を模擬する第1シミュレータのパラメータ値を設定するパラメータ値設定手段と、前記模擬対象を模擬し、出力値が前記第1シミュレータの出力値による模擬の対象となる基準出力値として用いられる第2シミュレータの出力値と、前記第1シミュレータに、前記第2シミュレータへの入力値と同じ入力値が入力されたときの前記第1シミュレータの出力値とに基づく評価関数を用いて、前記パラメータ値設定手段による前記第1シミュレータのパラメータ値の設定の学習を制御する学習制御手段と、を備える。
【0008】
本発明の第三の態様によれば、設定方法では、コンピュータが、模擬対象を模擬するシミュレータのパラメータ値を設定し、前記シミュレータの出力値と、前記シミュレータの出力値による模擬の対象となる基準出力値とに基づいて、前記シミュレータの出力値毎の項目である出力項目毎の重みを計算し、前記シミュレータの出力値と前記基準出力値と前記重みとに基づく評価関数を用いて、前記シミュレータのパラメータ値の設定の学習を制御する。
【0009】
本発明の第四の態様によれば、設定方法では、コンピュータが、模擬対象を模擬する第1シミュレータのパラメータ値を設定し、前記模擬対象を模擬し、出力値が前記第1シミュレータの出力値による模擬の対象となる基準出力値として用いられる第2シミュレータの出力値と、前記第1シミュレータに、前記第2シミュレータへの入力値と同じ入力値が入力されたときの前記第1シミュレータの出力値とに基づく評価関数を用いて、前記第1シミュレータのパラメータ値の設定の学習を制御する。
【0010】
本発明の第五の態様によれば、プログラムは、コンピュータに、模擬対象を模擬するシミュレータのパラメータ値を設定することと、前記シミュレータの出力値と、前記シミュレータの出力値による模擬の対象となる基準出力値とに基づいて、前記シミュレータの出力値毎の項目である出力項目毎の重みを計算することと、前記シミュレータの出力値と前記基準出力値と前記重みとに基づく評価関数を用いて、前記シミュレータのパラメータ値の設定の学習を制御することと、を実行させるためのプログラムである。
【0011】
本発明の第六の態様によれば、プログラムは、コンピュータに、模擬対象を模擬する第1シミュレータのパラメータ値を設定することと、前記模擬対象を模擬し、出力値が前記第1シミュレータの出力値による模擬の対象となる基準出力値として用いられる第2シミュレータの出力値と、前記第1シミュレータに、前記第2シミュレータへの入力値と同じ入力値が入力されたときの前記第1シミュレータの出力値とに基づく評価関数を用いて、前記第1シミュレータのパラメータ値の設定の学習を制御することと、を実行させるためのプログラムである。
【発明の効果】
【0012】
本発明によれば、模擬対象から複数項目の出力値を得られる場合に、シミュレータのパラメータ値の設定の学習を効果的に行えると期待される。
【図面の簡単な説明】
【0013】
【
図1】第1実施形態に係るシミュレーションシステムの装置構成の例を示す図である。
【
図2】第1実施形態での学習時における設定装置の構成の例を示す図である。
【
図3】第1実施形態に係るシミュレーションシステムの運用時におけるデータの入出力の例を示す図である。
【
図4】第2実施形態に係るシミュレーションシステムの構成例を示す図である。
【
図5】第2実施形態に係るシミュレーションシステムの学習時におけるデータの入出力の例を示す図である。
【
図6】第2実施形態に係る設定装置における評価値の計算のための構成の例を示す図である。
【
図7】第2実施形態に係るセンサ値の誤差の勾配の例を示す図である。
【
図8】第2実施形態に係る重み計算部が算出する正規化された誤差の例を示す図である。
【
図9】第2実施形態に係る重み計算部が算出する一致度の例を示す図である。
【
図10】第2実施形態に係る重み計算部が算出する重みの例を示す図である。
【
図11】第2実施形態における重み付けされた誤差の分布の第1例を示す図である。
【
図12】第2実施形態における重み付けされた誤差の分布の第2例を示す図である。
【
図13】第2実施形態に係る学習制御部による重みの更新の例を示す図である。
【
図14】第2実施形態に係る設定装置が、誤差の重みを更新する処理手順の例を示す図である。
【
図15】第3実施形態に係るシミュレーションシステムの構成例を示す図である。
【
図16】第3実施形態に係るシミュレーションシステムの学習時におけるデータの入出力の例を示す図である。
【
図17】第3実施形態におけるパラメータ値の空間における勾配ベクトルの例を示す図である。
【
図18】第3実施形態に係る勾配ベクトル計算部が誤差の微分dLi(θ)/dθを推定する処理手順の例を示す図である。
【
図19】第3実施形態に係る設定装置が、誤差の重みを更新する処理手順の例を示す図である。
【
図20】第4実施形態に係るシミュレーションシステムの構成例を示す図である。
【
図21】第4実施形態に係るシミュレーションシステムの学習時におけるデータの入出力の例を示す図である。
【
図22】第5実施形態に係るシミュレーションシステムの構成例を示す図である。
【
図23】第5実施形態に係るシミュレーションシステムの学習時におけるデータの入出力の例を示す図である。
【
図24】第6実施形態に係るシミュレーションシステムの構成例を示す図である。
【
図25】第6実施形態に係るシミュレーションシステムの学習時におけるデータの入出力の例を示す図である。
【
図26】第7実施形態に係る設定装置の構成例を示す図である。
【
図27】第8実施形態に係る設定装置の構成例を示す図である。
【
図28】第9実施形態に係る設定方法における処理手順の例を示す図である。
【
図29】第10実施形態に係る設定方法における処理手順の例を示す図である。
【
図30】少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0015】
<第1実施形態>
図1は、第1実施形態に係るシミュレーションシステムの装置構成の例を示す図である。
図1に示す構成で、シミュレーションシステム1は、設定装置100と、シミュレータ200とを備える。また、
図1には模擬対象900が示されている。模擬対象900が、シミュレーションシステム1に含まれていてもよいし、シミュレーションシステム1の外部の構成となっていてもよい。
【0016】
模擬対象900は、シミュレーションシステム1によるシミュレーションの対象である。模擬対象900は、シミュレーションを実行可能ないろいろなものとすることができ、特定のものに限定されない。また、模擬対象900は、複数の装置を含むシステムであってもよいし、単体の装置であってもよいし、装置の部分であってもよい。
例えば、模擬対象900は、化学プラント、蒸留塔、航空管制システム、または、鉄道システムの何れかであってもよいが、これに限定されない。
【0017】
シミュレーションシステム1は、模擬対象900を模擬する。
具体的には、シミュレータ200が、模擬対象900のシミュレーションモデルを備える。シミュレータ200が備える模擬対象900のシミュレーションモデルは、模擬対象900の状態に相当するパラメータを有する。設定装置100が、シミュレーションモデルのパラメータに値を設定することで、シミュレータ200は、設定されたパラメータ値に応じた模擬対象900の状態における模擬対象900の動作を模擬する。
設定装置100とシミュレータ200とが、何れもコンピュータを用いて構成されていてもよい。設定装置100とシミュレータ200とが、これら両方を含む1つの装置として構成されていてもよい。
【0018】
シミュレータ200が備える模擬対象900のシミュレーションモデルを、単にシミュレーションモデル、または、模擬対象900のシミュレーションモデルとも称する。
シミュレータ200が備える模擬対象900のシミュレーションモデルのパラメータを単にパラメータ、または、シミュレータ200のパラメータとも称する。シミュレータ200が備える模擬対象900のシミュレーションモデルのパラメータ値を単にパラメータ値または、シミュレータ200のパラメータ値とも称する。
【0019】
設定装置100は、基準出力値を取得する。ここでいう基準出力値は、シミュレータ200の出力値による模擬の対象となる値である。設定装置100は、シミュレータ200の出力値を基準出力値に合わせるように、パラメータ値を設定する。具体的には、設定装置100は、シミュレータ200の出力値が基準出力値になるべく近い値になるように、パラメータ値を設定する。
【0020】
例えば、模擬対象900への実際の入力値と同じ値が、シミュレータ200に入力されるようにしてもよい。そして、設定装置100が、この入力値に対する模擬対象900の実際の出力値を基準出力値として取得し、シミュレータ200の出力値が基準出力値になるべく近づくようにパラメータ値を設定するようにしてもよい。
これにより、シミュレータ200は、模擬対象900の状態に応じて模擬対象900を高精度に模擬することができる。また、設定装置100が設定するパラメータ値を参照することで、模擬対象900の状態を解析することができる。
【0021】
シミュレーションシステム1が模擬対象900の実際の入力値および出力値を取得する場合、模擬対象900の入力値および出力値をリアルタイムで取得するようにしてもよい。この場合、シミュレータ200は、模擬対象900をリアルタイムで模擬することができる。
あるいは、シミュレーションシステム1が、模擬対象900の入力値および出力値の履歴データを取得するようにしてもよい。この場合、シミュレータ200は、模擬対象900の過去の動作をシミュレーションで再現することができる。
この場合、設定装置100と模擬対象900とが通信接続されていなくてもよい。
【0022】
模擬対象900への入力値、または、模擬対象900への入力値に相当する値を、制御入力値とも称する。模擬対象900への入力値に相当する値とは、模擬対象900への入力値として使用可能であるが、実際に模擬対象900に入力される予定は無い値であってもよい。
【0023】
シミュレーションシステム1が、模擬対象900における実データに代えて、制御入力値および基準出力値の仮想的なデータに基づいて模擬対象900のシミュレーションを行うようにしてもよい。例えば、シミュレーションシステム1が、模擬対象900における入出力の計画値に基づいて模擬対象900のシミュレーションを行うようにしてもよい。これにより、設定装置100が設定するパラメータ値を参照することで、計画を実施するのに適した模擬対象900の状態を解析することができる。
この場合、設定装置100と模擬対象900とが通信接続されていなくてもよい。
【0024】
模擬対象900の出力値は、シミュレーションシステム1が取得可能な値であればよく、特定のものに限定されない。以下では、模擬対象900の出力値を取得する手段をセンサとして扱う。模擬対象900の出力値をセンサ値とも称する。
模擬対象900の出力値には、模擬対象900が備えるタンク内の圧力など、模擬対象900自体のセンサ値が含まれていてもよい。また、模擬対象900の出力値には、模擬対象900が設置された部屋の室温など、模擬対象900の周囲環境に関するセンサ値が含まれていてもよい。
【0025】
模擬対象900の出力が複数ある場合、模擬対象900の個々の出力を模擬対象900の出力項目、あるいは単に出力項目とも称する。模擬対象900の出力値が、出力項目毎の要素を有するベクトルで示されてもよい。模擬対象900の全ての出力項目の出力値を出力項目毎の出力値と区別する場合、全ての出力項目の出力値を出力値ベクトルとも称する。
模擬対象900を模擬するシミュレータ200についても、模擬対象900の場合と同様に、「出力項目」および「出力値ベクトル」の用語を用いる。基準出力値についても、「出力項目」および「出力値ベクトル」の用語を用いる。例えば、全ての出力項目の基準出力値を「基準出力値ベクトル」とも称する。
【0026】
模擬対象900への入力値には、模擬対象900が備える配管内の液体流量指令値など、模擬対象900に信号で入力される値が含まれていてもよい。また、模擬対象900への入力値には、模擬対象900の運転員の操作による調整弁の開度など、模擬対象900に対する操作によって入力される値が含まれていてもよい。
【0027】
模擬対象900への入力が複数ある場合、模擬対象900への個々の入力を模擬対象900への入力項目とも称する。模擬対象900への入力値が、入力項目毎の要素を有するベクトルで示されてもよい。模擬対象900の全て入力項目の入力値を入力項目毎の出力値と区別する場合、全ての入力項目の入力値を入力値ベクトルとも称する。
【0028】
設定装置100が、模擬対象900の状態の時間変化に応じてシミュレーション中にパラメータ値を更新するようにしてもよい。
また、設定装置100が、模擬対象900の一部のセンサが故障した場合もシミュレーションモデルが模擬対象900と同じ動作またはなるべく似た動作を示すように、パラメータ値を設定するようにしてもよい。
【0029】
模擬対象900のシミュレーションモデルが複数のパラメータを備えていてもよく、これら複数のパラメータの値がベクトルで示されてもよい。模擬対象900のシミュレーションモデルの全てのパラメータ値を個々のパラメータ値と区別する場合、全てのパラメータ値をパラメータ値ベクトルとも称する。
【0030】
図2は、学習時における設定装置100の構成の例を示す図である。
図2に示す構成で、設定装置100は、学習制御部110と、パラメータ値設定部120とを備える。
設定装置100は、シミュレーションモデルパラメータ値の計算方法を強化学習によって取得する。
【0031】
強化学習は、機械学習の一種である。強化学習では、「環境」内の「エージェント」が「状態」を観察して「行動」を決定するための、行動決定基準である「方策」が、学習による更新の対象となる。方策の更新に際し、行動による環境への働きかけに対する評価を示す「報酬」がエージェントに提示される。方策に加えて報酬の計算方法も、学習による更新の対象となっていてもよい。また、報酬として、値が小さいほど評価が高いことを示す、いわゆる「損失」が、エージェントに提示されるようにしてもよい。
学習を訓練とも称する。
【0032】
シミュレーションシステム1では、設定装置100がエージェントの例に該当する。シミュレータ200と、例えば模擬対象900など制御入力値および基準出力値の出力元とが、環境の例に該当する。制御入力値、基準出力値、および、シミュレータ200の出力値が、設定装置100が観測する状態の例に該当する。
【0033】
パラメータ値設定部120は、シミュレータ200のパラメータ値を設定する。具体的には、パラメータ値設定部120は、パラメータ値を計算するための関数を備え、この関数を用いてパラメータ値を算出する。パラメータ値設定部120は、算出したパラメータ値をシミュレータ200に送信することで、このパラメータ値をシミュレータ200に設定する。
パラメータ値設定部120は、パラメータ値設定手段の例に該当する。
【0034】
パラメータ値設定部120がパラメータ値を決定するための基準が、関数以外の形式で構成されていてもよい。例えば、パラメータ値設定部120がパラメータ値を決定するための基準がアルゴリズムの形式で示されていてもよい。
パラメータ値設定部120によるパラメータ値の設定は、行動の例に該当する。パラメータ値設定部120がパラメータ値を決定するための基準は、方策の例に該当する。
【0035】
パラメータ値設定部120がパラメータ値を決定するための基準は、更新可能に構成される。例えば、パラメータ値設定部120がパラメータ値を決定するための基準が関数の形式で構成される場合、関数の係数の値および定数項の値が、更新可能になっていてもよい。パラメータ値設定部120がアルゴリズムの形式で構成される場合、アルゴリズム中に、学習によって値を更新可能な外部変数が設けられていてもよい。
【0036】
以下では、パラメータ値設定部120がパラメータ値を決定するための基準が関数の形式で構成される場合を例に説明する。この関数を方策関数とも称する。方策関数を「π」で表す場合がある。
方策関数πの引数は、制御入力値、基準出力値、および、シミュレータ200の出力値であってもよいが、これらに限定されない。また、方策関数πが複数時刻分のデータを引数にとるようになっていてもよい。例えば、方策関数πが、制御入力値、基準出力値、および、シミュレータ200の履歴情報を引数にとるようになっていてもよい。
【0037】
学習制御部110は、シミュレータ200の出力値と基準出力値とに基づく評価関数を用いて、パラメータ値設定部120によるパラメータ値の設定の学習を制御する。学習制御部110は、学習制御手段の例に該当する。
具体的には、学習制御部110は、シミュレータ200の出力値と基準出力値とを引数とし、パラメータ値設定部120が設定したパラメータ値に対する評価値を算出するための評価関数を備える。学習制御部110は、この評価関数を用いて評価値を算出する。
例えば、学習制御部110が、基準出力値に対するシミュレータ200の出力値の誤差の大きさを評価値として算出する評価関数を用いるようにしてもよい。
【0038】
学習制御部110が評価値を取得するための基準が、関数以外の形式で構成されていてもよい。例えば、学習制御部110が評価値を取得するための基準がアルゴリズムの形式で示されていてもよい。
学習制御部110が取得する評価値は、報酬の例に該当する。学習制御部110が、上記の誤差のように、値が小さいほど評価が高いことを示す、いわゆる損失を報酬として取得するようにしてもよい。
以下では、学習制御部110が評価関数を用いて評価値を算出する場合を例に説明する。この評価関数を報酬関数とも称する。
【0039】
学習制御部110は、算出した評価値に基づいて、パラメータ値設定部120によるパラメータ値の設定の学習を制御する。ここでのパラメータ値設定部120によるパラメータ値の設定の学習は、具体的には、方策関数πを更新することである。
【0040】
学習制御部110は、評価値が減少するように、方策関数πを更新する。これにより、学習制御部110は、シミュレータ200の出力値が基準出力値に近付くように、方策関数πを更新する。学習制御部110が、方策関数πを直接更新することに代えて、パラメータ値設定部120に方策関数πを更新させるようにしてもよい。
【0041】
ここでの方策関数πの更新方法として公知の方法を用いることができる。例えば、方策関数πの微分または差分近似など、何らかの方法で方策関数πの勾配を算出可能な場合、学習制御部110が勾配法を用いて方策関数πの更新内容を決定するようにしてもよい。
【0042】
図3は、シミュレーションシステム1の運用時におけるデータの入出力の例を示す図である。
図3の例では、設定装置100の各部のうちパラメータ値設定部120が示されている。
図2に示す設定装置100の各部のうち学習制御部110は、運用時には不要である。運用時には、設定装置100が学習制御部110を備えていなくてもよい。あるいは、運用時にも設定装置100が
図2の例のように構成され、学習制御部110が停止状態となっていてもよい。
【0043】
図3の例で、パラメータ値設定部120は、制御入力値、基準出力値、および、シミュレータ200の出力値を取得する。パラメータ値設定部120は、取得した各値を学習済みの方策関数πに入力してパラメータ値を算出し、算出したパラメータ値をシミュレータ200に設定する。
【0044】
シミュレータ200は、設定されたパラメータ値に基づいて模擬対象900のシミュレーションを実行し、制御入力値に対する出力値を算出する。
以下では、時刻を時間ステップ毎の連番で表すこととし、時刻0、1、2、・・・のように表記する。パラメータ値設定部120が時間ステップ毎にパラメータ値の算出および設定を行うものとする。そして、シミュレータ200が、パラメータ値が設定される毎に、制御入力値に対する出力値を算出するものとする。
シミュレータ200における入出力は式(1)のように表記される。
【0045】
【0046】
x(t)は、時刻tにおけるシミュレータ200への入力値ベクトルを示す。θ(t)は、時刻tにおけるシミュレータ200のパラメータ値ベクトルを示す。
fは、シミュレーションモデルの動作を示す関数である。関数fでは、シミュレーションモデルの状態が、パラメータ値θ(t)の引数で示されている。
シミュレーションモデルが、パラメータ値θ(t)以外にも状態を有していてもよい。この場合、関数fが、パラメータ値θ(t)以外にも状態変数値を引数にとるようにしてもよい。
y^(t+1)は、時刻t+1におけるシミュレータ200の出力値ベクトルを示す。
シミュレータ200が、x(t)およびθ(t)に基づいて、時刻tにおけるシミュレータ200の出力値ベクトルy^(t)を算出するようにしてもよい。
【0047】
シミュレーションの開始時刻を0とし、シミュレーション上での現在時刻をτとして、時刻0からτまでの制御入力値ベクトルの時系列データは式(2)のように示される。
【0048】
【0049】
時刻0からτまでの模擬対象900の出力値の時系列データは、式(3)のように示される。
【0050】
【0051】
時刻0からτまでのシミュレータ200の出力値の時系列データは、式(4)のように示される。
【0052】
【0053】
設定装置100が、制御入力値の時系列データ、模擬対象900の出力値の時系列データ、および、シミュレータ200の出力値の時系列データの全部または一部を、パラメータ値の設定の学習における状態観測データとして用いるようにしてもよい。設定装置100が、模擬対象900の出力値の時系列データに代えて、模擬対象900の出力計画値の時系列データなど仮想的なデータを状態観測データとして用いるようにしてもよい。
【0054】
<第2実施形態>
図4は、第2実施形態に係るシミュレーションシステムの構成例を示す図である。
図4に示す構成で、シミュレーションシステム2は、設定装置101と、シミュレータ200とを備える。設定装置101は、学習制御部111と、パラメータ値設定部120と、重み計算部310とを備える。
図4の各部のうち、
図2の各部に対応して同様の機能を有する部分には、同一の符号(120、200)を付し、ここでは詳細な説明を省略する。
【0055】
シミュレーションシステム2は、シミュレーションシステム1の例に該当する。設定装置101は、設定装置100の例に該当する。学習制御部111は、学習制御部110の例に該当する。したがって、学習制御部111は、学習制御手段の例に該当する。
重み計算部310は、模擬対象900の出力値に対するシミュレータ200の出力値の出力項目毎の誤差に対する重みを算出する。学習制御部111は、シミュレータ200の出力値と基準出力値とに加えてさらに、重み計算部310が算出する重みに基づく評価関数を用いて、出力項目毎の誤差が重み付け合計された誤差を評価値として算出する。それ以外の点では、シミュレーションシステム2はシミュレーションシステム1と同様である。
【0056】
図5は、シミュレーションシステム2の学習時におけるデータの入出力の例を示す図である。
図5の例で、重み計算部310は、基準出力値とシミュレータ200の出力値との入力を受け、出力項目毎に重みを計算する。
【0057】
学習制御部111は、基準出力値と、シミュレータ200の出力値と、重み計算部310が算出する重みとの入力を受ける。学習制御部111は、出力項目毎に、基準出力値に対するシミュレータ200の出力値の誤差を算出し、重み計算部310が算出する重みを用いて出力項目毎の誤差を重み付け合計する。学習制御部111は、重み付け合計された誤差を評価値として用いて、評価値が減少するように、パラメータ値設定部120によるパラメータ値の設定の学習を制御する。
【0058】
パラメータ値設定部120は、制御入力値と、基準出力値と、シミュレータ200の出力値との入力を受ける。パラメータ値設定部120は、得られた各値を方策関数πに入力してパラメータ値を算出し、算出したパラメータ値をシミュレータ200に設定する。
シミュレータ200は、設定されたパラメータ値に基づいて模擬対象900のシミュレーションを実行し、制御入力値に対する出力値を算出する。
【0059】
図6は、設定装置101における評価値の計算のための構成の例を示す図である。
図6の例で、模擬対象900の状態が「θ
t」と表記されている。模擬対象900の状態に相当するシミュレータ200のパラメータ値は「θ^
t」と表記されている。
S
tは、模擬対象900のセンサ、および、模擬対象900のセンサを模擬するシミュレータ200の出力を示す。S
tに示されるセンサまたは出力が正常であることを白丸(〇)で示し、故障していることを黒丸(●)で示している。
図6は、模擬対象900のセンサのうちの1つが故障している場合の例を示している。
【0060】
学習制御部111は、模擬対象900の出力値に対するシミュレータ200の出力値の、出力項目毎の差の2乗の重み付け合計を評価値として算出し、評価値を最小化するように、方策関数πを更新する。模擬対象900の出力値に対するシミュレータ200の出力値の、出力項目毎の差の2乗を2乗誤差とも称する。
図6の「-」は、出力項目毎の、模擬対象900の出力とシミュレータ200の出力との差を示す。「ε
2」は、2乗を示す。「w」は、重み計算部310が算出する重みによる重み付けを示す。「Σ」は、合計を示す。
【0061】
図6の例のように、模擬対象900の一部のセンサが故障している場合、学習制御部111が、シミュレータ200の出力値を故障しているセンサの出力値に合わせるように学習を制御することで、シミュレータ200によるシミュレーションの精度が低くなることが考えられる。
また、模擬対象900の一部のセンサが故障している場合、評価値として算出される誤差を0にできないことが考えられる。誤差を0にできないことで、学習に時間を要する場合が考えられる。
【0062】
そこで、重み計算部310は、出力項目毎に重みを設定する。この重みは、模擬対象900の出力値に対するシミュレータ200の出力値の誤差を評価値に反映させる度合いを示す重みとして用いられる。全ての出力項目の重みを出力項目毎の重みと区別する場合、全ての出力項目の重みを重みベクトルとも称する。
重み計算部310は、重み計算手段の例に該当する。
重み計算部310が、出力項目毎の各重みを、0以上、かつ、1以下の範囲で設定するようにしてもよい。この場合、重みベクトルwは、式(5)のように示される。
【0063】
【0064】
Pは、出力項目の個数を示す整数である。式(5)では、「[0,1]」は、0以上1以下の範囲を示す。
パラメータ値設定部120は、例えば、式(6)に基づいてパラメータ値を算出する。
【0065】
【0066】
θは、パラメータ値ベクトルの時系列データを示す。シミュレーションの開始時刻を0とし、シミュレーション上での現在時刻をτとして、式(6)のθは、式(7)のように示される。
【0067】
【0068】
パラメータ値設定部120は、式(7)に示される時系列データに含まれるパラメータ値ベクトルのうち、最新の時刻のパラメータ値ベクトルθ(τ-1)を、パラメータ値ベクトルθ(τ)としてシミュレータ200に設定するようにしてもよい。
【0069】
式(6)のyi
(t+1)は、時刻t+1における模擬対象900の出力値ベクトルy(t+1)のうちi番目の要素を示す。
fi(x(t),θ(t))は、関数f(x(t),θ(t))のうち、シミュレータ200の出力値y^i
(t+1)を算出する部分を示す。y^i
(t+1)は、時刻t+1におけるシミュレータ200の出力値ベクトルy^(t+1)のうちi番目の要素を示す。
wiは、重みベクトルのうちi番目の要素を示す。
argminθ(t)は、引数として与えられる関数の値が最小となるようなパラメータ値ベクトルθ(t)を出力する関数である。
【0070】
fi(x(t),θ(t))=y^i
(t+1)と表すことができ、式(6)の「wi(yi
(t+1)-fi(x(t),θ(t)))2」は、模擬対象900の出力値に対するシミュレータ200の出力値の、出力項目毎の2乗誤差の重み付け合計を示す。式(6)は、重み付けされた2乗誤差の、出力項目および重みについての合計が最小になるような、重みベクトルの時系列データを算出することを示す。
【0071】
なお、式(6)で、全て重みwiを0にすると、argminの引数が常に0になり、強化学習における評価関数として用いることができなくなる。そこで、重み計算部310は、例えば全ての重みwiの合計が1との制約条件など、全て重みwiが0になることを回避する制約条件のもとで、重みwiを算出する。
【0072】
ここで、模擬対象900のセンサの一部が故障している場合の例として、模擬対象900が2つのセンサを備え、2つのセンサのうち1つが故障している場合について考える。模擬対象900の出力値は、y=[y1,y2]=[5.2,1.2]とする。1番目のセンサ、すなわち出力値y1=5.2のセンサが故障しているものとする。
【0073】
シミュレータ200の出力値は、y^=[y^1,y^2]とし、パラメータ値にかかわらずy^1=1.2とする。y^2は、0.0またはそれ以上、かつ、10.0またはそれ以下の範囲の値をとるものとする。
1番目のセンサの誤差は、y1-y^1=5.2-1.2=4.0の固定値となっており、誤差関数値はy^2の値に依存して変化する。
【0074】
パラメータ値設定部120が設定するパラメータ値ベクトルθは、式(8)のように示される。
【0075】
【0076】
i番目のセンサの誤差εiは、式(9)のように示される。
【0077】
【0078】
図7は、センサ値の誤差の勾配の例を示す図である。
図7のグラフの横軸はシミュレータ200の出力値y^
2を示す。縦軸は、誤差Σ
i(w
i(y
i-f
i(x,θ))
2)を示す。
線L1は、重みベクトルがw=[0.5,0.5]の場合の出力値y^
2と誤差との関係を示す。線L2は、重みベクトルがw=[0.05,0.95]の場合の出力値y^
2と誤差との関係を示す。
【0079】
図7の例で、1番目のセンサの誤差ε
1は固定値9をとる。このため、重み付けされた誤差w
1ε
1は固定値となり、重み付けされた2番目のセンサの誤差w
2ε
2の大きさによって誤差の勾配の大きさが決まる。
線L1と線L2とでは、重みw
2の値が大きい線L2のほうが、誤差の勾配が大きくなる。例えば、
図7で、y^
2の同じ変化幅に対する重み付けされた誤差の変化幅は、D2のほうがD1よりも大きい。誤差の勾配が大きいことで、例えば勾配法を用いる学習の学習時間が比較的短い時間で済むと期待される。
【0080】
そこで、重み計算部310は、センサ値の正常可能性に基づいて重みを計算する。ここでいう正常可能性は、センサ値が正確であると期待される度合いである。正常可能性が高いほど、センサが正確である可能性が高い。ここでいうセンサが正確であるとは、センサ値と実際値との誤差を無視できる程度にセンサ値が実際値と一致していることであってもよい。
【0081】
具体的には、重み計算部310は、出力項目毎の模擬対象900の出力値とシミュレータ200の出力値との差を比較できるように正規化する。そして、重み計算部310は、正規化された差の大きさが大きい出力項目ほど重みの大きさが小さくなるように、重みの大きさを決定する。
【0082】
学習が進んで模擬対象900の出力値とシミュレータ200の出力値との差の大きさが小さくなってくると、故障しているセンサの出力項目、または、他のセンサに比べて精度が著しく低いセンサの出力項目など、正常可能性が低い出力項目における差が比較的大きくなることが考えられる。重み計算部310が、正規化された差の大きさが大きい出力項目ほど重みの大きさが小さくなるように、重みの大きさを決定することで、正常可能性が低い出力項目の重みが小さくなり、学習への影響を小さくできると期待される。
【0083】
重み計算部310、重みの初期値を全ての出力項目について同じ値に設定するようにしてもよい。例えば、重み計算部310が、重みベクトルwを式(10)のように初期設定するようにしてもよい。
【0084】
【0085】
学習がある程度進んでから、学習制御部111が誤差の重み付けを行うようにしてもよい。例えば、学習が所定の回数だけ行われるまで、重み計算部310が各重みの値を、式(10)に示される初期値のままにするようにしてもよい。
【0086】
図8は、重み計算部310が算出する正規化された誤差の例を示す図である。
重み計算部310は、例えば各センサのレンジを0から1までの範囲([0,1])に揃えるように、出力項目毎の模擬対象900の出力値、および、出力項目毎のシミュレータ200の出力値を変換する。
ただし、重み計算部310が行う正規化は、誤差が比較可能になるものであればよく、特定の方法による正規化に限定されない。
【0087】
重み計算部310は、出力項目毎に、正規化された模擬対象900の出力値に対する、正規化されたシミュレータ200の出力値の2乗誤差を算出する。正規化された模擬対象900の出力値に対する、正規化されたシミュレータ200の出力値の2乗誤差を、正規化された2乗誤差、または、比較誤差とも称する。
図8は、出力項目の個数が3つである場合の例を示している。出力項目毎の比較誤差は、0.7、0.2、および、0.1となっている。
【0088】
図9は、重み計算部310が算出する一致度の例を示す図である。
一致度として、比較誤差が小さいほど一致度が大きくなるような値を用いる。
図9の例では、重み計算部310は、出力項目毎に1から比較誤差を減算して一致度を算出している。出力項目毎の一致度は、0.3、0.8、および、0.9となっている。出力項目毎の一致度をR
iとも表記する。iは、出力項目を識別する識別番号であり、例えば1からの連番とすることができる。
【0089】
ただし、重み計算部310が一致度を算出する方法は、上記の方法に限定されない。
例えば、重み計算部310が、例えば、式(11)を用いて訓練サンプル毎、かつ、出力項目毎の一致度riを算出するようにしてもよい。
【0090】
【0091】
ここでいう訓練サンプルは、シミュレータ200のパラメータ値の設定の学習の一単位となるものであればよい。例えば、訓練サンプルが、1つの制御入力値ベクトルの時系列データと1つの基準出力値ベクトルの時系列データとの組み合わせを含んで構成されていてもよい。訓練データが、複数の訓練サンプルを含んで構成されていてもよい。1つの訓練データを用いて学習を繰り返し行う場合、1つの訓練データを用いた1回分の学習を、1エポックの学習と称するようにしてもよい。
式(11)では、εiは、正規化された2乗誤差を示す。
重み計算部310が、式(11)を用いて、出力項目毎の正規化された2乗誤差を正規化された2乗誤差の合計値で除算することで、個々の一致度riは0またはそれ以上、かつ1またはそれ以下の範囲内の値になり、一致度riの全ての出力項目についての合計値は1になる。
重み計算部310が、例えば、式(12)を用いて、訓練サンプル毎、かつ、出力項目毎の一致度を所定の個数の訓練サンプルについて平均することで、出力項目毎の一致度Riを算出するようにしてもよい。
【0092】
【0093】
Dは、所定の個数を示す定数である。
εk
(d)は、k番目の出力項目、かつ、d番目の訓練サンプルの正規化された2乗誤差を示す。「εi
(d)/Σk=1
Pεk
(d)」は、訓練サンプル毎、かつ、出力項目毎の一致度riの、D個の訓練サンプルについての平均を示す。
【0094】
個々の一致度Riは0またはそれ以上、かつ1またはそれ以下の範囲内の値になり、一致度Riの全ての出力項目についての合計値は1になる。
式(12)で、D=1であってもよい。したがって、重み計算部310が、式(11)で算出する訓練サンプル毎、かつ、出力項目毎の一致度riをそのまま、出力項目毎の一致度Riとして算出するようにしてもよい。
【0095】
図10は、重み計算部310が算出する重みの例を示す図である。
重み計算部310が、重みの合計が1になるように、
図9の例で得られた出力項目毎の一致度に同じ値を乗算するようにしてもよい。
例えば、重み計算部310は、式(13)を用いて出力項目毎の重みw
iを算出する。
【0096】
【0097】
重み計算部310が、式(13)を用いて出力項目毎の重みを算出することで、個々の重みwiは0またはそれ以上、かつ1またはそれ以下の範囲内の値になり、重みwiの全ての出力項目についての合計値は1になる。
【0098】
あるいは、重み計算部310が、式(13)に代えて式(14)を用いて出力項目毎の重みwiを算出するようにしてもよい。
【0099】
【0100】
eはネイピア数を示す。
重み計算部310が、式(14)を用いて出力項目毎の重みを算出することで、個々の一致度wiは0またはそれ以上、かつ1またはそれ以下の範囲内の値になり、重みwiの全ての出力項目についての合計値は1になる。
【0101】
また、重み計算部310が、式(14)のようにネイピア数など1より大きい底のべき乗を計算することで、一致度Riの大きさの相対的な違いを強調して重みwiに反映させることができる。具体的には、重み計算部310が、式(13)を用いる場合と比較すると、式(14)を用いる場合は、一致度Riが大きいほど、重みwiがより大きく算出されるようになる。
【0102】
あるいは、重み計算部310が、一致度をそのまま重みとして用いるようにしてもよい。例えば、重み計算部310が、
図9の例のように算出した一致度R
i、式(11)を用いて算出した一致度r
i、または、式(12)を用いて算出した一致度R
iを、そのまま重みw
iとして用いるようにしてもよい。
【0103】
学習制御部111が、エポック毎など学習の単位毎に、シミュレータ200の出力値と基準出力値との重み付けされた誤差の出力項目全体での大きさを示す誤差指標値を計算するようにしてもよい。そして、1単位分の学習の実行後の誤差指標値が、その1単位分の学習の実行前の誤差指標値よりも、誤差が大きいことを示す場合、学習制御部111が、重みを、その1単位分の学習の実行前の重みに戻すようにしてもよい。
【0104】
図11は、重み付けされた誤差の分布の第1例を示す図である。
図11のグラフの横軸は重み付けされた誤差の大きさの、度数分布における階級を示す。縦軸は、重み付けされた誤差の大きさの階級毎の、センサの個数を示す。重み付けされた誤差として、模擬対象900の出力値に対するシミュレータ200の出力値の、出力項目毎の2乗誤差に、重み計算部310が算出する出力項目毎の係数を乗算した値を用いることができる。
図11の例では、グラフの横軸の誤差が比較的大きい側(
図11の右側)の階級の度数が比較的大きくなっている。
【0105】
図12は、重み付けされた誤差の分布の第2例を示す図である。
図12のグラフの横軸は重み付けされた誤差の大きさの、度数分布における階級を示す。縦軸は、重み付けされた誤差の大きさの階級毎の、センサの個数を示す。
図11の例と比較すると
図12の例では、グラフの横軸の誤差が比較的小さい側(
図12の左側)の階級の度数が比較的大きくなっている。
図12の例のほうが、
図11の例の場合よりも重み付けされた誤差が改善されていると評価することができる。
【0106】
学習制御部111が算出する誤差指標値として、重み付けされた誤差の改善度合いを示すいろいろな指標値を用いることができる。例えば、学習制御部111が、誤差指標値として、模擬対象900の出力値に対するシミュレータ200の出力値の2乗誤差の、全ての出力項目についての最頻値、平均値、または中央値を算出するようにしてもよいが、これらに限定されない。
【0107】
図13は、学習制御部111による重みの更新の例を示す図である。
図12の例で、学習制御部111は、時間ステップ毎にパラメータ値の設定の学習を行い、誤差指標値を算出し、重みを更新する。
図13の例では、学習制御部111は、誤差指標値として、評価値の今回値から前回値を減算した差分を用いている。「E
t」は、時刻tにおける評価値を示す。「E
t-E
t-1」は、時刻tにおける誤差指標値を示す。
「w
(t)」は、重み計算部310が時刻tに算出する重みを示す。
上述したように、ここでの評価値として、出力項目毎の誤差が重み付け合計された誤差を用いることができる。
【0108】
また、上述したように、学習制御部111は、誤差指標値としていろいろな指標値を用いることができる。例えば、学習制御部111が、誤差指標値として、模擬対象900の出力値に対するシミュレータ200の出力値の2乗誤差の、全ての出力項目についての最頻値、平均値、または中央値を算出するようにしてもよい。あるいは、学習制御部111が、誤差指標値として、「|Et-Et-1|-|Et-1-Et-2|」など、評価値の高階の差分を用いるようにしてもよい。
【0109】
時刻t-1では、誤差指標値Et-1-Et-2≧0となっており、重み付け合計された誤差が改善されていると評価することができる。そこで、学習制御部111は、時刻t-1において、重み計算部310が算出する重みw(t-1)を採用している。
一方、時刻tでは、誤差指標値Et-Et-1<0となっており、重み付け合計された誤差が改善されていないと評価することができる。そこで学習制御部111は時刻tにおいて、重み計算部310を、時刻t-2に重み計算部310が算出した重みw(t-2)に戻している。
【0110】
誤差指標値が、重み付けされた誤差が改善されていないことを示す場合、誤差に対する重み付けが適切でなかったことが考えられる。
学習制御部111が上記のように重みを戻すことで、適切でない可能性のある重みをキャンセルして元の重みに戻すことができる。
誤差指標値が、重み付けされた誤差が改善されていないことを示す場合、学習制御部111が、重みだけでなく学習自体をキャンセルして、パラメータ値等を、その時刻における学習の前の値に戻すようにしてもよい。
【0111】
図14は、設定装置101が、誤差の重みを更新する処理手順の例を示す図である。
図14の処理で、学習制御部111は、出力項目毎の基準出力値、および、出力項目毎のシミュレータ200の出力値を正規化し、重みを設定する(ステップS111)。シミュレータ200の出力値を、シミュレーションによる出力値の実績値とも称する。
上述したように、出力項目毎の重みの初期値を、例えば1/Pなど、全ての出力項目について同じ値に設定することができる。
【0112】
次に、学習制御部111は、設定した重みを用いて1エポック分の学習を行う(ステップS112)。ただし、ステップS112での学習の分量は、1つの訓練データを用いた学習の繰り返しの1回分に限定されず、学習の単位なるいろいろな分量とすることができる。
【0113】
次に、重み計算部310は、基準出力値に対するシミュレータ200の出力値の、正規化された誤差を出力項目毎に算出する(ステップS113)。上述したように、重み計算部310が、正規化された誤差として、正規化された2乗誤差を算出するようにしてもよい。
【0114】
次に、重み計算部310は、基準出力値に対するシミュレータ200の出力値の一致度を、出力項目毎に算出する(ステップS114)。上述したように、重み計算部310が、出力項目毎に正規化された2乗誤差を1から減算して一致度を算出するようにしてもよい。あるいは、重み計算部310が、式(11)に基づいて一致度を算出するようにしてもよい。あるいは、重み計算部310が、式(11)および式(12)に基づいて一致度を算出するようにしてもよい。
【0115】
次に、学習制御部111は、重み計算部310を更新する(ステップS115)。具体的には、学習制御部111は、誤差に適用する重みを、重み計算部310が算出した重みに更新する。
上述したように、重み計算部310が、式(13)または式(14)を用いて出力項目毎の重みを算出するようにしてもよい。あるいは、重み計算部310が、出力項目毎に算出した一致度をそのまま出力項目毎の重みとして用いるようしてもよい。
【0116】
上述したように、学習制御部111が誤差指標値を算出するようにしてもよい。誤差指標値が、1単位分の学習の実行前の誤差指標値よりも誤差が大きいことを示す場合、学習制御部111が、重みを、その1単位分の学習の実行前の重みに戻すようにしてもよい。
【0117】
次に、学習制御部111は、学習の終了条件が成立したか否かを判定する(ステップS116)。ここでの学習の終了条件は、特定の条件に限定されない。例えば、学習制御部111が、学習を所定回数繰り返した場合に、学習の終了条件が成立したと判定するようにしてもよい。あるいは、学習制御部111が算出する評価値が、パラメータ値が所定の条件以上に高精度であることを示す場合に、学習制御部111が、学習所終了条件が成立したと判定するようにしてもよい。
【0118】
ステップS116で、学習の終了条件が成立していないと学習制御部111が判定した場合(ステップS116:NO)、処理がステップS112へ戻る。
一方、ステップS116で、学習の終了条件が成立していると学習制御部111が判定した場合(ステップS116:YES)、設定装置101は、
図14の処理を終了する。
【0119】
以上のように、パラメータ値設定部120は、模擬対象を模擬するシミュレータ200のパラメータ値を設定する。重み計算部310は、シミュレータ200の出力値と、シミュレータ200の出力値による模擬の対象となる基準出力値とに基づいて、出力項目毎の重みを計算する。学習制御部111は、シミュレータ200の出力値と基準出力値と重みとに基づく評価関数を用いて、パラメータ値設定手段によるシミュレータのパラメータ値の設定の学習を制御する。
【0120】
設定装置101によれば、センサの故障などにより基準出力値の正常可能性が低くなっている出力項目について、重みを小さく設定して評価値への影響を小さくすることができる。設定装置101によれば、この点で、模擬対象から複数項目の出力値を得られる場合に、シミュレータのパラメータ値の設定の学習を効果的に行えると期待される。
【0121】
また、重み計算部310は、出力項目毎の誤差を正規化した正規化後誤差が大きい出力項目ほど小さい重みになるように、出力項目毎の重みを計算する。
設定装置101によれば、出力項目毎にセンサのレンジなど上下限値が異なる場合に、正規化によって上下限値を揃えることができる。設定装置101によれば、この点で、出力項目毎の誤差の大きさをより適切に比較して、重みをより適切に設定することができ、シミュレータのパラメータ値の設定の学習を効果的に行えると期待される。
【0122】
また、学習制御部111は、学習の単位毎に、誤差指標値を計算する。誤差指標値は、シミュレータ200の出力値と基準出力値との重み付けされた誤差の出力項目全体での大きさを示す指標値である。学習制御部111は、1単位分の学習の実行後の誤差指標値が、その1単位分の学習の実行前の誤差指標値よりも、誤差が大きいことを示す場合、重みを、その1単位分の学習の実行前の重みに戻す。
【0123】
設定装置101によれば、重みの設定が適切でない可能性があることを誤差指標値が示す場合に、重みの設定を元の設定に戻すことができる。設定装置101によれば、この点で、重みをより高精度に設定することができ、シミュレータのパラメータ値の設定の学習を効果的に行えると期待される。
【0124】
<第3実施形態>
図15は、第3実施形態に係るシミュレーションシステムの構成例を示す図である。
図15に示す構成で、シミュレーションシステム3は、設定装置102と、シミュレータ200とを備える。設定装置102は、学習制御部112と、パラメータ値設定部120と、重み計算部311と、勾配ベクトル計算部320とを備える。
図15の各部のうち、
図2の各部に対応して同様の機能を有する部分には、同一の符号(120、200)を付し、ここでは詳細な説明を省略する。
【0125】
シミュレーションシステム3は、シミュレーションシステム1の例に該当する。設定装置102は、設定装置100の例に該当する。学習制御部112は、学習制御部110の例に該当する。したがって、学習制御部112は、学習制御手段の例に該当する。
【0126】
重み計算部311は、模擬対象900の出力値に対するシミュレータ200の出力値の出力項目毎の誤差に対する重みを算出する。学習制御部112は、シミュレータ200の出力値と基準出力値とに加えてさらに、重み計算部311が算出する重みに基づく評価関数を用いて、出力項目毎の誤差が重み付け合計された誤差を評価値として算出する。それ以外の点では、シミュレーションシステム3はシミュレーションシステム1と同様である。
【0127】
勾配ベクトル計算部320は、シミュレータ200の出力値と基準出力値との誤差の、パラメータ値の空間における勾配を示す勾配ベクトルを、出力項目毎に計算する。
勾配ベクトル計算部320は、勾配ベクトル計算手段の例に該当する。
重み計算部311は、勾配ベクトルと、勾配ベクトルを全ての出力項目について平均した平均勾配ベクトルとの差異が小さいほど重みが大きくなるように、出力項目毎の重みを計算する。重み計算部311と
図4の重み計算部310とでは、重みの計算方法が異なる。それ以外の点では、重み計算部311は重み計算部310と同様である。重み計算部311は、重み計算手段の例に該当する。
学習制御部112と
図4の学習制御部111とでは、重み計算部311と重み計算部310との重みの計算方法の違いに応じて、学習の具体的処理が異なる。それ以外の点では、学習制御部112は学習制御部111と同様である。学習制御部112は、学習制御手段の例に該当する。
【0128】
図16は、シミュレーションシステム3の学習時におけるデータの入出力の例を示す図である。
図16の例で、勾配ベクトル計算部320は、基準出力値とシミュレータ200の出力値との入力を受け、出力項目毎に勾配ベクトルを算出する。
重み計算部311は、勾配ベクトル計算部320が算出する出力項目毎の勾配ベクトルの入力を受け、出力項目毎に重みを算出する。
【0129】
学習制御部112におけるデータの入出力は、
図5の学習制御部111の場合と同様である。パラメータ値設定部120におけるデータの入出力は、
図5のパラメータ値設定部120の場合と同様である。シミュレータ200におけるデータの入出力は、
図5のシミュレータ200の場合と同様である。
【0130】
図17は、パラメータ値の空間における勾配ベクトルの例を示す図である。
図17は、シミュレータ200のパラメータがθ
1およびθ
2の2つである場合の例を示している。
図17のグラフの横軸は、パラメータθ
1の値を示す。縦軸は、パラメータθ
2の値を示す。これら横軸と縦軸とのなす直交座標空間は、パラメータ値の空間の例に該当する。
【0131】
図17は、出力項目の個数が4つであり、模擬対象900の4つのセンサのうち1番目のセンサが故障している場合の例を示している。したがって、
図17の例では、模擬対象900の出力値ベクトルy=[y
1,y
2,y
3,y
4]の要素のうち、出力値y
1が、センサの正常時の値と異なっている。一方、出力値y
2、y
3およびy
4の何れも、センサの正常時の値になっている。
【0132】
式(15)のように、模擬対象900の出力値y1に対するシミュレータ200の出力値の2乗誤差ε1を、パラメータθを引数とする関数としてL1(θ)と表記する。
【0133】
【0134】
また、式(16)のように、出力項目毎のシミュレータ200の出力値fi(x;θ)をy^iとも表記する。
【0135】
【0136】
パラメータθによる誤差L1(θ)の微分は、式(17)のように示される。
【0137】
【0138】
式(17)の右辺の「2(f1(x;θ)-y1)」の「y1」がセンサの正常時と異なる値を示すことで、パラメータθによる誤差L1(θ)の微分dL1(θ)/dθは、センサの正常時と異なる値を示す。
【0139】
また、式(18)のように、模擬対象900の出力値y2に対するシミュレータ200の出力値の2乗誤差ε2を、パラメータθを引数とする関数としてL2(θ)と表記する。
【0140】
【0141】
模擬対象900の出力値y
3、y
4に対するシミュレータ200の出力値の2乗誤差ε
3、ε
4についても同様に、それぞれL
3(θ)、L
4(θ)と表記する。
あるいは、第2実施形態で説明した正規化された2乗誤差ε
iを、パラメータθを引数とする関数による誤差L
i(θ)と表記するようにしてもよい。
図17の例では、i=1、2、3、4である。
【0142】
図17では、シミュレーション上での現在のパラメータ値が、「θ」で表されている。また、
図17では、誤差L
1(θ)、L
2(θ)、L
3(θ)、L
4(θ)が最小になるパラメータ値が、それぞれ、「argmin
θL
1(θ)」、「argmin
θL
2(θ)」、「argmin
θL
3(θ)」、「argmin
θL
4(θ)」で表されている。
【0143】
argminθL2(θ)、argminθL3(θ)、および、argminθL4(θ)は、パラメータ値の空間上で互いに近い位置に示されている。シミュレータ200が模擬対象900を高精度に模擬することで、L2(θ)、L3(θ)、および、L4(θ)の何れの値も小さくなると考えられる。
【0144】
これに対し、模擬対象900の1番目のセンサが故障していることで、argminθL1(θ)は、argminθL2(θ)、argminθL3(θ)、および、argminθL4(θ)から離れた位置に示されている。シミュレータ200が模擬対象900を高精度に模擬した場合でも、センサの故障により誤差L1(θ)の値があまり小さくならないことが考えられる。
【0145】
模擬対象900の出力値yiに対する、シミュレータ200の出力値y^iの誤差Li(θ)を最小にするパラメータ値を、θ^(i)とも表記する。
故障しているセンサによる模擬対象900の出力値y1に対する、シミュレータ200の出力値y^1の誤差L1(θ)を最小にするパラメータ値θ^(1)と、正常なセンサによる模擬対象900の出力値y2に対する、シミュレータ200の出力値y^2の誤差L2(θ)を最小にするパラメータ値θ^(1)とが異なることは、式(19)のように示される。
【0146】
【0147】
また、
図17では、シミュレーション上での現在のパラメータ値における誤差L
1(θ)、L
2(θ)、L
3(θ)、および、L
4(θ)の勾配ベクトル「∇
θL
1」、「∇
θL
2」、「∇
θL
3」、および、「∇
θL
4」が示されている。さらに、
図17では、勾配ベクトル∇
θL
1、∇
θL
2、∇
θL
3、および、∇
θL
4を平均した平均勾配ベクトル「∇
θL」が示されている。
ここで、誤差L
1(θ)、L
2(θ)、・・・を平均した平均誤差L(θ)は式(20)のように示される。
【0148】
【0149】
Nは、出力項目の個数を示す。
図17の例では、N=4である。
平均勾配ベクトル∇
θLは、式(21)のように示される。
【0150】
【0151】
図17の例で、argmin
θL
2(θ)、argmin
θL
3(θ)、および、argmin
θL
4(θ)が、パラメータ値の空間上で互いに近い位置にあることに応じて、勾配ベクトル「∇
θL
2」、「∇
θL
3」、および、「∇
θL
4」は、同様のベクトルになっている。すなわち、勾配ベクトル「∇
θL
2」、「∇
θL
3」、および、「∇
θL
4」の間の差異は小さい。
【0152】
一方、argminθL1(θ)が、argminθL2(θ)、argminθL3(θ)、および、argminθL4(θ)から離れた位置にあることに応じて、勾配ベクトル「∇θL1」は、勾配ベクトル「∇θL2」、「∇θL3」、および、「∇θL4」と異なるベクトルになっている。
勾配ベクトル「∇θL1」は、勾配ベクトル「∇θL2」、「∇θL3」、および、「∇θL4」と異なることは、微分を用いて式(21)のように表すこともできる。
【0153】
【0154】
平均勾配ベクトル∇θLとの関係でも、勾配ベクトル「∇θL2」、「∇θL3」、および、「∇θL4」は、いずれも、平均勾配ベクトル∇θLとの差異が小さい。
一方、勾配ベクトル「∇θL1」は、平均勾配ベクトル∇θLとの差異が、勾配ベクトル「∇θL2」、「∇θL3」、および、「∇θL4」の場合よりも大きい。
【0155】
このように、故障しているセンサの出力項目、または、他のセンサに比べて精度が著しく低いセンサの出力項目など、正常可能性が低い出力項目では、誤差の勾配ベクトルと平均勾配ベクトルとの差異が大きいことが考えられる。
誤差の勾配ベクトルと平均勾配ベクトルとの差異は、式(23)のように表すこともできる。
【0156】
【0157】
式(23)に示される差異が大きいほど、センサの正常可能性が低いと考えられる。
そこで、重み計算部311は、勾配ベクトルと平均勾配ベクトルとの差異が小さいほど重みが大きくなるように、出力項目毎の重みを計算する。
例えば、重み計算部311が、式(24)を用いて出力項目毎に模擬対象900の出力値の勾配乖離度Eiを算出するようにしてもよい。
【0158】
【0159】
勾配乖離度Eiは、出力項目毎の誤差Li(θ)の勾配dLi(θ)/dθと、全ての出力項目についての誤差の平均の勾配dL(θ)/dθとの差異の度合いを示す。勾配乖離度Eiが大きいほど、正常可能性が低いと考えられる。
重み計算部311が、式(25)を用いて重みベクトルwを算出するようにしてもよい。
【0160】
【0161】
「T」はベクトルまたは行列の転置を示す。式(25)では、重みベクトルwを縦ベクトルで示している。
ただし、重み計算部311が算出する重みは、式(25)に示すものに限定されない。重み計算部311が算出する重みは、勾配ベクトルと平均勾配ベクトルとの差異が小さいほど重みが大きくなる、いろいろな重みとすることができる。
【0162】
式(24)の「dLi(θ)/dθ」について、シミュレータの動作を示す関数を陽に求めることは一般的には困難であり、シミュレータ200の微分を直接求めることが困難な場合が考えられる。
そこで、勾配ベクトル計算部320が、パラメータ値をランダムに変化させた場合の誤差の変化量に基づいて、勾配ベクトルを計算するようにしてもよい。例えば、勾配ベクトル計算部320が、パラメータ値をランダムに変化させて微分dLi(θ)/dθを式(26)のように差分近似することを複数回繰り返し、複数回分の平均をとって勾配を推定するようにしてもよい。
【0163】
【0164】
模擬対象900の実機の状態をランダムに変化させることが困難な場合、模擬対象900の動作についてもシミュレータ200を用いてシミュレーションで実行するようにしてもよい。
【0165】
図18は、勾配ベクトル計算部320が誤差の微分dL
i(θ)/dθを推定する処理手順の例を示す図である。
図18の処理の適用範囲を、例えば模擬対象900の定常状態など入力または出力の変化が小さい場合に限定するようにしてもよい。
図18の処理で、勾配ベクトル計算部320は、勾配を式(27)のように初期化する(ステップS211)。
【0166】
【0167】
∇^θLiは、誤差Liの勾配の推定値を表す。勾配の推定値を推定勾配とも表記する。
次に、勾配ベクトル計算部320は、パラメータ毎に乱数をサンプリングしてパラメータ値の変化量Δθiを設定する(ステップS212)。
例えば、勾配ベクトル計算部320は、R=U(-1,1)など適当な分布からパラメータの個数分の乱数をサンプリングする。サンプル値が0になった場合は、サンプリングし直す。
【0168】
次に、勾配ベクトル計算部320は、各パラメータ値の変化分Δθiをサンプル値に設定して、式(28)に示される摂動ベクトルΔθを構成する(ステップS213)。
【0169】
【0170】
pは、模擬対象900のシミュレーションモデルのパラメータの個数を示す。
例えば、勾配ベクトル計算部320がR=U(-1,1)から乱数をサンプリングした場合、Δθiの各々は、パラメータ値を1だけ増加または減少させることに設定される。
次に、勾配ベクトル計算部320は、i=1、2、・・・pの各々について誤差関数値Li(θ;x)とLi(θ+Δθ;x)とをB回ずつ計算する(ステップS214)。
Bは、B≧1の整数定数である。
【0171】
次に、勾配ベクトル計算部320は、i=1、2、・・・pの各々、についてステップS214で得られた誤差関数値Li(θ;x)とLi(θ+Δθ;x)とを式29に入力して、推定勾配∇^θLiを更新する(ステップS215)。
【0172】
【0173】
勾配ベクトル計算部320は、ステップS214でB回計算した誤差関数値L
i(θ;x)とL
i(θ+Δθ;x)とのそれぞれを式(29)に入力することで、推定勾配∇^
θL
iをB回更新する。
B回更新後の推定勾配∇^
θL
iは、B回分の推定勾配を平均した勾配になっている。
勾配ベクトル計算部320は、B回更新後の推定勾配∇^
θL
iを、誤差の微分dL
i(θ)/dθを近似する近似勾配として採用する。
ステップS215の後、勾配ベクトル計算部320は、
図18の処理を終了する。
【0174】
図19は、設定装置102が、誤差の重みを更新する処理手順の例を示す図である。
図19の処理では、報酬関数r(y)を式(30)のように定義する。
【0175】
【0176】
図19の処理で、重み計算部311は、重みベクトルwを初期化する(ステップS311)。例えば、重み計算部311は、重みベクトルwの初期値を式(31)のように設定する。
【0177】
【0178】
Nは、出力項目の個数を示す正の整数である。重みベクトルwの要素の個数はN個であり、重みベクトルwの全要素の合計は1になる。
次に、設定装置102は、方策関数πの更新回数として定められている回数だけ処理を繰り返すループL11を開始する(ステップS312)。
【0179】
ループL11の処理で、設定装置102は、方策関数πの1回の更新に使用するエピソード数として定められているエピソード数だけ処理を繰り返すループL12を開始する(ステップS313)。ここでいうエピソードは、学習におけるシミュレータ200による模擬対象900の1回の模擬の開始から終了までの時系列である。
【0180】
ループL12の処理で、学習制御部112は、シミュレータ200に模擬対象900の模擬を実行させ、式(32)で示されるシミュレータ200の出力値y^t+1、および、式(30)の報酬関数r(y)による報酬関数値を保存する(ステップS314)。
【0181】
【0182】
zは、制御入力値と、基準入力値と、シミュレータ200の出力値とを示すベクトルである。αは、方策関数πのパラメータ値を示す。
【0183】
また、勾配ベクトル計算部320は、推定勾配の更新タイミングとして定められているタイミングの条件が成立するか否かを判定する(ステップS315)。
更新タイミングの条件が成立すると判定した場合(ステップS315:YES)、勾配ベクトル計算部320は、誤差L
i(θ)の勾配dL
i(θ)/dθの推定値を更新する(ステップS316)。例えば、勾配ベクトル計算部320が、
図18の処理を行って勾配の推定値を更新するようにしてもよい。
【0184】
また、重み計算部311は、エピソードの回数が、重み計算タイミングとして定めされている回数になっているか否かを判定する(ステップS317)。
エピソード回数が重み計算タイミングの回数になっていると判定した場合(ステップS317:YES)、重み計算部311は、重みを計算し、計算した重みを式(30)の報酬関数に反映させる(ステップS318)。
例えば、重み計算部311が、式(33)を用いて出力項目毎に模擬対象900の出力値の勾配乖離度Eiを算出するようにしてもよい。
【0185】
【0186】
出力項目毎の誤差の勾配「∇^θLi」と、全ての出力項目についての誤差の勾配の平均「1/pΣk=1
p∇^θLi」との差異が大きいほど、式(33)に示される勾配乖離度Eiの値が大きくなる。
重み計算部311が、式(33)で得られた勾配乖離度Eiを式(25)に入力して重みベクトルwを算出するようにしてもよい。
【0187】
ステップS318の後、学習制御部112は、ループL12の終端処理を行う(ステップS319)。具体的には、学習制御部112は、ループL12の処理を所定のエピソード数だけ繰り返したか否かを判定する。まだ、所定のエピソード数だけループL12の処理を繰り返していないと学習制御部112が判定した場合、処理がステップS314に戻り、設定装置102は、引き続きループL12の処理を繰り返す。
一方、所定のエピソード数だけループL12の処理を繰り返したと判定した場合、学習制御部112は、ループL12を終了する。
【0188】
ステップS319でループL12を終了した場合、学習制御部112は、保存したエピソードデータを用いて方策パラメータαを更新することで方策関数πを更新する(ステップS320)。
【0189】
ステップS320の後、学習制御部112は、ループL11の終端処理を行う(ステップS321)。具体的には、学習制御部112は、ループL11の処理を所定のアップデート回数だけ繰り返したか否かを判定する。まだ、所定のアップデート回数だけループL11の処理を繰り返していないと学習制御部112が判定した場合、処理がステップS313に戻り、設定装置102は、引き続きループL11の処理を繰り返す。
一方、所定のアップデート回数だけループL11の処理を繰り返したと判定した場合、学習制御部112は、ループL11を終了する。
ステップS321でループL11を終了した場合、設定装置102は、
図19の処理を終了する。
【0190】
以上のように、勾配ベクトル計算部320は、シミュレータ200の出力値と基準出力値との誤差の、パラメータ値の空間における勾配を示す勾配ベクトルを、シミュレータの出力項目毎に計算する。重み計算部311は、勾配ベクトルと、勾配ベクトルを全ての出力項目について平均した平均勾配ベクトルとの差異が小さいほど重みが大きくなるように、出力項目毎の重みを計算する。
【0191】
勾配ベクトルと平均勾配ベクトルとの差異が小さい出力項目では、基準出力値が正確であると期待される。設定装置102によれば、基準出力値が正確であると期待される出力項目に対する重みを大きく設定することができ、これによってパラメータ値の設定の学習を効果的に行えると期待される。
【0192】
また、勾配ベクトル計算部320は、パラメータ値をランダムに変化させた場合の誤差の変化量に基づいて、勾配ベクトルを計算する。
これにより、設定装置102では、誤差の微分を直接的に計算できない場合でも、誤差の勾配を推定することができる。
【0193】
<第4実施形態>
図20は、第4実施形態に係るシミュレーションシステムの構成例を示す図である。
図20に示す構成で、シミュレーションシステム4は、設定装置103と、第1シミュレータ200Aと、第2シミュレータ200Bとを備える。設定装置103は、強化学習部300と、パラメータ値変更部330とを備える。強化学習部300は、学習制御部110と、パラメータ値設定部120とを備える。
図20の各部のうち、
図2の各部に対応して同様の機能を有する部分には、同一の符号(110、120)を付し、ここでは詳細な説明を省略する。
【0194】
シミュレーションシステム4は、シミュレーションシステム1の例に該当する。設定装置103は、設定装置100の例に該当する。
第1シミュレータ200Aおよび第2シミュレータ200Bの何れも、模擬対象900を模擬する。第1シミュレータ200Aは、
図2のシミュレータ200の例に該当し、パラメータ値設定部120によるパラメータ値の設定の対象となる。
【0195】
一方、第2シミュレータ200Bは、模擬対象900の代わりに用いられる。第2シミュレータ200Bの出力値は、基準出力値として用いられる。
パラメータ値変更部330は、第2シミュレータ200Bのパラメータ値を変更する。パラメータ値変更部330が、第2シミュレータ200Bがシミュレーションを実行中に、第2シミュレータ200Bのパラメータ値を変更するようにしてもよい。
【0196】
図21は、シミュレーションシステム4の学習時におけるデータの入出力の例を示す図である。
図21の例で、パラメータ値変更部330は、第2シミュレータ200Bのパラメータ値を設定し変更する。第2シミュレータ200Bは、制御入力値の入力を受け、パラメータ値変更部が設定し変更するパラメータ値に従って模擬対象900のシミュレーションを実行し、出力値を算出する。上記のように第2シミュレータ200Bの出力値は、基準出力値として用いられる。
【0197】
学習制御部110は、第1シミュレータ200Aの出力値と第2シミュレータ200Bの出力値との入力を受ける。学習制御部110は、第2シミュレータ200Bの出力値に対する第1シミュレータ200Aの出力値の誤差が小さいほど評価が高くなる評価関数を用いて評価値を算出する。例えば、学習制御部110が、出力項目毎に、第2シミュレータ200Bの出力値に対する第1シミュレータ200Aの出力値の誤差を算出し、出力項目毎の誤差を合計するようにしてもよい。
【0198】
学習制御部110は、評価値が示す評価が高くなるように、パラメータ値設定部120によるパラメータ値の設定の学習を制御する。これにより、学習制御部110は、第1シミュレータ200Aの出力値が第2シミュレータ200Bの出力値に近付くように、パラメータ値設定部120によるパラメータ値の設定の学習を制御する。
【0199】
パラメータ値設定部120は、制御入力値と、第1シミュレータ200Aの出力値と、第2シミュレータ200Bの出力値との入力を受ける。パラメータ値設定部120は、得られた各値を方策関数πに入力してパラメータ値を算出し、算出したパラメータ値を第1シミュレータ200Aに設定する。
第1シミュレータ200Aは、設定されたパラメータ値に基づいて模擬対象900のシミュレーションを実行し、制御入力値に対する出力値を算出する。
【0200】
以上のように、模擬対象900を模擬する第2シミュレータ200Bの出力値が基準出力値として用いられる。学習制御部110は、パラメータ値設定部120がパラメータ値を設定するシミュレータである第1シミュレータ200Aに、第2シミュレータ200Bへの入力値と同じ入力値が入力されたときの第1シミュレータ200Aの出力値と、基準出力値とに基づく評価関数を用いて、パラメータ値設定部120による第1シミュレータのパラメータ値の設定の学習を制御する。
【0201】
このように、第2シミュレータ200Bの出力値を基準出力値として用いることで、模擬対象900の実機で得られるデータが少ない場合でも、強化学習部300が、パラメータ値設定部120によるパラメータ値の設定を学習することができる。
また、第2シミュレータ200Bの出力値を基準出力値として用いることで、強化学習部300は、模擬対象900の実機ではあまり発生しないような異常状態などの状態に対する対応を学習することができる。
【0202】
また、パラメータ値変更部330は、第2シミュレータ200Bのパラメータ値を変化させる。基準出力値は、パラメータ値変更部330が第2シミュレータのパラメータ値を変化させるときの第2シミュレータの出力値を含む。
このように、パラメータ値変更部330が第2シミュレータ200Bのシミュレーション実行中に第2シミュレータ200Bのパラメータ値を変更することで、模擬対象900の状態が動的に変化することに対応する基準出力値を得られる。強化学習部300が、この基準出力値を用いてパラメータ値設定部120によるパラメータ値の設定を学習することで、第1シミュレータ200Aが、模擬対象900の状態の動的な変化に対応して模擬対象900を模擬するように、第1シミュレータ200Aのパラメータ値を設定することができる。
【0203】
また、パラメータ値設定部120は、模擬対象を模擬する第1シミュレータ200Aのパラメータ値を設定する。学習制御部110は、模擬対象を模擬する第2シミュレータ200Bの出力値と、第1シミュレータ200Aに、第2シミュレータ200Bへの入力値と同じ入力値が入力されたときの第1シミュレータの出力値とに基づく評価関数を用いて、パラメータ値設定部120による第1シミュレータ200Aのパラメータ値の設定の学習を制御する。
【0204】
このように、第2シミュレータ200Bの出力値を基準出力値として用いることで、模擬対象900の実機で得られるデータが少ない場合でも、強化学習部300が、パラメータ値設定部120によるパラメータ値の設定を学習することができる。
また、第2シミュレータ200Bの出力値を基準出力値として用いることで、強化学習部300は、模擬対象900の実機ではあまり発生しないような異常状態などの状態に対する対応を学習することができる。
【0205】
第2実施形態と第4実施形態とを組み合わせて実施するようにしてもよい。この場合、
図20の構成で、強化学習部300が、
図5の重み計算部310をさらに備え、学習制御部110に代えて
図5の学習制御部111を備えるようにしてもよい。
【0206】
第3実施形態と第4実施形態とを組み合わせて実施するようにしてもよい。この場合、
図20の構成で強化学習部300が、
図15の重み計算部311と、勾配ベクトル計算部320とをさらに備え、学習制御部110に代えて
図15の学習制御部112を備えるようにしてもよい。
【0207】
<第5実施形態>
図22は、第5実施形態に係るシミュレーションシステムの構成例を示す図である。
図22に示す構成で、シミュレーションシステム5は、設定装置104と、第1シミュレータ200Aと、第2シミュレータ200Bとを備える。設定装置104は、第1強化学習部300Aと、第2強化学習部300Bとを備える。第1強化学習部300Aは、第1学習制御部110Aと、第1パラメータ値設定部120Aとを備える。第2強化学習部300Bは、第2学習制御部110Bと、第2パラメータ値設定部120Bと、スケーリング部340とを備える。
【0208】
シミュレーションシステム5は、
図20のシミュレーションシステム4の例に該当する。設定装置104は、設定装置103の例に該当する。第1強化学習部300Aは、強化学習部300の例に該当する。第1学習制御部110Aは、学習制御部110の例に該当する。
第1学習制御部110Aは、第1学習手段の例に該当する。
第1パラメータ値設定部120Aは、パラメータ値設定部120の例に該当する。したがって、第1パラメータ値設定部120Aは、パラメータ値設定手段の例に該当する。
【0209】
第1シミュレータ200Aおよび第2シミュレータ200Bの何れも、模擬対象900を模擬する。第1シミュレータ200Aは、
図20の第1シミュレータ200Aの例に該当し、第1パラメータ値設定部120Aによるパラメータ値の設定の対象となる。
第2シミュレータ200Bは、
図20の第2シミュレータ200Bの例に該当し、模擬対象900の代わりに用いられる。第2シミュレータ200Bの出力値は、基準出力値として用いられる。
【0210】
第1パラメータ値設定部120Aは、第1学習制御部110Aの制御に従った学習によって、第1シミュレータ200Aの出力値が第2シミュレータ200Aの出力値に近付くように、第1シミュレータ200Aのパラメータ値を設定する。
第1学習制御部110Aは、第1シミュレータ200Aの出力値と、基準出力値として用いられる第2シミュレータ200Bの出力値との差異を減少させるように、第1パラメータ値設定部120Aによる第1シミュレータ200Aのパラメータ値の設定の学習を制御する。
【0211】
これに対し、第2パラメータ値設定部120Bは、第2学習制御部110Bの制御に従った学習によって、第2シミュレータ200Aの出力値が第1シミュレータ200Aの出力値と異なるように、第2シミュレータ200Bのパラメータ値を設定する。
第2パラメータ値設定部120Bは、パラメータ値変更手段の例に該当する。
【0212】
第2学習制御部110Bは、第1シミュレータ200Aに第2シミュレータ200Bへの入力値と同じ入力値が入力されたときの第1シミュレータ200Aの出力値と、基準出力値として用いられる第2シミュレータ200Bの出力値とに基づく第2評価関数を用いて、第1シミュレータの出力値と基準出力値との差異を増加させるように、第2パラメータ値設定部120Bによる第2シミュレータ200Bのパラメータ値の設定の学習を制御する。
第2学習制御部110Bは、第2学習制御手段の例に該当する。
【0213】
これにより、第1強化学習部300Aは、第1パラメータ値設定部120Aが第1シミュレータ200Aのパラメータ値を適切に設定できないような制御入力値および基準出力値を用いて、第1パラメータ値設定部120Aによるパラメータ値の設定の学習を行うことができる。これにより、第1パラメータ値設定部120Aが、いろいろな制御入力値および基準出力値に対して、第1シミュレータ200Aのパラメータ値を適切に設定できるようになると期待される。
【0214】
スケーリング部340は、第1学習制御手段の制御による学習が所定の条件以上進むと、第2評価関数の値を増加させるスケーリングを行う。ここでの所定の条件は、特定の上限に限定されない。例えば、所定の条件は、所定の時間ステップ数以上学習が行われることであってもよいが、これに限定されない。
【0215】
スケーリング部340は、学習の初期段階では、第2パラメータ値設定部120Bによる第2シミュレータ200Bのパラメータ値の設定よりも、第1パラメータ値設定部120Aによる第1シミュレータ200Aのパラメータ値の設定を優先させる。
【0216】
学習の初期段階で、第2シミュレータ200Aの出力値が第1シミュレータ200Aの出力値と異なる状態が維持されると、第1強化学習部300Aの学習が進まないことが考えられる。そこで、スケーリング部340が、第2パラメータ値設定部120Bによる第2シミュレータ200Bのパラメータ値の設定よりも、第1パラメータ値設定部120Aによる第1シミュレータ200Aのパラメータ値の設定を優先させる。これにより、第1シミュレータ200Aの出力値が第2シミュレータ200Aの出力値に近付くようになり、第1強化学習部300Aの学習が進むことが期待される。
スケーリング部340は、スケーリング手段の例に該当する。
【0217】
図23は、シミュレーションシステム5の学習時におけるデータの入出力の例を示す図である。
第1パラメータ値設定部120Aは、制御入力値と、第1シミュレータ200Aの出力値と、第2シミュレータ200Bの出力値との入力を受け、これらの値を第1方策関数π
Aに入力して第1シミュレータ200Aのパラメータ値を算出する。第1パラメータ値設定部120Aは、算出したパラメータ値を第1シミュレータ200Aに設定する。
【0218】
第1学習制御部110Aは、第1シミュレータ200Aの出力値と、第2シミュレータ200Bの出力値との入力を受ける。第1学習制御部110Aは、第2シミュレータ200Bの出力値に対する第1シミュレータ200Aの出力値の誤差が小さいほど評価が高くなる第1評価関数を用いて評価値を算出する。第1学習制御部110Aは、評価値が示す評価が高くなるように、第1パラメータ値設定部120Aによる第1シミュレータ200Aのパラメータ値の設定の学習を制御する。これにより、第1学習制御部110Aは、第1シミュレータ200Aの出力値が第2シミュレータ200Bの出力値に近付くように、第1パラメータ値設定部120Aによるパラメータ値の設定の学習を制御する。
第1シミュレータ200Aは、設定されたパラメータ値に基づいて模擬対象900のシミュレーションを実行し、制御入力値に対する出力値を算出する。
【0219】
第1パラメータ値設定部120Aは、制御入力値と、第1シミュレータ200Aの出力値と、第2シミュレータ200Bの出力値との入力を受け、これらの値を第1方策関数πAに入力して第1シミュレータ200Aのパラメータ値を算出する。第1パラメータ値設定部120Aは、算出したパラメータ値を第1シミュレータ200Aに設定する。
【0220】
第2パラメータ値設定部120Bは、制御入力値と、第1シミュレータ200Aの出力値と、第2シミュレータ200Bの出力値との入力を受け、これらの値を第2方策関数πBに入力して第2シミュレータ200Bのパラメータ値を算出する。第2パラメータ値設定部120Bは、算出したパラメータ値を第2シミュレータ200Bに設定する。
【0221】
第2学習制御部110Bは、第1シミュレータ200Aの出力値と、第2シミュレータ200Bの出力値との入力を受ける。第2学習制御部110Bは、第1シミュレータ200Aの出力値と第2シミュレータ200Bの出力値との差異が大きいほど評価が高くなる第2評価関数を用いて評価値を算出する。第2学習制御部110Bは、評価値が示す評価が高くなるように、第2パラメータ値設定部120Bによる第2シミュレータ200Bのパラメータ値の設定の学習を制御する。これにより、第2学習制御部110Bは、第2シミュレータ200Bの出力値が第1シミュレータ200Aの出力値と相違するように、第2パラメータ値設定部120Bによるパラメータ値の設定の学習を制御する。
第2シミュレータ200Bは、設定されたパラメータ値に基づいて模擬対象900のシミュレーションを実行し、制御入力値に対する出力値を算出する。
【0222】
スケーリング部340は、第1学習制御手段の制御による学習が所定の条件以上進むと、第2評価関数の値を増加させるスケーリングを行う。上記のように、スケーリング部340は、学習の初期段階では、第2パラメータ値設定部120Bによる第2シミュレータ200Bのパラメータ値の設定よりも、第1パラメータ値設定部120Aによる第1シミュレータ200Aのパラメータ値の設定を優先させる。
【0223】
以上のように、第2学習制御部110Bは、第1シミュレータ200Aに、第2シミュレータ200Bへの入力値と同じ入力値が入力されたときの第1シミュレータ200Aの出力値と、基準出力値として用いられる第2シミュレータ200Bの出力値とに基づく第2評価関数を用いて、第1シミュレータ200Aの出力値と基準出力値との差異を増加させるように、第2パラメータ値設定部120Bによる第2シミュレータ200Bのパラメータ値の設定の学習を制御する。
第1学習制御部110Aは、第1シミュレータ200Aの出力値と基準出力値との差異を減少させるように、第1パラメータ値設定部120Aによる第1シミュレータ200Aのパラメータ値の設定の学習を制御する。
【0224】
これにより、第1強化学習部300Aは、第1パラメータ値設定部120Aが第1シミュレータ200Aのパラメータ値を適切に設定できないような制御入力値および基準出力値を用いて、第1パラメータ値設定部120Aによるパラメータ値の設定の学習を行うことができる。これにより、第1パラメータ値設定部120Aが、いろいろな制御入力値および基準出力値に対して、第1シミュレータ200Aのパラメータ値を適切に設定できるようになると期待される。
【0225】
スケーリング部340は、第1学習制御部110Aの制御による学習が所定の条件以上進むと、第2評価関数の値を増加させるスケーリングを行う。
学習の初期段階で、第2シミュレータ200Aの出力値が第1シミュレータ200Aの出力値と異なる状態が維持されると、第1強化学習部300Aの学習が進まないことが考えられる。そこで、スケーリング部340が、上記のスケーリングによって、学習の初期段階では第2パラメータ値設定部120Bによる第2シミュレータ200Bのパラメータ値の設定よりも、第1パラメータ値設定部120Aによる第1シミュレータ200Aのパラメータ値の設定を優先させる。これにより、第1シミュレータ200Aの出力値が第2シミュレータ200Aの出力値に近付くようになり、第1強化学習部300Aの学習が進むことが期待される。
【0226】
第2実施形態と第5実施形態とを組み合わせて実施するようにしてもよい。この場合、
図22の構成で、第1強化学習部300Aが、
図4の重み計算部310をさらに備え、第1学習制御部110Aに代えて
図4の学習制御部111を備えるようにしてもよい。
【0227】
第3実施形態と第5実施形態とを組み合わせて実施するようにしてもよい。この場合、
図22の構成で第1強化学習部300Aが、
図15の重み計算部311と、勾配ベクトル計算部320とをさらに備え、第1学習制御部110Aに代えて
図15の学習制御部112を備えるようにしてもよい。
【0228】
<第6実施形態>
図24は、第6実施形態に係るシミュレーションシステムの構成例を示す図である。
図24に示す構成で、シミュレーションシステム6は、設定装置105と、第1シミュレータ200Aと、第2シミュレータ200Bとを備える。設定装置105は、強化学習部300と、パラメータ値変更部330と、故障設定部350とを備える。強化学習部300は、学習制御部110と、パラメータ値設定部120とを備える。
図24の各部のうち、
図20の各部に対応して同様の機能を有する部分には、同一の符号(110、120、200A,200B、300、330)を付し、ここでは詳細な説明を省略する。
【0229】
シミュレーションシステム6では、設定装置105が、
図20の設定装置103の各部に加えて、さらに故障設定部350を備える点で、シミュレーションシステム4と異なる。
それ以外の点では、シミュレーションシステム6は、シミュレーションシステム4と同様である。
【0230】
故障設定部350は、第2シミュレータ200Bに、シミュレーションモデルにおけるセンサの故障を設定する。故障設定部350が、故障を設定する対象のセンサをランダムに選択するようしてもよい。故障設定部305が、第2シミュレータ200Bのシミュレーション実行中にセンサの故障の有無を切り替えるようにしてもよい。
これにより、強化学習部300は、模擬対象900のセンサが故障した場合でも、第1シミュレータ200Aが模擬対象900を高精度に模擬するように、パラメータ値設定部120によるパラメータ値の設定の学習を行うことができる。
故障設定部350は、故障設定手段の例に該当する。
【0231】
故障設定部350がセンサの故障を設定したときに、学習制御部110が、故障の設定が行われたセンサの出力値が評価関数の計算における参照の対象から除外された評価関数を用いるようにしてもよい。例えば、評価関数の計算式で、出力項目毎に係数を設けておくようにしてもよい。そして、学習制御部110が、故障の設定が行われたセンサに相当する出力項目の係数値を0に設定するようにしてもよい。
このように、習制御部110が、故障の設定が行われたセンサの出力値が評価関数の計算における参照の対象から除外することで、強化学習部300が学習を効率的に行えると期待される。
【0232】
図25は、シミュレーションシステム6の学習時におけるデータの入出力の例を示す図である。
図25の例で、パラメータ値変更部330は、第2シミュレータ200Bのパラメータ値を設定し変更する。
故障設定部350は、第2シミュレータ200Bに、シミュレーションモデルにおけるセンサの故障を設定する。
第2シミュレータ200Bは、制御入力値の入力を受け、パラメータ値変更部が設定し変更するパラメータ値、および、故障設定部350によるセンサの故障の設定に従って模擬対象900のシミュレーションを実行し、出力値を算出する。上記のように第2シミュレータ200Bの出力値は、基準出力値として用いられる。
【0233】
学習制御部110は、第1シミュレータ200Aの出力値と第2シミュレータ200Bの出力値との入力を受ける。学習制御部110は、第2シミュレータ200Bの出力値に対する第1シミュレータ200Aの出力値の誤差が小さいほど評価が高くなる評価関数を用いて評価値を算出する。例えば、学習制御部110が、出力項目毎に、第2シミュレータ200Bの出力値に対する第1シミュレータ200Aの出力値の誤差を算出し、出力項目毎の誤差を合計するようにしてもよい。
【0234】
学習制御部110は、評価値が示す評価が高くなるように、パラメータ値設定部120によるパラメータ値の設定の学習を制御する。これにより、学習制御部110は、第1シミュレータ200Aの出力値が第2シミュレータ200Bの出力値に近付くように、パラメータ値設定部120によるパラメータ値の設定の学習を制御する。
【0235】
パラメータ値設定部120は、制御入力値と、第1シミュレータ200Aの出力値と、第2シミュレータ200Bの出力値との入力を受ける。パラメータ値設定部120は、得られた各値を方策関数πに入力してパラメータ値を算出し、算出したパラメータ値を第1シミュレータ200Aに設定する。
第1シミュレータ200Aは、設定されたパラメータ値に基づいて模擬対象900のシミュレーションを実行し、制御入力値に対する出力値を算出する。
【0236】
以上のように、故障設定部350は、第2シミュレータ200Bに、シミュレーションモデルにおけるセンサの故障を設定する。
これにより、強化学習部300は、模擬対象900のセンサが故障した場合でも、第1シミュレータ200Aが模擬対象900を高精度に模擬するように、パラメータ値設定部120によるパラメータ値の設定の学習を行うことができる。
【0237】
また、学習制御部110は、故障の設定が行われたセンサの出力値が評価関数の計算における参照の対象から除外された評価関数を用いる。
このように、習制御部110が、故障の設定が行われたセンサの出力値が評価関数の計算における参照の対象から除外することで、強化学習部300が学習を効率的に行えると期待される。
【0238】
第2実施形態と第6実施形態とを組み合わせて実施するようにしてもよい。この場合、
図4の構成で、設定装置101が、さらに故障設定部350を備えるようにしてもよい。
【0239】
第3実施形態と第6実施形態とを組み合わせて実施するようにしてもよい。この場合、
図15の構成で、設定装置102が、さらに故障設定部350を備えるようにしてもよい。
【0240】
第5実施形態と第6実施形態とを組み合わせて実施するようにしてもよい。この場合、
図22の構成で、設定装置104が、さらに故障設定部350を備えるようにしてもよい。
【0241】
さらには、第2実施形態と第5実施形態と第6実施形態とを組み合わせて実施するようにしてもよい。第3実施形態と第5実施形態と第6実施形態とを組み合わせて実施するようにしてもよい。
【0242】
第1実施形態から第6実施形態の何れか、またはそれらの組み合わせにおいて、学習制御手段が、シミュレータによる模擬対象のシミュレーション上の時間で、パラメータ値設定手段がパラメータ値を設定する時間よりも未来の時間を含む時間におけるシミュレータの出力値に基づく評価関数を用いるようにしてもよい。
これにより、パラメータ値設定手段が、未来の時間においてシミュレータが制御対象を高精度に模擬するように、シミュレータのパラメータ値を設定することが期待される。
【0243】
第1実施形態では、学習制御部110がここでの学習制御手段の例に該当する。シミュレータ200が、ここでのシミュレータの例に該当する。パラメータ値設定部120が、ここでのパラメータ値設定手段の例に該当する。
第2実施形態では、学習制御部111がここでの学習制御手段の例に該当する。シミュレータ200が、ここでのシミュレータの例に該当する。パラメータ値設定部120が、ここでのパラメータ値設定手段の例に該当する。
【0244】
第3実施形態では、学習制御部112がここでの学習制御手段の例に該当する。シミュレータ200が、ここでのシミュレータの例に該当する。パラメータ値設定部120が、ここでのパラメータ値設定手段の例に該当する。
第4実施形態では、学習制御部110がここでの学習制御手段の例に該当する。第1シミュレータ200Aが、ここでのシミュレータの例に該当する。パラメータ値設定部120が、ここでのパラメータ値設定手段の例に該当する。
【0245】
第5実施形態では、第1学習制御部110Aがここでの学習制御手段の例に該当する。第1シミュレータ200Aが、ここでのシミュレータの例に該当する。第1パラメータ値設定部120Aが、ここでのパラメータ値設定手段の例に該当する。
第6実施形態では、学習制御部110がここでの学習制御手段の例に該当する。第1シミュレータ200Aが、ここでのシミュレータの例に該当する。パラメータ値設定部120が、ここでのパラメータ値設定手段の例に該当する。
【0246】
<第7実施形態>
図26は、第7実施形態に係る設定装置の構成例を示す図である。
図26に示す構成で、設定装置610は、パラメータ値設定部611と、重み計算部612と、学習制御部613とを備える。
パラメータ値設定部611は、模擬対象を模擬するシミュレータのパラメータ値を設定する。重み計算部612は、シミュレータの出力値と、シミュレータの出力値による模擬の対象となる基準出力値とに基づいて、出力項目毎の重みを計算する。学習制御部613は、シミュレータの出力値と基準出力値と重みとに基づく評価関数を用いて、パラメータ値設定部611によるシミュレータのパラメータ値の設定の学習を制御する。
パラメータ値設定部611は、パラメータ値設定手段の例に該当する。重み計算部612は、重み計算手段の例に該当する。学習制御部613は、学習制御手段の例に該当する。
【0247】
設定装置610によれば、センサの故障などにより基準出力値の正常可能性が低くなっている出力項目について、重みを小さく設定して評価値への影響を小さくすることができる。設定装置610によれば、この点で、模擬対象から複数項目の出力値を得られる場合に、シミュレータのパラメータ値の設定の学習を効果的に行えると期待される。
【0248】
パラメータ値設定部611は、例えば、
図4に示されるパラメータ値設定部120等の機能を用いて実現することができる。重み計算部612は、例えば、
図4に示される重み計算部310等の機能を用いて実現することができる。学習制御部613は、例えば、
図4に示される学習制御部111等の機能を用いて実現することができる。
【0249】
<第8実施形態>
図27は、第8実施形態に係る設定装置の構成例を示す図である。
図27に示す構成で、設定装置620は、パラメータ値設定部621と、学習制御部622とを備える。
パラメータ値設定部621は、模擬対象を模擬する第1シミュレータのパラメータ値を設定する。学習制御部622は、模擬対象を模擬する第2シミュレータの出力値と、第1シミュレータに、第2シミュレータへの入力値と同じ入力値が入力されたときの第1シミュレータの出力値とに基づく評価関数を用いて、パラメータ値設定部621による第1シミュレータのパラメータ値の設定の学習を制御する。
パラメータ値設定部621は、パラメータ値設定手段の例に該当する。学習制御部622は、学習制御手段の例に該当する。
【0250】
設定装置620によれば、第2シミュレータの出力値を用いて学習を行うことで、模擬対象の実機で得られるデータが少ない場合でも、パラメータ値設定部621によるパラメータ値の設定を学習することができる。
また、設定装置620によれば、第2シミュレータの出力値を用いて学習を行うことで、模擬対象の実機ではあまり発生しないような異常状態などの状態に対する対応を学習することができる。
【0251】
パラメータ値設定部621は、例えば、
図20に示されるパラメータ値設定部120等の機能を用いて実現することができる。学習制御部622は、例えば、
図20に示される学習制御部110等の機能を用いて実現することができる。
【0252】
<第9実施形態>
図28は、第9実施形態に係る設定方法における処理手順の例を示す図である。
図28に示す設定方法は、パラメータ値を設定すること(ステップS611)と、重みを計算すること(ステップS612)と、学習を制御すること(ステップS613)とを含む。
パラメータ値を設定すること(ステップS611)では、模擬対象を模擬するシミュレータのパラメータ値を設定する。重みを計算すること(ステップS612)では、シミュレータの出力値と、シミュレータの出力値による模擬の対象となる基準出力値とに基づいて、出力項目毎の重みを計算する。学習を制御すること(ステップS613)では、シミュレータの出力値と基準出力値と重みとに基づく評価関数を用いて、シミュレータのパラメータ値の設定の学習を制御する。
図28に示す設定方法によれば、センサの故障などにより基準出力値の正常可能性が低くなっている出力項目について、重みを小さく設定して評価値への影響を小さくすることができる。
図28に示す設定方法によれば、この点で、模擬対象から複数項目の出力値を得られる場合に、シミュレータのパラメータ値の設定の学習を効果的に行えると期待される。
【0253】
<第10実施形態>
図29は、第10実施形態に係る設定方法における処理手順の例を示す図である。
図29に示す設定方法は、パラメータ値を設定すること(ステップS621)と、学習を制御すること(ステップS622)とを含む。
パラメータ値を設定すること(ステップS621)では、模擬対象を模擬する第1シミュレータのパラメータ値を設定する。学習を制御すること(ステップS622)では、模擬対象を模擬する第2シミュレータの出力値と、第1シミュレータに、第2シミュレータへの入力値と同じ入力値が入力されたときの第1シミュレータの出力値とに基づく評価関数を用いて、第1シミュレータのパラメータ値の設定の学習を制御する。
【0254】
図29に示す設定方法によれば、第2シミュレータの出力値を用いて学習を行うことで、模擬対象の実機で得られるデータが少ない場合でも、パラメータ値の設定を学習することができる。
また、
図29に示す設定方法によれば、第2シミュレータの出力値を用いて学習を行うことで、模擬対象の実機ではあまり発生しないような異常状態などの状態に対する対応を学習することができる。
【0255】
図30は、少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
図30に示す構成で、コンピュータ700は、CPU710と、主記憶装置720と、補助記憶装置730と、インタフェース740と、不揮発性記録媒体750とを備える。
【0256】
上記の設定装置100、101、102、103、104、105、610、および、620のうち何れか1つ以上またはその一部が、コンピュータ700に実装されてもよい。その場合、上述した各処理部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。また、CPU710は、プログラムに従って、上述した各記憶部に対応する記憶領域を主記憶装置720に確保する。各装置と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。また、インタフェース740は、不揮発性記録媒体750用のポートを有し、不揮発性記録媒体750からの情報の読出、および、不揮発性記録媒体750への情報の書込を行う。
【0257】
設定装置100がコンピュータ700に実装される場合、学習制御部110およびパラメータ値設定部120の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0258】
また、CPU710は、プログラムに従って、設定装置100が行う処理のための記憶領域を主記憶装置720に確保する。
設定装置100と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
設定装置100とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0259】
設定装置101がコンピュータ700に実装される場合、学習制御部111、パラメータ値設定部120および重み計算部310の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0260】
また、CPU710は、プログラムに従って、設定装置101が行う処理のための記憶領域を主記憶装置720に確保する。
設定装置101と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
設定装置101とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0261】
設定装置102がコンピュータ700に実装される場合、学習制御部112、パラメータ値設定部120、重み計算部311および勾配ベクトル計算部320の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0262】
また、CPU710は、プログラムに従って、設定装置102が行う処理のための記憶領域を主記憶装置720に確保する。
設定装置102と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
設定装置102とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0263】
設定装置103がコンピュータ700に実装される場合、強化学習部300、パラメータ値変更部330およびその各部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0264】
また、CPU710は、プログラムに従って、設定装置103が行う処理のための記憶領域を主記憶装置720に確保する。
設定装置103と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
設定装置103とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0265】
設定装置104がコンピュータ700に実装される場合、第1強化学習部300A、第2強化学習部300Bおよびその各部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0266】
また、CPU710は、プログラムに従って、設定装置104が行う処理のための記憶領域を主記憶装置720に確保する。
設定装置104と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
設定装置104とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0267】
設定装置105がコンピュータ700に実装される場合、強化学習部300、パラメータ値変更部330、故障設定部350およびその各部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0268】
また、CPU710は、プログラムに従って、設定装置105が行う処理のための記憶領域を主記憶装置720に確保する。
設定装置105と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
設定装置105とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0269】
設定装置610がコンピュータ700に実装される場合、パラメータ値設定部611、重み計算部612および学習制御部613の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0270】
また、CPU710は、プログラムに従って、設定装置610が行う処理のための記憶領域を主記憶装置720に確保する。
設定装置610と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
設定装置610とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0271】
設定装置620がコンピュータ700に実装される場合、パラメータ値設定部621および学習制御部622の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0272】
また、CPU710は、プログラムに従って、設定装置620が行う処理のための記憶領域を主記憶装置720に確保する。
設定装置620と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って動作することで実行される。
設定装置620とユーザとのインタラクションは、インタフェース740が入力デバイスおよび出力デバイスを有し、CPU710の制御に従って出力デバイスにて情報をユーザに提示し、入力デバイスにてユーザ操作を受け付けることで実行される。
【0273】
上述したプログラムのうち何れか1つ以上が不揮発性記録媒体750に記録されていてもよい。この場合、インタフェース740が不揮発性記録媒体750からプログラムを読み出すようにしてもよい。そして、CPU710が、インタフェース740が読み出したプログラムを直接実行するか、あるいは、主記憶装置720または補助記憶装置730に一旦保存して実行するようにしてもよい。
【0274】
なお、設定装置100、101、102、103、104、105、610、および、620が行う処理の全部または一部を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、CD-ROM(Compact Disc Read Only Memory)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【0275】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【0276】
上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、以下には限定されない。
【0277】
(付記1)
模擬対象を模擬するシミュレータのパラメータ値を設定するパラメータ値設定手段と、
前記シミュレータの出力値と、前記シミュレータの出力値による模擬の対象となる基準出力値とに基づいて、出力項目毎の重みを計算する重み計算手段と、
前記シミュレータの出力値と前記基準出力値と前記重みとに基づく評価関数を用いて、前記パラメータ値設定手段による前記シミュレータのパラメータ値の設定の学習を制御する学習制御手段と、
を備える設定装置。
【0278】
(付記2)
前記重み計算手段は、前記出力項目毎の誤差を正規化した正規化後誤差が大きい出力項目ほど小さい重みになるように、前記出力項目毎の重みを計算する、
付記1に記載の設定装置。
【0279】
(付記3)
前記学習制御手段は、前記学習の単位毎に、前記シミュレータの出力値と前記基準出力値との重み付けされた誤差の前記出力項目全体での大きさを示す誤差指標値を計算し、1単位分の学習の実行後の前記誤差指標値が、その1単位分の学習の実行前の前記誤差指標値よりも、誤差が大きいことを示す場合、前記重みを、その1単位分の学習の実行前の重みに戻す、
付記2に記載の設定装置。
【0280】
(付記4)
前記シミュレータの出力値と前記基準出力値との誤差の、前記パラメータ値の空間における勾配を示す勾配ベクトルを、前記シミュレータの出力項目毎に計算する勾配ベクトル計算手段
をさらに備え、
前記重み計算手段は、前記勾配ベクトルと、前記勾配ベクトルを全ての前記出力項目について平均した平均勾配ベクトルとの差異が小さいほど重みが大きくなるように、前記出力項目毎の重みを計算する
付記1に記載の設定装置。
【0281】
(付記5)
前記勾配ベクトル計算手段は、前記パラメータ値をランダムに変化させた場合の前記誤差の変化量に基づいて、前記勾配ベクトルを計算する、
付記4に記載の設定装置。
【0282】
(付記6)
前記学習制御手段は、前記シミュレータによる前記模擬対象のシミュレーション上の時間で、前記パラメータ値設定手段が前記パラメータ値を設定する時間よりも未来の時間を含む時間における前記シミュレータの出力値に基づく前記評価関数を用いる、
付記1から5の何れか一つに記載の設定装置。
【0283】
(付記7)
前記基準出力値は、前記模擬対象を模擬する第2シミュレータの出力値であり、
前記学習制御手段は、前記パラメータ値設定手段が前記パラメータ値を設定する前記シミュレータである第1シミュレータに、前記第2シミュレータへの入力値と同じ入力値が入力されたときの前記第1シミュレータの出力値と、前記基準出力値と、前記重みとに基づく評価関数を用いて、前記パラメータ値設定手段による前記第1シミュレータのパラメータ値の設定の学習を制御する、
付記1から6の何れか一つに記載の設定装置。
【0284】
(付記8)
前記第2シミュレータのパラメータ値を変化させるパラメータ値変更手段
をさらに備え、
前記基準出力値は、前記パラメータ値変更手段が前記第2シミュレータのパラメータ値を変化させるときの前記第2シミュレータの出力値を含む、
付記7に記載の設定装置。
【0285】
(付記9)
前記第1シミュレータに、前記第2シミュレータへの入力値と同じ入力値が入力されたときの前記第1シミュレータの出力値と、前記基準出力値とに基づく第2評価関数を用いて、前記第1シミュレータの出力値と前記基準出力値との差異を増加させるように、前記パラメータ値変更手段による前記第2シミュレータのパラメータ値の設定の学習を制御する第2学習制御手段
をさらに備え、
前記第1シミュレータのパラメータ値の学習を制御する前記学習制御手段は、前記第1シミュレータの出力値と前記基準出力値との差異を減少させるように、前記パラメータ値設定手段による前記第1シミュレータのパラメータ値の設定の学習を制御する第1学習制御手段である、
付記8に記載の設定装置。
【0286】
(付記10)
前記第1学習制御手段の制御による学習が所定の条件以上進むと、前記第2評価関数の値を増加させるスケーリングを行うスケーリング手段
をさらに備える付記9に記載の設定装置。
【0287】
(付記11)
前記第2シミュレータに、シミュレーションモデルにおけるセンサの故障を設定する故障設定手段をさらに備える、
付記8から10の何れか一つに記載の設定装置。
【0288】
(付記12)
前記重み計算手段は、故障の設定が行われた前記センサの出力値に対する前記重みを、前記評価関数の計算対象からの除外を示す値に設定する、
付記11に記載の設定装置。
【0289】
(付記13)
模擬対象を模擬する第1シミュレータのパラメータ値を設定するパラメータ値設定手段と、
前記模擬対象を模擬する第2シミュレータの出力値と、前記第1シミュレータに、前記第2シミュレータへの入力値と同じ入力値が入力されたときの前記第1シミュレータの出力値とに基づく評価関数を用いて、前記パラメータ値設定手段による前記第1シミュレータのパラメータ値の設定の学習を制御する学習制御手段と、
を備える設定装置。
【0290】
(付記14)
前記第2シミュレータのパラメータ値を変化させるパラメータ値変更手段
をさらに備え、
前記第2シミュレータの出力値は、前記パラメータ値変更手段が前記第2シミュレータのパラメータ値を変化させるときの出力値を含む、
付記13に記載の設定装置。
【0291】
(付記15)
前記第1シミュレータに、前記第2シミュレータへの入力値と同じ入力値が入力されたときの前記第1シミュレータの出力値と、前記第2シミュレータの出力値とに基づく第2評価関数を用いて、前記第1シミュレータの出力値と前記第2シミュレータの出力値との差異を増加させるように、前記パラメータ値変更手段による前記第2シミュレータのパラメータ値の設定の学習を制御する第2学習制御手段
をさらに備え、
前記第1シミュレータのパラメータ値の学習を制御する前記学習制御手段は、前記第1シミュレータの出力値と前記第2シミュレータの出力値との差異を減少させるように、前記パラメータ値設定手段による前記第1シミュレータのパラメータ値の設定の学習を制御する第1学習制御手段である、
付記14に記載の設定装置。
【0292】
(付記16)
前記第1学習制御手段の制御による学習が所定の条件以上進むと、前記第2評価関数の値を増加させるスケーリングを行うスケーリング手段
をさらに備える付記15に記載の設定装置。
【0293】
(付記17)
前記第2シミュレータに、シミュレーションモデルにおけるセンサの故障を設定する故障設定手段をさらに備える、
付記14から16の何れか一つに記載の設定装置。
【0294】
(付記18)
前記学習制御手段は、故障の設定が行われた前記センサの出力値が前記評価関数の計算における参照の対象から除外された前記評価関数を用いる、
付記17に記載の設定装置。
【0295】
(付記19)
コンピュータが、
模擬対象を模擬するシミュレータのパラメータ値を設定し、
前記シミュレータの出力値と、前記シミュレータの出力値による模擬の対象となる基準出力値とに基づいて、出力項目毎の重みを計算し、
前記シミュレータの出力値と前記基準出力値と前記重みとに基づく評価関数を用いて、前記シミュレータのパラメータ値の設定の学習を制御する、
設定方法。
【0296】
(付記20)
コンピュータが、
模擬対象を模擬する第1シミュレータのパラメータ値を設定し、
前記模擬対象を模擬する第2シミュレータの出力値と、前記第1シミュレータに、前記第2シミュレータへの入力値と同じ入力値が入力されたときの前記第1シミュレータの出力値とに基づく評価関数を用いて、前記第1シミュレータのパラメータ値の設定の学習を制御する、
設定方法。
【0297】
(付記21)
コンピュータに、
模擬対象を模擬するシミュレータのパラメータ値を設定することと、
前記シミュレータの出力値と、前記シミュレータの出力値による模擬の対象となる基準出力値とに基づいて、出力項目毎の重みを計算することと、
前記シミュレータの出力値と前記基準出力値と前記重みとに基づく評価関数を用いて、前記シミュレータのパラメータ値の設定の学習を制御することと、
を実行させるためのプログラムを記録する記録媒体。
【0298】
(付記22)
コンピュータに、
模擬対象を模擬する第1シミュレータのパラメータ値を設定することと、
前記模擬対象を模擬する第2シミュレータの出力値と、前記第1シミュレータに、前記第2シミュレータへの入力値と同じ入力値が入力されたときの前記第1シミュレータの出力値とに基づく評価関数を用いて、前記第1シミュレータのパラメータ値の設定の学習を制御することと、
を実行させるためのプログラムを記録する記録媒体。
【産業上の利用可能性】
【0299】
本発明の実施形態は、設定装置、設定方法および記録媒体に適用してもよい。
【符号の説明】
【0300】
1、2、3、4、5、6 シミュレーションシステム
100、101、102、103、104、105、610、620 設定装置
110、111、112、613、622 学習制御部
110A 第1学習制御部
110B 第2学習制御部
120,611,621 パラメータ値設定部
120A 第1パラメータ値設定部
120B 第2パラメータ値設定部
130 重み設定部
200 シミュレータ
200A 第1シミュレータ
200B 第2シミュレータ
300 強化学習部
300A 第1強化学習部
300B 第2強化学習部
310、311、612 重み計算部
320 勾配ベクトル計算部
330 パラメータ値変更部
340 スケーリング部
350 故障設定部
900 模擬対象