(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-09
(45)【発行日】2024-12-17
(54)【発明の名称】最適化装置、最適化プログラムおよび最適化方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20241210BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2021036691
(22)【出願日】2021-03-08
【審査請求日】2023-11-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】此島 眞喜子
(72)【発明者】
【氏名】田村 泰孝
【審査官】渡辺 順哉
(56)【参考文献】
【文献】国際公開第2020/202265(WO,A1)
【文献】米国特許出願公開第2017/364477(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
複数のビットを含むエネルギー関数における前記複数のビットの各々の値の反転に伴う前記エネルギー関数の値の差分によりビット反転の採否を選択して最適化を行う最適化装置であって、
メモリと、
前記メモリに接続された演算部と
を有し、
前記演算部は、
前記エネルギー関数における特定のビットの反転に伴う差分の3次以上の項の計算を、前記特定のビットに対応する変数を除いた各ビットに対応する変数の積である補助変数と、当該補助変数に対応する結合係数とを用いて実行し、
前記計算の実行において、前記エネルギー関数に含まれる前記複数のビットに対応する複数の変数の相互作用を表す結合係数を格納する前記メモリより、前記補助変数に対応する結合係数を読み出す、
ことを特徴とする最適化装置。
【請求項2】
前記演算部は、前記特定のビットの反転を採用する場合、前記特定のビットに対応する変数の反転による前記補助変数の変化分を計算する、
ことを特徴とする請求項1に記載の最適化装置。
【請求項3】
複数のビットを含むエネルギー関数における前記複数のビットの各々の値の反転に伴う前記エネルギー関数の値の差分によりビット反転の採否を選択して最適化する処理を、メモリと前記メモリに接続された演算部とを含むコンピュータに実行させる最適化プログラムにおいて、
前記エネルギー関数における特定のビットの反転に伴う差分の3次以上の項の計算を、前記特定のビットに対応する変数を除いた各ビットに対応する変数の積である補助変数と、当該補助変数に対応する結合係数とを用いて実行し、
前記計算の実行において、前記エネルギー関数に含まれる前記複数のビットに対応する複数の変数の相互作用を表す結合係数を格納する前記メモリより、前記補助変数に対応する結合係数を読み出す、
処理をコンピュータに実行させることを特徴とする最適化プログラム。
【請求項4】
複数のビットを含むエネルギー関数における前記複数のビットの各々の値の反転に伴う前記エネルギー関数の値の差分によりビット反転の採否を選択して最適化する処理を、メモリと前記メモリに接続された演算部とを含むコンピュータが実行する最適化方法において、
前記エネルギー関数における特定のビットの反転に伴う差分の3次以上の項の計算を、前記特定のビットに対応する変数を除いた各ビットに対応する変数の積である補助変数と、当該補助変数に対応する結合係数とを用いて実行し、
前記計算の実行において、前記エネルギー関数に含まれる前記複数のビットに対応する複数の変数の相互作用を表す結合係数を格納する前記メモリより、前記補助変数に対応する結合係数を読み出す、
処理をコンピュータが実行することを特徴とする最適化方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、最適化装置、最適化プログラムおよび最適化方法に関する。
【背景技術】
【0002】
現在の社会ではあらゆる分野で情報処理が行われている。これらの情報処理はコンピュータ等の演算装置で行われており、様々なデータを演算、加工し、意味のある結果を得ることにより、予測、決定、制御等が行われる。これらの情報処理の1つとして最適化処理があり重要な分野となっている。
【0003】
最適化処理の一つに離散最適化問題を解くものがある。離散最適化問題では、大規模で多変数になると、組み合わせ数が爆発的に増加し、全組み合わせを総当りで計算して求める手法では計算時間が現実的な域で収まらなくなる場合がある。
【0004】
このような大規模な多変数の離散最適化問題を解く方法としては、例えばイジング型のエネルギー関数を用いたシミュレーテッド・アニーリング(疑似焼き鈍し法(SA))がある。このSAでは、計算対象の問題を磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算を行う。
【0005】
イジングモデルを用いた最適化計算では、ビットを確率的に反転させてビットを1つ反転した場合のエネルギー変化を計算し、エネルギー変化に応じてビット反転を受け入れるか否かを採択することで、エネルギーを最小化する最適解を探索する。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2019-145010号公報
【文献】特開2019-46038号公報
【文献】国際公開第2015/190593号
【文献】米国特許出願公開第2019/0087388号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上記の従来技術では、3次以上の高次項を含むエネルギー関数E(x)の最小値を探索する場合、メモリから計算資源へ転送するパラメータの要素数が膨大なものとなるという問題がある。
【0008】
例えば、kを次数として、全ての次数に関するエネルギー関数E(x)を式で記述した一例は、k次の結合係数をk次の配列W1,2,…,kとして次の式(1)のとおりである。結合係数は、複数の変数の各々を磁性体の複数のスピンの各々に見立てたイジングモデルにおける、複数のスピンの各々の相互結合の強さを表している。
【0009】
【0010】
j1…jkは、各次数における要素の位置、xはバイナリ(0,1)またはスピン(1,-1)である。Wは、次数ごとに異なる配列であり、一般に多次元配列となる。
【0011】
式(1)について、次の式(2)のように書き換える。ZKはk次の項の結合係数であり、K次元配列となる。
【0012】
【0013】
ここで、xのi番目の要素の反転に伴うK次の項のエネルギーの変化分ΔEK(x,i)の計算式である式(3)と、全体の計算式である式(4)とは次のとおりとなる。なお、変化分なので、E0は消滅する。
【0014】
【0015】
【0016】
例えば、3次の項では、xj1xj2xj3に対して1ビット反転したx’j1x’j2x’j3を計算する。このため、反転した箇所をm、ビット差分をΔxmとすると、3次の項は、Zm,j2,j3Δxmxj2xj3、Zj1,m,j3xj1Δxmxj3、Zj1,j2,mxj1xj2Δxmを計算し、足し合わせたものとなる。
【0017】
つまり、計算を行うためのメモリアクセスの量は、Zの超平面を次数の数だけ必要とする。4次以上でも同様である。K×N^(K-1)個の要素の値をメモリから計算資源に転送することとなる。
【0018】
図7は、最小解探索にかかる従来の構成例を示すブロック図である。
図7に示すように、演算処理部201は、メモリ202より計算に用いるパラメータである結合係数(ZK)を読み出し、ある次数Kの項のxのi番目のビットx
iを変化させた状態でエネルギーの差分を計算する。j1~jkは、それぞれ1~Nまでの値を取りうる。
【0019】
演算処理部201は、読み込み部203、演算部204~206および加算部207を有する。演算処理部201は、ビットを反転する位置(i)を確定し、反転前と反転後のxiの差分値Δxiを含むベクトル(x)を入力し、メモリ202に保存されているK次の結合係数ZKから所定の部分を読み出してその項のエネルギーの差分ΔEkを出力する。
【0020】
読み込み部203は、多次元配列Zのある次元について、ビットを反転するxの位置(i)を固定した超平面を、各次元について選択しメモリ202より読み出してK個用意する。このメモリ202からの読み込みが、計算資源である演算処理部201への転送負荷の発生箇所である。
【0021】
演算部204~206および加算部207は、読み込み部203から出力された超平面ごとに積和の計算を行う。例えば、K=3であれば、演算部204での演算は次のとおりとなる。
【数5】
【0022】
加算部207は、演算部204~206の計算結果を足し合わせてΔEkを出力する。
【0023】
図8は、最小解探索にかかる従来の動作例を説明する説明図である。
図8において、Eの初期値は、式(2)に従って予め計算しておくものとする。この初期値は、最初の1回なので転送量に含めないものとする。
【0024】
図8に示すように、演算処理部201a~201cは、
図7の演算処理部201に相当し、次数がK、3、2の場合の演算を行う。乗算部208は、1次の場合において、変化させた位置(i)のUの値(U
i)と、Δx
iとの乗算を行う。
【0025】
演算処理部201a~201cおよび乗算部208での演算の後、加算部209は、それぞれの結果を足し合わせてΔE(x,i)を作成する。採否判定部210は、ΔE(x,i)をもとに、公知のメトロポリス基準などで変化させたビットの採否を判定する。採否判定部210は、採用する場合は現在のエネルギーEに対してEnext=E+ΔE(x,i)とし、不採用の場合はEnext=Eとする。
【0026】
図9は、超平面をメモリから読み出す一例を説明する説明図である。
図9の例では、3次の項をピックアップしている。
図9に示すように、ビット反転によりエネルギーの差分を計算資源(演算処理部201など)で計算するためには、次数個の超平面をメモリ(メモリ202など)から読み出すこととなる。
【0027】
例えば、次数K=3、ビット数Nであれば、3N2個の要素数をメモリから計算資源へ転送することとなる。このため、高次項を含むエネルギー関数E(x)の最小値を探索する場合は、転送量が大きくなり、転送時間がかかる場合がある。次数が4次以上であり、Nがより大きい場合は、更に転送量が大きくなり、転送時間が増加する。
【0028】
1つの側面では、最適化演算時のデータ転送量を抑えることができる最適化装置、最適化プログラムおよび最適化方法を提供することを目的とする。
【課題を解決するための手段】
【0029】
1つの案では、複数のビットを含むエネルギー関数における複数のビットの各々の値の反転に伴うエネルギー関数の値の差分によりビット反転の採否を選択して最適化を行う最適化装置であって、メモリと、メモリに接続された演算部とを有する。演算部は、エネルギー関数における特定のビットの反転に伴う差分の3次以上の項の計算を、特定のビットに対応する変数を除いた各ビットに対応する変数の積である補助変数と、補助変数に対応する結合係数とを用いて実行する。演算部は、計算の実行において、エネルギー関数に含まれる複数のビットに対応する複数の変数の相互作用を表す結合係数を格納するメモリより、補助変数に対応する結合係数を読み出す。
【発明の効果】
【0030】
最適化演算時のデータ転送量を抑えることができる。
【図面の簡単な説明】
【0031】
【
図1】
図1は、実施形態にかかる情報処理装置の構成例を示すブロック図である。
【
図2】
図2は、最小解探索部の構成例を示すブロック図である。
【
図3】
図3は、実施形態にかかる情報処理装置の動作例を示すフローチャートである。
【
図4】
図4は、パラメータの一例を説明する説明図である。
【
図5】
図5は、タイムチャートの比較例を説明する説明図である。
【
図6】
図6は、結合係数の一回あたりの転送量を説明する説明図である。
【
図7】
図7は、最小解探索にかかる従来の構成例を示すブロック図である。
【
図8】
図8は、最小解探索にかかる従来の動作例を説明する説明図である。
【
図9】
図9は、超平面をメモリから読み出す一例を説明する説明図である。
【発明を実施するための形態】
【0032】
以下、図面を参照して、実施形態にかかる最適化装置、最適化プログラムおよび最適化方法を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する最適化装置、最適化プログラムおよび最適化方法は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【0033】
実施形態では、最適化装置の一例として各種の演算処理を行う情報処理装置を例示する。この情報処理装置では、演算処理の一つとして、イジング型のエネルギー関数を用いたシミュレーテッド・アニーリングにおいて、ビット反転に伴うエネルギー関数の差分によりビット反転の採否を選択して最適化を行う。具体的には、情報処理装置は、1から複数のビットを確率的に反転させてビットを反転した場合のエネルギー変化を計算し、エネルギー変化に応じてビット反転を受け入れるか否かを採択することで、エネルギーを最小化する最適解を探索する。なお、実施形態はイジングモデルを用いて最適化問題を解く場合に限られるものではなく、三次以上の高次項を含むモデルを用いて最適化問題を解く場合にも適用可能である。
【0034】
実施形態の情報処理装置は、1から複数のビットをランダムに反転させて最適解を探索するモンテカルロ法を用いて、エネルギー関数(E)の最小エネルギーとなる状態xを求める。ここで、反転する候補となるi番目のビットの反転によるエネルギー関数(E)の反転前のエネルギーとの変化分(差分)をΔEiとする。実施形態の情報処理装置は、ΔEiを計算したうえで、そのΔEiをもとに、メトロポリス基準のなどによりi番目のビットにおける反転の採否を判定(選択)する。
【0035】
ここで、実施形態の情報処理装置におけるΔEiの計算について説明する。まず、前述した式(2)について、3次以上の項をZで括り、次の式(5)のように書き直す。
【0036】
【0037】
ここで、ビットの反転により生じるエネルギーの差ΔEを考えると、式(5)におけるE0は、定数なので不要となる。また、変数xについては、離散値であるので微分はできないが、結合しているxにおけるビットの変化による差分(一次差分)に着目し、一次差分をΔxとする。このΔxにより、1つ結合するxの変数を少なくすることで、ΔEiは次の式(6)のとおりとなる。
【0038】
【0039】
次いで、式(6)において、xから計算可能な補助ビット(補助変数とも呼ぶ)yi,mを導入する。この補助ビットyi,mは、全ての変数xの積(xj1,…xjk)から、反転する対象であるi番目のビットの変数xiを除いた積とする。yはxから計算可能であるため、yの導入によりビットそのものは増加しない。補助ビットyi,mを導入すると、式(6)は、次の式(7)のように書き直せる。
【0040】
【0041】
ここで、Zi,mを導入する。Zi,mは、yi,mに対応した結合係数である。これにより、ΔEiは、次の式(8)のように表すことができる。この式(8)の演算では、giで参照するZの要素数を1次下げることができる。
【0042】
【0043】
ビットの反転が採用される場合、エネルギーの更新については、変数xjの反転により、複数の補助変数yi,mの値が変化する可能性がある。この変化分をΔyi,mとすると、エネルギーの更新は、次の式(9)のとおりとなる。
【0044】
【0045】
実施形態の情報処理装置では、式(8)、(9)のとおり、ΔEiの計算における3次以上の項について計算する。具体的には、情報処理装置は、反転する候補となるビットに対応する変数を除いた各ビットに対応する変数の積である補助変数yi,mと、yi,mに対応する結合係数Zi,mとを用いてΔEiを計算する。このとき、情報処理装置は、エネルギー関数に関する全てのビットに対応する結合係数を格納するメモリより、補助変数に対応する結合係数Zi,mを読み出す。したがって、情報処理装置は、メモリより読み出す要素数を1次下げることができ、演算時のデータ転送量を抑えることができる。
【0046】
図1は、実施形態にかかる情報処理装置の構成例を示すブロック図である。
図1に示すように、情報処理装置100は、UI1、最小解探索部2および汎用CPU3(CPU:Central Processing Unit)を有し、これらの各部はバスなどで接続される。例えば、情報処理装置100としては、PC(Personal Computer)などを適用できる。
【0047】
UI1は、ユーザからのデータ入力、処理結果の出力などを行うユーザインターフェース(UI)である。エネルギー関数に関する全てのビットに対応する結合係数Zや、温度など外部から与えられるパラメータは、UI1を介してユーザによって入力される。
【0048】
最小解探索部2は、最適化に関する演算処理を行い、エネルギーを最小化する最適解を探索する処理部であり、メモリ10および演算処理部20を有する。汎用CPU3は、UI1や演算処理部20の処理に対するアプリケーションなどを扱う汎用CPUである。
【0049】
メモリ10は、HDD(Hard Disk Drive)やRAM(Random Access Memory)などであり、UI1を介して入力された結合係数Wなどのパラメータを格納する。
【0050】
演算処理部20は、式(8)、(9)のとおりにΔEiを計算し、そのΔEiをもとに、メトロポリス基準のなどによりi番目のビットにおける反転の採否を判定して最適解を探索する処理部である。演算処理部20には、ASIC(Application Specific Integrated Circuit)などの専用ハードウェア装置、FPGA(Field-Programmable Gate Array)、GPU(Graphics Processing Unit)、汎用CPUなどを適用できる。
【0051】
例えば、演算処理部20は、メモリ10に記憶されたプログラムを読み出して実行することで、最適化に関する演算処理を行う。なお、演算処理部20が実行するプログラムは、メモリ10に記憶されていなくてもよい。例えば、情報処理装置100が読み取り可能な記憶媒体に記憶されたプログラムを読み出し、演算処理部20が実行してもよい。情報処理装置100が読み取り可能な記憶媒体は、例えば、CD-ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN等に接続された装置にプログラムを記憶させておき、情報処理装置100がこれらからプログラムを読み出して実行するようにしてもよい。また、演算処理部20で行われる各種処理機能は、クラウドコンピューティングにより、複数のコンピュータが協働して実行してもよい。
【0052】
図2は、演算処理部20の構成例を示すブロック図である。
図2に示すように、演算処理部20は、演算部21、22、23、加算部24、25、26、乗算部27および採否判定部28を有する。なお、演算処理部20では、Eの初期値、h
i、g
iの初期値は式(8)に従って計算しておくものとする。図示例では、主にΔy,mを計算し、その結果に従いΔEを計算して採否を判定する演算処理部20の構成を例示している。
【0053】
演算部21は、メモリ10に格納された全てのビットに対応する結合係数Zから、反転する候補となるビットに対応する次元を取り除いたZi,mを読み込み、式(8)に従い演算を行う。
【0054】
演算部22は、変数xと、変化させるビットの候補のiからΔy,mを計算する。
【0055】
演算部23および加算部24は、式(8)に従い、hiに関する計算を行う。なお、hiを更新するか否かは、採否判定部28における採否判定に従うものであり、採否判定部28において採用すると判定した場合にhiが更新される。
【0056】
加算部25は、演算部21の演算結果をもとに、式(8)に従ってgiに関する計算を行う。なお、giを更新するか否かは、採否判定部28における採否判定に従うものであり、採否判定部28において採用すると判定した場合にgiが更新される。
【0057】
加算部26は、加算部24、25の演算結果を足し合わせる。乗算部27は、加算部26の演算結果に-Δxiをかけ合わせる。すなわち、加算部26と、乗算部27との演算では、式(8)に従ってΔEiの計算を行う。
【0058】
採否判定部28は、乗算部27までの演算結果であるΔE(x,i)をもとに、メトロポリス基準により変化させたビットの採否を判定する。
【0059】
図3は、実施形態にかかる情報処理装置の動作例を示すフローチャートである。具体的には、
図3のフローチャートでは、3次の項を持つエネルギー関数の最小解(x)を求める場合の動作の一例を示している。
【0060】
図3に示すように、処理が開始されると、演算処理部20は、xの初期値x0に対して、エネルギー関数Eの初期値E(0)を、エネルギー関数に関する次の式(10)より求める(S1)。
【0061】
【0062】
次いで、演算処理部20は、次の式(11)に従い、hiの初期値hi(0)を用意する(S2)。ここで、hiは、Nビット(N:ビット数)のベクトルである。
【0063】
【0064】
次いで、演算処理部20は、次の式(12)に従い、giの初期値gi(0)を用意する(S3)。ここで、giは、Nビットのベクトルである。
【0065】
【0066】
次いで、演算処理部20は、xにおいて反転する1ビット(i)をランダムに選択し、選択されたビットの反転前後の差をΔxiとする(S4)。
【0067】
次いで、演算処理部20は、次の式(13)に従い、Δxi、hi、giからΔEiを計算する(S5)。
【0068】
【0069】
次いで、演算処理部20の採否判定部28では、計算したΔEiを用いてメトロポリス基準などによりビット反転の採否を判定する(S6)。例えば、メトロポリス基準の場合、採否判定部28は、一例として区間0≦rand≦1の一様乱数randを発生させる。次いで、採否判定部28は、rand>exp(ΔE×β)であればビット反転を採用するものと判定する。ここで、βは、逆温度である。
【0070】
不採用の場合(S6:不採用)、演算処理部20はS10へ処理を進める。採用の場合(S6:採用)、演算処理部20は、次の式(14)に従い、エネルギーEを更新する(S7)。更新されたエネルギーE(x,t+1)は、更新前のEと、乗算部27の演算結果である式(13)のΔEiを足し合わせた値である。
【0071】
【0072】
次いで、演算処理部20は、演算部23および加算部24の演算により、次の式(15)に従い、hiを更新する(S8)。
【0073】
【0074】
次いで、演算処理部20は、演算部21、演算部22および加算部25の演算により、式(16)に従い、giを更新する(S9)。ここで、Δy,mは、Δy,m=ΔxjΔxkである。
【0075】
【0076】
次いで、演算処理部20は、S4~S9の演算処理を所定の回数繰り返す、または、所定のエネルギーが得られるなどの終了条件を満たしたか否かを判定する(S10)。終了条件を満たした場合(S10:Yes)、演算処理部20は、最適化が得られたものとして処理を終了する。終了条件を満たしていない場合(S10:No)、演算処理部20は、S4へ処理を戻す。このように、演算処理部20は、所定の回数または所定のエネルギーが得られるまでビットの反転を繰り返す。
【0077】
以上のように、情報処理装置100は、エネルギー関数における特定のビット(i)の反転に伴う差分の3次以上の項について、特定のビットに対応する変数を除いた各ビットに対応する変数の積である補助変数(yi,m)と、補助変数に対応する結合係数(Zi,m)とを用いて計算する。そして、情報処理装置100は、この計算の際には、エネルギー関数に関する全てのビットに対応する複数の変数の相互作用を表す結合係数(Z)を格納するメモリ10より、補助変数に対応する結合係数を読み出す。これにより、情報処理装置100は、メモリ10より読み出す要素数を1次下げることができ、演算時のデータ転送量を抑えることができる。
【0078】
また、情報処理装置100は、特定のビットの反転を採用する場合、特定のビットに対応する変数の反転による補助変数の変化分を計算する(S8、S9)。これにより、情報処理装置100では、特定のビットの反転を採用する場合には、ビット反転に合わせて補助変数の値を更新できる。
【0079】
図4は、パラメータの一例を説明する説明図である。具体的には、
図4では、パラメータZ
i,mについて3次の場合を例示している。
図4では、Δx
iを括りだしているが、x
iが変化した際には、x
j,x
kも変化する場合がある(同じビット位置を指している場合)。したがって、
図4に示すように、更新する際には、変化している箇所へのアクセスをすればよい。このため、エネルギー関数に関する全てのビットに対応する結合係数(Z)への一度のアクセスは、N
3ではなく、「最大で」N
2となる。
【0080】
図5は、タイムチャートの比較例を説明する説明図である。
図5において、ケースC1は従来の最適解探索に関する演算処理のタイムチャートであり、ケースC2は実施形態の最適解探索に関する演算処理のタイムチャートである。
【0081】
図5に示すように、従来のケースC1では、ΔEの計算は結合係数(Z)について少なくとも超平面単位で転送してから処理を行う。これに対し、実施形態のケースC1では、g1(t)~gn(t)各々について独立して転送・処理が可能である。大抵の場合、ビット数>次数なので、一度に転送すべき結合係数の数は、従来のケースC1のほうが実施形態のケースC2より大きくなる。よって、データのloadに関する時間の総計はケースC2の方が短くなる。
【0082】
従来の最適解探索では、1ビット反転に伴うメモリから計算資源へのデータ転送量は、1回のエネルギーの差分の計算につき、スピン数(ビット数)をN、次数をkとしてkN(k-1)となる。本実施形態の最適解探索では、1回のエネルギーの差分の計算につき、N(k-1)以下とすることができる。
【0083】
図6は、結合係数の一回あたりの転送量を説明する説明図である。N、kとデータ転送量の関係は
図6のグラフG1示すようになり、本実施形態の最適解探索では、従来と比較してデータ転送量を抑えることができる。また、従来の最適解探索では、kが大きくなるとデータ転送量が大きくなるが、本実施形態では、補助変数を用いる方法を再帰的に適用することで、転送する結合係数の要素数をk=3の場合と同様にすることができる。このため、本実施形態では、kが大きくなると、データ転送量を抑える効果がより高くなる。例えば、充足可能性問題(SAT)をイジングモデルに適用して最適解探索を行う場合は、kが大きくなることから、データ転送量を抑える効果がより顕著なものとなる。
【0084】
以上の実施形態に関し、さらに以下の付記を開示する。
【0085】
(付記1)複数のビットを含むエネルギー関数における前記複数のビットの各々の値の反転に伴う前記エネルギー関数の値の差分によりビット反転の採否を選択して最適化を行う最適化装置であって、
メモリと、
前記メモリに接続された演算部と
を有し、
前記演算部は、
前記エネルギー関数における特定のビットの反転に伴う差分の3次以上の項の計算を、前記特定のビットに対応する変数を除いた各ビットに対応する変数の積である補助変数と、当該補助変数に対応する結合係数とを用いて実行し、
前記計算の実行において、前記エネルギー関数に含まれる前記複数のビットに対応する複数の変数の相互作用を表す結合係数を格納する前記メモリより、前記補助変数に対応する結合係数を読み出す、
ことを特徴とする最適化装置。
【0086】
(付記2)前記演算部は、前記特定のビットの反転を採用する場合、前記特定のビットに対応する変数の反転による前記補助変数の変化分を計算する、
ことを特徴とする付記1に記載の最適化装置。
【0087】
(付記3)複数のビットを含むエネルギー関数における前記複数のビットの各々の値の反転に伴う前記エネルギー関数の値の差分によりビット反転の採否を選択して最適化する処理を、メモリと前記メモリに接続された演算部とを含むコンピュータに実行させる最適化プログラムにおいて、
前記エネルギー関数における特定のビットの反転に伴う差分の3次以上の項の計算を、前記特定のビットに対応する変数を除いた各ビットに対応する変数の積である補助変数と、当該補助変数に対応する結合係数とを用いて実行し、
前記計算の実行において、前記エネルギー関数に含まれる前記複数のビットに対応する複数の変数の相互作用を表す結合係数を格納する前記メモリより、前記補助変数に対応する結合係数を読み出す、
処理をコンピュータに実行させることを特徴とする最適化プログラム。
【0088】
(付記4)前記特定のビットの反転を採用する場合、前記特定のビットに対応する変数の反転による前記補助変数の変化分を計算する、
処理をさらに前記コンピュータに実行させることを特徴とする付記3に記載の最適化プログラム。
【0089】
(付記5)複数のビットを含むエネルギー関数における前記複数のビットの各々の値の反転に伴う前記エネルギー関数の値の差分によりビット反転の採否を選択して最適化する処理を、メモリと前記メモリに接続された演算部とを含むコンピュータが実行する最適化方法において、
前記エネルギー関数における特定のビットの反転に伴う差分の3次以上の項の計算を、前記特定のビットに対応する変数を除いた各ビットに対応する変数の積である補助変数と、当該補助変数に対応する結合係数とを用いて実行し、
前記計算の実行において、前記エネルギー関数に含まれる前記複数のビットに対応する複数の変数の相互作用を表す結合係数を格納する前記メモリより、前記補助変数に対応する結合係数を読み出す、
処理をコンピュータが実行することを特徴とする最適化方法。
【0090】
(付記6)前記特定のビットの反転を採用する場合、前記特定のビットに対応する変数の反転による前記補助変数の変化分を計算する、
処理をさらに前記コンピュータが実行することを特徴とする付記5に記載の最適化方法。
【符号の説明】
【0091】
1…UI
2…最小解探索部
3…汎用CPU
10、202…メモリ
20、201、201a~201c…演算処理部
21~23、204~206…演算部
24~26、207、209…加算部
27、208…乗算部
28、210…採否判定部
100…情報処理装置
203…読み込み部
C1、C2…ケース
G1…グラフ