(57)【特許請求の範囲】
【請求項１】
相互作用モデルの１つのノードの状態を示す値を記憶する第１のメモリセルと、
前記１つのノードに接続された他のノードからの相互作用を示す相互作用係数を記憶する第２のメモリセルと、
前記第１のメモリセルの値を固定するためのフラグを記憶する第３のメモリセルと、
前記他のノードの状態を示す値及び前記相互作用係数に基づいて、前記１つのノードの次状態を示す値を決定する第１の演算回路と、
前記フラグの値に応じて前記次状態を示す値を前記第１のメモリセルに記録するか否かを決定する第２の演算回路と、
を有するユニットを複数備える半導体装置。
【請求項２】
画像に含まれる複数の画素から、ユーザの指定したシード画素の特性に類似する特性を有する画素を抽出する画像セグメンテーション方法であって、
相互作用モデルの１つのノードの値を記憶するメモリセルと、
該１つのノードに相互作用を及ぼす他のノードからの相互作用係数を記憶するメモリセルと、
前記１つのノードのバイアス係数を記憶するメモリセルと、
前記１つのノード及び他のノードからなる系の状態を示す関数に基づいて、前記１つのノードの次状態を決定し書き換える論理回路と、
を有する単位ユニットを複数有するアレイを用い、
前記画像に含まれる複数の画素を、前記複数の単位ユニットの１つのノードに対応付け、前記１つのノードの所定回数の書換えの後に前記１つのノードの値を読み出し、セグメンテーションの結果とする画像セグメンテーション方法。
【請求項３】
前記１つのノードの所定回数の書換えに際して、前記ユーザの指定したシード画素に対応付けられた１つのノードの書き換えを行わないように制御する、
請求項２記載のセグメンテーション方法。
【請求項４】
前記１つのノードの所定回数の書換えに際して、
前記所定回数のうち第１の期間において、前記ユーザの指定したシード画素に対応付けられた１つのノードの書き換えを行わないように制御し、
前記所定回数のうち前記第１の期間より後の第２の期間において、前記ユーザの指定したシード画素に対応付けられた１つのノードの書き換えを行うように制御する、
請求項３記載のセグメンテーション方法。
【請求項５】
前記１つのノードの所定回数の書換えに際して、前記１つのノードの次状態を所定確率で反転させて書き換える、
請求項２記載のセグメンテーション方法。
【請求項６】
前記１つのノードの所定回数の書換えに際して、
前記所定回数のうち第１の期間において、第１の確率で前記１つのノードの次状態を反転させ、
前記所定回数のうち前記第１の期間より後の第２の期間において、前記第１の確率より低い第２の確率で前記１つのノードの次状態を反転させる、
請求項５記載のセグメンテーション方法。
【請求項７】
前記画像に含まれる複数の画素から、ユーザが第１のシード画素と第２のシード画素を指定し、
前記画像に含まれる複数の画素を、前記複数の単位ユニットの１つのノードに対応付ける際に、
前記第１のシード画素に対応づけられたノードは第１の状態に設定し、
前記第２のシード画素に対応づけられたノードは第２の状態に設定し、
前記１つのノードの所定回数の書換えの後に前記１つのノードの値を読み出し、セグメンテーションの結果とする際に、
前記第１の状態に書き換えられた１つのノードは前記第１のシード画素の属するセグメントに分類し、
前記第２の状態に書き換えられた１つのノードは前記第２のシード画素の属するセグメントに分類する、
請求項２記載の画像セグメンテーション方法。
【請求項８】
前記他のノードからの相互作用係数として、前記他のノードに対応する画素と前記１つのノードに対応する画素の特性の差を示す平滑化項を用い、
前記第１の状態に設定されたノードからの相互作用係数として、前記１つのノードに対応する画素の特性と、前記第１シード画素に対応する特性との類似度を示す第１データ項を用い、
前記１つのノードのバイアス係数として、前記１つのノードに対応する画素の特性と、前記第２シード画素に対応する特性との類似度を示す第２データ項を用いる、
請求項７記載の画像セグメンテーション方法。
【請求項９】
前記平滑化項のとる値は、
前記他のノードに対応する画素と前記１つのノードに対応する画素の特性の差が最小の場合、正の最大値をとり、
前記他のノードに対応する画素と前記１つのノードに対応する画素の特性の差が最大の場合、負の最大値をとり、
前記最大値と最小値の中間値で、ゼロの値をとる、
請求項８記載のセグメンテーション方法。
【請求項１０】
前記他のノードからの相互作用係数として、前記他のノードに対応する画素と前記１つのノードに対応する画素の特性の差を示す平滑化項を用い、
前記１つのノードのバイアス係数として、前記１つのノードに対応する画素の特性と、前記第１シード画素に対応する特性との類似度を示す第１データ項と、前記１つのノードに対応する画素の特性と、前記第２シード画素に対応する特性との類似度を示す第２データ項との差分を示すデータ項を用いる、
請求項７記載の画像セグメンテーション方法。
【請求項１１】
前記平滑化項のとる値は、
前記他のノードに対応する画素と前記１つのノードに対応する画素の特性の差が最小の場合、正の最大値をとり、
前記他のノードに対応する画素と前記１つのノードに対応する画素の特性の差が最大の場合、負の最大値をとり、
前記最大値と最小値の中間値で、ゼロの値をとる、
請求項１０記載のセグメンテーション方法。
【請求項１２】
入力装置、出力装置、記憶装置、第１および第２の処理装置を有する画像処理装置において、
前記第１の処理装置は、
相互作用モデルの注目ノードの値を記憶するメモリセルと、
該ノードに相互作用を及ぼす隣接ノードからの相互作用係数を記憶するメモリセルと、
前記注目ノード及び隣接ノードからなる系の状態を示す関数に基づいて、前記注目ノードの次状態を決定し書き換える論理回路と、
を有する単位ユニットを複数有するアレイを備え、
前記第２の処理装置は、
前記記憶装置によって、前記入力装置から入力された画像を記憶させる機能と、
前記出力装置によって、前記入力装置から入力された画像を表示させる機能と、
前記入力装置によって、前記表示させた画像の所定の領域をシード領域としてユーザに指定させる機能と、
前記画像に含まれる複数の画素を、前記複数の単位ユニットの注目ノードに対応付ける機能と、
前記指定された画像の領域中の画素に対応する注目ノードを、第１の状態に設定する機能と、
前記論理回路によって、前記注目ノードを所定回数書き換える機能と、
前記注目ノードの所定回数の書換えの後に前記注目ノードの値を読み出し、前記第１の状態に設定された注目ノードに対応する画素を、前記ユーザが指定したシード領域に属するものとして前記出力装置に表示する機能を備える、画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、相互作用モデルの計算を行う装置に関するものである。
【背景技術】
【０００２】
現在、コンピュータアーキテクチャの主流はノイマン型である。ノイマン型アーキテクチャの基本動作は命令列の逐次的な実行にある。これまで、コンピュータの性能向上は主としてクロック周波数の向上に依っていた。しかし、近年では頭打ちになったクロック周波数にかわって、マルチコア化による並列処理で性能向上を実現する方策が主流になっている。
【０００３】
マルチコア化による並列処理では、逐次的な命令列から並列実行可能な箇所を見出し（並列性の抽出）、並列実行することで性能向上を図る。しかし、逐次的なアルゴリズムを命令列として書き下したプログラムから並列性を抽出することは容易ではない。
【０００４】
このような状況を鑑みると、今後、コンピュータの性能向上を図っていくためには、従来のように逐次的な命令列の実行を基本とするのではなく、本質的に並列な情報処理に移行していく必要がある。そのためには、従来の逐次的な命令列による問題の記述方法に替わって、本質的に並列な情報処理を実現するために適した問題の記述方法が必要となる。
【０００５】
種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルとは，モデルを構成する複数個の主体（entity）あるいはノード（node）と，ノード間の相互作用，さらに必要であればノード毎のバイアスで定義されるモデルである。物理学や社会科学では種々のモデルが提案されているが，いずれも相互作用モデルの一形態であると解釈できる。また，相互作用モデルの特徴として，ノード間の影響を２個のノード間の相互作用に限定している（２体間の相互作用）ことがあげられる。例えば，宇宙空間にある惑星の力学を考えてみると，惑星というノードの間に万有引力による相互作用がある点で相互作用モデルの一種とも解釈できるが，惑星間の影響は２個の惑星間にとどまらず，３個以上の惑星が互いに影響し合って複雑な挙動を示す（いわゆる３体問題や多体問題と言われる問題になる）。
【０００６】
また，生物学の世界では脳をモデル化したニューラルネットワークが相互作用モデルの一例である。ニューラルネットワークは神経細胞のニューロンを模した人工ニューロンをノードとして，人工ニューロン間はシナプス結合という相互作用を持つ。また，各ニューロン毎にバイアスを与える場合もある。社会科学の世界では，例えば人間のコミュニケーションを考えると，人間というノードと言語や通信で成される相互作用があることは容易に理解できよう。また，各人間には個別にバイアスがあることも想像できる。そのため，人間のコミュニケーションを，相互作用モデルという点で共通なイジングモデル等に模してその特性を明らかにしようという研究もなされている（例えば，特許文献２（特開２０１２−２１７５１８））。
【０００７】
相互作用モデルの一例であるイジングモデルは、磁性体の振舞いを説明するための統計力学のモデルであり、磁性体の研究に用いられている。イジングモデルはサイト（＋１／−１の２値をとるスピン）間の相互作用として定義される。トポロジが非平面グラフになるイジングモデルの基底状態を求めることは、ＮＰ困難問題であることが知られている。イジングモデルは空間方向に広がった相互作用係数で問題を表現するため、本質的な並列性を利用した情報処理を実現できる可能性がある。
【０００８】
ところで、イジングモデルの基底状態を求めることは、前述した通りＮＰ困難問題であるから、ノイマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリスティックを導入して高速化を図るアルゴリズムも提案されているが、ノイマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている。
【０００９】
このような装置として、例えば特許文献１に記載の装置がある。このような装置では、解くべき問題に対応した並列度が必要になってくる。イジングモデルの場合では、基底状態を探索すべきイジングモデルのスピン数に対応して、スピンや相互作用を実現する素子が必要となる。例えば特許文献１に記載の装置ではスピンとレーザーを対応させており、スピン数に比例した数のレーザーが必要となる。すなわち、多数の素子を実現できるスケーラビリティの高さが必要となる。そのため，イジングモデルの基底状態を高速に求める装置は半導体基板上に単位構成要素となる回路を多数個並べたものであることが好ましい。高いスケーラビリティを得るためにはこのような設計方針が有効であることは，現在広く用いられているＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような半導体メモリの例からも明らかであろう。
【００１０】
さらに，このようなイジングモデルの基底状態を高速に探索できる装置を実現する上では，そのアプリケーションも合わせて考えなければならない。また，アプリケーションの特性に応じて，イジングモデルの基底状態探索を行う装置の設計に反映させるなど，アプリケーションと装置の協調設計が重要になってくる。
【００１１】
アプリケーションとしては，従来型のコンピュータでは計算量が多く困難もしくは多大なリソースを要するものが有望である。また，前述したような装置は従来型コンピュータより小型，低消費電力であることも期待できるため，各種機器に組み込んで用いる，いわゆる組み込みシステムへの応用が期待できる。
【００１２】
このような特性を持つアプリケーションとして画像処理がある。画像処理は一般的に計算量が大きい処理が多いため，従来，画像処理向け専用プロセッサを開発して用いるアプローチは多くあった。特に，近年需要が高まっているのが，医療向けの画像処理（これ以降，医用画像処理と述べる）である。例えば診断においては，ＣＴ（Ｃｏｍｐｕｔｅｒ  Ｔｏｍｏｇｒａｐｈｙ）で患者の体内を撮影し，その画像から腫瘍などの患部を抽出するという画像セグメンテーションが必要となる。また，将来的には患者の体内をＣＴで見ながら放射線治療を行うような，医用画像処理をリアルタイムで行う必要性も出てくるであろう。このように，画像セグメンテーションに代表される画像処理を，リアルタイムかつ小型，低消費電力な装置で実現できることは産業上の有用性が高く，前述したようなイジングモデルの基底状態探索を高速に行う装置に期待されるものである。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】国際公開第２０１２／１１８０６４号
【特許文献２】特開２０１２−２１７５１８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
半導体装置の技術を適用して作成した固体素子で、相互作用モデルの計算を行う構成を実現することを目的とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するための、本発明の一側面は半導体装置として提供される。この半導体装置は、相互作用モデルの１つのノードの状態を示す値を記憶する第１のメモリセルと、１つのノードに接続された他のノードからの相互作用を示す相互作用係数を記憶する第２のメモリセルと、第１のメモリセルの値を固定するためのフラグを記憶する第３のメモリセルと、他のノードの状態を示す値及び前記相互作用係数に基づいて、１つのノードの次状態を示す値を決定する第１の演算回路と、フラグの値に応じて前記次状態を示す値を前記第１のメモリセルに記録するか否かを決定する第２の演算回路と、を有するユニットを複数備える。
【００１６】
本発明の他の側面は、画像に含まれる複数の画素から、ユーザの指定したシード画素の特性（特徴）に類似する特性を有する画素を抽出する画像セグメンテーション方法である。この方法は、画像に含まれる複数の画素から、ユーザの指定したシード画素の特性に類似する特性を有する画素を抽出する画像セグメンテーション方法であって、相互作用モデルの１つのノードの値を記憶するメモリセルと、１つのノードに相互作用を及ぼす他のノードからの相互作用係数を記憶するメモリセルと、1つのノードのバイアス係数を記憶するメモリセルと、１つのノード及び他のノードからなる系の状態を示す関数に基づいて、１つのノードの次状態を決定し書き換える論理回路と、を有するユニットを複数有するアレイを用いる。そして、画像に含まれる複数の画素を、複数のユニットの１つのノードに対応付け、１つのノードの所定回数の書換えの後に１つのノードの値を読み出し、セグメンテーションの結果とする。
【００１７】
本発明の他の側面は、入力装置、出力装置、記憶装置、第１および第２の処理装置を有する画像処理装置である。第１の処理装置は、相互作用モデルの注目ノードの値を記憶するメモリセルと、ノードに相互作用を及ぼす隣接ノードからの相互作用係数を記憶するメモリセルと、注目ノード及び隣接ノードからなる系の状態を示す関数に基づいて、注目ノードの次状態を決定し書き換える論理回路と、を有する単位ユニットを複数有するアレイを備える。第２の処理装置は、記憶装置によって、入力装置から入力された画像を記憶させる機能と、出力装置によって、入力装置から入力された画像を表示させる機能と、入力装置によって、表示させた画像の所定の領域をシード領域としてユーザに指定させる機能と、画像に含まれる複数の画素を、複数の単位ユニットの注目ノードに対応付ける機能と、指定された画像の領域中の画素に対応する注目ノードを、第１の状態に設定する機能と、論理回路によって、注目ノードを所定回数書き換える機能と、注目ノードの所定回数の書換えの後に注目ノードの値を読み出し、第１の状態に設定された注目ノードに対応する画素を、ユーザが指定したシード領域に属するものとして出力装置に表示する機能を備える。
【発明の効果】
【００１８】
半導体装置の技術を適用して作成した固体素子で、相互作用モデルを表す関数において、所望の値をとる状態の解の探索を行う構成を実現することができる。
【００１９】
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００２０】
【図１】イジングチップが解くグラフ問題の一例を説明するグラフ図。
【図２】イジングチップが解くグラフ問題の一例のカットの概念を説明するグラフ図。
【図３】イジングチップが解くグラフ問題の一例の最大カットを説明するグラフ図。
【図４】グラフ問題に対応する相互作用モデルの一例を説明するグラフ図。
【図５】グラフ問題に対応する相互作用モデルの一例の解を説明するグラフ図。
【図６】本発明の一実施例であるイジングチップの構成を説明するブロック図。
【図７】本発明の一実施例であるイジングチップを備える情報処理装置の構成を説明するブロック図。
【図８】３次元格子のスピンアレイの構成の一例を説明する斜視図。
【図９】スピンユニット間の相互作用を行う構成例を示す回路図。
【図１０】スピンユニットが有するメモリセルにアクセスするための構成例を示す回路図。
【図１１】３次元格子中のスピンユニットの構成例を説明する斜視図。
【図１２】イジングチップのメモリマップの一例を示す平面図。
【図１３】イジングチップ上のスピンユニットの配置の一例を説明するブロック図。
【図１４】３次元格子のスピンアレイとスピンユニットの対応関係の一例を説明する斜視図。
【図１５】スピンユニット間の相互作用を行う配線の一例を説明する配線図。
【図１６】イジングチップの制御手順の一例を説明するフローチャート。
【図１７】イジングチップの問題定義の構成を示す表図。
【図１８】イジングチップの問題データの構成を示す表図。
【図１９】イジングチップの解データの構成を示す表図。
【図２０】画像セグメンテーションの操作を説明する平面図。
【図２１】画像の画素とイジングモデルのサイトとの関係を示す概念図。
【図２２】画素と対応付けられたイジングモデルでの最小カットを示す概念図。
【図２３】画素と対応付けられたイジングモデルによるセグメンテーション結果を示す概念図。
【図２４】セグメンテーション結果を表示する例を示す平面図。
【図２５】画像セグメンテーション問題のイジングモデルへの適用例を示す斜視図。
【図２６】隣接画素間輝度差と平滑化項出力の例の関係を示すグラフ図。
【図２７Ａ】画像セグメンテーション問題のイジングモデルへの他の適用例を示す斜視図。
【図２７Ｂ】画像セグメンテーション問題のイジングモデルによる解の例を示す概念図。
【図２８】隣接画素間輝度差と平滑化項出力の他の例の関係を示すグラフ図。
【図２９】本発明の一実施例であるイジングチップを備える画像処理装置の構成を説明するブロック図。
【図３０】本発明の一実施例である画像セグメンテーション処理のフロー図。
【図３１】本発明の一実施例である画像セグメンテーション処理画面の平面図。
【図３２Ａ】スピンユニット間の相互作用を行う構成例を示す回路図。
【図３２Ｂ】スピンユニット間の相互作用を行う構成例を示す回路図。
【図３２Ｃ】スピンユニット間の相互作用を行う構成例を示す回路図。
【図３３】イジングチップのスピン初期値定義の構成を示す表図。
【図３４】イジングチップのメモリマップの一例を示す平面図。
【図３５】画像セグメンテーションのためのスピン初期値を設定したイジングチップのメモリ内容例を示す平面図。
【図３６】基底状態探索の処理例を示すフロー図。
【図３７】基底状態探索時間とビット反転確率の関係を示すグラフ図。
【発明を実施するための形態】
【００２１】
物理学の世界で代表的な相互作用モデルの例として，イジングモデルをあげることができる。イジングモデルとは＋１／−１（ないしは上，下など）の２状態を取るスピンをノードとして，２個のスピン間の相互作用を決める相互作用係数と，個々のスピンに対するバイアスである外部磁場係数でモデルが定義される。本実施例では、相互作用モデルの計算を行う手段として、イジングモデルを扱うことができる装置であるイジングチップを例に説明を行う。もっとも、本発明は、相互作用モデルにおいて、モデルを表現する関数の値を所望の値に収束させた際に、当該関数の変数がとる値を計算する技術一般に適用可能なものであり、応用がイジングモデルに限定されるものではない。また、実施例中の装置は便宜的にイジングチップと呼称しているが、イジングモデル以外の相互作用モデルに適用することを妨げるものではない。
【００２２】
本実施例の一例は半導体装置として提供される。この半導体装置は、イジングモデルの所定スピン（注目スピン）の値を記憶するメモリセルと、注目スピンに相互作用を及ぼす隣接スピンからの相互作用係数を記憶するメモリセルと、注目スピンの外部磁場係数を記憶するメモリセルと、注目スピンの値を記憶するメモリセルの値を固定するためのフラグを記憶するメモリセルと、注目スピン及び隣接スピンからなる系のエネルギー関数に基づいて、注目スピンの次状態を決定する論理回路からなるスピンユニットを複数備えている。複数のスピンユニットはアレイ構造を形成している。
【００２３】
本実施例の他の例は、画像に含まれる複数の画素から、ユーザの指定したシード画素の特性（特徴）に類似する特性を有する画素を抽出する画像セグメンテーション方法である。
【００２４】
この方法は、イジングモデルの注目スピンの値を記憶するメモリセルと、スピンに相互作用を及ぼす隣接スピンからの相互作用係数を記憶するメモリセルと、注目スピンの外部磁場係数を記憶するメモリセルと、注目スピン及び隣接スピンからなる系のエネルギー関数に基づいて、注目スピンの次状態を決定し書き換える論理回路と、を有するスピンユニットを複数有するスピンアレイを用いる。
【００２５】
そして、画像に含まれる複数の画素を、複数のスピンユニットの注目スピンに対応付け、注目スピンの所定回数の書換えの後に注目スピンの値を読み出し、セグメンテーションの結果とする。
【００２６】
本実施例の他の例は、入力装置、出力装置、記憶装置、第１および第２の処理装置を有する画像処理装置である。
【００２７】
第１の処理装置は、イジングモデルの注目スピンの値を記憶するメモリセルと、スピンに相互作用を及ぼす隣接スピンからの相互作用係数を記憶するメモリセルと、注目スピンの外部磁場係数を記憶するメモリセルと、注目スピン及び隣接スピンからなる系のエネルギー関数に基づいて、注目スピンの次状態を決定し書き換える論理回路と、を有するスピンユニットを複数有するスピンアレイを備える。
【００２８】
第２の処理装置は、記憶装置によって、入力装置から入力された画像を記憶させる機能と、出力装置によって、入力装置から入力された画像を表示させる機能と、入力装置によって、表示させた画像の所定の領域をシード領域としてユーザに指定させる機能と、画像に含まれる複数の画素を、複数のスピンユニットの注目スピンに対応付ける機能と、指定された画像の領域中の画素に対応する注目スピンを、第１の状態に設定する機能と、論理回路によって、注目スピンを所定回数書き換える機能と、注目スピンの所定回数の書換えの後に前記注目スピンの値を読み出し、第１の状態に設定された注目スピンに対応する画素を、ユーザが指定したシード領域に属するものとして出力装置に表示する機能を備える。
【００２９】
また、第２の処理装置は、入力された画像のデータとシード領域のデータから、セグメンテーションを実行するためのイジングモデルを作成し、イジングモデルを構成するサイト（スピン）と係数をスピンアレイにマッピングする機能を有してもよい。このとき、マップはイジングモデルのトポロジを維持するものとする。
以下、本発明の実施例を図面により説明する。前半で相互作用モデルの基底状態探索を行う、イジングチップの基本構成の実施例を説明する。後半でイジングチップの応用についての実施例を説明する。
【００３０】
ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００３１】
以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略する。
【００３２】
本明細書等における「第１」、「第２」、「第３」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。
【００３３】
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
【００３４】
本明細書で引用した刊行物、特許および特許出願は、そのまま本明細書の説明の一部を構成する。
【００３５】
（１）イジングチップの基本構成
以下で、本発明の相互作用モデルの基底状態探索を行うデバイスの具体的な実施例であるイジングチップについて説明する。イジングチップは、第１〜第７の２値または多値（３値以上を多値と呼ぶ）のメモリセルを備えるユニットを複数備える。ある一つのユニット（注目ユニット）には、他の第１〜第５のユニットの第７のメモリセルのデータが入力され、当該他のユニットからの５つのデータと注目ユニットの第１〜第６のメモリセルのデータに基づいて演算を行い、演算結果に従って注目ユニットの第７のメモリセルのデータを書き換える。このとき、イジングチップは、当該ユニットの第７のメモリセルのデータと、他の第１〜第５のユニットの第７のメモリセルのデータが同時に書き換えられないように制御する。以上の構成のイジングチップに、イジングモデルのトポロジに従って、メモリセルのデータとユニットの接続関係を規定する。
【００３６】
（１−１）解くべき問題のイジングモデルの基底状態探索問題への変換
イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは典型的には、＋１／−１（または０／１、または上／下）の２値をとるスピンと、スピン間の相互作用を示す相互作用係数、および、スピン毎に付随する外部磁場係数で定義される。
【００３７】
イジングモデルは与えられたスピン配列、相互作用係数、および、外部磁場係数から、その時のエネルギーを計算することが出来る。イジングモデルのエネルギー関数Ｅ(σ)は一般的に次式（数１)で表わされる。なお、σｉ，σｊはそれぞれｉ番目とｊ番目のスピンの値、Ｊi,jはｉ番目とｊ番目のスピンの間の相互作用係数、ｈｉはｉ番目のスピンに対する外部磁場係数、＜ｉ，ｊ＞は隣接する２つのサイトの組合せ、σはスピンの配列を表わすものとする。
【００３８】
【数１】
0005922202.tif 000002
【００３９】
イジングモデルの基底状態を求めるというのは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。例えば、因数分解や巡回セールスマン問題など、一見すると磁性体と何ら関係の無い問題をイジングモデルに変換することができる。そして、変換して得られたイジングモデルの基底状態は、元の問題の解に対応している。このことから、イジングモデルの基底状態を探索することのできる装置は、汎用的な用途に利用可能なコンピュータであると言える。
【００４０】
本実施例において、解きたい問題からイジングチップの設定までを通して説明するために、例題としてグラフの最大カット問題を示す。
【００４１】
図１は、イジングチップが解くグラフ問題の一例を説明するグラフ図である。
【００４２】
まず、グラフの意味を説明する。図１のグラフＧ＝（Ｖ，Ｅ）は頂点の集合Ｖ＝｛Ａ，Ｂ，Ｃ，Ｄ｝と、辺の集合Ｅ＝｛ａ，ｂ，ｃ，ｄ，ｅ，ｆ｝から構成される。各辺は重み係数を持っており、ａ，ｂ，ｃ，ｄ，ｅ，ｆと書いたときにその重み係数を表わすものとする。
【００４３】
図２に示すように、このグラフの頂点Ｖを２つの部分集合Ｖ’とＶ’＼Ｖに分割することをカットと呼ぶ。Ｖ’＼ＶはＶからＶ’を除いた集合を示す。ここで、分割されたＶ’とＶ’＼Ｖの間を跨っている辺（図２の例ではｃ，ｄ，ｅ，ｆ）をカットを跨いでいるエッジ、もしくは、カットエッジと呼ぶ。重みが無いグラフの場合にはカットエッジの本数、図２のように重み付きのグラフの場合にはカットエッジの重みの総和を、カットの大きさと呼ぶ。図２の例では、カットの大きさはｃ＋ｄ＋ｅ＋ｆである。なお、図１、及び、図２は無向グラフの例であるが、有向グラフに拡張することも出来る。
【００４４】
最大カット問題とは、グラフＧ＝（Ｖ，Ｅ）を与えられた時、カットの大きさを最大化するカットを求めることである。換言すれば、カットの大きさを最大化するように、頂点の集合ＶをＶ’とＶ’＼Ｖにグループ分けすることと言っても良い。
【００４５】
図３に最大カット問題の具体的な例を示す。この例では頂点ＶをＶ’＝｛Ａ，Ｂ｝とＶ’＼Ｖ＝｛Ｃ,Ｄ｝に分けるようにカットした時に、カットの大きさｗ（Ｖ’）＝２となり、このグラフにおける最大カットとなる。
【００４６】
図２に戻ってグラフのカットとイジングモデルの関係について説明する。図２のグラフでは、カットの大きさｗ（Ｖ’）＝ｃ＋ｄ＋ｅ＋ｆである。ここで、図２のグラフをイジングモデルと見なすと、辺Ｅ＝｛ａ，ｂ，ｃ，ｄ，ｅ，ｆ｝の重みは、イジングモデルの相互作用係数となる。そして、頂点Ｖ＝｛Ａ，Ｂ，Ｃ，Ｄ｝はイジングモデルではそれぞれ＋１／−１の２値の状態を持つスピンとなる。ここで、カットした頂点Ｖ’に属する頂点は＋１のスピン、Ｖ’＼Ｖに属する頂点は−１のスピンとする。つまり、Ａ＝＋１，Ｂ＝＋１，Ｃ＝−１，Ｄ＝−１とする。このときのイジングモデルのエネルギーは、（数１）に示したエネルギー関数に沿って計算すると、−（ａ＋ｂ−ｃ−ｄ−ｅ−ｆ）＝−ａ−ｂ＋ｃ＋ｄ＋ｅ＋ｆとなる。ところで、カットの大きさｗ（Ｖ’）＝ｃ＋ｄ＋ｅ＋ｆであることから、このエネルギー関数は（数２）のように書くことが出来る。
【００４７】
【数２】
0005922202.tif 000003
【００４８】
図２の例に沿って具体的に計算してみると、−（（ａ＋ｂ＋ｃ＋ｄ＋ｅ＋ｆ）−２（ｃ＋ｄ＋ｅ＋ｆ））＝−（ａ＋ｂ−ｃ−ｄ−ｅ−ｆ）となることが確かめられよう。（数２）を見るとカットの大きさｗ（Ｖ’）を最大化すれば、エネルギーＥ（σ）も大きくなることが分かる。つまり、カットの大きさを最大化すると、イジングモデルのエネルギーは最大化される。逆に、カットの大きさを最小化すると、イジングモデルのエネルギーは最小化される。つまり、イジングモデルの基底状態探索は、最小カットを求めることに対応している。そこで、最小カットを求めるためには、最大カット問題の重みの符号を全て反転させることで、最小カットを求めることに変換する。
【００４９】
図４に図３に示した最大カット問題を、イジングモデルの基底状態探索問題に変換した例を示す。図４の各辺についている相互作用係数ＪＡＢ、ＪＡＣ、ＪＡＤ、ＪＢＣ、ＪＢＣ、ＪＣＤを見ると、図３の重みの符号を反転したものになっている。これが前述した最大カット問題から最小カット問題への変換に対応する。
【００５０】
図５に、図４のイジングモデルの基底状態を探索し、エネルギーが最小となるようにスピンσＡ，σＢ，σＣ，σＤを決定したものを示す。なお、図５の例ではσＡ＝＋１，σＢ＝＋１，σＣ＝−１，σＤ＝−１だが、イジングモデルでは全てのスピンの状態を反転させたものも同じエネルギーとなるので、σＡ＝−１，σＢ＝−１，σＣ＝＋１，σＤ＝＋１も基底状態となる。図５の例をみると、カットＶ’に属する頂点はスピンの値が＋１となり、Ｖ’＼Ｖに属する頂点はスピンの値が−１となっている。このように、イジングモデルの基底状態探索を行い、スピンの値で頂点をグループ分けすることで、最大カット、または、最小カットを実現することができるのである。
【００５１】
（１−２）イジングチップの構成
次に、図４に示したイジングモデルの基底状態探索を実現する装置であるイジングチップと、その制御方法を示す。ここでは、３次元格子のイジングモデルの基底状態探索を実現する装置の例を示す。しかし、本発明は３次元格子のイジングモデルに限られるものではなく、任意のトポロジ、任意のスピン数に対して適用可能である。
【００５２】
図６は、本実施例のイジングチップ１００の構成図の例である。イジングチップ１００はスピンアレイ１１０、Ｉ／Ｏドライバ１２０、Ｉ／Ｏアドレスデコーダ１３０、および、相互作用アドレスデコーダ１４０から構成される。
【００５３】
本実施例ではイジングチップ１００は現在広く用いられているＣＭＯＳ集積回路として実装されることを想定して説明するが、他の固体素子でも実現可能である。本実施例では、スピンアレイ１１０は半導体メモリアレイで構成されている。メモリの種類は問わないが、ここでは高速動作可能なＳＲＡＭ（Ｓｔａｔｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）を用いた例で説明する。イジングチップ１００は、スピンアレイ１１０にリード／ライトを行うための、ＳＲＡＭ互換インタフェースによって駆動可能である。ＳＲＡＭ互換インタフェースは、アドレスバス１９０、データバス１９１、Ｒ／Ｗ制御線１９３、および、Ｉ／Ｏクロック１９２を含む。
【００５４】
イジングチップ１００では、イジングモデルのスピンσｉ、相互作用係数Ｊi,j、および、外部磁場係数ｈｉを、全てスピンアレイ１１０内のメモリセルに記憶する情報で表現する。これらの値のスピンアレイのメモリセルへのリード／ライトは、ＳＲＡＭ互換インタフェースで行う。
【００５５】
基底状態を探索すべきイジングモデルをイジングチップ１００に設定するために、メモリセルにはアドレスが付与されている。また、スピンアレイ１１０のスピンσｉ、相互作用係数Ｊi,j、および、外部磁場係数ｈｉは、メモリセルのアドレスに対応付けられている。任意のアドレスのメモリセルに情報をリード／ライトする手法は、公知の半導体メモリの制御技術と同様である。
【００５６】
なお、ＳＲＡＭ互換インタフェースを構成するアドレスバス１９０、データバス１９１、および、Ｒ／Ｗ制御線１９３は、Ｉ／Ｏクロック１９２に入力されるクロックに同期して動作する。但し、本発明においてインタフェースが同期式である必要性は無く、非同期式のインタフェースでも良い。本実施例では、同期式のインタフェースであるという前提で説明を行う。
【００５７】
また、イジングチップ１００は基底状態探索を行うために、スピンアレイ１１０の内部でスピン間の相互作用を実現する。ここで、相互作用とは、スピンアレイ１１０のメモリセルの値を読み出し、読み出した値からエネルギーを計算し、エネルギーが小さくなるようなスピンの値を決定し、決定したスピンの値をメモリセルに書き込む一連の処理をいう。
【００５８】
この相互作用を外部から制御するのが相互作用制御インタフェースであり、具体的には相互作用を行うスピン群を指定するアドレスを相互作用アドレス１８０で入力し、相互作用クロック１８１に入力されるクロックに同期して相互作用を行う。
【００５９】
なお、相互作用は必ずしもクロック同期回路で実現される必要はなく、非同期回路であっても構わない。この場合、相互作用クロック１８１の役割はクロックの入力ではなく、相互作用の実行を許可するイネーブル信号であるものとする。相互作用制御インタフェースについても必ずしも同期式である必要はなく非同期式のインタフェースでも良いが、本実施例では同期式のインタフェースを用い、相互作用が相互作用クロック１８１に同期して行われるという前提で説明を行う。
【００６０】
図６の乱数発生器１５０、ビット調整期１５１、乱数発生クロック１６０については後述する。また、相互作用アドレスデコーダ１４０についても詳細を後述する。
【００６１】
（１−３）イジングチップを備えた情報処理装置の構成
このイジングチップ１００を１個、または、複数個用いて情報処理を実現するが、そのためには前述したＳＲＡＭインタフェースを制御しなければならない。
【００６２】
図７は図６のイジングチップを制御する情報処理装置の構成の一例を説明する図である。この例では、イジングチップ１００は情報処理装置２００の一部として利用される。
【００６３】
情報処理装置２００の典型例としては、現在一般的に用いられているパーソナルコンピュータに、イジングチップ１００で構成されたアクセラレータを装着したものである。情報処理装置２００は、中央処理装置（ＣＰＵ）２１０、一時メモリ（ＲＡＭ）２２０、記憶装置（ＨＤＤ）２６０、を有し、これらがシステムバス２３０で結合されている。
【００６４】
加えて、システムバス２３０にイジングチップコントローラ２５０が接続され、その先に１個ないしは複数個のイジングチップ（図７の例では、２個のイジングチップ１００−１、及び、イジングチップ１００−２を有する。これ以降、２個のイジングチップを特に区別する必要の無いときには、単にイジングチップ１００と称する。）を持つ。このイジングチップコントローラ２５０とイジングチップ１００がアクセラレータに相当するものであり、例えばＰＣＩ Ｅｘｐｒｅｓｓ（登録商標）のようなペリフェラル拡張用インタフェースに挿入して使う拡張カードの形態を取ることができる。
【００６５】
イジングチップコントローラ２５０はシステムバス２３０（例えばＰＣＩ Ｅｘｐｒｅｓｓ（登録商標）やＱＰＩ）のプロトコルを、イジングチップ１００のインタフェースに合せて変換するものである。情報処理装置２００のＣＰＵ２１０上で動作するソフトウェアは、一般的には特定のアドレスに対してリード／ライトを行うことで（いわゆるＭＭＩＯ、Ｍｅｍｏｒｙ Ｍａｐｐｅｄ Ｉ／Ｏ）、イジングチップコントローラ２５０を経由して、イジングチップ１００を制御することが出来る。
【００６６】
図７の情報処理装置２００でイジングチップ１００に問題を解かせようとする場合には、例えばＨＤＤ２６０に問題データを格納しておく。また、問題データをイジングモデルの基底状態探索問題に変換するためのプログラムやイジングチップ１００を制御するためのプログラムが、ＲＡＭ２２０に格納され、ＣＰＵ２１０で実行される。
【００６７】
（１−４）イジングモデルの構造
イジングチップ１００内のスピンアレイ１１０は、イジングモデルに対応し、これをシミュレートするものである。スピンアレイ１１０は、１個のスピン（注目スピン）とそれに付随する相互作用係数、及び、外部磁場係数の保持と、基底状態探索処理を実現するスピンユニットを基本構成単位としている。
【００６８】
図８はスピンユニット３００を複数個並べることで、３次元格子状のトポロジを持つイジングモデルを構成する例を示している。図８の例は、３（Ｘ軸方向）×３（Ｙ軸方向）×２（Ｚ軸方向）の大きさの３次元格子である。
【００６９】
座標軸の定義は図示した通り、図面右方向をＸ軸、図面下方向をＹ軸、図面奥行き方向をＺ軸としている（以下の図面でも同様）。この座標軸は実施例の説明上便宜的に必要なだけであり、発明とは関係しない。３次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図８の３次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数５のスピン（頂点）が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数６が必要となる。
【００７０】
図８に示す１個のスピンユニット３００は隣接するスピン（例えば隣接するスピンが５個の場合）σj，σｋ，σｌ，σｍ，σｎの値が入力される。また、スピンユニット３００はスピンσｉと外部磁場係数ｈｉに加え、前記した隣接するスピンとの相互作用係数であるＪj,i，Ｊk,i，Ｊl,i，Ｊm,i，Ｊn,i（隣接する５スピンとの相互作用係数）を保持するメモリセルを有している。
【００７１】
ところで、イジングモデルは一般的に無向グラフで表現される相互作用を有している。前記した（数１）では、相互作用を表わす項として、Ｊi,j×σｉ×σｊがあるが、これはｉ番目スピンからｊ番目スピンへの相互作用を示している。この時、一般的なイジングモデルではｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を区別することはない。つまり、Ｊi,jとＪj,iは同一である。しかし、本発明のイジングチップ１００では、このイジングモデルを有向グラフに拡張し、ｉ番目スピンからｊ番目スピンへの相互作用と、ｊ番目スピンからｉ番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
【００７２】
そのため、１個のスピンユニット３００をｉ番目スピンσｉを含むユニットと考えた時に、このスピンユニットが保持する相互作用係数であるＪj,i，Ｊk,i，Ｊl,i，Ｊm,i，Ｊn,iは、隣接するｊ番目、ｋ番目、ｌ番目、ｍ番目、ｎ番目のスピンσj，σｋ，σｌ，σｍ，σｎから、ｉ番目スピンσｉへの相互作用を決めるものである。
【００７３】
このことは、図８において、スピンユニット３００に含まれている相互作用係数が対応する矢印（相互作用）が、図示されているスピンユニット３００の外部のスピンから、スピンユニット３００の内部のスピンに向かっていることに対応している。
【００７４】
（１−５）スピンユニットの回路構成
図８で示されたイジングモデルの基底状態を求めるため、スピンユニット３００を固体素子で構成する。本実施例では、半導体メモリおよび論理回路で構成されたスピンユニット３００を複数個並べて、スピンアレイ１１０を構成する。スピンユニット３００の構成の一例を図９と図１０を用いて説明する。
【００７５】
図９は、スピンユニットの回路構成例について説明する図である。図９には、スピンユニット間の相互作用を実現するための回路を図示している。
【００７６】
図１０は、図９の構成において、スピンユニットが有するメモリセルにイジングチップ１００外からアクセスするためのインタフェースである、ワード線とビット線に注目して図示したものである。
【００７７】
１個のスピンユニット３００は、図９と図１０の双方の構成を備えるが、配線の接続関係を理解しやすくするため、便宜上図９と図１０に分けて説明している。
【００７８】
なお、図９の相互作用を実現するための回路において図示されているインタフェースであるＥＮ，ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦ，Ｎを、複数のスピンユニット間でどのように結線するかについては、後に図１５を参照して説明する。また、図１０のワード線及びビット線を複数のスピンユニット間でどのように結線するかについては、後に図１３を参照して説明する。
【００７９】
スピンユニット３００は、イジングモデルのスピンσｉ、相互作用係数Ｊj,i、……Ｊn,iおよび、外部磁場係数ｈｉを保持するために、１ビットのメモリセルを複数個備えている。この１ビットのメモリセルは図９、図１０中に、Ｎ（７０１），ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１（以上７０２）として図示されているものである。なお、ＩＳ０とＩＳ１、ＩＵ０とＩＵ１、ＩＬ０とＩＬ１、ＩＲ０とＩＲ１、ＩＤ０とＩＤ１、および、ＩＦ０とＩＦ１はそれぞれ２個１組で役割を果たすものであるため、それぞれまとめてＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，および、ＩＦｘと略記する。
【００８０】
スピンユニット３００が有する各メモリセルの構造の一例としては、公知のＳＲＡＭメモリのセルを利用することができる。すなわち、メモリセルはＣＭＯＳインバータ２個で構成されるデータ保持部を有する。インバータと直列に接続されるパスゲートトランジスタのゲートをワード線で制御し、ソース・ドレイン経路をビット線に接続することで、データ保持部へのデータ読み書きを実現する。もっとも、メモリセル構造はこれに限られず、少なくとも２値を記憶できる構成であればよい。例えば、ＤＲＡＭやフラッシュメモリのような他のメモリを用いることができる。
【００８１】
図９の例では、各メモリセルは１ビット格納できるＳＲＡＭメモリセルとしている。しかし、多値化したメモリセルを用いてもよい。多値化したメモリセルは、物理的に１つのメモリセルを用いてもよいし、複数の１ビットメモリセルを用いて複数ビットを格納できるように構成してもよい。メモリセルを多値化すると、使用できる係数の値の自由度が広がる。一方、回路規模や処理時間は拡大する。したがって、解くべき問題の種類や用途に応じて、適切なメモリを選択すればよい。
【００８２】
ここで、スピンユニット３００はｉ番目のスピンを表現するものとして説明を行う。メモリセルＮはスピンσｉを表現するためのメモリセルでありスピンの値を保持する。スピンの値はイジングモデルでは＋１／−１（＋１を上、−１を下とも表現する）であるが、これをメモリセルの２値である１／０に対応させる。本明細書では、＋１を１、−１を０に対応させることにするが、逆の対応でもかまわない。
【００８３】
図１１を用いて、図９および図１０のスピンユニット３００が有するメモリセルと、図８に示したイジングモデルのトポロジとの対応関係を示す。ＩＳｘは外部磁場係数を表現する。また、ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘはそれぞれ相互作用係数を表現する。ＩＵｘは上側のスピン（Ｙ軸方向で−１）、ＩＬｘは左側のスピン（Ｘ軸方向で−１）、ＩＲｘは右側のスピン（Ｘ軸方向で＋１）、ＩＤｘは下側のスピン（Ｙ軸方向で＋１）、ＩＦｘは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）との相互作用係数を示している。また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット３００は最大で５個のスピンと接続される。
【００８４】
本実施例のイジングチップ１００では、外部磁場係数、及び、相互作用係数は、＋１／０／−１の３値に対応する。そのため、外部磁場係数、および、相互作用係数を表わすためには、少なくともそれぞれ２ビットのメモリセルが必要となる。図９、図１０で示すように、ＩＳｘ，ＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘは、末尾の数字が０と１の２つのメモリセル（例えばＩＳｘの場合にはＩＳ０とＩＳ１）の組合せで、＋１／０／−１の３値を表現する。例えば、ＩＳｘの場合には、ＩＳ１で＋１／−１を表現し、ＩＳ１が１の時は＋１，０の時には−１を表現する。これに加えて、ＩＳ０が０の時には外部磁場係数を０と見なし、ＩＳ０が１の時にはＩＳ１で決まる＋１／−１のいずれかを外部磁場係数とする。外部磁場係数が０の時は外部磁場係数をディセーブルしていると考えれば、ＩＳ０は外部磁場係数のイネーブルビットであると言うことができる（ＩＳ０＝１の時に、外部磁場係数がイネーブルされる）。相互作用係数を表現するＩＵｘ，ＩＬｘ，ＩＲｘ，ＩＤｘ，ＩＦｘも同様に係数とビットの値を対応させている。
【００８５】
図１０はスピンユニット３００のメモリセルと、ワード線及びビット線の関係を示す図である。
【００８６】
スピンユニット３００内のメモリセルＮ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１は、それぞれイジングチップ１００の外部からリード／ライト可能でなければならない。そのために、図１０に示すように、スピンユニット３００はビット線４１０とワード線４２０をそれぞれ有している。先に述べたように、図１０では末尾の数字が０と１の２つのメモリセルのセットで、＋１／０／−１の３値を表現しているが、４値以上の係数を表現したい場合には、セットを構成する１ビットメモリセルの数を増やし、ビット線方向に追加すればよい。
【００８７】
スピンユニット３００は、半導体基板上にタイル状に並べてビット線４１０とワード線４２０を接続する。図６に示すＩ／Ｏアドレスデコーダ１３０とＩ／Ｏドライバ１２０で駆動、制御、読み出しすることで、一般的なＳＲＡＭと同様に、スピンユニット３００内のメモリセルをイジングチップ１００のＳＲＡＭ互換インタフェースでリード／ライトすることが出来る。
【００８８】
以上の構成により、図８に示した３×３×２の３次元格子イジングモデルを、イジングチップ１００上のメモリにマッピングすることができる。
【００８９】
図１２にイジングチップ１００のメモリマップ２０００の例を示す。図８のイジングモデルに対応した、１８個のサイトに対応する１８個のブロックを示している。各ブロックは、図９に示した、Ｎ，ＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１に対応する１３個のビットを含む。
【００９０】
（１−６）スピンアレイ内のスピンユニット配置
図１３は、イジングチップ１００上のスピンユニット３００の配置の一例を説明する図である。スピンアレイ１１０の構成を、半導体装置としてのレイアウトの観点から説明している。
【００９１】
図１４は図８のスピンアレイに、スピンユニット３００を識別する符号「Ｎ０００」等を表記したものである。ＮｘｙｚというようにＸ軸、Ｙ軸、Ｚ軸上の位置によって符号を付与している。本実施例のスピンアレイは３次元格子のトポロジを持つため、２次元平面上に回路を構成する半導体装置として実現するためには、レイアウト上の工夫が必要となる。スピンユニットは、イジングモデルのトポロジを維持した状態で、半導体基板上の２次元平面に配置、接続する。
【００９２】
図１２、図１３では、図１４中のスピンユニット３００の符号「Ｎ０００」等と対応する符号を表記してあり、図１２、図１３上で表現されているスピンユニット３００が、図１４の３次元格子のトポロジでどの頂点に対応するかが示されている。図１３からわかるように、本実施例では、３×３×２の３次元格子頂点を２次元平面上に配置するために、Ｘ軸方向の格子頂点配列の間隔にＺ軸方向の格子頂点配列の各格子頂点を挿入するように配置している。
【００９３】
すなわち、図１３の２次元平面上でのＹ軸方向（図面下側がＹ軸正の方向）にはＮｘ０ｚ，Ｎｘ１ｚ，Ｎｘ２ｚというように配置されるが、Ｘ軸方向（図面右側がＸ軸正の方向）にはＮ０ｙ０，Ｎ０ｙ１，Ｎ１ｙ０，Ｎ１ｙ１，Ｎ２ｙ０，Ｎ２ｙ１というように、Ｚ軸方向座標が０と１のスピンユニットが交互に配置される。
【００９４】
イジングチップ１００上には物理的にはスピンユニット３００を図１３に示すように配置し、その上に図１３に示すワード線９０１−１，９０１−２，９０１−３と、ビット線９０２−１，９０２−２，９０２−３，９０２−４，９０２−５，９０２−６を配線する。これらのワード線、ビット線は図１０に示したスピンユニット３００のワード線４２０とビット線４１０に結線される。各スピンユニット３００はワード線の配列方向に１３個のメモリセルを有する（ワード線４２０は１３ビット）ので、ワード線９０１−１，９０１−２，９０１−３はそれぞれ１３ビットとなる。
【００９５】
（１−７）イジングモデルの基底状態探索処理の制御
イジングモデルの基底状態探索を実現するためには、イジングモデル全体のエネルギーがより低いスピン配列になるように遷移するように、スピン間の相互作用を実現しなければならない。このための相互作用は、与えられた相互作用係数と外部磁場係数に基づいて行われる。つまり、あるスピンの次の値を、そのスピンに接続されている他のスピンからの相互作用と、そのスピンが持つ外部磁場係数から決定する。このとき、スピンの次の値は、そのスピンが接続されている範囲内での局所的なエネルギーを最小化するような値になる。
【００９６】
このスピンの更新は、それぞれのスピンを１個ずつ逐次的に更新することがまず考えられるが、この方法ではスピン数に比例した時間がかかってしまい、並列性を利用することが出来ない。そこで、スピン間の相互作用を全てのスピンについて同時並行的に行うことが望ましい。
【００９７】
しかし、全てのスピンを同時に更新しようとすることは適当でない。あるスピンを更新するときに、隣接スピンの値に基づいて、隣接スピンとの間でエネルギーを最小化するようにスピンを更新するので、それと同時に隣接スピンの値を更新すると、両方の更新が重複してしまい、エネルギーを最小化できず振動してしまう。すなわち、あるスピンを更新するときに、そのスピンに接続されているスピン（あるスピンに相互作用係数を介して直接接続されているスピンをこれ以降隣接スピンと呼ぶ）を同時に更新することは避けるべきである。
【００９８】
そこで、本実施例では隣接スピンは同時に更新しないように、スピンアレイ１１０内のスピンユニット３００をグループ分けして、一度に同時に更新するのは１つのグループだけにする。図８に示すようなトポロジであれば、２グループに分ければ良い。そして、この２グループを交互に更新していく。
【００９９】
図６を再度参照する。図６の構成では、あるタイミングで更新するグループを指示するために、イジングチップ１００は相互作用アドレス１８０を入力インタフェースとして有する。相互作用アドレス１８０は前述したグループのうち、更新するグループを指定するためのインタフェースであり、相互作用クロック１８１の入力によって、相互作用アドレス１８０で指定されるグループに属するスピン（スピンユニット３００）が同時に更新される。
【０１００】
この方法であれば、スピンユニット３００内に追加のハードウェアは必要なく、イジングチップ１００全体に対して一組の相互作用アドレスデコーダ１４０を設けるだけで良い。そのため、構成単位であるスピンユニット３００を複雑化することなく、前記の問題が解決できる。
【０１０１】
上記の例は、隣接スピンが同時に更新されないように２つのグループに分けたが、隣接スピンが同時に更新されない分け方であれば、３以上のグループに分けてもよい。
【０１０２】
（１−８）次のスピンの状態を決定するための回路構成
図９を再度参照して説明する。
【０１０３】
スピンユニット３００は複数並行して同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット３００毎に独立して持っている。スピンの次状態を決定するための回路を図９に示す。図９ではスピンユニットは外部とのインタフェースとして、ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦ，Ｎを有する。Ｎは当該スピンユニットのスピンの値を他のスピンユニット（図８のトポロジで隣接するユニット）に出力するインタフェースである。ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦはそれぞれ他のスピンユニットの有するスピンの値を入力するためのインタフェース８３０である。ＮＵは上側のスピン（Ｙ軸方向で−１）、ＮＬは左側のスピン（Ｘ軸方向で−１）、ＮＲは右側のスピン（Ｘ軸方向で＋１）、ＮＤは下側のスピン（Ｙ軸方向で＋１）、ＮＦは奥行き方向に接続するスピン（Ｚ軸方向で＋１ないしは−１）からの入力である。なお、イジングモデルのトポロジを考える上で、端の処理を決める必要がある。
【０１０４】
図８のトポロジのように単に端は打ち切るのであれば、ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦのうち端に対するものは何も入力しなくて良い（回路上は０ないしは１の固定値に接続するなど、未使用入力端子として適切な処理をとる）。例えばＮ０００のスピンユニットの場合には、ＮＵ及びＮＬの２端子は入力が無い。
【０１０５】
スピンユニット３００では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を評価した時に、正の値と負の値のどちらが支配的か判断することと等価である。例えば、ｉ番目スピンσｉに、スピンσj，σｋ，σｌ，σｍ，σｎが隣接しているとして、スピンσｉの次状態は以下のように決まる。まず、隣接スピンの値はσj＝＋１，σｋ＝−１，σｌ＝＋１，σｍ＝−１，σｎ＝＋１とし、相互作用係数はＪj,i＝＋１，Ｊk,i＝＋１，Ｊl,i＝＋１，Ｊm,i＝−１，Ｊn,i＝−１、外部磁場係数ｈｉ＝＋１とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σj×Ｊj,i＝＋１，σｋ×Ｊk,i＝−１，σｌ×Ｊl,i＝＋１，σｍ×Ｊm,i＝＋１，σｎ×Ｊn,i＝−１，ｈｉ＝＋１となる。外部磁場係数は、常に値が＋１のスピンとの相互作用係数と読み替えて良い。
【０１０６】
ここで、ｉ番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれｉ番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、ｊ番目スピンとの間での局所的なエネルギーは、ｉ番目スピンを＋１とした時には−１、ｉ番目スピンを−１としたときには＋１となるので、ｉ番目スピンを＋１にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。
【０１０７】
このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えた時に、ｉ番目スピンを＋１／−１のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べたものにおいて、＋１と−１のどちらが多いか数えれば良い。先程の例では、＋１が４個、−１が２個である。仮に、ｉ番目スピンを＋１とするとエネルギーの総和は−２、ｉ番目スピンを−１とするとエネルギーの総和は＋２になる。よって、＋１の個数が多い時にはｉ番目スピンの次状態を＋１とし、−１の個数が多い時にはｉ番目スピンの次状態を−１にするという多数決で、エネルギーを最小化するｉ番目スピンの次状態を決定することが出来る。
【０１０８】
図９のスピンユニット３００に図示する論理回路８１０は前記した相互作用を行うための回路である。まず、隣接スピンの状態と相互作用係数の＋１／−１を示すメモリセルとの排他的論理和の否定（ＸＮＯＲ）で、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる（＋１は１、−１は０にエンコードされているものとする）。もし、相互作用係数が＋１／−１だけであれば、この出力のうち＋１／−１のどちらが多いか多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態＋１のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理に入力すべき値となる。
【０１０９】
次に、係数０の実現方法について考える。ｎ入力の多数決論理ｆ（Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎ）があるとき、以下の命題は真であると言える。まず、入力Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎの複製Ｉ’１，Ｉ’２，Ｉ’３，．．．，Ｉ’ｎがあるとする（任意のｋについて、Ｉｋ＝Ｉ’ｋである）。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎ）の出力は、複製もあわせて入力したｆ（Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎ，Ｉ’１，Ｉ’２，Ｉ’３，．．．，Ｉ’ｎ）と等しい。つまり、各入力変数をそれぞれ２個ずつ入れても、出力は不変である。さらに、入力Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎの他に、もう一つの入力Ｉｘと、その反転！Ｉｘがあるとする。このとき、ｆ（Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎ，Ｉｘ，！Ｉｘ）の出力は、ｆ（Ｉ１，Ｉ２，Ｉ３，．．．，Ｉｎ）と等しい。つまり、入力変数とその反転を入力すると、多数決においてその入力変数の影響をキャンセルするように働く。多数決論理のこの性質を利用して係数０を実現する。
【０１１０】
具体的には、図９に示すように、ＸＯＲを利用して、係数のイネーブルを決めるビット（ＩＳ０など）の値により、多数決論理に、先に述べたスピン次状態の候補となる値の複製か、その反転を同時に入力する。例えば、ＩＳ０が０の場合、ＩＳ１の値と、ＩＳ１の反転の値が同時に多数決論理に入力されるので、外部磁場係数の影響は無い（外部磁場係数が０に相当する）ことになる。また、ＩＳ０が１の場合には、ＩＳ１の値と、その値と同じ値（複製）が同時に多数決論理に入力されることになる。
【０１１１】
上記の説明では、スピン及び各係数は２〜３値の値をとるため、多数決論理回路を用いて回路を実現している。しかし、前述のように基底状態探索の本質は、隣接スピンと相互作用係数の積、及び、外部磁場係数を評価した時に、正の値と負の値のどちらが支配的か判断することである。よって、スピンや各係数が多値の値をとる場合は、正と負の値それぞれの加算回路として実現することができる。
【０１１２】
（１−９）イジングモデルの基底状態探索における局所最適解の回避
（１−９−１）乱数発生器を用いる方法
前述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することが出来るが、これだけでは局所最適解に陥ってしまう可能性がある。前述の論理回路８１０では基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことが出来ず、大域最適解に到達しない。そのため、局所最適解から脱出するために、所定の確率でエネルギーを大きくする遷移を許容する処理を取り入れる。
【０１１３】
本実施例では、スピンの値を仮想的な温度Ｔで決まる確率で反転させることにした。ここで温度Ｔは基底状態探索の過程を物理的なアニーリングに例えたものである。基底状態探索の初期では高い温度とし、徐々に温度を下げながら局所的な探索を行い、最終的に温度がゼロとなる状態まで冷却していく。
【０１１４】
図６を再度参照すると、本実施例では、スピンの値を所定確率で反転させるために、乱数発生器１５０と乱数発生クロック１６０を用いる。ビット調整器１５１は、基底状態探索の初期では高い確率でスピンの値を反転させ、終期では低い確率でスピンの値を反転させるように、乱数発生器１５０からの出力ビットを調整するものである。具体的には、乱数発生器１５０の出力から所定ビット数を取り出し、多入力のＡＮＤ回路またはＯＲ回路で演算することにより、基底状態探索の初期では１が多く、基底状態探索の終期では０が多く発生するように出力を調整する。
【０１１５】
図９において、ビット調整器１５１からの出力がＶＡＲである。ビット調整器出力ＶＡＲはアンプ８２１を通過し、反転論理回路８２０に入力される。論理回路８１０の出力は局所解であるスピンの値を出力するが、反転論理回路８２０でＶＡＲが１だった場合、スピンの値を反転させる。このようにして、スピンの値を格納するメモリセル７０１には、所定確率で反転された値が格納されることになる。
【０１１６】
ライン８２２は、複数のスピンユニット３００で単一の乱数発生器１５０とビット調整器１５１を共有するための構成であり、隣接するスピンユニットへビット調整器１５１出力を転送する。アンプ８２１は、ビット調整器１５１出力を分岐しても出力が落ちないようにするためのものである。
【０１１７】
なお、図６に示すように、イジングチップ１００内に乱数発生回路１５０を設けて各スピンユニットに乱数を配送して利用する他に、各スピンユニット３００内に乱数発生回路を設けても良い。また、イジングチップ１００の外に乱数発生回路を設けて、チップではチップ外からの乱数を配送するようにしても良い。
【０１１８】
（１−９−２）電源電圧を制御する方法
図６の例では、乱数発生器を用いたが、所定の確率でエネルギーを大きくする遷移を発生させる他の手段として、スピンを表現するメモリセルに供給する電源電圧を下げることで、メモリセルのビットエラーを誘発し、スピン配列をランダムに変化させる方法がある。
【０１１９】
そのための構成として、スピンユニット３００が有するメモリセルのうち、係数を保持するメモリセルは通常電源線で供給する電圧で動作させ、スピンを表現するメモリセルＮはスピン専用電源線で供給する電圧で動作させる。なお、メモリセル以外の構成要素、例えば相互作用を計算するための論理ゲート等は全て通常電源線で供給する電圧で動作する。
【０１２０】
メモリセルのビットエラーレートはメモリセルへの供給電圧に比例している。一般的にはメモリセルにこの１Ｖ程度の電圧を供給し、記憶内容の保持に適したビットエラーレートで用いる。この電圧から、電圧を下げていくと、電圧の下げ幅に比例してビットエラーレートも悪化していく。例えば、０．６Ｖ程度まで電圧を下げることで、１０の−１乗程度のビットエラーレートになり、このようなビットエラーが発生しやすい状態を、局所最適解からの脱出に用いる。
【０１２１】
そのため、前述したスピンの値を格納するメモリセルＮは、例えば基底状態探索の初期では解空間をより広く探索することで局所最適解に陥らないようにするため、０．６Ｖなどの低い電源電圧をスピン用電源線に供給して、ランダムなビットエラーが生じる状況で相互作用による基底状態探索を行う。この状況では、基本的には相互作用によってエネルギーが小さい状態に遷移していくが、それと並行してビットエラーにより、状態がランダムに遷移していくことで、相互作用だけでは遷移しえない状態への遷移も発生し、解空間を広く探索することができる。基底状態探索の進行と共に、状態を安定させていくために、ビットエラーレートが起こりにくい状態へと少しずつ電圧を変化させていく。
【０１２２】
（１−１０）スピンユニット間の配線
図１５はスピンユニット間の相互作用を行う配線の一例を説明する図である。
【０１２３】
図１５は、図９で示したスピンユニットのインタフェースである、ＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦ，Ｎの配線の例について示す。図１５は、ある１個のスピンユニットＮｘｙｚに注目した時に、図８に示すようなトポロジを図１３のように配置したスピンユニットで実現するために適した配線を示している。このような配線をスピンユニット毎に行うことで、図８のトポロジを回路上に実現することが出来る。
【０１２４】
（１−１１）動作シーケンス
図１６に、処理装置２００において、イジングチップ１００をＣＰＵ２１０が制御して基底状態探索を行う手順の概略を示す。
【０１２５】
ステップＳ１６００において、対象問題を表現するイジングモデルの相互作用係数と外部磁場係数を生成する。これは、最大カット問題の例で言えば、図３に示すような最大カット問題が与えられた時に、図４に示すイジングモデルを生成することである。
【０１２６】
ステップＳ１６０１では、スピン割当てマップを生成する。スピン割当てマップとは、解きたいイジングモデルを解く際に、イジングチップ１００にどのようにイジングモデルを割当てるか定義した情報である。例えば図４のイジングモデルを、図１４のような３次元格子に当てはめ、これを図１３のスピンアレイ上にマッピングし、図１２のようなメモリマップを生成する。
【０１２７】
ステップＳ１６０２で初期スピン配列を生成する。通常はスピンの初期値はランダムな値とする。
【０１２８】
ステップＳ１６０３では、メモリマップに基づいて、係数と初期スピン配列をスピンアレイに書き込む。
【０１２９】
ステップＳ１６０４では、相互作用アドレスを設定し、例えばスピンアレイの第１のグループと第２のグループを交互に指定する。
【０１３０】
ステップＳ１６０５では、同じくスピンアレイの第１のグループと第２のグループのためのクロックを生成する。
【０１３１】
ステップＳ１６０６では、相互作用アドレスと相互作用クロックに従って、スピンアレイの値を読み出し、次のスピンの状態を決定し、スピンを書き換える。このとき、前述のように局所解に陥らないように、所定確率でスピンをランダムに書き換える。
【０１３２】
ステップＳ１６０７で所定の回数相互作用計算を行った場合、ステップＳ１６０８でスピン配列を読み出す。このスピン配列が解となる。
【０１３３】
以上のような全体の制御は、図７に示した情報処理装置のＣＰＵ２１０が、ＲＡＭ２２０に格納されたソフトウェアに基づいて行うことができる。
【０１３４】
（１−１２）イジングモデルを表現するデータ構造と書式
図１７に、情報処理装置２００上でイジングモデルを表現するデータ構造の例を示す。イジングモデルは、問題定義１７００で定義され、相互作用係数を定義する相互作用定義部１７１０と、外部磁場係数を定義する外部磁場係数部１７２０とから構成される。
【０１３５】
相互作用定義部１７１０は、相互作用の元となるスピンを指定する識別子（例えば、スピンに一意な番号を付与して、それを識別子とする）、相互作用の先となるスピンの識別子、及び、相互作用係数を一組として、この組を相互作用の数だけ並べる。これは、グラフをコンピュータ上で扱う時のデータ構造である隣接リストに近い。ここでは、表現されているイジングモデルは、有向グラフとなっている。
【０１３６】
外部磁場係数定義部１７２０は、外部磁場を与えるスピンを指定する識別子と、外部磁場係数とを一組として、外部磁場係数の数だけ並べる。
【０１３７】
なお、相互作用定義部１７１０で定義されていないスピン間の相互作用係数や、外部磁場係数１７２０で定義されていないスピンへの外部磁場係数は０とする。つまり、デフォルト値は、相互作用係数の場合には当該スピン間には相互作用が存在しないことを示す０であり、外部磁場係数の場合いは当該スピンには外部磁場が存在しないことを示す０となる。
【０１３８】
図１８は、図１７のデータ構造のより具体的な表現形式、特にＨＤＤ２６０上でデータを保持する場合の書式（ファイルフォーマット）の一例を示す。図１８のデータ構造は、ＨＤＤ２６０上ではテキストファイルとして実現される。そのテキストファイルのフォーマットは、図１８において問題データ１８００として示すように、相互作用か外部磁場を識別するための識別子と、スピンの識別子及び係数とを並べたものである。
【０１３９】
（１−１３）解を表現するデータ構造と書式
図１９は、図１６のスピン配列読み出し（Ｓ１６０８）で読み出した、解または解候補となるスピン配列を示す解データを情報処理装置２００上で表現するデータ構造の例１９００と、そのＨＤＤ２６０上での書式の例とを示す。イジングモデルの解はスピン配列であることから、そのデータ構造は解１９００のようにスピンの識別子と、そのスピンの値とを一組にして並べたものになる。そして、全てのスピンについて省略無く値を書き出すという前提の元に、スピンの識別子を省略して、解データ１９２０のようにスピンの値だけを列挙したテキストファイルとしてＨＤＤ２６０上に保持することが出来る。
【０１４０】
（２）データ分類問題への応用
（２−１）画像データの領域抽出の問題への適用
相互作用モデルを用いた計算の応用例として、画像データのセグメンテーションを説明する。画像データのセグメンテーションとは、画像の中で所定の特性（特徴）を持つ領域を抽出したい場合、抽出したい領域の例（シード、あるいはターゲットと呼ぶ）をユーザが指示し、これに類似する部分を自動的に抽出するものである。
【０１４１】
図２０に画像データの領域抽出の例を示す。画像データは一般にｘ，ｙ座標成分を有するピクセル（画素）によって構成されている。各画素は特性として、輝度、色相、彩度など情報を持っている。セグメンテーション対象画像１７００から、ユーザが前景領域１７１０と背景領域１７２０を指定し、其々の領域を自動的に判別したいとする。この作業は、ユーザが指定した前景領域を構成する画素と類似する画素のグループと、ユーザが指定した背景領域を構成する画素と類似する画素のグループとに区別する作業である。
【０１４２】
図２１に画像データの領域抽出の問題をグラフ化した図を示す。たとえば、画素（０，０）〜画素（２，２）の９個の画素２１００を、ユーザが指定した前景と背景に分類したい。このとき、画素（０，０）〜画素（２，２）をノード２１１０とし、ユーザが指定した前景画素ｓをソースノード２１２０、背景画素ｔをターゲットノード２１３０とするグラフを作成する。各ノードは辺で接続され、前述のように各辺はコストを持っている。コストの和が最小になるカットを見出すと、解が求まる。コストを辺の強度に対応させると、ソースとターゲットを逆向きに引っ張るときに、一番強度の弱い辺でカットされることになる。
【０１４３】
図２２に最小カットを解いた状態を示す。ｓ−ｔ最小カット（ｓ−ｔ  Ｍｉｎｃｕｔ）２２００の部分で、コストの和が最小となり、画素（２，０）、（２，１）、（２，２）、（１，２）の４個の画素が背景に分類され、その他の画素が前景に分類されている。
【０１４４】
図２３に解に従って、ピクセルをセグメンテーションし、前景側（シード（ｓ）側）と背景側（ターゲット（ｔ）側）に分類した結果を示す。
【０１４５】
図２４は、結果の表示例である。前景１７１０として指定した画素と同じと推定された画素が、前景側（ｓ側）として分類され、前景として抽出された領域はマスク２４００として表示される。
【０１４６】
（２−２）画像データの領域抽出の問題のイジングモデルの基底状態探索問題への変換
図３に示した最大カット問題は、グラフＧ＝（Ｖ，Ｅ）を与えられた時、カットの大きさを最大化するように、頂点の集合ＶをＶ’とＶ’＼Ｖにグループ分けすることであった。また、最大カット問題の重みの符号を逆転すると、最小カット問題となる（図４）。
【０１４７】
ところで、画像の領域抽出（画像セグメンテーション）では、グラフカット（Graph cat）と呼ばれる手法が知られている。グラフカット問題では、データ項と平滑化項からなるエネルギーを最小化する解を求める。ここでデータ項とは、シードあるいはターゲットと注目画素の類似度を示す項である。しかし、データ項のみに基づいて画像を領域分けすると、領域の境界が不自然になる場合がある。また、ノイズのような点在する領域が発生することがある。そこで、画像の滑らかさを維持するために、平滑化項を取り入れる。平滑化項は、隣接スピンと注目スピンの画素の持つ特性（輝度等）の差を示す項である。
【０１４８】
図２１のグラフにおいて、シードあるいはターゲットと画素間を接続する点線がデータ項に相当し、画素同士を接続する実線が平滑化項に相当することになる。
【０１４９】
（２−２−１）画像データセグメンテーションのためのイジングモデル係数の決定方法（例１）
図２５を参照して、画像データセグメンテーションのための係数（相互作用係数および外部磁場係数）の設定例を説明する。図２５はスピンユニット３００を複数個ならべ、セグメンテーションを行うための３次元格子状のトポロジを持つイジングモデルを構成する例を示す。単純化するために、画素の輝度値に基づいてセグメンテーションする例を説明する。
【０１５０】
図２５の例は、Ｘ，Ｙ，Ｚ軸方向の大きさが、３×３×２の３次元格子である。３次元格子以外のトポロジ、例えばツリー上のトポロジを利用する場合には、ツリーの段数等で表現することになる。図２５の３次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数５のスピン（頂点）が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数６が必要となる。
【０１５１】
画像データセグメンテーションのための最小カット問題を、（数１）のイジングモデルに当てはめ、最小のエネルギー関数Ｅ(σ)を求めるための係数、Ji,jとｈiを以下のように設定する。
【０１５２】
入力画像はＸ−Ｙ平面上のスピンユニットに対応するものとする。スピンの上向き（＋１）と下向き（−１）で、前景画像（１）か背景画像（０）かを識別する。ここでは、前景をスピンの（＋１）、背景をスピンの（−１）に対応させる。例えば、図２１に示した縦３画素、横３画素の画像がある場合、各画素はＸ−Ｙ平面上の９個のスピンユニットに対応することになる。ここで、各画素の輝度値はI(x,y)として参照できるものとし、輝度値の値域は  |I(x,y)|≦Imax  とする。輝度値のデータはあらかじめ、ＨＤＤ２６０に画像データとして格納してあるものとする。
【０１５３】
まず、ユーザは前景(レイヤーl=0)，背景(レイヤーl=1)と考えられる領域をそれぞれ指定する。次にユーザが指定した領域において、画素がどのような特性を持っているかのヒストグラムを作成する。例えば、横軸に輝度値をとり、縦軸に当該レイヤーで輝度値が出現する頻度をとったヒストグラムである。画素の特性はグレイスケール画像の場合は、この例のように輝度値を用いればよい。カラー画像の場合は、輝度地に加え、様々な色空間で表現された3または4次元のベクトルで表すことができる。
【０１５４】
前景，背景それぞれの領域のヒストグラムは、
θ(c, l)  ＝レイヤーlにおける輝度cの発生頻度（0〜1に正規化）
として参照できるものとする。
【０１５５】
相互作用係数（平滑化項）Jj,i、Jk,i、Jl,i、Jm,iは（数３）で示される。図２５に示すように、第1層(Z=0すなわちX-Y平面上)のスピン間は，相互作用係数（平滑化項）２５００を格子状に持つ。k,λhは係数（定数）である。
【０１５６】
【数３】
0005922202.tif 000004
【０１５７】
相互作用係数（背景データ項）Jn,iは（数４）で示される。図２５に示すように、X,Yが同一な第1層(Z=0)と第2層(Z=1)のスピン間は，相互作用係数（背景データ項）２５１０を格子状に持つ。λgは係数（定数）である。
【０１５８】
【数４】
0005922202.tif 000005
【０１５９】
外部磁場係数（前景データ項）hiは（数５）で示される。図２５に示すように、第1層のスピンは外部磁場係数（前景データ項）２５２０を持つ。λgは係数（定数）である。
【０１６０】
【数５】
0005922202.tif 000006
【０１６１】
図２６に示すように、相互作用係数（平滑化項）Ji,j２５００は、隣接画素間の輝度差が小さいとき１に近い値をとる。画像の特性として、隣同士の画素は同じセグメントに属することが多い。そこで、平滑化項は、注目画素のスピンの値を隣接画素で支配的なスピンの値と揃うように動かす。隣接画素間の輝度差が大きいときは、平滑化項はゼロの値をとり、データ項が支配的になる。
【０１６２】
外部磁場係数２５２０では、前景データ項は、注目画素が前景に指定された画素と近いか否かを評価する。相互作用係数（背景データ項）２５１０では、背景データ項は、注目画素が背景に指定された画素と近いか否かを評価する。このために、データ項は例えばユーザが指定した前景・背景のヒストグラムを引用し、ヒストグラムをもとに注目画素がどちらに近いかを評価し、それに基づき注目画素のスピンを判断する。
【０１６３】
（２−２−２）画像データセグメンテーションのためのイジングモデル係数の決定方法（例２）
図２７Ａを参照して、画像データセグメンテーションのための係数の設定例を説明する。図２７Ａはスピンユニット３００を複数個ならべ、セグメンテーションを行うための２次元格子状のトポロジを持つイジングモデルを構成する例を示す。単純化するために、画素の輝度値に基づいてセグメンテーションする例を説明する。
【０１６４】
図２７Ａの例は、Ｘ，Ｙ軸方向の大きさが、３×３の２次元格子である。図２７Ａの２次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数４のスピン（頂点）が必要となる。なお、外部磁場手係数の接続も含めて考えると、最大で次数５が必要となる。
【０１６５】
図２５の例と同様に、入力画像はＸ−Ｙ平面上のスピンユニットに対応させる。また、各画素の輝度値の定義、ユーザによる前景・背景の指定、前景・背景のヒストグラムの作成も（例１）と同様である。
【０１６６】
相互作用係数（平滑化項）Jj,I、Jk,i、Jl,i、Jm,iは（数６）で示される。図２７Ａに示すように、第1層(Z=0すなわちX-Y平面上)のスピン間は，相互作用係数（平滑化項）２５００を格子状に持つ。k,λhは係数（定数）である。
【０１６７】
【数６】
0005922202.tif 000007
【０１６８】
外部磁場係数（データ項）hiは（数７）で示される。図２７Ａに示すように、各スピンは外部磁場係数（データ項）２７００を持つ。λgは係数（定数）である。
【０１６９】
【数７】
0005922202.tif 000008
【０１７０】
(例１）では、データ項は前景データ項と背景データ項に分かれていたが、（例２）では、外部磁場係数（データ項）は以下の形をとる。  
データ項  ＝  前景データ項  −  背景データ項
この結果、注目画素が前景の特性に近いほどデータ項はプラスの値になり、背景の特性に近いほどマイナスの値をとる。よって、これに基づき注目画素のスピンを判断することができる。
【０１７１】
相互作用係数（平滑化項）については、（例１）と同様である。
【０１７２】
図２７Ｂに、図２７Ａのモデルを使って求めた解と画像の対応関係例を示す。各スピンは画素に対応し、各スピンの値は画素が分類されるセグメントを示すことが分かる。
【０１７３】
以上で説明した画像セグメンテーションのためのイジングモデルのトポロジでは、ある平面上のスピンユニットがそのまま画像の画素に対応している。図２５、図２７で示したトポロジは３×３の画素に対応しているが、画素が増えた場合には、そのまま同一平面上のスピンユニットを増やせばよい。
【０１７４】
（２−２−３）画像データセグメンテーションのためのイジングモデル係数の決定方法（例３）
上記で説明した平滑化項は、いずれも（数３）（（数６）に同じ））で示される式を用いた。
【０１７５】
図２６は、横軸に隣接画素間の輝度差、縦軸に（数３）で示される平滑化項出力を定義してグラフ化したものである。図２６より明らかなように、隣接画素間の輝度差０のときにJi,j出力は最大となる。このJi,jを（数１）に当てはめれば、隣接スピンの符号が同じときにエネルギーは小さくなることがわかる。すなわち、注目画素のスピンは、周辺の画素のスピンと同じ方向に引っ張られる
（数３）の平滑化項は、画素の特性（例えば輝度）が滑らかに変化する場合には好適である。一方、画素の特性が離散的に変化する部分（例えば物と物の境界）を、適切に反映することが難しい。
【０１７６】
（数８）は他の平滑化項の例である。
【０１７７】
【数８】
0005922202.tif 000009
【０１７８】
図２８は、横軸に隣接画素間の輝度差、縦軸に（数８）で示される平滑化項出力を定義してグラフ化したものである。
【０１７９】
図２８より明らかなように、隣接画素間の輝度差０のときにJi,j出力は最大となる。逆に、隣接画素間の輝度差MAXのときにJi,j出力は負の最大値となる。そして、隣接画素間の輝度差が中間の値でJi,j出力はゼロになる。（数８）の平滑化項を用いると、隣接画素間の輝度差が小さい場合には、注目画素のスピンの値は、周辺の画素のスピンの値と同じ方向に引っ張られるが、逆に、隣接画素間の輝度差が大きい場合には、周辺の画素のスピンの値と逆方向に引っ張られる。また、隣接画素間の輝度差が中間の値の場合には、平滑化項はゼロに近づき、データ項の影響が支配的となる。
【０１８０】
上記では、２通りの例でセグメンテーションを実行するための関数の例を示した。しかし、本発明はこの関数に限定されるものではなく、他の関数を用いて計算することも可能である。例えば、相互作用係数のみを用いたり、外部磁場係数のみを用いて、項の一部を省略することができる。また、他の係数を追加して導入することもでき、イジングモデルを一般化した相互作用モデルに適用することができる。
【０１８１】
（２−３）イジングチップでの処理
図２５、図２７のように、イジングモデルの基底状態探索問題に変換された画像データの領域抽出の問題は、基本的に図８の構成と同じである。よって、「（１）イジングチップの基本構成」で説明した構成により処理が可能であり、当該構成を踏襲する。以下、画像データの領域抽出の問題特有の点について説明する。
【０１８２】
（２−３−１）画像データセグメンテーションのためのシステム構成
図２９に画像データセグメンテーションのためのシステム構成図を示す。図７と同じ構成は同じ符号を付して説明を省略し、異なる部分を主に説明する。
【０１８３】
図２９のシステムは、ユーザが画像データの指定を行うための、入力装置２９００と出力装置（表示装置）２９１０を備える。また、システムバス２３０にはネットワークインターフェース回路（ＮＩＣ）２４０を介してネットワーク２９２０に接続可能となっている。このシステムは、ネットワーク２９２０を介して、他の情報処理装置と連携して動作することも可能である。
【０１８４】
ユーザは、例えば図２０に示す画像を表示装置２９１０に表示させながら、前景領域１７１０と背景領域１７２０を、入力装置２９００で指定する。ＲＡＭ２２０やＨＤＤ２６０には、各種のデータやプログラムが格納されている（後述）。
【０１８５】
（２−３−２）画像データセグメンテーションのための処理フロー
図３０に処理フローの概略を示す。  
Ｓ２９００で、画像からシードとなる部分を設定する。  
Ｓ２９１０で、画像およびシードからイジングモデルを生成する。  
Ｓ２９２０で、イジングモデルに対応したスピンと係数の初期配列を生成する。  
Ｓ２９３０で、生成したスピンと係数を、スピンアレイに書き込む。  
Ｓ２９４０で、基底状態を探索し、所定の回数相互作用を実行する。  
Ｓ２９５０で、得られた解を読み出す。  
Ｓ２９６０で、得られた解に基づいて、結果をユーザに表示する。  
以下、図２９のシステム構成と図３０のフローを参照しながら各処理を説明する。
【０１８６】
（２−３−２−１）シードの設定
図３０の、画像からシードとなる部分を設定する処理（Ｓ２９００）説明する。
【０１８７】
図３１は、図２９のシステムの出力装置２９１０に表示される画像であり、シードの設定や結果の表示に用いる。
【０１８８】
この画面ではセグメンテーション対象画像３０００を示すとともに、ポインター３００１で対象画像３０００の任意の個所を指定できるようになっている。画像３０００はボタン３１００により呼び出すことができる。ユーザが対象画像３０００の任意の個所を閉じた円等で指定した後、ボタン３００２または３００３を選択することで、前景または背景のシードを設定できる。設定したシードはボタン３００４によりキャンセルすることができる。また、ボタン３００５でキャンセルを取り消すことができる。また、設定したシードはボタン３００７により記録することができる。また、ボタン３００６により記録したシードを読み出すことができる。
【０１８９】
ユーザがシードに指定した画素は、X,Y座標で特定できる。例えば、対象画像３０００の画素数が縦横８００×６００であれば、画素の位置は(１,１)から(８００,６００)までのいずれかの値をとる。対象画像３０００の画像データ２６１はＨＤＤに格納されており、画素の座標と当該画素の輝度、色相、彩度などの特性を示すデータが対応付けられている。ユーザがシードに指定した画素は、前景または背景のフラグを付け、画像データ２６１に格納する。図３１の他の構成については、後に説明する。
【０１９０】
（２−３−２−２）イジングモデルの生成
図３０の、画像およびシードからイジングモデルを生成する処理（Ｓ２９１０）を説明する。
【０１９１】
ここでは、セグメンテーション対象画像３０００とユーザが指定したシードに基づいて、イジングモデルを生成する。イジングモデルとしては、図２５や図２７に示したものがあり、任意に選択できるが、本実施例ではＲＡＭ２２０中の問題変換プログラムであらかじめ定義しておくことにする。ここでは図２５に示したイジングモデルを例に説明する。
【０１９２】
図２５のイジングモデルでは、XY平面上のスピンはそのまま対象画像３０００の画素に対応させることができる。そして、一つの画素を表すスピンに、２〜４個の相互作用係数（平滑化項）と１つの外部磁場係数（前景データ項）と１つの相互作用係数（背景データ項）が付随してスピンユニット３００を構成する。
【０１９３】
（２−３−２−３）イジングモデルに対応したスピンと係数の初期配列の生成
図３０の、各スピンユニット３００のスピンと係数の初期配列を生成する処理（Ｓ２９２０）を説明する。
【０１９４】
スピンについては、対応する画素の値を設定することになる。「（１）イジングチップの基本構成」では、スピン初期値はランダムに設定した。これは、最初の段階では解が不明（すなわち画素が前景か背景か不明）なためである。ただし、画像セグメンテーションの問題では、ユーザが指定したシードの画素は、あらかじめ解が分かっている画素である。よって、ユーザが指定したシードの画素は、ユーザが指定した前景・背景の別にしたがってスピンの値を設定する。ユーザが指定したシードの画素は、ＨＤＤ内の画像データ２６１を参照することで特定できる。ユーザが指定したシード以外の画素については、乱数発生器等を用いてランダムな値に設定する。
【０１９５】
係数については、(数３）（数４）（数５）に基づいて計算する。
【０１９６】
相互作用係数（平滑化項）Ji,jは（数３）により計算する。この計算には各画素の輝度値I（ｘ,ｙ）が必要である。輝度値I（ｘ,ｙ）を引用するため、輝度値I（ｘ,ｙ）は、ＨＤＤ内の画像データ２６１を参照する。
【０１９７】
相互作用係数（背景データ項）は、（数４）により計算する。この計算には背景の輝度ヒストグラムθ（ｃ,ｌ）が必要である。背景の輝度ヒストグラムは、ＨＤＤ内の画像データ２６１でユーザが背景と指定した画素のデータをもとに、各輝度値の出現確立ｃを正規化して作成し、ＲＡＭ２２０に記憶しておく。
【０１９８】
相互作用係数（前景データ項）は、（数５）により計算する。作成方法は相互作用係数（背景データ項）と同様である。
【０１９９】
以上の処理や計算は、ＲＡＭ２２０内の問題変換プログラム２２１によって実行され、各スピンユニット３００に設定するために作成されたデータは、問題データ２６２としてＨＤＤ２６０に格納される。これらのデータはメモリに書き込むため、基本的にはデジタル値であるが、何ビット幅のデータにするかは、画像の大きさや処理速度、イジングチップの回路規模を考慮して決めることになる。各係数の式の中で定数であるｋ、λｈ、λｇなどは、問題変換プログラム２２１内であらかじめ設定しておくか、ユーザが入力装置２９００で設定する。
【０２００】
（２−３−２−４）
図３０の、生成したスピンと係数を、スピンアレイ１１０に書き込む処理（Ｓ２９３０）を説明する。データを書き込むスピンアレイ１１０の物理構成は、先に図９〜図１５で説明したとおりであり、基本的な構成は同様である。
【０２０１】
ただし、画像セグメンテーションの問題のように、あらかじめ解が分かっているスピンが存在する場合、以下に述べる機能を追加する必要がある。
【０２０２】
先に説明したように、局所解にトラップされることを避けるため、基底状態を探索している間、スピンは所定確率でランダムに遷移させることが望ましい。
【０２０３】
ところで、画像データセグメンテーションの場合、ユーザは最初にリファレンスとなる画素の種類を指定している。すなわち、例えば図２０でユーザが前景と指定した画素は、ユーザの入力を信頼すれば理論的に１００％前景であるから、常に前景と扱うべきであり、背景と指定した画素は背景として扱うべきである。
【０２０４】
しかし、局所最適解の回避のために、スピンの値をランダムに遷移させると、ユーザが指定した画素の種類（スピンの値）も変化してしまう。このため、正しい値が誤った値に変えられてしまうことになり、処理には無駄が生じる。
【０２０５】
このため、本実施例では、ユーザが指定した画素に対応するスピンの値は、不変とする構成を採用する。
【０２０６】
図３２Ａに画像データセグメンテーションのためのイジングチップのためのスピンユニットの構成を示す。図９と同じ構成は同じ符号を付して説明を省略し、異なる部分を主に説明する。図９と同様に、乱数ＶＡＲを用いて、反転論理回路８２０の出力が生成される。反転論理回路８２０の出力は第１のマルチプレクサ３２００に入力される。マルチプレクサ３２００のもう一方の入力は、メモリセル７０１自身のデータである。
【０２０７】
マルチプレクサ３２００に入力されるイネーブル信号ＥＮは、マルチプレクサ３２００の出力を選択し、メモリセル７０１のデータの書き換えを行うかどうかを設定できる。イネーブル信号がHIGHだと、相互作用を無視して、元のスピン値を書き続けることになる。すなわち、スピンの値を最初の値のまま維持する。
【０２０８】
イネーブル信号ＥＮの意味を説明する。先に述べたように、相互作用においては、隣接するスピンの値が同時に変わらないように制御する必要がある。そこで、スピンユニットは例えばグループＡとグループＢの２グループにグループ分けされている。各スピンユニット３００は、スピンの更新を許可する信号を入力するインタフェース（ＥＮ）を有する。相互作用アドレス１８０で指定されるアドレス（グループの識別子）を相互作用アドレスデコーダ１４０でデコードし、グループ毎の更新許可信号を生成する。そして、相互作用クロック１８１でその時に更新が許可されているグループに属するスピンユニットの更新が行われる。
【０２０９】
マルチプレクサ３２００の出力は、マルチプレクサ３２１０に入力される。マルチプレクサ３２１０のもう一方の入力は、メモリセル７０１自身のデータである。メモリセル３２２０の出力はマルチプレクサ３２１０に入力され、マルチプレクサ３２１０の出力を選択する。
【０２１０】
先に述べたように、本実施例では、特定のスピンの値を固定する機能を有している。このため、メモリセル３２２０には、メモリセル７０１のデータを固定するか否かを決めるデータが格納されている。例えば、メモリセル３２２０のデータが１の場合は、メモリセル７０１自身のデータがマルチプレクサ３２１０の出力に選択され、メモリセル７０１のデータは変わらない。メモリセル３２２０のデータが０の場合は、マルチプレクサ３２００の出力がメモリセル７０１のデータとなる。メモリセル３２２０のデータは、メモリセル７０１のデータが、ユーザの選択した前景または背景のデータである場合、１に設定される。本実施例では、値が固定されるスピン（ノードノード）として、ユーザの指定した画素に対応するスピンの値を例に説明している。しかし、このように任意のノードの値を固定する手法は、画像セグメンテーションに限らず、相互作用モデルを計算する際に所定の制約条件を取り入れて計算を実行することを可能とするため、相互作用モデル計算全般で汎用性の高い手法である。
【０２１１】
イジングモデルの基底状態探索は、最初ランダムな状態から出発する。また、局所解に陥ることを防ぐため、基底状態探索の間、乱数を発生してランダムな状態に戻す処理を行う。一方、画像データのセグメンテーションのように、ユーザの指定したデータについてスピンの値を固定し、これを基準として探索を行いたい場合、当該スピンの値を固定する必要がある。そこで、FIXというメモリセル３２２０を準備しておき、その値が１だった場合には、Nの値は固定される。そして、FIXが０の場合には相互作用の結果Nの値が書き換えられる。
【０２１２】
多数決論理回路３２３０は、エネルギーの値を計算し、これが小さくなるようにスピンの値を決定する論理回路である。
【０２１３】
図３２Ａでは、メモリセル３２２０によって、メモリセル７０１のデータを書き換えないようにした。一方、メモリセル３２２０を追加せず、メモリセル７０１のデータを書き換えた後に、ユーザの指定したデータについては、元のデータを書き戻す処理を行っても結果は同じである。ただし、書き戻しの時間分、処理速度が低下する。
【０２１４】
図３２Ｂに、メモリセルを多値化した例を示す。先に述べたように、相互作用係数、平滑化係数はアナログ値をとるので、初期値設定の際にはデジタル値に変換する。図３２Ａでは、係数は１ビットのメモリセル２個を用いて格納されるので、正負の符号と２値の係数を使用できる。メモリセルの多値化あるいは複数メモリセルの使用によって、係数を格納するメモリをｎビット幅の符号付数値とすることもできる。この場合は、正負の符号とｎ−１ビット分の係数を格納することができる。もしくは，２の補数表現などで正負の符号を持つ整数値を格納する。次状態決定回路３２３１は、隣接スピンの値と係数の値を入力とし、（数１）で計算されたエネルギーの値が小さくなるようにスピンの値を決定する論理回路である。論理の内容は、隣接スピンと相互作用係数の積、及び、外部磁場係数を評価した時に、正の値と負の値のどちらが支配的か判断することである。
【０２１５】
図３２Ｃに次状態決定回路３２３１の一例を示す。隣接スピンであるＮＵ，ＮＬ，ＮＲ，ＮＤ，ＮＦからはスピンの値を示す値が、符号反転器３２３２に入力される。スピンが＋１のとき１が、−１のとき０が入力されるものとする。ＮＩＵ，ＮＩＬ，ＮＩＲ，ＮＩＤ，ＮＩＦには係数が格納されており、例えば、上位１ビットが正負の符号を表し、下位ビットが数値（絶対値）を表すとする。符号反転器３２３２は、スピンが０のとき係数の上位１ビットを反転させる。各符号反転器３２３２の出力は、加算器３２３３で加算され、加算結果は符号判定器３２３４で正負の符号が判定される。符号が正であればスピンの次状態は＋１となり、負であれば−１となる。加算結果が０のとき次状態は決定せず、メモリセル７０１のスピンは前の状態が維持されるか、またはランダムな値に設定される。
【０２１６】
図３３にスピンの初期値，及び，値の固定を定義するデータ構造と書式例を示す。スピン初期値定義３３００は、スピンを特定するID、スピンの値、固定フラグを定義する。スピンを特定するIDであるViは、スピンの値がメモリ７０１に格納される場合、当該メモリのアドレスであってもよい。スピンの値σiは＋１か−１の２値をとるが、これは、メモリ７０１に格納されるときには、例えば１と０の値となる。固定フラグはメモリ３２２０（図３２）に格納され、メモリ７０１のデータを固定するか否かを決める。ここで、ユーザがシードに指定した画素に対応するメモリ７０１のデータは、固定フラグにより固定されることになる。
【０２１７】
スピン初期値データ３３１０は、スピン初期値定義３３００に従って、スピンの初期値をスピンアレイに書き込むためのデータであり、ＲＡＭ２２０に格納される。このデータはスピン個数分のエントリを有しており、スピンIDの昇順（ここではv1〜v3）に並んでいる。データ３３１０の第２列は固定フラグを示し，1(True)はスピン値を固定とし0(False)は固定しない。
【０２１８】
なお、このデータでスピンの個数は、図２５のようなモデルだと画素数の２倍となり、図２７のモデルだと画素数と同じになる。
【０２１９】
図３４に、図２５のイジングモデルを示す初期スピン配列と係数を、図３２Ａのメモリにマッピングしたメモリマップを示す。図３４の例では、図２５のXY平面上の画素に相当するスピンがＮ０００，Ｎ０１０，Ｎ０２０等のブロックに割り当てられる。また、図２５の(−１）固定スピンが、Ｎ００１，Ｎ０１１，Ｎ０２１等のブロックに割り当てられる。固定スピンが割り当てられたブロックでは、係数を格納するメモリセルは使用しない。イジングモデルとメモリマップの対応は、図８と図１２の関係と同様と考えてよい。ただし、図３４の例では、各ブロックの上から２番目にはスピンを固定するためのFIXセルが含まれている。
【０２２０】
図３５に、図３４のマップに、係数と初期スピン配列を書き込んだ状態を示す。ここで、各係数はＩＳ０，ＩＳ１，ＩＵ０，ＩＵ１，ＩＬ０，ＩＬ１，ＩＲ０，ＩＲ１，ＩＤ０，ＩＤ１，ＩＦ０，ＩＦ１として示している。図２５に示す(−１）固定スピンが格納されている、Ｎ００１，Ｎ０１１，Ｎ０２１等のブロックのメモリセル７０１には、０の値が格納されている。この値はデータ係数の計算に用いるため不変なので、以降の処理ではＮ００１，Ｎ０１１，Ｎ０２１等のブロックは変化させず、(−１）固定スピンが格納されているメモリセル以外は、Ｎ／Ａとして使用しない。
【０２２１】
ブロックＮ０００，Ｎ０１０のメモリセル３２２０には、スピンの値を固定するためのフラグを示す１が格納されている。これらのブロックのメモリセル７０１には、ユーザが前景のシードとして指定した画素のスピンである１が格納されている。メモリ３２２０の固定フラグ１により、スピンの値は固定される。また、その他のブロックのメモリセル７０１には、スピンの初期値としてランダムな値が書き込まれている。
【０２２２】
以上の処理は、ＲＡＭ２２０内のイジングチップ制御プログラム２２２によって実行され、イジングチップ内のメモリセルにデータがセットされる。
【０２２３】
（２−３−２−５）
図３０の、基底状態を探索し、エネルギー最小の解を求める処理（Ｓ２９４０）を説明する。
【０２２４】
図３６に処理Ｓ２９４０の詳細フローを示す。
【０２２５】
Ｓ３６００は、局所解から脱出するために、スピンの値をランダムに変更する確率を設定する処理である。先に図６で説明したように、乱数発生器１５０で発生した乱数をもとに、ビット調整器１５１で１と０の割合を調整する。図３２で、調整された乱数VARは、反転論理回路８２０に入力され、次状態決定回路３２３０の出力を所定確率で反転させる。
【０２２６】
Ｓ３６１０は相互作用の回数を設定する処理である。すなわち、何回相互作用を起こさせ、スピンの値を書き換えるかを設定する。
【０２２７】
あるイジングモデルの基底状態探索を行うときに，どの程度の時間をかけるべきか（相互作用の回数が必要か）は，イジングモデルのサイズなどからある程度理論的に決めることができる。よって，まず，一回の基底状態探索に必要な時間（＝相互作用回数）は、画像セグメンテーションの例では、与えられた画像の大きさ（解像度）によって決めることができる。この設定は、イジングチップ制御プログラム２２２で設定することができる。
【０２２８】
ビットの反転確率は、基底状態探索の初期に大きく、終期に小さくなるように、ビット調整期１５１で制御する。このため、Ｓ３６００とＳ３６１０の結果として、例えば（表１）のように反転確率ごとに、何回相互作用を実行させるかを設定しておく。ビットの反転確率や相互作用回数は、イジングチップ制御プログラム２２２によってあらかじめ設定されているか、ユーザにより入力装置２９００から設定される。表１によると、例えば反転確率５０％の相互作用を１００回行った後、反転確率４０％の相互作用を１００回行う。このように反転確率を制御し、相互作用を４６０回行った時点で終了とする。
【０２２９】
【表１】
0005922202.tif 000010
【０２３０】
Ｓ３６２０で相互作用が実行される。すなわち、図３５のメモリセルの内容が読み出され、次状態決定回路３２３０で次のスピンの値が決定される。次のスピンの値は、（表１）の設定に従って、反転論理回路８２０で調整された乱数VARに基づいた確率で反転する。このとき、図１６で説明したように、相互作用アドレスデコーダ１４０（図６）を用いて、隣接するスピンユニットは同時に相互作用を行わないように制御する点は、図１６と同様である。
【０２３１】
ただし、本実施例では、メモリセル３２２０の値が１の場合は、メモリセル７０１の値がそのままスピンの値として書き戻される。すなわち、メモリセル７０１の値は固定される。なお、信号線ＥＮは当該スピンユニット７０１のスピンの更新を許可する切替え信号を入力するインタフェースである。この切替え信号でマルチプレクサ３２００を制御することで、メモリセル７０１に保持されたスピンの値を、次状態決定回路３２３０からの値に書き換えるかどうかをきめることが出来る。
【０２３２】
Ｓ３６３０では、相互作用の回数をカウントする。（表１）の終了条件に規定する回数相互作用を行うと、探索の終了条件を満たす場合は、探索を終了する（Ｓ３６４０）。探索の終了条件は、相互作用の合計回数が所定回数に達したかどうかで判定できる。例えば、（表１）のプログラムでは、４６０回である。
【０２３３】
所定回数が終了していない場合は、スピン反転確率を更新する（Ｓ３６５０）。（表１）の例では、Ｓ３６３０で合計２００回の相互作用をカウントすると、反転確率は４０％から３０％に更新される。次に、相互作用回数をインクリメントし（Ｓ３６６０）、当該ビット確率で設定した回数に至るまで相互作用の実行を繰り返す。３０％の反転確率は、相互作用を合計３００回実行した後、２０％に更新される。
【０２３４】
図３７で反転論理回路８２０によるスピン反転確率、およびメモリセル７０１によるスピン値固定の制御の他の具体例を説明する。図３７は横軸に基底状態探索時間（相互作用回数）を示し、縦軸にスピン反転確率（温度Ｔ)を示したグラフである。Ｓ３６１０の処理で説明したように、ビットの反転確率は、基底状態探索の初期（高温期間TH)に大きく、終期（低温期間TL）に小さくなるように、ビット調整期１５１で制御される。このため、基底状態探索期間TH+TLの間、スピン反転確率は漸減している。なお、図３７ではスピン反転確率を曲線的に低減しているが、（表１）で示したように階段状に低減させてもよい。
【０２３５】
図３７の例では、前述のように、基底状態探索の開始時である時間０点において、スピン初期値及び係数を設定する際に、シード画素に対応するメモリセル７０１のスピンの値を固定する。このために、メモリセル３２２０にはスピン固定フラグである１が格納される。本実施例では、高温期間THの間はスピンの値を固定し続ける。次に、低温期間TL開始時にはスピンの値の固定を解除する。このために、TL開始時にメモリセル３２２０のスピン固定フラグ１を０に書き換える。したがって、低温期間TLの間は、メモリセル７０１の値は、次状態決定回路３２３０の出力を所定確率で反転したデータに書き換えられる。その後、所定の基底状態探索時間（相互作用回数）が終了する時点TH+TLでスピンの値を読み出し、基底状態探索が完了する。
【０２３６】
上記の処理では、途中でシード画素に対応するメモリセル７０１のスピンの値の固定を解除する。これは、たとえユーザが指定した画素であっても、実際はユーザが意図した領域をはみ出して指定していることがあり、ユーザの指定よりもイジングチップの結果を優先したほうがよい場合があるからである。このような制御は例えば（表２）のように、反転確率と連動してシードデータ固定のフラグを設けて制御することができる。また、反転確率と連動せず、所定タイミングでシードデータの固定をOFFにすることも可能である。
【０２３７】
【表２】
0005922202.tif 000011
【０２３８】
（２−３−２−６）解の読み出しと結果表示
基底状態探索（Ｓ２９６０）が終了すると、スピンが格納されているメモリセル７０１の値を読み出す。これが解となるので、ＲＡＭ２２０またはＨＤＤ２６０に記憶する。記憶したスピンの値に応じて、各画素を前景と背景を分類し、表示装置２９１０に表示する。表示の態様としては、例えば図２４に示したような、前景を示すマスク２４００として表示することができる。
【０２３９】
（２−３−２−７）ユーザインターフェース
図３１を再度参照して、ユーザが指示可能な処理の例を説明する。結果表示の際に、前景として表示されたマスク２４００は、ボタン３００８により記録することができる。また、前景と背景に分類された部分は、それぞれボタン３０１０と３０２０で保存することができる。
【０２４０】
ボタン３１００は実行ボタンであり、これにより画像セグメンテーション処理が開始する。開始前に、処理形態をボタン３１１０と３１２０で選択することができる。ボタン３１１０はワンショット実行の指定である。ワンショット実行では、一回だけ基底状態探索を行い、その結果をセグメンテーション結果とする処理である。一回の基底状態探索（Ｓ２９４０）は，例えばＮ回の相互作用（Ｓ３６２０）で行われる。また、ボタン３１２０は複数回実行を指定するボタンである。この場合は、ウインド３１３０で回数を設定する。複数回実行の場合は、イジングチップは設定された回数だけ基底状態探索を行い，その中から最良の結果をセグメンテーション結果とする。「最良の結果」の選定基準としては、イジングモデルのエネルギー関数の値をもっとも小さくするもの選択すればよい。
【０２４１】
（２−４）データ構造
上記で説明した画像データ、イジングチップの問題データ、メモリセルに格納されるデータの関連を（表３）の例で説明する。
【０２４２】
#1〜#3は画像データである。#1は画素の座標（x,y）であり、#2は当該座標の輝度値I(x,y)である。輝度値は例えば0〜100の値をとる。#3はユーザが指定したシード種類である。前景が（１）であり背景が（０）となる。
【０２４３】
#4〜#6は問題データである。#4はスピン識別子viであり、例えば図２５のモデル中のスピンを特定する。#5は当該スピンに関わる、外部磁場係数hiと相互作用係数Ji（相互作用係数は複数あるが、表３ではJiとして表記）である。#6はスピンの初期値であり、スピンの上向き（＋１）と下向き（−１）を識別する。ここでは、前景をスピンの（＋１）、背景をスピンの（−１）に対応させる。シード以外はランダムに設定される。以上より明らかなように、画像のひとつの画素はイジングモデルのひとつのスピンに対応する。
【０２４４】
#7〜#10はスピンユニットのメモリに関するデータである。#7はスピンの値を格納するメモリ７０１をアクセスするためのアドレスである。#8はメモリ７０１に設定される初期値である。シードに指定されたスピンの初期値（＋１／−１）に対応し、（１／０）のデータがセットされる。シードに指定されていないスピンは、１または０がランダムに格納される。#9はスピンの固定フラグを格納するメモリ３２２０をアクセスするためのアドレスである。#10はメモリセル３２２０に格納されるデータであり、シードデータが設定されたスピンユニットには固定フラグ１が格納される。
【０２４５】
#8の初期値データは基底状態探索の実行中に変化していくので、複数回の相互作用を実行し基底状態探索を終了した後にスピンの値を読み出し、結果に応じて対応する座標の画素の種類を決定し、表示する。
【０２４６】
【表３】
0005922202.tif 000012
【０２４７】
以上のデータは、例えばＨＤＤ２６０に格納し、必要に応じてＲＡＭ２２０にコピーして処理に使用する。（表３）は一つのテーブルにまとめてあるが、相互に参照できる複数のテーブルでデータを構成してもよい。
【０２４８】
以上の構成は、単体のコンピュータで構成してもよいし、あるいは、入力装置、出力装置、処理装置、記憶装置の任意の部分が、ネットワークで接続された他のコンピュータで構成されてもよい。発明の思想としては等価であり、変わるところがない。
【０２４９】
本実施例中、ソフトウェアで構成した機能と同等の機能は、FPGA（Field Programmable Gate Array）、ASIC（Application Specific Integrated Circuit）などのハードウェアでも実現できる。そのような態様も本願発明の範囲に含まれる。
【０２５０】
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【０２５１】
１００，１００−１，１００−２ イジングチップ
１１０ スピンアレイ
１２０ Ｉ／Ｏドライバ
１３０ Ｉ／Ｏアドレスデコーダ
１４０ 相互作用アドレスデコーダ
１８０ 相互作用アドレス
１８１ 相互作用クロック
１９０ アドレスバス(ＳＲＡＭ互換インタフェース)
１９１ データバス(ＳＲＡＭ互換インタフェース)
１９２ Ｉ／Ｏクロック(ＳＲＡＭ互換インタフェース)
１９３ Ｒ／Ｗ制御線(ＳＲＡＭ互換インタフェース)
２００ 情報処理装置
２１０ ＣＰＵ
２２０ ＲＡＭ
２３０ システムバス
２４０ ＮＩＣ
２５０ イジングチップコントローラ
２６０ ＨＤＤ
２９０ 装置間ネットワーク
３００ スピンユニット
４１０，９０２，１９３０ ビット線
４２０，９０１，１９２０ ワード線
Ｎ スピンを表現するメモリセル、及び、スピンの値を出力するインタフェース
ＩＳ０ 外部磁場係数が０であるかどうかを示すメモリセル
ＩＳ１ 外部磁場係数の＋１／−１を示すメモリセル
ＩＵ０，ＩＬ０，ＩＲ０，ＩＤ０，ＩＦ０ 相互作用係数が０であるかどうかを示すメモリセル
ＩＵ１，ＩＬ１，ＩＲ１，ＩＤ１，ＩＦ１ 相互作用係数の＋１／−１を示すメモリセル
【図１】
0005922202.tif 000013
【図２】
0005922202.tif 000014
【図３】
0005922202.tif 000015
【図４】
0005922202.tif 000016
【図５】
0005922202.tif 000017
【図６】
0005922202.tif 000018
【図７】
0005922202.tif 000019
【図８】
0005922202.tif 000020
【図９】
0005922202.tif 000021
【図１０】
0005922202.tif 000022
【図１１】
0005922202.tif 000023
【図１２】
0005922202.tif 000024
【図１３】
0005922202.tif 000025
【図１４】
0005922202.tif 000026
【図１５】
0005922202.tif 000027
【図１６】
0005922202.tif 000028
【図１７】
0005922202.tif 000029
【図１８】
0005922202.tif 000030
【図１９】
0005922202.tif 000031
【図２０】
0005922202.tif 000032
【図２１】
0005922202.tif 000033
【図２２】
0005922202.tif 000034
【図２３】
0005922202.tif 000035
【図２４】
0005922202.tif 000036
【図２５】
0005922202.tif 000037
【図２６】
0005922202.tif 000038
【図２７Ａ】
0005922202.tif 000039
【図２７Ｂ】
0005922202.tif 000040
【図２８】
0005922202.tif 000041
【図２９】
0005922202.tif 000042
【図３０】
0005922202.tif 000043
【図３１】
0005922202.tif 000044
【図３２Ａ】
0005922202.tif 000045
【図３２Ｂ】
0005922202.tif 000046
【図３２Ｃ】
0005922202.tif 000047
【図３３】
0005922202.tif 000048
【図３４】
0005922202.tif 000049
【図３５】
0005922202.tif 000050
【図３６】
0005922202.tif 000051
【図３７】
0005922202.tif 000052