(57)【要約】【課題】入力と出力との関係を規定する近似関数を求める演算をコンピュータに実行させるためのプログラムを提供する。【解決手段】プログラムは、次のステップＳ１，Ｓ２を順次実行して近似関数を演算する。ステップＳ１は、サンプルデータに含まれるｍ１×Ｓ個の入力値及びＳ個の出力値を受付ける。ステップＳ２は、中間ユニットの個数を１個づつ増加させながら中間ユニットのパラメータｗｉｊ，θｊ，τｊを広い探索範囲で変化させて、ｍ１個の入力値と１個の出力値との関係を規定する近似関数が得られるように、３層ニューラルネットワークのパラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θを高次元アルゴリズムを用いて最適化する。【選択図】        図１７
2004258748.tif 000002
【特許請求の範囲】
【請求項１】
各々がｍ（ｍは自然数）個の入力値とｎ（ｎは自然数）個の出力値とから成るＳ（Ｓは自然数）個のサンプルデータを用いてｍ個の入力とｎ個の出力との関係を規定する近似関数を求める演算をコンピュータに実行させるためのプログラムであって、
前記ｍ×Ｓ個の入力値と前記ｎ×Ｓ個の出力値とを受付ける第１のステップと、
前記ｍ個の入力値に対してｎ個の出力演算値を演算する超球面識別タイプの３層ニューラルネットワークの全パラメータのうち、識別超球面のパラメータの値を通常の探索範囲よりも広い探索範囲で変化させて、前記超球面識別タイプの演算により前記ｍ×Ｓ個の入力値に対するｎ×Ｓ個の出力演算値を演算し、その演算したｎ×Ｓ個の出力演算値を用いて前記近似関数が得られるように前記全パラメータの値を最適化する第２のステップとをコンピュータに実行させ、
前記第２のステップは、前記全パラメータの数で定義される次元数よりも高い高次元空間を設定し、その設定した高次元空間において前記全パラメータの値が最適値以外である領域を素速く通過し、前記全パラメータの値が前記最適値である領域に容易に入ることが期待される高次元アルゴリズムにより前記全パラメータの最適化を行なう、コンピュータに実行させるためのプログラム。
【請求項２】
前記第２のステップは、前記３層ニューラルネットワークに含まれ、かつ、前記超球面識別タイプの演算を行なう中間ユニットの個数を初期値に設定して前記ｎ×Ｓ個の出力演算値を演算し、前記全パラメータの最適化を行なう、請求項１に記載のコンピュータに実行させるためのプログラム。
【請求項３】
前記第２のステップは、
前記全パラメータを初期値に設定して前記超球面識別タイプの演算により前記ｎ×Ｓ個の出力演算値を演算する第１のサブステップと、
前記演算されたｎ×Ｓ個の出力演算値を評価するコスト関数値を演算し、その演算したコスト関数値を所定値と比較する第２のサブステップと、
前記コスト関数値が前記所定値以下のとき、前記コスト関数値が得られるときの全パラメータの値を最適値とする第３のサブステップと、
前記コスト関数値が前記所定値よりも大きいとき、前記コスト関数値を低減させるための全パラメータを前記高次元アルゴリズムにより前記広い探索範囲で演算する第４のサブステップと、
前記第４のサブステップにより演算された全パラメータを用いて前記第１のサブステップを実行し、その後、前記第２から第４のサブステップを実行する第５のサブステップと、
前記第１から第５のサブステップを規定回数まで繰返し実行したときのコスト関数値が前記所定値よりも大きいとき、前記中間ユニットの個数を増加して前記第１から第５のサブステップを実行する第６のサブステップとを含む、請求項２に記載のコンピュータに実行させるためのプログラム。
【請求項４】
前記中間ユニットの個数は、１個づつ増加される、請求項３に記載のコンピュータに実行させるためのプログラム。
【請求項５】
前記中間ユニットの個数の初期値は、１である、請求項２から請求項４のいずれか１項に記載のコンピュータに実行させるためのプログラム。
【請求項６】
前記第２のステップは、前記全パラメータの数を初期値に設定して前記ｎ×Ｓ個の出力演算値を演算し、前記全パラメータの最適化を行なう、請求項１に記載のコンピュータに実行させるためのプログラム。
【請求項７】
前記第２のステップは、
前記全パラメータを初期値に設定して前記超球面識別タイプの演算により前記ｎ×Ｓ個の出力演算値を演算する第１のサブステップと、
前記演算されたｎ×Ｓ個の出力演算値を評価するコスト関数値を演算し、その演算したコスト関数値を所定値と比較する第２のサブステップと、
前記コスト関数値が前記所定値以下のとき、前記コスト関数値が得られるときの全パラメータの値を最適値とする第３のサブステップと、
前記コスト関数値が前記所定値よりも大きいとき、前記コスト関数値を低減させるための全パラメータを前記高次元アルゴリズムにより前記広い探索範囲で演算する第４のサブステップと、
前記第４のサブステップにより演算された全パラメータを用いて前記第１のサブステップを実行し、その後、前記第２から第４のサブステップを実行する第５のサブステップと、
前記第１から第５のサブステップを規定回数まで繰返し実行したときのコスト関数値が前記所定値よりも大きいとき、前記全パラメータの数を増加して前記第１から第５のサブステップを実行する第６のサブステップとを含む、請求項６に記載のコンピュータに実行させるためのプログラム。
【請求項８】
前記全パラメータは、所定数づつ増加され、
前記第１から第５のサブステップは、前記全パラメータの数が増加されたとき、前記全パラメータの数が増加される前の所定数のパラメータの値を固定して実行される、請求項７に記載のコンピュータに実行させるためのプログラム。
【請求項９】
前記全パラメータの数が増加される前の所定数のパラメータを第１のパラメータとし、前記増加された所定数のパラメータを第２のパラメータとしたとき、
前記第４のサブステップは、前記第１のパラメータを固定し、前記第２のパラメータを前記広い探索範囲で変化させて前記高次元アルゴリズムにより前記コスト関数値を低減させるための全パラメータを演算する、請求項８に記載のコンピュータに実行させるためのプログラム。
【請求項１０】
前記第２のサブステップは、前記受付けたｎ×Ｓ個の出力値と前記演算されたｎ×Ｓ個の出力演算値との二乗誤差の和の平均を前記コスト関数値として演算する、請求項３〜５及び請求項７〜９のいずれか１項に記載のコンピュータに実行させるためのプログラム。
【請求項１１】
前記ｎ×Ｓ個の出力値は、ガウシャン様の分布の結合により近似される、請求項１から請求項１０のいずれか１項に記載のコンピュータに実行させるためのプログラム。
【請求項１２】
前記ｍ×Ｓ個の入力値及び前記ｎ×Ｓ個の出力値は、コンピュータにより演算されたデータである、請求項１から請求項１１のいずれか１項に記載のコンピュータに実行させるためのプログラム。
【請求項１３】
前記ｍ×Ｓ個の入力値及び前記ｎ×Ｓ個の出力値は、微小構造中に閉じ込められた粒子の量子準位を演算する量子準位演算プログラムによって演算されたデータであり、
前記量子準位演算プログラムは、
線形のシュレディンガー方程式に基づいて初期の波動関数を演算し、その演算された初期の波動関数を複数の離散化された成分から成る数値列として与えるステップＡと、
前記離散化された複数の成分を持つ第１の波動関数と粒子の相互作用を考慮した非線形項を含むハミルトニアンとを用いて前記微小構造中に存在する粒子数で規格化され、かつ、全系のエネルギーを示すコスト関数を演算するステップＢと、
前記演算されたコスト関数を用いて、系の全体エネルギーが最小となる最終的な波動関数を演算するステップＣと、
前記最終的な波動関数と前記ハミルトニアンとを用いて前記最終的な波動関数で表わされる状態のエネルギーを演算するステップＤとを含む、請求項１２に記載のコンピュータに実行させるためのプログラム。
【請求項１４】
前記高次元アルゴリズムは、
解くべき問題に現われ、かつ、前記最適化すべき全パラメータの空間を意味空間と定義するステップと、
前記全パラメータと共役な共役パラメータによって新しい空間を定義するステップと、
前記意味空間に前記新しい空間を加えて高次元空間を定義するステップと、
前記高次元空間において問題を設定するステップと、
前記全パラメータの値が最適値以外の値である領域を素速く通過し、前記全パラメータの値が最適値である領域に容易に入ることが期待される自律的運動を前記高次元空間において行なって前記全パラメータの最適値を検出するステップとから成る、請求項１から請求項１３のいずれか１項に記載のコンピュータに実行させるためのプログラム。
【請求項１５】
請求項１から請求項１４のいずれか１項に記載されたプログラムを記録したコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、入力と出力との関係を規定する近似関数を求める演算をコンピュータに実行させるためのプログラム及びそのプログラムを記録したコンピュータ読取り可能な記録媒体に関するものである。
【０００２】
【従来の技術】
自己相互作用を考慮した精度の高い量子状態計算法がいくつか提案されている。いずれの方法も、量子井戸の構造パラメータ及び量子井戸に印加される外部電場等を入力変数の組とし、その入力変数の組からある１つの値の組が抽出されると、その抽出された１つの値の組を入力として微分方程式の積分及び各種パラメータの最適化等の計算量の多い演算を実行する。そして、与えられた入力に対して、物理的に許容されるエネルギー準位又は波動関数等が出力として計算される。
【０００３】
なお、以上、本発明についての従来の技術を、出願人の知得した一般的技術情報に基づいて説明したが、出願人の記憶する範囲において、出願前までに先行技術文献情報として開示すべき情報を出願人は有していない。
【０００４】
【発明が解決しようとする課題】
しかし、従来の方法では、個々の入力値に対して出力値を求めるために、計算のための専用のプログラム及び十分な計算リソース（メモリ及びＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等）が必要である。また、実際のナノデバイスの設計においては、具体的な要求条件は、殆どの場合、エネルギー準位及び波動関数等、上述した計算手法の出力に対して課される。即ち、量子井戸におけるエネルギー準位又は波動関数が設計値として与えられ、その与えられたエネルギー準位又は波動関数を実現するために、井戸層の幅、井戸層のバンドギャップ、バリア層の高さ、バリア層の幅、バリア層のバンドギャップ及び井戸層又はバリア層におけるドーパントのドーピング量等のパラメータをどのように設定すればよいかを解く必要がある。
【０００５】
この場合、上述した従来の方法を用いれば、試行錯誤的に入力値を変えながら条件を満たす系を探さなければならないが、そのためには、膨大な計算量が必要になり、ナノデバイスの設計の度に演算を行なうのは効率的でない。
【０００６】
そこで、この発明は、かかる問題を解決するためになされたものであり、その目的は、入力と出力との関係を規定する近似関数を求める演算をコンピュータに実行させるためのプログラムを提供することである。
【０００７】
また、この発明の別の目的は、入力と出力との関係を規定する近似関数を求める演算をコンピュータに実行させるためのプログラムを記録したコンピュータ読取り可能な記録媒体を提供することである。
【０００８】
【課題を解決するための手段および発明の効果】
この発明によれば、各々がｍ（ｍは自然数）個の入力値とｎ（ｎは自然数）個の出力値とから成るＳ（Ｓは自然数）個のサンプルデータを用いてｍ個の入力とｎ個の出力との関係を規定する近似関数を求める演算をコンピュータに実行させるためのプログラムは、ｍ×Ｓ個の入力値とｎ×Ｓ個の出力値とを受付ける第１のステップと、ｍ個の入力値に対してｎ個の出力演算値を演算する超球面識別タイプの３層ニューラルネットワークの全パラメータのうち、識別超球面のパラメータの値を通常の探索範囲よりも広い探索範囲で変化させて、超球面識別タイプの演算によりｍ×Ｓ個の入力値に対するｎ×Ｓ個の出力演算値を演算し、その演算したｎ×Ｓ個の出力演算値を用いて近似関数が得られるように全パラメータの値を最適化する第２のステップとをコンピュータに実行させ、第２のステップは、全パラメータの数で定義される次元数よりも高い高次元空間を設定し、その設定した高次元空間において全パラメータの値が最適値以外である領域を素速く通過し、全パラメータの値が最適値である領域に容易に入ることが期待される高次元アルゴリズムにより全パラメータの最適化を行なう、コンピュータに実行させるためのプログラムである。
【０００９】
好ましくは、第２のステップは、３層ニューラルネットワークに含まれ、かつ、超球面識別タイプの演算を行なう中間ユニットの個数を初期値に設定してｎ×Ｓ個の出力演算値を演算し、全パラメータの最適化を行なう。
【００１０】
好ましくは、第２のステップは、全パラメータを初期値に設定して超球面識別タイプの演算によりｎ×Ｓ個の出力演算値を演算する第１のサブステップと、演算されたｎ×Ｓ個の出力演算値を評価するコスト関数値を演算し、その演算したコスト関数値を所定値と比較する第２のサブステップと、コスト関数値が所定値以下のとき、コスト関数値が得られるときの全パラメータの値を最適値とする第３のサブステップと、コスト関数値が所定値よりも大きいとき、コスト関数値を低減させるための全パラメータを高次元アルゴリズムにより広い探索範囲で演算する第４のサブステップと、第４のサブステップにより演算された全パラメータを用いて第１のサブステップを実行し、その後、第２から第４のサブステップを実行する第５のサブステップと、第１から第５のサブステップを規定回数まで繰返し実行したときのコスト関数値が所定値よりも大きいとき、中間ユニットの個数を増加して第１から第５のサブステップを実行する第６のサブステップとを含む。
【００１１】
好ましくは、中間ユニットの個数は、１個づつ増加される。
好ましくは、中間ユニットの個数の初期値は、１である。
【００１２】
好ましくは、第２のステップは、全パラメータの数を初期値に設定してｎ×Ｓ個の出力演算値を演算し、全パラメータの最適化を行なう。
【００１３】
好ましくは、第２のステップは、全パラメータを初期値に設定して超球面識別タイプの演算によりｎ×Ｓ個の出力演算値を演算する第１のサブステップと、演算されたｎ×Ｓ個の出力演算値を評価するコスト関数値を演算し、その演算したコスト関数値を所定値と比較する第２のサブステップと、コスト関数値が所定値以下のとき、コスト関数値が得られるときの全パラメータの値を最適値とする第３のサブステップと、コスト関数値が所定値よりも大きいとき、コスト関数値を低減させるための全パラメータを高次元アルゴリズムにより広い探索範囲で演算する第４のサブステップと、第４のサブステップにより演算された全パラメータを用いて第１のサブステップを実行し、その後、第２から第４のサブステップを実行する第５のサブステップと、第１から第５のサブステップを規定回数まで繰返し実行したときのコスト関数値が所定値よりも大きいとき、全パラメータの数を増加して第１から第５のサブステップを実行する第６のサブステップとを含む。
【００１４】
好ましくは、全パラメータは、所定数づつ増加される。そして、プログラムの第１から第５のサブステップは、全パラメータの数が増加されたとき、全パラメータの数が増加される前の所定数のパラメータの値を固定して実行される。
【００１５】
好ましくは、全パラメータの数が増加される前の所定数のパラメータを第１のパラメータとし、増加された所定数のパラメータを第２のパラメータとしたとき、第４のサブステップは、第１のパラメータを固定し、第２のパラメータを広い探索範囲で変化させて高次元アルゴリズムによりコスト関数値を低減させるための全パラメータを演算する。
【００１６】
好ましくは、第２のサブステップは、受付けたｎ×Ｓ個の出力値と演算されたｎ×Ｓ個の出力演算値との二乗誤差の和の平均をコスト関数値として演算する。
【００１７】
好ましくは、ｎ×Ｓ個の出力値は、ガウシャン様の分布の結合により近似される。
【００１８】
好ましくは、ｍ×Ｓ個の入力値及びｎ×Ｓ個の出力値は、コンピュータにより演算されたデータである。
【００１９】
好ましくは、ｍ×Ｓ個の入力値及びｎ×Ｓ個の出力値は、微小構造中に閉じ込められた粒子の量子準位を演算する量子準位演算プログラムによって演算されたデータである。そして、量子準位演算プログラムは、線形のシュレディンガー方程式に基づいて初期の波動関数を演算し、その演算された初期の波動関数を複数の離散化された成分から成る数値列として与えるステップＡと、離散化された複数の成分を持つ第１の波動関数と粒子の相互作用を考慮した非線形項を含むハミルトニアンとを用いて微小構造中に存在する粒子数で規格化され、かつ、全系のエネルギーを示すコスト関数を演算するステップＢと、演算されたコスト関数を用いて、系の全体エネルギーが最小となる最終的な波動関数を演算するステップＣと、最終的な波動関数とハミルトニアンとを用いて最終的な波動関数で表わされる状態のエネルギーを演算するステップＤとを含む。
【００２０】
好ましくは、高次元アルゴリズムは、解くべき問題に現われ、かつ、最適化すべき全パラメータの空間を意味空間と定義するステップと、全パラメータと共役な共役パラメータによって新しい空間を定義するステップと、意味空間に新しい空間を加えて高次元空間を定義するステップと、高次元空間において問題を設定するステップと、全パラメータの値が最適値以外である領域を素速く通過し、全パラメータの値が最適値である領域に容易に入ることが期待される自律的運動を高次元空間において行なって全パラメータの最適値を検出するステップとから成る。
また、この発明によれば、近似関数を求める演算をコンピュータに実行させるためのプログラムを記録したコンピュータ読取り可能な記録媒体は、請求項１から請求項１４のいずれか１項に記載されたプログラムを記録したコンピュータ読取り可能な記録媒体である。
【００２１】
この発明によるプログラムは、超球面識別タイプの演算を行なうときの超球面パラメータを通常の探索範囲より広い範囲で変化させて３層ニューラルネットワークにより入力値に対する出力演算値を演算する。そして、この発明によるプログラムは、その演算した出力演算値を評価するコスト関数が所定値以下になるように高次元アルゴリズムを用いてパラメータを最適化し、入力値と出力値との関係を規定する近似関数を演算する。
【００２２】
従って、この発明によれば、入力値に対する出力値を容易に得ることが可能な近似関数を求めることができる。
【００２３】
また、この発明においては、プログラムは、出力演算値を演算する際、パラメータの探索範囲を通常の探索範囲よりも広い範囲で変化させ、超球面識別タイプの演算を行なう。
【００２４】
従って、この発明によれば、局所的特徴及び大局的特徴の両方を効率良く出力演算値に反映させることができる。
【００２５】
更に、この発明においては、プログラムは、３層ニューラルネットワークのパラメータの数により設定される次元数よりも高い高次元空間において自律的運動を行なう高次元アルゴリズムを用いてパラメータの最適化を行なう。そして、自律的運動とは、パラメータの最適値以外の値が存在する領域を素速く通過し、最適値が存在する領域に容易に入る運動を言う。
【００２６】
従って、この発明によれば、出力演算値を評価するコスト関数の局所解に捉まりにくく、かつ、コスト関数の平坦領域を素速く通過してパラメータを最適化できる。
【００２７】
特に、超球面識別タイプの演算を行なう際にパラメータの探索範囲を広くすると、コスト関数の平坦領域が増加するが、高次元アルゴリズムは、平坦領域を素速く通過して最適解に到達する特徴を有するので、局所的特徴及び大局的特徴の両方を出力演算値に反映させ、かつ、早くパラメータを最適化できる。
【００２８】
【発明の実施の形態】
本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
【００２９】
図１は、この発明によるプログラムが近似関数を求める演算に用いる入力値と出力値とを示す。集合１０は、入力値の組を示し、（ｘ１（１），・・・，ｘｍ１（１））、（ｘ１（２），・・・，ｘｍ１（２））、・・・、（ｘ１（Ｓ），・・・，ｘｍ１（Ｓ））、・・・、（ｘ１（Ｍ），・・・，ｘｍ１（Ｍ））を含む。また、集合２０は、出力値の集合を示し、ｚ（１）、ｚ（２）、・・・、ｚ（Ｓ）、・・・、ｚ（Ｍ）を含む（Ｓ，Ｍ：自然数）。
【００３０】
そして、出力値ｚ（１）は、入力値の組（ｘ１（１），・・・，ｘｍ１（１））に対して得られ、出力値ｚ（２）は、入力値の組（ｘ１（２），・・・，ｘｍ１（２））に対して得られ、以下、同様にして出力値ｚ（Ｍ）は、入力値の組（ｘ１（Ｍ），・・・，ｘｍ１（Ｍ））に対して得られる。また、集合１０に含まれる入力値の組（ｘ１（１），・・・，ｘｍ１（１））、（ｘ１（２），・・・，ｘｍ１（２））、・・・、（ｘ１（Ｓ），・・・，ｘｍ１（Ｓ））、・・・、（ｘ１（Ｍ），・・・，ｘｍ１（Ｍ））及び集合２０に含まれる出力値ｚ（１）、ｚ（２）、・・・、ｚ（Ｓ）、・・・、ｚ（Ｍ）は、コンピュータによって予め正確に演算された値である。
【００３１】
なお、これらの入力値の組及び出力値を求める方法については後述する。
集合１０及び２０から近似関数を求める演算に用いるためのサンプルデータ３０が生成される。即ち、サンプルデータ３０は、サンプル１〜サンプルＳから成る。そして、サンプル１は、入力値の組（ｘ１（１），・・・，ｘｍ１（１））と出力値ｚ（１）とから成り、サンプル２は、入力値の組（ｘ１（２），・・・，ｘｍ１（２））と出力値ｚ（２）とから成り、以下、同様にしてサンプルＳは、入力値の組（ｘ１（Ｓ），・・・，ｘｍ１（Ｓ））と出力値ｚ（Ｓ）とから成る。つまり、サンプルデータ３０は、集合１０及び２０に含まれる入力値の組及び出力値から抽出された一部の入力値の組及び出力値によって構成される。
【００３２】
このようにして、近似関数を求める演算に用いるべきサンプルデータ３０が準備される。
【００３３】
この発明によるプログラムは、サンプルデータ３０を用いて入力値（（ｘ１（１），・・・，ｘｍ１（１））、（ｘ１（２），・・・，ｘｍ１（２））、・・・、（ｘ１（Ｓ），・・・，ｘｍ１（Ｓ））と出力値（ｚ（１）、ｚ（２）、・・・、ｚ（Ｓ））との関係を規定する近似関数（ｚ（ｎ）≒ｆ（ｘ１（ｎ），・・・，ｘｍ１（ｎ））、（ｎ＝１，・・・Ｓ）を満たす関数ｆ）を３層ニューラルネットワークに基づく関数モデル及び高次元アルゴリズム（新上和正、「高次元アルゴリズム」、Ｂｉｔ，Ｖｏｌ．３１．Ｎｏ．７，ｐｐ．２−８（１９９９）、新上和正、「高次元アルゴリズム：最適化問題を解く１つの方法」、日本ファジィ学会誌、Ｖｏｌ．１１，Ｎｏ．３，ｐｐ．３８２−３９６（１９９９）参照）を用いて演算する。なお、以下においては、３層ニューラルネットワークに基づく関数モデルによる演算を単に「３層ニューラルネットワークによる演算」と言う。
【００３４】
図２は、入力変数が２個の場合における入力値と出力値との関係を示す。図２の（ａ）は、２個の入力値の組ｘ１（ｎ），ｘ２（ｎ）と、２個の入力値の組ｘ１（ｎ），ｘ２（ｎ）のプロット点及び関数ｆの等高線とを示す。図２の（ａ）において、黒丸は、２個の入力値の組ｘ１（ｎ），ｘ２（ｎ）の各々が［０，１］の範囲で変化した場合における２個の入力値の組ｘ１（ｎ），ｘ２（ｎ）のプロット点を示し、実線は、関数ｆの等高線を示す。また、図２の（ｂ）は、関数ｆの３次元表現である。
【００３５】
この場合、サンプルデータ３０は、２個の入力値の組ｘ１（ｎ），ｘ２（ｎ）を含むので、２個の入力値の組ｘ１（ｎ），ｘ２（ｎ）は、プロット点（１），（２），・・・，（Ｓ）によって表わされる。そして、プロット点（１），（２），・・・，（Ｓ）の各々が入力値として入力された場合、等高線１〜６によって表わされる出力値が得られる。この等高線１〜６によって表わされた曲面を３次元表現したものが図２の（ｂ）に示す曲面７である。従って、プロット点（１），（２），・・・，（Ｓ）を入力値とした場合の出力値は、曲面７上に存在することになり、この発明によるプログラムは、プロット点（１），（２），・・・，（Ｓ）に対して曲面７を表わす関数ｆを３層ニューラルネットワーク及び高次元アルゴリズムを用いて演算する。
【００３６】
曲面７は、なだらかな曲面から成る。つまり、フーリエ級数又は三角関数の級数和によって表わした方が適切な激しい振動を多く含む曲面ではなく、ガウシャン様の分布の結合により表わされる。従って、この発明によるプログラムを用いて関数ｆを求める演算を行なう場合、好ましくは、出力値（ｚ（１）、ｚ（２）、・・・、ｚ（Ｓ））は、ガウシャン様の分布の結合により表わされるような「なだらな曲面」を構成する。
【００３７】
なお、この発明において、「なだらかな曲面」とは、ガウシャン様の分布の結合により表わされる曲面を言う。
【００３８】
図３は、この発明によるプログラムが入力値に対する出力演算値Ｚ（ｎ）を演算する３層ニューラルネットワークの概念図を示す。３層ニューラルネットワーク４０は、入力層４１と、中間層４２と、出力層４３とを含む。
【００３９】
入力層４１は、ｍ１個の入力ユニット４１ｉ（ｉ＝１，・・・，ｍ１）から成る。中間層４２は、ｍ２個の中間ユニット４２ｊ（ｊ＝１，・・・，ｍ２）から成る。出力層４３は、１個の出力ユニット４３１から成る。
【００４０】
入力ユニット４１ｉは、入力層４１のｉ番目のユニットに入力される入力値ｘｉ（ｎ）を受け、その受けた入力値ｘｉ（ｎ）をｍ２個の中間ユニット４２ｊの各々に伝達する。
【００４１】
中間層４２は、入力値と出力値との間の特徴抽出の主要な役割を担う層である。中間ユニット４２ｊの内部状態、出力及び閾値をそれぞれｙｊ，Ｙｊ，θｊとし、ｉ番目の入力ユニット４１ｉとｊ番目の中間ユニット４２ｊとの間の結合のパラメータをｗｉｊとしたとき、中間ユニット４２ｊは、式（１）により内部状態ｙｊを演算する。
【００４２】
【数１】
2004258748.tif 000003
【００４３】
即ち、中間ユニット４２ｊは、超球面識別タイプの演算を行なう。中間ユニット４２ｊが超球面識別タイプの演算を行なう理由については後述する。
【００４４】
そして、中間ユニット４２ｊは、演算した内部状態ｙｊを式（２）に代入して出力Ｙｊを演算する。
【００４５】
【数２】
2004258748.tif 000004
【００４６】
即ち、中間ユニット４２ｊは、シグモイド関数により出力Ｙｊを演算する。式（２）において、Ｔｊは、シグモイド関数の遷移領域のスロープを調整するパラメータである。この実施の形態においては、式（２）の右辺の分母に含まれる指数関数が数値的に発散するのを防止するためにＴｊは、式（３）により定義される。
【００４７】
【数３】
2004258748.tif 000005
【００４８】
式（３）において、τｊは、中間ユニット４２ｊの出力関数の傾きを表わす。
中間ユニット４２ｊは、出力Ｙｊを演算すると、その演算した出力Ｙｊを出力層４３の出力ユニット４３１へ出力する。
【００４９】
出力層４３は、ｍ２個の中間ユニット４２ｊの各々の出力結果を適切な重み付けにより最終出力の調整を行なう。従って、出力ユニット４３１は、式（４）により出力演算値Ｚ１（ｎ）を演算する。
【００５０】
【数４】
2004258748.tif 000006
【００５１】
式（４）において、Ｗｊは、ｊ番目の中間ユニット４２ｊとの結合重みであり、Θは、出力ユニット４３１の閾値である。
【００５２】
なお、この発明においては、中間ユニットの個数は、最初、１個に設定され、その設定された１個の中間ユニットを用いた近似関数ｆを求める演算結果に応じて、１個づつ増加される。従って、出力ユニット４３１は、最初、中間ユニット４２１からの出力Ｙ１と、結合重みＷ１とを式（４）に代入して出力演算値Ｚ１（ｎ）を演算し、中間ユニットの個数が増加されれば、その増加された中間ユニットからの出力及び増加された中間ユニットとの結合重みを用いて出力演算値Ｚ１（ｎ）を演算する。
【００５３】
このように、３層ニューラルネットワーク４０は、ｍ１個の入力値（ｘ１（ｎ），・・・，ｘｍ１（ｎ））に対して、θｊ，ｗｉｊ，τｊ，Ｗｊ，Θをパラメータとして１個の出力演算値Ｚ１（ｎ）を演算する。そして、Ｓ個のサンプル１〜Ｓの各々は、ｍ１個のデータから成る入力値（ｘ１（ｎ），・・・，ｘｍ１（ｎ））を含むので、３層ニューラルネットワーク４０は、ｍ１×Ｓ個の入力値に対してＳ個の出力演算値Ｚ１（１），・・・，Ｚ１（Ｓ）を演算する。
【００５４】
中間ユニット４２ｊが内部状態ｙｊを求めるために式（１）により超球面識別タイプの演算を行なう理由について説明する。一般に、内部状態ｙｊを求めるために式（５）により表わされる入力値ｘｉ（ｎ）と結合のパラメータｗｉｊとの積和演算がよく使用される。
【００５５】
【数５】
2004258748.tif 000007
【００５６】
この場合、識別曲面の方程式ｙｊ＝０は、１つの超平面を指定する。その例を図４及び図５に示す。図４は、２個の入力値の組ｘ１（ｎ），ｘ２（ｎ）を用いた場合に式（５）を用いて演算された内部状態ｙｊを示す。また、図５は、２個の入力値の組ｘ１（ｎ），ｘ２（ｎ）を用いた場合の中間ユニットからの出力Ｙｊを示す。
【００５７】
図４に示すように、識別曲面の方程式ｙｊ＝０は、１つの超平面５０を指定する。そして、図５に示すように、中間ユニットの出力Ｙｊは、超平面５０を境界にして変化する曲面によって表わされる。超平面５０の両側の領域５１及び５２は、ほぼ平坦であり、領域５１及び５２の各々において、更に狭い領域における特徴を表現することはできない。即ち、２個の入力値の組ｘ１（ｎ），ｘ２（ｎ）に対して演算された中間ユニットの出力Ｙｊは、超平面５０を境界にして変化するという大局的特徴を表現できるが、領域５１及び５２の更に狭い領域における局所的特徴を表現することができない。
【００５８】
式（５）を用いて内部状態ｙｊを演算することを超平面識別タイプの演算をすると言う。そして、超平面識別タイプの演算を行なった場合、上述したように、大局的特徴を表現できるが、１つの中間ユニットで局所的特徴を表現することはできない。局所的特徴を表現するには多数の中間ユニットを要する。
【００５９】
一方、式（１）を用いて内部状態ｙｊを演算した場合、識別曲面の方程式ｙｊ＝０は、１つの超球面を指定する。その例を図６及び図７に示す。図６は、２個の入力値の組ｘ１（ｎ），ｘ２（ｎ）を用いた場合に式（１）を用いて演算された内部状態ｙｊを示す。また、図７は、２個の入力値の組ｘ１（ｎ），ｘ２（ｎ）を用いた場合の中間ユニット４２ｊからの出力Ｙｊを示す。
【００６０】
図６に示すように、識別球面の方程式ｙｊ＝０は、１つの超球面６０を指定する。そして、図７に示すように、中間ユニット４２ｊの出力Ｙｊは、超球面６０の外側では平面であり、超球面６０の内側では凸曲面になる。また、超球面６０は、一般的には狭い領域に形成される。従って、中間ユニット４２ｊの内部状態ｙｊを超球面識別タイプの演算により求めることにより局所的特徴を表現することができる。
【００６１】
上述したように、超平面識別タイプの演算により内部状態ｙｊを求めれば、大局的特徴を表現できるが、局所的特徴を表現できない。一方、超球面識別タイプの演算により内部状態ｙｊを求めれば、局所的特徴を表現できるが、大局的特徴を表現することができない。
【００６２】
従って、理想的には、局所的特徴の表現に有利な中間ユニットと、大局的特徴の表現に有利な中間ユニットとを揃えればよいが、それぞれどれだけの個数を揃えればよいかが未知であるため超平面識別タイプの演算及び超球面識別タイプの演算を混在して行なえば、計算量が増加する。
【００６３】
そこで、この発明においては、局所的特徴の表現に有利な超球面識別タイプの演算を採用し、中間ユニット４２ｊが内部状態ｙｊ及び出力Ｙｊを演算する際のパラメータ（θｊ，ｗｉｊ，τｊ）を通常の探索範囲よりも広い範囲で変化させることにより大局的特徴を表現することにした。
【００６４】
２個の入力値の組ｘ１（ｎ），ｘ２（ｎ）を用いた場合、識別曲面の方程式ｙｊ＝０は、式（１）より、パラメータｗｉｊを中心とし、パラメータθｊを半径とする円を指定する。パラメータθｊ及びｗｉｊの範囲を変えた場合の関数ｆの変化について説明する。
【００６５】
図８は、パラメータθｊ及びｗｉｊの範囲を局所的特徴に相応する小さな半径にした場合における識別超球面の取り得る相対的位置関係と中間ユニット４２ｊの出力例とを示す。図９は、パラメータθｊ及びｗｉｊの範囲を広くした場合における識別超球面の取り得る相対的位置関係と中間ユニット４２ｊの出力例とを示す。図１０は、パラメータｗｉｊ（中心）が入力変数ｘ１，ｘ２の定義域外に存在する小さな超球である場合における識別超球面の取り得る相対的位置関係と中間ユニット４２ｊの出力例とを示す。
【００６６】
パラメータ（ｗ１ｊ，ｗ２ｊ）（中心）が入力変数ｘ１，ｘ２の定義域内（［０，１］２の範囲）にあって、パラメータθｊ（半径）の取り得る範囲が［０，０．５］程度と小さい場合（図８の（ａ）参照）、中間ユニット４２ｊは、局所的特徴を反映した曲面６１又は６２によって表わされる出力Ｙｊを出力する（図８の（ｂ）参照）。
【００６７】
曲面６１は、パラメータ（ｗ１ｊ，ｗ２ｊ）（中心）が（０．５，０．５）であり、パラメータθｊ（半径）が０．１であり、Ｔｊが０．０３である場合に得られる。また、曲面６２は、パラメータ（ｗ１ｊ，ｗ２ｊ）（中心）が（０．５，０．５）であり、パラメータθｊ（半径）が０．１であり、Ｔｊが０．０５である場合に得られる。
【００６８】
このように、パラメータ（ｗ１ｊ，ｗ２ｊ）（中心）を入力変数ｘ１，ｘ２の定義域内に設定し、パラメータθｊ（半径）を小さい値にした場合、中間ユニット４２ｊは、局所的特徴を反映した曲面６１及び６２によって表わされる出力Ｙｊを出力する。
【００６９】
パラメータ（ｗ１ｊ，ｗ２ｊ）（中心）が入力変数ｘ１，ｘ２の定義域外（［−０．２，１．２］２の範囲）にあって、パラメータθｊ（半径）の取り得る範囲が［０，１．５］と大きい場合（図９の（ａ）参照）、中間ユニット４２ｊは、曲面６３又は６４によって表わされる出力Ｙｊを出力する（図９の（ｂ）参照）。
【００７０】
曲面６３は、パラメータ（ｗ１ｊ，ｗ２ｊ）（中心）が（１．２，１．２）であり、パラメータθｊ（半径）が１．０であり、Ｔｊが０．１である場合に得られる。また、曲面６４は、パラメータ（ｗ１ｊ，ｗ２ｊ）（中心）が（１．２，１．２）であり、パラメータθｊ（半径）が１．０であり、Ｔｊが０．５である場合に得られる。
【００７１】
曲面６３及び６４は、図５に示す曲面に似た曲面である。従って、パラメータ（ｗ１ｊ，ｗ２ｊ）（中心）を入力変数ｘ１，ｘ２の定義域外に設定し、パラメータθｊ（半径）を大きい値にした場合、中間ユニット４２ｊは、大局的特徴を反映した曲面６３及び６４によって表わされる出力Ｙｊを出力する。つまり、中間ユニット４２ｊは、近似的に超平面識別タイプの演算を行なう。このことは、超球面識別タイプの演算においてパラメータθｊ及びｗｉｊの範囲を局所的特徴を反映する範囲よりも広い範囲に設定することによって、中間ユニット４２ｊは、大局的特徴を反映した出力Ｙｊを出力できることを意味する。
【００７２】
パラメータ（ｗ１ｊ，ｗ２ｊ）（中心）が入力変数ｘ１，ｘ２の定義域外にあって、パラメータθｊ（半径）が小さい場合（図１０の（ａ）参照）、中間ユニット４２ｊは、曲面６５によって表わされる出力Ｙｊを出力する（図１０の（ｂ）参照）。
【００７３】
この場合、中間ユニット４２ｊは、定義域全域において、ほぼゼロの値から成る曲面６５を出力し、最終出力である出力演算値Ｚ１（ｎ）に殆ど寄与しない。
【００７４】
上述したように、パラメータθｊ，ｗｉｊ及びＴｊ（つまりτｊ）の範囲を変化させることにより、中間ユニット４２ｊは、超球面識別タイプの演算において局所的特徴を反映した出力Ｙｊ（図８参照）及び大局的特徴を反映した出力Ｙｊ（図９参照）の両方を出力することが可能である。そして、超球面識別タイプの演算により局所的特徴及び大局的特徴を反映するようにしても中間ユニット４２ｊのパラメータの数が増加することはない。従って、この発明においては、中間ユニット４２ｊは、パラメータθｊ，ｗｉｊ及びＴｊ（つまりτｊ）の範囲を通常の超球面識別タイプの演算を行なう範囲よりも広い範囲まで変化させて超球面識別タイプの演算を行ない、出力Ｙｊを出力することにした。これが、中間ユニット４２ｊにおいて超球面識別タイプの演算を行なうことにした理由である。
【００７５】
なお、「通常の探索範囲」とは、超球面識別タイプの演算により局所的特徴のみを出力Ｙｊに反映させるためにパラメータθｊ，ｗｉｊ及びＴｊ（つまりτｊ）を変化させる範囲を言う。
【００７６】
中間ユニット４２ｊからの出力Ｙｊは、出力ユニット４３１に入力され、出力ユニット４３１は、出力Ｙｊ及びパラメータＷｊ，Θを式（４）へ代入して出力演算値Ｚ１（ｎ）を演算する。
【００７７】
出力演算値Ｚ１（ｎ）が演算されると、サンプルデータ３０に含まれる出力値ｚ１（ｎ）と出力演算値Ｚ１（ｎ）との二乗誤差の和の平均Ｖ（ｗｉｊ，θｊ，τｊ，Θ）が式（６）により演算される。
【００７８】
【数６】
2004258748.tif 000008
【００７９】
二乗誤差の和の平均Ｖ（ｗｉｊ，θｊ，τｊ，Ｗｊ，Θ）は、３層ニューラルネットワーク４０によって演算された出力演算値Ｚ１（ｎ）が実際の出力値ｚ１（ｎ）に近い度合いを示す指標であり、出力演算値Ｚ１（ｎ）を評価するコスト関数である。
【００８０】
この発明によるプログラムは、パラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θを変化させて（中間ユニット４２ｊのパラメータｗｉｊ，θｊ，τｊについては、局所的特徴を反映する範囲よりも広い範囲で変化させる）、出力演算値Ｚ１（ｎ）を演算し、出力演算値Ｚ１（ｎ）を式（６）に代入して演算したコスト関数Ｖ（ｗｉｊ，θｊ，τｊ，Ｗｊ，Θ）の関数値が所定値ε以下になるようにパラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θを最適化する。この場合、この発明によるプログラムは、最初、中間ユニット４２ｊの個数を１個に設定し（ｊ＝１）、その設定した１個の中間ユニット４２１を用いて最終的に演算したコスト関数Ｖ（ｗｉｊ，θｊ，τｊ，Ｗｊ，Θ）の関数値が所定値εよりも大きいとき、関数値が所定値ε以下になるまで中間ユニット４２ｊの個数を１個づつ増加し、関数値が所定値ε以下になるようにパラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θを最適化する。
【００８１】
このパラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θが最適化されれば、入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）と出力値ｚ１（ｎ）（ｎ＝１〜Ｓ）との関係を規定する近似関数ｆが決定されるので、パラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θを最適化することは、近似関数ｆを求める演算を行なうことに相当する。
【００８２】
上述したように、中間ユニット４２ｊは、パラメータｗｉｊ，θｊ，τｊを局所的特徴を反映する範囲よりも広い範囲で変化させて超球面識別タイプの演算を行なうが、パラメータｗｉｊ，θｊ，τｊを広い範囲で変化させると、コスト関数Ｖ（ｗｉｊ，θｊ，τｊ，Ｗｊ，Θ）において広い平坦領域を増加させることになる。図１０の（ａ）に示すように、中心ｗｉｊが入力値の定義域外にあり、半径θｊが小さい場合、中間ユニット４２ｊの出力Ｙｊは、定義域全域においてほぼゼロとなり、最終出力である出力演算値Ｚ１（ｎ）に殆ど寄与しない。従って、パラメータ空間における、このような状況に対応する領域ではコスト関数Ｖ（ｗｉｊ，θｊ，τｊ，Ｗｊ，Θ）が平坦になってしまう。
【００８３】
ｗｉｊ，θｊ，τｊ，Ｗｊ，Θのようなパラメータを最適化する場合によく用いられる誤差逆伝播法（ＢＰ：Ｅｒｒｏｒ  Ｂａｃｋ−Ｐｒｏｐａｇａｔｉｏｎ  Ａｌｇｏｒｉｔｈｍ）又は焼きなまし法（ＳＡ：Ｓｉｍｕｌａｔｅｄ  Ａｎｎｅａｌｉｎｇ）のようなアルゴリズムは、広い平坦領域を含むコスト関数に対して非常に効率が悪い。広い平坦領域の出現を避けるためにコスト関数にペナルティー項を追加する方法も考えられるが、この方法では、本来のコスト関数をゆがめたり、コスト関数の評価に要する計算量を増加させることになる。
【００８４】
そこで、この発明においては、広い平坦領域、及びニューラルネットワークの学習において常に問題となる複数の局所解を含むコスト関数に対して有効な最適化手法である高次元アルゴリズムを採用することにした。
【００８５】
高次元アルゴリズムによるパラメータの最適化について説明する。図１１は、高次元アルゴリズムによる最適化のフローチャートを示す。解くべき問題に現われる全ての最適化すべき変数ｑの空間を意味空間と定義する（ステップＡ）。そして、変数ｑと共役な変数ｐを人為的に導入し、変数ｐの新しい空間を定義する（ステップＢ）。その後、変数ｐの空間を意味空間に加え、意味空間を高次元化した空間を高次元空間と定義する（ステップＣ）。
【００８６】
そして、変数ｑ，ｐの高次元空間において、問題を設定する（ステップＤ）。最後に、高次元空間において、自律的運動によって最適解を探索し、コスト関数を最小とする最適解を検出する（ステップＥ）。ここで、自律的運動とは、解の存在しない領域を素速く通過し、解の存在する領域に容易に入る運動を言う。
【００８７】
このように、高次元アルゴリズムは、最適化すべき変数ｑの意味空間を高次元化し、その高次元化した高次元空間において自律的運動を行なうことによって最適解を検出する。
【００８８】
図１２は、高次元アルゴリズムによる解の探索方法を示す概念図である。また、図１３は、パラメータが２個（ｋ１，ｋ２）の場合におけるコスト関数のランドスケープを示す。図１３に示すランドスケープには、多くの山及び谷が存在し、解は全ての谷の最も低い点（極小値）に対応する。従って、解を求めるためには、複雑に入り組んだ多くの山及び谷を通過して最も低い谷に到達する必要がある。
【００８９】
つまり、図１２に示すように、最適化すべき変数ｑの意味空間７０において解７１に到達するには、矢印７２で示される経路を移動して多くの山及び谷を通過する必要がある。しかし、大きな意味空間７０において小さな解７１に到達するのは困難である。
【００９０】
そこで、変数ｑと共役な変数ｐを追加して変数ｑ，ｐの高次元空間８０を定義する。この高次元空間８０においては、意味空間７０において解でない領域は小さく、解に相当する領域は拡大される。従って、高次元空間８０においては、意味空間７０における解７１が解の存在する領域８１に拡大され、矢印８２によって示される経路を運動して領域８１に容易に到達する。そして、高次元空間８０では解でない領域は小さくなり、解に相当する領域は拡大されるので、矢印８２によって示される経路を運動する場合、解でない領域を素速く通過し、解の存在する領域８１に容易に入る。つまり、高次元空間８０においては、自律的運動が行なわれて解が検出される。
【００９１】
このように、探索すべき空間を高次元化すれば目的物を探索し易いことは、次の例によって明確に理解できる。例えば、長い切り口の六角形の鉛筆を探索する場合を考える。この鉛筆を正面から見ると、小さい六角形の断面が見えるだけであるが、視線をシフトすれば、その切り口の長さも見える。この「長さ」を次元と考えれば、上述した意味空間７０から高次元空間８０へ次元を高次元化することにより、解を探索し易くなることを容易に理解できる。
【００９２】
高次元アルゴリズムは、このように探索すべき空間を高次元化し、その高次元化した高次元空間において解を探索する結果、コスト関数の局所解に捉まりにくく、かつ、コスト関数の平坦領域を素速く通過でき、大局解を容易に求めることができる。
【００９３】
３層ニューラルネットワーク４０により演算された出力演算値Ｚ１（ｎ）が実際の出力値ｚ１（ｎ）に近くなるように高次元アルゴリズムを用いてパラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θを最適化する場合、この発明によるプログラムは、高次元空間８０における変数ｑ，ｐの関数であるハミルトニアンＨ（ｑ，ｐ）を用いる。このハミルトニアンＨ（ｑ，ｐ）は、運動する力学系を表わす具体的な道具であり、この具体的な道具（ハミルトニアンＨ（ｑ，ｐ））によって表わされた空間においては、意味空間７０を成す変数ｑと、意味空間７０を高次元空間８０へ高次元化し、かつ、変数ｑと共役である変数ｐとを導入し易いからである。実際の力学系の場合、変数ｑは、運動する物体の位置を表わし、変数ｐは、運動する物体の速度を表わす。高次元アルゴリズムは、この力学系のアナロジーを取って最適パラメータを探索することを特徴とする最適化手法である。
【００９４】
この発明の近似関数を求める問題の場合、高次元アルゴリズムによって最適化すべき変数ｑはｑ＝ｗｉｊ，θｊ，τｊ，Ｗｊ，Θとなる（図１１のステップＡ参照）。そして、この変数ｑ＝ｗｉｊ，θｊ，τｊ，Ｗｊ，Θは、運動する物体の位置に対応する。ポテンシャルエネルギーＶ（ｑ）は、変数ｑ＝ｗｉｊ，θｊ，τｊ，Ｗｊ，Θの関数である。
【００９５】
次に、変数ｑに共役な変数ｐが人為的に導入され、変数ｐの成す新しい空間が定義される（図１１のステップＢ参照）。この新しい空間を意味空間に加えたものを高次元空間と定義する（図１１のステップＣ参照）。変数ｐは、上述したように運動する物体の速度に対応し、変数ｐの関数である運動エネルギーＴ（ｐ）に対応する関数を運動する力学系と同様に定義する（図１１のステップＤ参照）。
【００９６】
その後、意味空間における関数Ｖ（ｑ）に新しい空間における関数Ｔ（ｐ）を加えて意味空間を高次元化した高次元空間における関数Ｈ（ｑ，ｐ）が変数ｑ，ｐによって定義される（図１１のステップＤ参照）。
【００９７】
ハミルトニアン力学系においては、運動する物体の任意の時間ｔにおける位置は、ハミルトニアンＨ（ｑ，ｐ）から導かれる運動方程式により決定されるため、高次元アルゴリズムにおいても同様にする。
【００９８】
最後に、高次元空間において、自律的運動によって最適解を検出することは、ハミルトニアンＨ（ｑ，ｐ）から導かれる運動方程式を解いて最適化された変数ｑを見つけることに相当する（図１１のステップＥ参照）。
【００９９】
ポテンシャルエネルギーＶ（ｑ）は、式（７）によって表わされる。
【０１００】
【数７】
2004258748.tif 000009
【０１０１】
即ち、ポテンシャルエネルギーＶ（ｑ）は、コスト関数ＶＣ（ｑ）と拘束ポテンシャルＶＬ（ｑ）との和とする。この拘束ポテンシャルＶＬ（ｑ）は、パラメータｑ＝ｗｉｊ，θｊ，τｊ，Ｗｊ，Θの探索範囲を制限するものである。そして、拘束ポテンシャルＶＬ（ｑ）は、式（８）によって表わされる。
【０１０２】
【数８】
2004258748.tif 000010
【０１０３】
式（８）において、ｃは、拘束の強さを制御するパラメータであり、この実施の形態においてはｃ＝１に設定される。また、式（８）におけるνｎ（ｑｎ）は、式（９）によって表わされる。
【０１０４】
【数９】
2004258748.tif 000011
【０１０５】
式（９）において、θ（ｕ）は、階段関数を表わし、ｕ＝ａｎ−ｑｎ又はｑｎ−ｂｎ＞０のとき、θ（ｕ）＝１であり、ｕ＝ａｎ−ｑｎ又はｑｎ−ｂｎ＜０のとき、θ（ｕ）＝０である。
【０１０６】
即ち、νｎ（ｑｎ）は、図１４に示す曲線８９によって表わされ、パラメータｑ＝ｗｉｊ，θｊ，τｊ，Ｗｊ，Θの探索範囲の限界を規定する。
【０１０７】
また、運動エネルギーＴ（ｐ）は、式（１０）によって表わされ、ハミルトニアンＨ（ｑ，ｐ）は、式（１１）によって表わされる。
【０１０８】
【数１０】
2004258748.tif 000012
【０１０９】
【数１１】
2004258748.tif 000013
【０１１０】
その結果、系の運動を記述する運動方程式は、式（１２）によって表わされる。
【０１１１】
【数１２】
2004258748.tif 000014
【０１１２】
また、式（１２）の下側の式の右辺に現われるコスト関数ＶＣ（ｑ）及び拘束ポテンシャルを示す関数ＶＬ（ｑ）のパラメータｑ＝ｗｉｊ，θｊ，τｊ，Ｗｊ，Θによる微分形をそれぞれ式（１３）及び式（１４）に示す。
【０１１３】
【数１３】
2004258748.tif 000015
【０１１４】
【数１４】
2004258748.tif 000016
【０１１５】
ランダムに選択した初期値（ｑ（０），ｐ（０））を出発点とし、式（１２）の２Ｎ個の一階微分方程式の組をベルレー（Ｖｅｒｌｅｔ）法又はルンゲクッタ（Ｒｕｎｇｅ−Ｋｕｔｔａ）法を用いて数値的に解くことにより、系の軌道（ｑ（ｔ），ｐ（ｔ））が得られる。そして、十分な時間、軌道ｑ（ｔ）に沿ったコスト関数ＶＣ（ｑ（ｔ））を監視することにより、パラメータｑ＝ｗｉｊ，θｊ，τｊ，Ｗｊ，Θの最適値を見つけることができる。
【０１１６】
式（１２）に示す運動方程式により記述される運動系は、混合性を持ち、かつ、全エネルギーＥが一定である力学系である。この場合、系は、位相空間のＨ（ｑ，ｐ）＝Ｅを満たす等エネルギー曲面上を等しい確率で到る所を動き回ることが期待される（等重率の原理）。この等重率の原理に基づけば、系が位置ｑの近傍の微小体積ｑ＋ｄｑ内に滞在する時間の期待値δ（ｑ）は、式（１５）によって表わされる（ケイ、シンジョー（Ｋ．Ｓｈｉｎｊｏ）及びティー、ササダ（Ｔ．Ｓａｓａｄａ）著、「ハミルトニアン  システムズ  ウィズ  メニィ  ディグリー  オブ  フリードム：アシンメトリック  モウション  アンド  インテンシティ  オブ  モウション  イン  フェーズ  スペース（Ｈａｍｉｌｔｏｎｉａｎｓｙｓｔｅｍｓ  ｗｉｔｈ  ｍａｎｙ  ｄｅｇｒｅｅｓ  ｏｆ  ｆｒｅｅｄｏｍ：ａｓｙｍｍｅｔｒｉｃ  ｍｏｔｉｏｎ  ａｎｄ  ｉｎｔｅｎｓｉｔｙ  ｏｆｍｏｔｉｏｎ  ｉｎ  ｐｈａｓｅ  ｓｐａｃｅ）」、フィジカル  レビュー（Ｐｈｙｓｉｃａｌ  Ｒｅｖｉｅｗ）Ｅ５４，ｐｐ４６８５−４７００，１９９６）。
【０１１７】
【数１５】
2004258748.tif 000017
【０１１８】
式（１５）より、自由度Ｎが３以上のとき、高いポテンシャル値を持つ領域では滞在時間の期待値が低く、低いポテンシャル値を持つ領域では滞在時間の期待値が高くなり、更に、この傾向は、自由度Ｎが大きければ大きいほど顕著になる。
【０１１９】
従って、高次元アルゴリズムは、このような特徴を有するハミルトニアンＨ（ｑ，ｐ）の力学系のアナロジーを取って最適解を探索することにより、上述したコスト関数の局所解に捉まりにくく、かつ、コスト関数の平坦な領域を素速く通過するという特徴を有する。
【０１２０】
この高次元アルゴリズムの特徴を概念的に説明する。
図１５は、コスト関数の局所解に捉まる度合いを高次元アルゴリズム（ＨＡ）と焼きなまし法（ＳＡ）について比較して示す。図１５の（ａ）は、高次元アルゴリズム（ＨＡ）の場合を示し、図１５の（ｂ）は、焼きなまし法（ＳＡ）の場合を示す。図１５の（ａ）及び（ｂ）において、横軸は最適化すべき変数ｑを表わし、縦軸はコスト関数Ｖ（ｑ）を表わす。
【０１２１】
また、図１６は、コスト関数の平坦領域を通過する速さを高次元アルゴリズム（ＨＡ）と焼きなまし法（ＳＡ）について比較して示す。図１６の（ａ）は、高次元アルゴリズム（ＨＡ）の場合を示し、図１６の（ｂ）は、焼きなまし法（ＳＡ）の場合を示す。図１６の（ａ）及び（ｂ）において、横軸は最適化すべき変数ｑを表わし、縦軸はコスト関数Ｖ（ｑ）を表わす。
【０１２２】
図１５に示すように、高次元アルゴリズム（ＨＡ）の場合、コスト関数Ｖ（ｑ）の谷（局所解）から抜け出す役割を運動エネルギーＥが担うが、全エネルギー一定の条件より、運動エネルギーＥは、コスト関数の関数値が小さい位置では大きくなる。つまり、局所解に入り込んだら運動エネルギーＥが大きくなる。従って、高次元アルゴリズム（ＨＡ）は、局所解に捉まりにくい（図１５の（ａ）参照）。一方、焼きなまし法（ＳＡ）の場合、運動は、正の絶対温度を持つことにより局所解から抜け出すことが可能であるが、この絶対温度は位置には依存しない。従って、絶対温度がコスト関数の山よりも低ければ、局所解を抜け出すことが困難である。その結果、焼きなまし法（ＳＡ）は、コスト関数の局所解に捉まり易い（図１５の（ｂ）参照）。
【０１２３】
また、図１６に示すように、高次元アルゴリズム（ＨＡ）の場合、等速直線運動により一方の方向に運動するため、コスト関数Ｖ（ｑ）の平坦領域を素速く通過する（図１６の（ａ）参照）。一方、焼きなまし法（ＳＡ）の場合、ランダムウォーク（紙面の右方向及び左方向に各ステップごとにランダムに運動する）によって運動するため、コスト関数Ｖ（ｑ）の平坦領域をなかなか通過できない（図１６の（ｂ）参照）。
【０１２４】
このように、高次元アルゴリズムは、コスト関数の局所解に捉まりにくく、かつ、平坦領域を素速く通過できるという特徴を有する。その結果、少ない計算量によって最適解に到達できる。
【０１２５】
図１７は、この発明によるプログラムが入力値の組ｘ１（ｎ），・・・，ｘｍ１（ｎ）と出力値ｚ１（ｎ）との関係を規定する近似関数ｆを求める演算を行なうフローチャートを示す。近似関数ｆを求める演算が開始されると、サンプルデータ３０に含まれるｍ１×Ｓ個の入力値及びＳ個の出力値が受付けられる（ステップＳ１）。そして、１個に設定された中間ユニット４２ｊ（ｊ＝１）を用いて３層ニューラルネットワーク４０のパラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θが最適化される。
【０１２６】
即ち、３層ニューラルネットワーク４０の中間ユニット４２ｊのパラメータｗｉｊ，θｊ，τｊを広い探索範囲で変化させて、ｍ１個の入力値と１個の出力値との関係を模倣する近似関数ｆが得られるように、３層ニューラルネットワーク４０のパラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θを高次元アルゴリズムを用いて最適化する（ステップＳ２）。これにより、パラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θが最適化されれば、近似関数ｆが決定されるので、一連の動作は終了する。
【０１２７】
図１８は、図１７に示すステップＳ２の詳細な動作を説明するためのフローチャートを示す。図１７に示すステップＳ１の後、３層ニューラルネットワーク４０のパラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θを初期値に設定し、超球面識別タイプの演算によりＳ個の出力演算値Ｚ１（１），・・・，Ｚ１（Ｓ）が演算される（ステップＳ２１）。
【０１２８】
そして、Ｓ個の出力演算値Ｚ１（１），・・・，Ｚ１（Ｓ）を評価するコスト関数値が演算される（ステップＳ２２）。その後、コスト関数値が所定値ε以下であるか否かが判定され（ステップＳ２３）、コスト関数値が所定値ε以下であるとき一連の動作は終了する。
【０１２９】
一方、ステップＳ２３において、コスト関数値が所定値ε以下でないと判定されたとき、計算回数が規定回数以下であるか否かが判定される（ステップＳ２４）。そして、計算回数が規定回数以下であるとき、コスト関数値を低減させるためのパラメータが高次元アルゴリズムにより広い探索範囲で演算される（ステップＳ２５）。
【０１３０】
即ち、式（１３）及び（１４）により、ステップＳ２２において演算されたコスト関数値及び拘束条件をパラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θの各々で偏微分した値を求め、式（１２）により次に取るべきパラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θの値を演算する。そして、その演算した値を、ステップＳ２１における演算に用いるパラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θとして用いる。
【０１３１】
このようにして、ステップＳ２５の後、ステップＳ２１〜ステップＳ２４が繰返し実行される。
【０１３２】
一方、ステップＳ２４において、計算回数が規定回数以下でないと判定されたとき、一連の繰返しのうち、最もコスト関数値が小さくなるパラメータを、その中間ユニットの最適値と固定し、３層ニューラルネットワーク４０の中間ユニット４２ｊの個数が１個増加される（ステップＳ２６）。そして、新しく追加された中間ユニットに対してステップＳ２１〜ステップＳ２５が繰返し実行される。
【０１３３】
このように、この発明によるプログラムは、中間ユニット４２ｊの個数が、最初、１個に設定され、その設定された１個の中間ユニット４２１を用いて、コスト関数値を小さくするパラメータを見つけるため、高次元アルゴリズムによりパラメータｗｉｊ，θｊ，τｊ，Ｗｊ，Θを広い探索範囲で変化させて、対応するコスト関数値を次々と演算する。そして、中間ユニット４２ｊの個数を１個にして規定回数の演算を行なっても、最も小さなコスト関数値が所定値ε以下にならないとき、中間ユニット４２ｊの個数が１個増加され、同じ演算が繰返し実行される。中間ユニット４２ｊの個数を２個に設定して規定回数の演算を行なっても、コスト関数値が所定値ε以下にならないとき、中間ユニット４２ｊの個数が更に１個増加される。そして、図１８に示すステップＳ２３においてコスト関数値が所定値ε以下であると判定されるまで、高次元アルゴリズムによる新たなパラメータの探索と中間ユニット４２ｊの個数の増加とが繰返し実行される。
【０１３４】
図１７に示すステップＳ２が最初に実行される場合、中間層４２の中間ユニット４２ｊの個数は１個に設定されているので、中間層４２は、中間ユニット４２１のみによって出力Ｙ１を演算する。図１９は、中間ユニットの個数を１個に設定した場合の３層ニューラルネットワーク４０の概念図を示す。従って、３層ニューラルネットワーク４０は、図１９に示す入力層４１、中間層４２Ａ及び出力層４３によって出力演算値Ｚ１（ｎ）を演算する。
【０１３５】
この場合、中間ユニット４２１は、入力層４１の入力ユニット４１ｉ（ｉ＝１，・・・，ｍ１）からそれぞれ入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）（ｎ＝１〜Ｓ）を受け、その受けた入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）（ｎ＝１〜Ｓ）と結合のパラメータｗ１，１，ｗ２，１，ｗｍ１，１と閾値θ１とを式（１）に代入して内部状態ｙ１を演算する。そして、中間ユニット４２１は、演算した内部状態ｙ１及びパラメータＴ１を式（２）に代入して出力Ｙ１を演算し、その演算した出力Ｙ１を出力層４３の出力ユニット４３１へ出力する。
【０１３６】
出力ユニット４３１は、中間ユニット４２１から受けた出力Ｙ１と結合重みＷ１と閾値Θとを式（４）に代入して出力演算値Ｚ１（ｎ）を演算する。つまり、パラメータ（ｗｉ１，θ１，τ１，Ｗ１，Θ）１１を用いて出力演算値Ｚ１１（ｎ）が演算される。なお、パラメータ（ｗｉ１，θ１，τ１，Ｗ１，Θ）１１及び出力演算値Ｚ１１（ｎ）の添字｛１１｝のうち、前者の｛１｝は中間ユニット４２ｊの個数を表わし、後者の｛１｝は１回目に設定されたパラメータであることを表わす。
【０１３７】
コスト関数ＶＣ（ｑ）は、入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）（ｎ＝１〜Ｓ）と出力値ｚ１（ｎ）との関係を規定する近似関数ｆを求める演算においては式（６）によって表わされる。従って、演算された出力演算値Ｚ１１（ｎ）及び実際の出力値ｚ１（ｎ）が式（６）に代入されてコスト関数Ｖ（（ｗｉ１，θ１，τ１，Ｗ１，Θ）１１）のコスト関数値Ｖ１１が演算される（図１８のステップＳ２２参照）。なお、コスト関数値Ｖ１１の添字｛１１｝の意味は、パラメータ（ｗｉ１，θ１，τ１，Ｗ１，Θ）１１及び出力演算値Ｚ１１（ｎ）の添字の意味と同じである。
【０１３８】
そして、コスト関数値Ｖ１１が所定値ε以下でないとき、コスト関数値Ｖ１１よりも小さいコスト関数値Ｖ１２を求めるためのパラメータ（ｗｉ１，θ１，τ１，Ｗ１，Θ）１２を高次元アルゴリズムにより求める（図１８のステップＳ２５参照）。その後、パラメータ（ｗｉ１，θ１，τ１，Ｗ１，Θ）１２を用いてＳ個の出力演算値Ｚ１２（ｎ）が演算され（図１８のステップＳ２１参照）、式（６）によりコスト関数値Ｖ１２が演算される（図１８のステップＳ２２参照）。
【０１３９】
そして、コスト関数値Ｖ１２が所定値ε以下であるか否かが判定され（図１８のステップＳ２３）、コスト関数値Ｖ１２が所定値ε以下でないとき、既に演算された最小のコスト関数値よりも更に小さいコスト関数値Ｖ１ｈ（ｈ：ｈ≦ｋの自然数、ｋ：規定回数）を求めるためのパラメータ（ｗｉ１，θ１，τ１，Ｗ１，Θ）１ｈが演算される（図１８のステップＳ２５参照）。
【０１４０】
このように、計算回数が規定回数ｋ以下であるとき、高次元アルゴリズムによりなるべく小さいコスト関数値Ｖ１ｈ（ｈは、ｋ以下の自然数）を見つけるためのパラメータ（ｗｉ１，θ１，τ１，Ｗ１，Θ）１ｈの値が演算され、その演算されたパラメータ（ｗｉ１，θ１，τ１，Ｗ１，Θ）１ｈを用いて新たなコスト関数値Ｖ１ｈが演算され、これが次々と繰返される。つまり、高次元アルゴリズムによりパラメータ（ｗｉ１，θ１，τ１，Ｗ１，Θ）を変化させて対応するコスト関数値を監視しながら最も小さいコスト関数値と、最も小さいコスト関数値に対応するパラメータとを探す。
【０１４１】
そして、計算回数が規定回数に達すると、中間ユニット４２ｊの個数は、１個増加され、２個に設定される（図１８のステップＳ２６参照）。
【０１４２】
図２０は、中間ユニットの個数を２個に設定した場合の３層ニューラルネットワーク４０の概念図を示す。従って、３層ニューラルネットワーク４０は、図２０に示す入力層４１、中間層４２Ｂ及び出力層４３によって出力演算値Ｚ２１（ｎ）を演算する。
【０１４３】
この場合、中間ユニット４２１は、入力層４１の入力ユニット４１ｉ（ｉ＝１，・・・，ｍ１）からそれぞれ入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）（ｎ＝１〜Ｓ）を受け、その受けた入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）（ｎ＝１〜Ｓ）と結合のパラメータｗ１，１，ｗ２，１，ｗｍ１，１と閾値θ１とを式（１）に代入して内部状態ｙ１を演算する。そして、中間ユニット４２１は、演算した内部状態ｙ１及びパラメータＴ１を式（２）に代入して出力Ｙ１を演算し、その演算した出力Ｙ１を出力層４３の出力ユニット４３１へ出力する。なお、パラメータｗ１，１，ｗ２，１，ｗｍ１，１、θ１及びＴｊは、最も小さいコスト関数値を記録したときのパラメータ（ｗｉ１，θ１，τ１，Ｗ１）１ｋに固定される。
【０１４４】
また、中間ユニット４２２は、入力層４１の入力ユニット４１ｉ（ｉ＝１，・・・，ｍ１）からそれぞれ入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）（ｎ＝１〜Ｓ）を受け、その受けた入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）（ｎ＝１〜Ｓ）と結合のパラメータｗ１，２，ｗ２，２，ｗｍ１，２と閾値θ２とを式（１）に代入して内部状態ｙ２を演算する。そして、中間ユニット４２２は、演算した内部状態ｙ２及びパラメータＴ２を式（２）に代入して出力Ｙ２を演算し、その演算した出力Ｙ２を出力層４３の出力ユニット４３１へ出力する。
【０１４５】
出力ユニット４３１は、中間ユニット４２１から受けた出力Ｙ１と中間ユニット４２２から受けた出力Ｙ２と結合重みＷ１，Ｗ２と閾値Θとを式（４）に代入して出力演算値Ｚ２１（ｎ）を演算する。
【０１４６】
そして、出力演算値Ｚ２１（ｎ）を用いてコスト関数値Ｖ２１が演算され、中間ユニット４２１のみを用いた場合と同様の演算が繰返し実行される。中間ユニット４２ｊの個数を２個に設定し、高次元アルゴリズムによりパラメータ（ｗｉ１，θ１，τ１，Ｗ１，Θ）２ｈを変化させて小さいコスト関数値Ｖ２ｈを見つける計算を規定回数ｋまで繰返し実行してもコスト関数値Ｖ２ｈが所定値ε以下にならないとき、中間ユニット４２ｊの個数が更に１個増加され、中間ユニット４２ｊの個数を２個に設定した場合と同様の演算が繰返し実行される。
【０１４７】
このように、中間ユニット４２ｊの個数がある値に設定されると、その設定された個数の中間ユニット４２ｊを用いて演算された出力演算値Ｚ（ｎ）を評価するコスト関数値を小さくする最適値を求めるために、新たなパラメータ（ｗｉｊ，θｊ，τｊ，Ｗｊ，Θ）が高次元アルゴリズムにより次々と演算される。そして、新たなパラメータの演算を規定回数まで行なってもコスト関数値が所定値ε以下にならないとき、中間ユニット４２ｊの個数を１個増加してコスト関数値を小さくするように新たなパラメータ（ｗｉｊ，θｊ，τｊ，Ｗｊ，Θ）が高次元アルゴリズムにより次々と演算される。
【０１４８】
従って、この発明によるプログラムは、３層ニューラルネットワーク４０の中間ユニット４２ｊの個数を１個づつ増加させながらパラメータ（ｗｉｊ，θｊ，τｊ，Ｗｊ，Θ）を最適化することを特徴とする。
【０１４９】
なお、上記においては、中間ユニット４２ｊの個数は、最初、「１」個に設定されると説明したが、この発明においては、これに限らず、最初、複数に設定されてもよい。つまり、この発明においては、中間ユニット４２ｊの個数は、最初、１個以上の初期値に設定されればよい。
【０１５０】
３層ニューラルネットワーク４０のパラメータ（ｗｉｊ，θｊ，τｊ，Ｗｊ，Θ）は、中間ユニット４２ｊの個数が増加するごとに（ｍ１＋３）個づつ増加する。例えば、中間ユニット４２ｊの個数が１個から２個に増加したとき、全体のパラメータは、（ｗｉ１，θ１，τ１，Ｗ１，Θ）から（ｗｉ１，θ１，τ１，Ｗ１；ｗｉ２，θ２，τ２，Ｗ２，Θ）へ（ｍ１＋３）個増加する。従って、中間ユニット４２ｊの個数を１個づつ増加してパラメータ（ｗｉｊ，θｊ，τｊ，Ｗｊ，Θ）を最適化することは、パラメータの数を所定数づつ増加してパラメータ（ｗｉｊ，θｊ，τｊ，Ｗｊ，Θ）を最適化することに相当する。そして、パラメータの数が増加される前の所定数のパラメータのうち、パラメータ（ｗｉ１，θ１，τ１，Ｗ１）の値を固定し、増加されたパラメータ（ｗｉ２，θ２，τ２，Ｗ２）とパラメータΘのうち、超球面識別タイプの演算を行なう中間ユニット４２２のパラメータ（ｗｉ２，θ２，τ２）を広い探索範囲で変化させて出力演算値Ｚ１（ｎ）を演算する。この場合、図１７に示すステップＳ２では、パラメータの個数を所定数の初期値に設定してパラメータの最適化を行なう。
【０１５１】
従って、この発明によるプログラムは、３層ニューラルネットワークのパラメータの数を所定数づつ増加してパラメータを最適化することを特徴とする。
【０１５２】
近似関数ｆを求める演算を行なう場合における３層ニューラルネットワーク４０の効果について説明する。即ち、３層ニューラルネットワーク４０の中間ユニット４２ｊにおいて超球面識別タイプの演算を行なう場合の効果について説明する。
【０１５３】
図２１は、二入力−一出力の３つのテスト関数の等高線を示す。図２１の（ａ）は、テスト関数ｚをｚ＝−０．７６ｘ１＋０．１９ｘ２＋０．７８としたときの等高線を示す。図２１の（ｂ）は、テスト関数ｚをｚ＝ｓｉｎ（πｘ１）・ｓｉｎ（πｘ２）としたときの等高線を示す。図２１の（ｃ）は、テスト関数ｚをｚ＝０．５ｅｘｐ｛−５（ｘ１−０．２）２−５（ｘ２−０．２）２｝＋０．９ｅｘｐ｛−５（ｘ１−０．８）２−１０（ｘ２−０．６）２｝としたときの等高線を示す。図２１の（ａ），（ｂ），（ｃ）において、横軸及び縦軸は入力変数ｘ１，ｘ２を表わす。
【０１５４】
また、各学習条件は、次に示すとおりである。
2004258748.tif 000018
問題（ｉ）、（ｉｉ）及び（ｉｉｉ）の各々において、超球面識別タイプの演算及び超平面識別タイプの演算を行ない、その演算結果の比較を行なった。なお、両方の演算において、パラメータの最適化は高次元アルゴリズムを用いて行なわれた。
【０１５５】
問題（ｉ）の場合、次の結果が得られた。
＜１＞超平面識別ネットワーク
獲得した中間ユニットの個数＝１
平均学習回数≒１１，５０７回
＜２＞超球面識別ネットワーク
獲得した中間ユニットの個数＝１
平均学習回数≒６４，１０３回
図２１の（ａ）に示すように、このテスト関数の等高線は線型であり、超平面識別ネットワークに明らかに有利な問題である。しかし、超球面識別ネットワークにおいても、１個の中間ユニットで比較的厳しい要求精度（ε≦０．００３）を達成していることから、パラメータの探索範囲を広くすることにより、局所的特徴のみならず、大局的特徴も反映させることができ、写像能力が強化されることが解る。
【０１５６】
一方、超球面識別ネットワークは、平均学習回数が超平面識別ネットワークの６倍程度多い。これは、パラメータの探索範囲を広くしたことが原因しているが、明らかに不利なケースにも拘わらず、高々６倍程度の増加に留まっている。
【０１５７】
次に、問題（ｉｉ）の結果を示す。
＜１＞超平面識別ネットワーク
獲得した中間ユニットの個数＝８
平均学習回数≒３９３，８２９回
＜２＞超球面識別ネットワーク
獲得した中間ユニットの個数＝１
平均学習回数≒１２，０４５回
図２１の（ｂ）に示すように、このテスト関数の等高線は、閉じた曲線であり、超球面識別ネットワークに明らかに有利な場合である。超平面識別ネットワークについては、要求精度をε≦０．０３に上げると学習の収束が急速に困難になったため、ε≦０．０５とした。必要な中間ユニットの個数は、超平面識別ネットワークが８個、超球面識別ネットワークが１個という結果であり、これから、写像能力は、超球面識別ネットワークの方が各段に優れていることが解る。
【０１５８】
平均学習回数に関しても、８倍の中間ユニット数（パラメータ数）を要する超平面識別ネットワークでは約３３倍多く、超平面識別ネットワークは、局所的特徴の表現には効率が悪いことが解る。
【０１５９】
最後に、問題（ｉｉｉ）の結果を示す。
＜１＞超平面識別ネットワーク
獲得した中間ユニットの個数＝６
平均学習回数≒２６４，７０６回
＜２＞超球面識別ネットワーク
獲得した中間ユニットの個数＝２
平均学習回数≒２，６６５回
図２１の（ｃ）に示すように、このテスト関数は、非対称な閉じた等高線を持ち、現実の応用問題にありそうな一例である。超平面識別ネットワークは、要求精度ε≦０．０１を達成するのが困難であったため、ε≦０．０３とした。
【０１６０】
中間ユニットの個数は、超球面識別ネットワークが２個であり、超平面識別ネットワークが６個である。その結果、この場合も超球面識別ネットワークの方が写像能力が高いことが解る。平均学習回数も、超平面識別ネットワークは、超球面識別ネットワークの１００倍近く多い。
【０１６１】
このように、パラメータの探索範囲を適切に拡大した超球面識別ネットワークを高次元アルゴリズムで学習する方法は、一般に、超平面識別ネットワークの場合よりも少ないパラメータ数で要求精度を達成できる高い写像能力を持ち、かつ、学習性能も良好であることが確認された。
【０１６２】
図１７に示すステップＳ１，Ｓ２及び図１８に示すステップＳ２１〜Ｓ２６を備えるプログラムは、図２２に示すパーソナルコンピュータによって実行される。図２２は、パーソナルコンピュータの概略ブロック図である。パーソナルコンピュータ９０は、データバスＢＳと、ＣＰＵ９１と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９２と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９３と、シリアルインタフェース９４と、端子９５と、ＣＤ−ＲＯＭドライブ９６と、ディスプレイ９７と、キーボード９８とを備える。
【０１６３】
ＣＰＵ９１は、ＲＯＭ９３に格納されたプログラムをデータバスＢＳを介して読出す。また、ＣＰＵ９１は、シリアルインタフェース９４、端子９５及びインターネット網を介して取得したプログラム、またはＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）９９からＣＤ−ＲＯＭドライブ９６を介して読出したプログラムをＲＯＭ９３に格納する。更に、ＣＰＵ９１は、キーボード９８から入力されたユーザからの指示を受付ける。
【０１６４】
ＲＡＭ９２は、ＣＰＵ９１が上述した近似関数ｆを求める演算を行なう際のワークメモリである。ＲＯＭ９３は、プログラム等を格納する。シリアルインタフェース９４は、データバスＢＳと端子９５との間でデータのやり取りを行なう。
【０１６５】
端子９５は、ケーブルによってパーソナルコンピュータ９０をインターネットに接続するためのインタフェース（図示せず）に接続するための端子である。ＣＤ−ＲＯＭドライブ９６は、ＣＤ９９に記録されたプログラムを読出す。ディスプレイ９７は、各種の情報を視覚情報としてユーザに与える。キーボード９８は、ユーザからの指示を受付ける。
【０１６６】
ＣＰＵ９１は、キーボード９８を介して入力されたユーザの指示に応じて、ＲＯＭ９３に格納されたプログラムを読出し、その読出したプログラムを実行する。そして、ＣＰＵ９１は、図１７及び図１８に示すフローチャートに従って近似関数ｆを求める演算を行ない、最適化されたパラメータをディスプレイ９７に表示する。
【０１６７】
この発明によるプログラムは、ＣＤ９９からＣＤ−ＲＯＭドライブ９６を介してＣＰＵ９１によって読み込まれてＲＯＭ９３に格納され、またはシリアルインタフェース９４、端子９５及びインターネットを介して取得されてＲＯＭ９３に格納される。
【０１６８】
このように、ユーザは、この発明によるプログラムをパーソナルコンピュータ９０により実行して近似関数ｆを求める演算を行なうことができる。
【０１６９】
上述したように、この発明によるプログラムが入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）（ｎ＝１〜Ｓ）と出力値ｚ１（ｎ）との関係を規定する近似関数ｆを求める演算を行なう場合、サンプルデータ３０の元になる集合１０に含まれる入力値（ｘ１（１），・・・，ｘｍ１（１））、（ｘ１（２），・・・，ｘｍ１（２））、・・・、（ｘ１（Ｓ），・・・，ｘｍ１（Ｓ））、・・・、（ｘ１（Ｍ），・・・，ｘｍ１（Ｍ））及び集合２０に含まれる出力値（ｚ（１）、ｚ（２）、・・・、ｚ（Ｓ）、・・・、ｚ（Ｍ））は、例えば、量子井戸構造における井戸層の幅ｄｗ１、井戸層の電子密度ｎｗ１、バリア層の高さＷｄ２及びバリア層の幅ｄｂ等から成る入力値と、量子井戸構造における粒子（電子及び正孔）のエネルギー準位Ｅｗ１から成る出力値として取得される。
【０１７０】
そこで、井戸層の幅ｄｗ１、井戸層の電子密度ｎｗ１、バリア層の高さＷｄ２及びバリア層の幅ｄｂ等から成る入力値（ｘ１（１），・・・，ｘｍ１（１））、（ｘ１（２），・・・，ｘｍ１（２））、・・・、（ｘ１（Ｓ），・・・，ｘｍ１（Ｓ））、・・・、（ｘ１（Ｍ），・・・，ｘｍ１（Ｍ））と、エネルギー準位Ｅｗ１から成る出力値（ｚ（１）、ｚ（２）、・・・、ｚ（Ｓ）、・・・、ｚ（Ｍ））とを取得する方法について説明する。
【０１７１】
［サンプルデータの取得方法］
エネルギー準位Ｅｗ１は、量子井戸構造における粒子の自己相互作用を考慮して演算される。
【０１７２】
図２３は、量子準位演算プログラムが演算の対象とする量子井戸の概念図である。縦軸はエネルギーを示し、横軸は位置を示す。量子井戸１００は、バリア層１０１，１０２と井戸層１０３とから成る。井戸層１０３に閉じ込められた電子はエネルギー準位１０４を形成する。
【０１７３】
この発明においては、粒子の相互作用を含まないシュレディンガー方程式を解いて１つの量子井戸１００における波動関数Ψを求める。そして、求めた波動関数Ψから出発して、変分法の原理に基づき系全体のエネルギーを最小化する波動関数を求める。この場合、系全体のエネルギーは、粒子の相互作用を非線形項として含むハミルトニアンの期待値を、与えられた波動関数に対して計算したものとして定義される。その後、量子井戸１００の一方のバリア層１０１の端から他方のバリア層１０２の端までを複数のポイントｘ１〜ｘＮ（Ｎは自然数）に分割し、その分割した各ポイントｘｉ（１≦ｉ≦Ｎ）に対応して波動関数ΨをＮ個の波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮに離散化する。この場合、ポイントｘ１〜ｘＮの各々と隣接するポイントとの間の距離は全て等しいように位置ｘ１〜ｘＮが決定される。
【０１７４】
波動関数Ψを波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮへ離散化すると、量子井戸１００の系全体のエネルギーが最小となるように、波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮの各々を演算する。そして、演算した波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮを用いて系の全体エネルギーを求める。
【０１７５】
このように、粒子の相互作用を含まないシュレディンガー方程式を解いて求めた波動関数ΨをＮ個に離散化し、系全体のエネルギーが最小となるように、離散化した波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮの各々を演算する。
【０１７６】
以下、粒子の相互作用を含まないシュレディンガー方程式を解いて求めた波動関数を変分法の原理に適用して系全体のエネルギーを演算する際に、ハミルトニアンに取り入れられる非線形項として粒子のクーロン相互作用を用いた場合について説明する。
【０１７７】
図２４は、量子準位演算プログラムを構成する各ステップを示すフローチャートである。量子準位演算プログラムが実行されると、量子井戸１００に閉じ込められた電子の自己相互作用のない場合の波動関数が演算される（ステップＳ１００）。即ち、運動エネルギーの項と外部電界によるポテンシャル項とから成るハミルトニアンを用いて電子の初期の波動関数Ψが演算される。この演算は、転送行列法、Ｓ行列法、及び狙い撃ち法のいずれかを用いて行われる。
【０１７８】
そして、最小化される系全体のエネルギーを示す式は式（１６）により与えられる。
【０１７９】
【数１６】
2004258748.tif 000019
【０１８０】
式（１６）の右辺の第２項は、自己相互作用を含むクーロン相互作用項である。そして、ε（ｘ）は、位置ｘにおける誘電定数であり、−ｅ及びｍは、それぞれ、電子の電荷及び質量である。また、ｄ（ｙ）は、位置ｙにおける固定ドナーの体積密度であり、固定ドナーは＋ｅの電荷を有するものと仮定している。即ち、コンピュータによる計算のために、イオン化されたドナーは、自由電子により＋ｅの電荷を運ぶものと仮定した。
【０１８１】
式（１６）は、量子井戸１００の系全体のエネルギーを表わすが、式（１６）を用いて演算することは困難であるので、空間を離散化するとともに系全体に存在する粒子数で規格化することとした。即ち、ステップＳ１００で求めた波動関数ΨをＮ個の波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮに離散化するとともに系全体の粒子数で規格化することにより、式（１６）から式（１７）が得られる。
【０１８２】
【数１７】
2004258748.tif 000020
【０１８３】
式（１７）において、Ｎｔは規格化因子であり、Ｎｅは電子数である。また、Ｖｉ’は、クーロンポテンシャルである。
【０１８４】
式（１７）は、系に存在する１つの電子あたりのエネルギーを表わし、以下では、最適化問題の用語に合わせて「コスト関数」と呼ばれる。そして、式（１７）を離散化したＮ個の波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮの各々によって偏微分してＮ個の導関数を演算する。即ち、式（１８）が得られる。
【０１８５】
【数１８】
2004258748.tif 000021
【０１８６】
式（１８）において、Ｅｉｎｔは１粒子当たりの非線形の相互エネルギーを意味する。そして、式（１６）から式（１７）及び式（１８）を求めることは、コスト関数及びコスト関数の導関数を計算すること（ステップＳ１０２）に相当する。
【０１８７】
なお、式（１８）は、式（１７）の両辺を波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮの各々によって偏微分したものではなく、式（１７）の自己相互作用を考慮したハミルトニアンＨ’を波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮの各々によって偏微分したものになっているが、その理由は次の理由による。
【０１８８】
量子準位演算プログラムは、自己相互作用を考慮して量子井戸１００の井戸層１０３に閉じ込められた電子の系全体のエネルギーが最小になるように波動関数を計算することを目的とするため、式（１７）の全体を波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮの各々によって偏微分するのではなく、自己相互作用を考慮したハミルトニアンＨ’を波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮの各々によって偏微分することにより自己相互作用の影響を最大限に反映して演算することにしたものである。
【０１８９】
従って、ステップＳ１０２においては、コスト関数（式（１７））に離散化した波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮを代入して系全体のエネルギーＳ｛（Ψｉ）｝を演算し、コスト関数の導関数が自己相互作用を考慮したハミルトニアンＨ’を波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮの各々によって偏微分することにより演算される（式（１８））。
【０１９０】
その後、ステップＳ１０２において演算したＮ個の導関数及び次式（１９）を用いて新しい波動関数を演算する（ステップＳ１０４）。
【０１９１】
【数１９】
2004258748.tif 000022
【０１９２】
式（１９）において、ηは、量子準位演算プログラムによる最小エネルギーの演算が収束するようにするためのスケーリングファクターである。また、式（１９）の右辺第２項は、自己相互作用を考慮したハミルトニアンＨ’を波動関数Ψの各成分よって偏微分して式（１８）を演算し、その演算した式（１８）に波動関数Ψｏｌｄを代入して演算される。
【０１９３】
式（１９）による新しい波動関数Ψｉｎｅｗは、既に演算された波動関数Ψｉｏｌｄに自己相互作用による変化分（式（１９）の右辺第２項）を加算したものである。従って、新しい波動関数Ψｉｎｅｗは、自己相互作用の変化分を反映して演算される。そして、新しい波動関数Ψｉｎｅｗは、離散化したＮ個の波動関数Ψ１，・・・，Ψｉ，・・・，ΨＮの各々に対して演算される。
【０１９４】
式（１９）により新しい波動関数Ψｉｎｅｗが演算されると、その新しい波動関数Ψｉｎｅｗを式（１７）の波動関数Ψｉに代入して、新しい波動関数によるコスト関数（式（１７））及びその導関数（式（１８））が演算される（ステップＳ１０６）。
【０１９５】
そして、コスト関数が増加するか否かにより、またはステップＳ１０６において演算したＮ個の導関数の全てが零であるか否かを判定することにより、系全体のエネルギーが収束するか否かが判定される（ステップＳ１０８）。
【０１９６】
ステップＳ１０８において、コスト関数が増加しないとき、又はＮ個の導関数の全てが零でないとき、系全体のエネルギーは収束しないと判定され、ステップＳ１０４，Ｓ１０６，Ｓ１０８が繰返し実行される。これは、コスト関数が増加しないとき、コスト関数の増加分が零かコスト関数が減少していることを示し、系全体のエネルギーが更に減少する可能性があるからであり、コスト関数の導関数が零でないとき、コスト関数が変化していることを示し、この場合も系全体のエネルギーが更に減少する可能性があるからである。
【０１９７】
一方、ステップＳ１０８において、コスト関数が増加したとき、またはＮ個の導関数の全てが零であるとき、系全体のエネルギーが収束したと判定される。そして、１ステップ前の波動関数を出力する（ステップＳ１１０）。
【０１９８】
例えば、ステップＳ１０４，Ｓ１０６，Ｓ１０８を５回繰返して実行し、５回目にステップＳ１０８においてコスト関数が増加、又はＮ個の導関数の全てが零になったとすると、４回目にステップＳ１０４において式（１９）を用いて演算したＮ個の成分をステップＳ１１０において出力する。５回目にステップＳ１０８においてコスト関数が増加、又はＮ個の導関数が全て零になったということは、ステップＳ１０４において４回目に演算した波動関数を用いて、ステップＳ１０６において演算したコスト関数が最小になったことを意味するからである。
【０１９９】
ステップＳ１１０において、系全体のエネルギーを最小にするＮ個の成分が決定されると、その決定されたＮ個の成分から成る波動関数（最終的な波動関数）と、自己相互作用を考慮したハミルトニアンである式（２０）を用いて系全体のエネルギーを演算し（ステップＳ１１２）、全体の演算動作が終了する。
【０２００】
【数２０】
2004258748.tif 000023
【０２０１】
上述した各ステップのうち、ステップＳ１０２，Ｓ１０４，Ｓ１０６，Ｓ１０８，Ｓ１１０は１つの粒子に対する動作を表わす。従って、量子準位演算プログラムは、系全体のエネルギーを最小とするようにＮ個の成分を決定するとき、１つの粒子に着目し、その１つの粒子に対する波動関数において自己相互作用による影響が最も小さくなるようにＮ個の成分を決定することを第１の特徴とする。そして、１つの粒子に対する波動関数が決定されると、その決定された波動関数を系全体の粒子に適用して系全体のエネルギーを演算することを第２の特徴とする。
【０２０２】
その結果、量子井戸１００のバリア層１０１，１０２又は井戸層１０３へのドーピング量の増加に起因して井戸層１０３に閉じ込められる電子数が増加し、電子の相互作用による影響が大きくなっても系全体のエネルギーが収束するように演算できる。
【０２０３】
以下、量子準位演算プログラムを用いて演算した例について具体的に説明する。
【０２０４】
図２５は、量子準位演算プログラムが演算の対象とする量子井戸の具体例である。縦軸はエネルギーを示し、横軸はバリア層１０１，１０２及び井戸層１０３の厚み方向の距離ｚを示す。２つのバリア層１０１，１０２の各々は、３５モノレイヤー（＝１０ｎｍ）のＡｌ０．２Ｇａ０．８Ａｓから成り、井戸層１０３は、３５モノレイヤー（＝約１０ｎｍ）のＧａＡｓから成る。そして、伝導帯側のバンドの不連続値ΔＥｃ（＝Ｅｃ１−Ｅｃ２）は１６７ｍｅＶである。
【０２０５】
図２５に示す系において井戸層１０３であるＧａＡｓのボトムエッジから２８．２５７９５ｍｅＶの位置に第１準位Ｅ１が形成され、その第１準位Ｅ１を占める電子の初期の波動関数が波動関数Ψである。
【０２０６】
以下、井戸層１０３にドナーをドーピングした場合（「井戸ドーピング」と言う。）、及びバリア層１０１，１０２にドナーをドーピングした場合（「バリアドーピング」と言う。）について説明する。そして、ドーピングされたドナーは全て活性化され、自由電子の総数は、ドナーの総数に等しいと仮定する。
【０２０７】
また、バリア層１０１，１０２及び井戸層１０３の各モノレイヤーを１０ポイントに分割する。即ち、波動関数Ψを１０５１個の波動関数Ψ１，・・・，Ψｉ，・・・，Ψ１０５１に離散化する。
【０２０８】
更に、バリア層１０１，１０２及び井戸層１０３から成る量子井戸１００の両端では波動関数は零であると近似している。
【０２０９】
更に、式（１９）のスケーリングファクターηを−１．１５×１０７に固定して計算した。このスケーリングファクターηの値は、あくまで１モノレイヤー当たり１０ポイントに分割した場合の値であり、他の分割数の場合には、他の値が用いられる。例えば、１モノレイヤー当たり２０ポイントに分割したのであれば、η＝−２．３０×１０７が用いられる。また、スケーリングファクターηの値としては、これらの値以外の値も想定される。
【０２１０】
図２６は、井戸ドーピングを行なった場合の計算結果をドーピング量に対して示したものである。図２６の（ａ）〜（ｄ）の各々において、縦軸はエネルギーを示し、横軸はバリア層１０１，１０２及び井戸層１０３の厚み方向の距離ｚを示す。図２６の（ａ）は、ドーピング量が１．０×１０１８ｃｍ−３の場合を示し、図２６の（ｂ）は、ドーピング量が５．０×１０１８ｃｍ−３の場合を示し、図２６の（ｃ）は、ドーピング量が８．０×１０１８ｃｍ−３の場合を示し、図２６の（ｄ）は、ドーピング量が１．０×１０１９ｃｍ−３の場合を示す。また、図２６の（ａ）〜（ｄ）において波動関数Ψ０は初期の波動関数であり、記号Ｅｗ１〜Ｅｗ４は基底状態のエネルギー値を示し、記号Ψｗ１〜Ψｗ４は上述した量子準位演算プログラムを用いて計算された波動関数を示す。
【０２１１】
量子準位演算プログラムを用いて４つのドーピング量に対する計算を行なった結果、その計算時間は３０秒以下と非常に短かった。
【０２１２】
井戸ドーピングにおいては、電子及びドナーは、両方とも井戸層１０３に存在するため、電子とドナーとの間で電荷の打消しが起こり、これが量子井戸の外側におけるバンドの曲がりを抑制する。そして、これは、高いドーピング量においても当てはまる。
【０２１３】
また、計算された波動関数のひずみは小さいことが解かった。更に、基底状態のエネルギーＥｗ１〜Ｅｗ４の変化は、イオン化された不純物（ドナー）及び電子間の相互作用による電子のポテンシャルに起因するが、この変化は、そう大きくないのに対し、井戸層１０３におけるバンドの曲がりがドーピング量の増加に伴い大きくなる。
【０２１４】
表１は、井戸ドーピングにおいて、量子準位演算プログラムを用いて計算した基底状態のエネルギー値を従来のＳ−Ｐ法を用いた計算結果と比較して示す。
【０２１５】
【表１】
2004258748.tif 000024
【０２１６】
表１から明らかなように、ドーピング量が１．０×１０１８〜１．７×１０１８ｃｍ−３の範囲においては、量子準位演算プログラムを用いた計算結果は、従来のＳ−Ｐ法による計算結果と良い一致を示し、その差は、殆ど無視できる程度の１．３×１０−４％以下である。
【０２１７】
また、従来のＳ−Ｐ法は、１．８×１０１８ｃｍ−３以上のドーピング量に対して発散するのに対し、量子準位演算プログラムを用いた計算結果は、少なくとも１．０×１０１９ｃｍ−３のドーピング量までは確実に収束することがわかった（数値が得られていることは収束していることを示す。以下同じ。）。
【０２１８】
このように、量子準位演算プログラムを用いた計算方法は、井戸層１０３へドーピングした場合において、ドーピング量の低い領域では従来のＳ−Ｐ法による計算結果と良い一致を示し、高いドーピング量の範囲まで収束した計算結果を示す。その結果、量子準位演算プログラムを用いることにより、高いドーピング量の範囲まで基底状態のエネルギー値を得ることができる。
【０２１９】
図２７は、バリアドーピングを行なった場合の計算結果をドーピング量に対して示したものである。図２７の（ａ）〜（ｄ）において、縦軸はエネルギーを示し、横軸はバリア層１０１，１０２及び井戸層１０３の厚み方向の距離ｚを示す。また、図２７の（ａ）〜（ｄ）において、記号Ψ０，Ψｗ１〜Ψｗ４，Ｅｗ１〜Ｅｗ４は、図２６の（ａ）〜（ｄ）における意味と同じである。更に、図２７の（ａ）は、ドーピング量が１．０×１０１７ｃｍ−３の場合を示し、図２７の（ｂ）は、ドーピング量が３．０×１０１７ｃｍ−３の場合を示し、図２７の（ｃ）は、ドーピング量が５．０×１０１７ｃｍ−３の場合を示し、図２７の（ｄ）は、ドーピング量が７．０×１０１７ｃｍ−３の場合を示す。
【０２２０】
この場合も、計算時間は３０秒以下であった。バリア層１０１，１０２へのドーピング量が増加するに伴い波動関数Ψｗ１〜Ψｗ４のひずみが増加する。これは、次の理由による。バリアドーピングにおいては、閉じ込められた電子は井戸層１０３に存在し、ドナーはバリア層１０１，１０２に存在するため、井戸層１０３の電子は、電子間の相互作用による反発力とバリア層１０１，１０２に存在するドナーからの引力とにより両側に存在するバリア層１０１，１０２の方へ拡がろうとする。そして、バリア層１０１，１０２へのドーピング量が増加するに従ってバリア層１０１，１０２に存在するドナーからの引力が増加するので、井戸層１０３における電子の拡がりは増加する。その結果、バリア層１０１，１０２へのドーピング量が増加するに従って波動関数Ψｗ１〜Ψｗ４のひずみが増加する。
【０２２１】
また、バリアドーピングの場合、井戸ドーピングの場合に比べてバンドの曲がりが大きくなる。これは、次の理由による。イオン化されたドナーによる電子のポテンシャルは、井戸層１０３のボトムにおけるバンド端のポテンシャルを増加させる。一方、電子とドナーとは空間的に分離されているので、イオン化されたドナーからの電気的な影響を除去しようとする電子の働きは低下する。その結果、井戸層１０３からバリア層１０１，１０２へ電界が及び、バンドの曲がりが大きくなる。
【０２２２】
表２は、バリアドーピングにおいて、量子準位演算プログラムを用いて計算した基底状態のエネルギー値を従来のＳ−Ｐ法を用いた計算結果と比較して示す。
【０２２３】
【表２】
2004258748.tif 000025
【０２２４】
表２から明らかなように、ドーピング量が１．０×１０１７〜５．０×１０１７ｃｍ−３の範囲においては、量子準位演算プログラムを用いた計算結果は、従来のＳ−Ｐ法による計算結果と良い一致を示す。そして、量子準位演算プログラムを用いた計算方法は、従来のＳ−Ｐ法では収束しない６．０×１０１７ｃｍ−３，７．０×１０１７ｃｍ−３のドーピング量において収束する。
【０２２５】
このように、量子準位演算プログラムを用いた計算方法は、バリア層１０１，１０２へドーピングした場合において、ドーピング量の低い領域では従来のＳ−Ｐ法による計算結果と良い一致を示し、高いドーピング量の範囲まで収束した計算結果を示す。その結果、量子準位演算プログラムを用いることにより、高いドーピング量の範囲まで基底状態のエネルギー値を得ることができる。
【０２２６】
図２８は、ドーピング量が２．０×１０１８ｃｍ−３の井戸ドーピングを行なった場合において、量子準位演算プログラムを用いた計算結果を従来のＳ−Ｐ法による計算結果と比較して示す。図２８の（ａ），（ｂ）において、縦軸はエネルギーであり、横軸はバリア層１０１，１０２及び井戸層１０３の厚み方向の距離ｚである。図２８の（ａ）は、従来のＳ−Ｐ法による計算結果を示し、図２８の（ｂ）は、量子準位演算プログラムを用いた計算結果を示す。
【０２２７】
記号Ψｃ，Ψｉｖｔは、波動関数を示し、記号Ｖｃ，Ｖｉｖｔはバンド端のポテンシャルを示す。
【０２２８】
従来のＳ−Ｐ法は、シュレディンガー方程式の解法とポアソン方程式の解法とを繰返す過程において、小さなバランスのずれや計算のエラーが増幅され、その結果、計算ステップの進行に対して波動関数Ψｃが振動する。
【０２２９】
これに対して、量子準位演算プログラムを用いた計算方法は、図２４に示すステップＳ１０４，Ｓ１０６，Ｓ１０８の繰返しにおいて、波動関数が本当の解に近づくに従って式（１９）による補正が小さくなり、その結果、波動関数Ψｉｖｔは収束する。
【０２３０】
上記においては、１モノレイヤー当たりの分割数が１０ポイントの場合について説明したが、この分割数を変化させた場合について図２９に示す。縦軸は基底状態のエネルギーを表わし、横軸は１モノレイヤー当たりの分割数を表わす。また、曲線１０５（実線で示される）は、量子準位演算プログラムを用いた計算結果であり、曲線１０６（点線で示される）は、従来のＳ−Ｐ法による計算結果である。なお、ドーピングは、井戸層１０３へ行なわれ、ドーピング量は１．０×１０１８ｃｍ−３である。
【０２３１】
両方の方法において、分割数が増加するに従って基底状態のエネルギー値が小さくなり、空間をより小さく分割した方が正確な波動関数が得られることが解った。また、空間の分割数に関しては、量子準位演算プログラムを用いた計算方法は従来のＳ−Ｐ法による計算方法と大きな差がないことが解かった。
【０２３２】
上述した井戸ドーピング及びバリアドーピングにおける計算においては、初期状態を狙い撃ち法（Ｓｈｏｏｔｉｎｇ  Ｍｅｔｈｏｄ）により求めた初期状態を用いた。
【０２３３】
表３は、井戸ドーピング及びバリアドーピングにおいて、数学的に厳密な波動関数を用いた場合の、量子準位演算プログラムを用いた計算結果を示す。初期状態として採用した厳密な波動関数に対応するエネルギー値は、２８．２７６８３ｍｅＶである。
【０２３４】
【表３】
2004258748.tif 000026
【０２３５】
その結果、初期状態として採用した厳密な波動関数に対応するエネルギー値として２８．２７６８３ｍｅＶのエネルギー値を用いた場合の方が、各ドーピング量に対するエネルギー値は大きくなることが解かった（表１及び表２参照）。しかし、その差は、殆ど１．５％であり、実際の半導体材料における量子準位の見積もりにおいては許容される範囲である。従って、量子準位演算プログラムにおいては、狙い撃ち法（Ｓｈｏｏｔｉｎｇ  Ｍｅｔｈｏｄ）により初期状態のエネルギー値を演算しても、特に、問題はないと考えられる。
【０２３６】
このようにして、量子準位演算プログラムを用いて量子井戸構造における井戸層の幅ｄｗ１、井戸層の電子密度ｎｗ１、バリア層の高さＷｄ２及びバリア層の幅ｄｂ等から成る入力値と、エネルギー準位Ｅｗ１から成る出力値とが取得される。
【０２３７】
そして、集合１０に含まれる入力値（ｘ１（１），・・・，ｘｍ１（１））、（ｘ１（２），・・・，ｘｍ１（２））、・・・、（ｘ１（Ｓ），・・・，ｘｍ１（Ｓ））、・・・、（ｘ１（Ｍ），・・・，ｘｍ１（Ｍ））及び集合２０に含まれる出力値（ｚ（１）、ｚ（２）、・・・、ｚ（Ｓ）、・・・、ｚ（Ｍ））が取得されると、出力値（ｚ（１）、ｚ（２）、・・・、ｚ（Ｓ）、・・・、ｚ（Ｍ））が上述したなだらかな曲面上に存在するか否かを判定し、出力値（ｚ（１）、ｚ（２）、・・・、ｚ（Ｓ）、・・・、ｚ（Ｍ））がなだらかな曲面上に存在する場合、集合１０に含まれる入力値（ｘ１（１），・・・，ｘｍ１（１））、（ｘ１（２），・・・，ｘｍ１（２））、・・・、（ｘ１（Ｓ），・・・，ｘｍ１（Ｓ））、・・・、（ｘ１（Ｍ），・・・，ｘｍ１（Ｍ））から入力値（ｘ１（１），・・・，ｘｍ１（１））、（ｘ１（２），・・・，ｘｍ１（２））、・・・、（ｘ１（Ｓ），・・・，ｘｍ１（Ｓ））を抽出し、集合２０に含まれる出力値（ｚ（１）、ｚ（２）、・・・、ｚ（Ｓ）、・・・、ｚ（Ｍ））から出力値（ｚ（１）、ｚ（２）、・・・、ｚ（Ｓ）、・・・、ｚ（Ｍ））から出力値（ｚ（１）、ｚ（２）、・・・、ｚ（Ｓ））を抽出してサンプルデータ３０を準備する。
【０２３８】
図２２に示すパーソナルコンピュータ９０が量子準位演算プログラムを用いてエネルギー準位Ｅｗ１から成る出力値を演算する場合、ＣＰＵ９１は、量子井戸構造における井戸層の幅ｄｗ１、井戸層の電子密度ｎｗ１、バリア層の高さＷｄ２及びバリア層の幅ｄｂ等から成る入力値と、エネルギー準位Ｅｗ１から成る出力値とをＲＡＭ９２に記憶する。そして、ＣＰＵ９１は、近似関数ｆを求める演算を行なうプログラムの実行をキーボード９８から指示されると、その指示に応じてＲＡＭ９２に記憶した入力値及び出力値を読み出してディスプレイ９７に表示する。
【０２３９】
ユーザは、ディスプレイ９７に表示された入力値及び出力値を見て、出力値がなだらかな曲面上に存在するか否かを判定し、出力値がなだらかな曲面上に存在する場合、サンプルデータ３０を構成する入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）及び出力値ｚ１（ｎ）（ｎ＝１〜Ｓ）をキーボード９８から指定する。
【０２４０】
そして、ＣＰＵ９１は、指定された入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）及び出力値ｚ１（ｎ）からサンプルデータ３０を構成し、この発明によるプログラムをＲＯＭ９３から読み出し、その読み出したプログラムを実行して入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）と出力値ｚ１（ｎ）との関係を規定する近似関数ｆを求める演算を行なう。
【０２４１】
また、出力値ｚ１（ｎ）（ｎ＝１〜Ｓ）がなだらかな曲面上に存在するか否かの判定基準を予めＣＰＵ９１に与えておき、入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）及び出力値ｚ１（ｎ）の抽出をＣＰＵ９１が自動的に行なうようにしてもよい。
【０２４２】
従って、この発明によるプログラムは、より具体的には、量子井戸構造を決定するバリア層１０１，１０２及び井戸層１０３のパラメータを入力値とし、量子井戸における電子及び正孔のエネルギー準位を出力値とするサンプルデータを用いて、入力値と出力値との関係を規定する近似関数ｆの演算を行なうことを特徴とする。
【０２４３】
上記においては、入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）及び出力値ｚ１（ｎ）は、パーソナルコンピュータ９０により演算される場合を説明したが、この発明は、これに限らず、入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）及び出力値ｚ１（ｎ）を実験結果として取得し、その取得した実験結果をパーソナルコンピュータ９０に入力してサンプルデータ３０を構成するようにしてもよい。
【０２４４】
また、入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）及び出力値ｚ１（ｎ）の一方が実験結果であり、入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）及び出力値ｚ１（ｎ）の他方をパーソナルコンピュータ９０による計算結果としてサンプルデータ３０を構成するようにしてもよい。
【０２４５】
更に、上記においては、出力層４３が１個の出力ユニットから成る３層ニューラルネットワーク４０を用いて近似関数ｆを求める演算を行なう場合について説明したが、この発明によるプログラムは、図３０に示す３層ニューラルネットワーク４０Ａを用いて近似関数ｆを求める演算を行なうようにしてもよい。
【０２４６】
図３０は、この発明によるプログラムが入力値に対する出力演算値を演算する３層ニューラルネットワークの他の概念図を示す。３層ニューラルネットワーク４０Ａは、３層ニューラルネットワーク４０の出力層４３を出力層４３Ａに代えたものであり、その他は、３層ニューラルネットワーク４０と同じである。
【０２４７】
出力層４３Ａは、出力ユニット４３ｋ（ｋ＝１〜ｍ３）から成る。そして、出力ユニット４３ｋは、中間ユニット４２ｊ（ｊ＝１〜ｍ２）からそれぞれ出力Ｙｊ（ｊ＝１〜ｍ２）を受け、その受けた出力Ｙｊ、結合重みＷｊｋ及び閾値Θｋを式（４）に代入して出力演算値Ｚ１（ｎ），・・・，Ｚｍ３（ｎ）（ｎ＝１〜Ｓ）を演算する。
【０２４８】
３層ニューラルネットワーク４０Ａが用いられる場合も、この発明によるプログラムは、図１７及び図１８に示すフローチャートに従って近似関数ｆを求める演算を実行する。そして、３層ニューラルネットワーク４０Ａを用いて近似関数ｆを求める演算が実行される場合、ｎ×Ｓ個の出力値ｚ１（ｎ），・・・，ｚｍ１（ｎ）が準備される。
【０２４９】
その他は、上述したとおりである。
更に、近似関数ｆを求める演算に用いる入力値及び出力値は、量子井戸に関するデータに限らず、出力値がなだらかな曲面上に存在するデータであれば、どのような種類の入力値及び出力値であってもよい。
【０２５０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【図１】この発明によるプログラムが近似関数を求める演算に用いる入力値と出力値とを示す図である。
【図２】入力値が２個の場合における入力値と出力値との関係を示す図である。
【図３】この発明によるプログラムが入力値に対する出力演算値を演算する３層ニューラルネットワークの概念図である。
【図４】２個の入力値を用いた場合に式（５）を用いて演算された内部状態を示す図である。
【図５】２個の入力値を用いた場合の図３に示す中間ユニットからの出力を示す図である。
【図６】２個の入力値を用いた場合に式（１）を用いて演算された内部状態を示す図である。
【図７】２個の入力値を用いた場合の図３に示す中間ユニットからの出力を示す図である。
【図８】パラメータθｊ及びｗｉｊの範囲を局所的特徴に相応する小さな半径にした場合における識別超球面の取り得る相対的位置関係と中間ユニット４２ｊの出力例とを示す図である。
【図９】パラメータθｊ及びｗｉｊの範囲を広くした場合における識別超球面の取り得る相対的位置関係と中間ユニット４２ｊの出力例とを示す図である。
【図１０】パラメータｗｉｊ（中心）が入力変数の定義域外にある小さな超球である場合における識別超球面の取り得る相対的位置関係と中間ユニット４２ｊの出力例とを示す図である。
【図１１】高次元アルゴリズムによる最適化のフローチャートである。
【図１２】高次元アルゴリズムによる解の探索方法を示す概念図である。
【図１３】パラメータが２個の場合におけるコスト関数のランドスケープを示す図である。
【図１４】式（９）に示されるνｎ（ｑｎ）の概略図である。
【図１５】コスト関数の局所解に捉まる度合いを高次元アルゴリズム（ＨＡ）と焼きなまし法（ＳＡ）について比較して示す図である。
【図１６】コスト関数の平坦領域を通過する速さを高次元アルゴリズム（ＨＡ）と焼きなまし法（ＳＡ）について比較して示す図である。
【図１７】この発明によるプログラムが入力値ｘ１（ｎ），・・・，ｘｍ１（ｎ）と出力値ｚ１（ｎ）との関係を規定する近似関数ｆを求める演算を行なうフローチャートである。
【図１８】図１７に示すステップＳ２の詳細な動作を説明するためのフローチャートである。
【図１９】中間ユニットの個数を１個に設定した場合の３層ニューラルネットワークの概念図である。
【図２０】中間ユニットの個数を２個に設定した場合の３層ニューラルネットワークの概念図である。
【図２１】二入力−一出力の３つのテスト関数の等高線を示す図である。
【図２２】パーソナルコンピュータの概略ブロック図である。
【図２３】量子準位演算プログラムが演算の対象とする量子井戸の概念図である。
【図２４】量子準位演算プログラムを構成する各ステップを示すフローチャートである。
【図２５】量子準位演算プログラムが演算の対象とする量子井戸の具体例である。
【図２６】井戸ドーピングにおいて、ドーピング量を変化させたときの計算結果である。
【図２７】バリアドーピングにおいて、ドーピング量を変化させたときの計算結果である。
【図２８】量子準位演算プログラムを用いた計算結果と従来法による計算結果との比較を示す図である。
【図２９】基底状態のエネルギー値の分割数依存性を示す図である。
【図３０】この発明によるプログラムが入力値に対する出力演算値を演算する３層ニューラルネットワークの他の概念図である。
【符号の説明】
１〜６  等高線、７  曲面、１０，２０  集合、３０  サンプルデータ、４０，４０Ａ  ３層ニューラルネットワーク、４１  入力層、４２，４２Ａ，４２Ｂ中間層、４３，４３Ａ  出力層、５０  超平面、５１，５２，８１  領域、６０  超球面、６１〜６５  曲面、７０  意味空間、７１  解、７２，８２  矢印、８０  高次元空間、８９，１０５，１０６  曲線、９０  パーソナルコンピュータ、９１  ＣＰＵ、９２  ＲＡＭ、９３  ＲＯＭ、９４  シリアルインタフェース、９５  端子、９６  ＣＤ−ＲＯＭドライブ、９７  ディスプレイ、９８  キーボード、９９  ＣＤ、１００  量子井戸、１０１，１０２  バリア層、１０３  井戸層、１０４  エネルギー準位、４１１〜４１ｍ１  入力ユニット、４２１〜４２ｍ２  中間ユニット、４３１〜４３ｍ３  出力ユニット。
【図１】
2004258748.tif 000027
【図２】
2004258748.tif 000028
【図３】
2004258748.tif 000029
【図４】
2004258748.tif 000030
【図５】
2004258748.tif 000031
【図６】
2004258748.tif 000032
【図７】
2004258748.tif 000033
【図８】
2004258748.tif 000034
【図９】
2004258748.tif 000035
【図１０】
2004258748.tif 000036
【図１１】
2004258748.tif 000037
【図１２】
2004258748.tif 000038
【図１３】
2004258748.tif 000039
【図１４】
2004258748.tif 000040
【図１５】
2004258748.tif 000041
【図１６】
2004258748.tif 000042
【図１７】
2004258748.tif 000043
【図１８】
2004258748.tif 000044
【図１９】
2004258748.tif 000045
【図２０】
2004258748.tif 000046
【図２１】
2004258748.tif 000047
【図２２】
2004258748.tif 000048
【図２３】
2004258748.tif 000049
【図２４】
2004258748.tif 000050
【図２５】
2004258748.tif 000051
【図２６】
2004258748.tif 000052
【図２７】
2004258748.tif 000053
【図２８】
2004258748.tif 000054
【図２９】
2004258748.tif 000055
【図３０】
2004258748.tif 000056