JP6445246B2 - 情報処理装置及び情報処理方法 - Google Patents

情報処理装置及び情報処理方法 Download PDF

Info

Publication number
JP6445246B2
JP6445246B2 JP2014066874A JP2014066874A JP6445246B2 JP 6445246 B2 JP6445246 B2 JP 6445246B2 JP 2014066874 A JP2014066874 A JP 2014066874A JP 2014066874 A JP2014066874 A JP 2014066874A JP 6445246 B2 JP6445246 B2 JP 6445246B2
Authority
JP
Japan
Prior art keywords
sub
coefficient
solution
value
ising model
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.)
Active
Application number
JP2014066874A
Other languages
English (en)
Other versions
JP2015191340A (ja
Inventor
地尋 吉村
地尋 吉村
山岡 雅直
雅直 山岡
健一 河原林
健一 河原林
拓郎 福永
拓郎 福永
太朗 高口
太朗 高口
貴憲 前原
貴憲 前原
拓也 大輪
拓也 大輪
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.)
Hitachi Ltd
Inter University Research Institute Corp Research Organization of Information and Systems
Original Assignee
Hitachi Ltd
Inter University Research Institute Corp Research Organization of Information and Systems
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 Hitachi Ltd, Inter University Research Institute Corp Research Organization of Information and Systems filed Critical Hitachi Ltd
Priority to JP2014066874A priority Critical patent/JP6445246B2/ja
Priority to US14/645,815 priority patent/US10089421B2/en
Publication of JP2015191340A publication Critical patent/JP2015191340A/ja
Application granted granted Critical
Publication of JP6445246B2 publication Critical patent/JP6445246B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/08Probabilistic or stochastic CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Databases & Information Systems (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Complex Calculations (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)

Description

本発明は、情報処理装置及び情報処理方法に関し、特に、イジングモデルの基底状態探索を行う情報処理装置に適用して好適なものである。
イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは+1/−1(ないしは、0/1、上/下)の2値をとるスピンと、スピン間の相互作用を示す相互作用係数、及び、スピン毎にある外部磁場係数で定義される。
イジングモデルは与えられたスピン配列、相互作用係数、及び、外部磁場係数から、その時のエネルギーを計算することが出来る。イジングモデルのエネルギー関数は一般的に次式で表わされる。
なお、σ,σはそれぞれi番目とj番目のスピンの値、Ji,jはi番目とj番目のスピンの間の相互作用係数、hはi番目のスピンに対する外部磁場係数、σはスピンの配列を表わすものとする。
(1)式において、第一項は、スピン間の相互作用に起因するエネルギーを計算するものである。一般的にイジングモデルは無向グラフとして表現され、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。そのため、第一項ではi<jを満たすσ,σの組み合わせについて、相互作用係数の影響を計算している。また第二項は、各スピンに対する外部磁場に起因するエネルギーを計算するものである。
イジングモデルの基底状態探索とは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。相互作用係数及び外部磁場係数の値域に制限を付けない時には、トポロジが非平面グラフになるイジングモデルの基底状態を求めることはNP困難問題であることが知られている。
イジングモデルの基底状態探索は、元々イジングモデルが対象としていた磁性体の振る舞いを説明することのみならず、様々な用途に用いられている。これは、イジングモデルが相互作用に基づく最も単純なモデルであり、同様に相互作用に起因する様々な事象を表現する能力を持っているためであると言える。例えば、特許文献1には、イジングモデルの基底状態探索を用いて、職場組織などの集団におけるストレス度を推定する方法が開示されている。
また、イジングモデルの基底状態探索は、NP困難なグラフ問題として知られている最大カット問題とも対応している。このようなグラフ問題は、ソーシャルネットワークにおけるコミュニティの検出や、画像処理におけるセグメンテーションなど、幅広い応用を持っている。そのため、イジングモデルの基底状態探索を行うソルバがあれば、このような様々な問題に適用することが出来る。
特開2012−217518号公報 国際公開第2012/118064号パンフレット 特開2004−133802号公報 特開平9−300180号公報
ところで、イジングモデルの基底状態を求めることは、前述した通りNP困難問題であるから、ノイマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリスティックを導入して高速化を図るアルゴリズムも提案されているが、ノイマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている。例えば、このような装置として、例えば特許文献2に記載の装置がある。
このようにイジングモデルと一対一に対応した構造を持つハードウェアを想定すると、ハードウェアが保持可能な係数の値の種類は限られる。
係数の値の種類とは,具体的に利用可能な個別の係数を示す。ハードウェアでは任意の実数を無限に高い精度で取り扱うことは出来ない。多くの場合、ハードウェアが直接サポートできる値は離散値である整数である。また、ハードウェアが固定小数点数や浮動小数点数として実数をサポートする場合にも,実際には精度に限界があり、離散値と見なすことができる。また、いずれの場合でも値域の中を万遍無く網羅するように値を用意することはハードウェアの物量上難しいことから、利用可能な係数の値が疎らになることが想定される。
係数がアナログ的に実装されるハードウェアであっても、実際に利用可能な係数は、ハードウェアのダイナミックレンジやノイズレベルの影響で、離散的な有限個の値に制限される。さらに、ハードウェアの構成によっては,利用可能な係数の大きさを均等に保つことができず、不均一な係数が提供される可能性がある。そこで、具体的にどのような値が利用可能なのかが問題となり、このことを係数の種類と呼ぶ。具体的には、+2,+1,0,−1,−2という5種類の係数をサポートするようなハードウェアもあれば、+2,+0.5,0,−2という4種類の係数をサポートするようなハードウェアもありうる。さらには、+100,+10,+1,0,−1,−10,−100というように10倍刻みの係数が提供されることもありうる。つまり、係数は、単に均等な幅で離散値があるのではなく、値間の差がまばらなこともある。
このようなハードウェアでは、係数を保持するためにメモリセル等の記憶装置を用い、係数の大きさの影響を及ぼすための演算器や増幅器を用いることが考えられる。そのため、係数の値の種類は、メモリセルや演算器のビット幅や、増幅器のダイナミックレンジなどによって制約を受ける。
また、一般にビット幅やダイナミックレンジを広げるためには多くのハードウェア資源や製造時のばらつきに対するより緻密な制御が必要となるため、物量やコストの増大を招く。この観点からも、理論的には任意の係数を実現するハードウェアの構成を考えることができても、現実的にはある制限された種類の係数の値しか提供できない。一例としては、かかる係数が、+1,−1の2値のみであったり、+1,0,−1の3値のみであったりすることが想定される。
また、イジングモデルの基底状態探索を行うソルバをソフトウェアで実現した場合でも、ソルバを実行するコンピュータのメモリ上で係数を保持するデータ構造等に起因する制約から、ソルバが対応できる係数の値の種類は、ハードウェアによるイジングモデルの基底状態探索と同様に、制限がある。
例えば、イジングモデルが有するスピン数(グラフでは頂点数に対応する)を|V|、各スピンが有する平均の相互作用係数の数(グラフでは平均次数に対応する)を|E|とする。ソルバに割当て可能なメモリをNビットとし、相互作用係数のビット幅をkビットとすると、次式
を満たすようなモデルしか扱うことが出来ない。
特に、相互作用係数のビット幅kを広げる、すなわち、係数の値の種類を広げようとすると、扱えるスピン数|V|やイジングモデルのトポロジ(スピン毎の相互作用係数の数の平均|E|)を削減しなければならない。
ソルバを動作させるコンピュータのプラットフォームで仮想記憶を用意するなどして、ソルバに割当て可能なメモリ量Nを大きくする努力は可能であるが、ソフトウェアで実現されるソルバであっても、扱えるイジングモデルの係数の値の種類がハードウェアの制約を受けるという図式に変わりは無い。
以上の点から、イジングモデルの基底状態探索を行うことには産業上有用な応用があるものの、基底状態探索を行うソルバを実現する上では、ハードウェアの制約によって係数の値の種類が制限されてしまい、ソルバに入力することのできるイジングモデルの種類が限られてしまうという問題があることが分かる。
なお、従来、ノイマン型コンピュータ上でこのような探索を行う組合せ最適化問題の分野では、問題の入力サイズに対して計算量が指数関数的に爆発することから、問題を構成する値の種類が問題になることは少なかった。それよりは、問題を入力した後の探索処理における計算量の爆発が支配的な問題であった。そのため、例えば特許文献3及び4に示すように、問題の特徴を利用して計算量を削減する分枝限定法やヒューリッティック手法が用いられてきた。
そのため、上述のように計算量の問題以前に、そもそもソルバに入力可能な係数の値の種類が問題になることは過去には無かった。しかし、上記特許文献2に記載の装置のように、NP困難なイジングモデルの基底状態探索を高速に行うことが可能となって計算量の問題が解決されてくると、新たな問題として上記で示したような問題が生じてくる。
本発明は以上の点を考慮してなされたもので、ハードウェアやソフトウェア上の制約に係わりなく、任意の値の係数を持つイジングモデルの基底状態探索を行い得る情報処理装置及び情報処理方法を提案しようとするものである。
かかる課題を解決するため本発明においては、所定の複数の種類の係数の値を持つイジングモデルである原問題のエネルギーを最少とするスピン配列である基底状態又は当該基底状態の近似解を前記原問題の解として算出する情報処理装置において、前記原問題から1個以上の前記イジングモデルである副問題を生成する副問題生成部と、記副問題生成部により生成された各前記副問題の前記基底状態をそれぞれ探索する基底状態探索部と、前記基底状態探索部の探索により得られた各前記副問題の解に基づいて前記原問題の解を生成する解生成部とを設け、前記副問題生成部が、前記原問題の前記イジングモデルの1個以上の係数の値に基づいて、前記複数の種類から選択された1個以上の係数の値を持つ前記イジングモデルの前記副問題を生成するようにした。
また本発明においては、所定の複数の種類の係数の値を持つイジングモデルである原問題のエネルギーを最少とするスピン配列である基底状態又は当該基底状態の近似解を前記原問題の解として算出する情報処理装置において実行される情報処理方法であって、前記情報処理装置が、前記原問題から1個以上の前記イジングモデルである副問題を生成する第1のステップと、前記情報処理装置が、生成した各前記副問題の前記基底状態をそれぞれ探索する第2のステップと、前記情報処理装置が、探索により得られた各前記副問題の解に基づいて前記原問題の解を生成する第3のステップとを設け、前記第1のステップでは、前記原問題の前記イジングモデルの1個以上の係数の値に基づいて、前記複数の種類から選択された1個以上の係数の値からなる前記イジングモデルの前記副問題を生成するようにした。
本情報処理装置及び情報処理方法によれば、ハードウェアやソフトウェア上の制約により、基底状態を探索可能なイジングモデルの係数の値の種類が制限されている場合においても、その種類以外の係数からなるイジングモデルの原問題の解を求めることができる。
本発明によれば、ハードウェアやソフトウェア上の制約に係わりなく、任意の値の係数を持つイジングモデルの基底状態探索を行い得る情報処理装置及び情報処理方法を実現できる。
本発明によるイジングモデルの基底状態探索における処理の流れを示した図である。 本発明によるイジングモデルの基底状態探索を行う装置の構成の一例を示した図である。 イジングモデルを表現するデータ構造の一例を示した図である。 イジングモデルを表現するデータの書式の一例を示した図である。 スピン配列を表現するデータの書式の一例を示した図である。 本発明によるイジングモデルの基底状態探索において、副問題を生成するアルゴリズムの一例を示したフローチャートである。 本発明によるイジングモデルの基底状態探索において、副問題を生成するアルゴリズムの一例を示したフローチャートである。 本発明によるイジングモデルの基底状態探索において、解候補から原問題の解を生成するアルゴリズムの一例を示したフローチャートである。 グラフの最大カット問題の一例である。 図9のグラフの最大カット問題の解の一例である。 図9のグラフの最大カット問題の解の一例である。 図9のグラフの最大カット問題の解を得るためのイジングモデルの一例である。 図12のイジングモデルを表現するデータの一例である。 図12の原問題から生成される副問題を表現するデータの一例である。 図14の副問題を可視化したグラフである。 図12の副問題の基底状態探索を行うことで得られる解候補データの一例である。 図16の解候補データから得られる原問題の解の一例である。 図16の解候補データから得られる原問題の解の一例である。 本発明によるイジングモデルの基底状態探索において、副問題の相互作用係数を生成するアルゴリズムの一例を示したフローチャートである。 本発明によるイジングモデルの基底状態探索において、副問題の相互作用係数を生成するアルゴリズムの一例を示したフローチャートである。 本発明によるイジングモデルの基底状態探索において、副問題の外部磁場係数を生成するアルゴリズムの一例を示したフローチャートである。 本発明によるイジングモデルの基底状態探索において、副問題の外部磁場係数を生成するアルゴリズムの一例を示したフローチャートである。 本発明によるイジングモデルの基底状態探索において、副問題の相互作用係数を生成するアルゴリズムの一例を示したフローチャートである。 本発明によるイジングモデルの基底状態探索において、副問題の外部磁場係数を生成するアルゴリズムの一例を示したフローチャートである。 本発明によるイジングモデルの基底状態探索を行う装置の構成の一例を示した図である。 本発明によるイジングモデルの基底状態探索において得られる解の品質を示した図である。 本発明によるイジングモデルの基底状態探索において得られる解の品質を示した図である。 本発明によるイジングモデルの期待状態探索において、副問題の生成方法の一例を説明する図である。 本発明によるイジングモデルの基底状態探索において、副問題を生成するアルゴリズムの一例を示したフローチャートである。 図12の原問題から生成される副問題を表現するデータの一例である。 図12の原問題から生成される副問題を表現するデータの一例である。 図30及び図31の副問題の基底状態探索を行うことで得られる解候補と、解候補から得られる解の一例を示す図である。 図12のイジングモデルを正規化したイジングモデルの一例である。 図2の情報処理装置で用いるイジングチップの構成の一例を示す図である。 図34のイジングチップを構成するスピンユニットの構成を、スピンユニット間の相互作用を行う回路構成に注目して示した図である。 図34のイジングチップを構成するスピンユニットの構成を、スピンユニット内のメモリセルの値を外部から読み書きするための回路構成に注目して示した図である。 図34のイジングチップで、スピンユニットを複数個接続してスピンアレイを構成している形態を示す図である。 図34のイジングチップで、スピンユニットとスピンアレイの対応関係を説明するための図である。
以下図面について、本発明の一実施の形態を詳述する。
(1)第1の実施の形態
(1−1)有向グラフに拡張したイジングモデル
本実施の形態ではイジングモデルを拡張した、以下の式で示されるモデルを、これ以降イジングモデルと称する。
(1)式で示したイジングモデルとの違いは、(3)式では有向グラフで示されるような相互作用が許されることにある。一般的にイジングモデルはグラフ理論では無向グラフとして描画することが出来る。それは、イジングモデルの相互作用は、i番目スピンからj番目スピンへの相互作用係数Ji,jとj番目スピンからi番目スピンへの相互作用係数Jj,iを区別していないことによる。
本発明はイジングモデルを拡張し、Ji,jとJj,iを区別しても適用できるため、本実施の形態でも有向グラフ化したイジングモデルを取り扱う。なお、無向グラフのイジングモデルを有向グラフのイジングモデルで取り扱う場合には、単にJi,jとJj,iの双方向に同じ相互作用係数を定義することで可能である。この場合、同じモデルでも(1)式のエネルギー関数に対して(3)式のエネルギー関数ではエネルギーの値が2倍になる。
(1−2)本発明の全体像
図1は、本発明によるイジングモデルの基底状態探索を行う処理の流れを示す。本発明は、任意のイジングモデルである原問題110の基底状態となるスピン配列である解170を得ることを目的としている。その際に、入力可能な係数の値の種類に制限のあるk個(1個以上)の制限付基底状態探索140−1〜140−kを用いて解170を得る。制限付基底状態探索140−1〜140−kは後述する情報処理装置200ないしは情報処理装置2500上で実現されるが、同時にk個の制限付基底状態探索を並行的に実行しても良いし、単一の制限付基底状態探査を繰り返しk回実行しても良い。
本実施の形態では、制限付基底状態探索140−1〜140−kは、+1,0,−1の3値のみを相互作用係数及び外部磁場係数で利用可能なものして説明を行う。
制限付基底状態探索140−1〜140−kを用いて原問題110の基底状態探索を行うために、副問題生成120で原問題110からk個(1個以上)の副問題130−1〜130−kを生成する。この副問題130−1〜130−kは制限付基底状態探索140〜1〜140−kの受け付ける相互作用係数及び外部磁場係数のみで構成される。本実施の形態では、具体的には副問題生成120は+1,0,−1の3値のみを相互作用係数及び外部磁場係数とした副問題130−1〜130−kを生成する。
この副問題130−1〜130−kのそれぞれについて制限付基底状態探索140−1〜140−kで基底状態探索を行い、解候補150−1〜150−kを生成する。解候補150−1〜150−kは、それぞれ副問題130−1〜130−kにとっての解であり、原問題110の解の候補となるものである(そのため解候補という表記をしている)。
なお、制限付基底状態探索140−1〜140−kが出力する解候補150−1〜150−kは、必ずしも副問題130−1〜130−kの大域最適解でなくとも良い。エネルギーを最小化する最良のスピン配列でなくとも、エネルギーが2番目や3番目に低いスピン配列、すなわち近似解であっても良い。本発明は制限付基底状態探索140−1〜140−kが近似解法であったとしても適用できる。
得られた制限付基底状態探索140−1〜140−kにより得られた解候補130−1〜130−kから、原問題110の解170を解生成160で生成する。これにより、制限付基底状態探索140−1〜140−kを用いて原問題110の解170を得るという当初の目的を達成することが出来る。
本発明は、図2に示すような情報処理装置200を用いて実現される。この情報処理装置200は現在幅広く利用されているパーソナルコンピュータ(PC:Personal Computer)やワークステーション、サーバのようなものを考えてよく、CPU(Central Processing Unit)210、RAM(Random Access Memory)220、HDD(Hard Disk Drive)260及びNIC(Network Interface Card)240などの構成要素をシステムバス230で接続した形態を取っている。本実施の形態では、この情報処理装置200は、本発明の背景で述べたようなイジングモデルの基底状態探索を行う専用ハードウェアである基底状態探索アクセラレータ270を有するものとする。
基底状態探索アクセラレータ270は、パーソナルコンピュータを例とすれば、画面描画処理のための専用ハードウェアであるGPU(Graphics Processing Unit)のように、情報処理装置200に装着する拡張カードの形態を取るものと考えてよい。
基底状態探索アクセラレータ270は、例えば1個のイジングモデルの基底状態探索を行う専用のハードウェアであるイジングチップ280−1,280−2を1個ないしは複数個並べ、それらを制御し、ホスト側(CPU210)との仲介を行うイジングチップコントローラ250から構成される。ここで、イジングチップ280−1,280−2で基底状態探索可能なイジングモデルは、相互作用係数及び外部磁場係数が+1,0,−1の3値に限られているものとする。すなわち、図1の制限付基底状態探索140−1〜140−kは基底状態探索アクセラレータ270に対応する。
情報処理装置200は、HDD260上に基底状態探索プログラム264、原問題データ265、副問題データ266−1〜266−k、解候補データ267−1〜267−k及び解データ268を有する。図1の処理の流れで示した通り、原問題データ265を基底状態探索プログラム264に入力すると、解データ268を出力する。
基底状態探索プログラム264は、副問題生成コマンド261、基底状態探索アクセラレータ制御コマンド262及び解生成コマンド263から構成されている。原問題データ265を基底状態探索プログラム264に入力すると、内部的には副問題生成コマンド261が実行され、副問題データ266−1〜266−kが生成される。そして、基底状態探索アクセラレータ制御コマンド262に副問題データ266−1〜266−kを入力すると、基底状態探索アクセラレータ制御コマンド262は基底状態探索アクセラレータ270を制御し、イジングチップ280−1〜280−2に副問題データ266−1〜266−kで定義されるイジングモデルの基底状態探索を行わせ、探索結果を解候補データ267−1〜267−kとしてHDD260上に書き出す。そして、解生成コマンド263は解候補データ267−1〜267−kを読出し、解データ268を生成する。
また、情報処理装置200として、図25に示す情報処理装置2500のように、専用ハードウェアを有しておらず、基底状態探索を行うソフトウェア(制限付基底状態探索コマンド2520)を有するものを適用することも出来る。基底状態探索を行うソフトウェアにおいても、専用ハードウェアと同様に係数の値の種類に制限を受ける可能性があることは、本発明の背景で述べた通りである。
なお、イジングチップ280−1〜280−2のようなハードウェアの詳細な構造と、その構造に起因して本明細書の背景で述べたように、制限された値の種類の係数しか提供できないことについては、後述する。
本発明は、基底状態を探索する手段が図2の情報処理装置200のように専用ハードウェア(基底状態探索アクセラレータ270)で実現されていても、図25の情報処理装置2500のようにソフトウェア(制限付基底状態探索コマンド2520)で実現されていても、同様に本発明の副問題生成コマンド261及び解生成コマンド263を基底状態探索のプリプロセッサ(前処理)とポストプロセッサ(後処理)として使用することで、任意の係数のイジングモデルの基底状態探索を実現する基底状態探索プログラム264ないしは2520を提供することが可能となる。
(1−3)イジングモデルを表現するデータ構造と書式
図3に、情報処理装置200上でイジングモデルを表現するデータ構造の例を示す。イジングモデルは、問題定義300で定義され、相互作用係数を定義する相互作用定義部310と、外部磁場係数を定義する外部磁場係数部320とから構成される。
相互作用定義部310は、相互作用の元となるスピンを指定する識別子(例えば、スピンに一意な番号を付与して、それを識別子とする)、相互作用の先となるスピンの識別子、及び、相互作用係数を一組として、この組を相互作用の数だけ並べる。これは、グラフをコンピュータ上で扱う時のデータ構造である隣接リストに近い。
外部磁場係数定義部320は、外部磁場を与えるスピンを指定する識別子と、外部磁場係数とを一組として、外部磁場係数の数だけ並べる。
なお、相互作用定義部310で定義されていないスピン間の相互作用係数や、外部磁場係数320で定義されていないスピンへの外部磁場係数は0とする。つまり、デフォルト値は、相互作用係数の場合には当該スピン間には相互作用が存在しないことを示す0であり、外部磁場係数の場合いは当該スピンには外部磁場が存在しないことを示す0となる。
図4は、図3のデータ構造のより具体的な表現形式、特にHDD260上でデータを保持する場合の書式(ファイルフォーマット)の一例を示す。図3のデータ構造は、HDD260上ではテキストファイルとして実現される。そのテキストファイルのフォーマットは、図4において問題データ400として示すように、相互作用か外部磁場を識別するための識別子と、スピンの識別子及び係数とを並べたものである。原問題110を定義する原問題データ265及び副問題130−1〜130−kを定義する副問題データ266−1〜266−kは、図4の問題データ400のような形式で表現される。
(1−4)解を表現するデータ構造と書式
図5は、解170を示す解データ268及び解候補150−1〜150−kを示す解候補データ267−1〜267−kを情報処理装置200上で表現するデータ構造の例と、そのHDD260上での書式の例とを示す。イジングモデルの解はスピン配列であることから、そのデータ構造は解500のようにスピンの識別子と、そのスピンの値とを一組にして並べたものになる。そして、全てのスピンについて省略無く値を書き出すという前提の元にスピンの識別子を省略して、解データ550のようにスピンの値だけを列挙したテキストファイルとしてHDD260上に解データ268や、解候補データ267−1〜267−kを保持することが出来る。
(1−5)副問題生成の説明
図6に副問題生成120の処理の一例をフローチャートとして示す。
ステップS601では、HDD260から原問題データ265を読出し、RAM220上に展開する。これ以降、原問題データ265にあるi番目スピンからj番目スピンへの相互作用係数は「原問題のJi,j」、i番目スピンの外部磁場係数は「原問題のh」として参照できるものとする。
ステップS602では、原問題のJi,j及び原問題のhを正規化する。原問題の相互作用係数と外部磁場係数は様々な値を含んでいるが、相互作用係数と外部磁場係数の両方を通して絶対値が最大の係数(これを係数深度と呼ぶ)で全ての係数を割って、係数を−1〜+1に正規化する。なお、相互作用係数と外部磁場係数をそれぞれ別に正規化しても良い。この場合、相互作用係数については、絶対値が最大の相互作用係数を係数深度として、各相互作用係数を係数深度で割ることによりそれぞれ正規化し、外部磁場係数については、絶対値が最大の外部磁場係数を係数深度として、各外部磁場係数を係数深度で割ることによりそれぞれ正規化する。
ステップS603では、副問題の個数を決定する。副問題の個数は計算量と計算精度のトレードオフの関係にある。すなわち、副問題の個数を多くすることで、より近似度の高い(大域最適解に近い)解が得られる可能性が高くなる半面、多くの副問題の基底状態探索を行わなければならないため、計算量は増加する。情報処理装置200の基底状態探索の処理速度や、応用上生じる制約時間、及び、要求される精度から副問題の個数を決定する必要がある。一般的には、同じ近似度で解を求めるために必要な副問題の個数は、問題のサイズ(スピン数、相互作用の数、及び、外部磁場の数)と、ステップS602で求めた係数深度に比例して増加する傾向にある。
ステップS604〜S608では、ステップS603で決定した副問題の個数分だけ、副問題を生成する処理を行う。まずステップS604で変数iを1に設定し、ステップS605で変数iと同じ値のi番目のスピンに対する副問題の相互作用係数、及び、外部磁場係数を決定し、ステップS606で副問題データ266−1〜266−kとして書き出す。この後、ステップS607で変数iを1増加させた値に更新し、ステップS608で変数iの値が副問題数よりも大きいか否かを判定する。変数iの値が副問題数よりも小さい場合にはステップS605に戻り、この後、変数iの値が副問題数よりも大きくなるまでステップS605〜S608の処理を繰り返す。
ステップS604、S607及びS608は副問題の個数分だけステップS605〜S606を実行するためのループであるが、このループはループ内で前後の依存関係を持たないので、並列に実行可能な計算機環境上ではループ展開して用意に並列実行可能である。つまり、十分な並列性を有する計算機環境があれば、副問題の個数にかかわらず、副問題生成120の処理は定数時間で行うことができ、大規模な問題に対してもスケーラビリティを有する。ステップS605の詳細については、別の図面を参照して説明する。
図7に、ステップS605について上述した副問題の相互作用係数、及び、外部磁場係数を決定する処理を示す。副問題の相互作用係数と外部磁場係数の決定は各々独立した処理で行うことができる。そのため、原問題の相互作用係数(正規化後)を入力としてステップS701で副問題の相互作用係数を決定し、原問題の外部磁場係数(正規化後)を入力としてステップS702で副問題の外部磁場係数を決定している。ステップS701及びS702は互いに依存関係は無いので、並列処理することが可能である。ステップS701及びステップS702の処理に関しては複数種のアルゴリズムがあり、その詳細は後述する。
(1−6)原問題の相互作用係数から副問題の相互作用係数を生成する処理
図19に、ステップS701で示した正規化後の原問題の相互作用係数から、副問題の相互作用係数を生成する処理のフローチャートを示す。
ステップS1901〜S1909では、原問題の2つのスピンの全ての組み合わせを列挙するためのループを回している。まずステップS1901でi番目のスピンに対応する変数iを初期化(0に設定)し、ステップS1902で変数iの値が全スピン数よりも小さいか否かを判定する。変数iの値が全スピン数よりも小さい場合には(S1902:YES)、j番目のスピンに対応する変数jを初期化し、ステップS1904で変数jの値が全スピン数よりも小さいか否かを判定する。
変数jの値が全スピン数よりも小さい場合には(S1905:YES)、ステップS1905で変数i及び変数jが同じ値であるか否かを判定する。変数i及び変数jが同じ値である場合には(S1905:YES)、ステップS1906で副問題のi番目スピンからj番目スピンへの相互作用係数Ji,jを0に設定し、変数i及び変数jが同じ値でない場合には(S1905:NO)、原問題の相互作用係数Ji,jから副問題の相互作用係数Ji,jを生成する。この後、ステップSP1908で変数jの値を1増加させてステップS1904以降の処理を繰り返す。
やがて変数jの値が全スピン数と同じ値になった場合には(S1904:NO)、ステップS1909で変数iの値を1増加させ、この後、ステップS1902以降の処理を繰り返す。さらに、この後、変数iの値が全スピン数と同じ値になった場合には(S1902:NO)、この処理を終了する。
図19において、外側のループは変数i、内側のループは変数jでそれぞれスピン数分回るため、結果としてループの最内側にあるステップS1905〜S1907ではi、jの全ての組み合わせに対して実行されることになる。なお、ループ間に依存関係は無いので、ループ展開して並列実行することは容易である。
このステップS1901〜S1909は相互作用係数Ji,jを2次元平面上に行列のように並べたときに、それを端から順次走査していくような動きをする。なお、外側ループの変数がi、内側ループの変数がjであることから、あるi,jが与えられた時にi>jであれば、j,iはすでに通過済み(処理済み)であることに留意されたい。
相互作用は互いに異なる2つのスピン間にのみ存在するので、相互作用係数を順に走査する中で、i=jであるような相互作用係数(例えばJ)は無いはずである。そこで、上述のようにステップS1905〜S1906でi=jとなる相互作用係数は0に設定する。それ以外のi,jの組み合わせについては、ステップS1907で原問題のJi,jから副問題のJi,jを生成する。
ステップS1907の処理の一例を図20及び図23に示す。図20及び図23はステップS1907で行うべき処理のそれぞれ異なる2種類の形態であり、どちらを利用しても良い。図20は原問題の相互作用係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の係数を生成する。図23は原問題の非零の相互作用係数は全て+1/−1で模擬するように副問題の係数を生成する。
(1−7)正側係数を+1/0、負側係数を−1/0にするアルゴリズム
図20を用いて、原問題の相互作用係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の係数を生成するステップS1907(図19)の処理の詳細を説明する。
ステップS2001は、与えられた変数i,jで指定される原問題のJi,jが、有向グラフとして与えられているものか、無向グラフの辺(無向辺)として与えられているものかの判定を行う。これは、原問題のJi,j及びJj,iが同一の値であれば(Ji,j=Jj,i)、無向辺であると判定する。なお、有向グラフの辺(有向辺)場合には、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用とが異なる、もしくは、どちらか一方の相互作用しかないため、原問題のJi,jとJj,iは異なる値をとる(Ji,j≠Jj,i)。
図20の処理では、ステップS2005〜S2009で、原問題のJi,jの大きさに比例した確率で、+1ないしは−1を副問題の係数として発生させる。このとき乱数を用いるため、副問題のJi,jとJj,iは必ずしも同じ値にならない。原問題が有向辺で、もともと原問題のJi,jとJj,iが異なる値であれば、副問題のJi,jとJj,iが異なることは必然性がある。しかし、原問題が無向辺であるときには、副問題のJi,jとJj,iは同一の値になるべきである。
そこで、ステップS2001のもう一つの判定条件である(i>j)が満たされているときには(S2001:YES)、原問題のJj,iから副問題のJj,iを生成する処理が既に完了しているので(i>jを満たすときには、j,iという組み合わせはすでに通過済みである)、ステップS2002で既に生成済みの副問題のJj,iの値を、副問題のJi,jの値として出力する。
次に、ステップS2001の判定で、無向辺ではないか、無向辺であったとしても1回目の副問題の係数生成であった場合(S2001:NO)に行われる、ステップS2003〜S2009の処理を説明する。
ステップS2003では原問題のJj,iが0であるかを判定する(Ji,j=0)。0であれば、ステップS2004で副問題のJj,iも0とする。
原問題のJj,iが0ではない場合(S2003:NO)、原問題のJj,iの値の大きさに応じた確率で、原問題のJj,iが正であれば+1ないしは0を、原問題のJj,iが負であれば−1ないしは0を副問題のJj,iとして出力する処理をステップS2005〜S2009で行う。
具体的に、ステップS2005では、0以上1以下の値域を持つ乱数rを生成する。
ステップS2006では、原問題のJj,iの絶対値と、ステップS2005で生成した乱数rを比較する。(r≦原問題のJj,iの絶対値)であれば(S2006:YES)、ステップS2007で副問題のJj,i正の値であるか否かを判定し、原問題のJj,iが正の値の場合には(S2007:YES)、ステップS2008で副問題のJj,iを+1として出力し、原問題のJj,iが負の値の場合には(S2007:NO)、ステップS2009で副問題のJj,iを−1として出力する。また(r≦原問題のJj,iの絶対値)でなければ(S2006:NO)、ステップS2004で副問題のJj,iを0とする。このようにして、原問題の係数の大きさに比例した確率で、+1/0、ないしは、−1/0の副問題の係数が生成される。
以上のアルゴリズムで、原問題の係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の係数を生成することが出来る。
なお、この方法は、生成された複数の副問題の各辺の相互作用係数(副問題のJj,i)の期待値ないしは平均値が、正規化された原問題のJj,iの値になるように、副問題のJj,iに+1/0/−1の値を与えているとも言うことが出来る。
(1−8)正側係数、負側係数を共に+1/−1にするアルゴリズム
図23を用いて、原問題の非零の相互作用係数は全て+1/−1で模擬するように副問題の係数を生成するステップS1907の処理の詳細を説明する。
ステップS2301〜S2302は、原問題の無向辺のための処理であり、図20のステップS2001〜S2002と同じであるため、繰り返しの説明を省略する。
次に、ステップS2301の判定で、無向辺ではないか、無向辺であったとしても1回目の副問題の係数生成であった場合に行われる、ステップS2303〜S2007の処理を説明する。
ステップS2303において、原問題のJj,iの値に応じて、副問題の係数に+1を発生させる確率pを計算する。なお、(p−1)の確率で副問題の係数に−1を発生させるものとする。確率pは副問題のJj,iの期待値が、原問題のJj,iの値になるように定める。具体的には、次式
で計算される。ここで参照している原問題のJj,iの値は正規化されている値であるため、−1〜+1の値域を持つ。仮に、原問題のJj,iの値が0の時には、p=0.5となり、副問題には+1と−1が等しい確率で発生する。原問題のJj,iの値が+1の時には、p=1となり、副問題には+1のみが発生する。原問題のJj,iの値が−1の時には、p=0となり、副問題には−1のみが発生する。
ステップS2304では、0以上1以下の値域を持つ乱数rを生成する。
ステップS2305では、ステップS2303で決定した確率pと、ステップS2304で生成した乱数rを比較する。r≦pであれば、ステップS2306で副問題のJj,iを+1として出力する。r≦pでなければ(r>pであれば)、ステップS2307で副問題のJj,iを−1として出力する。
以上のアルゴリズムで、原問題の係数のうち、非零係数は全て+1/−1で模擬するように副問題の係数を生成することが出来る。
(1−9)原問題の外部磁場係数から副問題の外部磁場係数を生成する処理
図21に、ステップS702で示した正規化後の原問題の外部磁場係数から、副問題の外部磁場係数を生成する処理のフローチャートを示す。
ステップS2101〜S2104では、原問題の全てスピン(すなわち全ての外部磁場係数)をあたるためのループを回している。なお、ループ間に依存関係は無いので、ループ展開して並列実行することは容易である。
ステップS2101では、スピンの番号を表す変数iを0に設定する。
ステップS2102では、変数iの値が全スピン数よりも小さいか否かを判定し、変数iの値が全スピン数よりも小さい場合に(S2102:YES)、ステップS2103で原問題のhから副問題のhを生成する処理を行う。
ステップS2104では、変数iの値を1増加させた値に更新し、変数iの値が全スピン数よりも大きくなるまで(S2102:NO)、ステップS2102〜S2104の処理を繰り返す。
ステップS2103の処理の一例を図22及び図24に示す。図20及び図23に示した相互作用係数の場合と同様に、図22及び図24はステップS2103で行うべき処理のそれぞれ異なる2種類の形態であり、どちらを利用しても良い。
図22は原問題の外部磁場係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の係数を生成する(相互作用係数に対する図20の処理と類似する)。図24は原問題の非零の外部磁場係数は全て+1/−1で模擬するように副問題の係数を生成する(相互作用係数に対する図23の処理と類似する)。
一般的には、相互作用係数と外部磁場係数の値の生成方法は同じ方法を揃えて用いる。つまり、相互作用係数に対する図20のアルゴリズムと外部磁場係数に対する図22のアルゴリズムを対にして用い、相互作用係数に対する図23のアルゴリズムと外部磁場係数に対する図24のアルゴリズムを対にして用いる。
(1−10)正側係数を+1/0、負側係数を−1/0にするアルゴリズム
図22を用いて、原問題の外部磁場係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の外部磁場係数を生成するステップS2103の処理の詳細を説明する。
ステップS2201では原問題のhが0であるかを判定する(h=0)。原問題のhが0であれば、ステップS2202で副問題のhも0とする。
原問題のhが0でない場合には、原問題のhの値の大きさに応じた確率で、原問題のhが正であれば+1ないしは0を、原問題のhが負であれば−1ないしは0を副問題のhとして出力する処理をステップS2203〜S2207で行う。
ステップS2203では、0以上1以下の値域を持つ乱数rを生成する。
ステップS2204では、原問題のhの絶対値と、ステップS2203で生成した乱数rを比較する。原問題のhの絶対値が乱数r以上(r≦原問題のhの絶対値)であれば、ステップS2205〜S207で副問題のhを+1(原問題のhが正の値の場合)、ないしは、−1(原問題のhが負の値の場合)として出力する。原問題のhの絶対値が乱数r以上(r≦原問題のhの絶対値)でなければ、ステップS2202で副問題のhを0とする。このようにして、原問題の外部磁場係数の大きさに比例した確率で、+1/0、ないしは、−1/0の副問題の外部磁場係数が生成される。
ステップS2205では、原問題のhが正負のいずれかであるかを判定する。正であればステップS2206で副問題のhを+1として出力する。負であればステップS2207で副問題のhを−1として出力する。
以上のアルゴリズムで、原問題の外部磁場係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の外部磁場係数を生成することが出来る。
なお、この方法は、生成された複数の副問題の各辺の外部磁場係数(副問題のh)の期待値ないしは平均値が、正規化された原問題のhの値になるように、副問題のhに+1/0/−1の値を与えているとも言うことが出来る。
(1−11)正側係数及び負側係数を共に+1/−1にするアルゴリズム
図24を用いて、原問題の非零の外部磁場係数は全て+1/−1で模擬するように副問題の係数を生成するステップS2103の処理の詳細を説明する。
図24のステップS2401〜S2405の処理は、図23のステップS2303〜S2307について、相互作用係数(Jj,i)を外部磁場係数(h)に置き換えたものと見なすことが出来る。
ステップS2401において、原問題のhの値に応じて、副問題の係数に+1を発生させる確率pを計算する。確率pの計算式は
であり、図23のステップS2303と同様の計算方法である。
ステップS2402では、0以上1以下の値域を持つ乱数rを生成する。
ステップS2403では、ステップS2401で決定した確率pと、ステップS2402で生成した乱数rとを比較する。r≦pであれば、ステップS2404で副問題のhを+1として出力する。r≦pでなければ(r>pであれば)ステップS2405で副問題のhを−1として出力する。
以上のアルゴリズムで、原問題の外部磁場係数のうち、非零の外部磁場係数は全て+1/−1で模擬するように副問題の外部磁場係数を生成することが出来る。
(1−12)解生成の説明
図8に解生成160の処理の一例をフローチャートとして示す。図8の解生成160は解候補150−1〜kのうち、原問題110でのエネルギーが最も低くなる解を解170として出力するものである。
ステップS801〜S807では、副問題の個数分だけS803〜S806の処理を繰り返す。ステップS801、S806及びS807は繰り返しのためのループ処理である。
ステップS801では、変数iを初期化(1に設定)し、ステップS802では、ループ中で見つけた最小のエネルギーを一時的に記録しておくための変数minを初期化(−∞に設定)する。
ステップS803では、1個以上の解候補のうちの1つを原問題のエネルギー関数で評価し、ステップS804では、ステップS803で得た評価値(エネルギー)が変数minよりも小さいか否かを判定する。
ステップS803で得た評価値が変数minよりも小さい場合には(S804:YES)、ステップS805で、変数minをステップS803で得た評価値に更新すると共に、解候補を表す変数xをそのときの変数iの値に更新する。
ステップS806では変数iを1増加させ、ステップS807では、変数iの値が副問題の数よりも大きいか否かを判断し、変数iの値が副問題の数以下である場合には(S807:YES)、ステップS803に戻る。そして、これ以降、ステップS803〜S807のループを変数iの値が副問題のよりも大きくなるまで繰り返す。
このような処理により、最終的に最も小さいエネルギーが変数minに設定され、そのようなエネルギーとなる解候補に対応する変数iの値が変数xとして設定される。なお、変数x、ないしは、変数minをリスト構造として、複数の解を保持しても良い。
なお、ステップS801〜S807の処理は、ツリー状のリダクション演算によって、並列計算機上で容易に並列実行が可能である。
最後にステップS808で変数xに記憶されている解候補を、原問題110の解170として出力する。
(1−13)具体的な問題を解く例
以上に述べた本発明の基底状態探索によって、具体的な問題を解く例を示す。
(1−13−1)グラフの最大カット問題
図9にグラフの最大カット問題を示す。図9のグラフG=(V、E)は、頂点の集合V={v0,v1,v2,v3,v4,v5}と、辺の集合E={e01,e02,e12,e13,e14,e24,e34,e35,e45}から構成される。なお、e01という辺は、頂点v0と頂点v1の間を接続する辺という意味である。各辺は重み係数を持っており、w(e01)=5,w(e02)=4,w(e12)=1,w(e13)=3,w(e14)=2,w(e24)=3,w(e34)=4,w(e35)=5,w(e45)=1となる。
図10に示すように、このグラフの頂点Vを2つの部分集合V’とV’\Vに分割することをカットと呼ぶ。V’\VはVからV’を除いた集合を示す。ここで、分割されたV’とV’\Vの間を跨っている辺(図10の例ではe01、e02、e13、e14、e24、e35及びe45)を、カットを跨いでいるエッジ、もしくは、カットエッジと呼ぶ。重みが無いグラフの場合にはカットエッジの本数、図10のように重み付きのグラフの場合にはカットエッジの重みの総和を、カットの大きさと呼ぶ。図10の例では、カットの大きさはw(V‘)=23である。
最大カット問題とは、グラフG=(V,E)を与えられたとき、カットの大きさを最大化するカットを求めることである。換言すれば、カットの大きさを最大化するように、頂点VをV’とV’\Vにグループ分けすることと言っても良い。なお、図10は最大カットになっている。また、このグラフはカットの仕方、つまり頂点Vの部分集合V‘とV’\Vへの仕方は異なるが、同じカットの大きさを持つもう一つの最大カットの答えがあり、図11に示す。図10、及び、図11はいずれも図9の最大カット問題の答えとして正しい。
(1−13−2)イジングモデルによる最大カット問題の解法
図9のグラフの最大カット問題を、イジングモデルの基底状態探索で解けることを、図12を用いて説明する。図12のイジングモデルは、図9のグラフの辺の重み係数の符号を全て反転させたものを、相互作用係数にしたものである。このイジングモデルは6個のスピンを持っており、それぞれが+1と−1の2状態を持つので、2^6個(64個)の実行可能解がある。この実行可能解が持つエネルギーは図12に示すように、−36〜56の範囲内に16種類のエネルギーがある。
図12のイジングモデルのエネルギーを最小化するスピン配列、すなわち大域最適解となる基底状態は図12に示したように4種類あり、その時のエネルギーは−36である。なお、図示した基底状態のうち、(1)と(2)、(3)と(4)はそれぞれ互いにスピンの値を反転させた関係にある。イジングモデルでは、あるスピン配列があったときに、そのスピン配列の全てのスピンの値を反転させた時には、エネルギーは変わらない。
図12の基底状態(1)及び(2)は図11の最大カット問題の解に、基底状態(3)及び(4)は図10の最大カット問題の解に対応している。最大カット問題をイジングモデルの基底状態探索として捉えると、カットエッジの端点の頂点(スピン)の値が異なるようにスピンの値を決定することである。カットした頂点集合V’に属する頂点は+1のスピン、V’\Vに属する頂点は−1のスピンとすることであると言っても良い。また、頂点集合V’が−1、V’\Vが+1というように、値が逆であっても良い。このことから、イジングモデルの基底状態探索とグラフの最大カット問題が対応していることが理解できよう。
(1−13−3)本実施の形態による解の例
図12のイジングモデルの基底状態探索を、本実施の形態に記載した方法ないしは装置を用いて行った例を説明する。図1に示した本発明の流れに沿って説明する。
まず、原問題を用意する。図12のイジングモデルを、図4の書式に沿ってデータ化した図13の原問題データ1300を原問題とする。なお、図12のイジングモデルを正規化すると図33に示すようなモデルになる。このことからも分かるように、本発明において原問題の係数は整数に限らず、実数を含んでいても良い。原問題の係数の値にかかわらず、一旦正規化して扱う。図33の例は例えば+1〜−1の値域に正規化している。
次に、この原問題データ1300に副問題生成120を適用して、図14の副問題データ1401〜1403を生成する。なお、この副問題生成では、相互作用係数に対する図20のアルゴリズムと外部磁場係数に対する図22のアルゴリズムを対にして用い、原問題の相互作用係数及び外部磁場係数のうち、正の係数のものを+1/0で模擬し、負の係数のものを−1/0で模擬するように副問題の係数を生成した。なお、図面の紙幅の都合で、この例では副問題数を3個としている。
図14の副問題データ1401〜1403が、図12の原問題のイジングモデルと比較してどのようなモデルになっているのかを見るために、図15に副問題データ1401〜1403をグラフとして描画した副問題1501〜1503を示す。
図15の副問題1501〜1503を見ると、相互作用が存在する辺は、全て係数−1の相互作用となっている。図12のイジングモデルは負の相互作用係数のみを含んでいるため、図20のアルゴリズムを適用すると、相互作用係数は−1か0かのどちらかとなり、係数0は相互作用が無いものとしてグラフには描画されないため、係数−1の辺のみが見えるのである。
そして、副問題1501〜1503の各辺について見てみると、図12の原問題で相互作用係数の絶対値が大きい辺(例えば、J0,1=−5,J0,2=−4,J3,4=−4,J3,5=−5)については、副問題1501〜1503のいずれでも係数−1の相互作用が発生している。一方、原問題で相互作用係数の絶対値が小さくなるほど、副問題1501〜1503で相互作用が発生する確率が低くなっていることが確認できる。
この副問題1501〜1503(副問題データ1401〜1403)それぞれに対して、情報処理装置200の基底状態探索アクセラレータ270で制限付基底状態探索を行い、図16の解候補データ1601〜1603を得る。
図16の解候補データ1601〜1603は図5の書式に沿っており、それぞれ副問題1501〜1503の基底状態である。つまり、例えば解候補データ1601は副問題1501の相互作用係数及び外部磁場係数で構成したエネルギー関数のエネルギーを最小化するようなスピン配列であり、その時のエネルギーは−8である。同様に、解候補データ1602は副問題1502のエネルギーを最小化するスピン配列であり副問題1502におけるエネルギーは−8、解候補データ1603は副問題1503のエネルギーを最小化するスピン配列であり副問題1503におけるエネルギーは−6となる。
最後に、図8に示した解生成160の手順で、解候補データ1601〜1603から図17に示す解データ1701を生成する。図16に示すように解候補データ1601〜1603を原問題のエネルギー関数で評価すると、それぞれ−36,−24,−36となる。この中で、エネルギーがより小さい解候補データ1601及び解候補データ1603(いずれも原問題でのエネルギーが−36)を併せて解データ1701として出力する(なお、解候補データ1601及び解候補データ1603のいずれか一方を解データ1701として出力しても良い)。
図17に示した解データ1701を見ると、第一行目(解候補データ1601)は、図12で示した基底状態の(4)、第二行目(解候補データ1603)は図12で示した基底状態の(3)に対応している。
なお、図8に示したように、解生成の中で解候補データ1601〜1603それぞれの原問題でのエネルギーを評価すると計算時間がかかるという場合には、例えば解候補データ1601〜1603のスピン配列のスピンそれぞれについて最頻値などの代表値や統計量を取って、それを解データとする方法もある。
例えば、図18の解データ1801のスピン配列は、スピンそれぞれについて解候補データ1601〜1603での最頻値を取って生成したものである。解データ1801を原問題のエネルギー関数で評価するとエネルギーは−24であり、最良解のエネルギーである−36には及ばないが、実行可能解の16種類のエネルギーの中では3番目に良い値となっている。よって、近似解が出力されていると言える。
(1−14)本実施の形態の性能評価
本実施の形態で説明したイジングモデルの基底状態探索装置、ないしは、方法の性能について、実験結果を図26及び図27に示す。
図26は、相互作用係数に対する図20のアルゴリズムと外部磁場係数に対する図22のアルゴリズムを対にして用いた場合の実験結果である。図27は、相互作用係数に対する図23のアルゴリズムと外部磁場係数に対する図24のアルゴリズムを対にして用いた場合の実験結果である。
図26及び図27のいずれも原問題は図12のイジングモデルである。原問題から副問題生成120で1000個の副問題を生成する。1000個の副問題それぞれについて、基底状態探索の結果として出力されうる解候補(スピン配列)を列挙する。
基底状態探索の結果として出力されうるスピン配列とは、大域最適解ないしは局所最適解である。一般的に、何らかの基底状態探索手段は、あるスピン配列の近傍(例えばハミング距離が近い他のスピン配列)に移行することで、解の質を改善する(エネルギーを下げる)ことができるのであれば移行し、できなければ留まるという局所探索法を用いている。これだけでは、近傍への移行だけでは解の質の改善が不可能という局所最適解にはまってしまい大域最適解へ到達することが出来ないため、熱揺らぎを導入するシミュレーテッドアニーリングなどの手法が用いられているが、それでも局所最適解から抜け出せないことがある。また、大域最適解も近傍への移行だけでは解の質の改善が不可能という点では、一種の局所最適解と見なすことができる。基底状態探索の結果として出力されるスピン配列は、大域最適解を含む広義の局所最適解であると言える。局所最適解が出力されたときには、近似解が得られたことになる。
そこで、1000個の副問題それぞれについて、取りうる全てのスピン配列を列挙し、前述した局所探索法によってそれ以上の解の改善が可能なスピン配列であるかどうか、すなわち大域最適解ないしは局所最適解であるかどうかを判定し、大域最適解ないしは局所最適解であるスピン配列を、当該副問題を基底状態探索して出力されうるスピン配列として列挙した。
その結果、1000個の副問題に対して、図26の場合には合計10332通り、図27の場合には合計9678通りとなる。平均すると1個の副問題あたり平均10個程度の局所最適解があることになる。
そして、10332通り、ないしは、9678通りのそれぞれのケースにおいて、当該スピン配列を当該副問題のエネルギー関数で評価した時の解の品質、つまり何番目に低いエネルギーであるかを表の行方向で示している。列方向は、原問題のエネルギー関数で評価したときの解の品質である。
例えば、図26の1行1列目は14.0%であるが、これは1000個の副問題に対して、解として得られる10332通りのうち、14.0%が副問題でも原問題でも最良の解であることを示している。2行1列目の16.5%は副問題で評価すると2番目に良い解であるが、原問題で評価すると原問題の最良の解になっていることを意味している。
4行目の「計」となっている行は、各列の合計である。この計となっている行は、原問題で所定の品質の解がどの程度の確率で得られるのかを示していると考えて良い。
例えば原問題で1番良い解を得られる確率に注目してみると、図26の場合(図20のアルゴリズムと外部磁場係数に対する図22のアルゴリズム)では34.5%、図27の場合(図23のアルゴリズムと外部磁場係数に対する図24のアルゴリズム)は26.1%である。
ここで、本発明を用いて、原問題で1番良い解を得たいときに、どの程度の数の副問題を用いれば十分かを求める。すなわち、図6のステップS603(副問題数を決定)の一例を示す。
図26の場合、原問題で1番良い解を得られる確率は34.5%である。逆に、それ以外の解が得られる確率は65.5%である。n回連続して1番良い解以外の解を得られる確率は65.5%×nとして計算できるが、11回で1%未満の値となる。よって、11個も副問題を生成すれば、原問題で1番良い解を得られる確率を十分に高められる。また、原問題で2番目以降に良い解、すなわち近似解を出力として許せば、この副問題数はさらに削減することが可能である。
(1−15)イジングチップの構造と係数の制限
本実施の形態でイジングモデルの基底状態を探索する手段として用いているハードウェアであるイジングチップ280−1,280−2について、その構造の詳細と、その構造上生じる係数の制約について、図34〜図38を参照して説明する。
図34は、本実施の形態のイジングチップ280−1,280−2の構成図の例である。イジングチップ280−1,280−2はスピンアレイ3410、I/O(Input/Output)ドライバ3420、I/Oアドレスデコーダ3430及び相互作用アドレスデコーダ3440から構成される。本実施の形態ではイジングチップ280−1,280−2は現在広く用いられているCMOS(Complementary Metal-Oxide Semiconductor)集積回路として実装されることを想定して説明するが、他の固体素子でも実現可能である。
イジングチップ280−1,280−2は、スピンアレイ3410にリード/ライトを行うためのSRAM互換インタフェース3450を持っており、アドレスバス3490、データバス3491、R/W制御線3493及びI/Oクロック線3492から構成される。また、イジングモデルの基底状態探索の制御を行うための相互作用制御インタフェース3460として、相互作用アドレス線3480及び相互作用クロック線3481を有している。また、イジングチップ280−1,280−2は、そのイジングチップ280−1,280−2を動作させるための電源線3440と、後述するようにイジングモデルのスピンを表現するメモリセルの値を確率的に反転させる乱数を注入するための乱数注入線3450とを有している。
イジングチップ280−1,280−2では、イジングモデルのスピンσ、相互作用係数Ji,j及び外部磁場係数hを全てスピンアレイ3410内のメモリセルに記憶する情報で表現する。スピンσの初期状態の設定及び基底探索完了後の解読み出しのためにスピンσのリード/ライトをSRAM互換インタフェース3450で行う。また、基底状態を探索すべきイジングモデルをイジングチップ280−1,280−2に設定するために、相互作用係数Ji,j及び外部磁場係数hのリード/ライトもSRAM互換インタフェース3450で行う。そのため、スピンアレイ3410内のスピンσ、相互作用係数Ji,j及び外部磁場係数hにはアドレスが付与されている。
また、イジングチップ280−1,280−2は、基底状態探索を行うために、スピンアレイ3410の内部でスピン間の相互作用を実現する。この相互作用を外部から制御するのが相互作用制御インタフェース3460であり、具体的には相互作用を行うスピン群を指定するアドレスを相互作用アドレス線3480を介して入力し、相互作用クロック線3481を介して入力されるクロックに同期して相互作用を行う。
情報処理装置200は、CPU210が基底状態探索アクセラレータ制御コマンド262を実行してイジングチップコントローラ250を制御し、イジングチップコントローラ250がイジングチップ280−1,280−2のSRAM互換インタフェース3450及び相互作用制御インタフェース3460を制御することで、イジングモデルの基底状態探索を実現する。
ここで、イジングチップ280−1,280−2で扱うことのできるイジングモデルの係数が、ハードウェアの構造によって制限されていることをより詳細に説明する。
スピンアレイ3410は、1個のスピン並びにそれに付随する相互作用係数及び外部磁場係数の保持と、基底状態探索処理とを実現するスピンユニット3500を基本構成単位として、スピンユニット3500を多数個並べて構成する。図37は、スピンユニット3500を複数個並べることで、3次元格子状のトポロジを持つイジングモデルを構成する例を示している。図37の例は、3(X軸方向)×3(Y軸方向)×2(Z軸方向)の大きさの3次元格子である。座標軸の定義は図示した通り、図面右方向をX軸、図面下方向をY軸、図面奥行き方向をZ軸としているが、この座標軸は実施の形態の説明上便宜的に必要なだけであり、本発明とは関係しない。3次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図37の3次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数5のスピン(頂点)が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数6が必要となる。
図37に示す1個のスピンユニット3500には、隣接するスピン(例えば隣接するスピンが5個の場合)σ、σ、σ、σ、σの値が入力される。また、スピンユニット300は、スピンσ及び外部磁場係数hに加え、上述した隣接するスピンσとの相互作用係数であるJj,i、Jk,i、Jl,i、Jm,i、Jn,i(隣接する5スピンとの相互作用係数)を保持するメモリセルを有している。
ところで、先に述べたようにイジングモデルは一般的に無向グラフで表現される相互作用を有している。上述した(1)式では、相互作用を表わす項として、Ji,j×σ×σがあるが、これはi番目スピンからj番目スピンへの相互作用を示している。この時、一般的なイジングモデルではi番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。つまり、Ji,jとJj,iは同一である。しかし、本実施の形態のイジングチップ280−1,280−2では、先に述べたようにこのイジングモデルを有向グラフに拡張し((3)式)、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
そのため、1個のスピンユニット3500をi番目スピンσと考えた時に、このスピンユニットが保持する相互作用係数であるJj,i、Jk,i、Jl,i、Jm,i、Jn,iは、隣接するj番目、k番目、l番目、m番目、n番目のスピンσ、σ、σ、σ、σから、i番目スピンσへの相互作用を決めるものである。このことは、図37において、スピンユニット3500に含まれている相互作用係数が対応する矢印(相互作用)が、図示されているスピンユニット3500の外部のスピンから、スピンユニット3500の内部のスピンに向かっていることに対応している。
スピンユニット3500の構成の一例を図35及び図36を用いて説明する。スピンユニット3500は2つの側面をもっており、便宜上、図35及び図36に分けて説明するが、1個のスピンユニット3500に図35及び図36の構成の双方が含まれるものである。図35はスピンユニット3500間の相互作用を実現するための回路を図示し、図36はスピンユニット3500が有するメモリセルN,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1にイジングチップ280−1,280−2外からアクセスするためのインタフェースであるワード線3620とビット線3610とに注目して図示したものである。
スピンユニット3500は、イジングモデルのスピンσ、相互作用係数Jj,i〜J及び外部磁場係数hを保持するために、複数の1ビットのメモリセルN,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1を備えている。なお、メモリセルIS0及びIS1、メモリセルIU0及びIU1、メモリセルIL0及びIL1、メモリセルIR0及びIR1、メモリセルID0及びID1、並びに、メモリセルIF0及びIF1は、それぞれ2個1組で役割を果たすものであるため、それぞれまとめてメモリセル対ISx,IUx,ILx,IRx,IDx又はIFxと略記する(図38参照)。
ここで、スピンユニット3500はi番目のスピンを表現するものとして説明を行う。メモリセルNはスピンσを表現するためのメモリセルであり、スピンの値を保持する。スピンの値はイジングモデルでは+1/−1(+1を上、−1を下とも表現する)であるが、これをメモリセルの2値である0/1に対応させる。例えば、+1を1、−1を0に対応させる。
図38を用いて、スピンユニット3500が有するメモリセル対ISx、IUx、ILx、IRx、IDx及びIFxと、図5に示したイジングモデルのトポロジとの対応関係を示す。メモリセル対ISxは外部磁場係数を記憶する。また、メモリセル対IUx,ILx,IRx,IDx及びIFxは、それぞれ相互作用係数を記憶する。具体的に、メモリセル対IUxは上側のスピン(Y軸方向で−1)、メモリセル対ILxは左側のスピン(X軸方向で−1)、メモリセル対IRxは右側のスピン(X軸方向で+1)、メモリセル対IDxは下側のスピン(Y軸方向で+1)、メモリセル対IFxは奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)との相互作用係数Ji,jをそれぞれ記憶する。
また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット3500は最大で5個のスピンと接続される。本実施の形態のイジングチップ100では、外部磁場係数及び相互作用係数として+1/0/−1の3値に対応する。そのため、外部磁場係数及び相互作用係数を表わすためには、それぞれ2ビットのメモリセルが必要となる。メモリセル対ISx,IUx,ILx,IRx,IDx及びIFxは、末尾の数字が0と1の2つのメモリセル(例えばメモリセル対ISxの場合にはメモリセルIS0及びIS1)の組合せで、+1/0/−1の3値を表現する。例えば、メモリセル対ISxの場合には、メモリセルIS1で+1/−1を表現し、メモリセルIS1が保持する値が1の時は+1、メモリセルIS1が保持する値が0の時には−1を表す。これに加えて、メモリセルIS0が保持する値が0の時には外部磁場係数を0と見なし、メモリセルIS0が保持する値が1の時にはメモリセルIS1が保持する値で決まる+1/−1のいずれかを外部磁場係数とする。外部磁場係数が0の時は外部磁場係数をディセーブルしていると考えれば、メモリセルIS0に保持された値は外部磁場係数のイネーブルビットであると言うことができる(IS0=1の時に、外部磁場係数がイネーブルされる)。相互作用係数を記憶するメモリセル対IUx,ILx,IRx,IDx及びIFxも同様に係数とビットの値を対応させている。
スピンユニット3500内のメモリセルN,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0及びIF1は、それぞれイジングチップ280−1,280−2の外部からリード/ライト可能でなければならない。そのために、図36に示すように、スピンユニット3500はビット線3610とワード線3620とをそれぞれ有している。スピンユニット3500を半導体基板上にタイル状に並べてビット線3610とワード線3620とを接続し、I/Oアドレスデコーダ3430とI/Oドライバ3420とで駆動、制御又は読み出しすることで、一般的なSRAM(Static Random Access Memory)と同様にスピンユニット3500内のメモリセルをイジングチップ280−1,280−2のSRAM互換インタフェース3450でリード/ライトすることが出来る。
スピンユニット3500は同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット3500毎に独立して持っている。スピンの次状態を決定するための回路を図35に示す。図35ではスピンユニット3500は外部とのインタフェースとして、信号線EN,NU,NL,NR,ND,NF,ON及びGNDを有する。信号線ENは当該スピンユニット3500のスピンの更新を許可する切替え信号を入力するインタフェースである。この切替え信号でセレクタ3550を制御することで、メモリセルNに保持されたスピンの値を、後述の多数決論理回路3530からOR回路3540を介してセレクタ3550に与えられる値に更新することが出来る。
信号線ONは当該スピンユニット3500のスピンの値を他のスピンユニット3500(図37のトポロジで隣接するユニット)に出力するインタフェースである。信号線NU,NL,NR,ND及びNFはそれぞれ他のスピンユニット3500(図37のトポロジで隣接するユニット)の有するスピンの値を入力するためのインタフェースである。信号線NUは上側のスピン(Y軸方向で−1)、信号線NLは左側のスピン(X軸方向で−1)、信号線NRは右側のスピン(X軸方向で+1)、信号線NDは下側のスピン(Y軸方向で+1)、信号線NFは奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)からの入力である。
なお、イジングモデルのトポロジを考える上で、端の処理を決める必要がある。図37のトポロジのように単に端は打ち切るのであれば、信号線NU,NL,NR,ND及びNFのうち端に対するものは何も入力しなくて良い(回路上は0ないしは1の固定値に接続するなど、未使用入力端子として適切な処理をとる)。
スピンユニット3500では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を見たときに、正の値と負の値のどちらが支配的か判断することと等価である。例えば、i番目スピンσに、スピンσ、σ、σ、σ及びσが隣接しているとして、スピンσの次状態は以下のように決まる。まず、隣接スピンの値はσ=+1、σ=−1、σ=+1、σ=−1、σ=+1とし、相互作用係数はJj,i=+1、Jk,i=+1、Jl,i=+1、Jm,i=−1、J=−1、外部磁場係数h=+1とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σ×Jj,i=+1、σ×Jk,i=−1、σ×Jl,i=+1、σ×Jm,i=+1、σ×Jn,i=−1、h=+1となる。外部磁場係数は、常に値が+1のスピンとの相互作用係数と読み替えて良い。
ここで、i番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれi番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、j番目スピンとの間での局所的なエネルギーは、i番目スピンを+1とした時には−1、i番目スピンを−1としたときには+1となるので、i番目スピンを+1にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えたときに、i番目スピンを+1/−1のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数及び隣接スピンの積と、外部磁場係数とをそれぞれ並べたものにおいて、+1と−1のどちらが多いか数えれば良い。先程の例では、+1が4個、−1が2個である。仮に、i番目スピンを+1とすると、エネルギーの総和は−2、i番目スピンを−1とするとエネルギーの総和は+2になる。よって、+1の個数が多い時にはi番目スピンの次状態を+1とし、−1の個数が多い時にはi番目スピンの次状態を−1にするという多数決で、エネルギーを最小化するi番目スピンの次状態を決定することが出来る。
図35のスピンユニット3500に図示する論理回路は前記した相互作用を行うための回路である。まず、隣接スピンの状態と、相互作用係数の+1/−1を示すメモリセルIU1,IL1,IR1,ID1,IF1が保持する値との排他的論理和の否定(XNOR)をXNOR回路3510で求める。これにより、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる(+1は1、−1は0にエンコードされているものとする)。もし、相互作用係数が+1/−1だけであれば、XNOR回路3510の出力のうち+1/−1のどちらが多いかを多数決論理回路3530において多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態+1のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理回路3530に入力すべき値となる。
次に、係数0の実現方法について考える。n入力の多数決論理f(I,I,I,……,I)があるとき、以下の命題は真であると言える。まず、入力I,I,I,……,Iの複製I’,I’,I’,……,I’があるとする(任意のkについて、I=I’である)。このとき、f(I,I,I,……,I)の出力は、複製もあわせて入力したf(I,I,I,……,I、I’,I’,I’,……,I’)と等しい。つまり、各入力変数をそれぞれ2個ずつ入れても、出力は不変である。さらに、入力I、I、I,……,Iの他に、もう一つの入力Iと、その反転!Iがあるとする。このとき、f(I,I,I,……,I,I,!I)の出力は、f(I,I,I,……,I)と等しい。つまり、入力変数とその反転を入力すると、多数決においてその入力変数の影響をキャンセルするように働く。多数決論理のこの性質を利用して係数0を実現する。具体的には、図35に示すように、XOR回路3520を利用して、係数のイネーブルを決めるビット(ビットセルIS0,IU0,IL0,IR0,ID0及びiF0にそれぞれ保持されたビット)の値により、多数決論理回路3530に、先に述べたスピン次状態の候補となる値の複製か、その反転を同時に入力する。例えば、メモリセルIS0が保持するビットの値が0の場合、メモリセルIS1が保持するビットの値と、メモリセルIS1が保持するビットの値を反転させた値が同時に多数決論理回路3530に入力されるので、外部磁場係数の影響は無い(外部磁場係数が0に相当する)ことになる。また、メモリセルIS0が保持するビットの値が1の場合には、メモリセルIS1が保持するビットの値と、その値と同じ値(複製)が同時に多数決論理回路3530に入力されることになる。
前述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することが出来るが、これだけでは局所最適解に陥ってしまう可能性がある。基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことが出来ず、大域最適解に到達しない。そのため、局所最適解から脱出するための作用として、スピンを表現するメモリセルの値を確率的に反転されるために、スピンユニット3500はRNDインタフェースを有する。イジングチップイジングチップ280−1及び280−2の外部から乱数注入線3450でランダムなビット列を注入し、スピンユニット3500のRNDインタフェースに介してOR回路3540に入力することで、スピンの値を確率的に反転させることができる。
上述したような構成で、+1/0/−1の3種類の相互作用係数、及び、外部磁場係数を持つ3次元格子イジングモデルの基底状態探索を実現するイジングチップ280−1,280−2が提供できる。そして、今述べた「+1/0/−1の3種類」という係数の制限は、係数を保持するためのメモリセルISx,IUx,ILx,IRx,IDx及びIFxと、係数と隣接スピンの値からエネルギーを小さくするスピンの値を決定する多数決論理の構造とに起因していることが分かる。
イジングチップ280−1及び280−2を実際に製造するために、詳細な回路設計やレイアウトを行うと、チップ面積のうちスピンアレイ3410の占める割合が大半を占める。そして、スピンアレイ3410の面積は、スピンユニット3500の面積にスピン数を乗じたものに比例することから、スピンユニット3500の面積の大小はイジングチップイジングチップ280−1,280−2のスケーラビリティに大きな影響を与える。一般的に半導体集積回路の製造に要する原価は、プロセスの世代(微細度)とチップ面積、及び、量産数で決まると言うことが出来る。同じプロセス世代と量産数であれば、スピンユニット3500の面積を小さくするほどコストを下げることが出来る。また、チップ面積が大きくなるほど製造不良による歩留まり低下の度合いが大きくなるため、より多くのスピン数を実現するという点からもスピンユニット3500の面積を小さくすることが望ましい。
上述の構造では、係数を「+1/0/−1の3種類」に制限することで、係数を保持するメモリセルを1係数あたり2ビット(合計12ビット)にし、相互作用を計算するための回路を11個の排他的論理和回路(5個のXNOR回路3510及び6個のXOR回路3520)と、多数決論理回路3530とだけで実現することができた。これによって、スピンユニット3500の面積を小さくすることに寄与している。スピンユニット3500の面積は図35の構成から明らかな通り、スピン値を保持するための構成要素(メモリセルN)よりも、相互作用のために必要な構成要素(メモリセル対ISx,IUx,ILx,IRx,IDx及びIFx、XNOR回路3510、XOR回路3520、並びに、多数決論理回路3530)が支配的であることが分かる。そのことから、相互作用に関する回路を簡略化することが、スケーラビリティを高める上で重要であることが理解できよう。
ここで、仮に任意の係数を実現するために、ハードウェアを拡張して対応することを試行してみる。一般的に従来型コンピュータ上ではイジングモデルの係数を表わすために、32ビットや64ビットの整数値、ないしは、浮動小数点数が用いられることが多い。これをハードウェアに直接的に実装しようとすると、係数を保持するメモリセルだけで1係数あたり32ビット〜64ビット(合計192〜384ビット)を必要とする。これは、上述の実装と比較して16〜32倍もの物量増加になる。換言すれば、スケーラビリティは1/16〜1/32に悪化する。さらに、相互作用を計算するための回路については、上述の例では係数の制限を利用して回路を簡単化していたのに対して、汎用的な加算器、乗算器、及び、比較器を必要とする。この演算器による物量増加の影響は、メモリセルの増加分よりも大きくなることが容易に考えられる。そのため全体として,物量増加は16〜32倍よりも大きくなる。
このことからも、ハードウェアのみで任意の係数のイジングモデルを解こうとすることが賢明な策ではないことが理解できる。そこで、本実施の形態で述べたように、係数に制限のあるハードウェアの使い方を工夫することで、任意の係数のイジングモデルを解くことが必要になる。
(1−16)本実施の形態の効果
以上のように、本実施の形態においては、図1について上述したように、原問題110から制限付基底状態探索140−1〜140−kが受付け得る相互作用係数Ji,j及び外部磁場係数hのみからなる複数の副問題130−1〜130−kを生成し、これらの副問題130−1〜130−kの解を解候補150−1〜150−kとして、これら解候補150−1〜150−kに基づいて原問題110の解を生成するようにしているため、ハードウェアやソフトウェア上の制約により、基底状態を探索可能なイジングモデルの係数の値の種類が制限されている場合においても、その種類以外の係数からなるイジングモデルの原問題110の解を求めることができる。かくするにつき、本実施の形態によれば、ハードウェアやソフトウェア上の制約に係わりなく、任意の値の係数を持つイジングモデルの基底状態探索を行うことができる。
(2)第2の実施の形態
本実施の形態では、本発明の課題である、係数の値の種類が限られているイジングモデルの基底状態探索を行う装置ないしは方法を用いて、任意の値の係数を持つイジングモデルの基底状態探索を実現する装置及び方法の他の一例を説明する。
本実施の形態は、副問題生成120と解生成160が第1の実施の形態と異なるため、第1の実施の形態との差分を説明する。
第1の実施の形態では、副問題生成120において、乱数を用いていた(ステップS2005、S2203、S2304及びS2402)。しかし、組み込みシステムなど計算機資源が貧弱な環境では、乱数生成が大きな負荷になることがある。特に、本発明では相互作用係数と外部磁場係数の個数分、乱数を生成しなければならないため、原問題の大きさと副問題の個数に比例して乱数の生成回数が多くなる。
そこで、本実施の形態では、乱数を用いることなく副問題生成120を行う。
図28は、第2の実施の形態の副問題生成120の方法を説明する図である。副問題生成120では、第1の実施の形態と同様に原問題の相互作用係数及び外部磁場係数を正規化し、−1〜+1の値域を持つ実数とする(第1の実施の形態の図6の処理を第2の実施の形態でも同様に行う)。
第1の実施の形態の図6の処理のうち、ステップS605の動作が第2の実施の形態では異なる。図28は、第2の実施の形態においてステップS605で行うべき処理を示している。
図28では、正規化された原問題の係数に、UT(Upper Threshold)とLT(Lower Threshold)という2種類の閾値を設けて、原問題の係数と閾値を比較することで、副問題の係数を生成する。
具体的には、原問題の閾値がUTを超える場合には、副問題の係数を+1とする。また、原問題の閾値がLTを下回る場合には、副問題の係数を−1とする。どちらでもない場合、つまり原問題の係数がLT以上UT以下であるときには、副問題の係数を0とする。
図29は、上述の処理を示したフローチャートである。図29のフローチャートは図6のステップS605に対応し、図6のステップS603で決定された副問題数の回数分実行される。
ステップS2901では、UTとLTを決定する。図29は副問題の回数分実行されるが、その都度異なるUTとLTを用いる。
ステップS2902では、ステップS2901で決定したUTとLTを用いて、原問題の全ての相互作用係数を、+1,0,−1の3値に丸めて、副問題として出力する。
ステップS2903では、ステップS2901で決定したUTとLTを用いて、原問題の全ての外部磁場係数を、+1,0,−1の3値に丸めて、副問題として出力する。
図12のイジングモデルから図28及び図29の方法で副問題を生成した例を図30及び図31に示す。この例では、副問題数を5として、UTとLTの組を(UT,LT)と表記したときに、副問題3001は(0,0)、副問題3002は(1,1)、副問題3003は(2,2)、副問題3004は(3,3)、副問題3005は(4,4)というように、UTとLTを変化させて副問題3001〜3005を生成している。
図32は副問題3001〜3005それぞれの基底状態を探索した結果(解候補)と、解候補から生成した原問題の解を示している。
第1の実施の形態の図8と同様に、解候補それぞれを原問題のエネルギー関数で評価し、最良の解候補を原問題の解170として出力しても良い。この方法の場合、副問題3001及び副問題3002に対する解候補が原問題での評価が最も良く、解170として選択される。
さらに、第1の実施の形態で述べたように、これらの解候補のスピン配列を、スピン毎に代表値(統計量)を取得して、解170のスピン配列を生成しても良い。図32に最頻値(なお,スピンの値は+1と−1の2値であるから,平均値を取って+1ないしは−1のいずれか近い方に丸めることは,最頻値を求めることと同じである)として示したスピン配列は、副問題3001〜3005に対する解候補のスピン配列のスピン毎に、+1と−1のうち多い方を解として採用したものである。この例では、最頻値を取っても、原問題のエネルギー関数で最良の評価を得ることが出来ている。
その他に、単に最頻値を取るのではなく、スピンの値である+1/−1の個数によって、解のスピンの値を決める方法もある。図32で個数1、個数2、個数3、個数4、個数5と示した行は、副問題3001〜3005に対する解候補のスピン配列のスピン毎に、値が−1となっている個数を計数し、例えば個数2の場合には、−1の個数が2個以上の場合には−1、2個より少ない場合には+1というようにスピン配列を決めたものである。
以上の本実施の形態によれば、乱数を用いることなく副問題生成120を行うことができるため、第1の実施の形態により得られる効果に加えて、より簡易に副問題生成120を行い得、ひいては原問題110の解をより容易に生成し得るという効果をも得ることができる。
(3)他の実施の形態
なお上述の第1及び第2の実施の形態においては、ハードウェアやソフトウェア上の制約により、基底状態を探索可能なイジングモデルの係数が制限される場合について述べたが、本発明はこれに限らず、ハードウェアやソフトウェア上の制約により、基底状態を探索可能なイジングモデルの係数の種類が制限される場合についても同様に対応することができる。
この場合には、図1の副問題生成120において、原問題110から基底状態を探索可能な種類の係数をもつイジングモデルから構成される複数の副問題130−1〜130−kを生成し、これら副問題130−1〜130−kの解を解候補150−1〜150−kとして、この後、第1及び第2の実施の形態の手順により原問題110の解を求めるようにすれば良い。
本発明は、イジングモデルの基底状態探索を行う情報処理装置に広く適用することができる。
110……原問題、120……副問題生成、130−1〜130−k,3001〜3005……副問題、140−1〜140−k……制限付基底状態探索、150−1〜150−k……解候補、160……解生成、170……解、200,2500……情報処理装置、210……CPU、261……副問題生成コマンド、262……基底状態探索アクセラレータ、263……解生成コマンド、264……基底状態探索プログラム、265,1300……原問題データ、266−1〜266−k,1401〜1403……副問題データ、267−1〜267−k,1601〜1603……解候補データ、268,1701,1801……解データ、270……基底状態探索アクセレータ、280−1,280−2……イジングチップ、2520……制限付基底状態探索コマンド、3410……スピンアレイ、3500……スピンユニット、N,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1……メモリセル、ISx,IUx,ILx,IRx,IDx,IFx……メモリセル対、3510……XNOR回路、3520……XOR回路、3530……多数決論理回路、3540……OR回路、3550……セレクタ回路、σ,σ……スピン、h……外部磁場係数、Ji,j,Jj,i……相互作用係数。

Claims (15)

  1. 所定の複数の種類の係数の値を持つイジングモデルである原問題のエネルギーを最少とするスピン配列である基底状態又は当該基底状態の近似解を前記原問題の解として算出する情報処理装置において、
    前記原問題から1個以上の前記イジングモデルである副問題を生成する副問題生成部と、
    記副問題生成部により生成された各前記副問題の前記基底状態をそれぞれ探索する基底状態探索部と、
    前記基底状態探索部の探索により得られた各前記副問題の解に基づいて前記原問題の解を生成する解生成部と
    を備え、
    前記副問題生成部は、
    前記原問題の前記イジングモデルの1個以上の係数の値に基づいて、前記複数の種類から選択された1個以上の係数の値を持つ前記イジングモデルの前記副問題を生成する
    ことを特徴とする情報処理装置。
  2. 前記副問題生成部は、
    前記原問題のイジングモデルの前記係数の値をそれぞれ所定範囲内に正規化し、
    当該所定範囲内の乱数を発生させ、
    正規化した前記原問題のイジングモデルの前記係数の値をそれぞれ前記乱数と比較し、
    比較結果に基づいて前記複数の種類から選択した係数の値を、正規化した前記各係数の値に対応する前記副問題のイジングモデルの係数の値として決定する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記副問題生成部は、
    前記原問題のイジングモデルの前記係数の値をそれぞれ所定範囲内に正規化し、
    前記副問題の係数の値の期待値が正規化した前記原問題の係数の値になるように定めた確率を算出し、
    当該所定範囲内の乱数を発生させ、
    正規化した前記原問題のイジングモデルの前記確率をそれぞれ前記乱数と比較し、
    比較結果に基づいて前記複数の種類から選択した係数の値を、正規化した前記各係数の値に対応する前記副問題のイジングモデルの係数の値として決定する
    ことを特徴とする請求項1に記載の情報処理装置。
  4. 前記副問題生成部は、
    前記原問題のイジングモデルの前記係数の値をそれぞれ所定範囲内に正規化し、
    正規化した前記原問題のイジングモデルの前記係数の値を、予め設定された少なくとも1つ以上の閾値と比較し、
    比較結果に基づいて前記複数の種類から選択した係数の値を、正規化した前記各係数の値に対応する前記副問題のイジングモデルの係数の値として決定する
    ことを特徴とする請求項1に記載の情報処理装置。
  5. 前記副問題生成部は、
    前記副問題ごとに異なる前記閾値を用いる
    ことを特徴とする請求項4に記載の情報処理装置。
  6. 前記解生成部は、
    各前記副問題の解をそれぞれ前記原問題のエネルギー関数で評価し、
    最もエネルギーの小さい前記副問題の解を前記原問題の解とする
    ことを特徴とする請求項1に記載の情報処理装置。
  7. 前記解生成部は、
    前記副問題の解のスピン毎の統計量を前記原問題の解とする
    ことを特徴とする請求項1に記載の情報処理装置。
  8. 前記解生成部は、
    各前記副問題の解の対応するスピン配列の最頻値を取って前記原問題の解を生成する
    ことを特徴とする請求項1に記載の情報処理装置。
  9. 所定の複数の種類の係数の値を持つイジングモデルである原問題のエネルギーを最少とするスピン配列である基底状態又は当該基底状態の近似解を前記原問題の解として算出する情報処理装置において実行される情報処理方法であって、
    前記情報処理装置が、前記原問題から1個以上の前記イジングモデルである副問題を生成する第1のステップと、
    前記情報処理装置が、生成した各前記副問題の前記基底状態をそれぞれ探索する第2のステップと、
    前記情報処理装置が、探索により得られた各前記副問題の解に基づいて前記原問題の解を生成する第3のステップと
    を備え、
    前記第1のステップでは、
    前記原問題の前記イジングモデルの1個以上の係数の値に基づいて、前記複数の種類から選択された1個以上の係数の値からなる前記イジングモデルの前記副問題を生成する
    ことを特徴とする情報処理方法。
  10. 前記第1のステップでは、
    前記原問題のイジングモデルの前記係数の値をそれぞれ所定範囲内に正規化し、
    当該所定範囲内の乱数を発生させ、
    正規化した前記原問題のイジングモデルの前記係数の値をそれぞれ前記乱数と比較し、
    比較結果に基づいて前記複数の種類から選択した係数の値を、正規化した前記各係数の値に対応する前記副問題のイジングモデルの係数の値として決定する
    ことを特徴とする請求項9に記載の情報処理方法。
  11. 前記第1のステップでは、
    前記原問題のイジングモデルの前記係数をそれぞれ所定範囲内に正規化し、
    前記副問題の係数の値の期待値が正規化された前記原問題の係数の値になるように定めた確率を算出し、
    当該所定範囲内の乱数を発生させ、
    正規化した前記原問題のイジングモデルの前記確率をそれぞれ前記乱数と比較し、
    比較結果に基づいて前記複数の種類から選択した係数の値を、正規化した前記各係数の値に対応する前記副問題のイジングモデルの係数の値として決定する
    ことを特徴とする請求項9に記載の情報処理方法。
  12. 前記第1のステップでは、
    前記原問題のイジングモデルの前記係数をそれぞれ所定範囲内に正規化し、
    正規化した前記原問題のイジングモデルの前記係数を、予め設定された少なくとも1つ以上の閾値と比較し、
    比較結果に基づいて前記複数の種類から選択した係数の値を、正規化した前記係数の各値に対応する前記副問題のイジングモデルの係数の値として決定する
    ことを特徴とする請求項9に記載の情報処理方法。
  13. 前記第1のステップでは、
    前記副問題ごとに異なる前記閾値を用いる
    ことを特徴とする請求項12に記載の情報処理方法。
  14. 前記第3のステップでは、
    各前記副問題の解をそれぞれ前記原問題のエネルギー関数で評価し、
    最もエネルギーの小さい前記副問題の解を前記原問題の解とする
    ことを特徴とする請求項9に記載の情報処理方法。
  15. 前記第3のステップでは、
    前記副問題の解のスピン毎の統計量を前記原問題の解とする
    ことを特徴とする請求項9に記載の情報処理方法。
JP2014066874A 2014-03-27 2014-03-27 情報処理装置及び情報処理方法 Active JP6445246B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014066874A JP6445246B2 (ja) 2014-03-27 2014-03-27 情報処理装置及び情報処理方法
US14/645,815 US10089421B2 (en) 2014-03-27 2015-03-12 Information processing apparatus and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014066874A JP6445246B2 (ja) 2014-03-27 2014-03-27 情報処理装置及び情報処理方法

Publications (2)

Publication Number Publication Date
JP2015191340A JP2015191340A (ja) 2015-11-02
JP6445246B2 true JP6445246B2 (ja) 2018-12-26

Family

ID=54190744

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014066874A Active JP6445246B2 (ja) 2014-03-27 2014-03-27 情報処理装置及び情報処理方法

Country Status (2)

Country Link
US (1) US10089421B2 (ja)
JP (1) JP6445246B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6021864B2 (ja) * 2014-08-29 2016-11-09 株式会社日立製作所 半導体装置および情報処理装置
JP6291129B2 (ja) * 2015-03-27 2018-03-14 株式会社日立製作所 計算機、及び演算プログラム
JP6820875B2 (ja) 2018-03-09 2021-01-27 株式会社東芝 計算装置
JP6570698B1 (ja) * 2018-05-18 2019-09-04 株式会社リクルートコミュニケーションズ 設定装置、設定方法及び設定プログラム
US20190391807A1 (en) * 2018-06-20 2019-12-26 Fujitsu Limited Computer-readable recording medium storing optimization problem computing program and optimization problem computing system
JP7063211B2 (ja) * 2018-09-19 2022-05-09 富士通株式会社 最適化問題演算プログラム、最適化問題演算方法および最適化問題演算装置
JP7196489B2 (ja) * 2018-09-19 2022-12-27 富士通株式会社 最適化問題演算プログラム、最適化問題演算方法および最適化問題演算装置
JP7087871B2 (ja) * 2018-09-19 2022-06-21 富士通株式会社 最適化問題演算プログラム、最適化問題演算方法および最適化問題演算装置
JP7100257B2 (ja) * 2018-10-04 2022-07-13 富士通株式会社 最適化装置及び最適化装置の制御方法
JP7187972B2 (ja) * 2018-10-24 2022-12-13 富士通株式会社 装置、方法およびプログラム
JP7219402B2 (ja) 2019-06-27 2023-02-08 富士通株式会社 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP7339539B2 (ja) * 2020-01-15 2023-09-06 富士通株式会社 最適化装置、最適化装置の温度設定方法及び最適化装置の温度設定プログラム
JP2021125172A (ja) * 2020-02-10 2021-08-30 富士通株式会社 最適化装置、最適化プログラム、及び最適化方法
JP7417078B2 (ja) * 2020-02-27 2024-01-18 富士通株式会社 情報処理装置、情報処理方法およびプログラム
JP2021149796A (ja) 2020-03-23 2021-09-27 富士通株式会社 情報処理装置、特定方法および特定プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09300180A (ja) 1996-05-20 1997-11-25 Sumitomo Metal Ind Ltd 組合わせ方法及び組合わせ装置
JP2004133802A (ja) 2002-10-11 2004-04-30 Osaka Industrial Promotion Organization 問題分割方法、最適化方法、問題分割装置、最適化装置、及びコンピュータプログラム
WO2008028290A1 (en) * 2006-09-06 2008-03-13 D-Wave Systems Inc. Method and system for solving integer programming and discrete optimization problems using analog processors
JP5354233B2 (ja) 2011-03-01 2013-11-27 大学共同利用機関法人情報・システム研究機構 イジングモデルの量子計算装置及びイジングモデルの量子計算方法
JP2012217518A (ja) * 2011-04-05 2012-11-12 Hitachi Ltd 人間行動分析システム及び方法

Also Published As

Publication number Publication date
US10089421B2 (en) 2018-10-02
US20150278408A1 (en) 2015-10-01
JP2015191340A (ja) 2015-11-02

Similar Documents

Publication Publication Date Title
JP6445246B2 (ja) 情報処理装置及び情報処理方法
Sarwar et al. Incremental learning in deep convolutional neural networks using partial network sharing
Salamat et al. F5-hd: Fast flexible fpga-based framework for refreshing hyperdimensional computing
Sanders et al. Benchmarking for graph clustering and partitioning
Judd et al. Reduced-precision strategies for bounded memory in deep neural nets
JP5864684B1 (ja) 半導体装置
JP6295325B2 (ja) 半導体装置及び情報処理システム
WO2016025357A2 (en) Distributed stage-wise parallel machine learning
JP2016051314A (ja) 半導体装置
US9466346B2 (en) Semiconductor device and information processing device
US20200090051A1 (en) Optimization problem operation method and apparatus
Říha et al. Massively parallel hybrid total FETI (HTFETI) solver
JP6568222B2 (ja) 半導体システムおよび計算方法
Date et al. Collaborative (cpu+ gpu) algorithms for triangle counting and truss decomposition on the minsky architecture: Static graph challenge: Subgraph isomorphism
JP2011028504A (ja) 多目的最適化設計支援装置、方法、及びプログラム
Sekanina et al. Approximate Circuits in Low-Power Image and Video Processing: The Approximate Median Filter.
JP2011253279A (ja) モデル式生成方法、装置及びプログラム
He et al. A power and area optimization approach of mixed polarity Reed-Muller expression for incompletely specified Boolean functions
Goodrich Simulating parallel algorithms in the MapReduce framework with applications to parallel computational geometry
Gao et al. DPACS: hardware accelerated dynamic neural network pruning through algorithm-architecture co-design
Mittal et al. Design exploration and implementation of simplex algorithm over reconfigurable computing platforms
Guo et al. Boolnet: minimizing the energy consumption of binary neural networks
Li et al. An application-oblivious memory scheduling system for DNN accelerators
Choudhury et al. Classification of cellular automata rules based on their properties
Taniguchi et al. Explicit moving particle simulation method on gpu clusters

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180410

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180530

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: 20181030

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181129

R150 Certificate of patent or registration of utility model

Ref document number: 6445246

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250