JP2022015503A - 情報処理システム、情報処理方法及びプログラム - Google Patents

情報処理システム、情報処理方法及びプログラム Download PDF

Info

Publication number
JP2022015503A
JP2022015503A JP2020118382A JP2020118382A JP2022015503A JP 2022015503 A JP2022015503 A JP 2022015503A JP 2020118382 A JP2020118382 A JP 2020118382A JP 2020118382 A JP2020118382 A JP 2020118382A JP 2022015503 A JP2022015503 A JP 2022015503A
Authority
JP
Japan
Prior art keywords
search
solution
value
depth
neighborhood
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.)
Withdrawn
Application number
JP2020118382A
Other languages
English (en)
Inventor
真一 佐沢
Shinichi Sazawa
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2020118382A priority Critical patent/JP2022015503A/ja
Priority to US17/211,902 priority patent/US20220012291A1/en
Priority to EP21165516.2A priority patent/EP3937090A1/en
Priority to CN202110381598.3A priority patent/CN113919504A/zh
Publication of JP2022015503A publication Critical patent/JP2022015503A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9538Presentation of query results
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Abstract

Figure 2022015503000001
【課題】効率的な探索を実現する。
【解決手段】探索部13は、複数の状態変数を含むエネルギー関数で表される問題に関し、問題の解の探索における一回の状態遷移当たりに変化させる状態変数の数を示す近傍深度が設定され、設定された近傍深度に基づいて問題の解の探索を実行する。処理部12は、第1の近傍深度での探索の初期解に対するエネルギー関数の第1の値と、第1の近傍深度での探索により得られた第1の解に対するエネルギー関数の第2の値とを取得する。処理部12は、第1の値と第2の値とに基づいて、第1の近傍深度による解精度の向上の度合いを示す第1の指標を計算する。処理部12は、第2の近傍深度での探索の結果を基に計算した、第2の近傍深度による解精度の向上の度合いを示す第2の指標と第1の指標とに基づいて、探索部13に設定する近傍深度を出力する。
【選択図】図1

Description

本発明は情報処理システム、情報処理方法及びプログラムに関する。
ノイマン型コンピュータが不得意とする多変数の組合せ最適化問題を、磁性体のスピンの振る舞いを表すモデルであるイジングモデルに置き換えて計算する情報処理装置がある。イジングモデルに置き換えられた問題を実用的な時間で解く手法には、例えばシミュレーテッドアニーリング(SA:Simulated Annealing)法やレプリカ交換法などのマルコフ連鎖モンテカルロ(MCMC:Markov Chain Monte Carlo)法がある。組合せ最適化問題は、複数の状態変数を含むエネルギー関数により定式化される。エネルギー関数は、目的関数や評価関数などと呼ばれることもある。情報処理装置は、MCMC法を用いて状態変数の値を変化させることによる状態遷移を繰り返し試行することで、エネルギー関数の値が最小となるイジングモデルの基底状態を探索する。基底状態は組合せ最適化問題の最適解に対応する。
例えば、複数のプロセッサ・エレメントが、最適化の最中に各プロセッサ・エレメントが持つ組合せ情報を交換する協調的な最適化を行う組合せ最適化装置の提案がある。
また、“着目状態”の遷移として、距離2、距離3などの遷移をも可能にした状態空間の探索方式の提案もある。ここで、提案の探索方式において、距離nとは、1つの状態からもう1つの状態に到達するために最低n回の状態遷移が必要という意味である。
更に、レプリカ交換法を実行する最適化装置の提案がある。提案の最適化装置は、一定の反復回数ごとに各焼鈍部におけるエネルギーを観測し、エネルギーと温度に応じた交換確率に基づいて2つの焼鈍部に供給する逆温度を交換する。
特開平6-309408号公報 特開2004-70662号公報 特開2019-160293号公報
上記のように、ある状態から次の状態への遷移、すなわち、一状態遷移当たりに変化させる状態変数の数を1より大きくすることが考えられる。例えば、探索において一状態遷移当たりに変化させる状態変数の数を可変にし、当該数を段階的に大きくすることで、得られる解の精度は向上し得るが、探索に要する時間が増大する。問題や探索の状況などに応じて、一状態遷移当たりに変化させる状態変数の数を適切に決定することは容易ではない。
1つの側面では、本発明は、効率的な探索を実現する情報処理システム、情報処理方法及びプログラムを提供することを目的とする。
1つの態様では、情報処理システムが提供される。情報処理システムは、探索部と処理部とを有する。探索部は、複数の状態変数を含むエネルギー関数で表される問題に関し、問題の解の探索における一回の状態遷移当たりに変化させる状態変数の数を示す近傍深度が設定され、設定された近傍深度に基づいて問題の解の探索を実行する。処理部は、第1の近傍深度での探索の初期解に対するエネルギー関数の第1の値と、第1の近傍深度での探索により得られた第1の解に対するエネルギー関数の第2の値とを取得し、第1の値と第2の値とに基づいて、第1の近傍深度による解精度の向上の度合いを示す第1の指標を計算し、第2の近傍深度での探索の初期解に対するエネルギー関数の第3の値と、第2の近傍深度での探索により得られた第2の解に対するエネルギー関数の第4の値とを取得し、第3の値と第4の値とに基づいて、第2の近傍深度による解精度の向上の度合いを示す第2の指標を計算し、第1の指標と第2の指標とに基づいて、探索部に設定する近傍深度を出力する。
また、1つの態様では、情報処理方法が提供される。
また、1つの態様では、プログラムが提供される。
1つの側面では、効率的な探索を実現できる。
第1の実施の形態の情報処理システムを説明する図である。 第2の実施の形態の情報処理システムを示す図である。 制御装置のハードウェア例を示す図である。 ノードのハードウェア例を示す図である。 情報処理システムの機能例を示す図である。 解を複数個の要素の順列で表す例を示す図である。 2-opt近傍の例を示す図である。 解精度向上率データの例を示す図である。 解精度向上評価値の計算例を示す図である。 近傍深度テーブルの例を示す図である。 制御部の処理例を示すフローチャートである。 探索部の処理例を示すフローチャートである。 ノードの他のハードウェア例を示す図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理システムを説明する図である。
情報処理システム1は、組合せ最適化問題の解を探索し、解を出力する。情報処理システム1は、記憶部11、処理部12及び探索部13を有する。
記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。
処理部12は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部12はプログラムを実行するプロセッサでもよい。「プロセッサ」は複数のプロセッサの集合(マルチプロセッサ)を含み得る。
探索部13は、CPU、DSP、ASIC、GPU(Graphics Processing Unit)、FPGAなどの集積回路により実現される。また、図示を省略しているが探索部13は、RAM(Random Access Memory)やレジスタなどの記憶部を含み得る。例えば、FPGAなどの集積回路を用いて実現される探索回路が、探索部13として機能してもよい。後述されるように、情報処理システム1は、探索部13を含む複数の探索部を有してもよい。
探索部13は、組合せ最適化問題を定式化したイジング型のエネルギー関数に基づいて、エネルギー関数に含まれる複数の状態変数の値の組により表されるイジングモデルの状態を変化させることで、エネルギー関数の値を最小にする解の探索を行う。エネルギー関数の値は、イジングモデルの状態に対応するエネルギー値である。イジングモデルの状態をステート(State)と言うことがある。状態変数は「0」または「1」の値を取るバイナリ変数である。エネルギー関数の値を最小にする解は、イジングモデルの基底状態に相当する。また、探索部13により求められる解は、複数の状態変数の組により表される。イジングモデルの基底状態は組合せ最適化問題の最適解に対応する。解の探索には、例えば、SA法やレプリカ交換法などのMCMC法が用いられる。
イジング型のエネルギー関数E(x)は、例えば、式(1)で表される。
Figure 2022015503000002
状態ベクトルxは、複数の状態変数を要素とし、イジングモデルの状態を表す。目的関数の値を最大化する問題の場合には、目的関数の符号を逆にすればよい。
式(1)の右辺第1項は、全状態変数から選択可能な2つの状態変数の全組合せについて、漏れと重複なく、2つの状態変数の値と重み係数との積を積算したものである。xは、i番目の状態変数である。xは、j番目の状態変数である。Wijは、i番目の状態変数とj番目の状態変数との間の重み、または、結合の強さを示す重み係数である。
式(1)の右辺第2項は、全状態変数の各々のバイアス係数と状態変数の値との積の総和を求めたものである。bは、i番目の状態変数に対するバイアス係数を示している。
例えば、イジングモデルにおけるスピンの「-1」は、状態変数の値「0」に対応する。イジングモデルにおけるスピンの「+1」は、状態変数の値「1」に対応する。このため、状態変数を0または1の値をとるビットと呼ぶこともできる。
ここで、式(1)における状態変数xの値が変化して1-xとなると、状態変数xの増加分は、δx=(1-x)-x=1-2xと表せる。したがって、エネルギー関数E(x)に対して、状態変数xの変化に伴うエネルギー値の変化量ΔEは、式(2)で表される。
Figure 2022015503000003
ここで、エネルギー値を最小化する基底状態の探索に、例えば最急降下法を用いることが考えられる。しかし、最急降下法では、一旦、局所解に陥ると脱出できなくなる。
そこで、探索部13では、基底状態の探索において、エネルギー値の変化量がΔEとなる状態遷移(状態変数xの値の変化)を許容するか否かを決定するためにメトロポリス法やギブス法が用いられる。すなわち、探索部13は、ある状態から当該状態よりもエネルギー値の低い他の状態への遷移を探索する近傍探索において、エネルギー値が下がる状態だけでなく、エネルギー値が上がる状態への遷移を確率的に許容する。
探索部13は、複数の状態変数の何れかの状態変数の値を変化させたときのエネルギー値の変化量と、ノイズ値との比較結果に基づいて、当該状態変数の値の変化を許容するか否かを判定する。探索部13は、許容すると判定した場合、該当の状態変数の値を変えることで、状態遷移を発生させる。ノイズ値は、温度値や乱数に基づいて求められる。温度値が大きい程、ノイズ値の振幅が大きくなる。ノイズ値の振幅が大きい程、エネルギー値の増加量が大きい状態遷移が許容されやすくなる。
探索部13は、一状態遷移当たりに変化させる状態変数の数を1以上の整数とすることができる。また探索部13における一状態遷移当たりに変化させる状態変数の数は可変に制御可能である。ここで、一状態遷移当たりに変化させる状態変数の数を近傍深度と言うことがある。また、ある状態と他の状態との間の距離は、ハミング距離と呼ばれる。ハミング距離は、ある状態と他の状態とで互いに異なる値である状態変数の数、すなわち異なるビットの数である。なお、「一状態遷移」は、「一回の状態遷移」と同じ意味である。
探索部13における探索は、ある初期解から状態遷移を繰り返し試行し、所定の終了条件が満たされるまで行われる。初期解は、探索の始点となる状態である。所定の終了条件は、例えば、あるエネルギー値の解に達した後、それ以降の所定回数の状態遷移の試行によっても、エネルギー値が改善される他の解が得られないことや、探索の開始から一定時間が経過したことなどである。情報処理システム1は、問題や探索の状況に応じて、近傍深度を調整する機能を提供する。
記憶部11は、処理部12の処理に利用されるデータを記憶する。例えば、記憶部11は、テーブル11aを記憶する。テーブル11aは、近傍深度及び解精度向上指標の項目を含む。近傍深度の項目には、近傍深度が登録される。解精度向上指標の項目には、解精度向上指標が登録される。解精度向上指標とは、該当の近傍深度を用いて得られた解の精度の向上の度合いを表す指標である。解の精度、すなわち、解精度とは、得られた解がエネルギー値を最小にする解、すなわち、最適解であることの確からしさを表す。例えば、解精度が高い程、最適解である可能性が高く、解精度が低い程、最適解である可能性が低い。また、解精度向上指標が大きい程、該当の近傍深度での探索により最適解に近づける可能性が高く、解精度向上指標が小さい程、該当の近傍深度での探索により最適解に近づける可能性が低い。解精度向上指標は、後述されるように、探索の初期解のエネルギー値と、探索で得られた解のエネルギー値との差に基づいて評価される。
処理部12は、ある近傍深度での探索の初期解に対するエネルギー関数の第1の値と、当該近傍深度での探索により得られた解に対するエネルギー関数の第2の値とを取得する。また、処理部12は、各回の探索に要する時間が異なる場合、当該時間を更に取得する。ある解を得るまでの探索に要した時間を探索時間と言うことがある。処理部12は、第1の値及び第2の値を探索部13から取得してもよいし、当該初期解及び探索により得られた解を取得して式(1)により第1の値及び第2の値を計算してもよい。また、処理部12は、探索時間を探索部13から取得してもよいし、処理部12により探索時間を計測することで取得してもよい。
処理部12は、第1の値及び第2の値に基づいて、該当の近傍深度による解精度の向上の度合いを示す指標を計算する。前述の解精度向上指標は、当該解精度の向上の度合いを示す指標に相当する。例えば、処理部12は、第1の値から第2の値を引いた値を、探索時間で割った値を解精度向上指標として算出する。この場合、第1の値をE1、第2の値をE2、探索時間をTとすれば、解精度向上指標V=(E1-E2)/Tと表される。探索時間Tが短く、かつ、初期解からのエネルギー値の改善幅(E1-E2)が大きいほど、解精度向上指標Vは大きくなる。各回の探索時間が一定の場合、処理部12は、T=1としてもよい。
処理部12は同一の近傍深度による探索をn(nは2以上の整数)回行うことで、該当の近傍深度に対するn個の解精度向上指標V1,V2,…,Vnを求め、その平均(V1+V2+…+Vn)/nを、当該近傍深度に対する解精度向上指標Vとしてもよい。これにより、解精度向上指標Vの評価精度が向上される。このとき、n回の探索の各々における初期解を同一としてもよい。これにより、該当の初期解及び近傍深度に対する解精度向上指標Vを評価できる。
処理部12は、複数回の探索で探索部に設定された複数の近傍深度に対して計算した複数の指標に基づいて、探索部13に設定する近傍深度を出力する。例えば、処理部12は、近傍深度d1に対して、上記の評価手法により、解精度向上指標「1」を計算し、テーブル11aに登録する。また、処理部12は、近傍深度d2に対して、上記の評価手法により、解精度向上指標「2」を計算し、テーブル11aに登録する。例えば、近傍深度d1に対する解精度向上指標を行った探索と、近傍深度d2に対する解精度向上指標を行った探索とで、初期解を同一としてもよい。これにより、異なる近傍深度で、共通の基準により、近傍深度ごとの解精度向上指標を評価できる。
なお、テーブル11aでは使用する近傍深度の数をd1,d2の2つとする例を示しているが、使用する近傍深度の数を3つ以上としてもよい。
例えば、テーブル11aによれば、近傍深度d1の解精度向上指標が「1」であり、近傍深度d2の解精度向上指標が「2」である。この場合、処理部12は、近傍深度d2を近傍深度d1よりも優先的に選択し、探索部13に設定する近傍深度として出力する。例えば、優先的に選択する方法としては、近傍深度d2が選択される確率を、近傍深度d1よりも高くすることが考えられる。より具体的には、処理部12は、近傍深度d1,d2の解精度向上指標に基づいて、近傍深度d2を選択する確率を2/3とし、近傍深度d1を選択する確率を1/3とする。このような方法の一例として、処理部12は、0≦a<1の一様乱数aを発生させ、a<2/3の場合に近傍深度d2を選択し、a≧2/3の場合に近傍深度d1を選択する方法が考えられる。例えば、情報処理システム1が複数の探索部を有する場合、処理部12は、当該方法によって、近傍深度d1,d2の何れかを複数の探索部の各々に設定してもよい。このようにすると、テーブル11aの例において、近傍深度d1が設定される探索部の数の割合が1/3程度となり、近傍深度d2が設定される探索部の数の割合が2/3程度となることが期待される。
例えば、処理部12は、選択した近傍深度を探索部13に出力し、当該近傍深度を用いて、探索部13による次の探索を実行させる。処理部12は、次の探索の初期解を、例えば、前回の探索で得られた解のうちの最良の解に基づいて生成し、探索部13に設定してもよい。ここで、前回の探索で得られた解のうちの最良の解とは、前回の探索で得られた解のうちエネルギー値が最も小さい解である。例えば、処理部12は、当該最良の解の一部の状態変数を変化させることで、次の初期解を生成してもよい。
処理部12は、上記の処理を繰り返し実行し、その間に探索部13から得られた解を記憶部11に記録する。処理部12は、一定期間の間に記憶部11に記録された解のうちの最良の解を、最終的な解として、ユーザに提示する。例えば、処理部12は、最終的な解、あるいは、当該解を組合せ最適化問題に対する解の形式に変換した情報を、情報処理システム1に接続された表示装置に表示させたり、ネットワークを介してユーザが利用する情報処理装置に送信したりする。
情報処理システム1によれば、複数の状態変数を含むエネルギー関数で表される問題に関し、問題の解の探索における一回の状態遷移当たりに変化させる状態変数の数を示す近傍深度が探索部13に設定される。探索部13により、設定された近傍深度に基づいて問題の解の探索が実行される。処理部12により、第1の近傍深度での探索の初期解に対するエネルギー関数の第1の値と、第1の近傍深度での探索により得られた第1の解に対するエネルギー関数の第2の値とが取得される。処理部12により、第1の値と第2の値とに基づいて、第1の近傍深度による解精度の向上の度合いを示す第1の指標が計算される。処理部12により、第2の近傍深度での探索の初期解に対するエネルギー関数の第3の値と、第2の近傍深度での探索により得られた第2の解に対するエネルギー関数の第4の値とが取得される。処理部12により、第3の値と第4の値とに基づいて、第2の近傍深度による解精度の向上の度合いを示す第2の指標が計算される。処理部12により、第1の指標と第2の指標とに基づいて、探索部13に設定する近傍深度が出力される。
これにより、効率的な探索を実現できる。
ここで、探索における一状態遷移当たりに変化させる状態変数の数、すなわち、近傍深度を可変にし、当該近傍深度を段階的に大きくすることで、得られる解の精度は向上し得るが、探索に要する時間が増大する。問題や探索の状況などに応じて、近傍深度を適切に決定することは容易ではない。
これに対し、処理部12は、異なる近傍深度での探索の結果として得られた解を基に、近傍深度ごとの解精度向上指標を計算する。そして、処理部12は、近傍深度ごとの解精度向上指標に基づいて、該当の問題や現在の探索の状況などに応じた、近傍深度ごとの解精度向上に対する寄与を判定し、解精度向上に対する寄与が大きいと推定される近傍深度を優先的に選択する。例えば、処理部12は、選択した近傍深度を用いて探索部13に探索を実行させることで、探索部13により効率的に探索を実行させることができる。その結果、探索部13がより良い解に到達する可能性を高め、探索部13の求解性能が向上される。例えば、所定時間内に、最適解、または、エネルギー値が予め定められる目標値よりも小さい解に到達できる可能性を高めることができる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムを示す図である。
情報処理システム2は、制御装置100及びノード200,300,400,500,600,700を有する。制御装置100及びノード200~700は、ネットワーク30に接続される。ネットワーク30は、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットなどでもよい。
制御装置100は、ノード200~700を制御する装置である。制御装置100は、例えば、コンピュータなどの情報処理装置でもよい。制御装置100は、ユーザによる組合せ最適化問題の情報の入力を受け付け、組合せ最適化問題の情報をイジング形式の問題に変換する。イジング形式の問題とは、式(1)のエネルギー関数の値を最小化する問題である。制御装置100は、イジング形式の問題のデータを、ノード200~700に送信し、当該問題の解を探索させる。制御装置100は、ノード200~700の各々に対する近傍深度の設定も行う。
ノード200~700は、イジング形式の問題に対する解を探索する。ノード200~700は、例えば、コンピュータなどの情報処理装置でもよい。ノード200~700は、制御装置100から受信した共通の問題に対する解を探索する。
例えば、ノード200~700は、イジング形式の問題の解を探索するアクセラレータを有する。アクセラレータは、SA法やレプリカ交換法などのMCMC法を用いて、式(1)で表されるイジング型のエネルギー関数E(x)を最小化する複数の状態変数の値を解として求めるハードウェアである。ただし、ノード200が提供する解探索機能は、ソフトウェアにより実装されてもよい。
図3は、制御装置のハードウェア例を示す図である。
制御装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106及びNIC(Network Interface Card)107及びバス108を有する。なお、CPU101は、第1の実施の形態の処理部12の一例である。RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、制御装置100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、制御装置100は、RAM102以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。なお、制御装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、制御装置100に接続されたディスプレイ31に画像を出力する。ディスプレイ31としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
入力信号処理部105は、制御装置100に接続された入力デバイス32から入力信号を取得し、CPU101に出力する。入力デバイス32としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、制御装置100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体33に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体33として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ106は、例えば、記録媒体33から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体33は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体33やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
NIC107は、ネットワーク30に接続され、ネットワーク30を介してノード200~700や他のコンピュータと通信を行うインタフェースである。NIC107は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
バス108は、制御装置100の内部バスである。CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106及びNIC107は、バス108に接続される。バス108には、例えば、PCIe(Peripheral Component Interconnect express)が用いられる。
図4は、ノードのハードウェア例を示す図である。
ノード200は、CPU201、RAM202、HDD203、媒体リーダ204、アクセラレータカード205、NIC206及びバス207を有する。アクセラレータカード205は、第1の実施の形態の探索部13の一例である。ただし、ノード200を第1の実施の形態の探索部13の一例と考えてもよい。
CPU201は、プログラムの命令を実行するプロセッサである。CPU201は、HDD203に記憶されたプログラムやデータの少なくとも一部をRAM202にロードし、プログラムを実行する。なお、CPU201は複数のプロセッサコアを含んでもよい。また、ノード200は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。
RAM202は、CPU201が実行するプログラムやCPU201が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、ノード200は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD203は、OSやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。なお、ノード200は、フラッシュメモリやSSDなどの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
媒体リーダ204は、記録媒体34に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体34として、例えば、記録媒体33と同様のものを用いることができる。
媒体リーダ204は、例えば、記録媒体34から読み取ったプログラムやデータを、RAM202やHDD203などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU201によって実行される。なお、記録媒体34は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体34やHDD203を、コンピュータ読み取り可能な記録媒体と言うことがある。
アクセラレータカード205は、イジング形式で表された組合せ最適化問題の解を探索するハードウェアアクセラレータである。アクセラレータカード205は、GPU211及びRAM212を有する。GPU211は、アクセラレータカード205における解探索機能を実現する。アクセラレータカード205は複数のGPUを有してもよい。また、当該解探索機能は、FPGAやASICなどの他の集積回路により実現されてもよい。RAM212は、式(1)の{Wij}、{b}及びGPU211により探索された解を保持する。後述されるように、ノード200は、複数のアクセラレータカードを有してもよい。
アクセラレータカード205のように、イジング形式の問題を解くハードウェアアクセラレータは、イジングマシン、ボルツマンマシンあるいは最適化装置などと呼ばれることがある。
NIC206は、ネットワーク30に接続され、ネットワーク30を介して制御装置100や他のコンピュータと通信を行うインタフェースである。NIC206は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
バス207は、ノード200の内部バスである。CPU201、RAM202、HDD203、媒体リーダ204、アクセラレータカード205及びNIC206は、バス207に接続される。バス207には、例えば、PCIeが用いられる。
図5は、情報処理システムの機能例を示す図である。
制御装置100は、記憶部120、制御部130、送信部140、受信部150及び解出力部160を有する。記憶部120には、RAM102やHDD103の記憶領域が用いられる。制御部130、送信部140、受信部150及び解出力部160は、CPU101がRAM102に記憶されたプログラムを実行することで実現される。
ノード200,300,400,500,600,700は、それぞれ探索部220,320,420,520,620,720を有する。探索部220~720は、それぞれノード200~700が有するアクセラレータカードにより実現される。ただし、探索部220,320,420,520,620,720の少なくとも1つは、該当のノードのCPUが、該当のノードのRAMに記憶されたプログラムを実行することで実現されてもよい。
記憶部120は、制御部130の処理に用いられるデータを記憶する。記憶部120が保持するデータは、解精度向上率データ及び近傍深度テーブルを含む。
解精度向上率データは、近傍深度に対して計算された解精度向上率を保持する。解精度向上率は、ある初期解を始点として該当の近傍深度での探索で得られた解の、初期解に対するエネルギー値の改善の度合いを示す。解精度向上率が大きい程、初期解に対するエネルギー値の改善の度合いが大きい。
近傍深度テーブルは、解精度向上率データに基づく、近傍深度ごとの解精度向上評価値を保持する。解精度向上評価値は、解精度向上率を正規化し、更に正規化した結果を、整数化したものである。
なお、解精度向上率を、第1の実施の形態の「解精度の向上の度合いを示す指標」の一例と考えることができる。あるいは、解精度向上評価値を、第1の実施の形態の「解精度の向上の度合いを示す指標」の一例と考えてもよい。
制御部130は、探索の初期解や近傍深度を、送信部140を介して探索部220~720に送信する。最初の段階では、制御部130は、探索部220~720の各々に対して、予め決定した初期近傍深度を設定する。例えば、制御部130は、探索部220~720の各々の初期近傍深度をランダムに決定してもよい。あるいは、制御部130は、問題に応じて、例えば最初は浅い近傍(例えば、1つの状態変数の変化)で十分良い解が得られることが経験的に分かっている場合には、最初の段階では所定の重み付き確率で、比較的浅い近傍を選び易くしてもよい。
制御部130は、探索部220~720の各々から、設定された近傍深度での探索に用いた初期解と、当該探索で得られた最良解と、最良解を得るまでに要した探索時間とを取得する。最良解とは、当該探索で得られた解のうち、エネルギー値が最小の解である。制御部130は、探索部220~720に設定した近傍深度に対して、解精度向上率を計算し、記憶部120に格納する。該当の探索部から取得した初期解のエネルギー値をE1、最良解のエネルギー値をE2、探索時間をTとすると、解精度向上率vは、v=(E1-E2)/Tと表される。
また、制御部130は、探索部220~720の各々の近傍深度に対して計算した解精度向上率vに基づいて、近傍深度ごとの解精度向上指標を計算し、近傍深度テーブルに登録する。制御部130は、近傍深度テーブルに基づいて、探索部220~720の各々に設定する近傍深度を決定し、決定した近傍深度を、送信部140を介して探索部220~720の各々に送信する。また、制御部130は、次の探索の初期解を生成し、当該初期解を、送信部140を介して探索部220~720に送信し、該当の近傍深度での探索を探索部220~720に実行させる。
制御部130は、上記の処理を所定回数または所定期間、繰り返し実行し、当該所定回数または所定期間が終了すると、探索部220~720から取得した解のうちの最良の解、すなわち、エネルギー値が最小の解を、最終的な解として解出力部160に出力する。
送信部140は、制御部130から取得した、探索部220~720に設定する近傍深度や初期解の情報を、探索部220~720に送信する。なお、送信部140による探索部220~720への情報の送信は、それぞれノード200~700への情報の送信であるとも言える。
受信部150は、探索部220~720の各々による探索が完了すると、当該探索の初期解と、当該探索で得られた最小解と、当該探索の探索時間とを該当の探索部から受信し、制御部130に供給する。なお、受信部150による探索部220~720からの情報の受信は、それぞれノード200~700からの情報の受信であるとも言える。
解出力部160は、探索部220~720の探索により最終的に得られた解を制御部130から取得し、当該解を出力する。解出力部160は、例えば、最終的な解を組合せ最適化問題に対する解の形式に変換した内容をディスプレイ31に表示させたり、当該内容を示す情報を、ネットワーク30を介して、クライアントコンピュータなどに送信したりする。
探索部220~720は、制御装置100から初期解及び近傍深度を受信し、受信した初期解及び近傍深度を用いて、解の探索を行う。探索部220~720の各々は、該当の近傍深度での探索を完了すると、初期解、当該探索で得られた最良解及び探索時間を制御装置100に送信する。
次に、探索部220~720での探索における「近傍」について説明する。
図6は、解を複数個の要素の順列で表す例を示す図である。
ここでは、例えば、巡回セールスマン問題のように解がN個の要素の順列で表される場合を考える。この場合、当該順列と、N*N個のビット、すなわち、状態変数の行列で列の総和が1かつ行の総和が1になるものとを、1対1に対応させて考えることができる。N=5の場合を例示する。
順列41は、5個の数字「1」~「5」で表される要素により行列42を表したものである。例えば、順列41の左から数えてi番目の要素の数字jに対して、行列42のi行j列目の要素は1であり、行列42のそれ以外の要素は0である。
順列41のような順列を用いて近傍を説明することができる。近傍には複数の種類がある。
第1の例は、挿入近傍である。挿入近傍では、1つの要素を他の位置に挿入する。
例えば、順列(1,2,3,4,5)の5を2と3の間に挿入することで、順列(1,2,5,3,4)を得る。
第2の例は、交換近傍である。交換近傍では、2つの要素を交換する。
例えば、順列(1,2,3,4,5)の2と4を交換することで、順列(1,4,3,2,5)を得る。
第3の例は、λ-交換近傍である。λ-交換近傍では、λ(<N)の要素を置換する。なお、上記の交換近傍は2-交換近傍に一致する。
例えば、順列(1,2,3,4,5)の2,3,5を5,2,3に置換することで、順列(1,5,2,4,3)を得る。
第4の例は、λ-挿入近傍である。λ-挿入近傍では、連続するλ(<N)の要素を他の位置に挿入する。
例えば、順列(1,2,3,4,5)の1,2,3を4と5の間に挿入することで、順列(4,1,2,3,5)を得る。
第5の例は、λ-opt近傍である。
ここで、順列の隣り合う要素の対(順序を無視する)を枝と呼ぶ。異なっている枝数がλを超えないものからなる近傍をλ-opt近傍と呼ぶ。次に、λ=2の場合の2-opt近傍の例を示す。
図7は、2-opt近傍の例を示す図である。
例えば、グラフ51は、順列(1,2,3,4,5,6,7,8)の隣り合う要素が枝で結ばれる様子を表す。グラフ52は、順列(1,2,6,5,4,3,7,8)の隣り合う要素が枝で結ばれる様子を表す。
例えば、順列(1,2,6,5,4,3,7,8)における、順列(1,2,3,4,5,6,7,8)と異なる枝は(2,6)を結ぶ枝及び(3,7)を結ぶ枝のみである。よって、順列(1,2,6,5,4,3,7,8)は、順列(1,2,3,4,5,6,7,8)の2-opt近傍内にある。
探索部220~720は、上記の第1~第5の例の方法などを用いて、探索に用いる近傍深度を動的に変更することができる。例えば、状態変数、すなわち、ビットを1つ反転した状態、もしくは一部のビットを他のビットと交換して得られる状態を1回の状態遷移での近傍とする。これにより、最適性について有望な領域への探索を続行できる。探索にかかる時間を考慮しなければ、解の精度が良くなるにつれて、近傍を深くするのが良いとされる。
例えば、上記の第1~第5の例の近傍の少なくとも2つを組み合わせて、1つの近傍とすることも考えられる。組み合わせる数が増えるほど、近傍は深くなる、すなわち、近傍深度の値が大きくなる。
図8は、解精度向上率データの例を示す図である。
解精度向上率データ121は、記憶部120に格納される。解精度向上率データ121は、探索部220~720の各々の近傍深度に対して計算された解精度向上率の計算結果のデータである。
図8の解精度向上率データ121の例では、6つの探索部220~720のうち、近傍深度「1」が設定された探索部の数が2であり、近傍深度「2」が設定された探索部の数が3であり、近傍深度「3」が設定された探索部の数が1である。
例えば、解精度向上率データ121は、各近傍深度に対して、次の解精度向上率のデータを保持する。
1つ目は、近傍深度「1」に対して、解精度向上率「1200」である。
2つ目は、近傍深度「1」に対して、解精度向上率「800」である。
3つ目は、近傍深度「2」に対して、解精度向上率「500」である。
4つ目は、近傍深度「2」に対して、解精度向上率「100」である。
5つ目は、近傍深度「2」に対して、解精度向上率「1800」である。
6つ目は、近傍深度「3」に対して、解精度向上率「3000」である。
制御部130は、解精度向上率データ121に基づいて、解精度向上評価値を計算する。
図9は、解精度向上評価値の計算例を示す図である。
制御部130は、近傍深度ごとの解精度向上率の平均である平均向上率を求める。図8の解精度向上率データ121では、近傍深度「1」の平均向上率は、(1200+800)/2=1000である。近傍深度「2」の平均向上率は、(500+100+1800)/3=800である。近傍深度「3」の平均向上率は、3000である。
制御部130は、近傍深度ごとの平均向上率を正規化する。例えば、制御部130は、各近傍深度の平均向上率を、そのうちの最小値である近傍深度「2」の平均向上率「800」で割ることで、当該最小値を基準に正規化する。すると、近傍深度「1」の平均向上率「1000」に対する正規化値は1.25である。近傍深度「2」の平均向上率「800」に対する正規化値は1である。近傍深度「3」の平均向上率「3000」に対する正規化値は3.75である。
制御部130は、近傍深度ごとの正規化値を更に小数点以下を丸めて整数化することで、解精度向上評価値を求める。例えば、近傍深度「1」の解精度向上評価値は1である。近傍深度「2」の解精度向上評価値は1である。近傍深度「3」の解精度向上評価値は4である。
上記の計算で求められる平均向上率、正規化値及び解精度向上評価値は、記憶部120に保持される。
制御部130は、解精度向上評価値の計算結果を近傍深度テーブルに登録する。
図10は、近傍深度テーブルの例を示す図である。
近傍深度テーブル122は、記憶部120に格納される。近傍深度テーブル122は、近傍深度及び解精度向上評価値の項目を含む。近傍深度の項目には、近傍深度が登録される。解精度向上評価値の項目には、解精度向上評価値が登録される。
例えば、近傍深度テーブル122には近傍深度「1」に対して解精度向上評価値「W[1]=1」が登録されている。ここで、変数W[d](dは1以上の整数)は、近傍深度「d」の解精度向上評価値を表す。
また、近傍深度テーブル122には、近傍深度「2」に対する解精度向上評価値「W[2]=1」、及び、近傍深度「3」に対する解精度向上評価値「W[3]=4」も登録されている。
次に、情報処理システム2の処理手順を説明する。まず、制御装置100は、イジング形式の問題のデータや、探索に用いられる各種の情報(例えば、各ノードの探索部がSA法やレプリカ交換法の実行に用いられる温度パラメータなど)を探索部220~720に送信する。そして、制御装置100は、次の手順を実行する。
図11は、制御部の処理例を示すフローチャートである。
(S10)制御部130は、近傍深度の範囲を決定する。近傍深度の範囲は、探索に使用する近傍深度の最小値及び最大値により定められる。例えば、近傍深度の範囲は、同種の問題に対して過去の探索実績から得られた知識データや、当該近傍深度の範囲のユーザによる指定に基づいて決定される。制御部130は、探索依頼回数を0に初期化する。
(S11)制御部130は、探索依頼回数に1を加算する。
(S12)制御部130は、探索依頼回数が上限以下であるか否かを判定する。探索依頼回数が上限以下の場合、制御部130は、ステップS13に処理を進める。探索依頼回数が上限よりも大きい場合、制御部130は、ステップS20に処理を進める。なお、探索依頼回数の上限は、ユーザにより予め設定される。
(S13)制御部130は、初期解を生成する。初回、すなわち、探索依頼回数が1のときの初期解は、予め与えられてもよいし、制御部130が任意の方法で生成してもよい。また、探索依頼回数が2以上の時の初期解は、例えば、制御部130が前回の探索部220~720の探索により得られた解に基づいて生成する。例えば、制御部130は、前回得られた解のうちの最良解に基づいて、初期解を生成してもよい。制御部130は、当該最良解の一部の状態変数を所定のルールに基づいて変更することで、初期解を生成してもよい。制御部130は、探索部220~720の各々に対する初期解を同じにしてもよいし、異なるものにしてもよい。
(S14)制御部130は、各探索部の近傍深度を選択する。前述のように、探索依頼回数が1のとき、制御部130は、探索部220~720の各々の初期近傍深度をランダムに決定してもよいし、所定の重み付き確率で、特定の近傍を選び易くしてもよい。探索依頼回数が2以上のとき、制御部130は、近傍深度テーブル122に基づいて、探索部220~720の各々の近傍深度を選択する。例えば、制御部130は、選択される近傍深度の数が、近傍深度テーブル122に保持される各解精度向上評価値の比に近づくように、探索部220~720の各々の近傍深度を、乱数に基づいて確率的に選択する。図10の近傍深度テーブル122の例では、ある探索部に対して近傍深度「1」が選択される確率、あるいは割合は1/6である。また、ある探索部に対して近傍深度「2」が選択される確率は1/6である。更に、ある探索部に対して近傍深度「3」が選択される確率は、4/6=2/3である。
(S15)制御部130は、送信部140を介して、探索部220~720の各々に設定する近傍深度と初期解とを各探索部に送信する。
(S16)制御部130は、受信部150を介して、探索部220~720の各々での求解結果と探索時間とを探索部220~720から受信する。求解結果は、初期解と、今回の探索で得られた最良解と、探索時間とを含む。
(S17)制御部130は、受信解、すなわち、探索部220~720から受信した解に、これまでに得られた解の中での最良解であって、記憶部120に保持される最良解よりも良いものがあれば、当該記憶部120に保持される最良解を更新する。
(S18)制御部130は、解精度向上評価値w[k]=0(k=1,…,n)に設定する。
(S19)制御部130は、近傍深度kの探索部に関して、(初期解E値-最良解E値)/探索時間を累積し、累積した値を近傍深度kの探索部の数で割った平均をw[k]に設定する。なお、「初期解E値」とは、該当の探索の初期解のエネルギー値である。また、「最良解E値」とは、該当の探索で得られた最良解のエネルギー値である。制御部130は、前述のようにw[k]を正規化してもよいし、w[k]が整数でない場合に小数点以下を切り捨てる、または切り上げるなどによりw[k]を整数化してもよい。そして、制御部130は、ステップS11に処理を進める。
(S20)制御部130は、記憶部120に保持される最良解を解出力部160に供給する。解出力部160は、制御部130から取得した最良解を出力する。例えば、解出力部160は、最終的な解を組合せ最適化問題に対する解の形式に変換した内容をディスプレイ31に表示させたり、当該内容を示す情報を、ネットワーク30を介して、クライアントコンピュータなどに送信したりしてもよい。そして、制御部130の処理が終了する。
次に、探索部220~720の処理手順を説明する。以下では、探索部220を主に例示するが、探索部320~720も、探索部220と同様の手順を実行する。
図12は、探索部の処理例を示すフローチャートである。
(S30)探索部220は、近傍深度と初期解とを制御装置100から受信する。
(S31)探索部220は、受信した初期解から、指定された近傍深度で、設定された終了条件が満たされるまで探索を行う。ステップS31において、探索開始から終了条件が満たされるまでの探索に要した時間が探索時間となる。
(S32)探索部220は、ステップS31の探索により到達した解、すなわち、当該探索における最良解と探索時間とを、制御装置100に応答する。そして、探索部220の処理が終了する。
ここで、ステップS31の探索時間の特性は、探索部220~720の各々に実装されるアルゴリズムに依存する。当該アルゴリズムには次のような例が考えられる。
第1の例は、該当の探索部が、一定回数の状態遷移を行った後に、探索を終了する場合である。第1の例では、近傍が深いほど探索に時間がかかるが解の精度も向上する。近傍の深さと探索時間との相関はほぼ一定となる。
第2の例は、該当の探索部が、一定時間の探索を行って終了する場合である。第2の例では、探索時間は一定であるため、解の精度は「何れの近傍深度が最適であるか」に依存する。探索部220~720による探索時間が常に一定値の場合、制御部130は、探索部220~720から探索時間を取得しなくてもよい。その場合、制御部130は、解精度向上率を求める式において、Tを当該一定値としてもよいし、T=1としてもよい。
第3の例は、該当の探索部が、解の改善が一定時間、または、一定回数なかった場合に終了する場合である。第3の例では、近傍が深いほど探索に時間がかかるが解の精度も向上し得る。ただし、第1の例ほど固定的な相関はない。
上記の第1~第3の例の何れの場合も、例えば探索時間と解のエネルギー値の改善量の比を取ることで、良好な探索性能を得られる近傍深度を推定することができる。
なお、1つのノードに1つの探索部を設ける例を示したが、1つのノードに複数の探索部を設けることもできる。次にノード200の他のハードウェア例を説明する。
図13は、ノードの他のハードウェア例を示す図である。
ノード200は、図4で例示したハードウェアに加えて、アクセラレータカード205aを有してもよい。アクセラレータカード205aは、バス207に接続される。
アクセラレータカード205aは、イジング形式で表された組合せ最適化問題の解を探索するハードウェアアクセラレータである。アクセラレータカード205aは、GPU211a及びRAM212aを有する。GPU211aは、アクセラレータカード205aにおける解探索機能を実現する。アクセラレータカード205aは複数のGPUを有してもよい。また、当該解探索機能は、FPGAやASICなどの他の集積回路により実現されてもよい。RAM212aは、式(1)の{Wij}、{b}及びGPU211aにより探索された解を保持する。
アクセラレータカード205aは、ノード200における探索部として機能する。このように、ノード200に複数のアクセラレータカードを搭載することで、ノード200において探索部220を含む、複数の探索部を実現してもよい。ノード200における複数の探索部の少なくとも1つは、ノード200における複数の探索部のうちの他の探索部とは異なる近傍深度を用いて探索を行ってもよい。また、ノード200における複数の探索部の少なくとも1つは、CPU201がRAM202に記憶されるプログラムを実行することで実現されてもよい。
ノード300~700も、ノード200と同様のハードウェアにより、複数の探索部を実現してもよい。
また、制御装置100の機能をノード200が有してもよい。例えば、CPU201がRAM202に記憶されたプログラムを実行することで、制御部130、送信部140、受信部150及び解出力部160の機能を発揮してもよい。例えば、ノード200に複数の探索部を設けることで、第1の実施の形態の情報処理システム1や第2の実施の形態の情報処理システム2の機能を、ノード200だけで実現することもできる。すなわち、アクセラレータカード205,205aを搭載したノード200などの単一の情報処理装置が第1の実施の形態の情報処理システム1の一例となり得る。その場合、CPU201を第1の実施の形態の処理部12の一例と考えることができる。また、RAM202またはHDD203を第1の実施の形態の記憶部11の一例と考えることができる。
このように、情報処理システム2では、ノード200~700におけるアクセラレータで並列に最適解を探索する。情報処理システム2では、ノード200~700の各々における解精度の向上率を基に近傍の深さ、すなわち、近傍深度を調整して強調動作させることにより、求解性能を向上させることができる。
ところで、近傍深度1のみでの状態遷移を繰り返し試行することで解の探索を行うことが考えられるが、大域的な最適解に到達するのが難しいことがある。
一例として、式(3)で表される問題を考える。
Figure 2022015503000004
式(3)で表される問題は、y(x)を最小にする状態xを求める問題である。状態xは3つの状態変数(x,x,x)で表される。初期解x=(x,x,x)=(0,0,0)とすると、近傍深度1の状態遷移(すなわち、1ビットフリップ)では、次の状態の候補及びy(x)の値は式(4)で表される3つとなる。
Figure 2022015503000005
式(4)の3つの候補のうち、x=(1,0,0)がy(x)の値が最も小さく、最良である。このため、例えば、初期解から状態x=(1,0,0)に遷移する。次の1ビットフリップで、状態x=(0,0,0)に戻ることを除くと、次の状態の候補及びy(x)の値は式(5)の2つとなる。
Figure 2022015503000006
式(5)と、y(1,0,0)=-100とを比較すると、y(1,0,0)が最も小さい。よって、状態x=(1,0,0)が局所最適解となる。しかし、この問題の場合、初期解に対して、状態変数x,xを同時にフリップしたx=(0,1,1)が大域最適解である。y(0,1,1)は、式(6)で表される。
Figure 2022015503000007
一方、式(4)で示されるように、x=(0,1,0)やx=(0,0,1)はx=(1,0,0)よりもy(x)が大きくなるので、初期解からx=(0,1,0)やx=(0,0,1)に遷移しづらい。このため、1ビットフリップのみの状態遷移による探索では、x=(0,1,0)やx=(0,0,1)の先にある大域最適解x=(0,1,1)に到達することが難しい。
そこで、探索における一状態遷移当たりに変化させる状態変数の数、すなわち、近傍深度を可変にし、当該近傍深度を段階的に大きくすることが考えられる。ただし、この場合、得られる解の精度は向上し得るが、探索に要する時間が増大する。具体的には次の通りである。
一例として、ナップザック問題を考える。ナップザック問題は、内容物の重さあるいは体積などの容量に対する容量上限Cをもつナップザックに入れる品物の組合せのうち、価値の合計が最大になる組合せを求める問題である。品物はN(Nは2以上の整数)個存在する。i(iは1以上の整数)番目の品物iの容量をw、価値をvとする。任意のiに対してw<Cである。
ナップザック問題のエネルギー関数は、ナップザック内の品物の総価値を表し、w,v,Cを用いて、状態変数xの二次形式で定式化される。状態変数xは、例えば、品物iをナップザックに入れることを「1」、品物iをナップザックに入れないことを「0」と表す。
ナップザック問題における探索戦略として次のような方法が考えられる。
第1段階では、価値/容量の大きい効果的な品物から1つずつナップザックに詰めていく。この場合、状態遷移の試行回数は高々Nである。第1段階での近傍深度は「1」である。すなわち、状態遷移によりハミング距離「1」の状態の変化を発生させる。ナップザックの中身の総容量が容量上限Cに近づき、未選択の品物を追加できなくなると、第2段階に移る。
第2段階では、ナップザックに詰め込んだ品物を1つ取り除き、別の品物をナップザックに追加する。仮にK個の品物をナップザックに詰め込んでいる場合、状態遷移の試行回数は、K*(N-K)回程度である。第2段階での近傍深度は「2」である。すなわち、状態遷移によりハミング距離「2」の状態の変化を発生させる。第2段階で価値が改善されなくなると、第3段階に移る。
第3段階では、ナップザックに詰め込んだ品物を2つ取り除き、別の品物をナップザックに追加する。仮にK個の品物をナップザックに詰め込んでいる場合、状態遷移の試行回数は、K(K-1)*(N-K)(N-K-1)回程度である。第3段階での近傍深度は「4」である。すなわち、状態遷移によりハミング距離「4」の状態の変化を発生させる。第3段階で価値が改善されなくなると、更に次の段階に移る。
このように、近傍深度を可変にし、当該近傍深度を段階的に大きくすると、得られる解の精度は向上し得るが、探索されるパターンが増えて探索に要する時間が増大する。一方、問題や探索の状況などに応じて、近傍深度を適切に決定することは容易ではない。
これに対し、制御部130は、異なる近傍深度での探索の結果として得られた解を基に、近傍深度ごとの解精度向上指標を計算する。そして、制御部130は、近傍深度ごとの解精度向上指標に基づいて、該当の問題や現在の探索の状況などに応じて、近傍深度ごとに解精度に対する寄与を判定し、解精度向上に対する寄与が大きいと推定される近傍深度を優先的に選択する。制御部130は、選択した近傍深度を用いて探索部220~720に探索を実行させることで、効率的に探索を実行させることができる。その結果、探索部220~720がより良い解に到達する可能性を高め、探索部220~720の全体の求解性能が向上される。例えば、所定時間内に、最適解、または、エネルギー値が予め定められた目標値よりも小さい解に到達できる可能性を高めることができる。
以上で説明した情報処理システム2は、例えば次の処理を実行する。
探索部220~720の各々は、複数の状態変数を含むエネルギー関数で表される問題の解の探索を行う。探索部220~720の各々には、探索において一状態遷移当たりに変化させる状態変数の数を示す近傍深度が設定される。
制御部130は、第1の近傍深度での探索の初期解に対するエネルギー関数の第1の値と、第1の近傍深度での探索により得られた第1の解に対するエネルギー関数の第2の値とを取得する。制御部130は、第1の値と第2の値とに基づいて、第1の近傍深度による解精度の向上の度合いを示す第1の指標を計算する。
制御部130は、第2の近傍深度での探索の初期解に対するエネルギー関数の第3の値と、第2の近傍深度での探索により得られた第2の解に対するエネルギー関数の第4の値とを取得する。制御部130は、第3の値と第4の値とに基づいて、第2の近傍深度による解精度の向上の度合いを示す第2の指標を計算する。
制御部130は、第1の指標と第2の指標とに基づいて、探索部220~720に設定する近傍深度を出力する。
こうして出力された近傍深度を探索部220~720による探索に用いることで、探索を効率的に実行できる。例えば、問題に応じて、適切な近傍深度を設定可能になる。あるいは、探索部220~720による今回の探索期間で得られた最良解を用いて探索部220~720による次の探索期間の初期解を生成する場合などに、探索の状況に応じて、適切な近傍深度を動的に調整可能になる。
ここで、上記の第1の指標と第2の指標とに基づいて、探索部220~720に設定する近傍深度を出力する処理では、第2の実施の形態で例示したように、3つ以上の近傍深度に対して求められた、第1の指標と第2の指標とを含む3つ以上の指標が利用され得る。
制御部130は、第1の値と第2の値との差に基づいて第1の指標を計算する。これにより、第1の近傍深度に対して、解精度の向上の度合いを示す第1の指標を、初期解と第1の解とのエネルギー差に対して適切に評価できる。例えば、当該エネルギー差が大きい、すなわち、エネルギー値の改善幅が大きいほど、解精度の向上の度合いは高いと評価できる。
制御部130は、第1の近傍深度での探索に要した時間、すなわち探索時間を更に取得し、第1の値と第2の値と探索時間とに基づいて第1の指標を計算してもよい。これにより、探索部220~720における探索時間が異なる場合に、探索時間を考慮して、第1の指標を適切に評価できる。
例えば、制御部130は、第1の値と第2の値との差を探索時間で割った第5の値に基づいて第1の指標を計算する。これにより、第1の近傍深度に対して、解精度の向上の度合いを示す第1の指標を、初期解と第1の解とのエネルギー差及び探索時間に対して適切に評価できる。すなわち、当該エネルギー差が大きいほど、また、探索時間が短いほど、解精度の向上の度合いは高くなる。なお、制御部130は、第5の値そのものを第1の指標としてもよい。
制御部130は、第1の近傍深度での複数回の探索により得られた、第1の解を含む複数の解の各々に対して計算した解精度の向上の度合いを示す指標の平均に基づいて、第1の指標を計算する。これにより、第1の近傍深度に対する解精度の向上の度合いを示す第1の指標の評価の精度を向上できる。制御部130は当該平均を第1の指標としてもよいし、例示したように、複数の近傍深度に対して当該平均を正規化した正規化値や、正規化値を更に整数化した値を第1の指標としてもよい。
また、制御部130は、第1の近傍深度で共通の初期解から行われた複数回の探索の結果から、第1の指標を計算してもよい。これにより、第1の指標の評価の精度を向上できる。ただし、当該複数回の探索の各々の初期解の少なくとも2つが異なってもよい。
なお、制御部130は、第2の指標についても、第1の指標と同様の方法により計算することができる。
制御部130は、第1の指標と第2の指標とに基づいて、解精度の向上の度合いが大きい近傍深度を優先的に選択し、選択した近傍深度を出力する。これにより、解精度の向上に対する寄与が大きいと判断される近傍深度を適切に出力できる。例えば、探索部220~720に対して、解精度の向上に対する寄与が大きいと判断される近傍深度が設定される割合を大きくすることができる。
探索部220~720の少なくとも2つの探索部は、第1の近傍深度での探索と第2の近傍深度での探索とを並列に実行する。2以上の探索部により探索を並列に実行することで、探索を一層効率的に行える。
制御部130は、第1の近傍深度と第2の近傍深度とを含む複数の近傍深度の各々に対して計算した解精度の向上の度合いを示す指標の比に基づいて、複数の探索部の各々に設定する近傍深度を選択する。これにより、解精度の向上に対する寄与が大きいと判断される近傍深度を適切に出力できる。例えば、探索部220~720に対して、解精度の向上に対する寄与が大きいと判断される近傍深度が設定される割合を大きくすることができる。
制御部130は、共通の初期解に対して第1の指標と第2の指標とを計算する。これにより、近傍深度及び初期解の組に対して解精度の向上の度合いを示す指標を計算でき、当該指標の評価の精度を向上できる。このため、例えば、探索部220~720に対して、問題や探索の状況などに応じて、より適切な近傍深度を設定可能になる。その結果、探索を一層効率的に行えるようになる。ただし、第1の指標と第2の指標とは異なる初期解に対して計算されてもよい。
制御部130は、探索部220~720に対する近傍深度の設定及び探索部220~720による探索が、所定回数または所定期間繰り返して行われると、探索部220~720から得られた解のうち、エネルギー関数の値が最小である解を出力する。これにより、組合せ最適化問題に対する解を適切に取得できる。
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101あるいはCPU201にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体33,34に記録できる。
例えば、プログラムを記録した記録媒体33,34を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体33,34に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
1 情報処理システム
11 記憶部
11a テーブル
12 処理部
13 探索部

Claims (13)

  1. 複数の状態変数を含むエネルギー関数で表される問題に関し、前記問題の解の探索における一回の状態遷移当たりに変化させる前記状態変数の数を示す近傍深度が設定され、設定された前記近傍深度に基づいて前記問題の解の探索を実行する探索部と、
    第1の近傍深度での探索の初期解に対する前記エネルギー関数の第1の値と、前記第1の近傍深度での探索により得られた第1の解に対する前記エネルギー関数の第2の値とを取得し、前記第1の値と前記第2の値とに基づいて、前記第1の近傍深度による解精度の向上の度合いを示す第1の指標を計算し、第2の近傍深度での探索の初期解に対する前記エネルギー関数の第3の値と、前記第2の近傍深度での探索により得られた第2の解に対する前記エネルギー関数の第4の値とを取得し、前記第3の値と前記第4の値とに基づいて、前記第2の近傍深度による解精度の向上の度合いを示す第2の指標を計算し、前記第1の指標と前記第2の指標とに基づいて、前記探索部に設定する前記近傍深度を出力する処理部と、
    を有する情報処理システム。
  2. 前記処理部は、前記第1の値と前記第2の値との差に基づいて前記第1の指標を計算する、請求項1記載の情報処理システム。
  3. 前記処理部は、前記第1の近傍深度での探索に要した時間を更に取得し、前記第1の値と前記第2の値と前記時間とに基づいて前記第1の指標を計算する、請求項1記載の情報処理システム。
  4. 前記処理部は、前記第1の値と前記第2の値との差を前記時間で割った第5の値に基づいて前記第1の指標を計算する、請求項3記載の情報処理システム。
  5. 前記処理部は、前記第1の近傍深度での複数回の探索により得られた、前記第1の解を含む複数の解の各々に対して計算した前記解精度の向上の度合いを示す指標の平均に基づいて、前記第1の指標を計算する、請求項1記載の情報処理システム。
  6. 前記第1の近傍深度での前記複数回の探索は、共通の前記初期解を用いて行われる、請求項5記載の情報処理システム。
  7. 前記処理部は、前記第1の指標と前記第2の指標とに基づいて、前記解精度の向上の度合いが大きい前記近傍深度を優先的に選択し、選択した前記近傍深度を出力する、請求項1記載の情報処理システム。
  8. 前記探索部を含む複数の探索部を有し、
    前記複数の探索部の少なくとも2つの探索部は、前記第1の近傍深度での探索と前記第2の近傍深度での探索とを並列に実行する、
    請求項1記載の情報処理システム。
  9. 前記処理部は、前記第1の近傍深度と前記第2の近傍深度とを含む複数の近傍深度の各々に対して計算した前記解精度の向上の度合いを示す指標の比に基づいて、前記複数の探索部の各々に設定する前記近傍深度を選択する、請求項8記載の情報処理システム。
  10. 前記処理部は、共通の前記初期解に対して前記第1の指標と前記第2の指標とを計算する、請求項1記載の情報処理システム。
  11. 前記処理部は、前記探索部に対する前記近傍深度の設定及び前記探索部による探索が、所定回数または所定期間繰り返して行われると、前記探索部から得られた解のうち、前記エネルギー関数の値が最小である解を出力する、請求項1記載の情報処理システム。
  12. 複数の状態変数を含むエネルギー関数で表される問題に関し、前記問題の解の探索における一回の状態遷移当たりに変化させる前記状態変数の数を示す近傍深度が設定され、設定された前記近傍深度に基づいて前記問題の解の探索を実行する探索部が、前記解の探索を行い、
    処理部が、
    第1の近傍深度での探索の初期解に対する前記エネルギー関数の第1の値と、前記第1の近傍深度での探索により得られた第1の解に対する前記エネルギー関数の第2の値とを取得し、前記第1の値と前記第2の値とに基づいて、前記第1の近傍深度による解精度の向上の度合いを示す第1の指標を計算し、
    第2の近傍深度での探索の初期解に対する前記エネルギー関数の第3の値と、前記第2の近傍深度での探索により得られた第2の解に対する前記エネルギー関数の第4の値とを取得し、前記第3の値と前記第4の値とに基づいて、前記第2の近傍深度による解精度の向上の度合いを示す第2の指標を計算し、
    前記第1の指標と前記第2の指標とに基づいて、前記探索部に設定する前記近傍深度を出力する、
    情報処理方法。
  13. コンピュータに、
    複数の状態変数を含むエネルギー関数で表される問題に関し、前記問題の解の探索における一回の状態遷移当たりに変化させる前記状態変数の数を示す近傍深度が設定され、設定された前記近傍深度に基づいて前記問題の解の探索を実行する探索部に、前記解の探索を実行させ、
    第1の近傍深度での探索の初期解に対する前記エネルギー関数の第1の値と、前記第1の近傍深度での探索により得られた第1の解に対する前記エネルギー関数の第2の値とを取得し、前記第1の値と前記第2の値とに基づいて、前記第1の近傍深度による解精度の向上の度合いを示す第1の指標を計算し、
    第2の近傍深度での探索の初期解に対する前記エネルギー関数の第3の値と、前記第2の近傍深度での探索により得られた第2の解に対する前記エネルギー関数の第4の値とを取得し、前記第3の値と前記第4の値とに基づいて、前記第2の近傍深度による解精度の向上の度合いを示す第2の指標を計算し、
    前記第1の指標と前記第2の指標とに基づいて、前記探索部に設定する前記近傍深度を出力する、
    処理を実行させるプログラム。
JP2020118382A 2020-07-09 2020-07-09 情報処理システム、情報処理方法及びプログラム Withdrawn JP2022015503A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2020118382A JP2022015503A (ja) 2020-07-09 2020-07-09 情報処理システム、情報処理方法及びプログラム
US17/211,902 US20220012291A1 (en) 2020-07-09 2021-03-25 Information processing system, information processing method, and non-transitory computer-readable storage medium for storing program
EP21165516.2A EP3937090A1 (en) 2020-07-09 2021-03-29 Information processing system, information processing method, and program
CN202110381598.3A CN113919504A (zh) 2020-07-09 2021-04-09 信息处理系统、信息处理方法及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020118382A JP2022015503A (ja) 2020-07-09 2020-07-09 情報処理システム、情報処理方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2022015503A true JP2022015503A (ja) 2022-01-21

Family

ID=75302213

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020118382A Withdrawn JP2022015503A (ja) 2020-07-09 2020-07-09 情報処理システム、情報処理方法及びプログラム

Country Status (4)

Country Link
US (1) US20220012291A1 (ja)
EP (1) EP3937090A1 (ja)
JP (1) JP2022015503A (ja)
CN (1) CN113919504A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023248414A1 (ja) * 2022-06-23 2023-12-28 日本電気株式会社 求解装置、求解方法および求解プログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117407179B (zh) * 2023-12-15 2024-04-02 成都凯迪飞研科技有限责任公司 一种基于协同处理的加速子卡处理方法及系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2526397B2 (ja) 1993-04-19 1996-08-21 工業技術院長 組合せ最適化装置
JP2004070662A (ja) 2002-08-06 2004-03-04 Mitsubishi Electric Corp 状態空間の探索方式
JP7206476B2 (ja) * 2018-09-14 2023-01-18 富士通株式会社 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
JP7155794B2 (ja) * 2018-09-19 2022-10-19 富士通株式会社 最適化問題演算プログラム、最適化問題演算方法および最適化問題演算装置
JP7196489B2 (ja) * 2018-09-19 2022-12-27 富士通株式会社 最適化問題演算プログラム、最適化問題演算方法および最適化問題演算装置
JP7063211B2 (ja) * 2018-09-19 2022-05-09 富士通株式会社 最適化問題演算プログラム、最適化問題演算方法および最適化問題演算装置
JP7108185B2 (ja) * 2018-11-22 2022-07-28 富士通株式会社 最適化装置および最適化装置の制御方法
JP2019160293A (ja) 2019-01-09 2019-09-19 富士通株式会社 最適化装置及び最適化装置の制御方法
JP7201911B2 (ja) * 2019-05-13 2023-01-11 富士通株式会社 最適化装置および最適化装置の制御方法
JP7396024B2 (ja) * 2019-12-20 2023-12-12 日本電気株式会社 情報処理装置、情報処理方法及びプログラム
JP2021131611A (ja) * 2020-02-18 2021-09-09 富士通株式会社 情報処理装置、プログラム、情報処理方法および情報処理システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023248414A1 (ja) * 2022-06-23 2023-12-28 日本電気株式会社 求解装置、求解方法および求解プログラム

Also Published As

Publication number Publication date
US20220012291A1 (en) 2022-01-13
EP3937090A1 (en) 2022-01-12
CN113919504A (zh) 2022-01-11

Similar Documents

Publication Publication Date Title
Cheung et al. Adaptive firefly algorithm: parameter analysis and its application
US8010535B2 (en) Optimization of discontinuous rank metrics
JP7007585B2 (ja) 最適化装置、最適化装置の制御方法及び最適化装置の制御プログラム
US20210256179A1 (en) Information processing method and information processing system
JP7248907B2 (ja) 最適化装置および最適化装置の制御方法
JP7239826B2 (ja) サンプリング装置およびサンプリング方法
JP7319539B2 (ja) 組合せ最適化装置、組合せ最適化方法および組合せ最適化プログラム
JP2022015503A (ja) 情報処理システム、情報処理方法及びプログラム
JP7201911B2 (ja) 最適化装置および最適化装置の制御方法
JP7181454B2 (ja) 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
US8250003B2 (en) Computationally efficient probabilistic linear regression
Meirom et al. Optimizing tensor network contraction using reinforcement learning
JP7339539B2 (ja) 最適化装置、最適化装置の温度設定方法及び最適化装置の温度設定プログラム
EP4187448A1 (en) Information processing apparatus, information processing method, and program
US20210365605A1 (en) Optimization device, optimization method, and non-transitory computer-readable storage medium for storing optimization program
Zapotecas-Martínez et al. Geometric differential evolution in MOEA/D: A preliminary study
US20230169386A1 (en) Information processing apparatus, information processing method, and computer-readable recording medium storing program of searching for parameter
JP2021144443A (ja) 情報処理システム、情報処理方法およびプログラム
US20220092380A1 (en) Optimization device, optimization method, and computer-readable recording medium storing optimization program
US20230267165A1 (en) Computer-readable recording medium storing data processing program, data processing device, and data processing method
US20230401279A1 (en) Information processing apparatus, information processing method, and storage medium
US20230350972A1 (en) Information processing apparatus and information processing method
US20230081944A1 (en) Data processing apparatus, data processing method, and storage medium
JP2022164162A (ja) 情報処理システム、情報処理方法及びプログラム
Thang et al. Multitask Augmented Random Search in deep reinforcement learning

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230407

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20240129