2014年度振り返り

働き始めて1年位経ったっぽいので去年度の振り返りでもします.

仕事

PFIに入社していたのですが入社して半年くらいで PFN (Preferred Networks) という新たに立ち上げた関連会社に移籍しました.環境自体はそこまで大きく変わってません.
仕事で表に出せる情報が現状は少ないです.そのうち何か表に出せる成果になるとよいのですが.

ニューラルネットでなんかうまくいくことがわかっているけどちゃんとした理由はよく分かってないようなテクが世の中には結構色々あるのですが,なぜうまくいくのか理解する助けになりそうなことに最近は興味があります.本当は理論的な結果を言えれば美しくて一番良いのですが,この分野はいかんせん理論的な解析が何十年も前から大して進んでいなくてあんまり期待が持てないので,当面は実験して色々分析するのが手っ取り早いし,ついでに変なお絵かきみたいなこともできるので楽しいんじゃないかと思っています.あるいはうまくいくと思われているテクを撃墜するとかも.

大学の頃やっていた研究分野と今仕事でやっている分野は結構違うところが多く,学び直すことも多かったですが最近段々ノリが分かってきたという気がしないでもないです.

学会

修士にやってた頃の研究のおかげで3回国際学会(SIGMOD,KDD,ICALP)に行くことができました.SIGMOD,KDDはアカデミックのみならず企業からの関心が非常に高く,参加者数もとても多く賑わっていました.一方でICALPの参加者は大体アカデミックのいかにも理論っぽい人たちの集まりで,落ち着いた雰囲気を感じました.理論のコミュニティと応用のコミュニティの空気の違いを見れたのは大きかったのかなぁと思います.
あとネガティブなネタではありますが,SIGMOD 併設のデータベース系理論会議 PODS のどんよりとした雰囲気のビジネスミーティングは,理論出身の自分にとってはとても悲しいものに見えました.
また論文書いてどっかいって発表とかできると面白いですが,なんか良いネタを探さないと….

弐寺DP

京都にいる頃は弐寺の置いてあるゲーセンにはほとんど行かなかったのですが,東京に来てから比較的職場の近くにゲーセンがあるのでたまに行っています.12.3にイージーランプが付きました.十段の達成率も75%までいきました.調子が良いのでこれは年内皆伝ペースか? と思ってましたが最近になって段々自信がなくなってきました.とりあえず12.3を大体埋めないといけないけど先が長い.

競プロ

もうすっかり選手ではなく運営をする立場になりました.競プロは良いコミュニティが形成されていると思うのでそれが長く続くことを願っています.そういう点では最近の topcoder の運営には不満な点がかなり多く,改善されることを期待しています.
なんかせっかくなので巷ではあんまり無さそうなタイプのコンテストを開けると面白そうだと前から薄々思っているのですがそれはできたとしても結構先になるのだろうなぁ.

旅行

色々なところに行きました.今年も色々なところに行きたいです.

語学

英語が宇宙一できないので iKnow やってるんですが全然リスニング力が向上しなくて辛いです.

情報オリンピック春合宿で講義しました

1週間前の出来事ですが「機械学習とその理論」というタイトルで講義しました.大体 PAC 学習の話してます.スライドを公開しているので以下にそのリンクを載せます.

今回の講義では,才能がありそうな若い人らを前にどんなことを話せばいいか,テーマ選びに少し悩みました.色々考えた所「プログラミングコンテストの界隈ではあんまり触れられないけどコンピュータサイエンスの研究や実際の応用で重要なことっていっぱいあるしそういうのを伝えるのが大事なのかなぁ」と思い,その中の1つである機械学習のことについて話すことにしました.
機械学習を語るには色んな切り口があると思うのですが,情報オリンピックに参加しているような人ならきっと理論っぽい話が好きなんじゃないかなぁと思い,基本的な理論のモデルである「PAC学習」について話しました.機械学習というと大体統計的な観点から入門することが多いのですが,それだと少し数学の道具の準備とかが大変そうだったため今回は敢えて全く話してません.まぁ本当は準備してる時間がなかったからなんですが. アルゴリズムの話も全くしてないのですが本当はパーセプトロンくらいは話したかったような気がしないでもないです.
ちなみにこの講義はこの合宿のメインイベントではないので,あんまり堅いことばっかりしゃべると聞いてて面白くないだろうなぁと思ったためスライド構成は割とエンターテインメントに走っています.

…どうでもいいんですがマイクロソフトのパワーポイントがクリップアートの提供を終了したせいで画像探しに苦労しました.いちいち自分でライセンス確認しないといけないとか勘弁して欲しい.

ラグランジュ関数の背後にある理論 (Boyd本5章概要)

ラグランジュ関数は以下のような形をした制約付き最適化問題を解くために導入される有名な手法です.

  • $\min_{x \in D} f_0(x),$
  • $\mbox{subject to}$
    • $f_i(x) \le 0$ $(i=1,2,...,m)$
    • $h_i(x) = 0$ $(i=1,2,...,p)$
  • ここで,$D \subseteq \mathbb{R}^n$ は目的関数の定義域で, $f_0,f_1,\cdots,f_m, h_1, \cdots, h_p: D \rightarrow \mathbb{R}$ は任意の関数.

この記事では "Convex Optimization" (by Boyd and Vandenberghe) の5章 "Duality" の項を元に,ラグランジュ関数とその背後にある理論について記します.主に記したことは以下のとおりです.

  • ラグランジュ関数の定義とその解釈の仕方について
  • 強双対性が成り立つ関数のクラスについて
  • その正当性の証明

キーワード:ラグランジュ関数,ラグランジュの未定乗数法,双対関数,KKT条件

この記事を書こうと思った理由

ラグランジュ関数は計算機科学の応用分野で重要になる手法であり,世の中には数多くのラグランジュ関数に関する説明があります.しかし,僕が目にした多くの説明は,直感的な説明に留めているものや,目的関数や制約関数について暗黙的に何らかの制約があるもの(例えばパラメータ表示可能である,といったような)についてのみ書かれている(それも恐らく厳密ではない)に過ぎないなど,不満に思っていた点がありました.このようにちゃんとした証明が添えられていない理由は詳細に立ち入ると難解になってしまうからでしょう.基礎分野ならともかく応用分野では飽くまでブラックボックスとして使えればよくて詳細に立ち入るのにあまり時間を割くのは本質ではないので,そうなってしまうのはしょうがないという面があるのだと思います.

しかし,ちゃんとした理由があまりわからないまま使うというのは怖いものです.実際には適応できないできない関数について手法を使ってしまって,とんでもない結果を導出してしまったりしうるからです.で,何か良い資料はないものかと先日会社の人に聞いたところ,上記の本 (Boyd本) に詳しく書かれていると教えてもらったので,それについて自分なりのまとめを記したいと思います.

Boyd本は pdf が無料で公開されているので誰でも読めますのでこの記事でよくわからなかったり詳しく知りたくなった方はBoyd本を見て下さい.ラグランジュ関数について書かれているのは5章からですが,大学1~2年生相当の数学の素養があれば途中からでも十分読めると思います.たまに前の章を少し読み返す必要があるかもしれませんが.

ラグランジュ関数

冒頭でも挙げましたが,以降では以下の最小化問題について考えていくことにします.特に明記しない限り,定義域,目的関数,各制約関数には制限を設けないことにします.この問題のことを主問題と呼ぶことにします.

  • (再掲) $\min_{x \in D} f_0(x),$
  • $\mbox{subject to}$
    • $f_i(x) \le 0$ $(i=1,2,...,m)$
    • $h_i(x) = 0$ $(i=1,2,...,p)$

主問題に対してラグランジュ関数 $L:\mathbb{R}^n \times \mathbb{R}^m \times \mathbb{R}^p \rightarrow \mathbb{R}$ は以下で定義されます.

\[
L(x, \lambda, \nu) = f_0(x) + \sum_{i=1}^m \lambda_i f_i(x) + \sum_{i=1}^p \nu_i h_i(x)
\]

$\lambda, \nu$ はそれぞれ $m $,$p$ 次元のベクトルです.$\lambda$ はラグランジュ乗数,また $(\lambda$,$\nu$) は双対変数と呼ばれます.

…で,突然なんなんだこの関数は,と思う人が多いんじゃないかと思うのですが,Boyd本ではこれについて良さそうな解釈が乗っていたのでそれについて記します.

"線形関数による置き換え" という見方

主問題は制約付き問題でしたが,以下のように書けば制約無しの問題に(強引に)書き換えることが出来ます.
\[
\min_{x \in D} f_0(x) + \sum_{i=1}^m I_{-}(f_i(x)) + \sum_{i=1}^p I_{0}(h_i(x))
\]
ここで,

  • $I_{-} : \mathbb{R} \rightarrow \mathbb{R}$ は正のとき $\infty$,$0$ 以下のとき $0$ となる関数
  • $I_{0} : \mathbb{R} \rightarrow \mathbb{R}$ は非0のとき $\infty$,$0$ のとき $0$ となる関数

です.要するに制約を満たさない場合に目的関数の値が $\infty$ になるように調整しているというだけです.
$I_{-}$,$I_{0}$ は $0$ 近傍でとても急激な変化をする関数です.ここで,新たにパラメータ $\lambda$,$\nu$ を導入し,急激に変化する関数 $I_{-}$,$I_{0}$ を線形関数で置き換えたものがラグランジュ関数という風に見なせます.(i.e., $I_{-}(f_i(x))$ → $\lambda_i f_i(x)$, $I_{0}(h_i(x))$ → $\nu_i h_i(x)$.)
f:id:ir5:20141214022940p:plain
もちろんこの置換えはかなりいい加減で問題自体も大きく変わってしまっているのですが,適切なパラメータを選べばこの雑な置き換えでも主問題と同じような最適値を達成できるというのが後で述べるラグランジュ関数を考える利点です.

ラグランジュ双対関数

ラグランジュ双対関数 $g : \mathbb{R}^m \times \mathbb{R}^p \rightarrow \mathbb{R}$ は以下で定義されます.

 g(\lambda, \nu) = \inf_{x \in D} L(x, \lambda, \nu)
先ほどの見方を踏まえているとこれは理解がしやすいです.パラメータ(というか双対変数) $\lambda$,$\nu$ で目的関数を"置き換え"た場合の問題の最適値です.

ラグランジュ双対関数は,(主問題の目的関数と制約関数がなんであれ)上に凸な関数になっています.これは, \inf_{z} (a_z + b_z) \le \inf_z a_z + \inf_z b_z 型の不等式をラグランジュ関数に適応するとわかります:$\alpha \in [0,1]$ に対し,
 \alpha g(\lambda, \nu) + (1-\alpha) g(\lambda', \nu')
 =   \inf_x \alpha L(x, \lambda, \nu) +  \inf_x (1 - \alpha) L(x, \lambda', \nu')

 \le \inf_x \left( \alpha L(x, \lambda, \nu) + (1 - \alpha) L(x, \lambda', \nu') \right)
 =   g(\alpha \lambda + (1 - \alpha) \lambda',
       \alpha \nu + (1 - \alpha) \nu').
ここで最後の式変形はラグランジュ関数が $\lambda$,$\mu$ について線形な関数であることを用いました.

弱双対性

ここで,$\lambda \ge 0$ だとする*1と,先ほどの図のように,$I_{-}(f_i(x)) \ge \lambda_i f_i(x)$, $I_{0}(h_i(x)) \ge \nu_i h_i(x)$ なので,任意の $x \in D$,$\lambda \ge 0$,$\nu \in \mathbb{R}^p$ に対して $g(\lambda, \nu) \le f_0(x)$ が成り立ちます.これを弱双対性と呼びます.

双対問題

$g(\lambda, \nu)$ は主問題の解の値を下からバウンドできます.ここで,このバウンドがどこまで成り立つのか,つまり $g(\lambda, \nu)$ はどこまで大きく出来るのかというのを考えるのは自然なことです.以下の問題を(主問題に対する)双対問題と呼びます.

  • $\max_{(\lambda,\nu) \in \mathbb{R}^m \times \mathbb{R}^p} g(\lambda, \nu)$
  • $\mbox{subject to}$ $\lambda \ge 0$

先ほど述べたように $g$ は上に凸であり,$\lambda$ の取りうる範囲も凸なので,双対問題は主問題に関係なく凸最適化問題になります.
$p^\star$ を主問題の最適解,$d^\star$ を双対問題の最適解とすると,弱双対性は $d^\star \le p^\star$ と表せます.

具体例

ここで1つ簡単な具体例を挙げます.最適化問題として以下の1変数の問題を考えましょう.

  • $\min_{x_1 \in \mathbb{R}} (x_1-3)^2$
  • $\mbox{subject to}$ $x_1^2 \le 1$

まぁこの程度の問題ならラグランジュ関数とか考える必要全く無いのですが細かいことは置いておきましょう.
この主問題に対するラグランジュ関数は $L(x_1, \lambda_1) = (x_1-3)^2 + \lambda_1 (x_1^2 - 1)$ です.また,ラグランジュ双対関数は  g(\lambda_1) = \inf_{x_1 \in \mathbb{R}} L(x_1, \lambda_1) = 9-\lambda_1-9/(1+\lambda_1) となります.
主問題の最適解は $x_1=1$ のときに $p^\star=4$,双対問題の最適解は $\lambda_1=2$ のときに $d^\star=4$ となります*2

ラグランジュ関数は図示すると以下のようになります.(主問題,双対問題のそれぞれで最適解を取る点 $(x_1, \lambda_1)=(1,2)$ がなんとなく鞍点になってそうな雰囲気がします.)
f:id:ir5:20141214044146p:plain

強双対性

先ほどの具体例のように $d^\star=p^\star$ が成り立つとき,その問題について強双対性が成り立つと呼びます.強双対性が成り立てば,主問題の代わりに双対問題を考えれば良いことになり,双対問題の方が考えやすい場合には役立ちます.たとえば主問題では変数の個数は多いけど制約の個数が少ない場合,双対問題では変数の個数が少なくなるため,双対問題の方が考えやすいことが多いようです.
残念ながら強双対性は一般には成り立ちませんが,限られた条件下では成り立ちます.それを以下に記します.

凸な場合

以降は主問題が凸である場合を考えます.つまり,$f_0, f_1, \cdots, f_m $ が下に凸,定義域 $D$ が凸で,主問題が以下のような形式になっている場合です.

  • $\min_{x \in D} f_0(x)$
  • $\mbox{subject to}$
    • $f_i(x) \le 0$
    • $Ax=b$ ($A$ は $p \times n$ の行列)

以下では簡単のため等号制約の行列 $A$ は行フルランク($\mathbf{rank} A = p$) とします.

Slaterの条件 (凸な場合)

強双対性が成り立つための条件の1つとして,次のものをSlaterの条件と呼びます:ある $x \in \mathbf{int} D$ *3 があって,以下を満たす.
\[
f_i(x) < 0 (i=1,\cdots,m), Ax=b.
\]
つまりSlaterの条件とは,狭義に実行可能な点があるということです.

次の節では以下のことを示します.

補題主問題が凸であり,Slaterの条件が成り立つとき,ラグランジュ関数について強双対性が成り立つ.

補題の証明

$\mathcal{G}$ を,$x$ を動かしたときに目的関数と制約関数が取りうる範囲とします:
\[
\mathcal{G} = \{f_1(x), \cdots, f_m(x), h_1(x), \cdots, h_p(x), f_0(x) \mid x \in D\}.
\]
このとき,ラグランジュ双対関数は
 g(\lambda, \nu) = \inf_{x \in D} L(x,\lambda,\nu) = \inf\{ (\lambda,\nu,1)^\top (u,v,t) \mid (u,v,t) \in \mathcal{G} \}
です.また,主問題の最適解は  p^\star = \inf\{ t \mid (u,v,t) \in \mathcal{G}, u \le 0, v = 0 \} と表せます.

また,$\mathcal{A}$ を,$\mathcal{G}$ の上側領域と右側領域とします.(エピグラフっぽいもの)
\[
\mathcal{A} = \{(u,v,t) \mid \exists x \in D, f_i(x) \le u_i, h_j(x) = v_j, f_0(x) \le t\}.
\]
$\mathcal{G}$ の定義は
\[
\mathcal{G} = \{(u,v,t) \mid \exists x \in D, f_i(x) = u_i, h_j(x) = v_j, f_0(x) = t\}.
\]
だったことを踏まえると $\mathcal{G} \subseteq \mathcal{A}$ に注意して下さい.
例えば先程の具体例の問題ですと, $\mathcal{G}$ は下図の青色曲線,$\mathcal{A}$ は赤色領域に対応します.ここで横軸が $u$,縦軸が $t$ に対応します.

f:id:ir5:20141214145228p:plain

一般に主問題が凸最適化問題なら,$\mathcal{A}$ は凸領域になることが示せます.
いま,$\mathcal{B} = \{(0,0,t) \mid t < p^\star \}$ とします(上図の緑色領域).このとき$\mathcal{A}$,$\mathcal{B}$ は共有点をもたない凸領域なので,ある超平面があってこの2つを分離することが出来ます(separating hyperplane theorem).つまり,ある $(\tilde\lambda, \tilde\nu, \mu) \not= 0$ と $\alpha$ があって,

  • $(u, v, t) \in \mathcal{A} \Rightarrow \tilde\lambda^\top u + \tilde\nu^\top v + \mu t \ge \alpha$
  • $(u, v, t) \in \mathcal{B} \Rightarrow \tilde\lambda^\top u + \tilde\nu^\top v + \mu t \le \alpha$

ここでもしある $i$ について $\tilde\lambda_i < 0$ とすると,ある $(u,v,t) \in \mathcal{A}$ をとったとき,$u_i$ の座標をどんどん大きくすると分離平面を突き抜けることになりますが $\mathcal{A}$ の定義からそのようになっていはいけない($u_i$ の座標を大きくしても $\mathcal{A}$ に属したままでないとけない)ので矛盾します.$\mu$ についても同様のことが言えます.なので $\tilde\lambda \ge 0, \mu \ge 0$ です.

また,$\mathcal{B}$ に属する $u,v$ の座標は $0$ で,$t < p^\star$ であるので,分離平面の式から $\mu p^\star \le \alpha$ です.これらを踏まえると,任意の点 $x \in D$ について,
\[
\sum_{i=1}^m \tilde\lambda_i f_i(x) + \tilde\nu^\top(Ax-b) + \mu f_0(x) \ge \alpha \le \mu p^\star
\]
です.

ここでもし $\mu > 0$ (分離平面は $t$ 軸方向に平行ではない) と仮定すると,定式を $\mu$ で割って
\[
L(x, \tilde\lambda / \mu, \tilde\nu / \mu) \ge p^\star
\]
となり,つまり $\lambda = \tilde\lambda / \mu$, $\mu = \tilde\nu / \mu$ とおけば g(\lambda, \nu) = \inf_{x \in D} L(x, \lambda, \nu) \ge p^\star となります.これはまさに強双対性を示唆するものです.

では $\mu=0$ (分離平面が $t$ 軸に平行) の場合はどうでしょうか.詳細は疲れてきたので省きますが,Slater の条件と,$A$ が行フルランクであるという仮定を使えば,そのようなケースは存在しないということが言えます.

最適性条件

強双対性が成り立てば双対問題をかわりに考えればいいことが分かりました.しかし実際にそれを解く,つまりにはどうすればいいでしょうか.
$x^\star$, $(\lambda^\star, \nu^\star)$ がそれぞれ主問題,双対問題で最適解となるための必要条件を与えるのがKKT条件です.

相補性条件

強双対性が成り立っていると仮定した上で,$x^\star$, $(\lambda^\star, \nu^\star)$ をそれぞれ主問題,双対問題の最適解とします.このとき,
 f_0(x^\star)
 = g(\lambda^\star, \nu^\star)
 = \inf_{x} \left( f_0(x) + \sum_i \lambda^\star_i f_i(x) + \sum_i \nu^\star_i h_i(x) \right)
 \le f_0(x^\star) + \sum_i \lambda^\star_i f_i(x^\star) + \sum_i \nu^\star_i h_i(x^\star)
      \le f_0(x^\star)
です.最後の不等式は各変数が主問題,双対問題の実行可能解であるることから $\lambda^\star \ge 0$,$f_i(x^\star) \le 0$,$h_i(x^\star)=0$ であることを用いています.これより道中の不等号は等号なので,
\[
\lambda^\star_i f_i(x^\star) = 0
\]
が成り立ちます.つまり制約関数とそれに対応するラグランジュ乗数のどちらかは必ず $0$ になります.これを相補性条件と呼びます.

勾配=0

ここで簡単のため,各関数 $$ は各点で微分可能 (したがってラグランジュ関数も微分可能) とします.
先ほどの項でも示しましたが,$x^\star$ は  \inf_{x \in D} L(x, \lambda^\star, \nu^\star) の minimizer なので,$x=x^\star$ における偏微分は $0$ でなければなりません.つまり,
\[
\nabla f_0(x^\star) + \sum_i \lambda^\star_i \nabla f_i(x^\star) + \sum_i \nu^\star_i \nabla h_i(x^\star) = 0
\]
でなくてはなりません.

KKT 条件=0

KKT 条件は,主問題と双対問題の制約条件と,上記の相補性条件と勾配=0の条件から成り立ちます.列挙すると以下のとおりです.

  • $f_i(x^\star) \le 0$
  • $h_i(x^\star) = 0$
  • $\lambda^\star_i \ge 0$
  • $\lambda^\star_i f_i(x^\star) = 0$
  • $\nabla f_0(x^\star) + \sum_i \lambda^\star_i \nabla f_i(x^\star) + \sum_i \nu^\star_i \nabla h_i(x^\star) = 0$

これまでに見たように,問題が強双対性を満たしかつ $(x^\star, \lambda^\star, \nu^\star)$ が主問題/双対問題で最適解なら,$(x^\star, \lambda^\star, \nu^\star)$ はKKT条件を満たします.つまりKKT条件は最適解であるための必要条件です.
では,逆はどうでしょうか.実は,主問題が凸の場合は,KKT条件は最適解であるための十分条件になっていることが言えます.細かい証明は省略しますが,ある $(\tilde{x}, \tilde\lambda, \tilde\nu)$ がKKT条件を満たすとすると,相補性条件のあの式みたいな感じで式変形をすれば $g(\tilde\lambda, \tilde\nu) = f_0(\tilde{x})$ が言えます.

したがって,主問題が凸でかつ各関数が微分可能な場合は,KKT条件に沿って最適解を達成する変数を求めることができます.

その他

  • 今まで最小化問題を考えていましたが,代わりに最大化問題にしても同様の議論が成り立ちます.不等号制約関数で向きが逆になったりしても同様.
  • Boyd本には上記で書いた解釈以外にも様々な解釈(conjugate function,min-max,ゲーム等)が載っています.
  • 非凸の場合には具体的にはどうすればいいのかとかは僕が見た限り書かれていませんでした.一般には綺麗に解けないということなんでしょうか.
  • 等号制約は線形のものばかり扱われましたが,線形以外だとどうでしょうか.Boyd本のExercise 5.21に例があるのですが,等号制約関数が凸であるのに強双対性が成り立たない例があります.次のようなものです:$\max_{x\in \mathbb{R},y>0} e^{-x}$ $\mbox{subject to}$ $x^2/y=0$.主問題の最適解は $1$ ですが,双対問題の最適解は $0$ になってしまいます.
  • ラグランジュの未定乗数法は,等号制約しかない場合にKKT条件を使って最適解を解析的に求める手法のこと(だと思います).

まとめ

  • 強双対性が成り立つと主問題の代わりに考えやすい(かもしれない)双対問題を考えれば良くなって便利.
    • たとえば,主問題で変数の個数が多いが制約の個数が少ないような場合,双対問題では変数の個数が少なくなって解きやすくなる可能性がある.
  • 主問題が凸(目的関数と不等号制約関数が下に凸で等号制約関数が線形)でSlaterの条件が成り立つなら強双対性が成り立つ.
  • KKT条件 = 主問題の条件 + 双対問題の条件 + 相補性条件 + 勾配=0の条件
  • 強双対性が成立し,かつ目的関数と各制約関数が微分可能な場合,KKT条件は各変数が最適解を取るための必要条件になっている.
  • 実際に問題を解きたい場合は,まず主問題に強双対性が成り立つことを確認した上で,KKT 条件にしたがって解けば良い.
  • 主問題が凸じゃない場合に強双対性が成り立つかはちょっと考える必要があるかもしれません.
    • 指標の1つとして,等号制約が線形でない場合は,$\mathcal{A}$,$\mathcal{B}$ の分離平面で $t$ 軸に平行なものが存在しなければセーフ(のはず).

*1:ベクトル同士の不等号は要素ごとの不等号です

*2:双対問題の計算は若干面倒なのですがここでは省略します.

*3:$\mathbf{int}$ は集合の内点を表す記号.

PFIセミナーで「ICALP参加記」について話しました

先週木曜(2014/8/7)のPFIセミナーで表記のタイトルで発表したので,その資料を公開します.
7月にコペンハーゲンで開かれた理論計算機科学の学会に行ってきたときの話を雑多に書いています.

僕が会議に参加した時の発表スライドも公開しています.


余談

ICALP 2014 に論文採択されました

M.Kusumoto, and Y.Yoshida . "Testing Forest-Isomorphism in the Adjacency List Model." ICALP 2014, to appear.

修論の成果で投稿した論文が国際会議のICALP2014に採択されました.
ICALP(International Colloquium on Automata, Languages and Programming) は理論計算機科学(理論系アルゴリズム,計算量理論,言語・オートマトンプログラミング言語理論など) を扱う国際会議です.運営はEATCSというヨーロッパの理論計算機科学の団体によって行われ,会議は毎年ヨーロッパの色々なところを転々としながら開催されるようです.今年はデンマークコペンハーゲンで開催されます.
ICALPは理論系アルゴリズム界隈の会議の中でも上位レベルのものとして知られています.たとえば Microsoft Academic Search の引用数順で会議一覧を見てみると,上から4番目にあることが分かります.(共著者の吉田さん曰くヨーロッパ内の会議ではトップとのこと.)

論文は NII の吉田さんとの共著です.吉田さんは後述する性質検査アルゴリズム分野のプロで,今回の論文もその性質検査アルゴリズムに関するものになっています.

中身の概要

論文はざっくり言うと「木の同型性判定を,入力グラフのごく一部分だけを見て近似的に解くためのアルゴリズムの提案」がメインです.
グラフ同型性判定問題とは,2つのグラフが与えられたときに,頂点の名前を付け替えることで2つを全く同じものにすることが可能かどうかをyes/noで答える問題です.
例えば下の図のようなグラフが入力なら A→1,B→2,… という付け替えをすることで同じものにできるのでyes(同型)であると答えるのが正解,といった感じです.

f:id:ir5:20140412123533p:plain

さて,冒頭で「入力のごく一部分だけを見て解く」と書いたのですが,普通に考えるとそんなことは不可能です.例えば,辺が全く無いグラフと,辺が1本だけあるグラフが同型かどうか調べたい場合,同型ではない証拠としてその1本だけある辺を探さなければならないので必然的にグラフ全体を見ることになってしまいます.
しかしここで問題をある程度緩和し,アルゴリズムが乱択になるのを許すことで,入力を一部だけ見て同型性判定問題を解けるようになります.
$n$ をグラフの頂点数とし,また,問題の緩和のためにパラメータ $0<\varepsilon<1$ を導入します.論文では,オリジナルのyes/no判定問題を,「2つの入力グラフが同型である」「一方のグラフの辺を $\varepsilon n$ 本追加・削除したとしてももう一方のグラフに同型に出来ない(つまり同型から程遠い)」かの2つを区別する問題に緩和します.そのうえで,この問題がグラフの $\mathrm{polylog}(n)$ 箇所だけを見ることで任意に高い確率で解くアルゴリズムを構成しました.$\mathrm{polylog}(n)$ は $n$ が十分大きいとき,$n$ に比べてずっと小さいということに注意してください.

このような風にして問題を緩和して解く分野が性質検査と呼ばれる分野です.性質検査では,緩和した問題を解くことを「検査する」と呼んだりします.

f:id:ir5:20140412125714p:plain

性質検査分野への貢献

性質検査分野は1998年前後あたりから O.Goldreich や D.Ron らによって理論界隈で提唱された比較的新しい分野です.問題を緩和しているとはいえ線形時間より真に高速に解ける(爆速),理論的にも大掛かりな道具や手法が満載ということで,理論系アルゴリズムのトップ会議(STOC,FOCS,SODA)でも毎年何本か論文が採択されています.
理論屋の主な興味は,問題を緩和することによって,どのような特徴を持った問題が解けるようになるのかをある程度包括的に調べることです.つまり,さきほどの節で問題を緩和して解けるようにするみたいなことを書きましたが,緩和しさえすればどんな問題でも解けるようになるというわけではなく,依然として(入力を全部見ないと)解けないものもいっぱいあるので,それを理論的にまとまった形で分類したい,ということです.

性質検査の枠組みの中で知見が深められている分野の1つがグラフ理論です.入力が密グラフ(隣接行列)である場合は「定数時間*1で検査できる性質必要十分条件」が知られており,疎グラフ(隣接リスト)の場合も,各頂点の次数がある定数以下であると入力に制限が付いている場合はある程度広い性質が定数時間で検査できることが知られています.
ところが疎グラフで次数の制限が無い場合がどうなのかということについては,あまりよく知られていませんでした.もともと次数制限版ばかり考えられていたのはその方が問題が解きやすくなるからという面があるのですが,次数制限されたグラフというのはグラフ全体からするとかなり限られたものになってしまっています.
問題が解きやすくなるというのは,たとえば,次数が制限されていれば頂点をランダムに選んでそこから距離が定数の部分を全部探索するといったことができますが,次数の制限が無い場合はそういったことはできません.なぜなら,探索している最中で次数がとても大きい点に突っ込んでいってしまった場合,そこにつながっている辺を全て見ると多くの部分を見る羽目になってしまうからです.

そこで,解ける範囲で入力をある程度制限しつつも,次数の制限を外した場合にどういった性質が検査できるのか? という課題に我々は焦点を当てました.入力が木であるのはだいぶ制約として強い気がしますが,それでも証明するのは全く自明ではありません.

また,論文では同型性判定を道具にして,入力として木が与えられたとき,任意の性質を $\mathrm{polylog}(n)$ 箇所だけ見ることで検査できることを証明しました.この証明には STOC'11 の Newman, Sohler が使った手法と類似のものを用いています.

ここに至るまでの過程

ここからは回想です.今回の結果はなかなか難産でした.まず修士1回生あたりのころからどういう問題に取り組めばよいかどうかをずっと模索していた気がするのですが,最初に目星を付けた問題が実はよく調べてみると既に解かれていたり,そもそも取り組むべき問題を探したところでそれが解けるのかどうかよく分からなかったりと色々遠回りをしました.今回の問題に取り組むことが決まったのは修士1回生の終わりの頃でした.
証明の方針自体は最初からなんとなく決まっていたのであとはそれを細かく解析するだけだろうと思っていたのですが,いざ始めてみると細かい部分がとても大変で,一度は投げ出し気味になってしまいました.これが修士2回生の4月~6月頃です.で,さすがに放置するのもなんなので一旦まとめて別のある会議に出したものの,しばらくしてから見返してみると証明がかなりいい加減で,会議からnotificationが返ってきたあたりから本格的に修正していきました.このとき会議から返ってきた査読のレビューがかなり的確で,ある意味無くしていたモチベーションを回復するきっかけになったような気がします.これが修士2回生の12月~1月あたりです.1月は本当に証明の修正や,論文の流れを追いやすくするために証明の概要を章の冒頭に書いたりをひたすらやっていました.

余談

アルゴリズムの厳密な計算量は $\log(n)^{2^{\mathrm{poly}(1/\varepsilon)}}$ とかになっていて実用的には超マッシブなのでそのまま実用で使うのは難しいと思われる,理論と実用のギャップはとても大きい.

*1:問題の緩和の際に導入したパラメータ$\varepsilon$は定数だと見なします

2013年を今更振り返る

2014年になってからだいぶ経ちましたが2013年の進捗を振り返ろうかと思います.
プログラミングコンテスト絡みのことはTopCoder部の方に書いたのでそっちを御覧ください.

卒論の成果をジャーナルに出した

Kusumoto Mitsuru, Yuichi Yoshida, and Hiro Ito. Constant-Time Approximation Algorithms for the Optimum Branching Problem on Sparse Graphs. (IJNC'13)
卒論の成果をIJNCというジャーナルに投稿して,何度かの修正を経て収録されました.ここに投稿する前に ICNC (dblp) という会議で発表したのですが,これはそのジャーナル版にあたります.
内容としては,最大重み有向森問題という有向グラフの最適化問題があるのですが,その問題の最適値の値を,グラフのごく一部分だけを見て近似的に計算するアルゴリズムを提案した,というものです.最大重み有向森は最小有向木問題と等価(互いに多項式時間帰着可能)な問題として知られていて,組合せ最適化とかにも載っています.

この論文はここに落ち着くまでにいくつか別の国際会議に出して落ちるといったことを繰り返していて,割と色々な場所を彷徨っていました.中には結構惜しいところ(というか半ば理不尽っぽい感じのレビュー)でRejectを受けたりしたものもあって悔しい思いをしたというのが正直なところです.今回収録されてとりあえず成仏された感じになりました.

ラボ輪講

研究関係のこと(理論計算機科学とか離散数学)でもっと体系的な知識を付けたいと思ったので,4月から新B4生達も交えてラボ内で輪講をしました.とりあえず読んだのは N.Alon と H.Spencer の Probabilistic Method と,D.Spielman の Spectral Graph Theory の2つです.

Probabilistic Method は確率事象を考えることによって存在性を示したり何かの上界や下界を証明する手法のことです.ラムゼー理論のような,普通にやったらどうやって解析すればいいのかよくわからない感じの問題が多く扱われています.できるだけ読み飛ばさないスタイルで,しかも結構ゆっくりと進めたので,1年で読むことができたのは本の30%くらいでした.それでも解析のための様々なテクニックを丁寧に見ることができたのは良かったかもしれません.(実際の場面で活用できるかというとそれはまた別の話かもしれませんが.)

Spectral Graph Theory はグラフを隣接行列やラプラシアン固有値の観点から解析する手法で,いろいろなところに応用があります.ここでやったことは9月のPFIセミナーの発表資料にひと通りまとめています.普通にスペクトルグラフについて詳しくなれたほかに以前と比べて線形代数に強くなった(気がする)ので学べたことは多いと思います.ひとまず興味のあるところは読み終えたので,せっかくなので次はスペクトルグラフのテクニックを使った論文を読んでみよう,みたいになっています.

IJCAI参加,発表

Danushka Bollegala, Mitsuru Kusumoto, Yuichi Yoshida, and Ken-ichi Kawarabayashi, Mining for Analogous Tuples from an Entity-Relation Graph. (IJCAI'13)
僕は2012年の後期から河原林巨大グラフプロジェクトでRAをやっているのですが,そこで東大のダヌシカ先生たちと共同で研究をして投稿したところ,IJCAI(AI系のトップ会議)に採択されたので発表に行ってきました.
僕自身は主にアルゴリズムの実装と実験を担当して second author という位置づけだったのですが,first author のダヌシカ先生が別件で会議に出られないとのことだったので僕が行って発表することになりました.
開催場所は北京でした.噂に聞いていたとおり空気が悪かったので呼吸に気をつけながら滞在しました.
AIは専門外の分野だったので発表を聞いてもわからないことも多かった(というかそもそもAI自体が様々な分野の集合体なので…)のですがどういう問題が重要とされているかとかどういう手法がメジャーなのかとかはなんとなく分かった気がします.

現在,今後

修論で成果が出ていたり,他にも何かしているような気がするのでそれらを何らかの形にして publish したいです.

最近点対問題の線形時間乱択アルゴリズム

これは Competitive Programming Advent Calendar Div2013 の 20 日目の記事です.最近点対問題の話をします.

最近点対問題は,空間上に点の集合が与えられた時に,その中で最も距離が近いペアを探す問題です.

f:id:ir5:20131221004115p:plain

応用としては,何らかのオブジェクトを特徴ベクトルに写した後で,最も類似したペアを探したいときなどに役に立つのではないかと思います.競技プログラミング界では,今年のICPC会津大会で3次元上の最近点対問題が出題されました.
空間が平面のときは分割統治による $O(n\log{n})$ 時間アルゴリズムが有名かと思います.今回は一般の次元で,(ハッシュマップを用いて)線形時間で動く実装が楽そうな乱択アルゴリズムの紹介をします.参考にした文献は以下のサーベイです.
Smid, Michiel. Closest point problems in computational geometry. MPI Informatik, Bibliothek & Dokumentation, 1995.

続きを読む