(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-26
(45)【発行日】2024-01-10
(54)【発明の名称】最適化装置及び最適化方法
(51)【国際特許分類】
G06N 99/00 20190101AFI20231227BHJP
【FI】
G06N99/00 180
(21)【出願番号】P 2020055372
(22)【出願日】2020-03-26
【審査請求日】2022-12-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】神田 浩一
(72)【発明者】
【氏名】田村 泰孝
【審査官】武田 広太郎
(56)【参考文献】
【文献】特開2020-038435(JP,A)
【文献】特開2019-179364(JP,A)
【文献】国際公開第2020/054061(WO,A1)
【文献】鷹野 芙美代 ほか,組合せ最適化問題における制約条件を考慮したQUBOソルバ,情報処理学会 研究報告 アルゴリズム(AL) 2019-AL-175,日本,情報処理学会,2019年
(58)【調査した分野】(Int.Cl.,DB名)
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
イジングモデルのエネルギーを表す評価関数に含まれる複数の状態変数のそれぞれの間の相互作用の大きさを示す複数の重み係数の少なくとも一部である、第1の重み係数群を記憶する第1の記憶部と、
前記複数の重み係数のうち、前記複数の状態変数をそれぞれ含む複数の状態変数群の何れかにおいての、値が1である状態変数に関する第2の重み係数群をそれぞれ記憶する複数の第2の記憶部と、
前記複数の状態変数のうちN(Nは2以上の整数)の2乗個の第1の状態変数をN行N列に並べたときに、指定された2列または2行に含まれる前記第1の状態変数の値を前記2列の間または前記2行の間で入れ替えを行うか否かを、前記第1の重み係数群及び前記第2の重み係数群を用いて計算される前記イジングモデルの前記エネルギーの変化量に基づいて判定し、各行と各列に含まれる前記第1の状態変数の値の和が1である第1の制約を満たしつつ、前記入れ替えによる更新を行う、または、前記複数の状態変数のうち指定されたグループに含まれる複数の第2の状態変数の値の何れか2つの値の更新を行うか否かを、前記エネルギーの前記変化量に基づいて判定し、前記グループに含まれる前記複数の第2の状態変数の和が1である第2の制約を満たしつつ、前記2つの値の更新を行う、更新処理を繰り返すことで前記エネルギーを最小化する最適解を探索し、探索結果を出力する処理を、前記複数の状態変数群のそれぞれについて行う探索部と、
前記複数の状態変数群に対して共通の、前記2列、前記2行、または前記グループを指定する制御部と、
を有する最適化装置。
【請求項2】
前記制御部は、記憶装置に記憶されている前記複数の重み係数のうち、前記第1の重み係数群として読み出して前記第1の記憶部に記憶させる対象を、所定回数の前記更新処理ごとに入れ替える、請求項1に記載の最適化装置。
【請求項3】
前記制御部は、前記記憶装置からの前記第1の重み係数群の読み出しを、複数の読み出し方を組み合わせて行う、請求項2に記載の最適化装置。
【請求項4】
前記第1の記憶部は、第3の記憶部と第4の記憶部を有し、
前記制御部は、前記第1の重み係数群として前記第1の記憶部に記憶される第1の対象が前記第3の記憶部に記憶されており、前記第1の対象を用いて前記更新処理が行われているときに、前記第1の重み係数群として前記第1の記憶部に記憶される第2の対象を前記記憶装置から読み出して、前記第4の記憶部に記憶させる、
請求項2または3に記載の最適化装置。
【請求項5】
前記複数の状態変数は、前記第1の制約を受ける前記Nの2乗個の前記第1の状態変数と、前記第2の制約を受ける前記複数の第2の状態変数と、前記第1の制約及び前記第2の制約を受けない第3の状態変数とを有し、
前記探索部は、前記第1の重み係数群または前記第2の重み係数群に基づいて、前記入れ替えによる更新、前記2つの値の更新、または1つの前記第3の状態変数の値の更新の何れかを行う、
請求項1乃至4の何れか一項に記載の最適化装置。
【請求項6】
前記探索部は、前記更新処理の結果に基づいて、前記第1の重み係数群を用いて前記第2の重み係数群を更新する、
請求項1乃至5の何れか一項に記載の最適化装置。
【請求項7】
第1の記憶部が、イジングモデルのエネルギーを表す評価関数に含まれる複数の状態変数のそれぞれの間の相互作用の大きさを示す複数の重み係数の少なくとも一部である、第1の重み係数群を記憶し、
複数の第2の記憶部のそれぞれが、前記複数の重み係数のうち、前記複数の状態変数をそれぞれ含む複数の状態変数群の何れかにおいての、値が1である状態変数に関する第2の重み係数群を記憶し、
探索部が、前記複数の状態変数のうちN(Nは2以上の整数)の2乗個の第1の状態変数をN行N列に並べたときに、指定された2列または2行に含まれる前記第1の状態変数の値を前記2列の間または前記2行の間で入れ替えを行うか否かを、前記第1の重み係数群及び前記第2の重み係数群を用いて計算される前記イジングモデルの前記エネルギーの変化量に基づいて判定し、各行と各列に含まれる前記第1の状態変数の値の和が1である第1の制約を満たしつつ、前記入れ替えによる更新を行う、または、前記複数の状態変数のうち指定されたグループに含まれる複数の第2の状態変数の値の何れか2つの値の更新を行うか否かを、前記エネルギーの前記変化量に基づいて判定し、前記グループに含まれる前記複数の第2の状態変数の和が1である第2の制約を満たしつつ、前記2つの値の更新を行う、更新処理を繰り返すことで前記エネルギーを最小化する最適解を探索し、探索結果を出力する処理を、前記複数の状態変数群のそれぞれについて行い、
制御部が、前記複数の状態変数群に対して共通の、前記2列、前記2行、または前記グループを指定する、
最適化方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、最適化装置及び最適化方法に関する。
【背景技術】
【0002】
ノイマン型コンピュータが不得意とする大規模な離散最適化問題を計算する装置として、イジング型の評価関数(エネルギー関数などとも呼ばれる)を用いたイジング装置(ボルツマンマシンとも呼ばれる)がある(たとえば、特許文献1参照)。
【0003】
イジング装置による計算では、計算対象の問題は磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えられる。そして、疑似焼き鈍し法やレプリカ交換法(交換モンテカルロ法とも呼ばれる)などのマルコフ連鎖モンテカルロ法により、イジングモデル型の評価関数の値(イジングモデルのエネルギーに相当する)が最小となる状態の探索が行われる。
【0004】
従来、デジタル回路を用いてマルコフ連鎖モンテカルロ法を行うことでエネルギーが最小となる状態を探索する最適化装置がある(たとえば、特許文献2参照)。従来の最適化装置は、一度に1つの状態変数の値だけ変化するとしてエネルギーの変化量(以下単にエネルギー変化という場合もある)を計算し、そのエネルギー変化に対して温度に対応するノイズ値を加えた値に応じてビットの変化を許容するか否かを決定する。エネルギーが増加する状態変数の値の変化も所定の確率で許容され、温度が低くなるにつれてその確率は低くなる。
【0005】
ところで、最適化問題には、評価関数に含まれる複数の状態変数のうち値が1となる状態変数の数を1つのみとする制約(1-hot制約)をもつものがある。1-hot制約には、各状態変数が制約式の組に一度しか現れないものと、N2個の状態変数をN行N列の行列状に並べたときに各行と各列に含まれる状態変数の値の和が1となるものがある。以下、前者の1-hot制約を1-Way 1-hot制約、後者の1-hot制約を2-Way 1-hot制約という。
【0006】
たとえば、9つの状態変数(x1~x9)について、x1+x2+x3=1、x4+x5+x6=1、x7+x8+x9=1とする制約は、1-Way 1-hot制約である。交通量最適化問題やビンパッキング問題などは、1-Way 1-hot制約をもつ。
【0007】
たとえば、x1~x9を3行3列の行列状に並べたときに、x1+x2+x3=1、x4+x5+x6=1、x7+x8+x9=1、x1+x4+x7=1、x2+x5+x8=1、x3+x6+x9=1とする制約は、2-Way 1hot制約である。巡回セールスマン問題、配車計画問題、2次割り当て問題などは、2-Way 1hot制約をもつ。
【先行技術文献】
【特許文献】
【0008】
【文献】特開2016-51349号公報
【文献】特開2018-41351号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
上記のように、一度に変化する状態変数の数を1つとした場合、最適化装置は、ハミング距離=1の状態遷移を繰り返しながらエネルギーが最少となる基底状態の探索を行う。そのため、従来の最適化装置では、1-hot制約を満たさない状態への遷移も発生し、遷移が起こりうる状態の数(探索空間)が1-hot制約を満たす状態の数よりも大きい。
【0010】
1-hot制約を満たす状態以外の状態の探索を除外することで探索空間を狭めることができるが、その場合、一度に変化する状態変数の数が複数となり、上記のエネルギー変化を計算するハードウェアの複雑化を招く問題がある。
【0011】
1つの側面では、本発明は、1-hot制約を含む問題をハードウェアの複雑化を抑えて計算可能な最適化装置及び最適化方法を提供することを目的とする。
【課題を解決するための手段】
【0012】
1つの実施態様では、イジングモデルのエネルギーを表す評価関数に含まれる複数の状態変数のそれぞれの間の相互作用の大きさを示す複数の重み係数の少なくとも一部である、第1の重み係数群を記憶する第1の記憶部と、前記複数の重み係数のうち、前記複数の状態変数をそれぞれ含む複数の状態変数群の何れかにおいての、値が1である状態変数に関する第2の重み係数群をそれぞれ記憶する複数の第2の記憶部と、前記複数の状態変数のうちN(Nは2以上の整数)の2乗個の第1の状態変数をN行N列に並べたときに、指定された2列または2行に含まれる前記第1の状態変数の値を前記2列の間または前記2行の間で入れ替えを行うか否かを、前記第1の重み係数群及び前記第2の重み係数群を用いて計算される前記イジングモデルの前記エネルギーの変化量に基づいて判定し、各行と各列に含まれる前記第1の状態変数の値の和が1である第1の制約を満たしつつ、前記入れ替えによる更新を行う、または、前記複数の状態変数のうち指定されたグループに含まれる複数の第2の状態変数の値の何れか2つの値の更新を行うか否かを、前記エネルギーの前記変化量に基づいて判定し、前記グループに含まれる前記複数の第2の状態変数の和が1である第2の制約を満たしつつ、前記2つの値の更新を行う、更新処理を繰り返すことで前記エネルギーを最小化する最適解を探索し、探索結果を出力する処理を、前記複数の状態変数群のそれぞれについて行う探索部と、前記複数の状態変数群に対して共通の、前記2列、前記2行、または前記グループを指定する制御部と、を有する最適化装置が提供される。
【0013】
また、1つの実施態様では、最適化方法が提供される。
【発明の効果】
【0014】
1つの側面では、本発明は、1-hot制約を含む問題をハードウェアの複雑化を抑えて計算できる。
【図面の簡単な説明】
【0015】
【
図1】第1の実施の形態の最適化装置の一例を示す図である。
【
図2】1-Way 1-hot制約の一例を示す図である。
【
図3】2-Way 1-hot制約の一例を示す図である。
【
図4】2-Way 1-hot制約をもつ問題に対する処理例を示す図である。
【
図6】第1の実施の形態の最適化装置の処理の一例の流れを示すフローチャートである。
【
図7】第1の実施の形態の最適化装置の変形例を示す図である。
【
図8】第2の実施の形態の最適化装置の一例を示す図である。
【発明を実施するための形態】
【0016】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の最適化装置の一例を示す図である。
【0017】
最適化装置10は、イジングモデルのエネルギーを最小化する最適解を探索する。
イジングモデルのエネルギーは、たとえば、以下の式(1)に示すような評価関数(E(x))で定義される。
【0018】
【0019】
右辺第1項は、イジングモデルに含まれる全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。xiは、i番目の状態変数である。xjは、j番目の状態変数である。Wijは、i番目の状態変数とj番目の状態変数との間の重み(たとえば、結合の強さ)を示す重み係数である。なお、Wii=0である。また、Wij=Wjiであることが多い(つまり、重み係数による係数行列は対称行列である場合が多い)。
【0020】
右辺第2項は、全状態変数のそれぞれのバイアス係数と状態変数の値との積の総和を求めたものである。biは、i番目の状態変数に対するバイアス係数を示している。cは定数である。
【0021】
たとえば、イジングモデルにおけるスピンの「-1」は、状態変数の値「0」に対応する。イジングモデルにおけるスピンの「+1」は、状態変数の値「1」に対応する。このため、状態変数を、0または1の値をとるビットと呼ぶこともできる。
【0022】
式(1)の値が最小となる状態変数の値の組合せが問題の解(最適解)となる。
第1の実施の形態の最適化装置10は、記憶部11、複数(p個)の記憶部12a1,12a2,…,12ap、探索部13、制御部14を有する。
【0023】
記憶部11は、複数の状態変数のそれぞれの間の相互作用の大きさを示す複数の重み係数の少なくとも一部である重み係数群を記憶する。記憶部11は、式(1)の全ての重み係数を保持可能な記憶容量を有している場合には、全ての重み係数を記憶してもよい。記憶部11の一例として、アクセス速度がDRAM(Dynamic Random Access Memory)などと比べて高速なSRAM(Static Random Access Memory)などを用いることができる。
【0024】
記憶部12a1~12apのそれぞれは、式(1)に含まれる重み係数のうち、全状態変数をそれぞれ含む複数の状態変数群(レプリカ)のそれぞれにおいて、値が1である状態変数に関する重み係数群を記憶する。どの状態変数の値が1であるかについては、レプリカごとに独立である。
【0025】
また、記憶部12a1~12apのそれぞれは、全状態変数群の値や後述の局所場を保持してもよいが、これらは探索部13内のレジスタに保持されるようにしてもよい。
記憶部12a1~12apの一例として、SRAMなどを用いることができる。なお、記憶部12a1~12apは、1つの記憶装置(SRAMなど)の複数の記憶領域であってもよい。
【0026】
探索部13は、各レプリカについてエネルギーを最小化する最適解の探索処理を行う。
探索部13は、1-Way 1-hot制約、または2-Way 1-hot制約を満たしつつ、状態変数を更新する更新処理を繰り返すことで、イジングモデルのエネルギーを最小化する最適解を探索し、探索結果を出力する処理をレプリカごとに行う。
【0027】
1-Way 1-hot制約を満たしつつ更新処理が行われる場合、探索部13には、制御部14によって、全レプリカに対して共通の、グループが指定される。そして、探索部13は、記憶部11及び記憶部12a1~12apに記憶されている重み係数群を用いて計算されるエネルギー変化に基づいて、グループに含まれる複数の状態変数の値の何れか2つの値の更新を行うか否かの判定を行う。1-Way 1-hot制約を満たすためには、グループに含まれる状態変数のうち、値が1である状態変数を0に更新した場合、値が0である状態変数を1つだけ1に更新することになる。
【0028】
図2は、1-Way 1-hot制約の一例を示す図である。
図2の例では、それぞれ1-Way 1-hot制約をもつM個のグループが設けられている。各グループは、q個の状態変数を有する。たとえば、制御部14によって、グループインデックス=kのグループが指定された場合、探索部13は、全レプリカに対してグループインデックス=kのグループについての更新処理を行う。
図2の例では、グループインデックス=kのグループ内のx
<ki>が1であり、その他の状態変数(たとえば、x
<kj>)が0となっている。iやjは、グループ内での状態変数のインデックスを示し、<ki>=(k-1)q+iである。なお、同じグループの状態変数であっても、どの状態変数が1または0であるかは、レプリカごとに独立である。
【0029】
ところで、式(1)において、xiの値が変化して1-xiとなると、xiの増加分は、Δxi=(1-xi)-xi=1-2xiと表せる。この値の変化に伴うエネルギー変化(ΔEi)は、以下の式(2)で表される。
【0030】
【0031】
式(2)において、xiが1から0に変化するとき、Δxiは-1となり、xiが0から1に変化するとき、Δxiは1となる。なお、hiは局所場(ローカルフィールド)と呼ばれ、Δxiに応じてhiに符号(+1または-1)を乗じたものがΔEiである。
【0032】
xjが0から1に変化するときのhiの変化分は、Δhi
(j)=+Wij、xjが1から0に変化するときのhiの変化分は、Δhi
(j)=-Wijである。同様に、xiが変化したときのxjについてのhjの変化分は、Δhj
(i)=ΔxiWij、と表せる。
【0033】
したがって、xi,xjが両方変化したときのエネルギー変化は、以下の式(3)で表せる。
【0034】
【0035】
前述のように、1-Way 1-hot制約を満たすある状態から、その制約を満たす別の状態に遷移するには、2つの状態変数の値を変化させることになる。xiが1から0に変化するとともにxjが0から1に変化する場合のエネルギー変化をΔEjと表記すると、Δxi=-1、Δxj=1であるため、式(3)から、ΔEjは以下の式(4)で表せる。
【0036】
【0037】
なお、式(1)において、W
ijx
ix
jは、x
i,x
jの何れか一方が0であれば、エネルギーに関与しないため、式(4)のW
ijはなくてもよい。
以上のことから、
図2の例において、x
<ki>が1から0、x
<kj>が0から1に変化するときのエネルギー変化をΔE
kと表記すると、式(4)からΔE
kは以下の式(5)で表せる。
【0038】
【0039】
探索部13は、各レプリカにおいて、指定されたグループに含まれる複数の状態変数のうち、値が0である状態変数のそれぞれについて、上記のようにエネルギー変化を計算する。
【0040】
探索部13は、各レプリカにおいて、計算したエネルギー変化に基づいて、疑似焼き鈍し法やレプリカ交換法などを用いて、そのエネルギー変化を生じさせる状態変数の変化を受け入れるか否かを判定する。探索部13は、式(1)のE(x)が小さくなる状態変数の変化を優先的に受け入れるが、E(x)が大きくなる変化についても確率的に許容する。
【0041】
探索部13は、グループ内で値を0から1に更新する状態変数が決定された場合、その状態変数の値を0から1に更新するとともに、グループ内で現在の値が1である状態変数の値を1から0に更新する。さらに、探索部13は、局所場を更新する。
【0042】
たとえば、あるレプリカについて、
図2のx
<ki>が1から0、x
<kj>が0から1に変化するとき、n個の全状態変数(x
1~x
n)についての局所場(h
1~h
n)は、以下の式(6)に基づいて更新される。
【0043】
【0044】
式(6)に含まれる重み係数のうち、W1<ki>~Wn<ki>は、更新前の値が1であるx<ki>に関する重み係数群であるため、記憶部12a1~12apの何れかに記憶されている。また、W1<kj>~Wn<kj>は、記憶部11に予め記憶される。このため、これらの重み係数群は、記憶部11と記憶部12a1~12apの何れかから読み出されて用いられる。
【0045】
また、探索部13は、値を0から1に更新した状態変数に関する重み係数群を記憶部11から読み出して記憶部12a1~12apに記憶させる。
一方、2-Way 1-hot制約を満たしつつ更新処理が行われる場合、探索部13には、制御部14によって、全レプリカに共通の2列または2行が指定される。そして、探索部13は、記憶部11及び記憶部12a1~12apに記憶されている重み係数群に基づいて、指定された2列または2行に含まれる状態変数の値を2列の間または2行の間で入れ替えを行うか否かの判定を行う。2-Way 1-hot制約が満たされている場合、各列、各行に含まれる複数の状態変数のうちの1つの値が1である。そのため2列または2行に含まれる状態変数の値を入れ替えても制約が満たされる。
【0046】
図3は、2-Way 1-hot制約の一例を示す図である。
図3の例では、2-Way 1-hot制約をもつN行N列(Nは2以上の整数)に配列された状態変数が示されている。たとえば、制御部14によって、列kと列k’が指定された場合、探索部13は、いずれのレプリカについても列kと列k’に含まれる状態変数について、更新処理を行う。
【0047】
図3の例では、列kの行iの状態変数であるx
<ki>が1であり、列kのその他の状態変数(たとえば、行jの状態変数であるx
<kj>)が0となっている。また、列k’の行jの状態変数であるx
<k’j>が1であり、列k’のその他の状態変数(たとえば、行iの状態変数であるx
<k’i>)が0となっている。なお、同じ列の状態変数であっても、どの行の状態変数が1または0であるかは、レプリカごとに独立である。
【0048】
列kと列k’に含まれる状態変数の値を入れ替えることは、
図3の場合、x
<kj>とx
<k’i>を0から1に変化させ、x
<ki>とx
<k’j>を1から0に変化させることと同じである。
【0049】
このように4つの状態変数を変化させるときのエネルギー変化をΔEkk’と表記すると、ΔEkk’は以下の式(7)で表せる。
【0050】
【0051】
探索部13は、各レプリカにおいて指定された列kと列k’について、上記のようなエネルギー変化の計算を一度行えばよい。
探索部13は、計算したエネルギー変化に基づいて、疑似焼き鈍し法やレプリカ交換法などを用いて、そのエネルギー変化を生じさせる状態変数の変化を受け入れるか否か(入れ替えを行うか否か)を判定する。探索部13は、式(1)のE(x)が小さくなる状態変数の変化を優先的に受け入れるが、E(x)が大きくなる変化についても確率的に許容する。つまり、ΔEkk’が正の値になる場合も、確率的に列kと列k’に含まれる状態変数の値の入れ替えを許容する。
【0052】
たとえば、あるレプリカについて、列kと列k’に含まれる状態変数の値の入れ替えが許容された場合、x<kj>とx<k’i>を0から1に変化させ、x<ki>とx<k’j>を1から0に変化させる。さらに、探索部13は、局所場を更新する。
【0053】
x<kj>とx<k’i>を0から1に変化させ、x<ki>とx<k’j>を1から0に変化させる場合、n個の全状態変数(x1~xn)についての局所場(h1~hn)は、以下の式(8)に基づいて更新される。
【0054】
【0055】
式(8)に含まれる重み係数のうち、W1<ki>~Wn<ki>と、W1<k’j>~Wn<k’j>は、更新前の値が1であるx<ki>とx<k’j>に関する重み係数群であるため、記憶部12a1~12apの何れかに記憶されている。また、W1<kj>~Wn<kj>と、W1<k’i>~Wn<k’i>は、記憶部11に予め記憶される。このため、これらの重み係数群は、記憶部11と記憶部12a1~12apの何れかから読み出されて用いられる。
【0056】
列kと列k’について、上記と同様な処理が他のレプリカにおいても行われる。2行の間の入れ替えが行われる場合についても、同様の処理が行われる。
また、探索部13は、値を0から1に更新した状態変数に関する重み係数群を記憶部11から読み出し、記憶部12a1~12apに記憶させる。
【0057】
探索部13は、上記のような処理を、指定されるグループや列または行を変えて、探索終了条件(たとえば、所定の繰り返し回数が終了したかなど)が満たされるまで繰り返す。そして、探索部13は、各レプリカについて、たとえば、探索終了条件が満たされたときの全状態変数の値を制御部14に出力する。
【0058】
なお、探索部13は、各レプリカについて並列に処理してもよいしパイプライン的に動作してもよい。
探索部13は、たとえば、式(5)~式(8)を計算する、加減算回路やセレクタなどを含むASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路にて実現できる。
【0059】
制御部14は、探索部13に処理させるグループ、2列または2行を指定する。これらは全レプリカについて共通の、グループ、2列または2行である。制御部14は、処理させるグループ、2列または2行を所定の順序で指定する。制御部14は、たとえば、グループインデックスの昇順に処理されるグループを指定する。また、制御部14は、たとえば、探索部13に処理させる2列を、列1と列2、列1と列3、…、列1と列N、列2と列3、列3と列4…のように指定する。
【0060】
また、制御部14は、記憶容量の制限などにより記憶部11が式(1)の全ての重み係数を保持しない場合、一部の重み係数群を、記憶装置20から読み出して、記憶部11に記憶させる。記憶装置20は、たとえば、DRAMやHBM(High Bandwidth Memory)などである。
【0061】
さらに、制御部14は、疑似焼き鈍し法やレプリカ交換法で用いられる温度パラメータなどの更新処理で用いられる各種のパラメータや、各状態変数の初期値などを探索部13に設定する。なお、各状態変数の初期値は、1-Way 1-hot制約または2-Way 1-hot制約を満たすように設定される。
【0062】
また、制御部14は、たとえば、探索部13において探索終了条件が満たされたときの全状態変数の値(探索結果)を受け、式(1)に基づいてレプリカごとのエネルギーを計算する。そして、制御部14は、たとえば、最低のエネルギーを示すレプリカにおける探索結果(全状態変数の値)を、問題の解として、制御部14に接続される図示しない表示装置などに出力する。また、制御部14は、たとえば、有線または無線ネットワークを介して、探索結果を外部の情報処理装置に送信してもよい。
【0063】
なお、探索部13が、状態変数の更新に伴うエネルギー変化に基づいて、レプリカごとのエネルギーを計算するようにしてもよい。
制御部14は、たとえば、ASICやFPGAなどの特定用途の電子回路により実現できる。ただしこれに限定されず、制御部14は、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などのプロセッサであってもよい。
【0064】
以下、2-Way 1-hot制約をもつ問題を解く際の、最適化装置10の処理例(最適化方法の例)を説明する。
図4は、2-Way 1-hot制約をもつ問題に対する処理例を示す図である。
【0065】
図4の例では、2-Way 1-hot制約をもつ計算対象の問題のサイズが4k(状態変数の総数が4096)であるものとしている。
図4には、4096個の状態変数が64行64列に配列された変数行列の例が示されている。重み係数行列の一行は、4kワードとする。記憶部11の記憶容量は2k変数分(状態変数の数が2048)であるとすると、保持できる重み係数行列のサイズは2k×2kワードとなる。2k×2kは、64×16(=1k)×4kと表せるため、変数行列16列分に対応した数の重み係数が記憶部11に記憶できることになる。
【0066】
制御部14は、探索部13に各種パラメータや、2-Way 1-hot制約を満たす状態変数の初期値を設定する。また、制御部14は、状態変数の初期値に基づいて、値が1である状態変数に関する重み係数を記憶装置20から読み出して記憶部11を介して、記憶部12a1~12apに記憶させる(記憶装置20から直接、記憶部12a1~12apに記憶してもよい)。
【0067】
さらに制御部14は、レプリカごと、状態変数の初期値と、重み係数とバイアス係数に基づいて、式(2)の局所場(hi)の初期値を計算し、記憶部12a1~12ap、または探索部13の図示しないレジスタに書き込んでもよい。なお、局所場の初期値は、探索部13が計算してもよい。探索部13が局所場の初期値を計算する場合、探索部13は、たとえば、制御部14からバイアス係数を受け、記憶部12a1~12apに記憶されている重み係数を読み出して、局所場の初期値を計算する。
【0068】
そして、制御部14は、たとえば、記憶装置20に記憶されている重み係数行列のうち、変数行列の列1~列16の状態変数に関する重み係数群(重み係数行列の先頭の1k行(1~1024行))を読み出して、記憶部11に記憶させる。
【0069】
その後、制御部14は、列1~列16のうち、探索部13に対して、処理させる2列を指定する。
図4の例の“swap k,k’”は、各レプリカ1~pに対して、列kと列k’が指定されていることを示している。この場合、探索部13は、レプリカ1~pのそれぞれにおいて、列kと列k’の間で入れ替えを発生させることによるエネルギー変化を式(7)に基づいて計算し、そのエネルギー変化に基づいて、入れ替えの可否を判定する。入れ替えが許容された場合、4つの状態変数の値が更新される。その場合、式(8)に基づいて局所場が更新される。
【0070】
16列の中から、2列を選ぶ組合せは、16C2(=120)通りあるため、たとえば、120通りの試行が行われる。たとえば、前述のように、探索部13に処理させる2列は、列1と列2、列1と列3、…、列1と列16、列2と列3、列3と列4…などのように指定される。
【0071】
その後、制御部14は、たとえば、記憶装置20に記憶されている重み係数行列のうち、次の16列の状態変数に関する重み係数群を読み出させて、記憶部11に記憶させ(上書きさせる)、以下同様の処理を行う。以降の16列の状態変数についても同様に処理される。
【0072】
なお、常に16列の状態変数に関する重み係数群を読み出す場合、入れ替えが許容されにくい列の組合せが発生する可能性がある。そこで、制御部14は、たとえば、以下のような複数の読み出し方を組み合わせることが有効である。
【0073】
図5は、複数の読み出し方の例を示す図である。
読み出し方1は、たとえば、64列の状態変数を16列ずつ選択してその16列の状態変数に関する重み係数群を記憶装置20から読み出していく方法である。読み出し方2は、たとえば、64行の状態変数を16行ずつ選択してその16行の状態変数に関する重み係数群を記憶装置20から読み出していく方法である。読み出し方3は、たとえば、64列の状態変数を4列ずつ選択してその4列の状態変数に関する重み係数群を記憶装置20から読み出していく方法である。読み出し方4は、たとえば、64行の状態変数を4行ずつ選択してその4行の状態変数に関する重み係数群を記憶装置20から読み出していく方法である。読み出し方5は、たとえば、64列の状態変数を8列ずつ選択してその8列の状態変数に関する重み係数群を記憶装置20から読み出していく方法である。読み出し方6は、たとえば、64行の状態変数を8行ずつ選択してその8行の状態変数に関する重み係数群を記憶装置20から読み出していく方法である。
【0074】
たとえば、制御部14は、読み出し方1による読み出しが終了すると、次は読み出し方2による読み出し方による読み出しを行い、それが終了すると読み出し方3による読み出しを行う、というように複数の読み出し方を組み合わせる。
【0075】
以下、第1の実施の形態の最適化装置10の処理の一例の流れをフローチャートでまとめる。
図6は、第1の実施の形態の最適化装置の処理の一例の流れを示すフローチャートである。
【0076】
まず、初期設定処理が行われる(ステップS1)。初期設定処理では、制御部14は、疑似焼き鈍し法やレプリカ交換法で用いられる温度パラメータなど更新処理で用いられる各種のパラメータや、各状態変数の初期値などを探索部13に設定する。以下では、探索部13は、各レプリカに対して並列に疑似焼き鈍し法による探索処理を行うものとして説明する。また、制御部14は、状態変数の初期値と、重み係数とバイアス係数に基づいて、式(2)の局所場(hi)の初期値を計算し、記憶部12a1~12ap、または探索部13の図示しないレジスタに書き込む。また、制御部14は、状態変数の初期値に基づいて、値が1である状態変数に関する重み係数を記憶装置20から読み出して記憶部12a1~12apに記憶させる。
【0077】
探索部13は、保持されている局所場と状態変数を読み出す(ステップS2)。
制御部14は、記憶装置20に記憶されている複数の重み係数の一部である重み係数群を読み出して、記憶部11に記憶させる(ステップS3)。2回目以降のステップS3の処理では、記憶部11に記憶される重み係数群が入れ替えられる。ステップS3の処理後、制御部14は、更新処理の対象のグループまたは2列(2行でもよい。以下同じ)を探索部13に指定する(ステップS4)。
【0078】
その後、探索部13は、エネルギー変化を計算する(ステップS5)。探索部13は、各レプリカについて、2-Way 1-hot制約を満たしつつ更新処理を行う場合、指定された2列についての入れ替え(4つの状態変数の値の変化)によるエネルギー変化を、たとえば、式(7)により計算する。探索部13は、1-Way 1-hot制約を満たしつつ更新処理を行う場合、指定されたグループ内の2つの状態変数(値が0の状態変数のうちの1つと値が1の状態変数)の値が変化することによるエネルギー変化を、値が0の状態変数のそれぞれについて、たとえば、式(5)により計算する。
【0079】
そして、探索部13は、計算したエネルギー変化と、温度パラメータとに基づいて、更新対象の状態変数を選択する(ステップS6)。探索部13は、エネルギーを小さくするエネルギー変化を引き起こす状態変数の変化を優先的に採用するとともに、エネルギーを増加させるエネルギー変化を引き起こす状態変数の変化についても、温度パラメータに基づいて確率的に許容する。温度パラメータが大きいほど、より大きくエネルギーを増加させるエネルギー変化についても許容される確率が上がり、温度パラメータが小さくなるほどその確率は下がる。
【0080】
探索部13は、選択した状態変数の値を更新するとともに、局所場の更新を行う(ステップS7)。局所場の更新は、たとえば、前述の式(6)または式(8)のように行われる。更新された状態変数や局所場は、図示しないレジスタに書き込まれる。
【0081】
さらに、探索部13は、値を0から1に更新した状態変数に関する重み係数群を記憶部11から読み出させて記憶部12a1~12apに記憶させる(ステップS8)。つまり、記憶部12a1~12apに記憶されている重み係数群を更新する。
【0082】
その後、制御部14は、記憶装置20から読み出させた重み係数群の範囲で、全グループまたは全2列の組合せを指定したか否かを判定する(ステップS9)。たとえば
図4に示したように、記憶装置20から変数行列の列1~列16の状態変数に関する重み係数群が読み出されて記憶部11に記憶されている場合、制御部14は、
16C
2(=120)通りの組合せについてすべて指定したか否かを判定する。制御部14が全グループまたは全2列の組合せを指定していないと判定した場合、ステップS4からの処理が繰り返される。
【0083】
制御部14は、全グループまたは全2列の組合せを指定したと判定した場合、探索部13における各レプリカについての更新処理回数が、所定回数N1に達したか否か判定する(ステップS10)。更新処理回数が所定回数N1に達していない場合には、ステップS2からの処理が繰り返される。この場合、ステップS3の処理では、記憶装置20から複数の重み係数のうち、別の一部の重み係数群が読み出され記憶部11に記憶され、同様の処理が行われる。つまり、記憶部11が重み係数群として記憶する対象が、入れ替わる。
【0084】
更新処理回数が所定回数N1に達した場合、制御部14は、温度パラメータの変更回数(温度変更回数)が、所定回数N2に達したか否かを判定する(ステップS11)。
温度変更回数が所定回数N2に達していない場合、制御部14は、温度パラメータ(
図6ではTと表記されている)を変更する(温度を下げる)(ステップS12)。所定回数N1,N2、Tの値の変更の仕方(一度に値をどのくらい小さくするかなど)は、アニーリング条件に基づいて決定される。ステップS12の処理後、ステップS2からの処理が繰り返される。
【0085】
温度変更回数が所定回数N2に達したとき、制御部14は、たとえば、そのとき探索部13のレジスタに保持されている全状態変数の値(探索結果)を受け、式(1)に基づいてレプリカごとのエネルギーを計算する。そして、制御部14は、たとえば、最低のエネルギーを示すレプリカにおける探索結果(全状態変数の値)を、問題の解として表示装置などに出力する(ステップS13)。これにより最適化装置10の処理が終了する。
【0086】
なお、上記の処理の順序は、上記の例に限定されるわけではなく、適宜順番を入れ替えてもよい。
また、上記では、各レプリカに対して同じ温度パラメータの値が割り当てられるが、レプリカ交換法が行われる場合、各レプリカに異なる温度パラメータの値が割り当てられる。そして、所定の更新処理回数ごとに、各レプリカのエネルギーや温度パラメータの値に基づく所定の交換確率で、レプリカ間で設定される温度パラメータの値または、状態変数の値が交換される。
【0087】
以上のような第1の実施の形態の最適化装置10によれば、探索部13は、各レプリカについて、指定された共通の2列、2行またはグループについて更新処理を行えばよい。このため、エネルギー変化の計算数が減り(2-Way 1-hot制約の場合は、1度の指定に対して1)、1-Way 1-hot制約または2-Way 1-hot制約のような1-hot制約を含む問題をハードウェアの複雑化を抑えて計算可能となる。
【0088】
また、上記のように更新処理を行う範囲が指定されることで、最適化装置10内に全ての重み係数を記憶しなくてもよくなる。そのため、より規模の大きな問題の計算が可能である。また、更新処理は、記憶部11に記憶された重み係数群を用いた範囲で行われるため、最適化装置10は、頻繁に記憶装置20へアクセスしなくてもよくなる。
【0089】
また、記憶部11に記憶する重み係数群を所定の回数の更新処理ごとに入れ替え、更新処理の対象となる状態変数を定期的に変更することで、全ての状態変数を同時に更新処理の対象とする場合と比較して、得られる探索結果の差を小さくできる。
【0090】
図7は、第1の実施の形態の最適化装置の変形例を示す図である。
図7において、
図1に示した要素と同じ要素については同一符号が付されている。
変形例の最適化装置10aの記憶部11aは、2つの記憶部11a1,11a2を有している。記憶部11a1,11a2のそれぞれとして、たとえば、SRAMなどを用いることができる。
【0091】
記憶部11a1は、スイッチ11b1を介して記憶装置20に接続され、記憶部11a2は、スイッチ11b2を介して記憶装置20に接続されている。また、記憶部11a1は、スイッチ11c1を介して、記憶部12a1~12apに接続され、記憶部11a2は、スイッチ11c2を介して、記憶部12a1~12apに接続されている。スイッチ11b1,11b2,11c1,11c2は、制御部14によってオンオフが制御される。
【0092】
探索部13が、記憶部11a1,11a2の一方に記憶されている重み係数群を用いた更新処理の実行中、記憶部11a1,11a2の他方に、次に更新処理の対象となる状態変数に関する重み係数群が記憶装置20から読み出されて書き込まれる。
【0093】
たとえば、制御部14は、スイッチ11c2をオン、スイッチ11b2をオフし、探索部13に、記憶部11a2に記憶されている16列の状態変数に関する重み係数群を用いて更新処理させる。このとき、制御部14は、スイッチ11b1をオン、スイッチ11c1をオフし、次の16列の状態変数に関する重み係数群を記憶装置20から読み出させて、記憶部11a1に記憶させる。
【0094】
これにより、記憶装置20からの読み出しにかかる時間を実質的に短縮でき、計算時間を短縮できる。
(第2の実施の形態)
図8は、第2の実施の形態の最適化装置の一例を示す図である。
【0095】
第2の実施の形態の最適化装置30は、第1の実施の形態の最適化装置10と同様の各要素を有するが、全状態変数に1-hot制約を受ける状態変数と、1-hot制約を受けない状態変数が混在している場合の処理を行う。
【0096】
図8には、記憶装置20に記憶されている重み係数行列の例が示されている。
重み係数行列には、2-Way 1-hot制約を受ける状態変数(以下2W1H変数)と、1-Way 1-hot制約を受ける状態変数(以下1W1H変数)と、1-hot制約を受けない状態変数(以下1bit変数)に関する重み係数が含まれる。
図8の例では、計算対象の問題のサイズが6kで、2W1H変数が4k(64×64)個、1W1H変数が1k(64グループ、各グループは16変数)個、1bit変数が1k個である場合の、重み係数行列の例が示されている。
【0097】
最適化装置30の記憶部31は、このような重み係数行列の少なくとも一部である重み係数群を記憶する。
図8の例では、記憶部31は、2W1H変数行列の一部の列または行に関する重み係数群と、1W1H変数の一部のグループに関する重み係数群と、1bit変数の一部に関する重み係数群を保持している。なお、各重み係数群には、2W1H変数に関するものか、1W1H変数に関するものか、1bit変数に関するものかを示す識別情報が割り当てられていてもよい。記憶部31の一例として、SRAMなどを用いることができる。
【0098】
記憶部32a1~32apのそれぞれは、2W1H変数または1W1H変数のうち、値が1である状態変数に関する重み係数群を記憶する。どの状態変数の値が1であるかについては、レプリカごとに独立である。記憶部32a1~32apの一例として、SRAMなどを用いることができる。
【0099】
探索部33は、2W1H変数については、2-Way 1-hot制約、1W1H変数については1-Way 1-hot制約を満たしつつ、2W1H変数、1W1H変数または1bit変数を更新する更新処理を繰り返す。これにより、探索部33は、イジングモデルのエネルギーを最小化する最適解を探索し、探索結果を出力する。このような処理を探索部33は、レプリカごとに行う。なお、探索部33に対して、制御部34により、2W1H変数についての更新処理のために、全レプリカについて共通の2列または2行が指定され、1W1H変数についての更新処理のために、全レプリカについて共通のグループが指定される。
【0100】
更新処理では、2W1H変数については、指定された2列または2行についての入れ替え(4つの状態変数の値の変化)によるエネルギー変化が、たとえば、式(7)により計算される。また、1W1H変数については、指定されたグループ内の2つの状態変数(値が0の状態変数のうちの1つと値が1の状態変数)の値が変化することによるエネルギー変化が、値が0の状態変数のそれぞれについて、たとえば、式(5)により計算される。1bit変数については、各1bit変数の値が変化することによるエネルギー変化が計算される。そして、計算されたエネルギー変化のうち、たとえば、エネルギーを一番小さくするエネルギー変化を引き起こす状態変数の変化が採用され、状態変数の値が更新される。また、探索部33は、状態変数の値の更新に伴い、局所場の更新を行う。
【0101】
探索部33は、2W1H変数や1W1H変数については、上記のような処理を、指定されるグループや列または行を変えて、1bit変数については同様の処理を、所定の探索終了条件が満たされるまで繰り返す。そして、探索部33は、たとえば、探索終了条件が満たされたときの各レプリカの全状態変数の値を制御部34に出力する。
【0102】
探索部33は、たとえば、ASICやFPGAなどの特定用途の電子回路にて実現できる。
制御部34は、探索部33に処理させるグループ、2列または2行を指定する。制御部34は、処理させるグループ、2列または2行を所定の順序で指定する。
【0103】
また、制御部34は、記憶容量の制限などにより記憶部31が式(1)の全ての重み係数を保持しない場合、上記のような一部の重み係数群を、記憶装置20から読み出して、記憶部31に記憶させる。
【0104】
さらに、制御部34は、疑似焼き鈍し法やレプリカ交換法で用いられる温度パラメータなど更新処理で用いられる各種のパラメータや、各状態変数の初期値などを探索部33に設定する。
【0105】
また、制御部34は、たとえば、探索部33において探索終了条件が満たされたときの全状態変数の値(探索結果)を受け、式(1)に基づいてレプリカごとのエネルギーを計算する。そして、制御部34は、たとえば、最低のエネルギーを示すレプリカにおける探索結果(全状態変数の値)を、問題の解として表示装置などに出力する。
【0106】
なお、探索部33が、状態変数の更新に伴うエネルギー変化に基づいて、レプリカごとのエネルギーを計算するようにしてもよい。
制御部34は、たとえば、ASICやFPGAなどの特定用途の電子回路により実現できる。ただしこれに限定されず、制御部34は、CPUやGPUなどのプロセッサであってもよい。
【0107】
上記のような第2の実施の形態の最適化装置30は、たとえば、
図6に示したフローチャートと同様の処理の流れにより動作する。ただし、ステップS5の処理では、前述のように、2W1H変数、1W1H変数、1bit変数のそれぞれについて、エネルギー変化が計算される。
【0108】
上記のような最適化装置30によれば、第1の実施の形態の最適化装置10と同様の効果が得られるとともに、1-hot制約を受ける状態変数と1-hot制約を受けない状態変数が混在している場合にも、最適化処理を行うことが可能となる。
【0109】
なお、
図7に示したような2つの記憶部11a1,11a2を切り替えて利用する手法は、第2の実施の形態の最適化装置30についても適用可能である。
また、上記第1の実施の形態の最適化装置10と第2の実施の形態の最適化装置30の記憶部11,31と記憶部12a1~12ap,32a1~32apと探索部13の組は、複数組設けられていてもよい。
【0110】
以上、実施の形態に基づき、本発明の最適化装置及び最適化方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0111】
10 最適化装置
11,12a1~12ap 記憶部
13 探索部
14 制御部
20 記憶装置