JP2020046784A - 計算装置、計算プログラム、記録媒体及び計算方法 - Google Patents

計算装置、計算プログラム、記録媒体及び計算方法 Download PDF

Info

Publication number
JP2020046784A
JP2020046784A JP2018173075A JP2018173075A JP2020046784A JP 2020046784 A JP2020046784 A JP 2020046784A JP 2018173075 A JP2018173075 A JP 2018173075A JP 2018173075 A JP2018173075 A JP 2018173075A JP 2020046784 A JP2020046784 A JP 2020046784A
Authority
JP
Japan
Prior art keywords
variable
function
update
calculation
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018173075A
Other languages
English (en)
Other versions
JP6901448B2 (ja
Inventor
太郎 金尾
Taro Kanao
太郎 金尾
隼人 後藤
Hayato Goto
隼人 後藤
光介 辰村
Kosuke Tatsumura
光介 辰村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2018173075A priority Critical patent/JP6901448B2/ja
Priority to US16/289,820 priority patent/US11593689B2/en
Publication of JP2020046784A publication Critical patent/JP2020046784A/ja
Application granted granted Critical
Publication of JP6901448B2 publication Critical patent/JP6901448B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • G06F17/13Differential equations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Algebra (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Operations Research (AREA)
  • Databases & Information Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】最適化問題を高速に計算できる計算装置、計算プログラム、記録媒体及び計算方法を提供する。【解決手段】実施形態によれば、計算装置は、処理手順を繰り返す処理部を含む。前記処理手順は、第1〜第3変数更新を含む。第1変数更新は、第1関数を加えてi番目の第1変数xiを更新する。第2変数更新は、i番目の第2関数、i番目の第3関数及びi番目の第1要素関数の演算結果を加えて、i番目の第2変数yiを更新する。第3変数更新は、i番目の第2要素関数を加えて前記第3変数zを更新する。第2要素関数の変数は、第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含む。処理部は、処理手順を繰り返した後に得られる前記i番目の前記第1変数xiを出力する出力する。【選択図】図1

Description

本発明の実施形態は、計算装置、計算プログラム、記録媒体及び計算方法に関する。
様々な社会課題において、最適化問題が生じる。最適化問題の1つの例として、イジング問題がある。大規模な最適化問題を高速に解くことが求められる。
T. Inagaki et al., Science 354, 603 (2016). H. Goto, Sci. Rep. 6, 21686 (2016). Y. Haribara et al., Quantum Sci. Technol. 2, 044002 (2017).
本発明の実施形態は、最適化問題を高速に計算できる計算装置、計算プログラム、記録媒体及び計算方法を提供する。
本発明の実施形態によれば、計算装置は、処理手順を繰り返す処理部を含む。前記処理手順は、第1変数更新、第2変数更新及び第3変数更新を含む。前記第1変数更新は、前記第1変数更新前の前記i番目(iは1以上N以下の整数であり、前記Nは2以上の整数)の第1変数xにi番目の第1関数を加えて前記i番目の前記第1変数xを更新することを含む。前記i番目の前記第1変数xは、第1変数群{x}の1つである。前記i番目の前記第1関数の変数は、前記i番目の第2変数y含む。前記i番目の前記第2変数yは、第2変数群{y}の1つである。前記i番目の前記第1関数は、第1関数群の1つである。第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yに、前記i番目の第2関数、前記i番目の第3関数及び前記i番目の第1要素関数の演算結果を加えて、前記i番目の前記第2変数yを更新することを含む。前記i番目の前記第2関数の変数は、前記i番目の前記第1変数xを含む。前記i番目の前記第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び前記第1変数群{x}の少なくとも一部を含む。前記i番目の前記第1要素関数の変数は、前記i番目の前記第2変数yと第3変数zとの積を含む。前記i番目の前記第2関数は、第2関数群の1つである。前記i番目の前記第3関数は、第3関数群の1つである。前記i番目の前記第1要素関数は、第1要素関数群の1つである。前記第3変数更新は、前記第3変数更新前の前記第3変数zに前記i番目の第2要素関数を加えて前記第3変数zを更新することを含む。前記第3変数zは、第3変数群{z}の1つである。前記第2要素関数の変数は、前記第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含む。前記処理部は、少なくとも、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数x、及び、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数xの関数の少なくともいずれかを出力する出力する。
実施形態に係る計算装置の例を示す模式図である。 実施形態に係る計算装置の動作を例示するフローチャートである。 実施形態に係る計算装置の動作の一部を例示するフローチャートである。 実施形態に係る計算装置の動作の一部を例示するフローチャートである。 実施形態に係る計算装置の動作の一部を例示するフローチャートである。 実施形態に係る計算装置の動作の一部を例示するフローチャートである。 実施形態に係る計算装置の動作の一部を例示するフローチャートである。 実施形態に係る計算装置の動作の一部を例示するフローチャートである。 実施形態に係る計算装置の動作の一部を例示するフローチャートである。 実施形態に係る計算装置の動作の一部を例示するフローチャートである。 実施形態に係る計算装置の例を示す模式図である。 実施形態に係る計算の特性を例示するグラフである。 計算結果を例示するグラフである。 図14(a)及び図14(b)は、計算結果を例示するグラフである。
以下に、本発明の各実施の形態について図面を参照しつつ説明する。
本願明細書と各図において、既出の図に関して前述したものと同様の要素には同一の符号を付して詳細な説明は適宜省略する。
(第1実施形態)
図1は、実施形態に係る計算装置の例を示す模式図である。
図1に示すように、本実施形態に係る計算装置110は、例えば、処理部20及び保持部10を含む。処理部20は、例えば、CPU(Central Processing Unit)などを含む。処理部20は、例えば電子回路などを含む。保持部10は、種々のデータを保持可能である。保持部10は、例えば、記憶部である。保持部10は、ROM(Read Only Memory)及びRAM(Random Access Memory)の少なくともいずれかを含んでも良い。計算装置110は、計算システムでも良い。
この例では、計算装置110に、取得部31が設けられている。取得部31は、例えば、種々のデータを入手可能である。取得部31は、例えば、I/Oポートなどを含む。取得部31は、出力部の機能を有しても良い。取得部31は、例えば、通信機能を有しても良い。
図1に示すように、計算装置110は、操作部32及び表示部33などを含んでも良い。操作部32は、例えば、操作機能を有する装置(例えばキーボード、マウス、タッチ式入力パネル、または音声認識入力装置など)を含んでも良い。表示部33は、各種のディスプレイを含んでも良い。
計算装置110に含まれる複数の要素において、無線及び有線の少なくともいずれかの方法により、互いに通信が可能である。計算装置110に含まれる複数の要素が設けられる場所が、互いに異なっても良い。計算装置110として、例えば、汎用コンピュータが用いられても良い。計算装置110として、例えば、互いに接続された複数のコンピュータが用いられても良い。計算装置110の少なくとも一部(例えば、処理部20及び保持部10など)として、専用の回路が用いられても良い。計算装置110として、例えば、互いに接続された複数の回路が用いられても良い。
計算装置110に含まれる複数の要素の例については、後述する。
以下、実施形態に係る計算装置110において、実施される動作の例について説明する。
図2は、実施形態に係る計算装置の動作を例示するフローチャートである。
図2に示すように、パラメータを設定する(ステップS201)。パラメータは、例えば、第1パラメータ群{J}を含む。パラメータは、例えば、第2パラメータ群{h}をさらに含んでも良い。これらのパラメータの例については、後述する。
複数の変数を設定する(ステップS202)。変数は、例えば、第1変数群{x}及び第2変数群{y}を含む。変数は、例えば、第3変数群{z}をさらに含んでも良い。ステップS202において、変数は適切な値に初期化される。初期化の例については、後述する。
複数の変数の計算(例えば更新)を行う(ステップS210)。例えば、複数の変数の時間発展が計算される。例えば、第1変数群{x}が更新され、第2変数群{y}が更新される。第3変数群{z}がさらに更新されても良い。これらの計算は、所定の条件(後述する)が満たされるまで繰り返される。ステップS210は、例えば、サブルーチンである。
サブルーチン(変数の更新)の後に、例えば、関数を算出する(ステップS220)。例えば、第1変数群{x}に含まれる少なくとも1つの要素の関数が算出される。1つの例において、この関数は、第1変数群{x}に含まれる少なくとも1つの要素の符号である。
この関数を出力する(ステップS230)。例えば、1つの例において、第1変数群{x}に含まれる少なくとも1つの要素の符号が出力される。ステップS230において、更新後の第1変数群{x}に含まれる少なくとも1つが出力されても良い。この場合、ステップS220は、省略されても良い。
実施形態においては、上記の複数の変数の計算(ステップS210)において、例えば、第1変数群{x}の更新が、第2変数群{y}を用いて行われる。そして、第2変数群{y}の更新が、第1変数群{x}を用いて行われる。これらの更新が、複数回行われる。1つの例において、複数回の更新の1つにおいて、第1変数群{x}の更新の後に、第2変数群{y}の更新が行われる。別の1つの例において、例えば、複数回の更新の1つにおいて、第2変数群{y}の更新の後に、第1変数群{x}の更新が行われる。第3変数群{z}の更新が、さらに行われても良い。
計算装置110により、最適化問題を高速に計算できる。最適化問題は、例えば、組み合わせ最適化問題(例えば離散最適化問題)である。例えば、大規模なイジング問題を高速に解くことができる。
以下、計算装置110で実施される計算の例として、イジング問題について、説明する。
例えば、イジングエネルギーEIsingは、以下の第1式で表される。
Figure 2020046784

上記の第1式において、「N」はイジングスピンの数である。「s」は、i番目のイジングスピンである。例えば、「s」=±1である。「J」は、例えば、1つの行列である。上記の第1パラメータ群{J}の1つの例が、行列Jである。行列Jは、実対称行列である。実対称行列において、対角成分(対角要素)が全てゼロである。
上記の第1式に関して、量子分岐マシンの古典モデル(以下、古典分岐マシンと呼ぶ)が提案されている。古典分岐マシンにおいては、運動方程式は、以下の第2〜第4式で与えられる。
Figure 2020046784

Figure 2020046784

Figure 2020046784

第2〜第4式において、「N」は、例えば、イジングスピンの数に対応する。「D」は、例えば、「離調」に対応する。「c」は、定数である。「p」は、例えば、「ポンプレート」に対応する。「K」は、例えば、「カー係数」に対応する。これらの値は、例えば、予め設定されても良い。第2〜第4式において、第2パラメータ群{h}は設けられなくても良い。その場合は、第3式および第4式の中の{h}の要素を含む項は無視される。
上記の第2〜第4式において、p(t)をゼロから十分大きな値へ増加させた時の「x」の最終値の符号「±1」が、最適解(基底状態)のイジングスピン「s」となる。「a(t)」は、「p(t)」とともに増加するパラメータである。「a(t)」は、例えば、以下の第5式で表される。
Figure 2020046784
上記の古典分岐マシンは、第2〜第4式において、「H」をハミルトニアンとしたハミルトン力学系であると見なすことができる。
一方、シミュレーティッドアニーリングが知られている。この方法では、逐次更新アルゴリズムが採用される。逐次更新アルゴリズムにおいては、複数のスピンが、1つずつ更新される。このような逐次更新アルゴリズムは並列計算に向かない。
これに対して、上記の古典分岐マシンの運動方程式をデジタル計算機で離散解法によって解くことが考えられる。このアルゴリズムは、シミュレーティッドアニーリングとは異なり、並列更新アルゴリズムである。並列更新アルゴリズムにおいては、複数の変数を同時に更新することができる。このため、並列計算による高速化が期待できる。
上記の第2〜第5式を用いるアプローチには、以下の課題があると考えられる。最も計算量が大きい行列Jを用いた計算が、第1変数x及び第2変数yの両方の更新に必要となる。上記の運動方程式は、数値的に容易には解けないため、例えば、計算量が大きい離散解法(例えば4次のルンゲ・クッタ法など)が必要となる。
これに対して、実施形態の1つの例においては、第2〜第4式に示した連立常微分方程式ではなく、例えば、以下の第6〜第8式に示す連立常微分方程式を用いる。
Figure 2020046784

Figure 2020046784

Figure 2020046784

上記の「y」は、第2変数群{y}に含まれる全ての要素(例えば、第1番目の第2変数y〜第N番目の第2変数y)に対応する。「f(y,t)」は、i番目の第2関数yの関数である。
第7式に示すように、第1変数更新は、第1変数更新前のi番目の第1変数xにi番目の第1関数を加えてi番目の第1変数xを更新する。i番目の第1関数は、「f(y,t)」である。i番目の第1関数は、第1関数群の1つである。
第1計算方法(第1計算装置)において、「f(y,t)」として、以下の第9式が用いられる。このとき、第7式は、第10式で表される。
Figure 2020046784

Figure 2020046784
従って、第1計算方法(第1計算装置)においては、第1変数xの更新は、上記の第10式に基づいて行われる。そして、第2変数yの更新は、上記の第8式に基づいて行われる。第10式に示すように、第1計算方法においては、i番目の第1関数の変数は、パラメータ「D」と「y」の積を含む。パラメータ「D」は1でも良い。
第1計算方法(第1計算装置)において、処理手順が繰り返される。処理手順は、第1変数更新及び第2変数更新を含む。
実施形態の別の例においては、以下の第11式〜第13式が用いられる。
Figure 2020046784

Figure 2020046784

Figure 2020046784
第2計算方法(第2計算装置)においても、処理手順が繰り返される。第2計算方法(第2計算装置)においては、処理手順は、第1変数更新、第2変数更新及び第3変数更新を含む。
第2計算方法(第2計算装置)において、第1変数更新は、第11式(または第10式でも良い)に基づいて行われる。例えば、第1変数更新は、第1変数更新前のi番目の第1変数xにi番目の第1関数を加えてi番目の第1変数xを更新することを含む。「i」は、iは1以上N以下の整数である。「N」は、2以上の整数である。i番目の第1変数xは、第1変数群{x}の1つである。i番目の第1関数の変数は、i番目の第2変数y含む。i番目の第2変数yは、第2変数群{y}の1つである。i番目の第1関数は、第1関数群の1つである。
第2計算方法(第2計算装置)において、i番目の第1関数は、「f(y,t)」である。第2計算方法(第2計算装置)において、i番目の第1関数は、「Dy」でも良い(第10式)。第2計算方法(第2計算装置)において、i番目の第1関数は、「y」でも良い(第11式)。
第12式に示すように、第2変数更新は、第2変数更新前のi番目の第2変数yに、i番目の第2関数、i番目の第3関数及びi番目の第1要素関数の演算結果を加えて、i番目の第2変数yを更新することを含む。
i番目の第2関数は、第12式の右辺の第1項及び第2項に対応する。i番目の第3関数は、第12式の右辺の第3項に対応する。i番目の第1要素関数は、第12式の第4項に対応する。
i番目の第2関数の変数は、i番目の第1変数xを含む。i番目の第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び第1変数群{x}の少なくとも一部を含む。i番目の第1要素関数の変数は、i番目の第2変数yと第3変数zとの積を含む。i番目の第2関数は、第2関数群の1つである。i番目の第3関数は、第3関数群の1つである。i番目の第1要素関数は、第1要素関数群の1つである。
第13式に示すように、第3変数更新は、第3変数更新前の第3変数zにi番目の第2要素関数を加えて第3変数zを更新することを含む。第2要素関数の変数は、第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータT(t)と、の差を含む。この2乗平均は、第2変数群{y}の上記の少なくとも一部の分散に比例する。第3変数zは、第3変数群{z}の1つである。
例えば、1〜Nの集合が、共通部分を持たない複数の部分集合に分割される。複数の部分集合の数は、「N」である。複数の部分集合のそれぞれに含まれる要素の数は、「N」個である。例えば、上記の第3変数群{z}として、z(l=1〜N)が用いられる。第12式の「i」がl番目の部分集合「S」に含まれる場合、第12式の右辺最終項の第3変数zとして、「z」が用いられる。「z」は、第13式において第3変数zを「z」とした式により、更新される。このとき、第13式の「i」に関する和は、「i」が「S」に含まれる場合に行われる。「N」は、「S」の要素数(「S」に含まれる要素の数)である。第13式の「i」に関する和は、「N」個の第2変数yについての2乗和となる。第13式において、第13式の右辺第1項の分母の「N」は、「N」に置き換えられる。このとき、第13式の第1項は、複数の部分集合の1つである「S」に含まれる番号に対応する第2変数yの2乗平均に対応する。
第1計算方法(第1計算装置)及び第2計算方法(第2計算装置)の例(例えば後述する図3の例)においては、「処理手順」は、ステップS110、ステップS120及びステップS130を含む。「処理手順」は、例えば、ステップS110、ステップS120及びステップS130における「i」に関するループ処理を含む。「処理手順」は、複数回繰り返される。
例えば、第1計算パラメータT(t)は、処理手順の繰り返しにおいて、更新される。図3の例では、第1計算パラメータT(t)はステップS130において更新される。例えば、処理手順の後の第1計算パラメータT(t)は、その処理手順の前の第1計算パラメータT(t)とは異なる。例えば、処理手順の後の第1計算パラメータT(t)は、その処理手順の前の第1計算パラメータT(t)よりも小さい。
第6〜第13式において、「N」は、例えば、イジングスピンの数に対応する。「D」は、例えば、「離調」に対応する。「c」は、定数である。「p」は、例えば、「ポンプレート」(例えば演算パラメータ)に対応する。「K」は、例えば、「カー係数」に対応する。これらの値は、例えば、予め設定されても良い。第6〜第13式において、第2パラメータ群{h}は設けられなくても良い。その場合は、第8式の中の{h}の要素を含む項は、無視される。第12式において、第8式と同様に、{h}の要素を含む項が設けられても良い。
最も計算量が大きい行列Jに関する積和演算は、第2変数yの更新にのみ行われ、第1変数xの更新では行われない。従って、計算量が削減される。これらの式において、第1変数xの時間微分は、第2変数yを含む。例えば、第1変数xの時間微分は、第1変数xを含まない。第2変数yの時間微分は、第1変数xを含む。第1計算方法においては、例えば、第2変数yの時間微分は、第2変数yを含まない。ハミルトニアンにおいて、x及びyは、互いに分離されている。このため、計算量が小さく安定な離散解法が適用可能となる。例えば、シンプレクティック・オイラー法と呼ばれる方法が適用できる。上記の第6〜第13式においては、「x」の時間微分から「p」が消去されている。
このような方法を用いた場合に、高い性能(例えば、高い精度)が維持できることが分かった。実施形態に係る計算装置では、上記の分離可能なハミルトニアンを持つハミルトン力学系(新しい古典分岐マシン)の運動方程式が、例えば、シンプレクティック・オイラー法で解かれる。実施形態に係る計算装置は、このような新しいアルゴリズムの計算が並列計算によって、できる限り高速に実行されるように構成される。
実施形態において、例えば、「p(t)」をゼロから十分大きな値へ増加させた時の第1変数xの最終値の符号(「±1」)が、最適解(基底状態)のイジングスピンsとなる。
例えば、第1変数x及び第2変数yは、変数の設定(ステップS202)において、適切な値に、初期化される。第3変数zが設けられる場合、第3変数zは、変数の設定(ステップS202)において、適切な値に、初期化される。例えば、これらの変数は、絶対値が0.1以下の乱数によって、ランダムに初期化される。
以下、ステップS210(図2参照)のいくつかの例について説明する。
図3は、実施形態に係る計算装置の動作の一部を例示するフローチャートである。
図3は、ステップS210を例示している。図3に示す複数の式は、第2計算方法に関する1つの例である。第1計算方法においては、第2計算方法に関する例の式から、第6式〜第10式に応じて、図3に例示する式が適宜変更される。図3に示すように、「t」、「p」「a」及び「T」を初期化する(ステップS101)。1つの例において、「t」、「p」及び「a」は0とされる。「T」は、「T0」とされる。「T0」は、1つの初期値である。図3において、「t」は、時刻tの最終値に対応する。「dt」は、時刻tの1ステップ当たりの増加量である。「dp」は、パラメータpの1ステップ当たりの増加量である。
図3の例において、ステップS105とステップS106との間の処理が、1つのループに対応する。「t」が「t」よりも小さいときに、以下に説明する一連の処理を含む「処理手順」の繰り返しが行われる(ステップS105)。例えば、「p」があらかじめ適切に設定された「P」よりも小さいときに「処理手順」の繰り返しが行われる、としても良い。例えば、「処理手順」は「i」に関するループ処理を含む(ステップS301a及びステップS301b)。
例えば、パラメータνが0とされる(ステップS401)。
1つのループ処理(ステップS301a及びステップS301b)の中において、i番目の第1変数xの更新が行われる(ステップS110)。例えば、第1計算方法(第1計算装置)及び第2計算方法(第2計算装置)においては、更新前の第1変数xに、dt*D*y(第10式参照)を加えて得られる値を、更新後の第1変数xとする。ここで、「*」は、積の記号である。更新前の第1変数xに、dt*y(第11式参照)を加えて得られる値を、更新後の第1変数xとしても良い。
i番目の第2変数yの更新が行われる(ステップS120)。この例では、ステップS121及びステップS122とが行われる。
第1計算方法において、ステップS121は、第1変数群{x}に基づく更新に対応する。一方、第2計算方法においては、ステップS121は、第1変数群{x}及び第3変数群{z}に基づく更新に対応する。第1計算方法及び第2計算方法において、ステップS122は、第1パラメータ{J}及び第1変数群{x}に基づく更新に対応する。ステップS121とステップS122との順序は、入れ替えが可能である。
ステップS121の少なくとも一部と、ステップS122の少なくとも一部と、が同時に行われても良い。ステップS121は、例えば第1サブ更新に対応する。ステップS122は、第2サブ更新に対応する。ステップS121は、「i」に関してループ処理される(ステップS301a及びステップS301b)。ステップS122は、「i」に関してループ処理される(ステップS302a及びステップS302b)。
第1計算方法において、第1サブ更新では、例えば、更新前の第2変数yに、dt*[(p−D−x*x)*x−c*h*a]を加えて得られる値を、更新後の第2変数yとする。
第1計算方法において、第2サブ更新では、例えば、更新前の第2変数yに、dt*c*Σ(Ji,j*x)を加えて得られる値を更新後の第2変数yとする。「Σ」は、jに関する和を表す。例えば、「dt*c*J」をJ行列としてもよい。この場合、「dt*c*」の演算を実際に行わなくても良い。
一方、第2計算方法において、第1サブ更新では、例えば、更新前の第2変数yに、dt*[(p−D−x*x)*x−c*h*a−z*y]を加えて得られる値を、更新後の第2変数yとする。第2計算方法おける第2サブ更新は、例えば、第1計算方法おける第2サブ更新と同様で良い。
第2計算方法においては、パラメータνは、1つのループ処理(ステップS301a及びステップS301b)の中において更新される(ステップS402)。パラメータνの更新においては、例えば、更新前のパラメータνに、y*yを加えて得られ値を、更新後のパラメータνとする。
例えば、1つのループ処理(ステップS301a及びステップS301b)が終了すると、第3変数群{z}が更新される(第3変数更新)。
第3変数更新(ステップS403)は、第3変数更新前の第3変数zに、dt*r*(ν/N−T)を加えて得られる値を、更新後の第3変数zとする。「dt*r*(ν/N−T)」は、i番目の第2要素関数の1つの例に対応する。第2要素関数の変数は、第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータT(t)と、の差を含む。ステップS403における「T」は、第1計算パラメータT(t)の1つの例である。
更新のためのパラメータの更新処理を行う(ステップS130)。すなわち、更新前の「t」に「dt」を加えて得られる値を更新後の「t」とする。更新前の「p」に「dp」を加えて得られる値を更新後の「p」とする。「a」は、例えば、p1/2である。更新前の「T」に「−dT」を加えて得られる値を更新後の「T」とする(第1計算パラメータT(t)の更新)。「T」の更新は、第2計算方法において行われ、第1計算方法では行われない。
そして、「t」が「t」よりも小さいときに、ステップS105に戻る(ステップS106)。例えば、「p」があらかじめ適切に設定された「P」よりも小さいときに、ステップS105に戻っても良い。
「t」が「t」以上のときに、更新を終了し、図2に示すステップS220またはステップS230に進む。
図4は、実施形態に係る計算装置の動作の一部を例示するフローチャートである。
図4は、ステップS210を例示している。図4に示す例では、1つの繰り返し処理において、ステップS110の前にステップS120(図3参照)が実施される。このように、ステップS110とステップS120とにおいて、順序は、任意である。
1つの例において、「K」は1とする。例えば、「N」、「D」、「c」、「t」、「dt」及び「dp」は、予め適切な値に設定することができる。「T0」は、予め適切な値に設定することができる。
図3及び図4の例では、「p」の更新において、線形増加が適用される。実施形態において、「p」の更新には、任意の増加関数が用いられても良い。実施形態において、上記のように、2種類の更新方法がある。すなわち、1つの更新方法では、第1変数xの更新の後に、更新された第1変数xを用いて第2変数yを更新する。別の更新方法では、第2変数yの更新の後に、更新された第2変数yを用いて第1変数xを更新する。これらの2つの方法が、図3及び図4にそれぞれ対応する。
このように、本実施形態に係る計算装置110において、処理部20(図1参照)は、処理手順(ステップS210:図2参照)を繰り返す。第1計算方法においては、この処理手順は、例えば、第1変数更新(ステップS110)及び第2変数更新(ステップS121及びステップS122)を含む。第2計算方法においては、この処理手順は、例えば、第1変数更新(ステップS110)、第2変数更新(ステップS121及びステップS122)及び第3変数更新(ステップS403)を含む。
第1計算方法及び第2計算方法において、第1変数更新は、第1変数更新前のi番目(iは1以上N以下の整数であり、Nは2以上の整数)の第1変数xにi番目の第1関数を加えてi番目の第1変数xを更新することを含む。i番目の第1変数xは、第1変数群{x}の1つである。i番目の第1関数の変数は、i番目の第2変数yを含む。i番目の第2変数yは、第2変数群{y}の1つである。i番目の第1関数は、第1関数群の1つである。
第1計算方法において、第2変数更新は、第2変数更新前のi番目の第2変数yにi番目の第2関数及びi番目の第3関数を加えて、i番目の第2変数yを更新することを含む。i番目の第2関数の変数は、i番目の第1変数xを含む。i番目の第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び第1変数群{x}の少なくとも一部を含む。i番目の第2関数は、第2関数群の1つである。i番目の第3関数は、第3関数群の1つである。
一方、第2計算方法において、第2変数更新は、第2変数更新前のi番目の第2変数yに、i番目の第2関数、i番目の第3関数及びi番目の第1要素関数の演算結果を加えてi番目の第2変数yを更新することを含む。i番目の第2関数の変数は、i番目の第1変数xを含む。i番目の第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び第1変数群{x}の少なくとも一部を含む。i番目の第1要素関数の変数は、i番目の第2変数yと第3変数zとの積を含む。i番目の第2関数は、第2関数群の1つである。i番目の第3関数は、第3関数群の1つである。i番目の第1要素関数は、第1要素関数群の1つである。
第2計算方法において、第3変数更新は、第3変数更新前の第3変数zにi番目の第2要素関数を加えて第3変数zを更新することを含む。第3変数zは、第3変数群{z}の1つである。第2要素関数の変数は、第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータT(t)と、の差を含む。
そして、処理部20は、上記の処理手順を繰り返した後に得られるi番目の第1変数x、及び、処理手順を繰り返した後に得られるi番目の第1変数xの関数の少なくともいずれかを出力する。例えば、第1変数群{x}に含まれる任意の第1変数、及び、処理手順を繰り返した後に得られる任意の第1変数の関数の少なくともいずれかが出力される。例えば、第1変数群{x}に含まれる全ての第1変数、及び、処理手順を繰り返した後に得られる全ての第1変数のそれぞれの関数の少なくともいずれかが出力されても良い。
第1計算方法及び第2計算方法において、上記の第1関数(第1関数群)は、第1変数群{x}から独立している。第1変数群{x}の値を変更しても、第1関数(第1関数群)の結果の値は変化しない。第1計算方法において、上記の第2関数(第2関数群)は、第2変数群{y}から独立している。第2変数群{y}の値を変更しても、第2関数(第2関数群)の結果の値は変化しない。第1計算方法及び第2計算方法において、上記の第3関数(第3関数群)は、第2変数群{y}から独立している。第2変数群{y}の値を変更しても、第3関数(第3関数群)の結果の値は変化しない。
第1計算方法(第1計算装置)及び第2計算方法(第2計算装置)においては、i番目の第1関数は、例えば、dt*D*yである(例えば、第10式参照)。i番目の第1関数は、例えば、dt*yでも良い(例えば、第11式参照)。
第1計算方法(第1計算装置)において、第2関数は、例えば、dt*[(p−D−x*x)*x−c*h*a]である。第3関数は、例えば、dt*c*Σ(Ji,j*x)である。
第2計算方法(第2計算装置)において、第2関数は、例えば、dt*[(p−D−x*x)*x−c*h*a]である。第3関数は、例えば、dt*c*Σ(Ji,j*x)である。第1要素関数は、例えば、dt*[−z*y]である。第2計算方法(第2計算装置)において、第2要素関数は、例えば、「dt*r*(ν/N−T)」である。
実施形態において、繰り返して行われる上記の処理手順の1つにおいて、第1変数更新、第2変数更新及び第3変数更新の順序は相互に入れ替えが可能である。
実施形態に係る計算装置で行われるアルゴリズムは、例えば、以下を含む。
例えば、行列J(第1パラメータ群{J}の1つの例)を取得する。または、行列Jを計算により定める。行列Jは、例えば、イジングモデルのパラメータである。このとき、ベクトルh(第2パラメータ群{h}の1つの例)をさらに取得しても良い。または、ベクトルhは、計算により定められても良い。
第1計算方法においては、2種類の変数(第1変数群{x}及び第2変数群{y})を用いる。一方の変数の更新には、他方の変数の値を用いる。一方の変数の更新において、その一方の変数の値を用いない。一方の変数の更新の後に、更新後のその一方の変数の値を用いて、他方を更新する。
第2計算方法においては、3種類の変数(第1変数群{x}、第2変数群{y}及び第3変数群{z})を用いる。
上記の第2関数は、例えば、i番目の第1変数xの非線形関数である第4関数を含む。第4関数は演算パラメータ「p」も含む。複数の種類の変数の更新とともに「p」は変化する。
複数の種類の変数の更新とともに「p」が変化すると、上記の第4関数の実数根の数が変化する。「関数の実数根」とは、関数の値がゼロとなる変数の値(実数)のことである。第2変数更新において第4関数のみを考慮した場合、第4関数の実数根は非線形力学系の固定点(fixed point)に対応する。(ハミルトン力学系では、固定点はハミルトニアンの極値に対応する。)よって、第4関数の実数根の数が変化することは、固定点の数が変化することに対応する。これは、非線形力学系の分岐現象に対応する。実施形態に係る計算装置で用いるアルゴリズムでは、変数の初期値が、初期の1つの安定固定点(stable fixed point)の近傍に設定される。「p」を変化させることで分岐(bifurcation)を起こす。分岐後の複数の安定な固定点(変数の値はこの複数の安定固定点のうちの1つの近傍へと変化する)と、解きたい組合せ最適化の離散変数と、を対応させる。これにより、分岐現象によって、その組合せ最適化問題を解く。例えば、上記の例では、分岐後の安定固定点における各xの値が、正負の2値であり、その符号と、イジングスピン(イジング問題の離散変数)と、が、対応付けられている。初期の安定固定点が原点であるため、各xの初期値と各yの初期値と、を原点の近傍(つまり、絶対値が0.1以下の小さな乱数)の値に設定する。
第4関数は、例えば、dt*(p−D’−xi*xi)*xiである。「D’」は、0≦D’≦Dを満たす適切な定数である。初期時刻ではp=0であり、第4関数の根はxi=0の1つだけである、pがD’よりも大きくなると、根は3つとなり、そのうちの正負2つの根が、イジングスピンと対応付けられる。第2関数を、例えば、dt*[(p−D−xi*xi)*xi−c*hi*a]とした場合、第2関数は、dt*(p−D’−xi*xi)*xi+dt*[−(D−D’)*xi−c*hi*a]のように、第4関数と1次関数との和で表すことができる。従って、第2関数は、第4関数を含む。
上記の第4関数は、例えば、3次関数である。このような処理により、例えば、ニューラルネットワークで用いられている非線形関数(例えばシグモイド関数)を用いた計算よりも、計算が容易になる。
実施形態においては、時間ステップ(例えば「dt」)を大きくすると、計算が高速になる。一方、時間ステップを過度に大きくすると、計算が不安定になる。このことを考慮して、計算の一部における時間ステップを大きくし、計算の別の一部では、時間ステップを小さくても良い。例えば、計算量の大きい、行列J及び第1変数xの積和演算を含む更新には、大きい時間ステップを適用しても良い。その他の更新には、小さい時間ステップを適用しても良い。これにより、さらなる高速化が可能である。
以下、このような計算を行う場合の例について説明する。
図5は、実施形態に係る計算装置の動作の一部を例示するフローチャートである。
図5は、ステップS210を例示している。図5に示す例では、1つの「処理手順」(ステップS105とステップS106との間にある処理のまとまり)の中に、小さいループ(ステップS107a〜ステップS107b)が設けられている。ステップS107aにおいて、ループ変数「m」は、1以上M以下である。Mは、例えば、2以上の整数である。小さいループの中において、ステップS110及びステップS121がM回繰り返される。ステップS110とステップS121の順序は、入れ替えが可能である。この後、ステップS122に進む。
第1計算方法において、図5の例では、ステップS110及びステップS121の繰り返しの後に、ステップS122が実施される。第2計算方法において、図5の例では、ステップS110、ステップS121及びステップS403の繰り返しの後に、ステップS122が実施される。
図6は、実施形態に係る計算装置の動作の一部を例示するフローチャートである。
図6は、ステップS210を例示している。図6に示す例でも、1つのループ(ステップS105〜ステップS106)の中に、小さいループ(ステップS107c〜ステップS107d)が設けられている。ステップS107cにおいて、ループ変数「m」は、1以上M以下である。ステップS122が実施された後に、小さいループが実施される。第1計算方法において、小さいループは、ステップS121及びステップS110の繰り返しに対応する。第2計算方法において、小さいループは、ステップS121、ステップS110及びステップS403の繰り返しに対応する。小さいループの中において、ステップS121及びステップS110、または、ステップS121、ステップS110及びステップS403が、M回繰り返される。ステップS121とステップS110の順序は、入れ替えが可能である。ステップS121、ステップS110及びステップS403の順序は、入れ替えが可能である。
図5の例では、第1変数xの更新後に、第2変数yの更新が行われる。図6の例では、第2変数yの更新後に、第1変数xの更新が行われる。例えば、行列Jに関する積和演算を含まない更新の時間ステップ「dt’」は、「dt/M」とされる。一方、行列Jに関する積和演算を含む1回の更新(大きいループ)において、M回の小さいループ(行列Jに関する積和演算を含まない更新)を行う。上記により、例えば、大きなループの時間ステップdtを比較的大きな値にすることができる。例えば、高速な計算が可能となる。
このように、実施形態の1つの例では、上記の第2変数更新(ステップS120)は、第1サブ更新(ステップS121)及び第2サブ更新(ステップS122)を含む。
第1サブ更新(ステップS121)は、第1サブ更新前のi番目の第2変数yに第2関数を加えてi番目の第2変数yを更新することを含む。第2サブ更新(ステップS122)は、第2サブ更新前のi番目の第2変数yに第3関数を加えてi番目の第2変数yを更新することを含む。この場合も、第2関数は、第2変数群{y}から独立している。第3関数は、第2変数群{y}から独立している。
第1計算方法において、例えば、第1変数更新及び第1サブ更新を交互にM回(Mは2以上の整数)行った後に、第2サブ更新を行う。または、第2サブ更新後に、第1変数更新及び第1サブ更新を交互にM回行う。第1変数更新と第1サブ更新とを交互に行う順序は、入れ替えが可能である。
第2計算方法において、例えば、第1変数更新、第1サブ更新及び第3変数更新をM回(Mは2以上の整数)行った後に、第2サブ更新を行う。または、第2サブ更新後に、第1変数更新、第1サブ更新及び第3変数更新をM回行う。第1変数更新、第1サブ更新及び第3変数更新の順序は、入れ替えが可能である。
第2計算方法において、第3変数更新(ステップS403)の少なくとも一部は、第2サブ更新(ステップS122)の少なくとも一部と同時に実施されても良い。
第3関数は、例えば、第1パラメータ群{J}の上記の少なくとも一部と、第1変数群{x}の上記の少なくとも一部と、の積和演算を含む。
1つの例において、上記の処理手順を繰り返した後の第4関数の実数根の数は、2以上である。処理手順を繰り返した後の第4関数の根の1つは正である。処理手順を繰り返した後の第4関数の根の別の1つは負である。処理部20(図1参照)は、例えば、処理手順を繰り返した後に得られるi番目の第1変数xの符号(すなわち±1)を出力する。
既に説明したように、第2関数は、i番目の第2パラメータhを含んでも良い。i番目の第2パラメータhは、第2パラメータ群{h}の1つである。
実施形態において、処理部20は、保持部10に保持されたデータを読み出し、データを更新し、更新されたデータを保持部10に保持させる。
例えば、第1変数更新(ステップS110)は、第1変数更新前のi番目の第1変数xを保持部10から取得し、第1変数更新後のi番目の第1変数xを保持部10に保持させることを含む。第2変数更新(ステップS120)は、第2変数更新前のi番目の第2変数yを保持部10から取得し、第2変数更新後のi番目の第2変数yを保持部10に保持させることを含む。第3変数更新(ステップS403)は、第3変数更新前の第3変数zを保持部10から取得し、第3変数更新後の第3変数zを保持部10に保持させることを含む。
例えば、第1変数更新は、i番目の第2変数yを保持部10から取得してi番目の第1関数を計算し、i番目の第1変数xにi番目の第1関数を加えてi番目の第1変数xを更新することをさらに含んでも良い。
例えば、第2変数更新は、i番目の第1変数xを保持部10から取得して第2関数を計算し、第1パラメータ群{J}の上記の少なくとも一部及び第1変数群{x}の上記の少なくとも一部を保持部10から取得して第3関数を計算し、i番目の第2変数yに第2関数及び第3関数を加えてi番目の第2変数yを更新することをさらに含んでも良い。
例えば、第2変数更新は、i番目の第1変数xを保持部10から取得して第2関数を計算し、第1パラメータ群{J}の上記の少なくとも一部及び第1変数群{x}の上記の少なくとも一部を保持部10から取得して第3関数を計算し、i番目の第2変数yを保持部10から取得して第1要素関数を計算することを含んでも良い。例えば、第2変数更新は、i番目の第2変数yに、第2関数、第3関数及び第1要素関数の演算結果を加えてi番目の第2変数yを更新すること含んでも良い。
実施形態において、例えば、行列Jが疎行列の場合、疎行列の圧縮形式を用いても良い。疎行列の圧縮形式には、例えば、COO(coordinate)形式またはCSR(compressed sparse row)形式などが適用できる。疎行列の圧縮形式を用いることで、例えば、メモリサイズを節約できる。疎行列の圧縮形式を用いることで、例えば、行列J及び第1変数xの積和演算を高速に実施できる。
以下、定数「c」の例について述べる。例えば、離調「D」は、行列Jの最大固有値λmaxのc倍よりも大きくされる(例えば、非特許文献2参照)。「D」が大きすぎると、無駄な計算時間が生じる。このため、例えば、「D」がλmaxのc倍と実質的に等しいように設定する。この場合、c=D/λmaxとなる。一方、1つの例において、行列Jは、実対称行列である。この場合に、行列Jのサイズが十分大きい場合、λmaxは、2σ×N1/2と実質的に同じになる。この関係は、ランダム行列のウィグナーの半円則に基づく。「σ」は、行列Jの非対角成分の標準偏差である。この場合、c=D/(2σ×N1/2)と設定するとよい。この場合の計算例について、後述する。
本実施形態において、精度を向上させる方法として、上記の非線形関数として用いられる関数を変更することが考えられる。例えば、第1計算方法及び第2計算方法において、上記の第9式〜第13式に関して説明した関数を適宜用いることができる。さらに、第8式の代わりに、以下の第14式を用いても良い。
Figure 2020046784
第14式において、「n」は、2以上の偶数である。このような関数を用いることで、例えば、イジング問題の解の精度を向上することができる。
実施形態に係る計算装置110で実施される上記のアルゴリズムは、種々の構成により実施できる。計算装置110は、例えば、PCクラスタを含んでも良い。計算装置110は、例えば、GPU(Graphics Processing Unit)を含んでも良い。計算装置110は、例えば専用回路を含んでも良い。専用回路は、例えば、FPGA(field-programmable gate array)、ゲートアレイ、及び、ASIC(application specific integrated circuit)の少なくともいずれかを含んでも良い。計算装置110は、例えば、並列デジタル計算装置を含んでも良い。
図7〜図10は、実施形態に係る計算装置の動作の一部を例示するフローチャートである。
これらの図は、ステップS210の別の例を示している。これらの図に示すように、図3〜図6の例において、ステップS110とステップS121とは、互いに入れ替えられても良い。
図11は、実施形態に係る計算装置の例を示す模式図である。
図11に示すように、実施形態に係る計算装置111は、複数の回路(第1回路15A、第2回路15B及び第3回路15Cなど)を含む。これらの複数の回路のそれぞれは、例えば、1つのコンピュータである。これらの複数の回路のそれぞれは、例えば、1つの半導体回路でも良い。これらの複数の回路は、互いに通信(例えば、データの送受信)が可能である。計算装置111には、さらに制御回路部15Xが設けられている。制御回路部15Xにより、複数の回路における通信が制御される。
例えば、複数の回路のそれぞれには、処理部及び保持部(記憶部)が設けられる。この他、制御部が設けられても良い。
複数の回路(第1回路15A、第2回路15B及び第3回路15Cなど)により、並列計算が行われる。複数の回路の数は、任意である。
例えば、第1回路15Aには、第1計算部20A及び第1保持領域10Aが設けられる。この例では、第1回路15Aは、第1制御部16Aをさらに含む。第2回路15Bには、第2計算部20B及び第2保持領域10Bが設けられる。この例では、第2回路15Bは、第2制御部16Bをさらに含む。このような構成は、第3回路15Cにも設けられる。
処理部20は、上記の複数の計算部(第1計算部20A及び第2計算部20Bなど)を含む。例えば、第1計算部20Aは、第3関数の計算の一部(例えば、ステップS302a、ステップS122及びステップS302bのiに関するループの一部)を実施する。第2計算部20Bは、第3関数の計算の別の一部(例えば、ステップS302a、ステップS122及びステップS302bのiに関するループの別の一部)を実施する。これらの計算の少なくとも一部は、並列して実施される。例えば、第1計算部20Aにおける第3関数の計算の上記の一部の実施の少なくとも一部と、第2計算部20Bにおける第3関数の計算の別の一部の実施の少なくとも一部と、は、同時に行われる。並列計算により、計算が高速化できる。第3関数の計算量は多い。このため、第3関数(例えば、ステップS302a、ステップS122及びステップS302bのiに関するループ)の計算を並列化することにより、効果的に高速化が行われる。
並列計算において、例えば、第1計算部20Aは、第3関数の計算の一部を実施するのに必要な、第1パラメータ群{J}の一部を、第1保持領域10Aに保持させる。このように、第1回路15Aのなかで、第3関数の計算の一部に必要な保持と処理が行われる。一方、第2計算部20Bは、第3関数の計算の別の一部を実施するのに必要な、第1パラメータ群{J}の別の一部を、第2保持領域10Bに保持させる。このように、第2回路15Bのなかで、第3関数の計算の別の一部に必要な保持と処理が行われる。
例えば、第1パラメータ群{J}は、第1計算使用部分と、第2計算使用部分と、を含む。第1計算使用部分は、第3関数の計算の一部で用いられる。第2計算使用部分は、第3関数の計算の別の一部で用いられる。第1計算部20Aは、上記の第1計算使用部分を第1保持領域10Aに保持させる。第2計算部20Bは、上記の第2計算使用部分を第2保持領域10Bに保持させる。
実施形態において、i番目の第1変数xの第1変数更新及びi番目の第2変数yの第1サブ更新(第2関数による更新)と、j番目(「j」は「i」とは異なる)の第1変数xの第1変数更新及びj番目の第2変数yの第1サブ更新(第2関数による更新)と、を並列計算しても良い。この場合、処理部20に、第3計算部20C及び第4計算部20Dが設けられても良い。第3計算部20Cは、第1回路15Aに設けられる。第4計算部20Dは、第2回路15Bに設けられる。これらの計算部は、機能ブロックである。第3計算部20Cの少なくとも一部で実施される処理は、第1計算部20Aの少なくとも一部で実施されても良い。第4計算部20Dの少なくとも一部で実施される処理は、第2計算部20Bの少なくとも一部で実施されても良い。
例えば、第3計算部20Cは、第1変数更新の計算の一部、及び、第2関数の計算(第1サブ更新)の一部を実施する。第4計算部20Dは、第1変数更新の計算の別の一部、及び、第2関数の計算(第1サブ更新)の別の一部を実施する。
既に説明したように、第1変数更新は、第1変数更新前のi番目の第1変数xにi番目の第1関数を加えてi番目の第1変数xを更新することを含む。同様に、第1変数更新は、第1変数更新前のj番目(jはiとは異なり、1以上N以下の整数)の第1変数xにj番目の第1関数を加えてj番目の第1変数xを更新することをさらに含む。ここで、j番目の第1変数xは、第1変数群{x}の1つである。j番目の第1関数の変数は、j番目の第2変数yを含む。j番目の第2変数yは、第2変数群{y}の1つである。
例えば、第1変数更新の計算の一部は、i番目の第1変数xの更新の計算を含む。第1変数更新の計算の別の一部は、j番目の第1変数xの更新の計算を含む。
一方、第2関数の計算の一部は、i番目の第1変数xを変数として含む第2関数の計算を含む。第2関数の計算の別の一部は、j番目の第1変数xを変数として含む第2関数の計算を含む。
第3計算部20Cにおける、第1変数更新の計算の一部、及び、第2関数の計算(第1サブ更新)の一部の実施の少なくとも一部(例えば、図3〜10のフローチャートにおけるステップS301aとステップS301bとの間のiループの一部)と、第4計算部20Dにおける第1変数更新の計算の別の一部(例えば、図3〜10のフローチャートにおけるステップS301aとステップS301bとの間のiループの別の一部)、及び、第2関数の計算(第1サブ更新)の別の一部の実施の少なくとも一部は、同時に行われても良い。このような並列計算により、高速に計算できる。
第2計算方法(第2計算装置)においては、上記の「第1変数更新の計算の一部」で更新される第1変数xに対応する第2変数yの2乗平均を、第13式における2乗平均とする。これにより、例えば、「並列計算」において、2乗平均を計算するための、「第1変数更新の計算の一部」と「第1変数更新の計算の別の一部」との間での第2変数yの通信が、不要となる。並列計算による高速化が容易になる。部分集合「S」が並列計算が可能になるように定義される。
例えば、処理部20の1つの部分は、第2変数群{y}の一部の更新と、第2変数群{y}のその一部に関する2乗平均の算出と、を実施する。この場合、第2変数群{y}の上記の一部は、上記の複数の部分集合の1つ(例えば、「S」)に対応する。処理部20の別の1つの部分は、第2変数群{y}の別の一部の更新と、第2変数群{y}のその別の一部に関する2乗平均の算出と、を実施する。この場合、第2変数群{y}の上記の別の一部は、上記の複数の部分集合の別の1つ(例えば、「S」)に対応する。例えば、処理部20の上記の1つの部分で算出された2乗平均が、第2変数群{y}の上記の一部の更新に用いられる。例えば、処理部20の上記の別の1つの部分で算出された2乗平均が、第2変数群{y}の上記の別の一部の更新に用いられる。
処理部20の一部において、第2変数群{y}の一部の更新と、その一部の2乗平均の算出と、が行われるため、通信(データの授受)が効率的になる。または、通信が不要になる。
例えば、第2変数群{y}の上記の一部の更新と、第2変数群{y}の上記の一部に関する2乗平均(または分散値)の算出と、の少なくとも一部の実施は、第2変数群{y}の上記の別の一部の更新と、第2変数群{y}の上記の別の一部に関する2乗平均(または分散値)の算出と、の少なくとも一部の実施と、同時に行われる。並列の計算により、処理時間が短縮できる。
例えば、処理部20の1つの部分は、第2変数群{y}の一部の更新(第1の更新)と、第2変数群{y}の一部に関する2乗平均の算出(第1の算出)と、第3変数群{z}に含まれる1つの第3変数zの更新(第2の更新)と、を実施する。第2の更新は、算出された2乗平均を用いて行われる。処理部20の別の1つの部分は、第2変数群{y}の別の一部の更新(第3の更新)と、第2変数群{y}の別の一部に関する2乗平均の算出(第2の算出)と、第3変数群{z}に含まれる別の1つの第3変数zの更新(第4の更新)と、を実施する。第4の更新は、算出された上記の別の一部に関する2乗平均を用いて行われる。
例えば、第1の更新、第1の算出、及び、第2の更新の少なくとも一部の実施は、第3の更新、第2の算出、及び、第4の更新の少なくとも一部の実施と同時に行われても良い。
以下、実施形態に係る計算装置の計算例について説明する。以下の計算例において、計算時間は、パラメータの設定の時間を含まない。計算時間は、パラメータの設定の後に、微分方程式を解くのに要した時間に対応する。
第1計算例では、PCクラスタにより計算が行われる。第1計算例では、変数及びパラメータは、「float」(32ビット浮動小数点実数)として扱われる。計算コアの数を「Q」とする。「Q」は、Nの約数である。L=N/Qとする。
PCクラスタで上記のアルゴリズムを並列して計算する際に、MPI(Message Passing Interface)が用いられる。MPIは、分散メモリ型並列計算に対応する。MPIにおいては、複数の計算コアのそれぞれは、L個の第1分割変数(x)と、L個の第2分割変数(y)と、の1つの組み合わせを処理する。
例えば、i番目の計算コアは、{x|n=(i−1)L+1, …、 iL}、及び、{y|n=(i−1)L+1, …、 iL}を保持し、これらの更新を行う。
i番目の計算コアは、{h|n=(i−1)L+1, …、 iL}、及び、{Jm,n|m=(i−1)L+1, …、 iL;n=1…N}も保持できる。{h|n=(i−1)L+1, …、 iL}、及び、{Jm,n|m=(i−1)L+1, …、 iL;n=1…N}は、{y|n=(i−1)L+1, …、 iL}の更新に用いられる。
例えば、{y|n=(i−1)L+1, …、 iL}のそれぞれの更新には、{x|n=1, …、 N}の全成分が用いられる。例えば、Allgather関数により、{x|n=1, …、 N}の情報が、全ての計算コアに供給される。すなわち、情報(データ)が共有される。
実施形態において、複数の計算コアの間において、通信が行われる。すなわち、データの送受信が行われる。この通信において、{y|n=(i−1)L+1, …、 iL}に関する通信、及び、{Jm,n|m=(i−1)L+1, …、 iL;n=1…N}に関する通信は不要である。
第2計算方法(第2計算装置)においては、i番目の計算コアは、{z|n=(i−1)L+1, …、 iL}の更新に必要な第13式の第2変数yの2乗平均を、{y|n=(i−1)L+1, …、 iL}の2乗平均とする。これにより、第2変数yの2乗平均を計算するための、各コア間での第2変数yの通信が、不要となる。
例えば、第1変数群{x}に関しての通信を行わず、第1パラメータ群{J}及び第1変数群{x}の積和演算を分割して並列して実施し、その結果を通信して第2変数群{y}の更新を行う方法が考えられる。この方法においては、第1パラメータ群{J}及び第1変数群{x}の積和演算を分割して実施する。
以下、N=2000である場合(第1計算例)と、N=100000である場合(第2計算例)と、の計算の例について説明する。
第1計算例(N=2000の場合)として、「K2000」問題(非特許文献1参照)の計算例について説明する。「K2000」問題は、N=2000の全結合イジングモデルである。行列Jの非対角成分は、±1のいずれかである。ベクトルhの成分は、すべてゼロである。従って、ベクトルhを含む項の計算は行われない。この場合において、行列Jの非対角成分の標準偏差σは、1である。このため、「c」をc=D/(2N1/2)に設定する。「K2000」問題における行列Jの実際の最大固有値は、88.813324である。一方、ランダム行列理論における理論値は、2σN1/2=89.442719であり、これらの値は、互いに非常に近い。
以下に説明する第1計算例では、Q=25であり、dp*(t/dt)=D=2であり、t=50である。
実施形態に係る第1計算方法(第1計算装置、第8式及び第10式)おいて、M=1で、dt=0.25の場合、計算時間は、7.6msである。このときに得られたイジングエネルギーの100回の平均値は、約−66086である。この値を「カット数」(第15式、第16式、及び、非特許文献1参照)に換算した値は、32523である。「カット数」が大きいことは、精度が高いことに対応する。カット数Nmcは、以下の第16式及び第17式で表される。
Figure 2020046784

Figure 2020046784
実施形態に係る第1計算方法(第1計算装置、第8式及び第10式)において、M=5で、dt=0.5の場合、計算時間は、4.1msである。このときに得られたイジングエネルギーの100回の平均値は、約−66137である。この値を「カット数」に換算すると、32549である。M=5の場合における「dt」は、M=1の場合の「dt」の2倍にできる。M=5の場合の計算時間は、M=1の場合の計算時間の約半分になる。高速な計算が可能である。
一方、非特許文献1によると、コヒーレントイジングマシンにおいて、5msにおける100回の「カット数」(非特許文献1参照)の平均値は、32457である。一方、非特許文献1によると、シミュレーティッドアニーリングにおいて、50msにおける100回の「カット数」の平均値は、32314である。このように、実施形態に係る計算により、コヒーレントイジングマシン及びシミュレーティッドアニーリングよりも短時間で、より高精度の解が得られる。
図12は、実施形態に係る計算の特性を例示するグラフである。
図12は、計算により得られる「カット数」と、「c」と、の関係の例を示している。図12の縦軸は、「c/c」である。既に説明したように、c=D/(2N1/2)である。図12の縦軸は、カット数Nmcである。
図12に示すように、「c/c」が、約1以上、約1.5以下のときに大きなカット数Nmcが得られる。
以下、第2計算例(N=100000の場合)について説明する。第2計算例では、行列Jの非対角成分、及び、ベクトルhの成分は、「乱数」により設定される。「乱数」においては、−1〜1の値が一様に設定される。この場合の行列Jの非対角成分の標準偏差σは、1/(31/2)である。このため、c=31/2D/(2N1/2)と設定する。その他のパラメータに関しては、Q=1250であり、dp*(t/dt)=D=2であり、t=50であり、dt=0.5であり、M=5である。
図13は、計算結果を例示するグラフである。
図13には、実施形態に係る第1計算方法(第1計算装置、第8式及び第10式)での第2計算例の結果と、参考例に係る計算での第2計算例の結果と、が示されている。図13の横軸は、計算時間Tc(秒)である。縦軸は、イジングエネルギーの100回の平均値Vaveである。図13には、実施形態に係る計算結果110Eと、参考例の計算結果119Rと、が示されている。これらの計算例において、計算コアの数は、1250である。
実施形態に係る第1計算方法(第1計算装置、第8式及び第10式)の計算結果110Eにおいて、「n」は、第14式の非線形関数を用いた場合の第14式中の「n」の値を示している。計算結果110Eにおいて、「n」が書かれていない曲線は、第8式が用いられた場合に対応する。
参考例の計算結果119Rでは、シミュレーティッドアニーリングによる計算が行われる。シミュレーティッドアニーリングでは、スピン反転によるエネルギー変化が、MPIにより、並列計算される。これらの計算においては、逆温度を線形に増加させている。参考例の計算結果119Rの複数の曲線において、増加率が互いに異なる。
図13から分かるように、実施形態に係る第1計算方法(第1計算装置、第8式及び第10式)の計算結果110Eにおいて、最終的な平均値Vaveは、低い(絶対値が大きい)。これに対して、参考例の計算結果においては、最終的な平均値Vaveは十分に低くならない(絶対値が十分に大きくならない)。このように、実施形態においては、高い精度の計算結果が得られる。実施形態によれば、参考例(シミュレーティッドアニーリング)に比べて、同じ精度が得られるのに要する計算時間Tcは、1/10以下である。実施形態に係る計算は、参考例に比べて、10倍以上高速である。
以下、本実施形態に係る計算の第3計算例について説明する。第3計算例では、GPUにより、上記の計算が行われる。この計算において、例えば、変数及びパラメータは、float(32ビット浮動小数点実数)として扱われる。
この方法では、第1変数群{x}、第2変数群{y}、第1パラメータ群{J}及び第2パラメータ群{h}は、デバイス変数として定義される。第1パラメータ群{J}は、行列Jである。行列J及び第1変数xの積和演算を用いた第2変数yの更新は、行列ベクトル積関数により行われる。第1変数x及び第2変数yに関するその他の更新に関して、i番目の成分(x,y)の更新が1つのスレッドで行われる。
第3計算例では、1つのGPUを用いて、第1計算例と同様の条件で、「K2000」問題が計算される。第3計算例の計算時間は、14.7ms、100回の「カット数」の平均値32549が得られる。第3計算例においても、参考例のシミュレーティッドアニーリングの結果よりも高速に計算できる。
以下、第1計算方法及び第2計算方法(第1計算装置及び第2計算装置)の例について説明する。
図14(a)及び図14(b)は、計算結果を例示するグラフである。
これらの図は、「G22」問題(非特許文献1参照)に関しての計算結果の例を示す。これらの図には、第1計算方法(第1計算装置、第8式及び第10式)による計算結果M11と、第2計算方法(第2計算装置、第11式〜第13式)による計算結果M12と、が示されている。計算結果M11において、第2変数yの初期値yi(0)は、−0.1以上0.1以下の範囲の乱数の値である。計算結果M12において、第2変数yの初期値yi(0)は、−0.1以上0.1以下の範囲の乱数の値である。第2計算方法(第2計算装置、第11式〜第13式)において、第1計算パラメータT(t)は、処理手順(ループ)ごとに、1から0に向けて、単調に減少する。乱数での値を変えて、100回の計算が行われる。
図14(a)は、100回の計算における平均値である。図14(b)は、100回の計算における最大値である。これらの図の横軸は、処理手順の繰り返し回数NLである。縦軸は、カット数Nmcである。1つのループにおいて、N個の第1変数xとN個の第2変数yとが全て更新される。1つのループにおいて、第3変数zも更新される。
図14(a)及び図14(b)に示すように、処理手順の繰り返し回数NLが3000以上において、第2計算方法(第2計算装置、第11式〜第13式)によるカット数Nmcは、第1計算方法(第1計算装置、第8式及び第10式)によるカット数Nmcよりも大きい。例えば、比較的時間をかけて良い解を探索したい場合、第2計算方法(第2計算装置)が有利であると考えられる。
第2計算方法(第2計算装置)におけるi番目の第1関数に含まれる第1計算パラメータT(t)は、例えば、温度に対応する。第2計算方法(第2計算装置)によれば、例えば、大きな初期運動量(第2変数yの初期値yi(0))でも、良い解に収束する。大きな初期運動量により、より広い範囲の探索が容易になる。
(第2実施形態)
第2実施形態に係る計算装置(計算方法)においては、上記の第2計算方法に関して説明した第11式〜第13式の代わりに、以下の第17式〜第20式が用いられる。
Figure 2020046784

Figure 2020046784

Figure 2020046784

Figure 2020046784
第17式に示すように、第3変数bが導入される。第3変数bは、第1実施形態に関して説明した第3変数群{z}とは異なる。
第2実施形態に係る計算装置は、以下に説明する処理手順を繰り返す処理部20を含む。処理手順は、第1変数更新、第2変数更新、第3変数更新及び第4変数更新を含む。
第1変数更新は、例えば、第17式に基づいて行われる。第1変数更新は、例えば、第1変数更新前のi番目の第1変数xにi番目の第1関数を加えてi番目の第1変数xを更新することを含む。i番目の第1変数xは、第1変数群{x}の1つである。i番目の第1関数の変数は、i番目の第2変数y及び第3変数bを含む。i番目の第2変数yは、第2変数群{y}の1つである。i番目の第1関数は、第1関数群の1つである。第17式に示す例では、第1関数は、y/bである。
第2変数更新は、第18式に基づいて行われる。第2変数更新は、例えば、第2変数更新前のi番目の第2変数yに、i番目の第2関数及びi番目の第3関数を加えてi番目の第2変数yを更新することを含む。i番目の第2関数の変数は、i番目の第1変数xを含む。i番目の第3関数の変数は、第1パラメータ群{J}の少なくとも一部、及び、第1変数群{x}の少なくとも一部を含む。
i番目の第2関数は、例えば、第18式の「x]を含む項に対応する。i番目の第3関数は、第18式の「j」に関する和の項に対応する。
第3変数更新(第3変数bの更新)は、第19式に基づいて行われる。第3変数更新は、例えば、第3変数更新前の第3変数bに第1要素関数を加えて、第3変数bを更新することを含む。第3変数bは、第3変数群{b}の1つである。第1要素関数の変数は、第4変数Pを含む。第19式の例では、第1要素関数は、「(P/V)」に対応する。例えば、「V」は、自由度(第3変数b)の質量に相当する。
第4変数更新(第4変数Pの更新)は、例えば、第20式に基づいて行われる。第4変数更新は、例えば、第4変数更新前の第4変数Pに第2要素関数を加えて第4変数Pを更新することを含む。第4変数Pは、第4変数群{P}の1つである。
第20式に示す例では、第2要素関数の変数は、第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含む。2乗平均は、第20式の第1項に対応する。第1計算パラメータは、第20式の第2項に対応する。
処理部20は、少なくとも、処理手順を繰り返した後に得られるi番目の第1変数x、及び、処理手順を繰り返した後に得られるi番目の第1変数xの関数の少なくともいずれかを出力する。
第2実施形態においても、同時更新(並列更新)が可能である。例えば、乱数が不要である。例えば、処理手順の繰り返しは、積和演算の実施により実施できる。最適化問題を高速に計算できる計算装置が提供できる。
第2実施形態に係る計算装置(及び計算方法)に、第1実施形態に関して説明した処理(例えば、並列処理など)が適用できる。
(第3実施形態)
第3実施形態に係る計算装置(計算方法)においては、上記の第2計算方法に関して説明した第1式から第13式の代わりに、以下の第21式〜第26式が用いられる。
Figure 2020046784

Figure 2020046784

Figure 2020046784

Figure 2020046784

Figure 2020046784

Figure 2020046784
第21式に示すように、第3変数bが導入される。第3変数bは、第1実施形態に関して説明した第3変数群{z}とは異なる。
第3実施形態に係る計算装置は、以下に説明する処理手順を繰り返す処理部20を含む。処理手順は、第1変数更新、第2変数更新、第3変数更新及び第4変数更新を含む。
第1変数更新は、例えば、第21式に基づいて行われる。第1変数更新は、第1変数更新前のi番目の第1変数xにi番目の第1関数を加えて、i番目の第1変数xを更新することを含む。i番目の第1変数xは、第1変数群{x}の1つである。i番目の第1関数の変数は、i番目の第2変数y及び第3変数bを含む。i番目の第2変数yは、第2変数群{y}の1つである。i番目の第1関数は、第1関数群の1つである。
第21式の例においては、i番目の第1関数は、y/bである。
第2変数更新は、第22式に基づいて行われる。第2変数更新は、第2変数更新前のi番目の第2変数yに、i番目の第2関数及びi番目の第3関数の和と、第3変数bと、の積を加えて、i番目の第2変数yを更新することを含む。i番目の第2関数の変数は、i番目の第1変数xを含む。i番目の第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び第1変数群{x}の少なくとも一部を含む。
第22式の例においては、i番目の第2関数は、例えば、第22式の「x]を含む項に対応する。i番目の第3関数は、第22式の「j」に関する和の項に対応する。
第3変数更新(第3変数bの更新)は、例えば、第23式に基づいて行われる。第3変数更新は、第3変数更新前の第3変数bに第1要素関数を加えて、第3変数bを更新することを含む。第3変数bは、第3変数群{b}の1つである。第1要素関数の変数は、第4変数Pを含む。
第23式に示すように、第1要素関数の要素は、第3変数bと、第4変数Pと、の積を含む。第23式の例では、第1要素関数は、「(b・P)/V」に対応する。
第4変数更新(第4変数Pの更新)は、例えば、第24式に基づいて行われる。第4変数更新は、第4変数更新前の第4変数Pに第2要素関数を加えて、第4変数Pを更新することを含む。第4変数Pは、第4変数群{P}の1つである。第2要素関数の変数は、第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含む。
第24式に示す例では、第2要素関数の変数は、第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含む。この2乗平均は、第24式の第1項に対応する。第1計算パラメータは、第24式の第2項及び第3項に対応する。
処理部20は、少なくとも、処理手順を繰り返した後に得られるi番目の第1変数x、及び、処理手順を繰り返した後に得られるi番目の第1変数xの関数の少なくともいずれかを出力する。
第25式において、「B」は、第26式が満たされるように決められる定数である。
第3実施形態においても、同時更新(並列更新)が可能である。例えば、乱数が不要である。例えば、処理手順の繰り返しは、積和演算の実施により実施できる。最適化問題を高速に計算できる計算装置が提供できる。
第3実施形態に係る計算装置(及び計算方法)に、第1実施形態に関して説明した処理(例えば、並列処理など)が適用できる。
(第4実施形態)
第4実施形態は、第1〜第3実施形態に関して説明した計算が可能な回路を含む。
(第5実施形態)
第5実施形態は、計算プログラムに係る。計算プログラムは、コンピュータに、第1〜第3実施形態に関して説明した処理手順を繰り返させる。以下、第1実施形態に関して説明した処理手順を実施する場合について説明する。
この処理手順は、第1変数更新、第2変数更新及び第3変数更新を含む。
第1変数更新は、第1変数更新前のi番目(iは1以上N以下の整数であり、Nは2以上の整数)の第1変数xにi番目の第1関数を加えてi番目の第1変数xを更新することを含む。i番目の第1変数xは、第1変数群{x}の1つである。i番目の第1関数の変数は、i番目の第2変数y含み、i番目の第2変数yは、第2変数群{y}の1つである。i番目の第1関数は、第1関数群の1つである。
第2変数更新は、第2変数更新前のi番目の第2変数yに、i番目の第2関数、i番目の第3関数及びi番目の第1要素関数の演算結果を加えてi番目の第2変数yを更新することを含む。i番目の第2関数の変数は、i番目の第1変数xを含む。i番目の第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び第1変数群{x}の少なくとも一部を含む。i番目の第1要素関数の変数は、i番目の第2変数yと第3変数zとの積を含む。i番目の第2関数は、第2関数群の1つである。i番目の第3関数は、第3関数群の1つである。i番目の第1要素関数は、第1要素関数群の1つである。
第3変数更新は、第3変数更新前の第3変数zにi番目の第2要素関数を加えて第3変数zを更新することを含む。第3変数zは、第3変数群{z}の1つである。第2要素関数の変数は、第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含む。
処理部は、少なくとも、処理手順を繰り返した後に得られるi番目の第1変数x、及び、処理手順を繰り返した後に得られるi番目の第1変数xの関数の少なくともいずれかを出力する。
本実施形態に係る計算プログラムは、第2実施形態及び第3実施形態に関して説明した処理が適用できる。
(第6実施形態)
第6実施形態は、コンピュータ読み取り可能な記録媒体である。この記録媒体は、コンピュータに、第1〜第3実施形態に関して説明した処理手順を繰り返させるプログラムが記録されている。以下、第1実施形態に関して説明した処理手順を実施する場合について説明する。
この処理手順は、第1変数更新、第2変数更新及び第3変数更新を含む。
第1変数更新は、第1変数更新前のi番目(iは1以上N以下の整数であり、Nは2以上の整数)の第1変数xにi番目の第1関数を加えてi番目の第1変数xを更新することを含む。i番目の第1変数xは、第1変数群{x}の1つである。i番目の第1関数の変数は、i番目の第2変数y含み、i番目の第2変数yは、第2変数群{y}の1つである。i番目の第1関数は、第1関数群の1つである。
第2変数更新は、第2変数更新前のi番目の第2変数yに、i番目の第2関数、i番目の第3関数及びi番目の第1要素関数の演算結果を加えてi番目の第2変数yを更新することを含む。i番目の第2関数の変数は、i番目の第1変数xを含む。i番目の第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び第1変数群{x}の少なくとも一部を含む。i番目の第1要素関数の変数は、i番目の第2変数yと第3変数zとの積を含む。i番目の第2関数は、第2関数群の1つである。i番目の第3関数は、第3関数群の1つである。i番目の第1要素関数は、第1要素関数群の1つである。
第3変数更新は、第3変数更新前の第3変数zにi番目の第2要素関数を加えて第3変数zを更新することを含む。第3変数zは、第3変数群{z}の1つである。第2要素関数の変数は、第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含む。
処理部は、少なくとも、処理手順を繰り返した後に得られるi番目の第1変数x、及び、処理手順を繰り返した後に得られるi番目の第1変数xの関数の少なくともいずれかを出力する。
本実施形態に係る記録媒体には、第2実施形態及び第3実施形態に関して説明した処理が適用できる。
(第7実施形態)
本実施形態は、計算方法に係る。計算方法は、第1〜第3実施形態に関して説明した処理手順を行う。以下、第1実施形態に関して説明した処理手順を実施する場合について説明する。
この処理手順は、第1変数更新、第2変数更新及び第3変数更新を含む。
第1変数更新は、第1変数更新前のi番目(iは1以上N以下の整数であり、Nは2以上の整数)の第1変数xにi番目の第1関数を加えてi番目の第1変数xを更新することを含む。i番目の第1変数xは、第1変数群{x}の1つである。i番目の第1関数の変数は、i番目の第2変数y含み、i番目の第2変数yは、第2変数群{y}の1つである。i番目の第1関数は、第1関数群の1つである。
第2変数更新は、第2変数更新前のi番目の第2変数yに、i番目の第2関数、i番目の第3関数及びi番目の第1要素関数の演算結果を加えてi番目の第2変数yを更新することを含む。i番目の第2関数の変数は、i番目の第1変数xを含む。i番目の第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び第1変数群{x}の少なくとも一部を含む。i番目の第1要素関数の変数は、i番目の第2変数yと第3変数zとの積を含む。i番目の第2関数は、第2関数群の1つである。i番目の第3関数は、第3関数群の1つである。i番目の第1要素関数は、第1要素関数群の1つである。
第3変数更新は、第3変数更新前の第3変数zにi番目の第2要素関数を加えて第3変数zを更新することを含む。第3変数zは、第3変数群{z}の1つである。第2要素関数の変数は、第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含む。
処理部は、少なくとも、処理手順を繰り返した後に得られるi番目の第1変数x、及び、処理手順を繰り返した後に得られるi番目の第1変数xの関数の少なくともいずれかを出力する。
本実施形態に係る記録媒体には、第2実施形態及び第3実施形態に関して説明した処理が適用できる。
上記の種々の情報(データ)の処理(指示)は、例えば、プログラム(ソフトウェア)に基づいて実行される。例えば、コンピュータが、このプログラムを記憶し、このプログラムを読み出すことにより、上記の種々の情報の処理が行われる。
上記の種々の情報の処理は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フレキシブルディスク及びハードディスクなど)、光ディスク(CD−ROM、CD−R、CD−RW、DVD−ROM、DVD±R、DVD±RWなど)、半導体メモリ、または、他の記録媒体に記録されても良い。
例えば、記録媒体に記録された情報は、コンピュータ(または組み込みシステム)により読み出されることが可能である。記録媒体において、記録形式(記憶形式)は任意である。例えば、コンピュータは、記録媒体からプログラムを読み出し、このプログラムに基づいてプログラムに記述されている指示をCPUで実行させる。コンピュータにおいて、プログラムの取得(または読み出し)は、ネットワークを通じて行われても良い。
記録媒体からコンピュータ(または組み込みシステム)にインストールされたプログラムに基づいてコンピュータ上で稼働している種々のソフトウェアにおいて、上記の情報の処理の少なくとも一部が実施されても良い。このソフトウェアは、例えば、OS(オペレーティングシステム)などを含む。このソフトウェアは、例えば、ネットワーク上で動作するミドルウェアなどを含んでも良い。
実施形態における記録媒体は、LANまたはインターネットなどにより得られたプログラムをダウンロードして記憶された記録媒体も含まれる。複数の記録媒体に基づいて、上記の処理が行われても良い。
実施形態に係るコンピュータは、1つまたは複数の装置(例えばパーソナルコンピュータなど)を含む。実施形態に係るコンピュータは、ネットワークにより接続された複数の装置を含んでも良い。
実施形態は、例えば、以下の構成(例えば技術案)を含んでも良い。
(構成1)
処理手順を繰り返す処理部を備え、
前記処理手順は、第1変数更新、第2変数更新及び第3変数更新を含み、
前記第1変数更新は、前記第1変数更新前の前記i番目(iは1以上N以下の整数であり、前記Nは2以上の整数)の第1変数xにi番目の第1関数を加えて前記i番目の前記第1変数xを更新することを含み、前記i番目の前記第1変数xは、第1変数群{x}の1つであり、前記i番目の前記第1関数の変数は、前記i番目の第2変数y含み、前記i番目の前記第2変数yは、第2変数群{y}の1つであり、前記i番目の前記第1関数は、第1関数群の1つであり、
前記第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yに、前記i番目の第2関数、前記i番目の第3関数及び前記i番目の第1要素関数の演算結果を加えて前記i番目の前記第2変数yを更新することを含み、前記i番目の前記第2関数の変数は、前記i番目の前記第1変数xを含み、前記i番目の前記第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び前記第1変数群{x}の少なくとも一部を含み、前記i番目の前記第1要素関数の変数は、前記i番目の前記第2変数yと第3変数zとの積を含み、前記i番目の前記第2関数は、第2関数群の1つであり、前記i番目の前記第3関数は、第3関数群の1つであり、前記i番目の前記第1要素関数は、第1要素関数群の1つであり、
前記第3変数更新は、前記第3変数更新前の第3変数zに前記i番目の第2要素関数を加えて前記第3変数zを更新することを含み、前記第3変数zは、第3変数群{z}の1つであり、前記第2要素関数の変数は、前記第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含み、
前記処理部は、少なくとも、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数x、及び、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数xの関数の少なくともいずれかを出力する、計算装置。
(構成2)
前記処理手順の後の前記第1計算パラメータは、前記処理手順の前の前記第1計算パラメータとは異なる、構成1記載の計算装置。
(構成3)
前記処理手順の後の前記第1計算パラメータは、前記処理手順の前の前記第1計算パラメータよりも小さい、構成1記載の計算装置。
(構成4)
前記第2変数更新は、第1サブ更新及び第2サブ更新を含み、
前記第1サブ更新は、前記第1サブ更新前の前記i番目の前記第2変数yに前記第2関数を加えて前記i番目の前記第2変数yを更新することを含み、
前記第2サブ更新は、前記第2サブ更新前の前記i番目の前記第2変数yに前記第3関数を加えて前記i番目の前記第2変数yを更新することを含み、
前記第1変数更新、前記第1サブ更新及び前記第3変数更新をM回(Mは2以上の整数)行った後、前記第2サブ更新を行う、または、前記第2サブ更新後、前記第1変数更新、前記第1サブ更新及び前記第3変数更新をM回行う、構成1〜3のいずれか1つに記載の計算装置。
(構成5)
前記第3変数更新の少なくとも一部は、前記第2サブ更新の少なくとも一部と同時に実施される、構成4記載の計算装置。
(構成6)
前記処理部の1つの部分は、前記第2変数群{y}の前記一部の更新と、前記第2変数群{y}の前記一部に関する前記2乗平均の算出と、を実施し、
前記処理部の別の1つの部分は、前記第2変数群{y}の別の一部の更新と、第2変数群{y}の別の一部に関する2乗平均の算出と、を実施し、
前記第2変数群{y}の前記一部の前記更新と、前記第2変数群{y}の前記一部に関する前記2乗平均の前記算出と、の少なくとも一部の実施は、前記第2変数群{y}の前記別の一部の前記更新と、前記第2変数群{y}の前記別の一部に関する前記2乗平均の前記算出と、の少なくとも一部の実施と同時に行われる、構成1〜5のいずれか1つに記載の計算装置。
(構成7)
前記処理部の1つの部分は、第1の更新、第1の算出、及び、第2の更新を実施し、前記第1の更新は、前記第2変数群{y}の前記一部の更新を含み、前記第1の算出は、前記第2変数群{y}の一部に関する2乗平均の算出を含み、前記第2の更新は、前記第3変数群{z}に含まれる1つの前記第3変数zの前記2乗平均を用いた更新を含み、
前記処理部の別の1つの部分は、第3の更新、第2の算出、及び、第4の更新を実施し、前記第3の更新は、前記第2変数群{y}の別の一部の更新を含み、前記第2の算出は、第2変数群{y}の前記別の一部に関する前記2乗平均の算出を含み、前記第4の更新は、前記第3変数群{z}に含まれる別の1つの前記第3変数zの前記2乗平均を用いた更新を含み、
前記第1の更新、前記第1の算出、及び、前記第2の更新の少なくとも一部の実施は、前記第3の更新、前記第2の算出、及び、前記第4の更新の少なくとも一部の実施と同時に行われる、構成1〜5のいずれか1つに記載の計算装置。
(構成8)
前記i番目の前記第2関数は、前記i番目の前記第1変数xを変数とする前記i番目の第4関数を含み、
前記i番目の第4関数は、前記第1変数xの非線形関数を含み、
前記i番目の第4関数は、演算パラメータpを含み、
前記演算パラメータpは、前記処理手順を繰り返すと変化し、
前記処理手順を繰り返した後の前記i番目の前記第4関数の実数根の数は、前記処理手順を繰り返す前の前記i番目の前記第4関数の実数根の数とは異なる、構成1〜7のいずれか1つに記載の計算装置。
(構成9)
前記第1変数更新は、前記第1変数更新前の前記i番目の前記第1変数xを保持部から取得し、前記第1変数更新後の前記i番目の前記第1変数xを前記保持部に保持させることを含み、
前記第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yを前記保持部から取得し、前記第2変数更新後の前記i番目の前記第2変数yを前記保持部に保持させることを含む、構成1〜7のいずれか1つに記載の計算装置。
(構成10)
前記第3変数更新は、前記第3変数更新前の前記第3変数zを前記保持部から取得し、前記第3変数更新後の前記第3変数zを前記保持部に保持させることを含む、構成9に記載の計算装置。
(構成11)
前記第1変数更新は、前記第2変数群{y}の少なくとも一部を前記保持部から取得して前記i番目の前記第1関数を計算し、前記i番目の前記第1変数xに前記i番目の前記第1関数を加えて前記i番目の前記第1変数xを更新することをさらに含み、
前記第2変数更新は、前記i番目の前記第1変数xを前記保持部から取得して前記i番目の前記第2関数を計算し、前記第1パラメータ群{J}の前記少なくとも一部及び前記第1変数群{x}の前記少なくとも一部を前記保持部から取得して前記i番目の前記第3関数を計算し、前記i番目の前記第2変数yに前記i番目の前記第2関数及び前記i番目の前記第3関数を加えて前記i番目の前記第2変数yを更新することをさらに含む、を含む、構成9または10記載の計算装置。
(構成12)
前記処理部は、第1計算部と、第2計算部と、を含み、
前記第1計算部は、前記第3関数の計算の一部を実施し、
前記第2計算部は、前記第3関数の前記計算の別の一部を実施し、
前記第1計算部における前記第3関数の前記計算の前記一部の前記実施の少なくとも一部と、前記第2計算部における前記第3関数の前記計算の前記別の一部の前記実施の少なくとも一部は、同時に行われる、構成9〜11のいずれか1つに記載の計算装置。
(構成13)
前記保持部は、第1保持領域及び第2保持領域を含み、
前記第1パラメータ群{J}は、第1計算使用部分と、第2計算使用部分と、を含み、前記第1計算使用部分は、前記第3関数の前記計算の前記一部で用いられ、前記第2計算使用部分は、前記第3関数の前記計算の前記別の一部で用いられ、
前記第1計算部は、前記第1計算使用部分を前記第1保持領域に保持させ、
前記第2計算部は、前記第2計算使用部分を前記第2保持領域に保持させる、構成9〜12のいずれか1つに記載の計算装置。
(構成14)
処理手順を繰り返す処理部を備え、
前記処理手順は、第1変数更新、第2変数更新、第3変数更新及び第4変数更新を含み、
前記第1変数更新は、前記第1変数更新前のi番目(iは1以上N以下の整数であり、前記Nは2以上の整数)の第1変数xに前記i番目の第1関数を加えて前記i番目の前記第1変数xを更新することを含み、前記i番目の前記第1変数xは、第1変数群{x}の1つであり、前記i番目の前記第1関数の変数は、前記i番目の第2変数y及び第3変数bを含み、前記i番目の前記第2変数yは、第2変数群{y}の1つであり、前記i番目の前記第1関数は、第1関数群の1つであり、
前記第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yに前記i番目の第2関数及び前記i番目の第3関数を加えて前記i番目の前記第2変数yを更新することを含み、前記i番目の前記第2関数の変数は、前記i番目の前記第1変数xを含み、前記i番目の前記第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び前記第1変数群{x}の少なくとも一部を含み、
前記第3変数更新は、前記第3変数更新前の第3変数bに第1要素関数を加えて前記第3変数bを更新することを含み、前記第1要素関数の変数は、第4変数Pを含み、
前記第4変数更新(Pの更新)は、前記第4変数更新前の第4変数Pに第2要素関数を加えて前記第4変数Pを更新することを含み、前記第2要素関数の変数は、前記第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含み、
前記処理部は、少なくとも、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数x、及び、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数xの関数の少なくともいずれかを出力する、計算装置。
(構成15)
前記i番目の前記第1関数は、y/bである、構成14記載の計算装置。
(構成16)
処理手順を繰り返す処理部を備え、
前記処理手順は、第1変数更新、第2変数更新、第3変数更新及び第4変数更新を含み、
前記第1変数更新は、前記第1変数更新前のi番目(iは1以上N以下の整数であり、前記Nは2以上の整数)の第1変数xに前記i番目の第1関数を加えて前記i番目の前記第1変数xを更新することを含み、前記i番目の前記第1変数xは、第1変数群{x}の1つであり、前記i番目の前記第1関数の変数は、前記i番目の第2変数y及び第3変数bを含み、前記i番目の前記第2変数yは、第2変数群{y}の1つであり、前記i番目の前記第1関数は、第1関数群の1つであり、
前記第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yに、前記i番目の第2関数及び前記i番目の第3関数の和と、前記第3変数bと、の積を加えて前記i番目の前記第2変数yを更新することを含み、前記i番目の前記第2関数の変数は、前記i番目の前記第1変数xを含み、前記i番目の前記第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び前記第1変数群{x}の少なくとも一部を含み、
前記第3変数更新は、前記第3変数更新前の第3変数bに第1要素関数を加えて前記第3変数bを更新することを含み、前記第1要素関数の変数は、第4変数Pを含み、
前記第4変数更新は、前記第4変数更新前の第4変数Pに第2要素関数を加えて前記第4変数Pを更新することを含み、前記第2要素関数の変数は、前記第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含み、
前記処理部は、少なくとも、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数x、及び、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数xの関数の少なくともいずれかを出力する、計算装置。
(構成17)
前記第1要素関数の前記要素は、前記第3変数bと、前記第4変数Pと、の積を含む構成16記載の計算装置。
(構成18)
コンピュータに、処理手順を繰り返させる計算プログラムであって、
前記処理手順は、第1変数更新、第2変数更新及び第3変数更新を含み、
前記第1変数更新は、前記第1変数更新前の前記i番目(iは1以上N以下の整数であり、前記Nは2以上の整数)の第1変数xに前記i番目の第1関数を加えて前記i番目の前記第1変数xを更新することを含み、前記i番目の前記第1変数xは、第1変数群{x}の1つであり、前記i番目の前記第1関数の変数は、前記i番目の第2変数y含み、前記i番目の前記第2変数yは、第2変数群{y}の1つであり、前記i番目の前記第1関数は、第1関数群の1つであり、
前記第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yに、前記i番目の第2関数、前記i番目の第3関数及び前記i番目の第1要素関数の演算結果を加えて前記i番目の前記第2変数yを更新することを含み、前記i番目の前記第2関数の変数は、前記i番目の前記第1変数xを含み、前記i番目の前記第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び前記第1変数群{x}の少なくとも一部を含み、前記i番目の前記第1要素関数の変数は、前記i番目の前記第2変数yと第3変数zとの積を含み、前記i番目の前記第2関数は、第2関数群の1つであり、前記i番目の前記第3関数は、第3関数群の1つであり、前記i番目の前記第1要素関数は、第1要素関数群の1つであり、
前記第3変数更新は、前記第3変数更新前の第3変数zに前記i番目の第2要素関数を加えて前記i番目の前記第3変数zを更新することを含み、前記i番目の前記第3変数zは、第3変数群{z}の1つであり、前記第2要素関数の変数は、前記第2変数群{y}の少なくとも一部の2乗平均値と、第1計算パラメータと、の差を含み、
前記処理部は、少なくとも、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数x、及び、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数xの関数の少なくともいずれかを出力する、計算プログラム。
(構成19)
コンピュータに、処理手順を繰り返させる計算プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記処理手順は、第1変数更新、第2変数更新及び第3変数更新を含み、
前記第1変数更新は、前記第1変数更新前の前記i番目(iは1以上N以下の整数であり、前記Nは2以上の整数)の第1変数xに前記i番目の第1関数を加えて前記i番目の前記第1変数xを更新することを含み、前記i番目の前記第1変数xは、第1変数群{x}の1つであり、前記i番目の前記第1関数の変数は、前記i番目の第2変数y含み、前記i番目の前記第2変数yは、第2変数群{y}の1つであり、前記i番目の前記第1関数は、第1関数群の1つであり、
前記第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yに、前記i番目の第2関数、前記i番目の第3関数及び前記i番目の第1要素関数の演算結果を加えて前記i番目の前記第2変数yを更新することを含み、前記i番目の前記第2関数の変数は、前記i番目の前記第1変数xを含み、前記i番目の前記第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び前記第1変数群{x}の少なくとも一部を含み、前記i番目の前記第1要素関数の変数は、前記i番目の前記第2変数yと第3変数zとの積を含み、前記i番目の前記第2関数は、第2関数群の1つであり、前記i番目の前記第3関数は、第3関数群の1つであり、前記i番目の前記第1要素関数は、第1要素関数群の1つであり、
前記第3変数更新は、前記第3変数更新前の第3変数zに前記i番目の第2要素関数を加えて前記i番目の前記第3変数zを更新することを含み、前記i番目の前記第3変数zは、第3変数群{z}の1つであり、前記第2要素関数の変数は、前記第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含み、
前記処理部は、少なくとも、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数x、及び、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数xの関数の少なくともいずれかを出力する、記録媒体。
(構成20)
処理手順を繰り返し、
前記処理手順は、第1変数更新、第2変数更新及び第3変数更新を含み、
前記第1変数更新は、前記第1変数更新前の前記i番目(iは1以上N以下の整数であり、前記Nは2以上の整数)の第1変数xに前記i番目の第1関数を加えて前記i番目の前記第1変数xを更新することを含み、前記i番目の前記第1変数xは、第1変数群{x}の1つであり、前記i番目の前記第1関数の変数は、前記i番目の第2変数y含み、前記i番目の前記第2変数yは、第2変数群{y}の1つであり、前記i番目の前記第1関数は、第1関数群の1つであり、
前記第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yに、前記i番目の第2関数、前記i番目の第3関数及び前記i番目の第1要素関数の演算結果を加えて前記i番目の前記第2変数yを更新することを含み、前記i番目の前記第2関数の変数は、前記i番目の前記第1変数xを含み、前記i番目の前記第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び前記第1変数群{x}の少なくとも一部を含み、前記i番目の前記第1要素関数の変数は、前記i番目の前記第2変数yと第3変数zとの積を含み、前記i番目の前記第2関数は、第2関数群の1つであり、前記i番目の前記第3関数は、第3関数群の1つであり、前記i番目の前記第1要素関数は、第1要素関数群の1つであり、
前記第3変数更新は、前記第3変数更新前の第3変数zに前記i番目の第2要素関数を加えて前記i番目の前記第3変数zを更新することを含み、前記i番目の前記第3変数zは、第3変数群{z}の1つであり、前記第2要素関数の変数は、前記第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含み、
前記処理部は、少なくとも、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数x、及び、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数xの関数の少なくともいずれかを出力する、計算方法。
実施形態によれば、最適化問題を高速に計算できる計算装置、計算プログラム、記録媒体及び計算方法が提供できる。
以上、例を参照しつつ、本発明の実施の形態について説明した。しかし、本発明は、これらの例に限定されるものではない。例えば、計算装置に含まれる処理部、取得部及び保持部などの各要素の具体的な構成に関しては、当業者が公知の範囲から適宜選択することにより本発明を同様に実施し、同様の効果を得ることができる限り、本発明の範囲に包含される。
各例のいずれか2つ以上の要素を技術的に可能な範囲で組み合わせたものも、本発明の要旨を包含する限り本発明の範囲に含まれる。
本発明の実施の形態として上述した計算装置、計算プログラム、記録媒体及び計算方法を基にして、当業者が適宜設計変更して実施し得る全ての計算装置、計算プログラム、記録媒体及び計算方法も、本発明の要旨を包含する限り、本発明の範囲に属する。
本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…保持部、 10A、10B…第1、第2保持領域、 15A〜15C…第1〜第3回路、 15X…制御回路部、 16A、16B…第1、第2制御部、 16X…回路、 20…処理部、 20A〜20D…第1〜第4計算部、 31…取得部、 32…操作部、 33…表示部、 110、111…計算装置、 110E、119R…計算結果、M11、M12…計算結果、 NL…処理手順の繰り返し回数、 Nmc…カット数、 T…計算パラメータ、 Tc…計算時間、 Vave…平均値

Claims (11)

  1. 処理手順を繰り返す処理部を備え、
    前記処理手順は、第1変数更新、第2変数更新及び第3変数更新を含み、
    前記第1変数更新は、前記第1変数更新前の前記i番目(iは1以上N以下の整数であり、前記Nは2以上の整数)の第1変数xにi番目の第1関数を加えて前記i番目の前記第1変数xを更新することを含み、前記i番目の前記第1変数xは、第1変数群{x}の1つであり、前記i番目の前記第1関数の変数は、前記i番目の第2変数y含み、前記i番目の前記第2変数yは、第2変数群{y}の1つであり、前記i番目の前記第1関数は、第1関数群の1つであり、
    前記第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yに、前記i番目の第2関数、前記i番目の第3関数及び前記i番目の第1要素関数の演算結果を加えて前記i番目の前記第2変数yを更新することを含み、前記i番目の前記第2関数の変数は、前記i番目の前記第1変数xを含み、前記i番目の前記第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び前記第1変数群{x}の少なくとも一部を含み、前記i番目の前記第1要素関数の変数は、前記i番目の前記第2変数yと第3変数zとの積を含み、前記i番目の前記第2関数は、第2関数群の1つであり、前記i番目の前記第3関数は、第3関数群の1つであり、前記i番目の前記第1要素関数は、第1要素関数群の1つであり、
    前記第3変数更新は、前記第3変数更新前の第3変数zに前記i番目の第2要素関数を加えて前記第3変数zを更新することを含み、前記第3変数zは、第3変数群{z}の1つであり、前記第2要素関数の変数は、前記第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含み、
    前記処理部は、少なくとも、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数x、及び、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数xの関数の少なくともいずれかを出力する、計算装置。
  2. 前記処理手順の後の前記第1計算パラメータは、前記処理手順の前の前記第1計算パラメータとは異なる、請求項1記載の計算装置。
  3. 前記第2変数更新は、第1サブ更新及び第2サブ更新を含み、
    前記第1サブ更新は、前記第1サブ更新前の前記i番目の前記第2変数yに前記第2関数を加えて前記i番目の前記第2変数yを更新することを含み、
    前記第2サブ更新は、前記第2サブ更新前の前記i番目の前記第2変数yに前記第3関数を加えて前記i番目の前記第2変数yを更新することを含み、
    前記第1変数更新、前記第1サブ更新及び前記第3変数更新をM回(Mは2以上の整数)行った後、前記第2サブ更新を行う、または、前記第2サブ更新後、前記第1変数更新、前記第1サブ更新及び前記第3変数更新をM回行う、請求項1または2に記載の計算装置。
  4. 前記処理部の1つの部分は、第1の更新、第1の算出、及び、第2の更新を実施し、前記第1の更新は、前記第2変数群{y}の前記一部の更新を含み、前記第1の算出は、前記第2変数群{y}の一部に関する2乗平均の算出を含み、前記第2の更新は、前記第3変数群{z}に含まれる1つの前記第3変数zの前記2乗平均を用いた更新を含み、
    前記処理部の別の1つの部分は、第3の更新、第2の算出、及び、第4の更新を実施し、前記第3の更新は、前記第2変数群{y}の別の一部の更新を含み、前記第2の算出は、第2変数群{y}の前記別の一部に関する前記2乗平均の算出を含み、前記第4の更新は、前記第3変数群{z}に含まれる別の1つの前記第3変数zの前記2乗平均を用いた更新を含み、
    前記第1の更新、前記第1の算出、及び、前記第2の更新の少なくとも一部の実施は、前記第3の更新、前記第2の算出、及び、前記第4の更新の少なくとも一部の実施と同時に行われる、請求項1〜3のいずれか1つに記載の計算装置。
  5. 前記i番目の前記第2関数は、前記i番目の前記第1変数xを変数とする前記i番目の第4関数を含み、
    前記i番目の第4関数は、前記第1変数xの非線形関数を含み、
    前記i番目の第4関数は、演算パラメータpを含み、
    前記演算パラメータpは、前記処理手順を繰り返すと変化し、
    前記処理手順を繰り返した後の前記i番目の前記第4関数の実数根の数は、前記処理手順を繰り返す前の前記i番目の前記第4関数の実数根の数とは異なる、請求項1〜4のいずれか1つに記載の計算装置。
  6. 前記第1変数更新は、前記第1変数更新前の前記i番目の前記第1変数xを保持部から取得し、前記第1変数更新後の前記i番目の前記第1変数xを前記保持部に保持させることを含み、
    前記第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yを前記保持部から取得し、前記第2変数更新後の前記i番目の前記第2変数yを前記保持部に保持させることを含み、
    前記第3変数更新は、前記第3変数更新前の前記第3変数zを前記保持部から取得し、前記第3変数更新後の前記第3変数zを前記保持部に保持させることを含む、請求項1〜5のいずれか1つに記載の計算装置。
  7. 前記処理部は、第1計算部と、第2計算部と、を含み、
    前記第1計算部は、前記第3関数の計算の一部を実施し、
    前記第2計算部は、前記第3関数の前記計算の別の一部を実施し、
    前記第1計算部における前記第3関数の前記計算の前記一部の前記実施の少なくとも一部と、前記第2計算部における前記第3関数の前記計算の前記別の一部の前記実施の少なくとも一部は、同時に行われる、請求項1〜6のいずれか1つに記載の計算装置。
  8. 前記保持部は、第1保持領域及び第2保持領域を含み、
    前記第1パラメータ群{J}は、第1計算使用部分と、第2計算使用部分と、を含み、前記第1計算使用部分は、前記第3関数の前記計算の前記一部で用いられ、前記第2計算使用部分は、前記第3関数の前記計算の前記別の一部で用いられ、
    前記第1計算部は、前記第1計算使用部分を前記第1保持領域に保持させ、
    前記第2計算部は、前記第2計算使用部分を前記第2保持領域に保持させる、請求項6記載の計算装置。
  9. コンピュータに、処理手順を繰り返させる計算プログラムであって、
    前記処理手順は、第1変数更新、第2変数更新及び第3変数更新を含み、
    前記第1変数更新は、前記第1変数更新前の前記i番目(iは1以上N以下の整数であり、前記Nは2以上の整数)の第1変数xに前記i番目の第1関数を加えて前記i番目の前記第1変数xを更新することを含み、前記i番目の前記第1変数xは、第1変数群{x}の1つであり、前記i番目の前記第1関数の変数は、前記i番目の第2変数y含み、前記i番目の前記第2変数yは、第2変数群{y}の1つであり、前記i番目の前記第1関数は、第1関数群の1つであり、
    前記第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yに、前記i番目の第2関数、前記i番目の第3関数及び前記i番目の第1要素関数の演算結果を加えて前記i番目の前記第2変数yを更新することを含み、前記i番目の前記第2関数の変数は、前記i番目の前記第1変数xを含み、前記i番目の前記第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び前記第1変数群{x}の少なくとも一部を含み、前記i番目の前記第1要素関数の変数は、前記i番目の前記第2変数yと第3変数zとの積を含み、前記i番目の前記第2関数は、第2関数群の1つであり、前記i番目の前記第3関数は、第3関数群の1つであり、前記i番目の前記第1要素関数は、第1要素関数群の1つであり、
    前記第3変数更新は、前記第3変数更新前の第3変数zに前記i番目の第2要素関数を加えて前記i番目の前記第3変数zを更新することを含み、前記i番目の前記第3変数zは、第3変数群{z}の1つであり、前記第2要素関数の変数は、前記第2変数群{y}の少なくとも一部の2乗平均値と、第1計算パラメータと、の差を含み、
    前記処理部は、少なくとも、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数x、及び、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数xの関数の少なくともいずれかを出力する、計算プログラム。
  10. コンピュータに、処理手順を繰り返させる計算プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
    前記処理手順は、第1変数更新、第2変数更新及び第3変数更新を含み、
    前記第1変数更新は、前記第1変数更新前の前記i番目(iは1以上N以下の整数であり、前記Nは2以上の整数)の第1変数xに前記i番目の第1関数を加えて前記i番目の前記第1変数xを更新することを含み、前記i番目の前記第1変数xは、第1変数群{x}の1つであり、前記i番目の前記第1関数の変数は、前記i番目の第2変数y含み、前記i番目の前記第2変数yは、第2変数群{y}の1つであり、前記i番目の前記第1関数は、第1関数群の1つであり、
    前記第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yに、前記i番目の第2関数、前記i番目の第3関数及び前記i番目の第1要素関数の演算結果を加えて前記i番目の前記第2変数yを更新することを含み、前記i番目の前記第2関数の変数は、前記i番目の前記第1変数xを含み、前記i番目の前記第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び前記第1変数群{x}の少なくとも一部を含み、前記i番目の前記第1要素関数の変数は、前記i番目の前記第2変数yと第3変数zとの積を含み、前記i番目の前記第2関数は、第2関数群の1つであり、前記i番目の前記第3関数は、第3関数群の1つであり、前記i番目の前記第1要素関数は、第1要素関数群の1つであり、
    前記第3変数更新は、前記第3変数更新前の第3変数zに前記i番目の第2要素関数を加えて前記i番目の前記第3変数zを更新することを含み、前記i番目の前記第3変数zは、第3変数群{z}の1つであり、前記第2要素関数の変数は、前記第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含み、
    前記処理部は、少なくとも、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数x、及び、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数xの関数の少なくともいずれかを出力する、記録媒体。
  11. 処理手順を繰り返し、
    前記処理手順は、第1変数更新、第2変数更新及び第3変数更新を含み、
    前記第1変数更新は、前記第1変数更新前の前記i番目(iは1以上N以下の整数であり、前記Nは2以上の整数)の第1変数xに前記i番目の第1関数を加えて前記i番目の前記第1変数xを更新することを含み、前記i番目の前記第1変数xは、第1変数群{x}の1つであり、前記i番目の前記第1関数の変数は、前記i番目の第2変数y含み、前記i番目の前記第2変数yは、第2変数群{y}の1つであり、前記i番目の前記第1関数は、第1関数群の1つであり、
    前記第2変数更新は、前記第2変数更新前の前記i番目の前記第2変数yに、前記i番目の第2関数、前記i番目の第3関数及び前記i番目の第1要素関数の演算結果を加えて前記i番目の前記第2変数yを更新することを含み、前記i番目の前記第2関数の変数は、前記i番目の前記第1変数xを含み、前記i番目の前記第3関数の変数は、第1パラメータ群{J}の少なくとも一部及び前記第1変数群{x}の少なくとも一部を含み、前記i番目の前記第1要素関数の変数は、前記i番目の前記第2変数yと第3変数zとの積を含み、前記i番目の前記第2関数は、第2関数群の1つであり、前記i番目の前記第3関数は、第3関数群の1つであり、前記i番目の前記第1要素関数は、第1要素関数群の1つであり、
    前記第3変数更新は、前記第3変数更新前の第3変数zに前記i番目の第2要素関数を加えて前記i番目の前記第3変数zを更新することを含み、前記i番目の前記第3変数zは、第3変数群{z}の1つであり、前記第2要素関数の変数は、前記第2変数群{y}の少なくとも一部の2乗平均と、第1計算パラメータと、の差を含み、
    前記処理部は、少なくとも、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数x、及び、前記処理手順を前記繰り返した後に得られる前記i番目の前記第1変数xの関数の少なくともいずれかを出力する、計算方法。
JP2018173075A 2018-09-14 2018-09-14 計算装置、計算プログラム、記録媒体及び計算方法 Active JP6901448B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018173075A JP6901448B2 (ja) 2018-09-14 2018-09-14 計算装置、計算プログラム、記録媒体及び計算方法
US16/289,820 US11593689B2 (en) 2018-09-14 2019-03-01 Calculating device, calculation program, recording medium, and calculation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018173075A JP6901448B2 (ja) 2018-09-14 2018-09-14 計算装置、計算プログラム、記録媒体及び計算方法

Publications (2)

Publication Number Publication Date
JP2020046784A true JP2020046784A (ja) 2020-03-26
JP6901448B2 JP6901448B2 (ja) 2021-07-14

Family

ID=69774137

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018173075A Active JP6901448B2 (ja) 2018-09-14 2018-09-14 計算装置、計算プログラム、記録媒体及び計算方法

Country Status (2)

Country Link
US (1) US11593689B2 (ja)
JP (1) JP6901448B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3955175A1 (en) 2020-08-13 2022-02-16 Kabushiki Kaisha Toshiba Information processing system using an ising model
US11741187B2 (en) 2021-03-08 2023-08-29 Kabushiki Kaisha Toshiba Calculation device, calculation method, and computer program product

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6895415B2 (ja) * 2018-09-14 2021-06-30 株式会社東芝 計算装置、計算プログラム、記録媒体及び計算方法
JP6902006B2 (ja) * 2018-09-14 2021-07-14 株式会社東芝 計算装置、計算プログラム、記録媒体及び計算方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02162819A (ja) * 1988-12-15 1990-06-22 Fujitsu Ltd 時間フィルタ装置
JP2003204624A (ja) * 2002-01-08 2003-07-18 Mitsubishi Electric Corp 離散値を含む最適化問題の解法
JP2007290452A (ja) * 2006-04-21 2007-11-08 Toyo Tire & Rubber Co Ltd タイヤの設計方法
JP2017073106A (ja) * 2015-10-07 2017-04-13 株式会社東芝 量子計算装置、及び、方法
JP2019145010A (ja) * 2018-02-23 2019-08-29 株式会社東芝 計算装置、計算プログラム、記録媒体及び計算方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10341762B4 (de) * 2002-09-11 2014-05-15 Fisher-Rosemount Systems, Inc. Handhabung der Realisierbarkeit von Beschränkungen und Grenzen in einem Optimierer für Prozesssteuerungssysteme
JP5282219B2 (ja) * 2003-02-17 2013-09-04 檜田 純子 仕訳データ作成装置
US8389929B2 (en) * 2010-03-02 2013-03-05 Thermo Finnigan Llc Quadrupole mass spectrometer with enhanced sensitivity and mass resolving power
US9026574B2 (en) * 2011-11-15 2015-05-05 D-Wave Systems Inc. Systems and methods for solving computational problems
WO2015035556A1 (zh) * 2013-09-10 2015-03-19 华为技术有限公司 一种推荐方法和设备
US10275422B2 (en) * 2013-11-19 2019-04-30 D-Wave Systems, Inc. Systems and methods for finding quantum binary optimization problems
US9646392B2 (en) * 2014-12-23 2017-05-09 Mediatek Singapore Pte. Ltd. Method and device of constructing uniform color space directly from raw camera RGB
ES2850151T3 (es) * 2015-06-29 2021-08-25 Parity Quantum Computing GmbH Dispositivo y procedimiento de procesamiento cuántico
DE102015008964A1 (de) * 2015-07-10 2017-01-12 Liebherr-Verzahntechnik Gmbh Verfahren zum Abrichten eines Werkzeuges
CN105049353B (zh) * 2015-07-28 2018-11-16 华为技术有限公司 一种为业务配置路由路径的方法及控制器
WO2017017284A1 (de) * 2015-07-30 2017-02-02 Denis Pöhler Breitbandige resonator-verstärkte optische absorptionsspektroskopie
US10742986B2 (en) * 2015-11-09 2020-08-11 Netflix, Inc. High dynamic range color conversion correction
CN107305543B (zh) * 2016-04-22 2021-05-11 富士通株式会社 对实体词的语义关系进行分类的方法和装置
US10929576B2 (en) * 2016-12-05 2021-02-23 1Qb Information Technologies Inc. Method for estimating the thermodynamic properties of a quantum Ising model with transverse field
JP6895415B2 (ja) * 2018-09-14 2021-06-30 株式会社東芝 計算装置、計算プログラム、記録媒体及び計算方法
JP7326235B2 (ja) * 2020-08-13 2023-08-15 株式会社東芝 情報処理システム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02162819A (ja) * 1988-12-15 1990-06-22 Fujitsu Ltd 時間フィルタ装置
JP2003204624A (ja) * 2002-01-08 2003-07-18 Mitsubishi Electric Corp 離散値を含む最適化問題の解法
JP2007290452A (ja) * 2006-04-21 2007-11-08 Toyo Tire & Rubber Co Ltd タイヤの設計方法
JP2017073106A (ja) * 2015-10-07 2017-04-13 株式会社東芝 量子計算装置、及び、方法
JP2019145010A (ja) * 2018-02-23 2019-08-29 株式会社東芝 計算装置、計算プログラム、記録媒体及び計算方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3955175A1 (en) 2020-08-13 2022-02-16 Kabushiki Kaisha Toshiba Information processing system using an ising model
US11816595B2 (en) 2020-08-13 2023-11-14 Kabushiki Kaisha Toshiba Information processing system
US11741187B2 (en) 2021-03-08 2023-08-29 Kabushiki Kaisha Toshiba Calculation device, calculation method, and computer program product

Also Published As

Publication number Publication date
US20200090066A1 (en) 2020-03-19
US11593689B2 (en) 2023-02-28
JP6901448B2 (ja) 2021-07-14

Similar Documents

Publication Publication Date Title
JP6836529B2 (ja) 計算装置、計算プログラム、記録媒体及び計算方法
JP6901448B2 (ja) 計算装置、計算プログラム、記録媒体及び計算方法
CN114219076B (zh) 量子神经网络训练方法及装置、电子设备和介质
CN113792880B (zh) 基于脉冲的量子门实现方法及装置、电子设备和介质
JP6895415B2 (ja) 計算装置、計算プログラム、記録媒体及び計算方法
CN111914378B (zh) 一种单振幅量子计算模拟方法及装置
CN105825269B (zh) 一种基于并行自动编码机的特征学习方法及系统
WO2019216277A1 (ja) 情報処理装置、演算装置、及び情報処理方法
Lei et al. Integrated scheduling algorithm based on an operation relationship matrix table for tree-structured products
Wang et al. A new chaotic starling particle swarm optimization algorithm for clustering problems
JPWO2020202312A1 (ja) 情報処理装置、演算装置、及び情報処理方法
JP2020046715A (ja) 計算装置、計算プログラム、記録媒体及び計算方法
JP7228425B2 (ja) 計算装置、表示装置およびプログラム
CN116484959B (zh) 量子电路处理方法、装置、设备以及存储介质
JP7137648B2 (ja) 計算装置、計算プログラム、記録媒体及び計算方法
US11886780B2 (en) Optimization device, optimization device control method, and computer-readable recording medium recording optimization device control program
US20220343202A1 (en) Arithmetic circuit, arithmetic device, information processing apparatus, and method for searching for ground state of ising model
Ramadas et al. Finding multiple roots of systems of nonlinear equations by a hybrid harmony search-based multistart method
JP7444804B2 (ja) 制御方法およびサンプリング装置
Zeng et al. Quantum Reinforcement Learning with Quantum World Model
Li et al. Parallel hybrid genetic algorithm for maximum clique problem on OpenCL
CN116451000A (zh) 计算装置、计算程序以及计算方法
Ha Huy Phuc et al. Improve the Quantum Approximate Optimization Algorithm with Genetic Algorithm
JP2024049148A (ja) 情報処理方法、及び情報処理装置
JP2022180174A (ja) 求解装置、求解方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200313

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210426

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210518

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210617

R151 Written notification of patent or utility model registration

Ref document number: 6901448

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151