(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024180022
(43)【公開日】2024-12-26
(54)【発明の名称】最適化装置、最適化方法、及びプログラム
(51)【国際特許分類】
G06N 99/00 20190101AFI20241219BHJP
【FI】
G06N99/00 180
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023099427
(22)【出願日】2023-06-16
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】504137912
【氏名又は名称】国立大学法人 東京大学
(74)【代理人】
【識別番号】110004381
【氏名又は名称】弁理士法人ITOH
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【弁理士】
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】中村 健吾
(72)【発明者】
【氏名】安田 宜仁
(72)【発明者】
【氏名】坂上 晋作
(57)【要約】 (修正有)
【課題】目的関数が強凸よりも緩い条件下で目的関数の最適値に対する誤差が線形収束し、選択可能な組合せの個数が指数的に多い場合であっても組合せ最適化問題を高速に解く最適化装置、方法及びプログラムを提供する。
【解決手段】凸関数である目的関数fと、アイテム集合Xに関する選択可能な組合せC
1,…,C
t⊆Xの集合を表す組合せ集合scrCとに対して、組合せC
iが確率p
iで含まれることを表し、かつ、f(x)を最小化するベクトルxを求める最適化装置であって、目的関数fと、組合せ集合scrCを表現したZDDと、目的関数fの最適値との許容誤差εとを入力する入力部と、目的関数fと、ZDDと、許容誤差εに基づいて、Frank-Wolfe法の各反復で前回の反復で求めた解x
TからZDDを利用して次の解x
T+1を求めることにより、目的関数fの最適値との誤差が許容誤差ε以下であるベクトルxを求める最適化部と、を有する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
凸関数である目的関数fと、アイテム集合X={a1,・・・,ad}に関する選択可能な組合せC1,・・・,Ct⊆Xの集合を表す組合せ集合scrCとに対して、組合せCiが確率pi(ただし、pi≧0かつp1+・・・+pt=1)で含まれることを表すベクトルxであって、かつ、f(x)を最小化するベクトルxを求める最適化装置であって、
前記目的関数fと、前記組合せ集合scrCをゼロサプレス型二分決定グラフで表現したZDDと、前記目的関数fの最適値との許容誤差εとを入力する入力部と、
前記目的関数fと、前記ZDDと、前記許容誤差εに基づいて、Frank-Wolfe法の各反復で前回の反復で求めた解xTから前記ZDDを利用して次の解xT+1を求めることにより、前記目的関数fの最適値との誤差が前記許容誤差ε以下であるベクトルxを求める最適化部と、
を有する最適化装置。
【請求項2】
前記最適化部は、
Frank-Wolfe法の各反復で前記ZDDを利用してxT
τ∇f(xT)+ρ||xT+x||2(ただし、τは転置を表し、ρは定数)を最小化するxをvT+1として計算し、
v1,・・・,vT+1から前記次の解xT+1を求める、請求項1に記載の最適化装置。
【請求項3】
前記最適化部は、
前記ZDDの各分岐ノードvに関してラベルが大きい順に、Dv←min{Dv_0,Dv_1+(∇f(xT))v_lv+ρ(1-2(xT)v_lv)}(ただし、v0はvの0-子ノード、v1はvの1-子ノード、vlvはvのラベル、(xT)v_lvはxTのvlv番目の要素、(∇f(xT))v_lvは∇f(xT)のvlv番目の要素、DΤ=0、D⊥=最大値)を計算し、
前記ZDDの根ノードrから終端ノードΤに到達するまで、Dv=Dv_1+(∇f(xT))v_lv+ρ(1-2(xT)v_lv)であれば1-子ノード、Dv≠Dv_1+(∇f(xT))v_lv+ρ(1-2(xT)v_lv)であれば0-子ノードに分岐させたときの経路が表す組合せを前記vT+1として求める、請求項2に記載の最適化装置。
【請求項4】
前記最適化部は、
v1,・・・,vT+1の凸包の中で、xτ∇f(xT)+(β/2)||x-xT||2(ただし、βは定数)を最小化するxを前記次の解xT+1として求める、請求項2又は3に記載の最適化装置。
【請求項5】
前記最適化部は、
前記解xTの双対性のギャップが前記許容誤差ε以下となるまで、前記Frank-Wolfe法の反復を繰り返すことにより、前記ベクトルxを求める、請求項1に記載の最適化装置。
【請求項6】
凸関数である目的関数fと、アイテム集合X={a1,・・・,ad}に関する選択可能な組合せC1,・・・,Ct⊆Xの集合を表す組合せ集合scrCとに対して、組合せCiが確率pi(ただし、pi≧0かつp1+・・・+pt=1)で含まれることを表すベクトルxであって、かつ、f(x)を最小化するベクトルxを求める最適化装置が、
前記目的関数fと、前記組合せ集合scrCをゼロサプレス型二分決定グラフで表現したZDDと、前記目的関数fの最適値との許容誤差εとを入力する入力手順と、
前記目的関数fと、前記ZDDと、前記許容誤差εに基づいて、Frank-Wolfe法の各反復で前回の反復で求めた解xTから前記ZDDを利用して次の解xT+1を求めることにより、前記目的関数fの最適値との誤差が前記許容誤差ε以下であるベクトルxを求める最適化手順と、
を実行する最適化方法。
【請求項7】
凸関数である目的関数fと、アイテム集合X={a1,・・・,ad}に関する選択可能な組合せC1,・・・,Ct⊆Xの集合を表す組合せ集合scrCとに対して、組合せCiが確率pi(ただし、pi≧0かつp1+・・・+pt=1)で含まれることを表すベクトルxであって、かつ、f(x)を最小化するベクトルxを求める最適化装置に、
前記目的関数fと、前記組合せ集合scrCをゼロサプレス型二分決定グラフで表現したZDDと、前記目的関数fの最適値との許容誤差εとを入力する入力手順と、
前記目的関数fと、前記ZDDと、前記許容誤差εに基づいて、Frank-Wolfe法の各反復で前回の反復で求めた解xTから前記ZDDを利用して次の解xT+1を求めることにより、前記目的関数fの最適値との誤差が前記許容誤差ε以下であるベクトルxを求める最適化手順と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、最適化装置、最適化方法、及びプログラムに関する。
【背景技術】
【0002】
一般的な組合せ最適化問題は、所望の目的関数を最適化(最小化又は最大化)する組合せをただ1つ求めることを目的とする。一方で、組合せ最適化問題の中には、最適な組合せのポートフォリオ、すなわちいくつかの組合せのミックスを求めるタイプの問題も存在する。このタイプの問題のうちの一部は凸関数である目的関数を用いて定式化することが可能である。
【0003】
最適な組合せのポートフォリオを求めるタイプの問題のうち凸関数である目的関数を用いて定式化できる組合せ最適化問題は、選択可能な組合せの個数が少ない場合には、非特許文献1に記載されているFrank-Wolfe法を用いて解くことができる。また、目的関数が強凸関数と呼ばれる良いクラスに属する場合には、非特許文献2に記載されているFully-corrective Frank-Wolfe法やAway-step Frank-Wolfe法を用いて解くことができる。ただし、非特許文献1に記載されているFrank-Wolfe法では目的関数の最適値との誤差が反復数の逆数に比例した速度でしか減少せず、また非特許文献2に記載されているFully-corrective Frank-Wolfe法やAway-step Frank-Wolfe法では目的関数の最適値との誤差が反復数に対して指数的に減少するものの、目的関数が強凸関数であるという条件を満たす必要がある。これに対して、非特許文献3には、目的関数が強凸よりも緩い条件下でも目的関数の最適値との誤差が反復数に対して指数的に減少するFrank-Wolfe法が記載されている。以下、目的関数の最適値との誤差が反復数に対して指数的に減少することを「線形収束」と呼ぶことにする。
【0004】
一方で、選択可能な組合せの個数が指数的に多い場合、Frank-Wolfeの1反復にも指数的な時間が掛かってしまうため現実的な時間で解くことが難しくなる。これに対して、非特許文献4には、選択可能な組合せの集合をコンパクトに表現可能なデータ構造をFrank-Wolfe法内部の計算に用いることにより、選択可能な組合せの個数が指数的に多い場合でも実用上高速に最適化できる手法が記載されている。この非特許文献4に記載されている手法では、目的関数が強凸関数である場合、目的関数の最適値との誤差が線形収束する。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Marguerite Frank and Philip Wolfe. An algorithm for quadratic programming. Naval Research Logistics Quarterly, Vol. 3, pp. 95-110.
【非特許文献2】Simon Lacoste-Julien and Martin Jaggi. On the global linear convergence of Frank--Wolfe optimization variants. In Proceedings of the 28th International Conference on Neural Information Processing Systems, Vol. 1, pp. 496-504, 2015.
【非特許文献3】Dan Garber and Noam Wolf. Frank-Wolfe with a nearest extreme point oracle, In Proceedings of the 34th Annual Conference on Learning Theory, PMLR Vol. 134, pp. 2103-2132, 2021.
【非特許文献4】Kengo Nakamura, Shinsaku Sakaue, and Norihito Yasuda. Practical Frank-Wolfe method with decision diagrams for computing Wardrop equilibrium of combinatorial congestion games. In Proceedings of the 34th AAAI Conference on Artificial Intelligence, pp. 2200-2209, 2020.
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、非特許文献4に記載されている手法は目的関数の最適値との誤差が線形収束するものの、理論上その速度は非常に遅く、また目的関数が強凸であるという条件は実応用では成り立たないこともある。
【0007】
本開示は、上記の点に鑑みてなされたもので、目的関数が強凸よりも緩い条件下で目的関数の最適値に対する誤差が線形収束し、選択可能な組合せの個数が指数的に多い場合であっても組合せ最適化問題を高速に解くことができる技術を提供する。
【課題を解決するための手段】
【0008】
本開示の一態様による最適化装置は、凸関数である目的関数fと、アイテム集合X={a1,・・・,ad}に関する選択可能な組合せC1,・・・,Ct⊆Xの集合を表す組合せ集合scrCとに対して、組合せCiが確率pi(ただし、pi≧0かつp1+・・・+pt=1)で含まれることを表すベクトルxであって、かつ、f(x)を最小化するベクトルxを求める最適化装置であって、前記目的関数fと、前記組合せ集合scrCをゼロサプレス型二分決定グラフで表現したZDDと、前記目的関数fの最適値との許容誤差εとを入力する入力部と、前記目的関数fと、前記ZDDと、前記許容誤差εに基づいて、Frank-Wolfe法の各反復で前回の反復で求めた解xTから前記ZDDを利用して次の解xT+1を求めることにより、前記目的関数fの最適値との誤差が前記許容誤差ε以下であるベクトルxを求める最適化部と、を有する。
【発明の効果】
【0009】
目的関数が強凸よりも緩い条件下で目的関数の最適値に対する誤差が線形収束し、選択可能な組合せの個数が指数的に多い場合であっても組合せ最適化問題を高速に解くことができる技術が提供される。
【図面の簡単な説明】
【0010】
【
図1】本実施形態に係る最適化装置のハードウェア構成の一例を示す図である。
【
図2】本実施形態に係る最適化装置の機能構成の一例を示す図である。
【
図3】組合せ最適化問題の求解処理の一例を示すフローチャートである。
【
図4】最適化部が実行する処理の流れの一例を示す図である。
【
図5】LinearMin(w)の処理の流れの一例を示す図である。
【
図6】NearPoint(x,w,ρ)の処理の流れの一例を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の一実施形態について説明する。
【0012】
<最適な組合せのポートフォリオを求めるタイプの組合せ最適化問題>
組合せ最適化問題の中には、最適な組合せのポートフォリオ、すなわちいくつかの組合せのミックスを求めるタイプの問題も存在する。この種の問題では、アイテム集合X={a1,・・・,ad}とその選択可能な組合せC1,・・・,Ct⊆Xとが与えられたとき、各組合せに対応する確率値p1,・・・,ptを求める。これは、組合せCiが割合piで含まれるような組合せのミックスを意味する。これらの値は確率であるため、pi≧0かつp1+・・・+pt=1であることが要請される。
【0013】
上記のタイプの問題のうち一部は、次のように定式化される。まず、選択可能な組合せの集合を以下とする。
【0014】
【数1】
以下、本明細書のテキスト中では、組合せの集合を「scrC」と表すことにする。
【0015】
また、組合せC⊆Xに対して、その指示ベクトル1Cをd=|X|次元のベクトルであり、ai∈Cであればi番目の要素が1、そうでなければi番目の要素が0であるようなベクトルとする。このとき、凸関数である目的関数f(x)に対して次の最適化問題を考える。
【0016】
【数2】
ここで、一般に、d次元のベクトルの集合V={v
1,・・・,v
t}に対して、conv(V)はその凸包、すなわち以下である。
【0017】
【数3】
この凸包のp
iに関する条件が、最適な組合せのポートフォリオを求めるタイプの問題における各p
iに対する要請と一致している。一般に選択可能な組合せの個数tはアイテム集合Xのサイズに対して指数的に多く存在し得るため、上記の式(1)に示す組合せ最適化問題は凸最適化問題とはなるものの解くのが難しい問題となる。
【0018】
この種の問題は、難しい組合せ最適化問題を連続緩和した際にしばしば出現する問題である。すなわち、以下のような選択可能な組合せの集合から1つの最適な組合せを選ぶ問題は、xの取り得る範囲が離散的であるために組合せの集合scrCが特別な構造を持たない限り解くのが難しい問題である。
【0019】
【数4】
そこで、xの取り得る範囲をconv({1
C|C∈scrC})へと緩和すると、近似的ではあるが解が求まりやすくなることがある。
【0020】
また、この種の問題が現れる別の応用として組合せ混雑ゲームの均衡計算がある。混雑ゲームでは、アイテム集合Xに対して、各プレイヤーはアイテムの組合せC⊆Xを選ぶことになる。ただし、どのようなアイテムの組合せを選ぶことができるかは予め決められており、そのような組合せを集めた集合が戦略集合scrCである。戦略集合の中身の各要素(アイテムの組合せ)は戦略と呼ばれる。各アイテムは選んだ人の割合が多いほどコストが多く掛かるように設定されており、プレイヤーが受けるコストは戦略中のアイテムのコストの和になる。このとき、各プレイヤーは互いに協力はせず、各自勝手になるべくコストが小さい戦略を選ぼうとする。混雑ゲームにおいて重要な状態として、「均衡状態」と呼ばれる状態がある。均衡状態とは、プレイヤー達が不満に思わない状態のことであり、互いに協力しないプレイヤー達が各自でコスト最小の状態に行き着こうとした結果として行き着く状態である。均衡状態を求めることは、戦略集合scrCの下で、ポテンシャル関数と呼ばれる関数fを最小化する式(1)の形の最適化問題となることが知られている。
【0021】
<式(1)に示す組合せ最適化問題を解くことができる従来手法とその課題>
式(1)に示す組合せ最適化問題は、選択可能な組合せの個数tが少ない場合には、非特許文献1に記載されているFrank-Wolfe法を用いて解くことができる。このとき、目的関数fの最適値との誤差が反復数Tの逆数1/Tに比例して減少する。更に、目的関数fが強凸関数と呼ばれる良いクラスに属する場合には、非特許文献2に記載されているFully-corrective Frank-Wolfe法やAway-step Frank-Wolfe法を用いて解くことができる。このとき、目的関数fの最適値との誤差が反復数Tに対して指数的に減少(つまり、線形収束)する。
【0022】
一方で、選択可能な組合せの個数tが指数的に多い場合、Frank-Wolfe法の1反復にも指数的な時間が掛かってしまうため現実的な時間で解くことが難しくなる。このような状況に対応したのが非特許文献4に記載されている手法である。この手法は、選択可能な組合せの集合scrCを参考文献1に記載されているゼロサプレス型二分決定グラフ(ZDD:Zero-suppressed Binary Decision Diagram)でコンパクトに表現し、Frank-Wolfe法内部の計算に用いることにより、選択可能な組合せの個数tが指数的に多い場合であっても実用上高速に最適化することができる。目的関数fが強凸関数である場合、この手法も目的関数fとの誤差が線形収束する。なお、非特許文献4に記載されている手法は組合せ混雑ゲームの均衡状態を求めることを主眼としているが、その手法は一般に式(1)の形の最適化問題に適用可能である。
【0023】
非特許文献4に記載されている手法は、目的関数fの最適値との誤差が反復数Tに対して線形収束するものの、理論上その速度は非常に遅く、アイテム集合X中のアイテムの個数dも解析に含めると実際はT/exp(αd)といった非常に小さい数に対する指数的な収束性しか保証できない。また、目的関数fが強凸であるという条件は実応用では成り立たないこともある。例えば、組合せ混雑ゲームの均衡状態を求める際に、各アイテムのコストがそのアイテムを選んだ人の割合に対して単調増加であれば目的関数であるポテンシャル関数は強凸になるが、単調非減少、すなわち選んだ人の割合に対してコストが増加しない可能性もある場合には強凸にはならない。この場合、反復数Tの逆数1/Tに比例した誤差の減少しか保証できない。
【0024】
<提案手法>
非特許文献4に記載されている手法に存在する課題を解決するために、非特許文献3に記載されている別のタイプのFrank-Wolfe法にZDDを活用する手法を提案する。非特許文献3に記載されているFrank-Wolfe法では、式(1)の形の最適化問題で、目的関数fが強凸よりも緩い条件下でも目的関数fの最適値に対する誤差が反復数Tに対して線形収束する。また、アイテムの個数dも含めた解析でもT/O(d4)に対する指数的な収束性となり、アイテムの個数dに対して指数ではなく多項式程度の減衰しか生じない。一方で、非特許文献3に記載されているFrank-Wolfe法自体は1反復に選択可能な組合せの個数tに比例する時間を要するため、選択可能な組合せが指数的に多い場合には適用できない。そこで、本提案手法では、Frank-Wolfe法内部の計算の一部分を、ZDDを用いた手順にすることにより実用上高速な最適化を実現する。
【0025】
以下、本提案手法により式(1)に示す組合せ最適化問題の解を求める最適化装置10について説明する。
【0026】
なお、非特許文献3や非特許文献4に記載されている手法と提案手法との差異は以下の通りである:非特許文献3に記載されている手法はFrank-Wolfe法内部の計算の1反復に選択可能な組合せの個数tに比例する時間を要するため、選択可能な組合せが指数的に多い場合には適用できない。一方、本提案手法は、Frank-Wolfe法内部の計算の1反復が選択可能な組合せの集合scrCを表現するZDDのサイズに比例する時間となり、非特許文献4と同様に選択可能な組合せの個数tが指数的に多い場合であっても実用上高速に最適化ができる。更に、非特許文献4に記載されている手法とは異なり、目的関数fが強凸よりも緩い条件下での誤差の線形収束性と、T/O(d4)に対する指数的な収束性とを備える。
【0027】
<ZDDの構造>
本実施形態に係る最適化装置10を説明するための準備として、ZDDの構造について説明する。ZDDは、ノードと向きのあるエッジの集まりでできたループのないグラフ(有向非巡回グラフ(DAG:Directed Acyclic Graph))で組合せの集合を表現するデータ構造である。ZDDは、ダウンタック記号及びアップタック記号でそれぞれ表される終端ノードと分岐ノードの2種類のノードを持つ。以下、本明細書のテキスト中ではダウンタック記号を大文字のタウ「Τ」で代用し、アップタック記号を垂直記号「⊥」で代用する。
【0028】
各終端ノードからは出るエッジは無く、各分岐ノードには0-枝と1-枝というちょうど2つの出るエッジが存在する。また、ZDDには入るエッジ(枝)がないノードがただ1つ存在し、これを根ノードと呼び、rで表す。分岐ノードvに対して、その分岐ノードvから出る0-枝が指す先のノードを0-子ノードと呼び、v0で表す。同様に、分岐ノードvに対して、その分岐ノードvから出る1-枝が指す先のノードを1-子ノードと呼び、v1で表す。
【0029】
各分岐ノードvには、ラベルと呼ばれる整数値vlv∈{1,・・・,c}が付随しており、これがアイテムの番号と対応している。なお、終端ノードについては、そのラベルの値をc+1としておく。このとき、各0-枝と1-枝は必ずラベルが小さい方のノードから大きい方のノードに向かうようにする。すなわち、任意の分岐ノードvに対して、vlv<(v0)lv、かつ、vlv<(v1)lvが成立するようにする。
【0030】
ZDDが表現する組合せ集合は、根ノードrから終端ノードΤまでの経路の集合によって表現される。根ノードrから終端ノードΤまでの1つの経路Rは、ラベルiのノードから出る1-枝を辿るとき、かつ、そのときに限り、ai∈C(R)であるようなアイテム集合Xの部分集合C(R)⊆Xに対応する。すべての根ノードrから終端ノードΤまでの経路に対応する部分集合を集めたものが、ZDDが表現する組合せ集合である。
【0031】
ここで、例えば、組合せ集合scrCが或るグラフ構造のマッチングや閉路、木、経路等の部分構造の集合である場合には、参考文献2に記載されているフロンティア法と呼ばれる手法を用いて、組合せ集合scrCを表現するZDDを効率的に構築することができる。また、参考文献1に記載されているApply演算と呼ばれる演算を用いることにより、任意の組合せ集合に対してそれを表現するZDDを構築することができる。そこで、以下の実施形態では、組合せ集合scrCを表現するものとして、組合せ集合scrCを表現するZDDが最適化装置10に与えられるものとする。
【0032】
<最適化装置10のハードウェア構成例>
本実施形態に係る最適化装置10のハードウェア構成例を
図1に示す。
図1に示すように、本実施形態に係る最適化装置10は、入力装置101と、表示装置102と、外部I/F103と、通信I/F104と、RAM(Random Access Memory)105と、ROM(Read Only Memory)106と、補助記憶装置107と、プロセッサ108とを有する。これらの各ハードウェアは、それぞれがバス109を介して通信可能に接続される。
【0033】
入力装置101は、例えば、キーボード、マウス、タッチパネル、物理ボタン等である。表示装置102は、例えば、ディスプレイ、表示パネル等である。なお、最適化装置10は、例えば、入力装置101及び表示装置102のうちの少なくとも一方を有していなくてもよい。
【0034】
外部I/F103は、記録媒体103a等の外部装置とのインタフェースである。記録媒体103aとしては、例えば、CD(Compact Disc)、DVD(Digital Versatile Disk)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等が挙げられる。
【0035】
通信I/F104は、最適化装置10を通信ネットワークに接続させるためのインタフェースである。RAM105は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。ROM106は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。補助記憶装置107は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等の不揮発性の記憶装置である。プロセッサ108は、例えば、CPU(Central Processing Unit)やGPU(Graphic Processing Unit)等の各種演算装置である。
【0036】
なお、
図1に示すハードウェア構成は一例であって、最適化装置10は、複数の補助記憶装置107や複数のプロセッサ108を有していてもよいし、図示したハードウェアの一部を有していなくてもよいし、図示したハードウェア以外の種々のハードウェアを有していてもよい。
【0037】
<最適化装置10の機能構成例>
本実施形態に係る最適化装置10の機能構成例を
図2に示す。
図2に示すように、本実施形態に係る最適化装置10は、入力部201と、最適化部202と、出力部203とを有する。これら各部は、例えば、最適化装置10にインストールされた1以上のプログラムが、プロセッサ108等に実行させる処理により実現される。
【0038】
入力部201は、凸関数である目的関数fと、選択可能な組合せの集合である組合せ集合scrCを表現するZDDと、許容誤差εとが与えられると、これら目的関数f、ZDD及び許容誤差εを入力する。
【0039】
最適化部202は、入力部201によって入力された目的関数f、ZDD及び許容誤差εに基づいて、式(1)に示す組合せ最適化問題を誤差ε以内で解く。すなわち、最適化部202は、最適解x*に対して、|f(x)-f(x*)|≦εとなるようなx∈conv({1C|C∈scrC})を求める。
【0040】
出力部203は、最適化部202によって求められた解xを予め決められた所定の出力先に出力する。所定の出力先としては、例えば、ディスプレイ等の表示装置102、HDDやSSD、フラッシュメモリ等の補助記憶装置107、通信ネットワークを介して接続される他の機器、装置、端末等が挙げられる。
【0041】
なお、出力部203は、必要に応じて、解xに加えて、この解xに対して以下のように表現できる実数λ1,・・・,λl及びC1,・・・,Cl∈scrCを出力してもよい。
【0042】
【数5】
上記の実数λ
1,・・・,λ
l及びC
1,・・・,C
l∈scrCは、特に混雑ゲームの均衡状態を求める場合への応用において、各プレイヤーが選んだ組合せがC
kに、その組合せを選んだプレイヤーの割合がλ
kにそれぞれ対応するため重要なものとなる。
【0043】
<式(1)に示す組合せ最適化問題の求解処理>
以下、式(1)に示す組合せ最適化問題の解を求める処理について、
図3を参照しながら説明する。なお、以下では、凸関数である目的関数fと、選択可能な組合せの集合である組合せ集合scrCを表現するZDDと、許容誤差εとが最適化装置10に与えられたものとする。
【0044】
入力部201は、与えられた目的関数f、ZDD及び許容誤差εを入力する(ステップS101)。
【0045】
次に、最適化部202は、上記のステップS101で入力された目的関数f、ZDD及び許容誤差εに基づいて、式(1)に示す組合せ最適化問題を誤差ε以内で解いて解xを求める(ステップS102)。なお、本ステップの処理の詳細については後述する。
【0046】
そして、出力部203は、上記のステップS102で求められた解xを予め決められた所定の出力先に出力する(ステップS103)。
【0047】
<最適化部202が実行する処理の流れ>
以下、上記のステップS102で最適化部202が実行する処理の流れの詳細について、
図4を参照しながら説明する。
【0048】
まず、最適化部202は、任意に選んだ組合せC∈scrCを用いて、x1←1Cと初期化すると共に、v1←x1と初期化する(1行目~2行目)。その後、最適化部202は、解xTが|f(xT)-f(x*)|≦εを満たすと判定されるまで、4行目~7行目の処理を繰り返す(3行目)。一方で、最適化部202は、解xTが|f(xT)-f(x*)|≦εを満たすと判定された場合(4行目)、解xTを式(1)に示す組合せ最適化問題の解xとして出力する(5行目)。なお、Tは4行目~7行目の処理の反復数を表す変数である。
【0049】
ここで、解x
Tが|f(x
T)-f(x
*)|≦εを満たすか否かを判定する方法として、参考文献3に記載されているduality gap(双対性のギャップ)を利用する方法が考えられる。
図4の4行目では、このduality gapを利用して|f(x
T)-f(x
*)|≦εであるか否かを判定している。
【0050】
xTにおけるduality gapとは、以下の式で定義される値である。
【0051】
【数6】
この値は|f(x
T)-f(x
*)|以下となるため、もしduality gapがε以下であれば所望の解が得られる。なお、上記の数6に示すduality gapの第2項目の値は、∇f(x
T)を引数としてLinearMin関数を呼ぶことにより計算することができる。なお、LinearMin関数の処理の詳細については後述する。
【0052】
6行目では、最適化部202は、xTと∇f(xT)とβρTとを引数としてNearPoint関数を呼ぶことによりscrCの中からZDDを用いて最適な組合せC'を選択し、vT+1にその指示ベクトル1C'を代入する。なお、NearPoint関数の処理の詳細については後述する。また、定数βとρTの定め方についても後述する。
【0053】
7行目では、最適化部202は、ベクトルv1,・・・,vT+1の凸包の中で、以下の関数を最小化するxを求めて、xT+1に代入する。
【0054】
【数7】
なお、上記の数7に示す関数を最小化するxを求める部分は、少ない数の組合せの凸包の上での強凸関数の最適化問題となるため、例えば、非特許文献2に記載されているFully-corrective Frank-Wolfe法やAway-step Frank-Wolfe法を用いて簡単に最適解を求めることができる。
【0055】
<定数βとρTの定め方>
定数βとρTの定め方について説明する。まず、β=1と定める。次に、ρTについては様々な定め方が存在するが、以下では、一例として、2つの定め方について説明する。
【0056】
1つ目は、最適化する目的関数fの性質がよくわかっている場合の定め方である。目的関数fが、非特許文献3のDefinition 1にあるquadratic growth propertyを定数α>0で満たすとする。また、式(1)に示す組合せ最適化問題の最適値f*の下界L、すなわちf*≧Lを満たすような値がわかっているものとする。すると、C=f(x1)-L、M=max{(1/α)(4+8d4),1/2}と設定し、以下によりρTを定める。
【0057】
【数8】
これにより、線形収束を達成できるρ
Tを定めることができる。
【0058】
2つ目は、最適化する目的関数fの性質がよくわかっていない場合の定め方である。この場合、ρ
Tの値を1つに定めるのではなく、いくつかのρ
Tの値を試し、最も目的関数値が小さくなったものを採用する、という手順を考える。より具体的には、kを以下として、ρ
T=1,1/2,1/4,・・・,1/2
kに対して、
図4の4行目~5行目の処理を繰り返し、f(x
T+1)の値が最も小さくなったときのv
T+1及びx
T+1を採用する、という手続きを考える。
【0059】
【数9】
上記の手続きでも線形収束を達成できるρ
Tを得ることができる。
【0060】
ただし、上記の1つ目の定め方と2つ目の定め方はρTの具体的な定め方の例を示したものであり、これらの定め方に限定されるものではない。
【0061】
<LinearMin関数の処理の流れ>
以下、wが引数として与えられたときのLinearMin関数の処理の流れについて、
図5を参照しながら説明する。LinearMin(w)では、scrCを表現するZDDを用いて、C∈scrCのときの1
Cの転置とwとの積(内積)の最小値を計算する処理が行われる。
【0062】
まず、最適化部202は、DΤ←0、D⊥←∞と初期化する(1行目)。なお、∞は実装上で取り得る最大値とすればよい。
【0063】
次に、最適化部202は、各分岐ノードvをボトムアップ順、すなわちラベルが大きい順に走査し(2行目)、以下によりDvの値を計算する(3行目)。
【0064】
【数10】
ここで、v
0は分岐ノードvの0-子ノード、v
1は分岐ノードvの1-子ノード、v
lvは分岐ノードvのラベルである。また、以下はwのv
lv番目の要素を表す。
【0065】
【数11】
そして、最適化部202は、根ノードrに対するD
rの値を出力する(4行目)。これにより、上記の数6に示すduality gapの第2項目の値が得られる。
【0066】
<NearPoint関数の処理の流れ>
以下、xとwとρが引数として与えられたときのNearPoint関数の処理の流れについて、
図6を参照しながら説明する。NearPoint(x,w,ρ)では、以下の関数を最小化するC∈scrCを計算する処理が行われる。
【0067】
【数12】
なお、NearPoint(x,w,ρ)では、上記の数12に示す関数におけるρ||1
C-x||
2という距離の二乗の項に関する計算にZDDを利用する。組合せ集合scrCを表現するZDDを用いることにより、上記の数12に示す関数を最小化する組合せCは1行目~12行目により計算できる。
【0068】
まず、最適化部202は、DΤ←0、D⊥←∞と初期化する(1行目)。なお、∞は実装上で取り得る最大値とすればよい。
【0069】
次に、最適化部202は、各分岐ノードvをボトムアップ順、すなわちラベルが大きい順に走査し(2行目)、以下によりDvの値を計算する(3行目)。
【0070】
【数13】
ここで、v
0は分岐ノードvの0-子ノード、v
1は分岐ノードvの1-子ノード、v
lvは分岐ノードvのラベルである。また、以下はwのv
lv番目の要素を表す。
【0071】
【数14】
同様に、以下はxのv
lv番目の要素を表す。
【0072】
【数15】
以下、本明細書のテキスト中では、或る記号の下付き文字の更に下付き文字に関しては最後の下付き文字の直前にアンダーバー「_」を付与して表すものとする。例えば、上記の数14に示す「wのv
lv番目の要素」は、本明細書のテキスト中では、w
v_lvと表す。同様に、例えば、上記の数15に示す「xのv
lv番目の要素」は、本明細書のテキスト中では、x
v_lvと表す。
【0073】
次に、最適化部202は、vにZDDの根ノードrを代入すると共に、Cに空集合を代入する(4行目~5行目)。その後、最適化部202は、v=Τとなるまで、vからその子ノードに辿ることを繰り返す(6行目)。このとき、最適化部202は、Dv=Dv_1+wv_lv+ρ(1-2xv_lv)であるならば(7行目)、Cにav_lvを追加し(8行目)、vをv1に更新する(9行目)。一方で、最適化部202は、Dv=Dv_1+wv_lv+ρ(1-2xv_lv)でないならば(10行目)、vをv0に更新する(11行目)。これは、3行目のDvの計算でminの1項目の方が小さかった場合には0-子ノードv0へ、2項目の方が小さかった場合には1-子ノードv1へ辿るということを意味する。最後に、最適化部202は、1CをNearPoint(x,w,ρ)の結果として呼び出し元に出力する(12行目)。
【0074】
<まとめ>
以上のように、本実施形態に係る最適化装置10は、選択可能な組合せの個数が指数的に多い場合であっても、その組合せ集合をZDDで表現することにより、式(1)に示す組合せ最適化問題を高速に解くことができる。また、本実施形態に係る最適化装置10では、目的関数fが強凸よりも緩い条件下でその最適値に対する誤差を反復数Tに対して線形収束させることができる。
【0075】
目的関数fが強凸よりも緩い条件下でも誤差が反復数Tに対して線形収束する場合としては、より精緻な条件は非特許文献3のDefinition 1に記載があるが、例えば、目的関数fが別の強凸な関数gと、行列Aと、ベクトルbとを用いて、以下により表現される場合が該当する。
【0076】
【数16】
これは、従来高速な収束が保証できていた関数クラス(強凸関数)よりも真に広いクラスである。また、アイテムの個数dも含めた解析でもT/O(d
4)に対する指数的な収束性となり、dに対して指数ではなく多項式程度の減衰しか生じない。
【0077】
組合せ混雑ゲームの均衡状態を計算する場合には、次のようなケースでも線形収束を保証できる。組合せ混雑ゲームは、各アイテムaiの利用率(そのアイテムを含む組合せを選択しているプレイヤーの割合)xiに対して単調非減少であるコスト関数ci(xi)が与えられる。その下で、ポテンシャル関数を以下で定めると、scrCを選択可能な組合せの集合として、式(1)に示す組合せ最適化問題を解くことが均衡状態を求めることと一致する。
【0078】
【数17】
ここで、従来手法の線形収束の条件であった強凸性は各コスト関数c
iが狭義単調増加、すなわちx
i<x
i'に対して必ずc
i(x
i)<c
i(x
i')となる場合でしか成立しなかった。一方で、本実施形態に係る最適化装置10によれば、c
iが狭義単調増加でなくても単調非減少であれば線形収束が保証できる。すなわち、x
i<x
i'に対して必ずc
i(x
i)≦c
i(x
i')であればよく、等号が許容される。例えば、道路網の混雑を考える場合には一定の混雑率までは車の流れるスピードは変わらないため、このような状況はよく起こり得る状態であり、この場合でも線形収束を保証できる。なお、組合せ混雑ゲームのポテンシャル関数の勾配は以下で表される。
【0079】
【数18】
このため、勾配を計算するためには各コスト関数c
iの値が計算できればよい。
【0080】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
【0081】
[参考文献1]
参考文献1:Shin-ichi Minato. Zero-suppressed BDDs for set manipulation in combinatorial problems. In Proceedings of the 30th ACM/IEEE Design Automation Conference, pp. 272-277, 1993.
参考文献2:Jun Kawahara, Takeru Inoue, Hiroaki Iwashita, and Shin-ichi Minato. Frontier-based search for enumerating all constrained subgraphs with compressed representation. IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences, Vol. E100.A, pp. 1773-1784, 2007.
参考文献3:Martin Jaggi. Revisiting Frank-Wolfe: projection-free sparse convex optimization. In Proceedings of the 30th International Conference on Machine Learning, PMLR Vol. 28, pp. 427-435, 2013.
【符号の説明】
【0082】
10 最適化装置
101 入力装置
102 表示装置
103 外部I/F
103a 記録媒体
104 通信I/F
105 RAM
106 ROM
107 補助記憶装置
108 プロセッサ
109 バス
201 入力部
202 最適化部
203 出力部