# スパース推定
---
## 目次
正則化学習における、
* 座標降下法
* 交互方向乗数法
* 双対拡張ラグランジュ関数法
* 双対交互方向乗数法
---
## 座標降下法
---
## そもそも座標降下法とは?
---
### 座標降下法
最適化問題 $$\min_{x_1, x_2 \in \Bbb R} f(x_1, x_2)$$
軸 $x_i$ を選び、$\min_{x_i} f(x_1, x_2)$ を計算する。
これを収束するまで繰り返すアルゴリズム
---
座標降下法
## (図)
---
ところで、
スパース正則化関数の多くは、座標ブロックごとに別れた関数の和として表せる
$$
\psi(\mathbb w) = \sum_{m=1}^M \psi_m(\Bbb w^{(m)}),~~~~ \Bbb w = \begin{pmatrix}\Bbb w^{(1)}\\\vdots\\\Bbb w^{(M)}\\\end{pmatrix}
$$
---
例: $L_1$正則化関数
$$
\begin{eqnarray}
\|\Bbb w\| &=& \sum_{j=1}^d|w_j|, &\Bbb w &=& \begin{pmatrix}w_1\\\vdots\\ w_d\\\end{pmatrix}\\
\psi(\mathbb w) &=& \sum_{m=1}^M \psi_m(\Bbb w^{(m)}),~~~~ &\Bbb w &=& \begin{pmatrix}\Bbb w^{(1)}\\\vdots\\\Bbb w^{(M)}\\\end{pmatrix}
\end{eqnarray}
$$
---
定義
$f$の$\Bbb w^{(m)}$に沿った偏微分
$$
\nabla_m f(\Bbb w) = \left(\frac{\partial f(\Bbb w)}{\partial w_j^{(m)}}\right)_{j\in G_m}
$$
<small>
ただし $G_m$ は $\Bbb w^{(m)}$ のインデックス集合
</small>
---
これを利用して座標降下法を行う。
$\Bbb w^{(m)}$を座標軸として選ぶことに注意する
---
### 座標降下法
最適化問題 $$\min_{x_1, x_2 \in \Bbb R} f(x_1, x_2)$$
軸 $x_i$ を選び、$\min_{x_i} f(x_1, x_2)$ を計算する。
これを収束するまで繰り返す
----
## 座標降下法
最適化問題 $$\min_{\Bbb w \in \Bbb R^d} f(\Bbb w) + \psi(\Bbb w)$$
軸 $\Bbb w^{(m)}~~(m\in \{1,\cdots ,M\})$ を選び、$\min_{\Bbb w^{(m)}} f(\Bbb w) + \psi(\Bbb w)$ を計算することで$\Bbb w_{k+1}$を得る
これを収束するまで繰り返す
----
## 座標降下法
<small>
最適化問題 $$\min_{\Bbb w \in \Bbb R^d}f(\Bbb w_k) + (\nabla f(\Bbb w_k))^T(\Bbb w - \Bbb w_k) + \frac{L}{2}\|\Bbb w - \Bbb w_k\|^2 + \psi(\Bbb w)$$
軸 $\Bbb w^{(m)}~~(m\in \{1,\cdots ,M\})$ を選び、$\min_{\Bbb w^{(m)}} f(\Bbb w_k) + (\nabla f(\Bbb w_k))^T(\Bbb w - \Bbb w_k) + \frac{L}{2}\|\Bbb w - \Bbb w_k\|^2 + \psi(\Bbb w)$ を計算することで$\Bbb w_{k+1}$を得る
これを収束するまで繰り返す
$\because ~~~L$-平滑な凸関数 $f$ は
$$
f(\Bbb w) \leq f(\Bbb w_k) + (\nabla f(\Bbb w_k))^T(\Bbb w - \Bbb w_k) + \frac{L}{2}\|\Bbb w - \Bbb w_k\|^2
$$
を満たし、右辺と左辺の差も大きくないため、上界最小化法を用いることが出来る。
</small>
----
<small>$\newcommand{\argmin}{\mathop{\rm argmin}\limits}$最適化問題 $$\min_{\Bbb w \in \Bbb R^d}f(\Bbb w_k) + (\nabla f(\Bbb w_k))^T(\Bbb w - \Bbb w_k) + \frac{L}{2}\|\Bbb w - \Bbb w_k\|^2 + \psi(\Bbb w)$$
k回目の反復において、
$$\Bbb g^{(m)} = \nabla_mf(\Bbb w_k)$$
とする。軸 $\Bbb w^{(m)}~~(m\in \{1,\cdots ,M\})$ を選び、
$$
\Bbb w_{k+1}^{(m)} = \argmin_{\Bbb w^{(m)}\in \Bbb R}\left\{\Bbb g^{(m)T}\Bbb w^{(m)} + \frac{L}{2}\|\Bbb w^{(m)} - \Bbb w_k^{(m)}\|^2 + \psi(\Bbb w^{(m)})\right\}\\
\Bbb w_{k+1}^{(m')} = \Bbb w_{k}^{(m')}~~~(m' \neq m,~~m' \in \{1,\cdots ,M\})\\
\Bbb w_{k+1} = \begin{pmatrix}\Bbb w_{k+1}^{(1)}\\\vdots\\\Bbb w_{k+1}^{(M)}\end{pmatrix}$$
を計算する。$\Bbb w_0$はあらかじめ定めておき、これを収束するまで繰り返す
</small>
---
ところで、近接写像を定義する。$\newcommand{\argmin}{\mathop{\rm argmin}\limits}$
$$
prox(\Bbb w | \phi) := \argmin_{\Bbb w' \in \Bbb R^d}\left\{\phi(\Bbb w') + \frac{1}{2}\|\Bbb w - \Bbb w'\|^2\right\}
$$
---
<small>$\newcommand{\argmin}{\mathop{\rm argmin}\limits}$k回目の反復において、
$$\Bbb g^{(m)} = \nabla_mf(\Bbb w_k)$$
とする。軸 $\Bbb w^{(m)}~~(m\in \{1,\cdots ,M\})$ を選び、
$$
\Bbb w_{k+1}^{(m)} = prox\left(\Bbb w_k - \frac{\Bbb g_k}{L}|\frac{\psi}{L}\right)\\
\Bbb w_{k+1}^{(m')} = \Bbb w_{k}^{(m')}~~~(m' \neq m,~~m' \in \{1,\cdots ,M\})\\
\Bbb w_{k+1} = \begin{pmatrix}\Bbb w_{k+1}^{(1)}\\\vdots\\\Bbb w_{k+1}^{(M)}\end{pmatrix}~,~~~~~~prox(\Bbb w | \phi) := \argmin_{\Bbb w' \in \Bbb R^d}\left\{\phi(\Bbb w') + \frac{1}{2}\|\Bbb w - \Bbb w'\|^2\right\}
$$
を計算する。$\Bbb w_0$はあらかじめ定めておき、これを収束するまで繰り返す
</small>
---
## 近接写像のかたちで表記できると何がいいのか
<small>
* 正則化関数だけを元に計算が可能になるから、問題の切り分けができる
* 最小値計算が定式化できる場合が多いので、更新式の作成に困らない
+ $\newcommand{\argmin}{\mathop{\rm argmin}\limits}$例えば、$L_1$正則化なら $$prox(\Bbb q | C\|\cdot\|) = \begin{cases}q_j - C & (C \leq q_j) \\ 0 & (-C < q_j < C) \\ q_j + C & (q_j \leq -C)\end{cases}$$と書ける
</small>
---
## 交互方向乗数法
---
## ラグランジュ関数の復習
<small>
$$
\min_{\Bbb x \in \Bbb R^p,~\Bbb y \in \Bbb R^q}f(\Bbb x) + g(\Bbb y)~~s.t.~~A\Bbb x + B\Bbb y = \Bbb 0\tag1
$$
に対し、
$$
L(\Bbb x, \Bbb y, \boldsymbol\lambda) = f(\Bbb x) + g(\Bbb y) + \boldsymbol\lambda^T(A\Bbb x + B\Bbb y)~,\\
L_p(\Bbb x, \Bbb y, \boldsymbol\lambda) = L(\Bbb x, \Bbb y, \boldsymbol\lambda) + \frac{\rho}{2}\|A\Bbb x + B\Bbb y\|^2
$$
このようなラグランジュ関数と拡張ラグランジュ関数を用意し、
$$
\min_{\Bbb x \in\Bbb R^p,~\Bbb y \in \Bbb R^q}\max_{\boldsymbol \lambda}L_p(\Bbb x, \Bbb y, \boldsymbol \lambda)
$$
を計算することで、(1)における最適な$\Bbb x, \Bbb y$を得ることができる。
</small>
---
## そもそも交互方向乗数法とは?
<small>
線形等式制約付き最適化問題をとく解法。
$$
\min_{\Bbb x \in \Bbb R^p,~\Bbb y \in \Bbb R^q}f(\Bbb x) + g(\Bbb y)~~s.t.~~A\Bbb x + B\Bbb y = \Bbb 0\tag1
$$
を満たす最適な$\Bbb x, \Bbb y$は
$$
\min_{\Bbb x \in\Bbb R^p,~\Bbb y \in \Bbb R^q}\max_{\boldsymbol \lambda}L_p(\Bbb x, \Bbb y, \boldsymbol \lambda)
$$
で得られるので、
* $\Bbb x_k$ を $\min_{\Bbb x}L_p(\Bbb x, \Bbb y_{k-1}, \boldsymbol\lambda_{k-1})$ をもとに計算
* $\Bbb y_k$ を $\min_{\Bbb y}L_p(\Bbb x_k, \Bbb y, \boldsymbol\lambda_{k-1})$ をもとに計算
* $\boldsymbol \lambda_k$ を $\max_{\boldsymbol \lambda}L_p(\Bbb x_k, \Bbb y_k, \boldsymbol \lambda)$ をもとに計算
を繰り返せばよい。
</small>
----
具体的には、
$$
L_\rho(\Bbb x, \Bbb y, \boldsymbol\lambda) = f(\Bbb x) + g(\Bbb y) + \boldsymbol\lambda^T(A\Bbb x + B\Bbb y) + \frac{\rho}{2}\|A\Bbb x + B\Bbb y\|^2~
$$
に対し、交互方向乗数方を行う。<br>初期解 $\Bbb x_0 \in \Bbb R^p,~\Bbb y_0\in\Bbb R^q,~\boldsymbol \lambda,~k=0$ を定め、$\newcommand{\argmin}{\mathop{\rm argmin}\limits}$
$$
\begin{eqnarray}
\Bbb x_{k+1} &=&\argmin_{\Bbb x \in \Bbb R^p}L_\rho(\Bbb x, \Bbb y_{k}, \boldsymbol \lambda_{k})\\
&=&\argmin_{\Bbb x \in \Bbb R^p}\left\{f(\Bbb x) + \frac{\rho}{2}\|A\Bbb x + B\Bbb y_k + \boldsymbol \lambda_k / \rho\|^2\right\}\\
~
\Bbb y_{k+1} &=&\argmin_{\Bbb y \in \Bbb R^p}L_\rho(\Bbb x_{k+1}, \Bbb y, \boldsymbol \lambda_{k})\\
&=&\argmin_{\Bbb x \in \Bbb R^p}\left\{g(\Bbb x) + \frac{\rho}{2}\|A\Bbb x_k + B\Bbb y + \boldsymbol \lambda_k / \rho\|^2\right\}\\
~
\boldsymbol\lambda_{k+1} &=& \boldsymbol\lambda_{k} + \rho(A\Bbb x_{k+1} + B\Bbb y_k)
\end{eqnarray}
$$
を、収束するまで$k=1,2,...$に対して行う。
----
更に、この交互方向乗数法を拡張する。拡張することで、$\Bbb x, \Bbb y$の更新式の関数が対角化できる。$\newcommand{\argmin}{\mathop{\rm argmin}\limits}$
行列 $Q\succeq O,~P\succeq O$ 、パラメータ
初期解 $\Bbb x_0 \in \Bbb R^p,~\Bbb y_0\in\Bbb R^q,~\boldsymbol \lambda,~k=0$ を定め、$\newcommand{\argmin}{\mathop{\rm argmin}\limits}$
$$
\begin{eqnarray}
\Bbb x_{k+1} &=&\argmin_{\Bbb x \in \Bbb R^p}\left\{L_\rho(\Bbb x, \Bbb y_{k}, \boldsymbol \lambda_{k}) + \frac{1}{2}\|\Bbb x - \Bbb x_k\|^2_Q\right\}\\
~
\Bbb y_{k+1} &=&\argmin_{\Bbb y \in \Bbb R^p}\left\{L_\rho(\Bbb x_{k+1}, \Bbb y, \boldsymbol \lambda_{k}) + \frac{1}{2}\|\Bbb y - y_k\|^2_P\right\}\\
~
\boldsymbol\lambda_{k+1} &=& \boldsymbol\lambda_{k} + \rho(A\Bbb x_{k+1} + B\Bbb y_k)
\end{eqnarray}
$$
を、収束するまで$k=1,2,...$に対して行う。
----
更新式をこのようにすると、$\newcommand{\argmin}{\mathop{\rm argmin}\limits}$
$$
\Bbb x_{k+1} = \argmin_{\Bbb x\in \Bbb R^p}\left\{f(\Bbb x) + \frac{\eta_1}{2}\left\|\Bbb x + \frac{1}{\eta_1}[A^T(\rho B\Bbb y_k + \boldsymbol\lambda_k)]\right\|\right\}
$$
---
特に、今回の最適化問題は
$$
\begin{eqnarray}
\min_{\Bbb w \in \Bbb R^d} ~~~& f(\Bbb x) + \psi(\Bbb y)\\
s.t. ~~~& \Bbb x - \Bbb y = \Bbb 0
\end{eqnarray}
$$
のように書けるため、損失関数の最適化と正則化項の正則化をわけることができる。
---
また、 正則化項は前述の理由で、近接写像が計算しやすい形のものを選ぶと便利。
よって、元の正則化関数を、近接写像が計算しやすい関数$\psi$と行列$B$に分離したほうが便利なことがあるので
$$
\begin{eqnarray}
\min_{\Bbb w \in \Bbb R^d} ~~~& f(\Bbb x) + \psi(\Bbb y)\tag2 \\
s.t. ~~~& B\Bbb x - \Bbb y = \Bbb 0
\end{eqnarray}
$$
について考えたほうが問題が解きやすい。
---
<!--
交互方向乗数法を(2)に適用する
---
<small>
$$
\min_{\Bbb x \in \Bbb R^p,~\Bbb y \in \Bbb R^q}f(\Bbb x) + g(\Bbb y)~~s.t.~~B\Bbb x - \Bbb y = \Bbb 0\tag1
$$
を満たす最適な$\Bbb x, \Bbb y$は
$$
\min_{\Bbb x \in\Bbb R^p,~\Bbb y \in \Bbb R^q}\max_{\boldsymbol \lambda}L_p(\Bbb x, \Bbb y, \boldsymbol \lambda)
$$
で得られるので、
* $\Bbb x_k$ を $\min_{\Bbb x}L_p(\Bbb x, \Bbb y_{k-1}, \boldsymbol\lambda_{k-1})$ をもとに計算
* $\Bbb y_k$ を $\min_{\Bbb y}L_p(\Bbb x_k, \Bbb y, \boldsymbol\lambda_{k-1})$ をもとに計算
* $\boldsymbol \lambda_k$ を $\max_{\boldsymbol \lambda}L_p(\Bbb x_k, \Bbb y_k, \boldsymbol \lambda)$ をもとに計算
を繰り返せばよい。
</small>
---
-->
<!--
## 今後の展望
* 近接勾配法の収束性について軽く書く
* 交互方向乗数法しっかり埋める
* 実験は重回帰のなにかをLassoでとくつもり
* その他2つのアルゴリズムにおいては時間を読んで、可能なら片方採用する
* スライドをpower pointでつくりかえる