この 章の 目標
確率的勾配降下法の 誤差の 期待値が O ( 1 / k ) O(1/\sqrt{k}) O ( 1/ k ) に なる ことを、期待値の 評価の 仕方まで 含めて 証明できる
ミニバッチ・モメンタム・Adam の 考え方と 保証の 有無、非凸最適化の 難しさを 説明できる
整数計画を 定式化し、LP 緩和・ 全単模性・分枝限定法・ 切除平面を 説明できる
ダイクストラ法と クラスカル法の 正しさを 証明し、仮定が 外れた ときの 反例を 示せる
動的計画法・ 擬多項式時間・NP 困難・近似アルゴリズムの 意味を 正確に 述べられる
前提 :第2章 、第3章 、第5章 、22-statistics 第1章 (期待値と 独立性)。7.3 節では 第1章の 局所最小点と 鞍点を、7.4 節では 02-linear-algebra 第4章 の クラメルの 公式を、7.9 節では 25-cryptography-coding 第1章 の 多項式時間の 考え方を 使う。
第5章 ・第6章 の 方法は、勾配を 正確に 計算できる、なめらかで 凸な 問題で 威力を 発揮した。実務では この 前提が 崩れる 場面が 二つある。一つは データが 多すぎる 場面で、少数の データで 勾配を 見積もって 進む 確率的勾配降下法が 使われる(7.1〜7.3 節)。もう 一つは、倉庫を 建てるか、誰を どの 勤務に 割り当てるか、のように 決定が 離散的な 場面で、実行可能領域は 凸でなくなる(7.4〜7.9 節)。最後に NP 困難 の 正確な 意味を 述べる。
7.1 確率的勾配降下法
データ ( a i , y i ) (a_i, y_i) ( a i , y i ) (i = 1 , … , m i = 1, \dots, m i = 1 , … , m )の 損失の 平均 f ( x ) = 1 m ∑ i = 1 m f i ( x ) f(x) = \frac{1}{m}\sum_{i=1}^{m} f_i(x) f ( x ) = m 1 ∑ i = 1 m f i ( x ) を 最小に する 経験リスク最小化 では(ロジスティック回帰なら f i ( x ) = log ( 1 + e a i ⊤ x ) − y i a i ⊤ x f_i(x) = \log(1 + e^{a_i^{\top}x}) - y_ia_i^{\top}x f i ( x ) = log ( 1 + e a i ⊤ x ) − y i a i ⊤ x 。第1章 例 1.6)、添字 i i i を 等確率で 選べば E [ ∇ f i ( x ) ] = ∇ f ( x ) E[\nabla f_i(x)] = \nabla f(x) E [ ∇ f i ( x )] = ∇ f ( x ) で、1 件分の 計算で「平均すれば 正しい」方向が 得られる。反復点は 確率変数に なるので、収束は 期待値で 評価する。測度論を 避ける ため、乱数は 有限個の 値を とると する(一般の 場合は 注意 7.5 の (3))。
定義 7.1 (確率的勾配降下法, stochastic gradient descent)C ⊂ R n C \subset \mathbb{R}^n C ⊂ R n を 空でない 閉凸集合、 f : C → R f\colon C \to \mathbb{R} f : C → R を 凸関数とし、 f f f は C C C 上で 最小点 x ∗ x^{\ast} x ∗ を もつとする。有限集合 Ξ \Xi Ξ に 値を とる 確率変数 ξ \xi ξ と 写像 g : C × Ξ → R n g\colon C \times \Xi \to \mathbb{R}^n g : C × Ξ → R n が、ある G > 0 G > 0 G > 0 に ついて 次を 満たすと する。
(不偏性)すべての x ∈ C x \in C x ∈ C で、g ˉ ( x ) : = E [ g ( x , ξ ) ] \bar{g}(x) := E[g(x, \xi)] g ˉ ( x ) := E [ g ( x , ξ )] は f f f の x x x に おける 劣勾配である( 第2章 定義 2.26)。
(2 次モーメントの 有界性)すべての x ∈ C x \in C x ∈ C で E [ ∥ g ( x , ξ ) ∥ 2 ] ≤ G 2 E[\lVert g(x, \xi) \rVert^2] \leq G^2 E [∥ g ( x , ξ ) ∥ 2 ] ≤ G 2 。
g ( x , ξ ) g(x, \xi) g ( x , ξ ) を 確率的勾配 (stochastic gradient) と いう。 ξ \xi ξ と 同じ 分布に 従う 独立な 確率変数の 列 ξ 0 , ξ 1 , … \xi_0, \xi_1, \dots ξ 0 , ξ 1 , … 、初期点 x 0 ∈ C x_0 \in C x 0 ∈ C 、ステップ幅(学習率)η t > 0 \eta_t > 0 η t > 0 に 対し
x t + 1 = P C ( x t − η t g ( x t , ξ t ) ) ( t = 0 , 1 , 2 , … ) x_{t+1} = P_C\bigl(x_t - \eta_t\,g(x_t, \xi_t)\bigr) \qquad (t = 0, 1, 2, \dots) x t + 1 = P C ( x t − η t g ( x t , ξ t ) ) ( t = 0 , 1 , 2 , … )
で 点列を 作る 方法を 確率的勾配降下法(SGD)と いう。 P C P_C P C は 第2章 定理 2.4 の 射影である( C = R n C = \mathbb{R}^n C = R n なら 恒等写像)。
例 7.2 Ξ = { 1 , … , m } \Xi = \lbrace 1, \dots, m \rbrace Ξ = { 1 , … , m } 上の 一様分布と g ( x , i ) = ∇ f i ( x ) g(x, i) = \nabla f_i(x) g ( x , i ) = ∇ f i ( x ) (f i f_i f i は 微分可能な 凸関数)を とれば 条件 1 が 成り立つ。ロジスティック回帰では ∇ f i ( x ) = ( σ ( a i ⊤ x ) − y i ) a i \nabla f_i(x) = (\sigma(a_i^{\top}x) - y_i)a_i ∇ f i ( x ) = ( σ ( a i ⊤ x ) − y i ) a i (σ \sigma σ は シグモイド関数)と 0 < σ < 1 0 < \sigma < 1 0 < σ < 1 , y i ∈ { 0 , 1 } y_i \in \lbrace 0, 1 \rbrace y i ∈ { 0 , 1 } より ∥ ∇ f i ( x ) ∥ ≤ ∥ a i ∥ \lVert \nabla f_i(x) \rVert \leq \lVert a_i \rVert ∥ ∇ f i ( x )∥ ≤ ∥ a i ∥ なので、条件 2 は G 2 = 1 m ∑ i ∥ a i ∥ 2 G^2 = \frac{1}{m}\sum_i \lVert a_i \rVert^2 G 2 = m 1 ∑ i ∥ a i ∥ 2 で 成り立つ。
収束の 証明では、「 x t x_t x t を 固定して ξ t \xi_t ξ t に ついてだけ 平均して よい」と いう 次の 補題が 要に なる。
補題 7.3 X X X を 有限個の 値を とる 確率ベクトル、 ξ \xi ξ を X X X と 独立で Ξ \Xi Ξ に 値を とる 確率変数、 h h h を 実数値関数とし、 φ ( x ) = E [ h ( x , ξ ) ] \varphi(x) = E[h(x, \xi)] φ ( x ) = E [ h ( x , ξ )] と おく。この とき E [ h ( X , ξ ) ] = E [ φ ( X ) ] E[h(X, \xi)] = E[\varphi(X)] E [ h ( X , ξ )] = E [ φ ( X )] である。
証明. 独立性より P ( X = x , ξ = z ) = P ( X = x ) P ( ξ = z ) P(X = x, \xi = z) = P(X = x)P(\xi = z) P ( X = x , ξ = z ) = P ( X = x ) P ( ξ = z ) (22-statistics 第1章 命題 1.4 の 1)なので、X X X の とる 値 x x x に ついて 和を とると
E [ h ( X , ξ ) ] = ∑ x ∑ z ∈ Ξ h ( x , z ) P ( X = x ) P ( ξ = z ) = ∑ x P ( X = x ) φ ( x ) = E [ φ ( X ) ] E[h(X, \xi)] = \sum_{x}\sum_{z \in \Xi} h(x, z)P(X = x)P(\xi = z) = \sum_{x} P(X = x)\varphi(x) = E[\varphi(X)] E [ h ( X , ξ )] = x ∑ z ∈ Ξ ∑ h ( x , z ) P ( X = x ) P ( ξ = z ) = x ∑ P ( X = x ) φ ( x ) = E [ φ ( X )]
である。□ \square □
定理 7.4 (確率的勾配降下法の 収束) 定義 7.1 の 設定で ∥ x 0 − x ∗ ∥ ≤ R \lVert x_0 - x^{\ast} \rVert \leq R ∥ x 0 − x ∗ ∥ ≤ R とし、ステップ幅を 一定値 η t = η \eta_t = \eta η t = η と して k k k 回反復する。平均反復点 x ˉ k = 1 k ∑ t = 0 k − 1 x t \bar{x}_k = \frac{1}{k}\sum_{t=0}^{k-1} x_t x ˉ k = k 1 ∑ t = 0 k − 1 x t に ついて
E [ f ( x ˉ k ) ] − f ( x ∗ ) ≤ R 2 2 η k + η G 2 2 E[f(\bar{x}_k)] - f(x^{\ast}) \leq \frac{R^2}{2\eta k} + \frac{\eta G^2}{2} E [ f ( x ˉ k )] − f ( x ∗ ) ≤ 2 η k R 2 + 2 η G 2
が 成り立つ(期待値は ξ 0 , … , ξ k − 1 \xi_0, \dots, \xi_{k-1} ξ 0 , … , ξ k − 1 に ついてとる)。特に η = R / ( G k ) \eta = R/(G\sqrt{k}) η = R / ( G k ) と すると E [ f ( x ˉ k ) ] − f ( x ∗ ) ≤ R G / k E[f(\bar{x}_k)] - f(x^{\ast}) \leq RG/\sqrt{k} E [ f ( x ˉ k )] − f ( x ∗ ) ≤ R G / k である。
証明. g t = g ( x t , ξ t ) g_t = g(x_t, \xi_t) g t = g ( x t , ξ t ) , D t = ∥ x t − x ∗ ∥ 2 D_t = \lVert x_t - x^{\ast} \rVert^2 D t = ∥ x t − x ∗ ∥ 2 と おく。 x t x_t x t は ξ 0 , … , ξ t − 1 \xi_0, \dots, \xi_{t-1} ξ 0 , … , ξ t − 1 の 関数なので 有限個の 値しかとらず、 ξ t \xi_t ξ t と 独立である(22-statistics 第1章 命題 1.4 の 3)。(a) は 乱数の どの 実現値でも 成り立つ不等式で、(b)・ (c) が 期待値の 評価である。
(a) x ∗ = P C ( x ∗ ) x^{\ast} = P_C(x^{\ast}) x ∗ = P C ( x ∗ ) と 射影の 非拡大性(定理 2.4)より
D t + 1 ≤ ∥ x t − η g t − x ∗ ∥ 2 = D t − 2 η ⟨ g t , x t − x ∗ ⟩ + η 2 ∥ g t ∥ 2 (7.1) D_{t+1} \leq \lVert x_t - \eta g_t - x^{\ast} \rVert^2 = D_t - 2\eta\langle g_t, x_t - x^{\ast} \rangle + \eta^2\lVert g_t \rVert^2 \tag{7.1} D t + 1 ≤ ∥ x t − η g t − x ∗ ∥ 2 = D t − 2 η ⟨ g t , x t − x ∗ ⟩ + η 2 ∥ g t ∥ 2 ( 7.1 )
(b) 補題 7.3 を X = x t X = x_t X = x t , ξ = ξ t \xi = \xi_t ξ = ξ t , h ( x , z ) = ⟨ g ( x , z ) , x − x ∗ ⟩ h(x, z) = \langle g(x, z), x - x^{\ast} \rangle h ( x , z ) = ⟨ g ( x , z ) , x − x ∗ ⟩ に 使う。 φ ( x ) = ⟨ g ˉ ( x ) , x − x ∗ ⟩ \varphi(x) = \langle \bar{g}(x), x - x^{\ast} \rangle φ ( x ) = ⟨ g ˉ ( x ) , x − x ∗ ⟩ で、g ˉ ( x ) \bar{g}(x) g ˉ ( x ) は 劣勾配だから 定義 2.26 の 不等式で y = x ∗ y = x^{\ast} y = x ∗ と すると φ ( x ) ≥ f ( x ) − f ( x ∗ ) \varphi(x) \geq f(x) - f(x^{\ast}) φ ( x ) ≥ f ( x ) − f ( x ∗ ) 。よって E [ ⟨ g t , x t − x ∗ ⟩ ] = E [ φ ( x t ) ] ≥ E [ f ( x t ) ] − f ( x ∗ ) E[\langle g_t, x_t - x^{\ast} \rangle] = E[\varphi(x_t)] \geq E[f(x_t)] - f(x^{\ast}) E [⟨ g t , x t − x ∗ ⟩] = E [ φ ( x t )] ≥ E [ f ( x t )] − f ( x ∗ ) 。
(c) h ( x , z ) = ∥ g ( x , z ) ∥ 2 h(x, z) = \lVert g(x, z) \rVert^2 h ( x , z ) = ∥ g ( x , z ) ∥ 2 と すると φ ( x ) = E [ ∥ g ( x , ξ ) ∥ 2 ] ≤ G 2 \varphi(x) = E[\lVert g(x, \xi) \rVert^2] \leq G^2 φ ( x ) = E [∥ g ( x , ξ ) ∥ 2 ] ≤ G 2 なので、E [ ∥ g t ∥ 2 ] ≤ G 2 E[\lVert g_t \rVert^2] \leq G^2 E [∥ g t ∥ 2 ] ≤ G 2 。
(7.1) の 期待値を とり(期待値の 線形性と 単調性。22-statistics 第1章 命題 1.6)、(b)・ (c) を 使うと
E [ D t + 1 ] ≤ E [ D t ] − 2 η ( E [ f ( x t ) ] − f ( x ∗ ) ) + η 2 G 2 E[D_{t+1}] \leq E[D_t] - 2\eta\bigl(E[f(x_t)] - f(x^{\ast})\bigr) + \eta^2G^2 E [ D t + 1 ] ≤ E [ D t ] − 2 η ( E [ f ( x t )] − f ( x ∗ ) ) + η 2 G 2
t = 0 , … , k − 1 t = 0, \dots, k - 1 t = 0 , … , k − 1 に ついて 足すと E [ D t ] E[D_t] E [ D t ] の 項が 打ち消し合い、 E [ D k ] ≥ 0 E[D_k] \geq 0 E [ D k ] ≥ 0 と D 0 ≤ R 2 D_0 \leq R^2 D 0 ≤ R 2 より
2 η ∑ t = 0 k − 1 ( E [ f ( x t ) ] − f ( x ∗ ) ) ≤ D 0 − E [ D k ] + k η 2 G 2 ≤ R 2 + k η 2 G 2 2\eta\sum_{t=0}^{k-1}\bigl(E[f(x_t)] - f(x^{\ast})\bigr) \leq D_0 - E[D_k] + k\eta^2G^2 \leq R^2 + k\eta^2G^2 2 η t = 0 ∑ k − 1 ( E [ f ( x t )] − f ( x ∗ ) ) ≤ D 0 − E [ D k ] + k η 2 G 2 ≤ R 2 + k η 2 G 2
C C C は 凸なので x ˉ k ∈ C \bar{x}_k \in C x ˉ k ∈ C で、イェンセンの 不等式(第2章 命題 2.13 の 4)より 実現値ごとに f ( x ˉ k ) ≤ 1 k ∑ t = 0 k − 1 f ( x t ) f(\bar{x}_k) \leq \frac{1}{k}\sum_{t=0}^{k-1} f(x_t) f ( x ˉ k ) ≤ k 1 ∑ t = 0 k − 1 f ( x t ) 。期待値を とって 上の 不等式と 合わせ、 2 η k 2\eta k 2 η k で 割れば 主張を 得る。右辺 R 2 2 η k + η G 2 2 \frac{R^2}{2\eta k} + \frac{\eta G^2}{2} 2 η k R 2 + 2 η G 2 は 相加相乗平均の 不等式より η = R / ( G k ) \eta = R/(G\sqrt{k}) η = R / ( G k ) で 最小値 R G / k RG/\sqrt{k} R G / k を とる。 □ \square □
定理 7.4 は すべての 凸問題に 対する 保証なので、上界は 控えめである。乱数で 作った ロジスティック回帰の 問題(データ 1000 件、特徴量 1 個と 切片、 x 0 = 0 x_0 = 0 x 0 = 0 、G G G は 例 7.2 の 値)で η = R / ( G k ) \eta = R/(G\sqrt{k}) η = R / ( G k ) と すると、平均反復点の 誤差の 期待値(独立な 100 回の 実行の 平均)は k = 10 , 10 3 , 10 5 k = 10, 10^3, 10^5 k = 10 , 1 0 3 , 1 0 5 で 約 0.14 , 0.0070 , 0.000062 0.14, 0.0070, 0.000062 0.14 , 0.0070 , 0.000062 と、上界 R G / k ≈ 0.99 , 0.099 , 0.0099 RG/\sqrt{k} \approx 0.99, 0.099, 0.0099 R G / k ≈ 0.99 , 0.099 , 0.0099 の 6 分の 1 以下だった(計算機で 確かめた)。強凸性が あれば 収束は 速くなる。
定理 7.6 (強凸な 場合) 定義 7.1 の 設定で、さらに f f f は C C C を 含む開凸集合上で 微分可能かつ μ \mu μ -強凸(第2章 定義 2.21)で、g ˉ ( x ) = ∇ f ( x ) \bar{g}(x) = \nabla f(x) g ˉ ( x ) = ∇ f ( x ) と する。添字を 1 1 1 から 始めて x 1 ∈ C x_1 \in C x 1 ∈ C とし、η t = 2 μ ( t + 1 ) \eta_t = \frac{2}{\mu(t + 1)} η t = μ ( t + 1 ) 2 (t = 1 , … , k t = 1, \dots, k t = 1 , … , k )で 反復して、重み t t t の 平均 x ~ k = 2 k ( k + 1 ) ∑ t = 1 k t x t \tilde{x}_k = \frac{2}{k(k + 1)}\sum_{t=1}^{k} tx_t x ~ k = k ( k + 1 ) 2 ∑ t = 1 k t x t を とると
E [ f ( x ~ k ) ] − f ( x ∗ ) ≤ 2 G 2 μ ( k + 1 ) E[f(\tilde{x}_k)] - f(x^{\ast}) \leq \frac{2G^2}{\mu(k + 1)} E [ f ( x ~ k )] − f ( x ∗ ) ≤ μ ( k + 1 ) 2 G 2
証明は 問題 7.2 と する。誤差は O ( 1 / k ) O(1/k) O ( 1/ k ) に 改善し、初期点にも よらない。ただし C = R n C = \mathbb{R}^n C = R n では ∥ ∇ f ( x ) ∥ ≥ μ ∥ x − x ∗ ∥ \lVert \nabla f(x) \rVert \geq \mu\lVert x - x^{\ast} \rVert ∥ ∇ f ( x )∥ ≥ μ ∥ x − x ∗ ∥ で 勾配が 有界でなく、 ∥ g ˉ ( x ) ∥ 2 ≤ E [ ∥ g ( x , ξ ) ∥ 2 ] \lVert \bar{g}(x) \rVert^2 \leq E[\lVert g(x, \xi) \rVert^2] ∥ g ˉ ( x ) ∥ 2 ≤ E [∥ g ( x , ξ ) ∥ 2 ] (命題 7.7)より 条件 2 が 成り立たない。有界な C C C への 射影とともに 使う 定理である。
7.2 ミニバッチ・モメンタム・ 適応的な 学習率
実際には、1 回に b b b 件の データ( ミニバッチ , mini-batch)の 勾配の 平均を 使うことが 多い。
命題 7.7 (ミニバッチに よる 分散の 減少) x ∈ C x \in C x ∈ C を 固定し、 ξ ( 1 ) , … , ξ ( b ) \xi^{(1)}, \dots, \xi^{(b)} ξ ( 1 ) , … , ξ ( b ) を ξ \xi ξ と 同じ 分布に 従う 独立な 確率変数、 g B = 1 b ∑ j = 1 b g ( x , ξ ( j ) ) g_B = \frac{1}{b}\sum_{j=1}^{b} g(x, \xi^{(j)}) g B = b 1 ∑ j = 1 b g ( x , ξ ( j ) ) と する。 σ 2 ( x ) = E [ ∥ g ( x , ξ ) − g ˉ ( x ) ∥ 2 ] \sigma^2(x) = E[\lVert g(x, \xi) - \bar{g}(x) \rVert^2] σ 2 ( x ) = E [∥ g ( x , ξ ) − g ˉ ( x ) ∥ 2 ] と おくと
E [ g B ] = g ˉ ( x ) , E [ ∥ g B − g ˉ ( x ) ∥ 2 ] = σ 2 ( x ) b , E [ ∥ g B ∥ 2 ] = ∥ g ˉ ( x ) ∥ 2 + σ 2 ( x ) b E[g_B] = \bar{g}(x), \qquad E[\lVert g_B - \bar{g}(x) \rVert^2] = \frac{\sigma^2(x)}{b}, \qquad E[\lVert g_B \rVert^2] = \lVert \bar{g}(x) \rVert^2 + \frac{\sigma^2(x)}{b} E [ g B ] = g ˉ ( x ) , E [∥ g B − g ˉ ( x ) ∥ 2 ] = b σ 2 ( x ) , E [∥ g B ∥ 2 ] = ∥ g ˉ ( x ) ∥ 2 + b σ 2 ( x )
証明. 1 番目は 線形性に よる。 u j = g ( x , ξ ( j ) ) − g ˉ ( x ) u_j = g(x, \xi^{(j)}) - \bar{g}(x) u j = g ( x , ξ ( j ) ) − g ˉ ( x ) は 独立で E [ u j ] = 0 E[u_j] = 0 E [ u j ] = 0 , E [ ∥ u j ∥ 2 ] = σ 2 ( x ) E[\lVert u_j \rVert^2] = \sigma^2(x) E [∥ u j ∥ 2 ] = σ 2 ( x ) であり、j ≠ l j \neq l j = l なら E [ ⟨ u j , u l ⟩ ] = ∑ r E [ u j , r ] E [ u l , r ] = 0 E[\langle u_j, u_l \rangle] = \sum_r E[u_{j,r}]E[u_{l,r}] = 0 E [⟨ u j , u l ⟩] = ∑ r E [ u j , r ] E [ u l , r ] = 0 (22-statistics 第1章 命題 1.6 の 3)なので、E [ ∥ ∑ j u j ∥ 2 ] = b σ 2 ( x ) E[\lVert \sum_j u_j \rVert^2] = b\sigma^2(x) E [∥ ∑ j u j ∥ 2 ] = b σ 2 ( x ) を b 2 b^2 b 2 で 割れば 2 番目を 得る。3 番目は ∥ g B ∥ 2 = ∥ g ˉ ( x ) ∥ 2 + 2 ⟨ g ˉ ( x ) , g B − g ˉ ( x ) ⟩ + ∥ g B − g ˉ ( x ) ∥ 2 \lVert g_B \rVert^2 = \lVert \bar{g}(x) \rVert^2 + 2\langle \bar{g}(x), g_B - \bar{g}(x) \rangle + \lVert g_B - \bar{g}(x) \rVert^2 ∥ g B ∥ 2 = ∥ g ˉ ( x ) ∥ 2 + 2 ⟨ g ˉ ( x ) , g B − g ˉ ( x )⟩ + ∥ g B − g ˉ ( x ) ∥ 2 の 期待値を とればよい。 □ \square □
組 ( ξ ( 1 ) , … , ξ ( b ) ) (\xi^{(1)}, \dots, \xi^{(b)}) ( ξ ( 1 ) , … , ξ ( b ) ) を 1 つの 確率変数と みれば ミニバッチ版も 定義 7.1 の 形で、 C C C 上で ∥ g ˉ ( x ) ∥ ≤ M \lVert \bar{g}(x) \rVert \leq M ∥ g ˉ ( x )∥ ≤ M , σ 2 ( x ) ≤ σ 2 \sigma^2(x) \leq \sigma^2 σ 2 ( x ) ≤ σ 2 なら G b 2 = M 2 + σ 2 / b G_b^2 = M^2 + \sigma^2/b G b 2 = M 2 + σ 2 / b ととれる。反復回数 は b b b とともに 減るが、勾配の 計算回数 N = b k N = bk N = bk で 書くと 上界 R G b / k RG_b/\sqrt{k} R G b / k は R b M 2 + σ 2 / N R\sqrt{bM^2 + \sigma^2}/\sqrt{N} R b M 2 + σ 2 / N で、b b b に ついて 増加する。利点は、GPU などで b b b 個の 勾配を 並列に 計算すれば 反復の 時間が ほとんど 増えない ことに ある(問題 7.1)。
深層学習では、過去の 勾配で 方向や 大きさを 調整する 方法が 広く 使われる(以下は 紹介に と どめる)。 モメンタム法 (重球法。ポリャク, 1964 年)は v t + 1 = β v t + g t v_{t+1} = \beta v_t + g_t v t + 1 = β v t + g t , x t + 1 = x t − η v t + 1 x_{t+1} = x_t - \eta v_{t+1} x t + 1 = x t − η v t + 1 (0 ≤ β < 1 0 \leq \beta < 1 0 ≤ β < 1 , v 0 = 0 v_0 = 0 v 0 = 0 )と する。 v t + 1 = ∑ s = 0 t β t − s g s v_{t+1} = \sum_{s=0}^{t}\beta^{t-s}g_s v t + 1 = ∑ s = 0 t β t − s g s では、反復ごとに 符号が 変わる 成分(細長い谷を 横切る 振動)は 打ち消し合い、一定の 向きの 成分は 最大 1 / ( 1 − β ) 1/(1 - \beta) 1/ ( 1 − β ) 倍に 強まる。
Adam (Kingma–Ba, 2015 年)は、勾配の 指数移動平均(モメンタム)を、勾配の 2 乗の 指数移動平均の 平方根で 座標ごとに 割る( g t 2 g_t^2 g t 2 、平方根、割り算は 成分ごと)。 x t − 1 x_{t-1} x t − 1 での 確率的勾配を g t g_t g t とし、m 0 = v 0 = 0 m_0 = v_0 = 0 m 0 = v 0 = 0 から t = 1 , 2 , … t = 1, 2, \dots t = 1 , 2 , … に ついて
m t = β 1 m t − 1 + ( 1 − β 1 ) g t , v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 , m ^ t = m t 1 − β 1 t , v ^ t = v t 1 − β 2 t , x t = x t − 1 − α m ^ t v ^ t + ε \begin{aligned}
m_t &= \beta_1m_{t-1} + (1 - \beta_1)g_t, & v_t &= \beta_2v_{t-1} + (1 - \beta_2)g_t^2, \\
\hat{m}_t &= \frac{m_t}{1 - \beta_1^t}, & \hat{v}_t &= \frac{v_t}{1 - \beta_2^t}, \qquad x_t = x_{t-1} - \alpha\frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \varepsilon}
\end{aligned} m t m ^ t = β 1 m t − 1 + ( 1 − β 1 ) g t , = 1 − β 1 t m t , v t v ^ t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 , = 1 − β 2 t v t , x t = x t − 1 − α v ^ t + ε m ^ t
と する(推奨値は α = 0.001 \alpha = 0.001 α = 0.001 , β 1 = 0.9 \beta_1 = 0.9 β 1 = 0.9 , β 2 = 0.999 \beta_2 = 0.999 β 2 = 0.999 、ε = 10 − 8 \varepsilon = 10^{-8} ε = 1 0 − 8 は 0 0 0 で 割るのを 避ける 定数)。勾配が ずっと 一定値 g g g なら m t = ( 1 − β 1 t ) g m_t = (1 - \beta_1^t)g m t = ( 1 − β 1 t ) g , v t = ( 1 − β 2 t ) g 2 v_t = (1 - \beta_2^t)g^2 v t = ( 1 − β 2 t ) g 2 で、1 − β t 1 - \beta^t 1 − β t で 割る バイアス補正に より m ^ t / v ^ t = g / ∣ g ∣ \hat{m}_t/\sqrt{\hat{v}_t} = g/\lvert g \rvert m ^ t / v ^ t = g / ∣ g ∣ と なる(補正が ないと、推奨値で t = 10 t = 10 t = 10 の 更新が 約 6.5 6.5 6.5 倍に なる)。AdaGrad(Duchi–Hazan–Singer, 2011 年)や RMSProp も 同じ 系統の 方法である。
Adam の 元論文の 凸の 場合の 収束証明には 誤りが あり、Reddi–Kale–Kumar(2018 年)は 収束しない 凸の 例を 示した。区間 [ − 1 , 1 ] [-1, 1] [ − 1 , 1 ] 上で、3 回に 1 回は f t ( x ) = C x f_t(x) = Cx f t ( x ) = C x (C > 2 C > 2 C > 2 )、残りは f t ( x ) = − x f_t(x) = -x f t ( x ) = − x が 順に 現れると、平均 C − 2 3 x \frac{C - 2}{3}x 3 C − 2 x の 最小点は x = − 1 x = -1 x = − 1 なのに、β 1 = 0 \beta_1 = 0 β 1 = 0 , β 2 = 1 / ( 1 + C 2 ) \beta_2 = 1/(1 + C^2) β 2 = 1/ ( 1 + C 2 ) の Adam(ステップ幅 α / t \alpha/\sqrt{t} α / t 、区間への 射影つき)は 最悪の 点 x = 1 x = 1 x = 1 に 近づく(計算機でも 確かめた)。彼らは 確率的な 設定の 例も 与え、修正版 AMSGrad を 提案した。
ヒント
実務では
(1) 学習率は 最も 影響の 大きい 設定で、 R R R , G G G は 普通わからないので、検証用データの 損失を 見ながら 調整し、後半に 小さく していく ことが 多い。(2) 多くの 実装は データを 無作為に 並べ替えて 1 周( エポック )ずつ 使う。これは 非復元抽出で、独立性の 仮定とは 異なる。(3) R R R , G G G は 特徴量の 尺度で 大きく 変わるので、ここでも 標準化が 重要である。
7.3 非凸最適化の 難しさ
凸でない 問題(ニューラルネットワークの 学習など)で 勾配法に 保証できるのは、一般には 停留点への 収束までである。障害は、大域最小点でない 局所最小点(第1章 例 1.15)と 鞍点(第1章 1.5 節)で、鞍点の 近くでは 勾配が 小さいので 反復が 停滞し、「勾配が 小さくなったら 止める」と いう 停止条件も だまされる。
定義 7.8 (狭義の 鞍点) C 2 C^2 C 2 級の 関数 f f f の 停留点 x ∗ x^{\ast} x ∗ で、∇ 2 f ( x ∗ ) \nabla^2 f(x^{\ast}) ∇ 2 f ( x ∗ ) が 負の 固有値を もつ ものを 狭義の 鞍点 (strict saddle point) と いう。
第1章 定理 1.18 より 狭義の 鞍点は 局所最小点でない(この 定義では 局所最大点も 含む)。一方、第1章 例 1.20 の x 2 + y 3 x^2 + y^3 x 2 + y 3 の 原点のように、ヘッセ行列が 半正定値の 鞍点は 狭義の 鞍点でない。
例 7.9 (鞍点での 停滞) f ( x , y ) = cos x + y 2 / 2 f(x, y) = \cos x + y^2/2 f ( x , y ) = cos x + y 2 /2 の 停留点 ( j π , 0 ) (j\pi, 0) ( j π , 0 ) (j ∈ Z j \in \mathbb{Z} j ∈ Z )は、∇ 2 f = diag ( − cos x , 1 ) \nabla^2 f = \operatorname{diag}(-\cos x, 1) ∇ 2 f = diag ( − cos x , 1 ) より j j j が 偶数なら 狭義の 鞍点(値 1 1 1 )、奇数なら 最小点(値 − 1 -1 − 1 )である。ステップ幅 1 / 2 1/2 1/2 の 勾配法 x t + 1 = x t + 1 2 sin x t x_{t+1} = x_t + \frac{1}{2}\sin x_t x t + 1 = x t + 2 1 sin x t , y t + 1 = 1 2 y t y_{t+1} = \frac{1}{2}y_t y t + 1 = 2 1 y t は、初期点 ( 10 − 8 , 1 ) (10^{-8}, 1) ( 1 0 − 8 , 1 ) から 14 回目に 約 ( 2.9 × 10 − 6 , 6.1 × 10 − 5 ) (2.9 \times 10^{-6}, 6.1 \times 10^{-5}) ( 2.9 × 1 0 − 6 , 6.1 × 1 0 − 5 ) で ∥ ∇ f ∥ < 10 − 4 \lVert \nabla f \rVert < 10^{-4} ∥ ∇ f ∥ < 1 0 − 4 と なり、そこで 止めると 鞍点の そばで 止まる(計算機で 確かめた)。 x ↦ x + 1 2 sin x x \mapsto x + \frac{1}{2}\sin x x ↦ x + 2 1 sin x は 狭義単調増加で π Z \pi\mathbb{Z} π Z の 点だけを 動かさないので、区間 ( j π , ( j + 1 ) π ) (j\pi, (j + 1)\pi) ( j π , ( j + 1 ) π ) の 点は π \pi π の 奇数倍の 端点に 向かい、鞍点に 収束するのは x 0 ∈ 2 π Z x_0 \in 2\pi\mathbb{Z} x 0 ∈ 2 π Z の ときだけである。この 現象は 一般に 成り立つ。
定理 7.10 (Lee–Simchowitz–Jordan–Recht, 2016 年)f : R n → R f\colon \mathbb{R}^n \to \mathbb{R} f : R n → R を C 2 C^2 C 2 級で L L L -平滑な 関数、 0 < η < 1 / L 0 < \eta < 1/L 0 < η < 1/ L とし、x ∗ x^{\ast} x ∗ を f f f の 狭義の 鞍点と する。勾配法 x t + 1 = x t − η ∇ f ( x t ) x_{t+1} = x_t - \eta\nabla f(x_t) x t + 1 = x t − η ∇ f ( x t ) が x ∗ x^{\ast} x ∗ に 収束するような 初期点 x 0 x_0 x 0 の 全体は、ルベーグ測度 0 0 0 の 集合( 06-measure-integration 第2章 定義 2.9)である。特に、密度を もつ 分布から x 0 x_0 x 0 を 選べば、 x ∗ x^{\ast} x ∗ に 収束する 確率は 0 0 0 である。
(主張のみ。証明は 力学系の 安定多様体定理に よる。)例 7.9 の f f f は ∥ ∇ 2 f ∥ ≤ 1 \lVert \nabla^2 f \rVert \leq 1 ∥ ∇ 2 f ∥ ≤ 1 なので 1 1 1 -平滑(第2章 定理 2.23)である。
7.4 整数計画
トラックの 台数や「倉庫を 建てるか」のような 決定は、整数で 表す必要が ある。
定義 7.12 (整数計画・線形緩和)線形計画問題に「変数の 一部が 整数」と いう 制約を 加えた 問題を 混合整数計画問題、すべての 変数が 整数なら 整数計画問題 (integer programming problem)、さらに 0 0 0 か 1 1 1 に 限られるなら 0-1 整数計画問題 と いう。整数の 制約を 外した 線形計画問題を 線形緩和 (LP 緩和 , LP relaxation)と いう。
命題 7.13 最小化の 整数計画問題の 最適値を z I P z_{\mathrm{IP}} z IP 、その LP 緩和の 最適値を z L P z_{\mathrm{LP}} z LP と すると z L P ≤ z I P z_{\mathrm{LP}} \leq z_{\mathrm{IP}} z LP ≤ z IP である(最大化なら z L P ≥ z I P z_{\mathrm{LP}} \geq z_{\mathrm{IP}} z LP ≥ z IP )。LP 緩和の 最適解が 整数の 制約を 満たせば、それは 整数計画問題の 最適解である。
証明. 整数計画の 実行可能解は LP 緩和の 実行可能解なので z L P ≤ z I P z_{\mathrm{LP}} \leq z_{\mathrm{IP}} z LP ≤ z IP 。LP 緩和の 最適解 x x x が 整数なら、 x x x は 整数計画で 実行可能で、その 値 z L P z_{\mathrm{LP}} z LP は z I P z_{\mathrm{IP}} z IP 以下だから 最適である。 □ \square □
両者の 差(または 比)を 整数性ギャップ (integrality gap) と いう。
例 7.14 (ナップサック問題:投資案件の 選択)予算 10(百万円)で、4 つの 案件から 実施する ものを 選ぶ。案件 i i i の 費用 w i w_i w i と 見込み利益 v i v_i v i (百万円)は ( w i , v i ) = ( 3 , 12 ) , ( 4 , 9 ) , ( 6 , 13 ) , ( 7 , 9 ) (w_i, v_i) = (3, 12), (4, 9), (6, 13), (7, 9) ( w i , v i ) = ( 3 , 12 ) , ( 4 , 9 ) , ( 6 , 13 ) , ( 7 , 9 ) である。案件 i i i を 選ぶ とき x i = 1 x_i = 1 x i = 1 と すると
maximize 12 x 1 + 9 x 2 + 13 x 3 + 9 x 4 subject to 3 x 1 + 4 x 2 + 6 x 3 + 7 x 4 ≤ 10 , x i ∈ { 0 , 1 } \text{maximize} \quad 12x_1 + 9x_2 + 13x_3 + 9x_4 \qquad \text{subject to} \quad 3x_1 + 4x_2 + 6x_3 + 7x_4 \leq 10, \quad x_i \in \lbrace 0, 1 \rbrace maximize 12 x 1 + 9 x 2 + 13 x 3 + 9 x 4 subject to 3 x 1 + 4 x 2 + 6 x 3 + 7 x 4 ≤ 10 , x i ∈ { 0 , 1 }
と なる(容量 W W W の 袋に 重さ w i w_i w i ・価値 v i v_i v i の 品物を 詰める 形なので 0-1 ナップサック問題 , knapsack problem と いう)。16 通りを 調べると 最適解は 案件 1, 3(費用 9、利益 25)だが、効率 v i / w i = 4 , 2.25 , 2.17 , 1.29 v_i/w_i = 4, 2.25, 2.17, 1.29 v i / w i = 4 , 2.25 , 2.17 , 1.29 の 高い順に 入るだけ選ぶ 貪欲法 は 案件 1, 2 で 利益 21 にと どまる。LP 緩和( 0 ≤ x i ≤ 1 0 \leq x_i \leq 1 0 ≤ x i ≤ 1 )の 最適解は 次の 命題 7.15 より ( 1 , 1 , 1 / 2 , 0 ) (1, 1, 1/2, 0) ( 1 , 1 , 1/2 , 0 ) (値 27.5 27.5 27.5 )で、x 3 x_3 x 3 を 切り 捨てると 利益 21、切り上げると 実行不能である。
命題 7.15 (ナップサック問題の LP 緩和)v i , w i > 0 v_i, w_i > 0 v i , w i > 0 とし、品物を v 1 / w 1 ≥ v 2 / w 2 ≥ ⋯ ≥ v n / w n v_1/w_1 \geq v_2/w_2 \geq \cdots \geq v_n/w_n v 1 / w 1 ≥ v 2 / w 2 ≥ ⋯ ≥ v n / w n の 順に 並べ、 w 1 + ⋯ + w n > W ≥ 0 w_1 + \cdots + w_n > W \geq 0 w 1 + ⋯ + w n > W ≥ 0 と する。 w 1 + ⋯ + w k > W w_1 + \cdots + w_k > W w 1 + ⋯ + w k > W と なる 最小の k k k を とり、 x ˉ i = 1 \bar{x}_i = 1 x ˉ i = 1 (i < k i < k i < k ), x ˉ k = ( W − ∑ i < k w i ) / w k \bar{x}_k = \bigl(W - \sum_{i < k} w_i\bigr)/w_k x ˉ k = ( W − ∑ i < k w i ) / w k , x ˉ i = 0 \bar{x}_i = 0 x ˉ i = 0 (i > k i > k i > k )と おく。この とき x ˉ \bar{x} x ˉ は LP 緩和「∑ i w i x i ≤ W \sum_i w_ix_i \leq W ∑ i w i x i ≤ W , 0 ≤ x i ≤ 1 0 \leq x_i \leq 1 0 ≤ x i ≤ 1 のもとで ∑ i v i x i \sum_i v_ix_i ∑ i v i x i を 最大化」の 最適解である。
証明. k k k の 選び方から 0 ≤ x ˉ k < 1 0 \leq \bar{x}_k < 1 0 ≤ x ˉ k < 1 , ∑ i w i x ˉ i = W \sum_i w_i\bar{x}_i = W ∑ i w i x ˉ i = W で、x ˉ \bar{x} x ˉ は 実行可能である。 r = v k / w k > 0 r = v_k/w_k > 0 r = v k / w k > 0 と おくと、 i < k i < k i < k では v i − r w i ≥ 0 v_i - rw_i \geq 0 v i − r w i ≥ 0 、i ≥ k i \geq k i ≥ k では v i − r w i ≤ 0 v_i - rw_i \leq 0 v i − r w i ≤ 0 なので、任意の 実行可能解 x x x に ついて( 0 ≤ x i ≤ 1 0 \leq x_i \leq 1 0 ≤ x i ≤ 1 と ∑ i w i x i ≤ W \sum_i w_ix_i \leq W ∑ i w i x i ≤ W より)
∑ i v i x i = ∑ i ( v i − r w i ) x i + r ∑ i w i x i ≤ ∑ i < k ( v i − r w i ) + r W = ∑ i < k v i + r ( W − ∑ i < k w i ) = ∑ i v i x ˉ i \sum_i v_ix_i = \sum_i (v_i - rw_i)x_i + r\sum_i w_ix_i \leq \sum_{i < k}(v_i - rw_i) + rW = \sum_{i < k} v_i + r\Bigl(W - \sum_{i < k} w_i\Bigr) = \sum_i v_i\bar{x}_i i ∑ v i x i = i ∑ ( v i − r w i ) x i + r i ∑ w i x i ≤ i < k ∑ ( v i − r w i ) + r W = i < k ∑ v i + r ( W − i < k ∑ w i ) = i ∑ v i x ˉ i
である。□ \square □
例 7.16 (施設配置)倉庫の 候補地 j j j (建設費 f j f_j f j )と 顧客 i i i (倉庫 j j j からの 配送費 c i j c_{ij} c ij )が ある。倉庫 j j j を 建てる とき y j = 1 y_j = 1 y j = 1 、顧客 i i i を 倉庫 j j j に 割り当てる とき x i j = 1 x_{ij} = 1 x ij = 1 と すると
minimize ∑ j f j y j + ∑ i , j c i j x i j subject to ∑ j x i j = 1 ( ∀ i ) , x i j ≤ y j ( ∀ i , j ) , x i j , y j ∈ { 0 , 1 } \text{minimize} \quad \sum_{j} f_jy_j + \sum_{i, j} c_{ij}x_{ij} \qquad \text{subject to} \quad \sum_{j} x_{ij} = 1 \ (\forall i), \quad x_{ij} \leq y_j \ (\forall i, j), \quad x_{ij}, y_j \in \lbrace 0, 1 \rbrace minimize j ∑ f j y j + i , j ∑ c ij x ij subject to j ∑ x ij = 1 ( ∀ i ) , x ij ≤ y j ( ∀ i , j ) , x ij , y j ∈ { 0 , 1 }
と なる。制約 x i j ≤ y j x_{ij} \leq y_j x ij ≤ y j を ∑ i x i j ≤ m y j \sum_i x_{ij} \leq my_j ∑ i x ij ≤ m y j (m m m は 顧客数)に まとめても 0-1 解は 変わらないが、LP 緩和は 弱くなる。倉庫 2 つ( f 1 = f 2 = 10 f_1 = f_2 = 10 f 1 = f 2 = 10 )、顧客 2 人(c 11 = c 22 = 0 c_{11} = c_{22} = 0 c 11 = c 22 = 0 , c 12 = c 21 = 20 c_{12} = c_{21} = 20 c 12 = c 21 = 20 )では、整数計画の 最適値は 両方を 建てる 20 20 20 で、元の 形の LP 緩和も 20 20 20 だが(y 1 ≥ x 11 = 1 − x 12 y_1 \geq x_{11} = 1 - x_{12} y 1 ≥ x 11 = 1 − x 12 より 10 y 1 + 20 x 12 ≥ 10 10y_1 + 20x_{12} \geq 10 10 y 1 + 20 x 12 ≥ 10 、同様に 10 y 2 + 20 x 21 ≥ 10 10y_2 + 20x_{21} \geq 10 10 y 2 + 20 x 21 ≥ 10 )、まとめた 形では y = ( 1 / 2 , 1 / 2 ) y = (1/2, 1/2) y = ( 1/2 , 1/2 ) , x 11 = x 22 = 1 x_{11} = x_{22} = 1 x 11 = x 22 = 1 が 値 10 10 10 を 与え( 10 ( y 1 + y 2 ) ≥ 5 ∑ i , j x i j = 10 10(y_1 + y_2) \geq 5\sum_{i, j}x_{ij} = 10 10 ( y 1 + y 2 ) ≥ 5 ∑ i , j x ij = 10 より 最適)、下界が 半分に なる。
例 7.17 (勤務シフト)1 日を 6 つの 時間帯に 分け、時間帯 t t t には d t d_t d t 人以上が 必要と する。勤務は 連続する 3 つの 時間帯を 担当し、開始は 時間帯 1〜4 の いずれかと する。時間帯 s s s に 始まる 勤務の 人数を x s x_s x s と すると、総人数の 最小化は
minimize x 1 + x 2 + x 3 + x 4 subject to A x ≥ d , x ∈ Z ≥ 0 4 , A = ( 1 0 0 0 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 ) \text{minimize} \quad x_1 + x_2 + x_3 + x_4 \qquad \text{subject to} \quad Ax \geq d, \quad x \in \mathbb{Z}_{\geq 0}^4, \qquad A = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 1 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 \end{pmatrix} minimize x 1 + x 2 + x 3 + x 4 subject to A x ≥ d , x ∈ Z ≥ 0 4 , A = 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1
である(A A A の ( t , s ) (t, s) ( t , s ) 成分は、勤務 s s s が 時間帯 t t t を 担当する とき 1 1 1 )。d = ( 2 , 4 , 5 , 6 , 3 , 2 ) d = (2, 4, 5, 6, 3, 2) d = ( 2 , 4 , 5 , 6 , 3 , 2 ) では、LP 緩和を 単体法で 解くと 最適値 8 8 8 の 整数解(たとえば ( 2 , 3 , 0 , 3 ) (2, 3, 0, 3) ( 2 , 3 , 0 , 3 ) )が 得られ(計算機で 確かめた)、時間帯 1 と 4 の 制約の 和 x 1 + x 2 + x 3 + x 4 ≥ 8 x_1 + x_2 + x_3 + x_4 \geq 8 x 1 + x 2 + x 3 + x 4 ≥ 8 より 整数計画の 最適解でもある。これは 偶然ではない(定理 7.19、問題 7.3)。
定義 7.18 (全単模行列)整数行列 A A A の すべての 正方部分 行列(行と 列を 同じ数だけ 選んで 作る 行列)の 行列式が 0 , 1 , − 1 0, 1, -1 0 , 1 , − 1 の いずれかである とき、 A A A は 全単模 (totally unimodular) であると いう。特に A A A の 成分は 0 , ± 1 0, \pm 1 0 , ± 1 の いずれかである。
定理 7.19 (全単模性と 整数性) A ∈ R m × n A \in \mathbb{R}^{m \times n} A ∈ R m × n を 全単模行列、 b ∈ Z m b \in \mathbb{Z}^m b ∈ Z m と する。
P = { x ∣ A x = b , x ≥ 0 } P = \lbrace x \mid Ax = b,\ x \geq 0 \rbrace P = { x ∣ A x = b , x ≥ 0 } の 頂点は すべて 整数ベクトルである。
Q = { x ∣ A x ≤ b , x ≥ 0 } Q = \lbrace x \mid Ax \leq b,\ x \geq 0 \rbrace Q = { x ∣ A x ≤ b , x ≥ 0 } の 頂点も すべて 整数ベクトルである。
したがって、P P P や Q Q Q の 上で 一次関数を 最小化(最大化)する 線形計画問題が 最適解を もてば 整数の 最適解が あり、それは 整数の 制約を 加えた 整数計画問題の 最適解でもある。
証明. (1) x x x を P P P の 頂点、 S = supp x S = \operatorname{supp} x S = supp x と する( S = ∅ S = \emptyset S = ∅ なら x = 0 x = 0 x = 0 )。第3章 定理 3.8 より 列 a j a_j a j (j ∈ S j \in S j ∈ S )は 一次独立なので、これらの 列からなる 行列の ∣ S ∣ \lvert S \rvert ∣ S ∣ 個の 行を 選んで、 A A A の 正則な 正方部分 行列 M M M を 作れる。 j ∉ S j \notin S j ∈ / S では x j = 0 x_j = 0 x j = 0 だから M x S = b ′ Mx_S = b' M x S = b ′ (b ′ b' b ′ は b b b の 対応する 成分)で、 det M = ± 1 \det M = \pm 1 det M = ± 1 と クラメルの 公式( 02-linear-algebra 第4章 定理 4.30)より x S x_S x S は 整数ベクトルである。(2) x ↦ ( x , b − A x ) x \mapsto (x, b - Ax) x ↦ ( x , b − A x ) は Q Q Q から P ′ = { ( x , s ) ∣ A x + s = b , x , s ≥ 0 } P' = \lbrace (x, s) \mid Ax + s = b,\ x, s \geq 0 \rbrace P ′ = {( x , s ) ∣ A x + s = b , x , s ≥ 0 } への 全単射で、逆写像とともに 凸結合を 保つので、頂点を 頂点に 写す。 [ A I ] [A\ I] [ A I ] も 全単模なので(正方部分 行列の I I I から 来た列は 選んだ 行の 中に 1 1 1 を 高々 1 つしかもたず、その 列での 余因子展開を 繰り返すと、行列式は 0 0 0 , ± 1 \pm 1 ± 1 か A A A の 正方部分 行列の 行列式の ± 1 \pm 1 ± 1 倍に なる)、(1) を P ′ P' P ′ に 使えばよい。最後の 主張は 第3章 定理 3.11( Q Q Q は (2) の 変換で 標準形に 直す)と 命題 7.13 に よる。 □ \square □
逆に、整数行列 A A A に ついて、すべての 整数ベクトル b b b で Q Q Q の 頂点が 整数なら A A A は 全単模である(ホフマン–クラスカル, 1956 年。Schrijver, Theory of Linear and Integer Programming を 参照)。全単模性は 次の 形で 確かめる ことが 多い。
命題 7.20 各列に + 1 +1 + 1 が 高々 1 個、 − 1 -1 − 1 が 高々 1 個あり、他の 成分が 0 0 0 である 行列は 全単模である。
証明. 正方部分 行列 B B B の 大きさに ついての 帰納法に よる( B B B も 同じ 性質を もつ)。大きさ 1 なら 成分は 0 , ± 1 0, \pm 1 0 , ± 1 である。B B B に 零ベクトルの 列が あれば det B = 0 \det B = 0 det B = 0 。成分が 1 つだけの 列が あれば、その 列で 展開して 大きさが 1 小さい 部分 行列の 行列式の ± 1 \pm 1 ± 1 倍に なる。どちらでもなければ、すべての 列が + 1 +1 + 1 と − 1 -1 − 1 を 1 つずつもつので、B B B の すべての 行を 足すと 0 0 0 に なり det B = 0 \det B = 0 det B = 0 。□ \square □
この 命題から 次の 行列が 全単模と わかる。(i) 有向グラフの 接続行列(行が 頂点、列が 辺で、辺 ( u , v ) (u, v) ( u , v ) の 列は u u u の 行が + 1 +1 + 1 、v v v の 行が − 1 -1 − 1 )。第1章 例 1.7 の 最短路問題の 制約は この 形なので、 x e ≥ 0 x_e \geq 0 x e ≥ 0 に ゆるめた 線形計画問題は、 t t t に 到達できれば 整数の 最適な 頂点を もつ( c e ≥ 0 c_e \geq 0 c e ≥ 0 より 最適解が ある)。(ii) 輸送問題・ 割当問題の 制約行列(第3章 3.9 節)。店舗の 行に − 1 -1 − 1 を 掛ければ(行列式は 符号しか 変わらない)命題 7.20 の 形に なる。(iii) 例 7.17 のように 各列の 1 1 1 が 連続した 行に 並ぶ 0 0 0 -1 1 1 行列(問題 7.3)。一方、三角形の 頂点と 辺の 行列は、行が ( 1 , 1 , 0 ) , ( 1 , 0 , 1 ) , ( 0 , 1 , 1 ) (1, 1, 0), (1, 0, 1), (0, 1, 1) ( 1 , 1 , 0 ) , ( 1 , 0 , 1 ) , ( 0 , 1 , 1 ) で 行列式が − 2 -2 − 2 であり、全単模でない。実際、頂点を 共有しない 辺の 組( マッチング )の 辺数の 最大化で、整数解の 最適値は 1 1 1 だが、LP 緩和は すべての 変数を 1 / 2 1/2 1/2 と して 3 / 2 3/2 3/2 を 与える。
7.5 分枝限定法と 切除平面法
分枝限定法 (branch and bound。Land–Doig, 1960 年) は、変数の 範囲で 問題を 分け( 分枝 )、LP 緩和の 値で 見込みの ない 場合を 捨てる( 限定 )。最大化の 整数計画問題で、各変数に 整数の 上下限 l j ≤ x j ≤ u j l_j \leq x_j \leq u_j l j ≤ x j ≤ u j が 制約と して 含まれると する。それまでに 見つけた 最良の 整数解を 暫定解、その 値を z ∗ z^{\ast} z ∗ (はじめは − ∞ -\infty − ∞ )とし、部分問題(節点 )の 集合を 元の 問題だけから 始めて、空に なるまで 節点を 1 つ取り出して LP 緩和を 解き、次のように 処理する。
実行不能なら 捨てる。
最適値が z ∗ z^{\ast} z ∗ 以下なら 捨てる(この 節点の 整数解は 暫定解より 良くならない)。
最適解 x ˉ \bar{x} x ˉ が 整数なら、 x ˉ \bar{x} x ˉ を 新しい 暫定解と して 捨てる(2 に 当たらないので z ∗ z^{\ast} z ∗ より 良い)。
それ以外なら、値が 整数でない x j x_j x j を 1 つ 選び、制約 x j ≤ ⌊ x ˉ j ⌋ x_j \leq \lfloor \bar{x}_j \rfloor x j ≤ ⌊ x ˉ j ⌋ を 加えた 節点と x j ≥ ⌈ x ˉ j ⌉ x_j \geq \lceil \bar{x}_j \rceil x j ≥ ⌈ x ˉ j ⌉ を 加えた 節点を 作る。
命題 7.21 (分枝限定法の 正しさ)上の 設定で 整数計画問題が 実行可能ならば、分枝限定法は(節点を どの 順に 取り出しても)有限回で 終了し、終了時の 暫定解は 最適解である。
証明. 有限性:手順 4 では、その 節点での 上下限 l j , u j l_j, u_j l j , u j に ついて l j < x ˉ j < u j l_j < \bar{x}_j < u_j l j < x ˉ j < u j で x ˉ j \bar{x}_j x ˉ j は 整数でないから、 l j ≤ ⌊ x ˉ j ⌋ ≤ u j − 1 l_j \leq \lfloor \bar{x}_j \rfloor \leq u_j - 1 l j ≤ ⌊ x ˉ j ⌋ ≤ u j − 1 , u j ≥ ⌈ x ˉ j ⌉ ≥ l j + 1 u_j \geq \lceil \bar{x}_j \rceil \geq l_j + 1 u j ≥ ⌈ x ˉ j ⌉ ≥ l j + 1 であり、どちらの 子でも ∑ j ( u j − l j ) \sum_j (u_j - l_j) ∑ j ( u j − l j ) (≥ 0 \geq 0 ≥ 0 )が 1 以上 減る。よって 木の 深さは 元の 問題の ∑ j ( u j − l j ) \sum_j (u_j - l_j) ∑ j ( u j − l j ) 以下で、節点は 有限個である。正しさ: 最適解 x ∗ x^{\ast} x ∗ を 1 つとり、「暫定解が 最適でない間は、 x ∗ x^{\ast} x ∗ を 含む 節点が 未処理の 集合に ある」ことを 示す。初めは 根が x ∗ x^{\ast} x ∗ を 含む。 x ∗ x^{\ast} x ∗ を 含む 節点を 処理する とき、その LP 緩和の 最適値は x ∗ x^{\ast} x ∗ の 値以上なので、1 は 起こらない。2 なら z ∗ z^{\ast} z ∗ は x ∗ x^{\ast} x ∗ の 値以上で 暫定解は 最適である。3 なら x ˉ \bar{x} x ˉ の 値は x ∗ x^{\ast} x ∗ の 値以上で、最適解 x ˉ \bar{x} x ˉ が 暫定解に なる。4 なら x j ∗ x^{\ast}_j x j ∗ は 整数なので x ∗ x^{\ast} x ∗ は どちらかの 子に 含まれる。終了時には 未処理の 節点が ないので、暫定解は 最適である。 □ \square □
例 7.22 (例 7.14 を 分枝限定法で 解く)各節点の LP 緩和は、値を 固定した 変数を 除いた 品物と 残りの 予算に ついての 同じ形の 問題なので、命題 7.15 で 計算できる(固定した 品物の 費用が 予算を 超えれば 実行不能、残りの 品物が すべて 入れば 全部 1 1 1 )。新しく 作った 節点から 先に、 x j = 1 x_j = 1 x j = 1 の 節点を 先に 調べる(深さ優先)と、次の 木が できる。
根 x = (1, 1, 1/2, 0) 上界 27.5 → x3 で分枝
├ x3 = 1 x = (1, 1/4, 1, 0) 上界 27.25 → x2 で分枝
│ ├ x2 = 1 x = (0, 1, 1, 0) 値 22 の整数解 → 暫定解 22
│ └ x2 = 0 x = (1, 0, 1, 1/7) 上界 184/7 ≈ 26.29 → x4 で分枝
│ ├ x4 = 1 実行不能(費用 6 + 7 > 10)
│ └ x4 = 0 x = (1, 0, 1, 0) 値 25 の整数解 → 暫定解を 25 に更新
└ x3 = 0 x = (1, 1, 0, 3/7) 上界 174/7 ≈ 24.86 < 25 → 限定により打ち切り
たとえば 節点「 x 3 = 1 x_3 = 1 x 3 = 1 」では、残りの 予算 4 で 案件 1 を 入れ、残り 1 で 案件 2 を 1 / 4 1/4 1/4 入れて、上界 13 + 12 + 9 / 4 = 27.25 13 + 12 + 9/4 = 27.25 13 + 12 + 9/4 = 27.25 を 得る(各節点は 計算機でも 確かめた)。打ち切りの 三つの 理由が すべて 現れている。
LP 緩和 その ものを 強める こともできる。すべての 整数解を 満たし、LP 緩和の 分数解を 満たさない 不等式を 切除平面 (cutting plane) と いう(Gomory, 1958 年)。次の 丸めは、切除平面を 作る 基本的な 方法である。
命題 7.23 (Chvátal–Gomory の 丸め)実行可能解が すべて 非負の 整数ベクトルで、すべての 実行可能解が ∑ j a j x j ≤ β \sum_j a_jx_j \leq \beta ∑ j a j x j ≤ β を 満たすならば、すべての 実行可能解は ∑ j ⌊ a j ⌋ x j ≤ ⌊ β ⌋ \sum_j \lfloor a_j \rfloor x_j \leq \lfloor \beta \rfloor ∑ j ⌊ a j ⌋ x j ≤ ⌊ β ⌋ も 満たす。
証明. x ≥ 0 x \geq 0 x ≥ 0 より ∑ j ⌊ a j ⌋ x j ≤ ∑ j a j x j ≤ β \sum_j \lfloor a_j \rfloor x_j \leq \sum_j a_jx_j \leq \beta ∑ j ⌊ a j ⌋ x j ≤ ∑ j a j x j ≤ β で、左辺は 整数だから ⌊ β ⌋ \lfloor \beta \rfloor ⌊ β ⌋ 以下である。□ \square □
例 7.24 (切除平面)例 7.14 で、予算の 制約の 1 / 4 1/4 1/4 倍と x 1 ≤ 1 x_1 \leq 1 x 1 ≤ 1 の 1 / 4 1/4 1/4 倍を 足すと x 1 + x 2 + 3 2 x 3 + 7 4 x 4 ≤ 11 4 x_1 + x_2 + \frac{3}{2}x_3 + \frac{7}{4}x_4 \leq \frac{11}{4} x 1 + x 2 + 2 3 x 3 + 4 7 x 4 ≤ 4 11 で、命題 7.23 より x 1 + x 2 + x 3 + x 4 ≤ 2 x_1 + x_2 + x_3 + x_4 \leq 2 x 1 + x 2 + x 3 + x 4 ≤ 2 を 得る。LP 緩和の 解 ( 1 , 1 , 1 / 2 , 0 ) (1, 1, 1/2, 0) ( 1 , 1 , 1/2 , 0 ) は これを 破る。この 不等式を 加えた LP 緩和では
12 x 1 + 9 x 2 + 13 x 3 + 9 x 4 ≤ 12 ( x 1 + x 2 + x 3 + x 4 ) + x 3 ≤ 24 + 1 = 25 12x_1 + 9x_2 + 13x_3 + 9x_4 \leq 12(x_1 + x_2 + x_3 + x_4) + x_3 \leq 24 + 1 = 25 12 x 1 + 9 x 2 + 13 x 3 + 9 x 4 ≤ 12 ( x 1 + x 2 + x 3 + x 4 ) + x 3 ≤ 24 + 1 = 25
で、等号は x = ( 1 , 0 , 1 , 0 ) x = (1, 0, 1, 0) x = ( 1 , 0 , 1 , 0 ) の ときに 限るので、分枝せずに 最適性が わかる(命題 7.13)。実際の ソルバーは 両者を 組み合わせた 分枝カット法 (branch and cut) を 使う。
ヒント
実務では
整数計画ソルバーは、暫定解の 値と、未処理の 節点の LP 緩和から 得られる 最適値の 限界との 相対的な 差( ギャップ )を 報告し、それが 1% 以下に なったら 打ち切る、と いう 使い方が 多い。速く 解けるかは 定式化で 大きく 変わる(例 7.16)。「十分 大きな 定数 M M M 」で 条件を 表す定式化(big-M)で M M M を 必要以上に 大きく すると、緩和が 弱くなり数値誤差も 起きやすい。
7.6 最短路と ダイクストラ法
この 節以降、 G = ( V , E ) G = (V, E) G = ( V , E ) は グラフを 表す(7.1 節の G G G や 期待値の E E E とは 関係ない)。有向グラフの 各辺 ( u , v ) (u, v) ( u , v ) に 重み c ( u , v ) c(u, v) c ( u , v ) が あり、始点 s s s が 与えられていると する。道(同じ 頂点を 二度 通らない 辺の 列)の 長さを 辺の 重みの 和とし、 s s s から v v v への 道の 長さの 最小値を dist ( v ) \operatorname{dist}(v) dist ( v ) (道が なければ ∞ \infty ∞ )と 書く。無向グラフは 各辺を 両向きの 有向辺 2 本と みなす。
ダイクストラ法 (Dijkstra, 1959 年)は、各頂点に 暫定的な 距離 d ( v ) d(v) d ( v ) を もたせ、確定した 頂点の 集合 S S S を 1 つずつ 増や していく。
d ( s ) = 0 d(s) = 0 d ( s ) = 0 、v ≠ s v \neq s v = s では d ( v ) = ∞ d(v) = \infty d ( v ) = ∞ 、S = ∅ S = \emptyset S = ∅ と する。
S ≠ V S \neq V S = V である間、S S S に 属さない 頂点の うち d ( u ) d(u) d ( u ) が 最小の u u u を S S S に 加え、 u u u から 出る 各辺 ( u , v ) (u, v) ( u , v ) に ついて d ( u ) + c ( u , v ) < d ( v ) d(u) + c(u, v) < d(v) d ( u ) + c ( u , v ) < d ( v ) なら d ( v ) = d ( u ) + c ( u , v ) d(v) = d(u) + c(u, v) d ( v ) = d ( u ) + c ( u , v ) と 更新する( v v v の 直前の 頂点を u u u と 記録する)。
定理 7.25 (ダイクストラ法の 正しさ)すべての 辺の 重みが 非負ならば、頂点 u u u が S S S に 加えられる 時点で d ( u ) = dist ( u ) d(u) = \operatorname{dist}(u) d ( u ) = dist ( u ) である。したがって 終了時には すべての 頂点で d ( v ) = dist ( v ) d(v) = \operatorname{dist}(v) d ( v ) = dist ( v ) であり、記録した 直前の 頂点を たどれば 最短路が 得られる。
証明. まず、常に d ( v ) ≥ dist ( v ) d(v) \geq \operatorname{dist}(v) d ( v ) ≥ dist ( v ) である。d ( v ) < ∞ d(v) < \infty d ( v ) < ∞ なら d ( v ) d(v) d ( v ) は s s s から v v v への ある 歩道(頂点の 重複を 許す辺の 列)の 長さで、重みが 非負なので 閉路を 除いても 長さは 増えず、ある 道の 長さ以上だからである。
d ( u ) ≠ dist ( u ) d(u) \neq \operatorname{dist}(u) d ( u ) = dist ( u ) の まま S S S に 加えられる 最初の 頂点を u u u と すると、 d ( u ) > dist ( u ) d(u) > \operatorname{dist}(u) d ( u ) > dist ( u ) だから dist ( u ) < ∞ \operatorname{dist}(u) < \infty dist ( u ) < ∞ , u ≠ s u \neq s u = s である。s s s から u u u への 最短路 P P P を とる。 u u u を 選んだ 時点で s ∈ S s \in S s ∈ S , u ∉ S u \notin S u ∈ / S なので、P P P 上で 最初に 現れる S S S の 外の 頂点 y y y と、その 直前の 頂点 x ∈ S x \in S x ∈ S が ある。 x x x は u u u より 前に 加えられたので d ( x ) = dist ( x ) d(x) = \operatorname{dist}(x) d ( x ) = dist ( x ) で、その とき辺 ( x , y ) (x, y) ( x , y ) を 調べたから( その 後 d ( y ) d(y) d ( y ) は 増えない)
d ( y ) ≤ dist ( x ) + c ( x , y ) ≤ ( P の s から y までの長さ ) ≤ ( P の長さ ) = dist ( u ) < d ( u ) d(y) \leq \operatorname{dist}(x) + c(x, y) \leq (P \text{ の } s \text{ から } y \text{ までの長さ}) \leq (P \text{ の長さ}) = \operatorname{dist}(u) < d(u) d ( y ) ≤ dist ( x ) + c ( x , y ) ≤ ( P の s から y までの長さ ) ≤ ( P の長さ ) = dist ( u ) < d ( u )
である。2 番目の 不等号は P P P の s s s から x x x までの 長さが dist ( x ) \operatorname{dist}(x) dist ( x ) 以上であることに、3 番目の 不等号は P P P の y y y から u u u までの 長さが 非負であることに よる( 重みの 非負性は ここで 使う )。一方、u u u は S S S の 外で d d d が 最小だから d ( u ) ≤ d ( y ) d(u) \leq d(y) d ( u ) ≤ d ( y ) であり、矛盾する。最後に、v v v の 直前の 頂点と して 記録された u u u は v v v より 先に S S S に 加えられ、 d ( v ) = d ( u ) + c ( u , v ) d(v) = d(u) + c(u, v) d ( v ) = d ( u ) + c ( u , v ) を 満たすので、直前の 頂点を s s s まで たどると 長さ d ( v ) d(v) d ( v ) の 道が 得られる。 □ \square □
例 7.26 (負の 重みが あると 誤る)辺 s → a s \to a s → a (重み 2)、s → b s \to b s → b (3)、b → a b \to a b → a (− 2 -2 − 2 )、a → t a \to t a → t (2)では、ダイクストラ法は a a a を d ( a ) = 2 d(a) = 2 d ( a ) = 2 で 確定して d ( t ) = 4 d(t) = 4 d ( t ) = 4 と する。次に b b b を 加えると d ( a ) d(a) d ( a ) は 1 1 1 に 下がるが、 a a a から 出る 辺は 調べ直されず、 t t t は d ( t ) = 4 d(t) = 4 d ( t ) = 4 で 確定する。実際は s → b → a → t s \to b \to a \to t s → b → a → t の 長さ 3 3 3 が 最短である(証明の u = a u = a u = a , y = b y = b y = b で、y y y から u u u までの 長さ − 2 -2 − 2 が 負なので 3 番目の 不等号が 崩れる)。負の 閉路が なければ、ベルマン–フォード法が O ( ∣ V ∣ ∣ E ∣ ) O(\lvert V \rvert\lvert E \rvert) O (∣ V ∣ ∣ E ∣) 時間で 最短路を 求める。
例 7.27 (道路網)拠点 s , a , b , c , d , t s, a, b, c, d, t s , a , b , c , d , t を 結ぶ 道路(両方向に 通れる)の 所要時間が 次の とおりと する(辺 { u , v } \lbrace u, v \rbrace { u , v } を u v uv uv と 書く)。
道路
s a sa s a
s b sb s b
s c sc sc
a b ab ab
a c ac a c
b d bd b d
c d cd c d
c t ct c t
d t dt d t
所要時間
4
2
7
1
5
9
3
6
8
s s s からの ダイクストラ法は s s s (0), b b b (2), a a a (3), c c c (7), d d d (10), t t t (13)の 順に 頂点を 確定し、その 途中で d ( a ) d(a) d ( a ) は 4 4 4 から b b b 経由の 3 3 3 に、d ( d ) d(d) d ( d ) は 11 11 11 から c c c 経由の 10 10 10 に 更新される。最短路は s → b → a s \to b \to a s → b → a (3)、s → c → d s \to c \to d s → c → d (10)、s → c → t s \to c \to t s → c → t (13)などである。
答えが 正しい ことは、アルゴリズムを 信用しなくても 確かめられる。
命題 7.28 (最短路の 証明書)重みは 任意の 実数で よい。 p : V → R p\colon V \to \mathbb{R} p : V → R が p ( s ) = 0 p(s) = 0 p ( s ) = 0 と、すべての 辺 ( u , v ) (u, v) ( u , v ) に ついて p ( v ) ≤ p ( u ) + c ( u , v ) p(v) \leq p(u) + c(u, v) p ( v ) ≤ p ( u ) + c ( u , v ) を 満たすならば、 s s s から v v v への どの 道の 長さも p ( v ) p(v) p ( v ) 以上である。したがって 長さ p ( v ) p(v) p ( v ) の 道が あれば、それは 最短路である。
証明. 道 s = v 0 , v 1 , … , v k = v s = v_0, v_1, \dots, v_k = v s = v 0 , v 1 , … , v k = v に ついて ∑ i = 1 k c ( v i − 1 , v i ) ≥ ∑ i = 1 k ( p ( v i ) − p ( v i − 1 ) ) = p ( v ) − p ( s ) = p ( v ) \sum_{i=1}^{k} c(v_{i-1}, v_i) \geq \sum_{i=1}^{k}\bigl(p(v_i) - p(v_{i-1})\bigr) = p(v) - p(s) = p(v) ∑ i = 1 k c ( v i − 1 , v i ) ≥ ∑ i = 1 k ( p ( v i ) − p ( v i − 1 ) ) = p ( v ) − p ( s ) = p ( v ) 。□ \square □
重みが 非負なら、ダイクストラ法の 最終的な d d d は(s s s から 到達できる 頂点の 上で)この 条件を 満たす(辺 ( u , v ) (u, v) ( u , v ) を 調べた後、 d ( u ) d(u) d ( u ) は 変わらず d ( v ) d(v) d ( v ) は 増えない)。 y = − p y = -p y = − p は 7.4 節 (i) の 線形計画の 双対問題(第3章 定義 3.24)の 実行可能解であり、命題 7.28 は 弱双対定理(第3章 定理 3.25)に ほかならない。
7.7 最小全域木と 貪欲法
すべての 拠点を 通信回線で 結びたい。回線を 引ける 区間と その 費用が 与えられた とき、すべての 拠点が つながる回線の 組で 費用の 合計が 最小の ものを 求める。
連結な 無向グラフ G = ( V , E ) G = (V, E) G = ( V , E ) と 辺の 重み w ( e ) w(e) w ( e ) を 考える。閉路を もたない 連結な グラフを 木 (tree)、すべての 頂点を 結ぶ 木を なす E E E の 部分集合を 全域木 (spanning tree)、重みの 和が 最小の 全域木を 最小全域木 (minimum spanning tree) と いう(重みが 正なら、すべての 頂点を つなぐ 辺の 組で 重み最小の ものは 全域木である。閉路の 辺を 1 本除けるからである)。次の 基本的な 事実を 使う(証明は Korte–Vygen, Combinatorial Optimization などを 参照):頂点数 n n n の 木の 辺は n − 1 n - 1 n − 1 本で、どの 2 頂点もただ 一つの 道で 結ばれる。全域木 T T T に T T T の 外の 辺 e e e を 加えると e e e を 含む 閉路が ちょうど 1 つでき、その 閉路の 任意の 辺を 除くと 再び全域木に なる。
頂点の 集合 S S S (∅ ≠ S ≠ V \emptyset \neq S \neq V ∅ = S = V )に ついて、端点の 一方が S S S 、他方が V ∖ S V \setminus S V ∖ S に ある 辺を、 S S S を またぐ 辺と いう。
補題 7.29 (カット性質, cut property)F F F を ある 最小全域木に 含まれる 辺の 集合、 S S S を F F F の どの 辺も またが ない 頂点の 集合( ∅ ≠ S ≠ V \emptyset \neq S \neq V ∅ = S = V )とし、e e e を S S S を またぐ 辺の うち重みが 最小の ものとする。この とき F ∪ { e } F \cup \lbrace e \rbrace F ∪ { e } も ある 最小全域木に 含まれる。
証明. F ⊂ T F \subset T F ⊂ T と なる 最小全域木 T T T を とる。 e ∈ T e \in T e ∈ T なら 終わり。そうでなければ T ∪ { e } T \cup \lbrace e \rbrace T ∪ { e } は e e e を 含むただ 一つの 閉路 Z Z Z を もつ。 Z Z Z から e e e を 除いた 部分は、 S S S の 点と V ∖ S V \setminus S V ∖ S の 点を 結ぶ 道なので、 S S S を またぐ 辺 f ≠ e f \neq e f = e を 含む。 f ∈ T f \in T f ∈ T で、F F F の 辺は S S S を またが ないので f ∉ F f \notin F f ∈ / F 。T ′ = ( T ∪ { e } ) ∖ { f } T' = (T \cup \lbrace e \rbrace) \setminus \lbrace f \rbrace T ′ = ( T ∪ { e }) ∖ { f } は 全域木で、 e e e の 最小性より w ( T ′ ) = w ( T ) + w ( e ) − w ( f ) ≤ w ( T ) w(T') = w(T) + w(e) - w(f) \leq w(T) w ( T ′ ) = w ( T ) + w ( e ) − w ( f ) ≤ w ( T ) 。よって T ′ T' T ′ は F ∪ { e } F \cup \lbrace e \rbrace F ∪ { e } を 含む 最小全域木である。 □ \square □
定理 7.30 (クラスカル法, Kruskal, 1956 年)連結な 無向グラフの 辺を 重みの 小さい 順に e 1 , e 2 , … , e M e_1, e_2, \dots, e_M e 1 , e 2 , … , e M と 並べ、 F = ∅ F = \emptyset F = ∅ から 始めて、 i = 1 , 2 , … , M i = 1, 2, \dots, M i = 1 , 2 , … , M の 順に「 F ∪ { e i } F \cup \lbrace e_i \rbrace F ∪ { e i } が 閉路を もたなければ e i e_i e i を F F F に 加える」。終了時の F F F は 最小全域木である。
証明. 「F F F は ある 最小全域木に 含まれる」が 保たれる ことを 示す。初めは 正しい。 e i = { u , v } e_i = \lbrace u, v \rbrace e i = { u , v } を 加える とき、 u u u と v v v は グラフ ( V , F ) (V, F) ( V , F ) の 異なる 連結成分にある。 u u u の 連結成分の 頂点集合を S S S と すると、 F F F の 辺は S S S を またがず、 e i e_i e i は S S S を またぐ。 j < i j < i j < i の e j e_j e j は、F F F に 加えられたか、両端が 同じ 連結成分に あって 捨てられたか(連結成分は 合併するだけなので、両端は 今も 同じ 成分に ある)の どちらかで、いずれに しても S S S を またが ない。よって e i e_i e i は S S S を またぐ 辺の うち重みが 最小で、補題 7.29 より F ∪ { e i } F \cup \lbrace e_i \rbrace F ∪ { e i } も ある 最小全域木に 含まれる。終了時、 ( V , F ) (V, F) ( V , F ) は 連結で ある(異なる 連結成分を 結ぶ 辺が G G G に あれば、それを 調べた 時点でも 両端は 異なる 成分に あり、加えられていたはずである)。よって F F F は 全域木で、ある 最小全域木 T T T に 含まれ、辺の 数が ともに n − 1 n - 1 n − 1 なので F = T F = T F = T 。□ \square □
例 7.31 例 7.27 の 道路網で、所要時間と 同じ 費用で 回線を 引けると する。重みの 小さい 順に a b ab ab , s b sb s b , c d cd c d を 採用し、 s a sa s a は 閉路を 作るので 捨て、 a c ac a c , c t ct c t を 採用すると、費用 17 17 17 の 最小全域木に なる。例 7.27 の 最短路を つないだ木( s b sb s b , a b ab ab , s c sc sc , c d cd c d , c t ct c t )は 費用 19 19 19 で、最小全域木の 上の s s s から t t t への 道 s → b → a → c → t s \to b \to a \to c \to t s → b → a → c → t は 長さ 14 14 14 で 最短(13)ではない。
現在の 木を またぐ 最小の 辺を 加えて 1 つの 頂点から 木を 育てる プリム法(Prim, 1957 年)も、補題 7.29 から 正しい。貪欲法が ここで 最適に なるのは、閉路を もたない 辺の 集合が マトロイドと いう 構造を もつ ためである(Korte–Vygen を 参照。例 7.14 のように、一般には 最適と 限らない)。
7.8 動的計画法
問題を 小さい 部分問題に 分け、部分問題の 最適値の 表を 小さい 順に 埋めていく 方法を 動的計画法 (dynamic programming) と いう(ベルマンが 1950 年代に 体系化した)。最適解の 一部分が 部分問題の 最適解に なっている こと( 最適性の 原理 )が 鍵である。
定理 7.32 (ナップサック問題の 動的計画法)重み w i w_i w i と 容量 W W W は 非負の 整数とし、価値 v i v_i v i は 実数と する。 0 ≤ i ≤ n 0 \leq i \leq n 0 ≤ i ≤ n , 0 ≤ r ≤ W 0 \leq r \leq W 0 ≤ r ≤ W に ついて、品物 1 , … , i 1, \dots, i 1 , … , i だけを 使い、重さの 合計が r r r 以下と なる 選び方の 価値の 最大値を V i ( r ) V_i(r) V i ( r ) と する。この とき V 0 ( r ) = 0 V_0(r) = 0 V 0 ( r ) = 0 であり、i ≥ 1 i \geq 1 i ≥ 1 では
V i ( r ) = { V i − 1 ( r ) ( w i > r ) max ( V i − 1 ( r ) , V i − 1 ( r − w i ) + v i ) ( w i ≤ r ) V_i(r) = \begin{cases} V_{i-1}(r) & (w_i > r) \\ \max\bigl(V_{i-1}(r),\ V_{i-1}(r - w_i) + v_i\bigr) & (w_i \leq r) \end{cases} V i ( r ) = { V i − 1 ( r ) max ( V i − 1 ( r ) , V i − 1 ( r − w i ) + v i ) ( w i > r ) ( w i ≤ r )
が 成り立つ。最適値 V n ( W ) V_n(W) V n ( W ) は、表 V i ( r ) V_i(r) V i ( r ) を O ( n W ) O(nW) O ( nW ) 回の 演算で 埋めて 求められる。
証明. 品物 1 , … , i 1, \dots, i 1 , … , i の 選び方で 重さの 合計が r r r 以下の ものを、品物 i i i を 選ぶか どうかで 分ける。選ばない ものは 品物 1 , … , i − 1 1, \dots, i - 1 1 , … , i − 1 の 重さ r r r 以下の 選び方 その ものなので、価値の 最大値は V i − 1 ( r ) V_{i-1}(r) V i − 1 ( r ) である。選ぶもの(w i ≤ r w_i \leq r w i ≤ r の ときだけある)は、残りが 品物 1 , … , i − 1 1, \dots, i - 1 1 , … , i − 1 の 重さ r − w i r - w_i r − w i 以下の 選び方と 一対一に 対応するので、価値の 最大値は V i − 1 ( r − w i ) + v i V_{i-1}(r - w_i) + v_i V i − 1 ( r − w i ) + v i である。全体の 最大値は 両者の 大きい ほうである。表の 欄は ( n + 1 ) ( W + 1 ) (n + 1)(W + 1) ( n + 1 ) ( W + 1 ) 個で、各欄は O ( 1 ) O(1) O ( 1 ) 回の 演算で 埋まる。 □ \square □
例 7.33 例 7.14(W = 10 W = 10 W = 10 )の 表は 次の とおりである(計算機でも 確かめた)。
r = 0 r = 0 r = 0
1
2
3
4
5
6
7
8
9
10
V 0 V_0 V 0
0
0
0
0
0
0
0
0
0
0
0
V 1 V_1 V 1 (w 1 = 3 w_1 = 3 w 1 = 3 , v 1 = 12 v_1 = 12 v 1 = 12 )
0
0
0
12
12
12
12
12
12
12
12
V 2 V_2 V 2 (w 2 = 4 w_2 = 4 w 2 = 4 , v 2 = 9 v_2 = 9 v 2 = 9 )
0
0
0
12
12
12
12
21
21
21
21
V 3 V_3 V 3 (w 3 = 6 w_3 = 6 w 3 = 6 , v 3 = 13 v_3 = 13 v 3 = 13 )
0
0
0
12
12
12
13
21
21
25
25
V 4 V_4 V 4 (w 4 = 7 w_4 = 7 w 4 = 7 , v 4 = 9 v_4 = 9 v 4 = 9 )
0
0
0
12
12
12
13
21
21
25
25
たとえば V 3 ( 9 ) = max ( V 2 ( 9 ) , V 2 ( 3 ) + 13 ) = 25 V_3(9) = \max(V_2(9), V_2(3) + 13) = 25 V 3 ( 9 ) = max ( V 2 ( 9 ) , V 2 ( 3 ) + 13 ) = 25 。表を 逆に たどると、 V 4 ( 10 ) = V 3 ( 10 ) V_4(10) = V_3(10) V 4 ( 10 ) = V 3 ( 10 ) より 品物 4 は 選ばず、 V 3 ( 10 ) ≠ V 2 ( 10 ) V_3(10) \neq V_2(10) V 3 ( 10 ) = V 2 ( 10 ) より 品物 3 を 選んで r = 4 r = 4 r = 4 に 移り、 V 2 ( 4 ) = V 1 ( 4 ) ≠ V 0 ( 4 ) V_2(4) = V_1(4) \neq V_0(4) V 2 ( 4 ) = V 1 ( 4 ) = V 0 ( 4 ) より 品物 2 は 選ばず品物 1 を 選ぶ。最適解は 品物 1, 3 で、例 7.22 と 一致する。
計算時間 O ( n W ) O(nW) O ( nW ) は n n n と W W W の 多項式だが、 W W W は 2 進法で 約 log 2 W \log_2 W log 2 W 桁で 書けるので、入力の 大きさの 多項式ではない。このように 入力に 現れる 数値の 値の 多項式で 抑えられる 計算時間を 擬多項式時間 (pseudo-polynomial time) と いう。 W W W が 10 6 10^6 1 0 6 程度までなら 動的計画法は 非常に 実用的だが、 10 12 10^{12} 1 0 12 程度に なると 表が 大きすぎる。
7.9 計算量と NP 困難
アルゴリズムの 速さは、入力の 大きさ(入力を 2 進法で 書いた ときの ビット数)に 対する 最悪の 場合の 計算時間で 測り、多項式で 抑えられる とき 多項式時間と いう( 25-cryptography-coding 第1章 定義 1.2 と 同じ 考え方)。線形計画(第3章 3.5 節の 楕円体法・ 内点法)、最短路、最小全域木は 多項式時間で 解ける。
定義 7.34 (P, NP, NP 完全, NP 困難)答えが「はい」か「いいえ」の 問題を 判定問題と いう。
多項式時間の アルゴリズムで 解ける 判定問題全体を P と いう。
多項式時間で 動く 検証の アルゴリズムが あって、答えが「はい」の 入力には それが 受け入れる 証拠 (certificate)(長さは 入力の 大きさの 多項式以下)が あり、「いいえ」の 入力では どんな 証拠も 受け入れられない、と いう 判定問題全体を NP と いう。
判定問題 A A A の 入力を、答えを 変えずに 判定問題 B B B の 入力に 多項式時間で 変換できる とき、 A A A は B B B に 多項式時間 帰着されると いう。NP に 属し、NP の すべての 問題が 多項式時間 帰着される 判定問題を NP 完全 (NP-complete) と いう。
ある NP 完全な 問題が、問題 B B B (最適化問題でも よい)を 解く 手続きを 多項式回呼び出す 多項式時間の アルゴリズムで 解ける とき、 B B B を NP 困難 (NP-hard) と いう。
ナップサック問題の 判定版「価値の 合計が K K K 以上で 重さの 合計が W W W 以下の 選び方は あるか」は、選び方が 証拠に なるので NP に 属する。P は NP に 含まれ、NP 困難な 問題が 多項式時間で 解ければ NP の すべての 問題が 多項式時間で 解ける(定義 7.34 の 3・4)。最初の NP 完全問題は 論理式の 充足 可能性問題で(クック, 1971 年。レビンも 独立に 示した)、カープ(1972 年)は 0-1 整数計画や ナップサック問題(次の 例の 部分和問題)など 21 の 問題の NP 完全性を 示した。巡回セールスマン問題や 施設配置問題も NP 困難である。
P = NP か どうかは 未解決である。 P ≠ NP と 予想されており、クレイ数学研究所が 2000 年に 選んだ ミレニアム懸賞問題の 一つである。したがって「NP 困難な 問題には 多項式時間の アルゴリズムが ない」は 証明された 事実ではなく、「P ≠ NP ならば、ない」が 正確な 言い方である。
例 7.35 (非凸な 4 次多項式の 最小化) 正の 整数 a 1 , … , a n a_1, \dots, a_n a 1 , … , a n , s s s に ついて「和が s s s に なる a i a_i a i の 選び方は あるか」を 問う 部分和問題は NP 完全である。これに 対し
p ( x ) = ( ∑ i = 1 n a i x i − s ) 2 + ∑ i = 1 n x i 2 ( 1 − x i ) 2 ( x ∈ R n ) p(x) = \Bigl(\sum_{i=1}^{n} a_ix_i - s\Bigr)^2 + \sum_{i=1}^{n} x_i^2(1 - x_i)^2 \qquad (x \in \mathbb{R}^n) p ( x ) = ( i = 1 ∑ n a i x i − s ) 2 + i = 1 ∑ n x i 2 ( 1 − x i ) 2 ( x ∈ R n )
と おくと p ≥ 0 p \geq 0 p ≥ 0 で、p ( x ) = 0 p(x) = 0 p ( x ) = 0 は「各 x i ∈ { 0 , 1 } x_i \in \lbrace 0, 1 \rbrace x i ∈ { 0 , 1 } かつ ∑ i a i x i = s \sum_i a_ix_i = s ∑ i a i x i = s 」と 同値である。 p p p は 強圧的なので 最小値を もち(第1章 定理 1.11)、最小値が 0 0 0 である ことと 部分和問題の 答えが「はい」である ことは 同値に なる。 p p p の 係数は 入力から 多項式時間で 計算できるので、4 次多項式の 大域最小値が 0 0 0 か どうかを 判定する 問題は NP 困難である。
注意
「NP 困難だから 解けない」は 誤りである。NP 困難は、P ≠ NP ならば すべての 入力に 対して 多項式時間で 最適解を 出すアルゴリズムは ない、と いう 最悪の 場合の 主張である。実務の 問題では、分枝カット法で 大規模な ものまで 最適解(あるいは 最適値からの 差を 保証した 解)が 得られる ことも 多い。規模と 必要な 精度に 応じて、ソルバー・ 近似アルゴリズム・発見的解法を 使い分ければよい。
最適解を あきらめる 代わりに、質の 保証された 解を 多項式時間で 求めるのが 近似アルゴリズム (approximation algorithm) である。最大化問題で、常に 最適値の α \alpha α 倍以上(最小化問題なら α \alpha α 倍以下)の 値の 実行可能解を 多項式時間で 出すアルゴリズムを α \alpha α -近似アルゴリズムと いう。
定理 7.36 (ナップサック問題の 1 / 2 1/2 1/2 -近似)v i , w i > 0 v_i, w_i > 0 v i , w i > 0 、各品物の 重さは W W W 以下で ∑ i w i > W \sum_i w_i > W ∑ i w i > W とし、命題 7.15 のように 並べた ときの k k k に ついて、 A = { 1 , … , k − 1 } A = \lbrace 1, \dots, k - 1 \rbrace A = { 1 , … , k − 1 } と { k } \lbrace k \rbrace { k } の うち価値の 合計が 大きい ほうを 選ぶ。その 価値は 最適値の 1 / 2 1/2 1/2 以上であり、計算時間は 並べ替えの O ( n log n ) O(n\log n) O ( n log n ) である。
証明. k k k の 定義より A A A の 重さは W W W 以下で、仮定より w k ≤ W w_k \leq W w k ≤ W なので、どちらも 実行可能である。最適値を z ∗ z^{\ast} z ∗ と すると、命題 7.13 と 7.15、および W − ∑ i < k w i < w k W - \sum_{i < k} w_i < w_k W − ∑ i < k w i < w k より
z ∗ ≤ ∑ i < k v i + v k W − ∑ i < k w i w k < ∑ i < k v i + v k ≤ 2 max ( ∑ i < k v i , v k ) z^{\ast} \leq \sum_{i < k} v_i + v_k\frac{W - \sum_{i < k} w_i}{w_k} < \sum_{i < k} v_i + v_k \leq 2\max\Bigl(\sum_{i < k} v_i,\ v_k\Bigr) z ∗ ≤ i < k ∑ v i + v k w k W − ∑ i < k w i < i < k ∑ v i + v k ≤ 2 max ( i < k ∑ v i , v k )
である。□ \square □
例 7.14 では { 1 , 2 } \lbrace 1, 2 \rbrace { 1 , 2 } (価値 21)と { 3 } \lbrace 3 \rbrace { 3 } (13)から 21 を 選び、 21 ≥ 25 / 2 21 \geq 25/2 21 ≥ 25/2 である。{ k } \lbrace k \rbrace { k } との 比較を 省くと 比は いくらでも 悪くなりうる(問題 7.6)。近似の しやすさは 問題に よって 大きく 違う。たとえば 一般の 距離の 巡回セールスマン問題には、P ≠ NP なら 定数倍の 近似アルゴリズムすらない(サーニ–ゴンザレス, 1976 年)。
まとめ
確率的勾配降下法は、不偏な 確率的勾配、 E [ ∥ g ∥ 2 ] ≤ G 2 E[\lVert g \rVert^2] \leq G^2 E [∥ g ∥ 2 ] ≤ G 2 、∥ x 0 − x ∗ ∥ ≤ R \lVert x_0 - x^{\ast} \rVert \leq R ∥ x 0 − x ∗ ∥ ≤ R のもとで、ステップ幅 R / ( G k ) R/(G\sqrt{k}) R / ( G k ) の 平均反復点に ついて E [ f ( x ˉ k ) ] − f ( x ∗ ) ≤ R G / k E[f(\bar{x}_k)] - f(x^{\ast}) \leq RG/\sqrt{k} E [ f ( x ˉ k )] − f ( x ∗ ) ≤ R G / k を 満たす(鍵は x t x_t x t と ξ t \xi_t ξ t の 独立性)。強凸なら O ( 1 / k ) O(1/k) O ( 1/ k ) 。
ミニバッチは 分散を 1 / b 1/b 1/ b に するが、勾配の 計算回数は 減らさない。Adam には 凸問題でも 収束しない 例が ある。
非凸問題では、狭義の 鞍点に 収束する 初期点は 測度 0 0 0 だが、停滞は 起こり、大域最小は 一般に 難しい。
LP 緩和は 最適値の 限界を 与え、制約行列が 全単模なら 頂点は 整数である。分枝限定法は 有限回で 最適解を 返し、切除平面は 緩和を 強める。
重みが 非負なら ダイクストラ法は 正しく、ポテンシャルは 最短性の 証明書に なる。カット性質から、クラスカル法は 最小全域木を 与える。
ナップサック問題は 動的計画法で 擬多項式時間で 解けるが、判定版は NP 完全で、P = NP か どうかは 未解決である。
演習問題
問題 7.1 ★ 定理 7.4 の 設定で R = 10 R = 10 R = 10 , G = 2 G = 2 G = 2 と する。(1) 誤差の 期待値を 0.01 0.01 0.01 以下に する ことを 定理 7.4 で 保証するには、何回の 反復が 必要か。その ときの ステップ幅も 求めよ。(2) 確率的勾配が ∥ g ˉ ( x ) ∥ ≤ 1 \lVert \bar{g}(x) \rVert \leq 1 ∥ g ˉ ( x )∥ ≤ 1 , σ 2 ( x ) ≤ 3 \sigma^2(x) \leq 3 σ 2 ( x ) ≤ 3 (命題 7.7 の 記号)を 満たすと する(この とき G 2 = 4 G^2 = 4 G 2 = 4 ととれる)。大きさ b = 10 b = 10 b = 10 の ミニバッチを 使うと、同じ 保証に 必要な 反復回数と、勾配の 計算回数の 合計は どうなるか。
解答
(1) R G / k ≤ 0.01 RG/\sqrt{k} \leq 0.01 R G / k ≤ 0.01 は k ≥ 2000 \sqrt{k} \geq 2000 k ≥ 2000 、すな わち k ≥ 4 × 10 6 k \geq 4 \times 10^6 k ≥ 4 × 1 0 6 と 同値である。ステップ幅は η = R / ( G k ) = 10 / ( 2 ⋅ 2000 ) = 0.0025 \eta = R/(G\sqrt{k}) = 10/(2 \cdot 2000) = 0.0025 η = R / ( G k ) = 10/ ( 2 ⋅ 2000 ) = 0.0025 。
(2) 命題 7.7 より E [ ∥ g B ∥ 2 ] ≤ 1 + 3 / 10 E[\lVert g_B \rVert^2] \leq 1 + 3/10 E [∥ g B ∥ 2 ] ≤ 1 + 3/10 なので G 10 2 = 1.3 G_{10}^2 = 1.3 G 10 2 = 1.3 ととれ、k ≥ R 2 G 10 2 / 0.01 2 = 1.3 × 10 6 k \geq R^2G_{10}^2/0.01^2 = 1.3 \times 10^6 k ≥ R 2 G 10 2 /0.0 1 2 = 1.3 × 1 0 6 で 反復回数は (1) の 約 3 分の 1 に なるが、勾配の 計算回数は 1.3 × 10 7 1.3 \times 10^7 1.3 × 1 0 7 で (1) の 3.25 3.25 3.25 倍に 増える。10 個の 勾配を 並列に 計算して 1 回の 反復の 時間が ほぼ変わらない 場合に 限り、時間の 短縮に なる。
問題 7.2 ★ ★ ★ 定理 7.6 を 証明せよ。(ヒント:(7.1) と 第2章 定理 2.22 の 2 から E [ D t + 1 ] ≤ ( 1 − μ η t ) E [ D t ] − 2 η t ( E [ f ( x t ) ] − f ( x ∗ ) ) + η t 2 G 2 E[D_{t+1}] \leq (1 - \mu\eta_t)E[D_t] - 2\eta_t\bigl(E[f(x_t)] - f(x^{\ast})\bigr) + \eta_t^2G^2 E [ D t + 1 ] ≤ ( 1 − μ η t ) E [ D t ] − 2 η t ( E [ f ( x t )] − f ( x ∗ ) ) + η t 2 G 2 を 導き、 t t t 倍して 足す。)
解答
定理 7.4 の 証明の 記号を 使う。(7.1) は ステップ幅 η t \eta_t η t でも 同じく 成り立つ。第2章 定理 2.22 の 2( x = x t x = x_t x = x t , y = x ∗ y = x^{\ast} y = x ∗ )より ⟨ ∇ f ( x t ) , x t − x ∗ ⟩ ≥ f ( x t ) − f ( x ∗ ) + μ 2 D t \langle \nabla f(x_t), x_t - x^{\ast} \rangle \geq f(x_t) - f(x^{\ast}) + \frac{\mu}{2}D_t ⟨ ∇ f ( x t ) , x t − x ∗ ⟩ ≥ f ( x t ) − f ( x ∗ ) + 2 μ D t で、補題 7.3 より E [ ⟨ g t , x t − x ∗ ⟩ ] = E [ ⟨ ∇ f ( x t ) , x t − x ∗ ⟩ ] E[\langle g_t, x_t - x^{\ast} \rangle] = E[\langle \nabla f(x_t), x_t - x^{\ast} \rangle] E [⟨ g t , x t − x ∗ ⟩] = E [⟨ ∇ f ( x t ) , x t − x ∗ ⟩] だから、(7.1) の 期待値を とると ヒントの 不等式を 得る。これを E [ f ( x t ) ] − f ( x ∗ ) E[f(x_t)] - f(x^{\ast}) E [ f ( x t )] − f ( x ∗ ) に ついて 解き、 1 2 η t = μ ( t + 1 ) 4 \frac{1}{2\eta_t} = \frac{\mu(t + 1)}{4} 2 η t 1 = 4 μ ( t + 1 ) , 1 − μ η t 2 η t = μ ( t − 1 ) 4 \frac{1 - \mu\eta_t}{2\eta_t} = \frac{\mu(t - 1)}{4} 2 η t 1 − μ η t = 4 μ ( t − 1 ) , η t 2 = 1 μ ( t + 1 ) \frac{\eta_t}{2} = \frac{1}{\mu(t + 1)} 2 η t = μ ( t + 1 ) 1 を 代入して t t t 倍し、t t + 1 ≤ 1 \frac{t}{t + 1} \leq 1 t + 1 t ≤ 1 を 使うと
t ( E [ f ( x t ) ] − f ( x ∗ ) ) ≤ μ 4 ( ( t − 1 ) t E [ D t ] − t ( t + 1 ) E [ D t + 1 ] ) + G 2 μ t\bigl(E[f(x_t)] - f(x^{\ast})\bigr) \leq \frac{\mu}{4}\bigl((t - 1)t\,E[D_t] - t(t + 1)E[D_{t+1}]\bigr) + \frac{G^2}{\mu} t ( E [ f ( x t )] − f ( x ∗ ) ) ≤ 4 μ ( ( t − 1 ) t E [ D t ] − t ( t + 1 ) E [ D t + 1 ] ) + μ G 2
t = 1 , … , k t = 1, \dots, k t = 1 , … , k に ついて 足すと、右辺の 括弧の 中は 打ち消し合って 0 ⋅ E [ D 1 ] − k ( k + 1 ) E [ D k + 1 ] ≤ 0 0 \cdot E[D_1] - k(k + 1)E[D_{k+1}] \leq 0 0 ⋅ E [ D 1 ] − k ( k + 1 ) E [ D k + 1 ] ≤ 0 と なるので、 ∑ t = 1 k t ( E [ f ( x t ) ] − f ( x ∗ ) ) ≤ k G 2 / μ \sum_{t=1}^{k} t\bigl(E[f(x_t)] - f(x^{\ast})\bigr) \leq kG^2/\mu ∑ t = 1 k t ( E [ f ( x t )] − f ( x ∗ ) ) ≤ k G 2 / μ 。x ~ k \tilde{x}_k x ~ k は x 1 , … , x k x_1, \dots, x_k x 1 , … , x k の 重み 2 t k ( k + 1 ) \frac{2t}{k(k + 1)} k ( k + 1 ) 2 t の 凸結合だから C C C に 属し、イェンセンの 不等式より 実現値ごとに f ( x ~ k ) ≤ 2 k ( k + 1 ) ∑ t t f ( x t ) f(\tilde{x}_k) \leq \frac{2}{k(k + 1)}\sum_t tf(x_t) f ( x ~ k ) ≤ k ( k + 1 ) 2 ∑ t t f ( x t ) 。期待値を とって E [ f ( x ~ k ) ] − f ( x ∗ ) ≤ 2 k ( k + 1 ) ⋅ k G 2 μ = 2 G 2 μ ( k + 1 ) E[f(\tilde{x}_k)] - f(x^{\ast}) \leq \frac{2}{k(k + 1)} \cdot \frac{kG^2}{\mu} = \frac{2G^2}{\mu(k + 1)} E [ f ( x ~ k )] − f ( x ∗ ) ≤ k ( k + 1 ) 2 ⋅ μ k G 2 = μ ( k + 1 ) 2 G 2 。重み t t t の おかげで E [ D 1 ] E[D_1] E [ D 1 ] の 係数が 0 0 0 に なり、初期点からの 距離が 評価に 現れない。
問題 7.3 ★ ★ (1) 各列の 1 1 1 が 連続した 行に 並び、他の 成分が 0 0 0 である 0 0 0 -1 1 1 行列は 全単模である ことを 示せ(ヒント:正方部分 行列の 各行から、その すぐ 下の 行を 引く)。(2) 日を またいで 循環する 勤務(例 7.17 で、時間帯 s , s + 1 , s + 2 s, s + 1, s + 2 s , s + 1 , s + 2 を 担当する 勤務を s = 1 , … , 6 s = 1, \dots, 6 s = 1 , … , 6 に ついて 考え、番号は 6 を 法と して 読む)を 許すと、制約行列が 全単模でなくなる ことを、3 次の 部分 行列の 行列式で 示せ。
解答
(1) 大きさ k k k の 正方部分 行列 B B B を とる。選んだ 行だけを 見ても、 B B B の 各列の 1 1 1 は 連続した 行に 並ぶ。 i = 1 , 2 , … , k − 1 i = 1, 2, \dots, k - 1 i = 1 , 2 , … , k − 1 の 順に、第 i i i 行から(まだ 変更していない)第 i + 1 i + 1 i + 1 行を 引く。この 操作で 行列式は 変わらない。ある 列の 1 1 1 が 第 p p p 行から 第 q q q 行に あると すると、操作後の その 列は、第 q q q 行が 1 1 1 、p ≥ 2 p \geq 2 p ≥ 2 なら 第 p − 1 p - 1 p − 1 行が − 1 -1 − 1 で、他は 0 0 0 である。よって 操作後の 行列は 命題 7.20 の 形で、行列式( = det B = \det B = det B )は 0 , ± 1 0, \pm 1 0 , ± 1 の いずれかである。
(2) 勤務 1 は 時間帯 1, 2, 3 を、勤務 3 は 3, 4, 5 を、勤務 5 は 5, 6, 1 を 担当する。時間帯 1, 3, 5 の 行と 勤務 1, 3, 5 の 列からなる 部分 行列は、行が ( 1 , 0 , 1 ) (1, 0, 1) ( 1 , 0 , 1 ) , ( 1 , 1 , 0 ) (1, 1, 0) ( 1 , 1 , 0 ) , ( 0 , 1 , 1 ) (0, 1, 1) ( 0 , 1 , 1 ) で、行列式は 1 ⋅ ( 1 − 0 ) − 0 + 1 ⋅ ( 1 − 0 ) = 2 1 \cdot (1 - 0) - 0 + 1 \cdot (1 - 0) = 2 1 ⋅ ( 1 − 0 ) − 0 + 1 ⋅ ( 1 − 0 ) = 2 である(7.4 節の 三角形の 行列の 列を 並べ替えた もの)。
問題 7.4 ★ 有向グラフの 辺と 重みを s → a s \to a s → a (6)、s → b s \to b s → b (2)、b → a b \to a b → a (3)、a → c a \to c a → c (1)、b → c b \to c b → c (7)、c → t c \to t c → t (2)、a → t a \to t a → t (5)と する。ダイクストラ法で s s s から 各頂点への 最短距離と 最短路を 求め、命題 7.28 の 条件を 確かめて 答えが 正しい ことを 確認せよ。
解答
s s s を 加えて d ( a ) = 6 d(a) = 6 d ( a ) = 6 , d ( b ) = 2 d(b) = 2 d ( b ) = 2 。b b b (2)を 加えて d ( a ) = min ( 6 , 2 + 3 ) = 5 d(a) = \min(6, 2 + 3) = 5 d ( a ) = min ( 6 , 2 + 3 ) = 5 , d ( c ) = 9 d(c) = 9 d ( c ) = 9 。a a a (5)を 加えて d ( c ) = min ( 9 , 5 + 1 ) = 6 d(c) = \min(9, 5 + 1) = 6 d ( c ) = min ( 9 , 5 + 1 ) = 6 , d ( t ) = 10 d(t) = 10 d ( t ) = 10 。c c c (6)を 加えて d ( t ) = min ( 10 , 6 + 2 ) = 8 d(t) = \min(10, 6 + 2) = 8 d ( t ) = min ( 10 , 6 + 2 ) = 8 。最後に t t t (8)を 加える。最短距離は a a a が 5, b b b が 2, c c c が 6, t t t が 8 で、t t t への 最短路は s → b → a → c → t s \to b \to a \to c \to t s → b → a → c → t である。
p = d p = d p = d と して 7 本の 辺で p ( v ) ≤ p ( u ) + c ( u , v ) p(v) \leq p(u) + c(u, v) p ( v ) ≤ p ( u ) + c ( u , v ) を 確かめると、 5 ≤ 6 5 \leq 6 5 ≤ 6 , 2 ≤ 2 2 \leq 2 2 ≤ 2 , 5 ≤ 2 + 3 5 \leq 2 + 3 5 ≤ 2 + 3 , 6 ≤ 5 + 1 6 \leq 5 + 1 6 ≤ 5 + 1 , 6 ≤ 2 + 7 6 \leq 2 + 7 6 ≤ 2 + 7 , 8 ≤ 6 + 2 8 \leq 6 + 2 8 ≤ 6 + 2 , 8 ≤ 5 + 5 8 \leq 5 + 5 8 ≤ 5 + 5 ですべて 成り立つ。各頂点に 長さ p ( v ) p(v) p ( v ) の 道が あるので、命題 7.28 より それらは 最短である。
問題 7.5 ★ ★ 負の 重みの 辺を 含む 有向グラフの 最短路を 求める ために、ある 実装は「すべての 辺の 重みに 同じ 定数 M M M を 足して 非負に してから、ダイクストラ法を 使う」。辺 s → a s \to a s → a (1)、a → t a \to t a → t (− 2 -2 − 2 )、s → t s \to t s → t (0)の グラフで、この 実装( M = 2 M = 2 M = 2 )を 試して 誤りを 説明せよ。また、頂点の 関数 h h h に よって c ′ ( u , v ) = c ( u , v ) + h ( u ) − h ( v ) c'(u, v) = c(u, v) + h(u) - h(v) c ′ ( u , v ) = c ( u , v ) + h ( u ) − h ( v ) と 重みを 変えるのは 正しい ことを 示し、この グラフで c ′ ≥ 0 c' \geq 0 c ′ ≥ 0 と なる h h h を 1 つ挙げよ。
解答
重みは s → a s \to a s → a (3)、a → t a \to t a → t (0)、s → t s \to t s → t (2)に なり、ダイクストラ法は d ( t ) = 2 d(t) = 2 d ( t ) = 2 で t t t を 確定して s → t s \to t s → t (元の 長さ 0 0 0 )を 答えるが、 s → a → t s \to a \to t s → a → t の 元の 長さ − 1 -1 − 1 の ほうが 短い。定数を 足すと 道の 長さは M × M \times M × (辺の 数)だけ 増え、辺の 多い 道ほど 不利に なるからである。
一方、u u u から v v v への 道 u = v 0 , … , v k = v u = v_0, \dots, v_k = v u = v 0 , … , v k = v では h h h の 項が 打ち消し合って ∑ i c ′ ( v i − 1 , v i ) = ∑ i c ( v i − 1 , v i ) + h ( u ) − h ( v ) \sum_i c'(v_{i-1}, v_i) = \sum_i c(v_{i-1}, v_i) + h(u) - h(v) ∑ i c ′ ( v i − 1 , v i ) = ∑ i c ( v i − 1 , v i ) + h ( u ) − h ( v ) と なり、同じ 両端の 道の 長さは すべて 同じだけずれるので、最短路は 変わらない。 h ( s ) = 0 h(s) = 0 h ( s ) = 0 , h ( a ) = 1 h(a) = 1 h ( a ) = 1 , h ( t ) = − 1 h(t) = -1 h ( t ) = − 1 (s s s からの 真の 距離)と すると c ′ ( s , a ) = c ′ ( a , t ) = 0 c'(s, a) = c'(a, t) = 0 c ′ ( s , a ) = c ′ ( a , t ) = 0 , c ′ ( s , t ) = 1 c'(s, t) = 1 c ′ ( s , t ) = 1 である。一般に h h h が 命題 7.28 の 条件 h ( v ) ≤ h ( u ) + c ( u , v ) h(v) \leq h(u) + c(u, v) h ( v ) ≤ h ( u ) + c ( u , v ) を 満たせば c ′ ≥ 0 c' \geq 0 c ′ ≥ 0 で、そのような h h h を ベルマン–フォード法で 求めてから ダイクストラ法を 使うのが ジョンソンの 方法(1977 年)である。
問題 7.6 ★ 容量 W ≥ 2 W \geq 2 W ≥ 2 の ナップサックに、品物 1(重さ 1、価値 2)と 品物 2(重さ W W W 、価値 W W W )を 詰める。価値と 重さの 比の 大きい順に 入る 限り 詰める 貪欲法の 値と 最適値を 求め、 W W W を 大きく すると 比が いくらでも 悪くなる ことを 確かめよ。定理 7.36 の 方法では 何が 得られるか。
解答
比は 品物 1 が 2 2 2 、品物 2 が 1 1 1 なので、貪欲法は 品物 1 を 入れ、残りの 容量 W − 1 W - 1 W − 1 に 品物 2 は 入らず、値は 2 2 2 。2 つは 同時に 入らない(重さ W + 1 W + 1 W + 1 )ので、最適解は 品物 2 だけで 値 W W W であり、比 2 / W 2/W 2/ W は W → ∞ W \to \infty W → ∞ で 0 0 0 に 近づく。定理 7.36 の 方法では k = 2 k = 2 k = 2 で、{ 1 } \lbrace 1 \rbrace { 1 } (価値 2)と { 2 } \lbrace 2 \rbrace { 2 } (価値 W W W )の よい ほうの 品物 2 が 選ばれ、最適解が 得られる。