劣モジュラ最適化と機械学習
~2.0−2.3 劣モジュラ関数の基本性質・例・最適化~
@gen_goose_gen
自己紹介と注意
● @gen_goose_gen
●
某高専 電気系学科 卒業
● 関西の某国立大の情報系学科に編入(作成時B3)
●
情報・機械学習ともに初学者
– 間違えている可能性があるので疑問がある場合は上記の
ツイッターアカウントまでご一報ください
スライドで用いる表記
●
スカラー:ローマン体
●
ベクトル:小文字のボールド体
●
行列:大文字のボールド体
●
集合:カリグラフィー文字
(特に断らない場合列ベクトルとする)
コンテンツ
●
凸関数・凹関数・凸集合とは?
●
劣モジュラ関数の定義と具体例
●
モジュラ関数の種類・性質・基本操作
●
劣モジュラ関数最適化問題(最大化・最小化)
コンテンツ
●
凸関数・凹関数・凸集合とは?
●
劣モジュラ関数の定義と具体例
●
モジュラ関数の種類・性質・基本操作
●
劣モジュラ関数最適化問題(最大化・最小化)
凸関数と凹関数
・凸関数の定義:
ただし , ,
・凹関数の定義:-hが凸関数の時、hは凹関数
ある2点を決めて、その2点の
内分点の関数値が
決めた2点の関数値よりも低い
・凸関数最小化・凹関数最大化は最適化問題として扱いやすい
凸関数と凸集合
・凸関数の定義:
・凹集合の定義:点集合     が凸集合である
ただし ,
凸集合 凸集合ではない
コンテンツ
●
凸関数・凹関数・凸集合とは?
●
劣モジュラ関数の定義と具体例
●
モジュラ関数の種類・性質・基本操作
●
劣モジュラ関数最適化問題(最大化・最小化)
劣モジュラ関数の概要
・n次元0-1ベクトル集合上の凸関数としても捉えられる概念
→最小化問題は多項式時間で解ける
・同時に凹性のような性質も同時に持っている
→最大化問題はNP困難であることが多いが
 かなり良い近似を多項式時間で計算できる  
※劣モジュラ最適化アルゴリズムはこれらを必ず使っていることに注意わけではない
◯最適化する場合の性質の良さ
◯応用範囲の広さ離散問題に対して
重要な概念
凸関数とは別物なので
そのイメージばかりを持たないように
劣モジュラ関数の定義①
台集合
集合関数
台集合の任意の部分集合
集合関数の定義域
これでは劣モジュラ関数が何を表しているかわかりづらい
他の表現はないのか?
劣モジュラ関数の定義②
台集合
集合関数
台集合の任意の部分集合
集合関数の定義域
ただし
任意の要素
集合として小さいほど新しい要素を加えた時に
生じる変化量が大きい
劣モジュラ関数の定義の関係
等価
定義①:
定義②:
等価なことの証明はあとから行う
まずはこれらが正しいとした時のモジュラ関数の
具体例を通してイメージを固める
劣モジュラ関数の具体例①
〜カバー関数〜
台集合
(センサの集合)
台集合の任意の部分集合
(ONにするセンサの集合)
定義が確かに成り立つ
劣モジュラ関数の具体例①
〜カバー関数〜
台集合
(センサの集合)
台集合の任意の部分集合
(ONにするセンサの集合)
現在ONであるが多いほど新しいセンサをONにした時に
カバーできる点の増加が小さくなるのは明らか
(厳密にはONのセンサが少ないほうの増加が多い方よりも大きくならない)
定義成立→劣モジュラ関数
劣モジュラ関数の具体例②
〜無向グラフのカット関数〜
無向グラフを2つに分割するときに切断する枝容量の総和
台集合
(頂点集合)
台集合の任意の部分集合
(切断するグラフの頂点集合)
枝集合
S と SVをつなぐ枝集合
枝容量
(フローのようなもの)
無向グラフ
すべての
定義が確かに成り立つ
劣モジュラ関数の具体例③
〜有向グラフのカット関数〜
有向グラフを2つに分割するときに切断する枝容量の総和
台集合
(頂点集合)
台集合の任意の部分集合
(切断するグラフの頂点集合)
枝集合
S から SVをつなぐ枝集合
枝容量
(フローのようなもの)定義が確かに成り立つ
有向グラフ
すべての
劣モジュラ関数の具体例②③
〜無向グラフと有向グラフのカット関数の関係〜
無向グラフの枝e={u,v}
有向グラフの枝 e'={u,v}, e”={v,u}
この時有向グラフと無向グラフのカット関数は同じになる
無向グラフは有向グラフの特殊例
すべての枝を変換
劣モジュラ関数の具体例②③
〜カット関数が劣モジュラ関数であることの証明〜
劣モジュラ関数の具体例②③
〜カット関数が劣モジュラ関数であることの証明〜
の枝の
枝容量の総和
定義成立→劣モジュラ関数
劣モジュラ関数の具体例④
〜凹関数が生成する集合関数〜
凹関数:h(x) ただし        ,
Ex)
⊿x
⊿x
⊿x
→xが大きくなるほど小さくなる→xが大きくなるほど小さくなる→xが大きくなるほど小さくなる
劣モジュラ関数の具体例④
〜凹関数が生成する集合関数〜
:Sに含まれる要素数
【証明】
:変化量
∵h(x)は凸関数
定義成立→劣モジュラ関数
劣モジュラ関数の具体例④
〜凹関数が生成する集合関数〜
:Sに含まれる要素数
拡張
重み付き版:
劣モジュラ関数の定義の関係の証明
等価
定義①:
定義②:
定義①→定理②、 定理②→定理①を証明することによっ
て等価であることを証明する
劣モジュラ関数の定義①(再掲)
台集合
集合関数
台集合の任意の部分集合
集合関数の定義域
これでは劣モジュラ関数が何を表しているかわかりづらい
他の表現はないのか?
劣モジュラ関数の定義②(再掲)
台集合
集合関数
台集合の任意の部分集合
集合関数の定義域
ただし
任意の要素
集合として小さいほど新しい要素を加えた時に
生じる変化量が大きい
劣モジュラ関数の定義の関係の証明
定義①:
定義②:
定義①:
定義②:
劣モジュラ関数の定義の関係の証明
定義①:
定義②:
の時→自明・
・ の時
以下のようにおく
定義②に代入
劣モジュラ関数の定義の関係の証明
定義①:
定義②:
の時→自明・
・ の時
k=1からk=mまで
和を取る
定義①:
コンテンツ
●
凸関数・凹関数・凸集合とは?
●
劣モジュラ関数の定義と具体例
●
モジュラ関数の種類・性質・基本操作
●
劣モジュラ関数最適化問題(最大化・最小化)
劣モジュラ関数のタイプ分け
列モジュラ関数が他にどんな性質を持っているかは重要
 ∵性質によって最適化の計算効率・精度が異なる
→
◯正規化:
※    の場合も とすれば正規化可能
◯非負:すべての
◯単調:すべての
(非減少)
◯対称:任意の
について
について
について
劣モジュラ関数のタイプ分け
→
◯正規化:
※    の場合も とすれば正規化可能
◯非負:すべての
◯単調:すべての
(非現象)
◯対称:任意の
について
について
について
劣モジュラ関数のタイプ分け
→
◯正規化:
※    の場合も とすれば正規化可能
◯非負:すべての
◯単調:すべての
(非現象)
◯対称:任意の
について
について
について
優モジュラ関数・モジュラ関数
劣モジュラ関数f
優モジュラ関数g
-gが劣モジュラ関数
モジュラ関数g
gが劣モジュラ関数
かつ優モジュラ関数
モジュラ関数の性質
正規化されたモジュラ関数g
( )
正規化されたモジュラ関数が次元ベクトル
と同一視できる
値はベクトルの成分の部分和と対応付けられる
劣モジュラ関数の基本操作
〜和とスカラー倍〜
モジュラ関数の加減算:
以下の操作をして作られた関数も劣モジュラ関数である
スカラー倍:
劣モジュラ関数の加算:
優モジュラ関数の減算:
正規化された優モジュラ関数
正規化されたモジュラ関数
正規化された劣モジュラ関数
ただし
正のスカラー
定義から簡単に証明可能
劣モジュラ関数の基本操作
〜制限と縮約〜
劣モジュラ関数の台集合を小さくする操作
操作を繰り返して得られた劣モジュラ関数:fのマイナー
◯制限:台集合をSに制限する Sの中の部分集合として
取れるものを台集合としている
◯縮約:台集合をSを含む部分集合に制限して正規化する
Sのの補集合を部分集合として
取れるものを台集合としている
コンテンツ
●
凸関数・凹関数・凸集合とは?
●
劣モジュラ関数の定義と具体例
●
モジュラ関数の種類・性質・基本操作
●
劣モジュラ関数最適化問題(最大化・最小化)
劣モジュラ関数の最適化
〜例:最小カット問題と最大カット問題〜
◯グラフを2つに分けるときにカットする枝容量を
 最小・最大化する問題
・無向グラフの最小カット問題
・無向グラフの最大カット問題
最小カット 最大カット与えられたグラフ
カット関数は劣モジュラ関数
 →劣モジュラ最適化問題
劣モジュラ関数の最適化
〜基本形〜
:目的関数
:実行可能領域
(制約を満たすVの部分集合からなる集合族)
:実行可能解
:最適解
:最適値
劣モジュラ関数の最適化
〜最適化問題の性質〜
劣モジュラ関数の性質によって問題の性質が変わる
一般の関数?非負?単調?対称?構造は?
様々な性質を持っている→良いアルゴリズムが設計可能
様々な性質を使ったアルゴリズム→適用範囲が狭い
トレードオフ関係
問題の劣モジュラ関数が
どのように与えられているか考えることが大事
劣モジュラ関数の最適化
〜アルゴリズムの計算量〜
の値を呼び出すことは1回の基本操作であると仮定
(関数値オラクルの呼び出しによって関数値が得られる)
計算量解析:基本演算の回数と関数値の呼び出し回数
      を問題とする
多項式時間アルゴリズム:
基本演算・関数値呼び出し回数がともにnに関する
多項式のオーダー
Ex)
関数値オラクルの呼び出し回数
基本演算の回数
アルゴリズム の計算量:
基本演算1回よりも関数値オラクルの
呼び出し1回のほうが手間がかかる
劣モジュラ関数の最適化
〜(制約なし)劣モジュラ関数最小化〜
・多項式時間アルゴリズムが存在する
現在の最小計算量: [Orlin,2009]
これでも大きい
最大でかかる計算量保証
・多項式性は保証されないが実用的なアルゴリズムがある
(最小ノルム点アルゴリズム)
・関数fによっては高速に最適解が見つかる
(Ex:最小s-tカット問題)
劣モジュラ関数の最適化
〜対称劣モジュラ関数最小化〜
:自明解になる→取り除いて最適解を見つける
∵任意の に対して
・効率的なアルゴリズムが存在: [Queyranne,1998]
・Ex:無向グラフの最小カット問題
劣モジュラ関数の最適化
〜(単調な)劣モジュラ関数最大化〜
すべての について
・NP困難問題
(多項式時間では解けないと考えられているが種名されていない問題)
・近似的な解は多項式時間で求められる
貪欲法の一種で最適値の0.63倍以上の目的関数値を達成可能
[Nemhauser,Wolsey,Fisher,1978]
劣モジュラ関数の最適化
〜非負な劣モジュラ関数最大化〜
すべての について
・NP困難問題
(多項式時間では解けないと考えられているが種名されていない問題)
・近似的な解は多項式時間で求められる
貪欲法の一種で最適値の0.5倍以上の目的関数値を達成可能
[Buchbinder,Feldman,Naor,Schwartz,2012]
・Ex:無向グラフの最大カット問題
貪欲法の一種で最適値の0.878倍以上の目的関数値を達成可能
まとめ
・劣モジュラ関数は台集合に定義される関数
・凸性と凹性のような性質を同時に持つ
・集合として小さいほど新しい要素を加えた時に生じる変化
量が大きい
・劣モジュラ関数が他に持つ性質で最適化アルゴリズムの
性能が決まり、一般性とアルゴリズム性能はトレードオフ
・最小化問題は多項式時間で解けるがより高速なアルゴリ
ズムが多数存在
・最大化問題はNP困難問題であるが多項式時間で近似解
を求めるアルゴリズムが考案されている
ありがとうございました!

劣モジュラ最適化と機械学習 2.0-2.3 劣モジュラ関数の基本性質・例・最適化