IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7568931情報処理プログラム、情報処理方法、および情報処理装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-08
(45)【発行日】2024-10-17
(54)【発明の名称】情報処理プログラム、情報処理方法、および情報処理装置
(51)【国際特許分類】
   G06N 20/00 20190101AFI20241009BHJP
【FI】
G06N20/00
【請求項の数】 12
(21)【出願番号】P 2021048080
(22)【出願日】2021-03-23
(65)【公開番号】P2022147008
(43)【公開日】2022-10-06
【審査請求日】2023-12-07
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】山▲崎▼ 崇史
(72)【発明者】
【氏名】大石 裕介
【審査官】佐藤 直樹
(56)【参考文献】
【文献】特開平05-081310(JP,A)
【文献】特開2019-191781(JP,A)
【文献】米国特許出願公開第2016/0202389(US,A1)
【文献】塙 与志夫 他,大規模疎行列係数連立一次方程式に対する前処理つき共役勾配法の並列化,情報処理学会研究報告ハイパフォーマンスコンピューティング(HPC),1999年08月03日,66(1999-HPC-077),113-118頁
(58)【調査した分野】(Int.Cl.,DB名)
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
所定の行列方程式を形成する行列を取得し、
取得した前記行列に含まれる複数の要素のそれぞれの要素の属性に基づいて、取得した前記行列を、それぞれ同一の属性の要素を含む複数のブロックに分割し、
分割した前記複数のブロックのそれぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更し、
前記それぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更した後の前記行列を、行列演算を行う機械学習モデルへの入力の対象に設定する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項2】
前記取得する処理は、前記所定の行列方程式の係数を示す第1の行列と、前記第1の行列と前記所定の行列方程式の解を示す第2の行列との積を示す第3の行列とのそれぞれの行列を取得する、ことを特徴とする請求項1に記載の情報処理プログラム。
【請求項3】
前記取得する処理は、前記所定の行列方程式の解を示す第2の行列を取得する、ことを特徴とする請求項1または2に記載の情報処理プログラム。
【請求項4】
取得した前記行列について、当該行列に含まれる複数の要素のそれぞれの要素を形成する基数を示す第4の行列と、当該行列に含まれる複数の要素のそれぞれの要素を形成する指数を示す第5の行列とを特定する、処理を前記コンピュータに実行させ、
前記設定する処理は、取得した前記行列について、特定した前記第4の行列と、特定した前記第5の行列とを、前記機械学習モデルへの入力の対象に設定する、ことを特徴とする請求項1~3のいずれか一つに記載の情報処理プログラム。
【請求項5】
前記所定の行列方程式は、反復解法により解く対象となる行列方程式であり、
前記設定する処理は、前記所定の行列方程式を反復解法により解く前に、前記コンピュータに実行され、
設定された前記入力の対象を前記機械学習モデルに入力したことに応じて、前記機械学習モデルから出力された前記所定の行列方程式の解を示す第2の行列を、前記所定の行列方程式を反復解法により解く際に用いられる初期値に設定する、
処理を前記コンピュータに実行させることを特徴とする請求項1~4のいずれか一つに記載の情報処理プログラム。
【請求項6】
前記所定の行列方程式は、反復解法により解く対象となる行列方程式であり、
前記設定する処理は、前記所定の行列方程式を反復解法により解いた後に、前記コンピュータに実行され、
設定された前記入力の対象に基づいて、前記機械学習モデルを更新する、
処理を前記コンピュータに実行させることを特徴とする請求項1~4のいずれか一つに記載の情報処理プログラム。
【請求項7】
前記取得する処理は、それぞれ同種の異なる行列方程式を反復解法により解く複数のシミュレーションが実行される場合、当該シミュレーションが実行される都度、当該シミュレーションが実行される際に反復解法により解く対象となる行列方程式を形成する行列を取得する、ことを特徴とする請求項5または6に記載の情報処理プログラム。
【請求項8】
前記所定の行列方程式は、反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式であり、
前記設定する処理は、反復解法において、前記前処理を実施する前に、前記コンピュータに実行され、
設定された前記入力の対象を前記機械学習モデルに入力したことに応じて、前記機械学習モデルから出力された前記所定の行列方程式の解を示す第2の行列に基づいて、前記前処理を実施する、
処理を前記コンピュータに実行させることを特徴とする請求項1~4のいずれか一つに記載の情報処理プログラム。
【請求項9】
前記所定の行列方程式は、反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式であり、
前記設定する処理は、反復解法において、前記前処理を実施した後に、前記コンピュータに実行され、
設定された前記入力の対象に基づいて、前記機械学習モデルを更新する、
処理を前記コンピュータに実行させることを特徴とする請求項1~4のいずれか一つに記載の情報処理プログラム。
【請求項10】
前記取得する処理は、それぞれ同種の異なる行列方程式を反復解法により解く複数のシミュレーションが実行される場合、当該シミュレーションが実行される都度、当該シミュレーションが実行される際に反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式を形成する行列を取得する、ことを特徴とする請求項8または9に記載の情報処理プログラム。
【請求項11】
所定の行列方程式を形成する行列を取得し、
取得した前記行列に含まれる複数の要素のそれぞれの要素の属性に基づいて、取得した前記行列を、それぞれ同一の属性の要素を含む複数のブロックに分割し、
分割した前記複数のブロックのそれぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更し、
前記それぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更した後の前記行列を、行列演算を行う機械学習モデルへの入力の対象に設定する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項12】
所定の行列方程式を形成する行列を取得し、
取得した前記行列に含まれる複数の要素のそれぞれの要素の属性に基づいて、取得した前記行列を、それぞれ同一の属性の要素を含む複数のブロックに分割し、
分割した前記複数のブロックのそれぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更し、
前記それぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更した後の前記行列を、行列演算を行う機械学習モデルへの入力の対象に設定する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理方法、および情報処理装置に関する。
【背景技術】
【0002】
従来、行列方程式を解くにあたり機械学習(Machine Learning)が利用されることがある。例えば、xに対する行列方程式Ax=bを解くにあたり、入力されたAとbとに対応するxの予測値を出力する機械学習モデルが、機械学習により生成され、利用されることがある。Aは、n×n次元の行列である。b、xは、n×1次元の行列である。
【0003】
先行技術としては、例えば、CNNs(Convolutional Neural Networks)と呼ばれるニューラルネットワークを、定常流シミュレーションにおける流れ場のパターンを解くにあたり利用するものがある。
【先行技術文献】
【非特許文献】
【0004】
【文献】Guo, Xiaoxiao, Wei Li, and Francesco Iorio. “Convolutional neural networks for steady flow approximation.” Proceedings of the 22nd ACM SIGKDD international conference on knowledge discovery and data mining. 2016.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、機械学習モデルの求解精度が悪い場合がある。例えば、行列方程式を形成するn×n次元の行列Aに、それぞれオーダが異なる複数の要素が含まれると、求解精度がよい機械学習モデルを生成することが難しくなる傾向がある。
【0006】
1つの側面では、本発明は、機械学習モデルの求解精度を向上することを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、所定の行列方程式を形成する行列を取得し、取得した前記行列に含まれる複数の要素のそれぞれの要素の属性に基づいて、取得した前記行列を、それぞれ同一の属性の要素を含む複数のブロックに分割し、分割した前記複数のブロックのそれぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更し、前記それぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更した後の前記行列を、行列演算を行う機械学習モデルへの入力の対象に設定する情報処理プログラム、情報処理方法、および情報処理装置が提案される。
【発明の効果】
【0008】
一態様によれば、機械学習モデルの求解精度を向上することが可能になる。
【図面の簡単な説明】
【0009】
図1図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。
図2図2は、情報処理システム200の一例を示す説明図である。
図3図3は、情報処理装置100のハードウェア構成例を示すブロック図である。
図4図4は、情報処理装置100の機能的構成例を示すブロック図である。
図5図5は、情報処理装置100の第1の動作例を示す説明図(その1)である。
図6図6は、情報処理装置100の第1の動作例を示す説明図(その2)である。
図7図7は、情報処理装置100の第1の動作例を示す説明図(その3)である。
図8図8は、情報処理装置100の第1の動作例を示す説明図(その4)である。
図9図9は、情報処理装置100の第1の動作例を示す説明図(その5)である。
図10図10は、情報処理装置100の第1の動作例を示す説明図(その6)である。
図11図11は、情報処理装置100の第1の動作例を示す説明図(その7)である。
図12図12は、情報処理装置100の適用例を示す説明図である。
図13図13は、動作例1における全体処理手順の一例を示すフローチャートである。
図14図14は、動作例1における求解処理手順の一例を示すフローチャートである。
図15図15は、情報処理装置100の第2の動作例を示す説明図(その1)である。
図16図16は、情報処理装置100の第2の動作例を示す説明図(その2)である。
図17図17は、情報処理装置100の第2の動作例を示す説明図(その3)である。
図18図18は、情報処理装置100の第2の動作例を示す説明図(その4)である。
図19図19は、動作例2における求解処理手順の一例を示すフローチャートである。
図20図20は、機械学習モデルへの入力の対象を設定する具体例を示す説明図(その1)である。
図21図21は、機械学習モデルへの入力の対象を設定する具体例を示す説明図(その2)である。
図22図22は、機械学習モデルへの入力の対象を設定する具体例を示す説明図(その3)である。
図23図23は、機械学習モデルへの入力の対象を設定する具体例を示す説明図(その4)である。
図24図24は、機械学習モデルへの入力の対象を設定する具体例を示す説明図(その5)である。
図25図25は、設定処理手順の第1の例を示すフローチャートである。
図26図26は、設定処理手順の第2の例を示すフローチャートである。
図27図27は、設定処理手順の第3の例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に、図面を参照して、本発明にかかる情報処理プログラム、情報処理方法、および情報処理装置の実施の形態を詳細に説明する。
【0011】
(実施の形態にかかる情報処理方法の一実施例)
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。情報処理装置100は、機械学習モデルの求解精度を向上するためのコンピュータである。情報処理装置100は、例えば、サーバ、PC(Personal Computer)などである。
【0012】
ここで、行列方程式を解くにあたり、機械学習モデルが機械学習により生成され、利用されることがある。機械学習モデルは、例えば、数値シミュレーションにおいて行列方程式を解くにあたり生成され、利用されることがある。
【0013】
具体的には、多くの数値シミュレーションでは、求解対象である非線形偏微分方程式を離散化し、更に線形化し、行列方程式を生成した後、行列方程式ソルバを用いて、行列方程式を解くことになる。行列方程式ソルバとしては、特に大規模な問題では、反復解法が用いられることが多い。この反復解法を加速するため、数値シミュレーションに、機械学習モデルが利用されることがある。線形化は、例えば、NR(Newton Raphson)法などにより実現される。反復解法は、例えば、GS(Gauss Seidel)法およびSOR(Successive Over Relaxation)法のような静的な手法が考えられる。また、反復解法は、例えば、CG(Conjugate Gradient)法およびGMRES(Generalized Minimal RESidual)法のような動的な手法が考えられる。反復解法は、例えば、初期値から行列方程式の解を収束させていくステップを繰り返す手法である。
【0014】
しかしながら、従来法では、機械学習モデルの求解精度が悪くなる場合がある。例えば、行列方程式を形成する行列に、それぞれ属性が異なる複数の要素が含まれると、求解精度がよい機械学習モデルを生成することが難しくなる。行列方程式を形成する行列は、例えば、係数を示す係数行列と、右辺を示す右辺行列と、解を示す解行列とである。
【0015】
具体的には、行列方程式を形成する行列に、それぞれオーダが異なる複数の要素が含まれると、求解精度がよい機械学習モデルを生成することが難しくなる。また、具体的には、行列方程式を形成する行列に含まれる、それぞれオーダが異なる複数の要素のそれぞれの要素の変化の大きさが異なるため、求解精度がよい機械学習モデルを生成することが難しくなる。
【0016】
また、具体的には、反復解法のステップごとに、行列方程式を形成する行列に含まれるそれぞれの要素の変化の大きさが異なるため、求解精度がよい機械学習モデルを生成することが難しい。また、具体的には、時間変化に沿って所定の対象を表す行列方程式を解く数値シミュレーションを繰り返す場合がある。この場合、数値シミュレーションごとに、行列方程式を形成する行列に含まれるそれぞれの要素の変化の大きさが異なるため、求解精度がよい機械学習モデルを生成することが難しい。
【0017】
これに対し、平均値を揃えるためなどに用いられるデータをシフトする手法を、行列方程式を形成する行列に適用することが考えられるが、行列方程式の意味が変わってしまうため、求解精度がよい機械学習モデルを生成することが難しい。また、分散を揃えるためなどに用いられる定数をデータ全体に乗算する手法を、行列方程式を形成する行列に適用することが考えられるが、行列方程式を形成する行列のうち、相対的に小さい要素が軽視されやすくなる。
【0018】
そこで、本実施の形態では、行列に含まれる要素間のスケールを合わせることができ、機械学習モデルの求解精度を向上することができる情報処理方法について説明する。
【0019】
図1において、(1-1)情報処理装置100は、所定の行列方程式101を形成する行列を取得する。情報処理装置100は、例えば、所定の行列方程式101の係数を示す第1の行列と、第1の行列と所定の行列方程式101の解を示す第2の行列との積を示す第3の行列とのそれぞれの行列を取得する。第1の行列は、例えば、係数行列Aである。第2の行列は、例えば、解ベクトルxである。第3の行列は、例えば、右辺ベクトルbである。図1の例では、情報処理装置100は、所定の行列方程式101を形成する、係数行列Aと、右辺ベクトルbとを取得する。
【0020】
(1-2)情報処理装置100は、取得した行列に含まれる複数の要素のそれぞれの要素の属性に基づいて、取得した行列を、それぞれ同一の属性の要素を含む複数のブロックに並び替え、分割する。属性は、例えば、要素が、どのような物理量であるかを示す情報である。属性は、要素のオーダの大きさであってもよい。図1の例では、情報処理装置100は、係数行列Aを、ブロックA1とブロックA2とに分割し、右辺ベクトルbを、ブロックb1とブロックb2とに分割する。
【0021】
(1-3)情報処理装置100は、分割した複数のブロックのそれぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更する。情報処理装置100は、例えば、分割した複数のブロックのそれぞれのブロックに含まれる少なくともいずれかの要素の大きさに基づいて、当該ブロックに含まれる複数の要素のそれぞれの要素のスケールを変更する。
【0022】
図1の例では、情報処理装置100は、ブロックA1とブロックb1とに含まれる少なくともいずれかの要素の大きさに基づいて、スケーリング係数αを設定する。情報処理装置100は、設定されたスケーリング係数αを、ブロックA1とブロックb1とに乗算することにより、ブロックA1とブロックb1とのスケールを変更する。
【0023】
また、情報処理装置100は、ブロックA2とブロックb2とに含まれる少なくともいずれかの要素の大きさに基づいて、スケーリング係数βを設定する。情報処理装置100は、設定されたスケーリング係数βを、ブロックA2とブロックb2とに乗算することにより、ブロックA2とブロックb2とのスケールを変更する。
【0024】
(1-4)情報処理装置100は、それぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更した後の行列を、行列演算を行う機械学習モデル102の入力の対象に設定する。入力の対象は、例えば、機械学習モデル102を更新する場合に、機械学習モデル102に入力される行列である。
【0025】
これにより、情報処理装置100は、機械学習モデル102を学習する際に、機械学習モデル102に入力される行列における、要素間のスケールを合わせることができるため、求解精度が比較的よい機械学習モデル102を学習することができる。
【0026】
ここでは、入力の対象が、機械学習モデル102を更新する場合に、機械学習モデル102に入力される行列である場合について説明したが、これに限らない。例えば、入力の対象が、機械学習モデル102を利用して、所定の行列方程式101を解くことにより、所定の行列方程式101を形成する解ベクトルxを求める場合に、機械学習モデル102に入力される行列である場合があってもよい。
【0027】
これにより、情報処理装置100は、解ベクトルxを求める際に、機械学習モデル102に入力される行列における、要素間のスケールを合わせることができるため、機械学習モデル102の求解精度を向上することができる。
【0028】
ここでは、情報処理装置100が、第1の行列と、第3の行列とのそれぞれの行列を取得する場合について説明したが、これに限らない。例えば、情報処理装置100が、第2の行列を取得する場合があってもよい。具体的には、情報処理装置100が、解ベクトルxを取得する場合があってもよい。
【0029】
(情報処理システム200の一例)
次に、図2を用いて、図1に示した情報処理装置100を適用した、情報処理システム200の一例について説明する。
【0030】
図2は、情報処理システム200の一例を示す説明図である。図2において、情報処理システム200は、情報処理装置100と、クライアント装置201とを含む。
【0031】
情報処理システム200において、情報処理装置100とクライアント装置201とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
【0032】
情報処理装置100は、例えば、行列方程式を解くことの要求を、クライアント装置201から受信する。情報処理装置100は、例えば、要求に応じて、行列方程式の解を算出し、クライアント装置201に送信する。情報処理装置100は、具体的には、数値シミュレーションを開始することの要求を、クライアント装置201から受信する。情報処理装置100は、具体的には、要求に応じて、数値シミュレーションを実行し、数値シミュレーションにより行列方程式の解を算出し、クライアント装置201に送信する。
【0033】
情報処理装置100は、より具体的には、数値シミュレーションの際、反復解法のいずれかのステップにおいて、数値解析的に行列方程式の一時的な解を算出し、算出した一時的な解を用いて、行列方程式を解く機械学習モデルを更新する。また、情報処理装置100は、より具体的には、数値シミュレーションの際、反復解法のいずれかのステップにおいて、機械学習モデルを利用して、行列方程式の一時的な解を算出する。そして、情報処理装置100は、より具体的には、数値シミュレーションにより算出された、行列方程式の最終的な解を、クライアント装置201に送信する。情報処理装置100は、例えば、サーバ、PCなどである。
【0034】
クライアント装置201は、例えば、行列方程式を解くことの要求を、情報処理装置100に送信するコンピュータである。クライアント装置201は、例えば、行列方程式の解を、情報処理装置100から受信して出力する。クライアント装置201は、具体的には、数値シミュレーションを開始することの要求を、情報処理装置100に送信する。クライアント装置201は、具体的には、数値シミュレーションにより算出された行列方程式の解を、情報処理装置100から受信して出力する。クライアント装置201は、例えば、PC、タブレット端末、スマートフォンなどである。
【0035】
ここでは、情報処理装置100が、単独で、機械学習モデルを生成する処理と、機械学習モデルを利用する処理とを実行する場合について説明したが、これに限らない。例えば、情報処理装置100が、複数存在し、それぞれの情報処理装置100が、機械学習モデルを生成する処理と、機械学習モデルを利用する処理とを分担する場合があってもよい。
【0036】
(情報処理装置100のハードウェア構成例)
次に、図3を用いて、情報処理装置100のハードウェア構成例について説明する。
【0037】
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。図3において、情報処理装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
【0038】
ここで、CPU301は、情報処理装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
【0039】
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
【0040】
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、情報処理装置100から着脱可能であってもよい。
【0041】
情報処理装置100は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
【0042】
(クライアント装置201のハードウェア構成例)
クライアント装置201のハードウェア構成例は、例えば、図3に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0043】
(情報処理装置100の機能的構成例)
次に、図4を用いて、情報処理装置100の機能的構成例について説明する。
【0044】
図4は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、記憶部400と、取得部401と、分割部402と、変更部403と、設定部404と、生成部405と、求解部406と、出力部407とを含む。
【0045】
記憶部400は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部400が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部400が、情報処理装置100とは異なる装置に含まれ、記憶部400の記憶内容が情報処理装置100から参照可能である場合があってもよい。
【0046】
取得部401~出力部407は、制御部の一例として機能する。取得部401~出力部407は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
【0047】
記憶部400は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部400は、行列演算を行う機械学習モデルを記憶する。機械学習モデルは、例えば、ニューラルネットワークである。機械学習モデルは、例えば、生成部405によって更新される。記憶部400は、例えば、機械学習モデルのパラメータを記憶する。
【0048】
記憶部400は、機械学習モデルへの入力の対象となる、行列方程式を形成する行列を記憶する。入力の対象は、例えば、機械学習モデルを更新する場合に、機械学習モデルに入力される行列であり、機械学習モデルの学習データセットに含まれる。入力の対象は、例えば、機械学習モデルを利用して、行列方程式を解くことにより、行列方程式の解を求める場合に、機械学習モデルに入力される行列であってもよい。
【0049】
行列は、例えば、行列方程式の係数を示す第1の行列と、行列方程式の解を示す第2の行列と、第1の行列と第2の行列との積を示す第3の行列との少なくともいずれかの行列である。第1の行列は、例えば、係数行列Aである。第2の行列は、例えば、解ベクトルxである。第3の行列は、例えば、右辺ベクトルbである。
【0050】
取得部401は、各機能部の処理に用いられる各種情報を取得する。取得部401は、取得した各種情報を、記憶部400に記憶し、または、各機能部に出力する。また、取得部401は、記憶部400に記憶しておいた各種情報を、各機能部に出力してもよい。取得部401は、例えば、利用者の操作入力に基づき、各種情報を取得する。取得部401は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
【0051】
取得部401は、例えば、所定の行列方程式を形成する行列を取得する。行列は、例えば、所定の行列方程式の係数を示す第1の行列と、所定の行列方程式の解を示す第2の行列と、第1の行列と第2の行列との積を示す第3の行列との少なくともいずれかの行列である。第1の行列は、例えば、係数行列Aである。第2の行列は、例えば、解ベクトルxである。第3の行列は、例えば、右辺ベクトルbである。
【0052】
所定の行列方程式は、例えば、反復解法により解く対象となる行列方程式である。所定の行列方程式は、例えば、反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式であってもよい。取得部401は、例えば、機械学習モデルを利用して、所定の行列方程式の解を求めるために、所定の行列方程式を形成する行列を取得する。取得部401は、例えば、機械学習モデルを更新するために用いられる所定の行列方程式を形成する行列を取得する。
【0053】
取得部401は、具体的には、所定の行列方程式の係数を示す第1の行列を取得する。取得部401は、具体的には、所定の行列方程式の係数を示す第1の行列と、所定の行列方程式の解を示す第2の行列との積を示す第3の行列を取得する。取得部401は、より具体的には、係数行列Aと、右辺ベクトルbとを取得する。取得部401は、具体的には、所定の行列方程式の解を示す第2の行列を取得してもよい。取得部401は、より具体的には、解ベクトルxを取得する。
【0054】
ここで、例えば、それぞれ同種の異なる行列方程式を反復解法により解く複数のシミュレーションが実行される場合が考えられる。この場合、取得部401は、例えば、シミュレーションが実行される都度、当該シミュレーションが実行される際に反復解法により解く対象となる行列方程式を形成する行列を取得してもよい。取得部401は、例えば、当該シミュレーションが実行される都度、当該シミュレーションが実行される際に反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式を形成する行列を取得してもよい。
【0055】
取得部401は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。取得部401は、例えば、行列を取得したことを、分割部402~求解部406の処理を開始する開始トリガーとして受け付けてもよい。
【0056】
分割部402は、取得した行列に含まれる複数の要素のそれぞれの要素の属性に基づいて、取得した行列を、それぞれ同一の属性の要素を含む複数のブロックに分割する。属性は、例えば、要素が、どのような物理量であるかを示す情報である。属性は、要素のオーダの大きさであってもよい。分割部402は、例えば、係数行列Aを、ブロックA1とブロックA2とに分割し、右辺ベクトルbを、ブロックb1とブロックb2とに分割する。分割部402は、例えば、解行列xを、ブロックx1とブロックx2とに分割してもよい。これにより、分割部402は、取得した行列のうち、性質の異なる部分を特定することができる。
【0057】
ここで、取得した行列が、第1の行列と、第3の行列とである場合がある。この場合、分割部402は、取得した行列について、当該行列に含まれる複数の要素を浮動小数点数で表現した場合のそれぞれの要素を形成する基数を示す第4の行列と、同じく当該行列に含まれる複数の要素を浮動小数点数で表現した場合のそれぞれの要素を形成する指数を示す第5の行列とを特定してもよい。これにより、分割部402は、取得した行列に相当する、要素間のスケールを合わせた、第4の行列と第5の行列とを特定することができる。
【0058】
変更部403は、分割した複数のブロックのそれぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更する。変更部403は、例えば、分割した複数のブロックのそれぞれのブロックに含まれる少なくともいずれかの要素の大きさに基づいて、当該ブロックに含まれる複数の要素のそれぞれの要素のスケールを変更する。
【0059】
ここで、取得した行列が、第1の行列と、第3の行列とである場合がある。この場合、変更部403は、具体的には、それぞれのブロックにおいて、絶対値が最大となるいずれかの要素の逆数に、所定値を乗算して得られるスケーリング係数を算出する。この所定値は、学習の収束によって一律に変更することができる。そして、変更部403は、具体的には、それぞれのブロックについて算出されたスケーリング係数を、当該ブロックに含まれる複数の要素のそれぞれの要素に乗算することにより、当該ブロックに含まれる複数の要素のそれぞれの要素のスケールを変更する。
【0060】
変更部403は、より具体的には、ブロックA1とブロックb1とに含まれる少なくともいずれかの要素の大きさに基づいて、スケーリング係数αを設定する。そして、変更部403は、より具体的には、設定されたスケーリング係数αを、ブロックA1とブロックb1とに乗算することにより、ブロックA1とブロックb1とのスケールを変更する。また、変更部403は、より具体的には、ブロックA2とブロックb2とに含まれる少なくともいずれかの要素の大きさに基づいて、スケーリング係数βを設定する。そして、変更部403は、より具体的には、設定されたスケーリング係数βを、ブロックA2とブロックb2とに乗算することにより、ブロックA2とブロックb2とのスケールを変更する。これにより、変更部403は、取得した行列に含まれる要素間のスケールを合わせることができる。
【0061】
ここで、取得した行列が、第2の行列である場合がある。この場合、変更部403は、具体的には、それぞれのブロックについて設定された所定の関数に基づいて、当該ブロックに含まれる複数の要素のそれぞれの要素を変換することにより、当該ブロックに含まれる複数の要素のそれぞれの要素のスケールを変更する。所定の関数は、例えば、予め利用者によって設定される。
【0062】
変更部403は、より具体的には、ブロックx1について設定された所定の関数に基づいて、ブロックx1に含まれる複数の要素のそれぞれの要素を変換することにより、ブロックx1のスケールを変更する。また、変更部403は、より具体的には、ブロックx2について設定された所定の関数に基づいて、ブロックx2に含まれる複数の要素のそれぞれの要素を変換することにより、ブロックx2のスケールを変更する。これにより、変更部403は、取得した行列に含まれる要素間のスケールを合わせることができる。
【0063】
設定部404は、それぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更した後の行列を、機械学習モデルへの入力の対象に設定する。ここで、例えば、取得部401が、所定の行列方程式の解を求めるために、行列を取得していた場合が考えられる。この場合、設定部404は、例えば、それぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更した後の行列を、所定の行列方程式の解を求めるための、機械学習モデルへの入力の対象に設定する。これにより、設定部404は、所定の行列方程式の解を算出可能にすることができる。
【0064】
また、例えば、取得部401が、機械学習モデルを更新するために、行列を取得していた場合が考えられる。この場合、設定部404は、例えば、それぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更した後の行列を、機械学習モデルを更新するための、機械学習モデルへの入力の対象に設定する。これにより、設定部404は、機械学習モデルを更新可能にすることができる。
【0065】
設定部404は、取得した行列について、特定した第4の行列と、特定した第5の行列とを、機械学習モデルへの入力の対象に設定してもよい。ここで、例えば、取得部401が、所定の行列方程式の解を求めるために、行列を取得していた場合が考えられる。この場合、設定部404は、例えば、取得した行列について、特定した第4の行列と、特定した第5の行列とを、所定の行列方程式の解を求めるための、機械学習モデルへの入力の対象に設定する。これにより、設定部404は、所定の行列方程式の解を算出可能にすることができる。
【0066】
また、例えば、取得部401が、機械学習モデルを更新するために、行列を取得していた場合が考えられる。この場合、設定部404は、例えば、取得した行列について、特定した第4の行列と、特定した第5の行列とを、機械学習モデルを更新するための、機械学習モデルへの入力の対象に設定する。これにより、設定部404は、機械学習モデルを更新可能にすることができる。
【0067】
設定部404は、所定の行列方程式が、反復解法により解く対象となる行列方程式である場合に、所定の行列方程式が反復解法により解かれる前に、入力の対象を設定してもよい。これにより、設定部404は、反復解法の初期値として、所定の行列方程式の解を算出可能にすることができる。
【0068】
設定部404は、所定の行列方程式が、反復解法により解く対象となる行列方程式である場合に、所定の行列方程式が反復解法により解かれた後に、入力の対象を設定してもよい。これにより、設定部404は、実際に所定の行列方程式を反復解法により解いた結果に基づいて、機械学習モデルを更新可能にすることができる。
【0069】
設定部404は、所定の行列方程式が、反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式である場合、反復解法において、前処理が実施される前に、入力の対象を設定してもよい。これにより、設定部404は、前処理において、所定の行列方程式の解を算出可能にすることができる。
【0070】
設定部404は、所定の行列方程式が、反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式である場合、反復解法において、前処理が実施された後に、入力の対象を設定してもよい。これにより、設定部404は、実際に前処理において、所定の行列方程式を解いた結果に基づいて、機械学習モデルを更新可能にすることができる。
【0071】
生成部405は、機械学習モデルを更新する。ここで、例えば、所定の行列方程式が、反復解法により解く対象となる行列方程式である場合が考えられる。この場合、生成部405は、例えば、所定の行列方程式が反復解法により解かれた後に、設定された入力の対象に基づいて、機械学習モデルを更新する。生成部405は、具体的には、誤差逆伝搬などの手法を用いて、設定された入力の対象に基づいて、機械学習モデルを更新する。これにより、生成部405は、求解精度が比較的よい機械学習モデルを得ることができる。
【0072】
また、例えば、所定の行列方程式が、反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式である場合が考えられる。この場合、生成部405は、例えば、反復解法において、前処理が実施された後に、設定された入力の対象に基づいて、機械学習モデルを更新する。生成部405は、具体的には、誤差逆伝搬などの手法を用いて、設定された入力の対象に基づいて、機械学習モデルを更新する。これにより、生成部405は、求解精度が比較的よい機械学習モデルを得ることができる。
【0073】
生成部405は、例えば、機械学習モデルの求解精度を確認してもよい。求解精度は、例えば、機械学習モデルの残差の小ささによって表現される。生成部405は、例えば、機械学習モデルの求解精度が閾値未満であると判定した場合に、設定された入力の対象に基づいて、機械学習モデルを更新してもよい。生成部405は、具体的には、機械学習モデルの残差が閾値以上である場合に、機械学習モデルの求解精度が閾値未満であると判定し、設定された入力の対象に基づいて、機械学習モデルを更新してもよい。
【0074】
また、生成部405は、例えば、機械学習モデルの求解精度が閾値以上であると判定した場合に、設定された入力の対象に基づいて、機械学習モデルを更新せずに済ませてもよい。生成部405は、具体的には、機械学習モデルの残差が閾値未満である場合に、機械学習モデルの求解精度が閾値以上であると判定し、設定された入力の対象に基づいて、機械学習モデルを更新せずに済ませてもよい。これにより、生成部405は、機械学習モデルの求解精度が比較的よければ、機械学習モデルを更新せずに済ませ、処理量の低減化を図ることができる。
【0075】
ここで、生成部405と同様に、取得部401と、分割部402と、変更部403とが、機械学習モデルの求解精度に基づいて、処理量の低減化を図る場合があってもよい。生成部405は、さらに、設定された入力の対象に摂動行列を加えて得られる新たな入力の対象に基づいて、機械学習モデルを更新してもよい。これにより、生成部405は、さらに、機械学習モデルの求解精度を向上させることができる。
【0076】
求解部406は、所定の行列方程式を解き、所定の行列方程式の解を算出する。ここで、例えば、所定の行列方程式が、反復解法により解く対象となる行列方程式である場合が考えられる。この場合、求解部406は、例えば、所定の行列方程式が反復解法により解かれる前に、設定された入力の対象を機械学習モデルに入力する。そして、求解部406は、入力に応じて、機械学習モデルから出力された第2の行列を取得し、所定の行列方程式を反復解法により解く際に用いられる初期値に設定する。求解部406は、設定した初期値に基づいて、所定の行列方程式を反復解法により解いてもよい。これにより、求解部406は、所定の行列方程式を解く精度の向上を図ることができる。
【0077】
また、例えば、所定の行列方程式が、反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式である場合が考えられる。この場合、求解部406は、例えば、反復解法において、前処理が実施される前に、設定された入力の対象を機械学習モデルに入力する。そして、求解部406は、入力に応じて、機械学習モデルから出力された第2の行列に基づいて、前処理を実施する。これにより、求解部406は、前処理にかかる処理量の低減化を図ることができる。
【0078】
出力部407は、いずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、出力部407は、各機能部の処理結果を利用者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。
【0079】
出力部407は、例えば、機械学習モデルを出力する。これにより、出力部407は、求解精度が比較的よい機械学習モデルを、利用者または外部装置などが利用可能にすることができる。出力部407は、例えば、所定の行列方程式の解を出力する。これにより、出力部407は、所定の行列方程式の解を、利用者または外部装置などが利用可能にすることができる。
【0080】
(情報処理装置100の第1の動作例)
次に、図5図11を用いて、情報処理装置100の第1の動作例について説明する。
【0081】
図5図11は、情報処理装置100の第1の動作例を示す説明図である。図5図11において、情報処理装置100は、機械学習モデルを数値シミュレーションに適用し、数値シミュレーションの処理速度の向上、および、求解精度の向上を図る。まず、図5の説明に移行し、情報処理装置100が実行する数値シミュレーションの流れについて説明する。
【0082】
図5に示すように、数値シミュレーションは、非線形問題を線形化し、行列方程式を生成した後、反復解法を実施し、行列方程式を解くことになる。反復解法を実施する前に、行列方程式の解について、初期値500が設定される。反復解法において、行列方程式の解は、反復ごとに、初期値500から、真の解の方向へと収束されていくことになる。
【0083】
例えば、反復解法において、反復ごとに残差が小さくなるよう、行列方程式の解は、初期値500から、一時的な解501~504へと順に収束されていく。反復解法において、行列方程式の解は、残差が閾値未満になった場合、最終的な解として出力される。反復1回は、行列方程式の固有値分布を変更する前処理と、CG法による数値処理とによって形成される。
【0084】
前処理は、例えば、iLU(k)分解法(incomplete LU (k)分解法)によって実現される。iLU分解法は、例えば、疎行列Aに対して、k段までのフィルインを考慮したAkの非零構造を利用して、不完全なLU分解を行い、x=U(-1)(-1)rを算出し、LUx=rを算出する手法である。ここで、行列の右肩の(-1)は逆行列を表すものとする。iLU分解法は、数値解析的に解く場合、非零構造の決定と、行列分解の演算と、前進代入および後退消去とにより、処理時間が増大しやすい。CG法は、GMRES法などに置き換え可能である。
【0085】
ここで、情報処理装置100は、機械学習モデルを数値シミュレーションに適用し、数値シミュレーションの処理速度の向上、および、求解精度の向上を図る。例えば、情報処理装置100が、行列方程式の解に、初期値500を設定する際に、機械学習モデルを適用し、行列方程式の解が、最終的な解に辿り着くまでの反復回数の低減化を図るという、第1の動作を行うことが考えられる。第1の動作例は、情報処理装置100が、第1の動作を行う場合に対応する動作例である。
【0086】
ここでは、情報処理装置100が、第1の動作を行う場合について説明したが、これに限らない。例えば、情報処理装置100が、前処理を実施する際に、機械学習モデルを適用し、前処理にかかる処理時間の低減化を図り、数値シミュレーションの処理速度の向上、および、求解精度の向上を図るという、第2の動作を行う場合があってもよい。情報処理装置100が、第2の動作を行う場合に対応する第2の動作例については、例えば、図15図18を用いて後述する。
【0087】
ここで、数値シミュレーションは、繰り返し実行されることがある。図6図8を用いて、情報処理装置100が、数値シミュレーションを繰り返し実行する場合に、数値シミュレーションを繰り返す全体に対して、どのように機械学習モデルを適用するのかについて説明する。まず、図6の説明に移行し、情報処理装置100が、機械学習モデルを更新する一例について説明する。
【0088】
例えば、図6の参考図600に示すように、情報処理装置100が、数値シミュレーションSIMiと、数値シミュレーションSIMiの結果に基づいて、機械学習モデルを更新する機械学習処理Liとを、交互に繰り返し実行することが考えられる。iは、自然数である。ある機械学習モデルは、それぞれの機械学習処理Liにおいて逐次更新され、それぞれの数値シミュレーションSIMiにおいて逐次利用される。
【0089】
機械学習処理Liは、数値シミュレーションSIMiの結果得られた、係数行列Aの大きさnと、係数行列Aと、右辺ベクトルbと、解ベクトルxとを含む学習データセット{n,A,b,x}に基づいて、機械学習モデルを更新する。学習データセットは、具体的には、数値シミュレーションSIMiにおいて、時間発展とNR法との多重ループ内で解かれた行列方程式を形成する係数行列Aと、右辺ベクトルbと、解ベクトルxとを含む。
【0090】
学習データセットは、例えば、機械学習モデルを更新する際、要素間のスケールを合わせてから、機械学習モデルへの入力の対象に設定されてもよい。学習データセットを、要素間のスケールを合わせてから、機械学習モデルへの入力の対象に設定する具体例については、例えば、図20図24を用いて後述する。
【0091】
これにより、情報処理装置100は、類似の問題を表す行列方程式を解く傾向がある複数の数値シミュレーションSIMiを通して機械学習モデルを更新することができ、機械学習モデルを効率よく更新していくことができる。このため、情報処理装置100は、数値シミュレーションSIMiが実行されるほど、機械学習モデルの求解精度を向上していくことができる。
【0092】
また、機械学習処理Liは、学習データセット{n,A,b,x}に基づいて、右辺ベクトルbに摂動Δbを加えたb’を算出し、x’=A(-1)b’を算出し、新たな学習データセット{n,A,b’,x’}を生成してもよい。これにより、情報処理装置100は、機械学習処理Liにおいて、学習データを増加させ、求解精度がさらに向上するよう、機械学習モデルを更新しやすくすることができる。
【0093】
また、機械学習処理Liは、それぞれパラメータの異なる複数の機械学習モデルを並列して更新してもよい。これにより、情報処理装置100は、複数の機械学習モデルのうち、求解精度が相対的によい機械学習モデルを選択的に利用可能にすることができる。次に、図7の説明に移行し、情報処理装置100が、機械学習モデルを更新する別の例について説明する。
【0094】
例えば、図7の参考図700に示すように、情報処理装置100が、数値シミュレーションSIMiと、数値シミュレーションSIMiの結果に基づいて、機械学習モデルを更新する機械学習処理Liとを、並列して繰り返し実行することが考えられる。次に、図8の説明に移行し、情報処理装置100が、機械学習モデルを利用する一例について説明する。
【0095】
例えば、図8の参考図800に示すように、情報処理装置100が、いずれかの数値シミュレーションSIMN以降、機械学習処理Li(i≧N)において、機械学習モデルを更新しないようにすることが考えられる。
【0096】
情報処理装置100は、例えば、数値シミュレーションSIMNにおいて、機械学習モデルの求解精度が一定以上になっていれば、機械学習処理Li(i≧N)において、機械学習モデルを更新しないようにする。
【0097】
具体的には、数値シミュレーションSIMi(i<N)は、行列方程式を示す入力データセット{n,A,b}を、機械学習処理Li(i<N)に送信することにより、機械学習処理Li(i<N)に、反復解法の初期値を算出させる。
【0098】
入力データセットは、例えば、要素間のスケールを合わせてから、機械学習処理Li(i<N)に送信され、機械学習モデルへの入力の対象に設定されてもよい。入力データセットを、要素間のスケールを合わせてから、機械学習モデルへの入力の対象に設定する具体例については、例えば、図20図24を用いて後述する。
【0099】
情報処理装置100は、機械学習モデルの求解精度として、算出された反復解法の初期値の好ましさを示す指標値を算出する。指標値は、例えば、算出された反復解法の初期値と、数値シミュレーションSIMi(i<N)における反復解法により算出された解ベクトルxとの差分である。情報処理装置100は、機械学習モデルの求解精度が一定以上になった後の、機械学習処理Li(i≧N)において、機械学習モデルを更新しないようにする。
【0100】
その後、数値シミュレーションSIMi(i≧N)は、行列方程式を示す入力データセット{n,A,b}を、機械学習処理Li(i≧N)に送信する。機械学習処理Li(i≧N)は、受信した入力データセット{n,A,b}を機械学習モデルに入力し、入力の結果、機械学習モデルにより得られた解ベクトルxを、数値シミュレーションSIMi(i≧N)に送信する。
【0101】
入力データセットは、例えば、要素間のスケールを合わせてから、機械学習処理Li(i<N)に送信され、機械学習モデルへの入力の対象に設定されてもよい。入力データセットを、要素間のスケールを合わせてから、機械学習モデルへの入力の対象に設定する具体例については、例えば、図20図24を用いて後述する。
【0102】
数値シミュレーションSIMi(i≧N)は、受信した行列方程式の解ベクトルxを、反復解法における初期値に設定し、反復解法により、行列方程式の最終的な解ベクトルxを算出する。
【0103】
これにより、情報処理装置100は、求解精度が比較的よい機械学習モデルがあれば、数値シミュレーションSIMiが、行列方程式を、機械学習モデルを利用して解くようにすることができ、数値シミュレーションSIMiの処理量の低減化を図ることができる。このため、情報処理装置100は、数値シミュレーションSIMiの処理速度の向上、および、求解精度の向上を図ることができる。
【0104】
情報処理装置100は、数値シミュレーションSIMi(i≧N)にかかる処理量の低減化を図ることができる。このため、情報処理装置100は、機械学習処理Li(i<N)において、機械学習モデルを更新することによる処理量の増大化の分を、打ち消していくことができる。結果として、情報処理装置100は、数値シミュレーションSIMiを繰り返すほど、複数の数値シミュレーションSIMiの全体にかかる処理量の低減化を図ることができる。
【0105】
情報処理装置100は、初期の数回分の数値シミュレーションSIMiにおいて、行列方程式を、機械学習モデルを利用して解く手法と、行列方程式を、機械学習モデルを利用せずに解く手法とを試行し、それぞれの手法の求解精度を算出してもよい。そして、情報処理装置100は、以降の数値シミュレーションSIMiにおいて、求解精度がよい方の手法により、行列方程式を解くようにしてもよい。
【0106】
情報処理装置100は、数値シミュレーションSIMiの途中で、機械学習処理Liにおいて、機械学習モデルを更新しないようにするか否かを決定する場合があってもよい。次に、図9図11を用いて、情報処理装置100による効果について説明する。まず、図9の説明に移行する。
【0107】
図9において、情報処理装置100は、数値シミュレーションにより、ある問題を表す一次元ポワソン方程式を解いたものとする。この際、情報処理装置100は、収束条件||b-Ax||<ε||b||を用いたものとする。ε=1.0×10-6である。また、情報処理装置100は、bに摂動を加え、学習データセットを増加させたものとする。機械学習モデルは、入力層128ノード、隠れ層1000ノード、出力層128ノードのニューラルネットワークとする。
【0108】
図9のグラフ900は、ある問題を表す一次元ポワソン方程式を解いた場合の、エポック数の異なる機械学習による初期推定値を用いた場合のGSSのイタレーション数の変化を示すグラフである。エポック数は、用いた学習データセットの数に対応する。GSSイタレーション数は、反復解法における反復の数に対応する。ここで、線901は、初期値を常時0とした従来の数値シミュレーションの特性を示す。線901に示すように、従来の数値シミュレーションは、一次元ポワソン方程式を解く際、48525回、反復解法のステップを繰り返すことになり、処理速度が遅い。
【0109】
また、線902,903は、情報処理装置100が、機械学習モデルを利用して、ある問題を表す一次元ポワソン方程式を、異なるパラメータで解いた場合の特性を示す。線902,903に示すように、情報処理装置100は、初期状態の機械学習モデルを利用した場合でも、反復解法のステップを繰り返す回数を、38000回ほどに抑制することができる。
【0110】
また、情報処理装置100は、点904に示すように、150000以上の学習データセットを用いた後、反復解法のステップを繰り返す回数を、最終的に20000回以下に抑制することができる。また、情報処理装置100は、点905に示すように、150000以上の学習データセットを用いた後、反復解法のステップを繰り返す回数を、最終的に10000回ほどに抑制することができる。次に、図10の説明に移行する。
【0111】
図10において、情報処理装置100は、数値シミュレーションにより、図9とは別の問題を表す一次元ポワソン方程式を解いたものとする。この際、情報処理装置100は、収束条件||b-Ax||<ε||b||を用いたものとする。ε=1.0×10-6である。また、情報処理装置100は、bに摂動を加え、学習データセットを増加させたものとする。機械学習モデルは、入力層128ノード、隠れ層1000ノード、出力層128ノードのニューラルネットワークとする。
【0112】
図10のグラフ1000は、図9とは別の問題を表す一次元ポワソン方程式を解いた場合の、エポック数の異なる機械学習による初期推定値に対するCG法のイタレーション数を示すグラフである。エポック数は、用いた学習データセットの数に対応する。GSSイタレーション数は、反復解法における反復の数に対応する。ここで、線1001は、情報処理装置100が、機械学習モデルを利用して、一次元ポワソン方程式を解いた場合の特性を示す。線1001に示すように、情報処理装置100は、反復解法のステップを繰り返す回数を抑制することができる。
【0113】
図10のグラフ1010は、図9とは別の問題を表す一次元ポワソン方程式を解いた場合の、GSSイタレーション数に対する相対残差を示すグラフである。GSSイタレーション数は、反復解法における反復の数に対応する。相対残差は、例えば、||b-Ax||/||b||である。ここで、線1011は、初期値を常時0とした従来の数値シミュレーションの特性を示す。線1011に示すように、従来の数値シミュレーションは、収束条件を満たすまでに、11回ほど、反復解法のステップを繰り返すことになり、処理速度が遅い。
【0114】
一方で、線1012は、情報処理装置100が、図9とは別の問題を表す一次元ポワソン方程式を、機械学習モデルを利用して得られた初期推定値を用いて、解いた場合の特性(GSSイタレーション数に対する相対残差)を示す。線1012に示すように、情報処理装置100は、収束条件を満たすまでに、反復解法のステップを繰り返す回数を低減することができ、処理速度の向上を図ることができる。次に、図11の説明に移行する。
【0115】
図11において、従来の手法(その1)と、従来の手法(その2)と、情報処理装置100による手法(その3)との処理負担について比較する。手法(その1)は、機械学習モデルを利用しない手法である。手法(その2)は、例えば、上記非特許文献1などを参照することができる。
【0116】
図11のグラフ1100は、手法(その1)の反復解法における、反復回数に対する処理負担を示すグラフである。グラフ1100に示すように、手法(その1)は、数値シミュレーションごとに同等の処理負担がかかるため、数値シミュレーションを繰り返すと、全体の処理負担の増大化を招く。
【0117】
図11のグラフ1110は、手法(その2)の反復解法における、反復回数に対する処理負担を示すグラフである。手法(その2)は、機械学習と、数値シミュレーションとを両立して効率よく実行することが難しく、機械学習による処理負担の増大が大きい。また、手法(その2)では、機械学習による人的負担が生じることがある。
【0118】
図11のグラフ1120は、手法(その3)の反復解法における、反復回数に対する処理負担を示すグラフである。グラフ1120に示すように、情報処理装置100は、機械学習による処理負担の増大を抑制しつつ、数値シミュレーションを繰り返した場合における、全体の処理負担の増大化を抑制することができる。また、情報処理装置100は、機械学習による人的負担の増大を抑制することができる。
【0119】
図12は、情報処理装置100の適用例を示す説明図である。情報処理装置100は、例えば、製造分野において、ある製品に関する問題を表す行列方程式を解く数値シミュレーションを繰り返す場合に対して適用することができる。
【0120】
情報処理装置100は、具体的には、製造分野において、前提条件を逐次変更しつつ、自動車の流体解析の問題を表す行列方程式を解く流体シミュレーションを繰り返す際に、機械学習モデルを更新、および、利用することができる。情報処理装置100は、具体的には、解析部1201と、学習部1202とを有し、学習部1202により、機械学習モデルを更新し、解析部1201により、機械学習モデルを利用することができる。
【0121】
(動作例1における全体処理手順)
次に、図13を用いて、情報処理装置100が実行する、動作例1における全体処理手順の一例について説明する。全体処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0122】
図13は、動作例1における全体処理手順の一例を示すフローチャートである。図13において、情報処理装置100は、線型方程式Ax=bを取得する(ステップS1301)。
【0123】
次に、情報処理装置100は、線形ソルバを呼び出し、図14に後述する求解処理を実行し、解xを取得する(ステップS1302)。線形ソルバは、機械学習モデルを利用して、数値シミュレーションを実行するソフトウェアである。
【0124】
次に、情報処理装置100は、線型方程式Ax=bの解xを出力する(ステップS1303)。そして、情報処理装置100は、全体処理を終了する。これにより、情報処理装置100は、機械学習モデルを利用して、線型方程式Ax=bの解xを、効率よく算出することができる。
【0125】
(動作例1における求解処理手順)
次に、図14を用いて、情報処理装置100が実行する、動作例1における求解処理手順の一例について説明する。求解処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0126】
図14は、動作例1における求解処理手順の一例を示すフローチャートである。図14において、情報処理装置100は、機械学習により、初期値x(0)の推定値x_guessを算出する(ステップS1401)。
【0127】
次に、情報処理装置100は、初期値x(0)に、算出した推定値x_guessを設定する(ステップS1402)。そして、情報処理装置100は、k=0に設定する(ステップS1403)。
【0128】
次に、情報処理装置100は、x(k+1)=D-1[b-Lx(k+1)-Ux(k)]を算出する(ステップS1404)。そして、情報処理装置100は、r=b-Ax(k+1)を算出する(ステップS1405)。
【0129】
次に、情報処理装置100は、||r||/||b||<epsであるか否かを判定する(ステップS1406)。ここで、||r||/||b||<epsではない場合(ステップS1406:No)、情報処理装置100は、kをインクリメントし(ステップS1407)、ステップS1404の処理に戻る。
【0130】
一方で、||r||/||b||<epsである場合(ステップS1406:Yes)、情報処理装置100は、求解処理を終了する。これにより、情報処理装置100は、機械学習モデルを利用して、線型方程式Ax=bの解xを求めることができる。
【0131】
(情報処理装置100の第2の動作例)
次に、図15図18を用いて、情報処理装置100の第2の動作例について説明する。
【0132】
図15図18は、情報処理装置100の第2の動作例を示す説明図である。図15図18において、情報処理装置100は、機械学習モデルを数値シミュレーションに適用し、数値シミュレーションの処理速度の向上、および、求解精度の向上を図る。
【0133】
情報処理装置100は、具体的には、前処理を実施する際に、機械学習モデルを適用し、前処理にかかる処理時間の低減化を図り、数値シミュレーションの処理速度の向上、および、求解精度の向上を図るという、第2の動作を行う。第2の動作例は、情報処理装置100が、第2の動作を行う場合に対応する動作例である。
【0134】
ここで、数値シミュレーションは、繰り返し実行されることがある。図15図17を用いて、情報処理装置100が、数値シミュレーションを繰り返し実行する場合に、数値シミュレーションを繰り返す全体に対して、どのように機械学習モデルを適用するのかについて説明する。まず、図15の説明に移行し、情報処理装置100が、機械学習モデルを更新する一例について説明する。
【0135】
例えば、図15の参考図1500に示すように、情報処理装置100が、数値シミュレーションSIMiと、数値シミュレーションSIMiの結果に基づいて、機械学習モデルを更新する機械学習処理Liとを、交互に繰り返し実行することが考えられる。iは、自然数である。ある機械学習モデルは、それぞれの機械学習処理Liにおいて逐次更新され、それぞれの数値シミュレーションSIMiにおいて逐次利用される。
【0136】
機械学習処理Liは、数値シミュレーションSIMiの結果得られた、係数行列Aの大きさnと、係数行列Aと、右辺ベクトルbと、解ベクトルxとを含む学習データセット{n,A,b,x}に基づいて、機械学習モデルを更新する。学習データセットは、具体的には、数値シミュレーションSIMiにおいて、時間発展とNR法との多重ループ内で解かれた行列方程式を形成する係数行列Aと、右辺ベクトルbと、解ベクトルxとを含む。
【0137】
学習データセットは、例えば、機械学習モデルを更新する際、要素間のスケールを合わせてから、機械学習モデルへの入力の対象に設定されてもよい。学習データセットを、要素間のスケールを合わせてから、機械学習モデルへの入力の対象に設定する具体例については、例えば、図20図24を用いて後述する。
【0138】
これにより、情報処理装置100は、類似の問題を表す行列方程式を解く傾向がある複数の数値シミュレーションSIMiを通して機械学習モデルを更新することができ、機械学習モデルを効率よく更新していくことができる。このため、情報処理装置100は、数値シミュレーションSIMiが実行されるほど、機械学習モデルの求解精度を向上していくことができる。
【0139】
また、機械学習処理Liは、学習データセット{n,A,b,x}に基づいて、右辺ベクトルbに摂動Δbを加えたb’を算出し、x’=A(-1)b’を算出し、新たな学習データセット{n,A,b’,x’}を生成してもよい。これにより、情報処理装置100は、機械学習処理Liにおいて、学習データを増加させ、求解精度がさらに向上するよう、機械学習モデルを更新しやすくすることができる。
【0140】
また、機械学習処理Liは、それぞれパラメータの異なる複数の機械学習モデルを並列して更新してもよい。これにより、情報処理装置100は、複数の機械学習モデルのうち、求解精度が相対的によい機械学習モデルを選択的に利用可能にすることができる。
【0141】
機械学習処理Liは、数値シミュレーションSIMiの結果得られた、LU分解に関する、係数行列Mの大きさnと、係数行列Mと、右辺ベクトルrと、解ベクトルzとを含む学習データセット{n,M,r,z}に基づいて、機械学習モデルを更新してもよい。M=LUである。z=M(-1)rである。学習データセットは、具体的には、数値シミュレーションSIMiにおいて、時間発展とNR法との多重ループ内で解かれた、LU分解に関する行列方程式を形成する係数行列Mと、右辺ベクトルrと、解ベクトルzとを含む。
【0142】
学習データセットは、例えば、機械学習モデルを更新する際、要素間のスケールを合わせてから、機械学習モデルへの入力の対象に設定されてもよい。学習データセットを、要素間のスケールを合わせてから、機械学習モデルへの入力の対象に設定する具体例については、例えば、図20図24を用いて後述する。
【0143】
これにより、情報処理装置100は、類似の問題を表す行列方程式を解く傾向がある複数の数値シミュレーションSIMiを通して機械学習モデルを更新することができ、機械学習モデルを効率よく更新していくことができる。このため、情報処理装置100は、数値シミュレーションSIMiが実行されるほど、機械学習モデルの求解精度を向上していくことができる。
【0144】
また、機械学習処理Liは、学習データセット{n,M,r,z}に基づいて、右辺ベクトルrに摂動Δrを加えたr’を算出し、z’=U(-1)(-1)r’を算出し、新たな学習データセット{n,M,r’,z’}を生成してもよい。これにより、情報処理装置100は、機械学習処理Liにおいて、学習データを増加させ、求解精度がさらに向上するよう、機械学習モデルを更新しやすくすることができる。
【0145】
また、機械学習処理Liは、それぞれパラメータの異なる複数の機械学習モデルを並列して更新してもよい。これにより、情報処理装置100は、複数の機械学習モデルのうち、求解精度が相対的によい機械学習モデルを選択的に利用可能にすることができる。次に、図16の説明に移行し、情報処理装置100が、機械学習モデルを更新する別の例について説明する。
【0146】
例えば、図16の参考図1600に示すように、情報処理装置100が、数値シミュレーションSIMiと、数値シミュレーションSIMiの結果に基づいて、機械学習モデルを更新する機械学習処理Liとを、並列して繰り返し実行することが考えられる。次に、図17の説明に移行し、情報処理装置100が、機械学習モデルを利用する一例について説明する。
【0147】
例えば、図17の参考図1700に示すように、情報処理装置100が、いずれかの数値シミュレーションSIMN以降、機械学習処理Li(i≧N)において、機械学習モデルを更新しないようにすることが考えられる。
【0148】
情報処理装置100は、例えば、数値シミュレーションSIMNにおいて、機械学習モデルの求解精度が一定以上になっていれば、機械学習処理Li(i≧N)において、機械学習モデルを更新しないようにする。
【0149】
具体的には、数値シミュレーションSIMi(i<N)は、行列方程式を示す入力データセット{n,A,b}を、機械学習処理Li(i<N)に送信する。そして、数値シミュレーションSIMi(i<N)は、送信の結果、機械学習処理Li(i<N)に、行列方程式の解xを算出させ、z=M(-1)rを算出させ、前処理を実施する。
【0150】
入力データセットは、例えば、要素間のスケールを合わせてから、機械学習処理Li(i<N)に送信され、機械学習モデルへの入力の対象に設定されてもよい。入力データセットを、要素間のスケールを合わせてから、機械学習モデルへの入力の対象に設定する具体例については、例えば、図20図24を用いて後述する。
【0151】
情報処理装置100は、機械学習モデルの求解精度として、算出されたzの好ましさを示す指標値を算出する。指標値は、例えば、||r||/||b||である。情報処理装置100は、機械学習モデルの求解精度が一定以上になった後の、機械学習処理Li(i≧N)において、機械学習モデルを更新しないようにする。
【0152】
その後、数値シミュレーションSIMi(i≧N)は、行列方程式を示す入力データセット{n,A,b}を、機械学習処理Li(i≧N)に送信する。機械学習処理Li(i≧N)は、受信した入力データセット{n,A,b}を機械学習モデルに入力し、入力の結果、機械学習モデルにより得られた解ベクトルxに基づいて、解ベクトルzを算出し、数値シミュレーションSIMi(i≧N)に送信する。
【0153】
入力データセットは、例えば、要素間のスケールを合わせてから、機械学習処理Li(i<N)に送信され、機械学習モデルへの入力の対象に設定されてもよい。入力データセットを、要素間のスケールを合わせてから、機械学習モデルへの入力の対象に設定する具体例については、例えば、図20図24を用いて後述する。
【0154】
具体的には、数値シミュレーションSIMi(i<N)は、LU分解に関する行列方程式を示す入力データセット{n,M,r}を、機械学習処理Li(i<N)に送信してもよい。そして、数値シミュレーションSIMi(i<N)は、送信の結果、機械学習処理Li(i<N)に、解ベクトルzを算出させ、前処理を実施する。
【0155】
入力データセットは、例えば、要素間のスケールを合わせてから、機械学習処理Li(i<N)に送信され、機械学習モデルへの入力の対象に設定されてもよい。入力データセットを、要素間のスケールを合わせてから、機械学習モデルへの入力の対象に設定する具体例については、例えば、図20図24を用いて後述する。
【0156】
情報処理装置100は、機械学習モデルの求解精度として、算出されたzの好ましさを示す指標値を算出する。指標値は、例えば、||r||/||b||である。情報処理装置100は、機械学習モデルの求解精度が一定以上になった後の、機械学習処理Li(i≧N)において、機械学習モデルを更新しないようにする。
【0157】
その後、数値シミュレーションSIMi(i≧N)は、行列方程式を示す入力データセット{n,M,r}を、機械学習処理Li(i≧N)に送信する。機械学習処理Li(i≧N)は、受信した入力データセット{n,M,r}を機械学習モデルに入力し、入力の結果、機械学習モデルにより得られた解ベクトルzを、数値シミュレーションSIMi(i≧N)に送信する。
【0158】
入力データセットは、例えば、要素間のスケールを合わせてから、機械学習処理Li(i<N)に送信され、機械学習モデルへの入力の対象に設定されてもよい。入力データセットを、要素間のスケールを合わせてから、機械学習モデルへの入力の対象に設定する具体例については、例えば、図20図24を用いて後述する。
【0159】
これにより、情報処理装置100は、求解精度が比較的よい機械学習モデルがあれば、数値シミュレーションSIMiが、行列方程式を、機械学習モデルを利用して解くようにすることができ、数値シミュレーションSIMiの処理量の低減化を図ることができる。このため、情報処理装置100は、数値シミュレーションSIMiの処理速度の向上、および、求解精度の向上を図ることができる。
【0160】
情報処理装置100は、数値シミュレーションSIMi(i≧N)にかかる処理量の低減化を図ることができる。このため、情報処理装置100は、機械学習処理Li(i<N)において、機械学習モデルを更新することによる処理量の増大化の分を、打ち消していくことができる。結果として、情報処理装置100は、数値シミュレーションSIMiを繰り返すほど、複数の数値シミュレーションSIMiの全体にかかる処理量の低減化を図ることができる。
【0161】
情報処理装置100は、初期の数回分の数値シミュレーションSIMiにおいて、行列方程式を、機械学習モデルを利用して解く手法と、行列方程式を、機械学習モデルを利用せずに解く手法とを試行し、それぞれの手法の求解精度を算出してもよい。そして、情報処理装置100は、以降の数値シミュレーションSIMiにおいて、求解精度がよい方の手法により、行列方程式を解くようにしてもよい。
【0162】
情報処理装置100は、数値シミュレーションSIMiの途中で、機械学習処理Liにおいて、機械学習モデルを更新しないようにするか否かを決定する場合があってもよい。次に、図18を用いて、情報処理装置100による効果について説明する。
【0163】
図18において、情報処理装置100は、数値シミュレーションにより、ある問題を表す三次元ポワソン方程式を解いたものとする。この際、情報処理装置100は、収束条件||b-Ax||<ε||b||を用いたものとする。ε=1.0×10-6である。また、情報処理装置100は、bに摂動を加え、学習データセットを増加させたものとする。機械学習モデルは、入力層3750ノード、隠れ層8192ノード、出力層3750ノードのニューラルネットワークとする。
【0164】
図18のグラフ1800は、ある問題を表す三次元ポワソン方程式を解いた場合の、CG法イタレーション数に対する相対残差を示すグラフである。CG法イタレーション数は、反復解法における反復の数に対応する。相対残差は、例えば、||b-Ax||/||b||である。ここで、線1802は、従来の前処理付きCG法の特性を示す。線1802に示すように、従来の前処理付きCG法は、収束条件を満たすまでに、11回ほど、反復解法のステップを繰り返すことになり、処理速度が遅い。
【0165】
一方で、線1801は、情報処理装置100が、前処理として機械学習モデルを利用したCG法において、ある問題を表す三次元ポワソン方程式を解いた場合の特性を示す。線1801に示すように、情報処理装置100は、収束条件を満たすまでに、反復解法のステップを繰り返す回数を低減することができ、処理速度の向上を図ることができる。また、情報処理装置100は、反復1回目で、残差を、従来の数値シミュレーションの反復5回目と同等までに低減することができ、効率よく、三次元ポワソン方程式を解くことができる。
【0166】
(動作例2における全体処理手順)
情報処理装置100が実行する、動作例2における全体処理手順の一例は、例えば、図13に示した、動作例1における全体処理手順の一例と同様であるため、説明を省略する。情報処理装置100は、ステップS1302において、図14に示した求解処理に代わり、図19に後述する求解処理を実行する。
【0167】
(動作例2における求解処理手順)
次に、図19を用いて、情報処理装置100が実行する、動作例2における求解処理手順の一例について説明する。求解処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0168】
図19は、動作例2における求解処理手順の一例を示すフローチャートである。図19において、情報処理装置100は、r0=b-Ax0を算出する(ステップS1901)。
【0169】
次に、情報処理装置100は、機械学習により、z0=M-10を算出する(ステップS1902)。そして、情報処理装置100は、p0=z0を算出する(ステップS1903)。
【0170】
次に、情報処理装置100は、k=0に設定する(ステップS1904)。そして、情報処理装置100は、α=rk Tk/pk TApkを算出する(ステップS1905)。
【0171】
次に、情報処理装置100は、xk+1=xk+αpkを算出する(ステップS1906)。そして、情報処理装置100は、rk+1=rk-αApkを算出する(ステップS1907)。
【0172】
次に、情報処理装置100は、||r||/||b||<epsであるか否かを判定する(ステップS1908)。ここで、||r||/||b||<epsである場合(ステップS1908:Yes)、情報処理装置100は、求解処理を終了する。一方で、||r||/||b||<epsではない場合(ステップS1908:No)、情報処理装置100は、ステップS1909の処理に移行する。
【0173】
ステップS1909では、情報処理装置100は、機械学習により、zk+1=M-1k+1を算出する(ステップS1909)。次に、情報処理装置100は、β=zk+1 Tk+1/xk Tkを算出する(ステップS1910)。そして、情報処理装置100は、pk+1=zk+1+βpkを算出する(ステップS1911)。
【0174】
次に、情報処理装置100は、kをインクリメントする(ステップS1912)。そして、情報処理装置100は、ステップS1905の処理に戻る。これにより、情報処理装置100は、機械学習モデルを利用して、線型方程式Ax=bの解xを求めることができる。
【0175】
(機械学習モデルへの入力の対象を設定する具体例)
次に、図20図24を用いて、情報処理装置100が、第1の動作例、または、第2の動作例において、機械学習モデルを更新、または、利用する際に、行列の要素間のスケールを合わせて、機械学習モデルへの入力の対象を設定する具体例について説明する。
【0176】
図20図24は、機械学習モデルへの入力の対象を設定する具体例を示す説明図である。まず、図20を用いて、機械学習モデルへの入力の対象を設定する第1の具体例について説明する。
【0177】
図20において、情報処理装置100は、学習データセット{n,An,bn,xnN n=1を取得したものとする。この場合、情報処理装置100は、学習データセット{n,An,bn,xnN n=1のうち、{An,bnN n=1を、複数のブロックに分割する。
【0178】
図20の例では、情報処理装置100は、AnをブロックAnとブロックBnとに分割し、bnをブロックbnとcnとに分割する。情報処理装置100は、分割後の{An!Bn,bn!cnN n=1に、スケーリング係数α,βを乗算し、スケールを変更する。ここで、!は、文中で、便宜上、ブロックの区切りを示す記号として用いることとする。!は、図中で、ブロックの区切りを示す横向き破線に対応する。情報処理装置100は、スケールを変更後の{αAn!βBn,αbn!βcnN n=1と、学習データセット{n,An,bn,xnN n=1のうちの{xnN n=1との組み合わせを、入力の対象に設定する。
【0179】
また、図20において、情報処理装置100は、入力データセット{n,An,bnN n=1を取得したものとする。この場合、情報処理装置100は、入力データセット{n,An,bnN n=1のうち、{An,bnN n=1を、複数のブロックに分割する。
【0180】
図20の例では、情報処理装置100は、AnをブロックAnとブロックBnとに分割し、bnをブロックbnとcnとに分割する。情報処理装置100は、分割後の{An!Bn,bn!cnN n=1に、スケーリング係数α,βを乗算し、スケールを変更する。情報処理装置100は、スケールを変更後の{αAn!βBn,αbn!βcnN n=1を、入力の対象に設定する。
【0181】
次に、図21を用いて、機械学習モデルへの入力の対象を設定する第2の具体例について説明する。図21において、情報処理装置100は、所定のスケーリング関数μ(・),ν(・)とを有する。
【0182】
図21において、情報処理装置100は、学習データセット{n,An,bn,xnN n=1を取得したものとする。この場合、情報処理装置100は、学習データセット{n,An,bn,xnN n=1のうち、{xnN n=1を、複数のブロックに分割する。
【0183】
図21の例では、情報処理装置100は、xnをブロックxnとブロックynとに分割する。情報処理装置100は、分割後の{xn!ynN n=1を、それぞれ、スケーリング関数μ(・),ν(・)に代入し、スケールを変更する。情報処理装置100は、スケールを変更後の{χn!ηnN n=1={μ(xn)!ν(yn)}N n=1と、学習データセット{n,An,bn,xnN n=1のうちの{An,bnN n=1との組み合わせを、入力の対象に設定する。
【0184】
また、図21において、情報処理装置100は、入力データセット{n,An,bnN n=1を取得したものとする。この場合、情報処理装置100は、機械学習モデルに、入力データセット{n,An,bnN n=1を入力することにより、{χn!ηnN n=1={μ(xn)!ν(yn)}N n=1を取得する。そして、情報処理装置100は、そして、情報処理装置100は、{χn!ηnN n=1を、スケーリング関数μ(・),ν(・)の逆関数に代入し、{xnN n=1を取得する。
【0185】
次に、図22を用いて、機械学習モデルへの入力の対象を設定する第3の具体例について説明する。図22において、情報処理装置100は、学習データセット{n,An,bn,xnN n=1を取得したものとする。この場合、情報処理装置100は、学習データセット{n,An,bn,xnN n=1のうち、{An,bnN n=1を、Anのi行j列の要素aij,nと、bnのi行の要素bi,nとの単位で扱うことにする。情報処理装置100は、具体的には、{An,bnN n=1を、{(aij,n),(bi,n)}N n=1として扱うことにする。
【0186】
情報処理装置100は、{(aij,n),(bi,n)}N n=1を、浮動小数点表記に変換する。情報処理装置100は、変換後の{(pij,n×10^Pij,n),(qi,n×10^Qi,n)}N n=1から、基数部{pij,n,qi,nN n=1と、指数部{Pij,n,Qi,nN n=1との2チャンネルの情報を抽出する。情報処理装置100は、抽出した2チャンネルの情報と、学習データセット{n,An,bn,xnN n=1のうちの{xnN n=1との組み合わせを、入力の対象に設定する。
【0187】
また、図22において、情報処理装置100は、入力データセット{n,An,bnN n=1を取得したものとする。この場合、情報処理装置100は、入力データセット{n,An,bnN n=1のうち、{An,bnN n=1を、Anのi行j列の要素aij,nと、bnのi行の要素bi,nとの単位で、{(aij,n),(bi,n)}N n=1として扱うことにする。
【0188】
情報処理装置100は、{(aij,n),(bi,n)}N n=1を、浮動小数点表記に変換する。情報処理装置100は、変換後の{(pij,n×10^Pij,n),(qi,n×10^Qi,n)}N n=1から、基数部{pij,n,qi,nN n=1と、指数部{Pij,n,Qi,nN n=1との2チャンネルの情報を抽出する。情報処理装置100は、抽出した2チャンネルの情報を、入力の対象に設定する。
【0189】
次に、図23および図24を用いて、要素間のスケールを合わせて、機械学習モデルへの入力の対象を設定する効果について説明する。
【0190】
図23のグラフ2300は、右辺ベクトルbを分割したブロックb1,b2の要素の大きさを示す。横軸は、300個の要素である。縦軸は、要素の大きさの絶対値である。グラフ2300に示すように、右辺ベクトルbは、異なるスケールの要素を含んでいる。
【0191】
図24のグラフ2400は、エポック数に対する残差を示す。エポック数は、学習データセットの数に対応する。残差は、小さいほど、機械学習モデルの求解精度がよいことを示す。線2401は、従来の学習手法による、要素間のスケールを合わせない場合における学習曲線である。線2401に示すように、従来の学習手法では、学習データセットを増加させても、機械学習モデルの求解精度を向上することが難しい。
【0192】
線2402は、情報処理装置100による、要素間のスケールを合わせる場合における学習曲線である。線2402に示すように、情報処理装置100は、要素間のスケールを合わせたことにより、学習データセットを増加させれば、機械学習モデルの求解精度を向上していくことができる。
【0193】
(設定処理手順)
次に、図25図27を用いて、情報処理装置100が実行する、設定処理手順の一例について説明する。設定処理は、例えば、図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0194】
図25は、設定処理手順の第1の例を示すフローチャートである。第1の例は、図20に示した第1の具体例に対応する。図25において、情報処理装置100は、データセットを取得する(ステップS2501)。データセットは、入力データセット、または、学習データセットである。
【0195】
次に、情報処理装置100は、取得したデータセットに含まれる係数行列Aと右辺ベクトルbとを、係数行列A内のブロックと、右辺ベクトルb内のブロックとが、対応するブロックのペアになるよう、複数のブロックに分割する(ステップS2502)。例えば、係数行列Aは、ブロックA1とブロックA2とに分割される。また、例えば、右辺ベクトルbは、ブロックb1とブロックb2とに分割される。また、例えば、ブロックA1と、ブロックb1とのペアが、同一の属性の要素を含み、互いに対応するブロックのペアである。例えば、ブロックA2と、ブロックb2とのペアが、同一の属性の要素を含み、対応するブロックのペアである。
【0196】
次に、情報処理装置100は、複数のブロックのそれぞれのブロックに含まれる要素の大きさに基づいて、スケーリング係数を算出する(ステップS2503)。情報処理装置100は、例えば、対応するブロックのペアごとに、共通するスケーリング係数を算出する。情報処理装置100は、例えば、ブロックA1と、ブロックb1とのペアについて、当該ペア内の絶対値が最大の要素に基づいて、スケーリング係数αを算出する。また、情報処理装置100は、例えば、ブロックA2と、ブロックb2とのペアについて、当該ペア内の絶対値が最大の要素に基づいて、スケーリング係数βを算出する。
【0197】
次に、情報処理装置100は、対応するブロックのペアごとに、ブロックに含まれる複数の要素のそれぞれの要素に、当該ペアについて算出したスケーリング係数を乗算し、それぞれの要素のスケールを変更する(ステップS2504)。
【0198】
次に、情報処理装置100は、スケールを変更した後のデータセットを入力の対象に設定する(ステップS2505)。そして、情報処理装置100は、設定処理を終了する。これにより、情報処理装置100は、機械学習モデルの求解精度を向上することができる。
【0199】
図26は、設定処理手順の第2の例を示すフローチャートである。第2の例は、図21に示した第2の具体例に対応する。図26において、情報処理装置100は、データセットを取得する(ステップS2601)。データセットは、入力データセット、または、学習データセットである。
【0200】
次に、情報処理装置100は、取得したデータセットが、学習データセットであるか否かを判定する(ステップS2602)。ここで、学習データセットである場合(ステップS2602:Yes)、情報処理装置100は、ステップS2603の処理に移行する。一方で、入力データセットである場合(ステップS2602:No)、情報処理装置100は、ステップS2606の処理に移行する。
【0201】
ステップS2603では、情報処理装置100は、データセットに含まれる解ベクトルxを、複数のブロックに分割する(ステップS2603)。そして、情報処理装置100は、スケーリング関数に基づいて、複数のブロックのそれぞれのブロックに含まれる要素のスケールを変更する(ステップS2604)。
【0202】
次に、情報処理装置100は、スケールを変更した後のデータセットを入力の対象に設定する(ステップS2605)。そして、情報処理装置100は、設定処理を終了する。
【0203】
ステップS2606では、情報処理装置100は、取得したデータセットを入力の対象に設定する(ステップS2606)。次に、情報処理装置100は、機械学習モデルにより、データセットに対応する複数のブロックが取得されると、スケーリング関数の逆関数に基づいて、複数のブロックから、解ベクトルxを復元する(ステップS2607)。
【0204】
そして、情報処理装置は、設定処理を終了する。これにより、情報処理装置100は、機械学習モデルの求解精度を向上することができる。
【0205】
図27は、設定処理手順の第3の例を示すフローチャートである。第3の例は、図22に示した第3の具体例に対応する。図27において、情報処理装置100は、データセットを取得する(ステップS2701)。データセットは、入力データセット、または、学習データセットである。
【0206】
次に、情報処理装置100は、取得したデータセットに含まれる係数行列Aと右辺ベクトルbとを、それぞれ浮動小数点表記に変換する(ステップS2702)。そして、情報処理装置100は、浮動小数点表記における、基数部を示す行列と、指数部を示す行列と、取得したデータセットの解ベクトルxとを、入力の対象に設定する(ステップS2703)。
【0207】
その後、情報処理装置100は、設定処理を終了する。これにより、情報処理装置100は、機械学習モデルの求解精度を向上することができる。
【0208】
以上説明したように、情報処理装置100によれば、所定の行列方程式を形成する行列を取得することができる。情報処理装置100によれば、取得した行列に含まれる複数の要素のそれぞれの要素の属性に基づいて、取得した行列を、それぞれ同一の属性の要素を含む複数のブロックに分割することができる。情報処理装置100によれば、分割した複数のブロックのそれぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更することができる。情報処理装置100によれば、それぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更した後の行列を、行列演算を行う機械学習モデルへの入力の対象に設定することができる。これにより、情報処理装置100は、要素間のスケールを合わせることができるため、求解精度が比較的よい機械学習モデルを学習することができる。
【0209】
情報処理装置100によれば、所定の行列方程式の係数を示す第1の行列と、第1の行列と所定の行列方程式の解を示す第2の行列との積を示す第3の行列とのそれぞれの行列を取得することができる。これにより、情報処理装置100は、第1の行列と、第3の行列とにおける、要素間のスケールを合わせることができるため、求解精度が比較的よい機械学習モデルを学習することができる。
【0210】
情報処理装置100によれば、所定の行列方程式の解を示す第2の行列を取得することができる。これにより、情報処理装置100は、第2の行列における、要素間のスケールを合わせることができるため、求解精度が比較的よい機械学習モデルを学習することができる。
【0211】
情報処理装置100によれば、取得した行列について、当該行列に含まれる複数の要素のそれぞれの要素を形成する基数を示す第4の行列と、当該行列に含まれる複数の要素のそれぞれの要素を形成する指数を示す第5の行列とを特定することができる。情報処理装置100によれば、取得した行列について、特定した第4の行列と、特定した第5の行列とを、機械学習モデルへの入力の対象に設定することができる。これにより、情報処理装置100は、第1の行列と、第3の行列とを、別の表現に変換することができ、スケールを合わせた要素に基づいて、求解精度が比較的よい機械学習モデルを学習することができる。
【0212】
情報処理装置100によれば、所定の行列方程式に、反復解法により解く対象となる行列方程式を採用することができる。情報処理装置100によれば、所定の行列方程式を反復解法により解く前に、入力の対象を設定することができる。情報処理装置100によれば、設定された入力の対象を機械学習モデルに入力したことに応じて、機械学習モデルから出力された第2の行列を、所定の行列方程式を反復解法により解く際に用いられる初期値に設定することができる。これにより、情報処理装置100は、要素間のスケールを合わせ、機械学習モデルを利用して、精度よく解を求めることができる。
【0213】
情報処理装置100によれば、所定の行列方程式に、反復解法により解く対象となる行列方程式を採用することができる。情報処理装置100によれば、所定の行列方程式を反復解法により解いた後に、入力の対象を設定することができる。情報処理装置100によれば、設定された入力の対象に基づいて、機械学習モデルを更新することができる。これにより、情報処理装置100は、シミュレーションの実行中、求解精度が比較的よい機械学習モデルを、効率よく学習することができる。情報処理装置100は、例えば、シミュレーションに用いた行列方程式を利用して、学習にかかる処理負担の低減化を図ることができる。
【0214】
情報処理装置100によれば、それぞれ同種の異なる行列方程式を反復解法により解く複数のシミュレーションが実行される場合に、処理を行うことができる。情報処理装置100によれば、シミュレーションが実行される都度、当該シミュレーションが実行される際に反復解法により解く対象となる行列方程式を形成する行列を取得することができる。これにより、情報処理装置100は、複数のシミュレーションを通して機械学習モデルを更新することができ、機械学習モデルを効率よく更新していくことができる。このため、情報処理装置100は、シミュレーションが実行されるほど、機械学習モデルの求解精度を向上していくことができる。また、情報処理装置100は、複数のシミュレーションを通して機械学習モデルを利用することができ、後に実行されるシミュレーションほど、精度よく解を求めることができる。
【0215】
情報処理装置100によれば、所定の行列方程式に、反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式を採用することができる。情報処理装置100によれば、反復解法において、前処理を実施する前に、入力の対象を設定することができる。情報処理装置100によれば、設定された入力の対象を機械学習モデルに入力したことに応じて、機械学習モデルから出力された第2の行列に基づいて、前処理を実施することができる。これにより、情報処理装置100は、要素間のスケールを合わせ、機械学習モデルを利用して、精度よく解を求めることができる。
【0216】
情報処理装置100によれば、所定の行列方程式に、反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式を採用することができる。情報処理装置100によれば、反復解法において、前処理を実施した後に、入力の対象を設定することができる。情報処理装置100によれば、設定された入力の対象に基づいて、機械学習モデルを更新することができる。これにより、情報処理装置100は、シミュレーションの実行中、求解精度が比較的よい機械学習モデルを、効率よく学習することができる。情報処理装置100は、例えば、シミュレーションに用いた行列方程式を利用して、学習にかかる処理負担の低減化を図ることができる。
【0217】
情報処理装置100によれば、それぞれ同種の異なる行列方程式を反復解法により解く複数のシミュレーションが実行される場合に、処理を行うことができる。情報処理装置100によれば、シミュレーションが実行される都度、当該シミュレーションが実行される際に反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる行列方程式を形成する行列を取得することができる。これにより、情報処理装置100は、複数のシミュレーションを通して機械学習モデルを更新することができ、機械学習モデルを効率よく更新していくことができる。このため、情報処理装置100は、シミュレーションが実行されるほど、機械学習モデルの求解精度を向上していくことができる。また、情報処理装置100は、複数のシミュレーションを通して機械学習モデルを利用することができ、後に実行されるシミュレーションほど、精度よく解を求めることができる。
【0218】
情報処理装置100によれば、機械学習モデルの求解精度が閾値未満であると判定した場合に、設定された入力の対象に基づいて、機械学習モデルを更新することができる。これにより、情報処理装置100は、処理量の低減化を図ることができる。
【0219】
情報処理装置100によれば、さらに、設定された入力の対象に摂動行列を加えて得られる新たな入力の対象に基づいて、機械学習モデルを更新することができる。これにより、情報処理装置100は、さらに、機械学習モデルの求解精度を向上させやすくすることができる。
【0220】
情報処理装置100によれば、それぞれのブロックにおいて、絶対値が最大となるいずれかの要素の逆数に、所定値を乗算して得られるスケーリング係数を算出することができる。情報処理装置100によれば、それぞれのブロックについて算出されたスケーリング係数を、当該ブロックに含まれる複数の要素のそれぞれの要素に乗算することができる。これにより、情報処理装置100は、適切なスケーリング係数に基づいて、要素間のスケールを合わせることができるため、求解精度が比較的よい機械学習モデルを学習することができる。
【0221】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した情報処理プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0222】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0223】
(付記1)所定の行列方程式を形成する行列を取得し、
取得した前記行列に含まれる複数の要素のそれぞれの要素の属性に基づいて、取得した前記行列を、それぞれ同一の属性の要素を含む複数のブロックに分割し、
分割した前記複数のブロックのそれぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更し、
前記それぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更した後の前記行列を、行列演算を行う機械学習モデルへの入力の対象に設定する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0224】
(付記2)前記取得する処理は、前記所定の行列方程式の係数を示す第1の行列と、前記第1の行列と前記所定の行列方程式の解を示す第2の行列との積を示す第3の行列とのそれぞれの行列を取得する、ことを特徴とする付記1に記載の情報処理プログラム。
【0225】
(付記3)前記取得する処理は、前記所定の行列方程式の解を示す第2の行列を取得する、ことを特徴とする付記1または2に記載の情報処理プログラム。
【0226】
(付記4)取得した前記行列について、当該行列に含まれる複数の要素のそれぞれの要素を形成する基数を示す第4の行列と、当該行列に含まれる複数の要素のそれぞれの要素を形成する指数を示す第5の行列とを特定する、処理を前記コンピュータに実行させ、
前記設定する処理は、取得した前記行列について、特定した前記第4の行列と、特定した前記第5の行列とを、前記機械学習モデルへの入力の対象に設定する、ことを特徴とする付記1~3のいずれか一つに記載の情報処理プログラム。
【0227】
(付記5)前記所定の行列方程式は、反復解法により解く対象となる行列方程式であり、
前記設定する処理は、前記所定の行列方程式を反復解法により解く前に、前記コンピュータに実行され、
設定された前記入力の対象を前記機械学習モデルに入力したことに応じて、前記機械学習モデルから出力された前記所定の行列方程式の解を示す第2の行列を、前記所定の行列方程式を反復解法により解く際に用いられる初期値に設定する、
処理を前記コンピュータに実行させることを特徴とする付記1~4のいずれか一つに記載の情報処理プログラム。
【0228】
(付記6)前記所定の行列方程式は、反復解法により解く対象となる行列方程式であり、
前記設定する処理は、前記所定の行列方程式を反復解法により解いた後に、前記コンピュータに実行され、
設定された前記入力の対象に基づいて、前記機械学習モデルを更新する、
処理を前記コンピュータに実行させることを特徴とする付記1~4のいずれか一つに記載の情報処理プログラム。
【0229】
(付記7)前記取得する処理は、それぞれ同種の異なる行列方程式を反復解法により解く複数のシミュレーションが実行される場合、当該シミュレーションが実行される都度、当該シミュレーションが実行される際に反復解法により解く対象となる行列方程式を形成する行列を取得する、ことを特徴とする付記5または6に記載の情報処理プログラム。
【0230】
(付記8)前記所定の行列方程式は、反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式であり、
前記設定する処理は、反復解法において、前記前処理を実施する前に、前記コンピュータに実行され、
設定された前記入力の対象を前記機械学習モデルに入力したことに応じて、前記機械学習モデルから出力された前記所定の行列方程式の解を示す第2の行列に基づいて、前記前処理を実施する、
処理を前記コンピュータに実行させることを特徴とする付記1~4のいずれか一つに記載の情報処理プログラム。
【0231】
(付記9)前記所定の行列方程式は、反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式であり、
前記設定する処理は、反復解法において、前記前処理を実施した後に、前記コンピュータに実行され、
設定された前記入力の対象に基づいて、前記機械学習モデルを更新する、
処理を前記コンピュータに実行させることを特徴とする付記1~4のいずれか一つに記載の情報処理プログラム。
【0232】
(付記10)前記取得する処理は、それぞれ同種の異なる行列方程式を反復解法により解く複数のシミュレーションが実行される場合、当該シミュレーションが実行される都度、当該シミュレーションが実行される際に反復解法において、いずれかの行列方程式の固有値分布を変更する前処理に用いられる、前処理行列を含む行列方程式を形成する行列を取得する、ことを特徴とする付記8または9に記載の情報処理プログラム。
【0233】
(付記11)前記更新する処理は、前記機械学習モデルの求解精度が閾値未満であると判定した場合に、設定された前記入力の対象に基づいて、前記機械学習モデルを更新する、ことを特徴とする付記6または9に記載の情報処理プログラム。
【0234】
(付記12)前記更新する処理は、さらに、設定された前記入力の対象に摂動行列を加えて得られる新たな入力の対象に基づいて、前記機械学習モデルを更新する、ことを特徴とする付記6または9に記載の情報処理プログラム。
【0235】
(付記13)前記それぞれのブロックにおいて、絶対値が最大となるいずれかの要素の逆数に、所定値を乗算して得られるスケーリング係数を算出し、
前記変更する処理は、前記それぞれのブロックについて算出された前記スケーリング係数を、当該ブロックに含まれる複数の要素のそれぞれの要素に乗算する、ことを特徴とする付記2に記載の情報処理プログラム。
【0236】
(付記14)所定の行列方程式を形成する行列を取得し、
取得した前記行列に含まれる複数の要素のそれぞれの要素の属性に基づいて、取得した前記行列を、それぞれ同一の属性の要素を含む複数のブロックに分割し、
分割した前記複数のブロックのそれぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更し、
前記それぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更した後の前記行列を、行列演算を行う機械学習モデルへの入力の対象に設定する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【0237】
(付記15)所定の行列方程式を形成する行列を取得し、
取得した前記行列に含まれる複数の要素のそれぞれの要素の属性に基づいて、取得した前記行列を、それぞれ同一の属性の要素を含む複数のブロックに分割し、
分割した前記複数のブロックのそれぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更し、
前記それぞれのブロックに含まれる複数の要素のそれぞれの要素のスケールを変更した後の前記行列を、行列演算を行う機械学習モデルへの入力の対象に設定する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【0238】
100 情報処理装置
101 行列方程式
102 機械学習モデル
200 情報処理システム
201 クライアント装置
210 ネットワーク
300 バス
301 CPU
302 メモリ
303 ネットワークI/F
304 記録媒体I/F
305 記録媒体
400 記憶部
401 取得部
402 分割部
403 変更部
404 設定部
405 生成部
406 求解部
407 出力部
500 初期値
501~504 解
600,700,800,1500,1600,1700 参考図
900,1000,1010,1100,1110,1120,1800,2300,2400 グラフ
901~903,1001,1011,1012,1801,1802,2401,2402 線
904,905 点
1201 解析部
1202 学習部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27