はじめに
『パターン認識と機械学習』の独学時のまとめです。一連の記事は「数式の行間埋め」または「R・Pythonでのスクラッチ実装」からアルゴリズムの理解を補助することを目的としています。本とあわせて読んでください。
この記事は、4.3.2項と4.3.3項の内容です。ニュートン法によるロジスティック回帰のパラメータの更新式を導出します。
【実装編】
www.anarchive-beta.com
www.anarchive-beta.com
www.anarchive-beta.com
【前節の内容】
www.anarchive-beta.com
【他の節一覧】
www.anarchive-beta.com
【この節の内容】
4.3.2 ロジスティック回帰
ロジスティック回帰は最尤解を解析的に求められません。そのため、勾配法などによって最尤解を推定する必要があります。この項では、勾配法で用いる誤差関数の勾配を導出します。
・モデルの確認
ロジスティック回帰の誤差関数を確認します。
$n$番目の入力$\mathbf{x}_n$に対して、基底関数$\boldsymbol{\phi}(\mathbf{x}_n) = (\phi_0(\mathbf{x}_n), \phi_1(\mathbf{x}_n), \cdots, \phi_{M-1}(\mathbf{x}_n))$を用いて非線形な変換を行います。
数式を簡略化するために、非線形変換を行った入力を$\boldsymbol{\phi}_n = \boldsymbol{\phi}(\mathbf{x}_n)$で表すことにします。
$\boldsymbol{\phi}_n$と重みパラメータ$\mathbf{w}$の内積(重み付き和)を計算します。
$$
a_n = \mathbf{w}^{\top} \boldsymbol{\phi}_n
$$
$a_n$をロジスティックシグモイド関数で変換します。
$$
y_n = \frac{1}{1 + \exp(-a_n)}
\tag{4.59}
$$
出力$y_n$は、$0 < y_n < 1$に変換されるので、ベルヌーイ分布のパラメータとして用います。
$$
p(t_n | \mathbf{w})
= \mathrm{Bern}(t_n | y_n)
= y_n^{t_n}
(1 - y_n)^{1-t_n}
$$
$y_n$は$t_n = 1$となる確率を、$1 - y_n$は$t_n = 0$また$1 - t_n = 1$となる確率を表します。
ここまでは、1つのデータでした。次は、複数のデータの場合を考えます。
$N$個のデータ$\mathbf{X} = \{\mathbf{x}_1, \cdots, \mathbf{x}_N\}$、$\mathbf{t} = \{t_1, \cdots, t_N\}$が独立に生成されていると仮定すると、尤度関数は$N$個のベルヌーイ分布の積で表せます。
$$
p(\mathbf{t} | \mathbf{w})
= \prod_{n=1}^N
\mathrm{Bern}(t_n | y_n)
= \prod_{n=1}^N
y_n^{t_n}
(1 - y_n)^{1-t_n}
\tag{4.89}
$$
指数部分の計算を分かりやすくするために対数をとります。また、符号を反転させます(-1を掛けます)。
$$
- \ln p(\mathbf{t} | \mathbf{w})
= - \sum_{n=1}^N
\ln \mathrm{Bern}(t_n | y_n)
= - \sum_{n=1}^N \Bigl\{
t_n \ln y_n
+ (1-t_n) \ln (1 - y_n)
\Bigr\}
\equiv
E(\mathbf{w})
\tag{4.90}
$$
負の値をとるようにした対数尤度関数なので、負の対数尤度関数と言います。これまでは、尤度関数を最大化しました。ここでは、負の対数尤度関数を最小化します。どちらもやっていることは同じです。(勾配法の文脈に合わせるためなのかな?)
またこの式は、交差エントロピー誤差の式でもあります。よって、負の対数尤度関数の最小化(尤度関数の最大化)は、交差エントロピー誤差の最小化とも言えます。
式(4.90)をロジスティック回帰の誤差関数$E(\mathbf{w})$として用います。
・勾配の導出
誤差関数(負の対数尤度関数・交差エントロピー誤差)の勾配を求めます。
上で確認した関数をまとめると、負の対数尤度関数(4.90)は次の式となります。
$$
E(\mathbf{w})
= - \sum_{n=1}^N
\ln p(t_n | \sigma(\mathbf{w}^{\top} \boldsymbol{\phi}_n))
$$
よって、負の対数尤度関数の勾配は、連鎖律(合成関数の微分)により3つの微分の積で求められます。
$$
\frac{\partial E(\mathbf{w})}{\partial \mathbf{w}}
= - \sum_{n=1}^N
\frac{\partial \ln p(t_n | y_n)}{\partial y_n}
\frac{\partial y_n}{\partial a_n}
\frac{\partial a_n}{\partial \mathbf{w}}
\tag{1}
$$
1つ目の項は、対数をとったベルヌーイ分布の微分です。
$$
\begin{aligned}
\frac{\partial \ln p(t_n | y_n)}{\partial y_n}
&= \frac{\partial}{\partial y_n} \Bigl\{
t_n \ln y_n
+ (1-t_n) \ln (1 - y_n)
\Bigr\}
\\
&= \frac{\partial}{\partial y_n}
t_n \ln y_n
+ \frac{\partial}{\partial y_n}
(1-t_n) \ln (1 - y_n)
\\
&= \frac{t_n}{y_n}
+ \frac{1 - t_n}{1 - y_n}
\frac{\partial}{\partial y_n} (1 - y_n)
\\
&= \frac{t_n}{y_n}
+ \frac{1 - t_n}{1 - y_n}
(- 1)
\\
&= \frac{t_n}{y_n}
- \frac{1 - t_n}{1 - y_n}
\end{aligned}
$$
対数の微分$\frac{d \ln x}{d x} = \frac{1}{x}$と合成関数の微分$\{f(g(x))\}' = f'(g(x)) g'(x)$を行っています。
2つ目の項は、ロジスティックシグモイド関数の微分です。
$$
\frac{\partial y_n}{\partial a_n}
= y_n (1 - y_n)
\tag{4.88}
$$
これは「Sigmoid関数の微分【PRMLのノート】 - からっぽのしょこ」で求めました。
3つ目の項は、重み付き和の微分です。
$$
\frac{\partial a_n}{\partial \mathbf{w}}
= \frac{\partial \mathbf{w}^{\top} \boldsymbol{\phi}_n}{\partial \mathbf{w}}
= \boldsymbol{\phi}_n
$$
内積の微分は$\frac{\partial \mathbf{x}^{\top} \mathbf{a}}{\partial \mathbf{x}} = \frac{\partial \mathbf{a}^{\top} \mathbf{x}}{\partial \mathbf{x}} = \mathbf{a}$です。
それぞれ式(1)に代入します。
$$
\begin{align}
\frac{\partial E(\mathbf{w})}{\partial \mathbf{w}}
&= - \sum_{n=1}^N
\frac{\partial \ln p(t_n | y_n)}{\partial y_n}
\frac{\partial y_n}{\partial a_n}
\frac{\partial a_n}{\partial \mathbf{w}}
\tag{1}\\
&= - \sum_{n=1}^N
\left(
\frac{t_n}{y_n}
- \frac{1 - t_n}{1 - y_n}
\right)
y_n (1 - y_n)
\boldsymbol{\phi}_n
\\
&= - \sum_{n=1}^N
\Bigl\{
t_n (1 - y_n)
- (1 - t_n) y_n
\Bigr\}
\boldsymbol{\phi}_n
\\
&= \sum_{n=1}^N
(y_n - t_n)
\boldsymbol{\phi}_n
\equiv
\nabla E(\mathbf{w})
\tag{4.91}
\end{align}
$$
ロジスティック回帰の誤差関数(負の対数尤度関数・交差エントロピー誤差)の勾配$\nabla E(\mathbf{w})$が得られました。
勾配を用いることで、勾配降下法などによってパラメータを更新できます。
4.3.3 反復再重み付け最小二乗
前項では、ロジスティック回帰の誤差関数(負の対数尤度関数・交差エントロピー誤差)の勾配を求めました。これまでは、勾配を0ベクトルとおきパラメータについて解くことで最尤解が得られました。しかし、ロジスティック回帰では最尤解を解析的に求められません。
そこで、2階微分を用いるニュートン-ラフソン法をにより誤差関数を最小化するパラメータを求めます。ニュートン-ラフソン法については「ステップ29:勾配降下法とニュートン法の比較【ゼロつく3のノート(数学)】 - からっぽのしょこ」も参考にしてください(ただし1変量の場合です)。
・ニュートン-ラフソン法
ニュートン-ラフソン法では、次の式でパラメータを更新します。
$$
\mathbf{w}^{(\mathrm{new})}
= \mathbf{w}^{(\mathrm{old})}
- \mathbf{H}^{-1}
\nabla E(\mathbf{w})
\tag{4.92}
$$
ここで、$\mathbf{w}^{(\mathrm{old})}$は現在(更新前)のパラメータ、$\nabla E(\mathbf{w})$は誤差関数の勾配、$\mathbf{H}$はヘッセ行列です。
ヘッセ行列は、2階微分を要素とする行列です。$\mathbf{x} = (x_1, \cdots, x_D)^{\top}$の関数$f(\mathbf{x})$の場合は次の行列になります。
$$
\mathbf{H}
= \begin{pmatrix}
\frac{\partial^2 f(\mathbf{x})}{\partial x_1^2} &
\frac{\partial^2 f(\mathbf{x})}{\partial x_1 \partial x_2} &
\cdots &
\frac{\partial^2 f(\mathbf{x})}{\partial x_1 \partial x_D} \\
\frac{\partial^2 f(\mathbf{x})}{\partial x_2 \partial x_1} &
\frac{\partial^2 f(\mathbf{x})}{\partial x_2^2} &
\cdots &
\frac{\partial^2 f(\mathbf{x})}{\partial x_2 \partial x_D} \\
\vdots & \vdots & \ddots & \vdots \\
\frac{\partial^2 f(\mathbf{x})}{\partial x_D \partial x_1} &
\frac{\partial^2 f(\mathbf{x})}{\partial x_D \partial x_2} &
\cdots &
\frac{\partial^2 f(\mathbf{x})}{\partial x_D^2}
\end{pmatrix}
$$
ロジスティック回帰におけるヘッセ行列を求めて、ニュートン-ラフソン法による更新式を導出します。
・線形回帰モデルの場合
まずは、3.1.1項の線形回帰モデルの場合を考えて、解析的に求めた最尤解と一致するのを確認します。線形回帰モデルの最尤推定については「3.1.1:最尤推定と最小二乗法の導出【PRMLのノート】 - からっぽのしょこ」を参照してください。
・勾配の確認
線形回帰モデルの誤差関数(二乗和誤差関数)は次の式でした。
$$
E_D(\mathbf{w})
= \frac{1}{2}
\sum_{n=1}^N \Bigl(
t_n - \mathbf{w}^{\top} \phi_n
\Bigr)^2
= \frac{1}{2}
\sum_{n=1}^N \Bigl(
\mathbf{w}^{\top} \phi_n - t_n
\Bigr)^2
\tag{3.12}
$$
丸括弧の中が入れ替わっていますが、2乗するので結果は同じです。
また、二乗和誤差関数の勾配(1階微分)は次の式でした。
$$
\frac{\partial E_D(\mathbf{w})}{\partial \mathbf{w}}
= \nabla E_D(\mathbf{w})
= - \sum_{n=1}^N
\Bigl(
t_n - \mathbf{w}^{\top} \phi_n
\Bigr)
\phi_n
= \sum_{n=1}^N
\Bigl(
\mathbf{w}^{\top} \phi_n - t_n
\Bigr)
\phi_n
\tag{4.93.a}
$$
この式を展開して行列の形に書き替えます。この変形も3.1.1項で確認しました。
$$
\begin{align}
\nabla E_D(\mathbf{w})
&= \sum_{n=1}^N
\mathbf{w}^{\top} \phi_n \phi_n
- \sum_{n=1}^N
t_n \phi_n
\\
&= \boldsymbol{\Phi}^{\top} \boldsymbol{\Phi} \mathbf{w}
- \boldsymbol{\Phi}^{\top} \mathbf{t}
\tag{4.93.b}
\end{align}
$$
ここで、$\boldsymbol{\Phi}$は計画行列
$$
\boldsymbol{\Phi}
= \begin{pmatrix}
\phi_{1,0} & \phi_{1,1} & \cdots & \phi_{1,M-1} \\
\phi_{2,0} & \phi_{2,1} & \cdots & \phi_{2,M-1} \\
\vdots & \vdots & \ddots & \vdots \\
\phi_{N,0} & \phi_{N,1} & \cdots & \phi_{N,M-1}
\end{pmatrix}
\tag{3.16}
$$
で、$\phi_{n,j}$は計画行列の各要素の簡易表現$\phi_{n,j} = \phi_j(\mathbf{x}_n)$です。
二乗和誤差関数の勾配(4.93)を用いてヘッセ行列(2階微分)を求めます。
・ヘッセ行列の導出
二乗和誤差関数の勾配(4.93.a)を更に微分して、2階微分を求めます。
$$
\begin{aligned}
\frac{\partial^2 E_D(\mathbf{w})}{\partial \mathbf{w} \partial \mathbf{w}^{\top}}
&= \frac{\partial}{\partial \mathbf{w}}
\frac{\partial E_D(\mathbf{w})}{\partial \mathbf{w}}
\\
&= \sum_{n=1}^N
\frac{\partial}{\partial \mathbf{w}}
\Bigl(
\mathbf{w}^{\top} \phi_n - t_n
\Bigr)
\phi_n
\\
&= \sum_{n=1}^N \left\{
\frac{\partial \mathbf{w}^{\top} \phi_n \phi_n}{\partial \mathbf{w}}
- \frac{\partial t_n \phi_n}{\partial \mathbf{w}}
\right\}
\end{aligned}
$$
後の項は$\mathbf{w}$を含まないので0ベクトルになり消えます。前の項に関して、$\mathbf{w}^{\top} \phi_n$はスカラなので、$\mathbf{w}^{\top} \phi_n = (\mathbf{w}^{\top} \phi_n)^{\top} = \phi_n^{\top} \mathbf{w}$と転置できます。また、掛ける位置を変えても影響しないので$\mathbf{w}^{\top} \phi_n \phi_n = \phi_n \phi_n^{\top} \mathbf{w}$と変形できます。
$$
\frac{\partial^2 E_D(\mathbf{w})}{\partial \mathbf{w} \partial \mathbf{w}^{\top}}
= \sum_{n=1}^N
\frac{\partial \phi_n \phi_n^{\top} \mathbf{w}}{\partial \mathbf{w}}
$$
$\phi_n \phi_n^{\top}$を1つの行列とみなすと、行列$\mathbf{A}$とベクトル$\mathbf{x}$の積の微分$\frac{\partial \mathbf{A} \mathbf{x}}{\partial \mathbf{x}} = \mathbf{A}^{\top}$、転置の性質$(\mathbf{a} \mathbf{b})^{\top} = \mathbf{b}^{\top} \mathbf{a}^{\top}$より
$$
\frac{\partial \phi_n \phi_n^{\top} \mathbf{w}}{\partial \mathbf{w}}
= (\phi_n \phi_n^{\top})^{\top}
= \phi_n \phi_n^{\top}
$$
となります。
この式を上の式に代入します。
$$
\frac{\partial^2 E_D(\mathbf{w})}{\partial \mathbf{w} \partial \mathbf{w}^{\top}}
= \sum_{n=1}^N
\phi_n \phi_n^{\top}
= \boldsymbol{\Phi}^{\top} \boldsymbol{\Phi}
\equiv
\nabla \nabla E_D(\mathbf{w})
$$
二乗和誤差関数の2階微分$\nabla \nabla E_D(\mathbf{w})$が得られました($\nabla^2 E(\mathbf{w})$と書く場合もあります)。
この式は、式(4.93.b)を使っても求められます。
$$
\begin{aligned}
\nabla \nabla E_D(\mathbf{w})
&= \frac{\partial}{\partial \mathbf{w}}
\frac{\partial E_D(\mathbf{w})}{\partial \mathbf{w}}
\\
&= \frac{\partial}{\partial \mathbf{w}} \Bigl\{
\boldsymbol{\Phi}^{\top} \boldsymbol{\Phi} \mathbf{w}
- \boldsymbol{\Phi}^{\top} \mathbf{t}
\Bigr\}
\\
&= \frac{\partial \boldsymbol{\Phi}^{\top} \boldsymbol{\Phi} \mathbf{w}}{\partial \mathbf{w}}
- \frac{\partial \boldsymbol{\Phi}^{\top} \mathbf{t}}{\partial \mathbf{w}}
\\
&= (\boldsymbol{\Phi}^{\top} \boldsymbol{\Phi})^{\top}
\\
&= \boldsymbol{\Phi}^{\top} \boldsymbol{\Phi}
\end{aligned}
$$
こちらも$\boldsymbol{\Phi}^{\top} \boldsymbol{\Phi}$を1つの行列とみなして、行列とベクトルの積の微分を行っています。
以上で、二乗和誤差関数のヘッセ行列$\mathbf{H}$
$$
\nabla \nabla E_D(\mathbf{w})
= \sum_{n=1}^N
\phi_n \phi_n^{\top}
= \boldsymbol{\Phi}^{\top} \boldsymbol{\Phi}
\equiv
\mathbf{H}
\tag{4.94}
$$
が得られました。
・更新式の導出
ニュートン-ラフソン法の更新式(4.92)にそれぞれ代入します。
$$
\begin{align}
\mathbf{w}^{(\mathrm{new})}
&= \mathbf{w}^{(\mathrm{old})}
- \mathbf{H}^{-1}
\nabla E(\mathbf{w})
\tag{4.92}\\
&= \mathbf{w}^{(\mathrm{old})}
- (\boldsymbol{\Phi}^{\top} \boldsymbol{\Phi})^{-1} \Bigl(
\boldsymbol{\Phi}^{\top} \boldsymbol{\Phi} \mathbf{w}^{(\mathrm{old})}
- \boldsymbol{\Phi}^{\top} \mathbf{t}
\Bigr)
\\
&= (\boldsymbol{\Phi}^{\top} \boldsymbol{\Phi})^{-1}
\boldsymbol{\Phi}^{\top} \mathbf{t}
= \mathbf{w}_{\mathrm{ML}}
\tag{4.95}
\end{align}
$$
線形回帰モデルにおける最尤解(3.15)に一致しているのを確認できました。
・ロジスティック回帰の場合
では、ロジスティック回帰の更新式を導出します。
前項で求めたロジスティック回帰の誤差関数(負の対数尤度関数・交差エントロピー誤差)の勾配(1階微分)は次のように変形できます。
$$
\begin{align}
\nabla E(\mathbf{w})
&= \sum_{n=1}^N
(y_n - t_n)
\boldsymbol{\phi}_n
\tag{4.91}\\
&= \begin{pmatrix}
\sum_{n=1}^N (y_n - t_n) \phi_{n,1} \\
\sum_{n=1}^N (y_n - t_n) \phi_{n,2} \\
\vdots \\
\sum_{n=1}^N (y_n - t_n) \phi_{n,M}
\end{pmatrix}
\\
&= \begin{pmatrix}
\phi_{1,0} & \phi_{2,0} & \cdots & \phi_{N,0} \\
\phi_{1,1} & \phi_{2,1} & \cdots & \phi_{N,1} \\
\vdots & \vdots & \ddots & \vdots \\
\phi_{1,M-1} & \phi_{2,M-1} & \cdots & \phi_{N,M-1}
\end{pmatrix}
\begin{pmatrix}
y_1 - t_2 \\ y_1 - t_2 \\ \vdots \\ y_N - t_N
\end{pmatrix}
\\
&= \boldsymbol{\Phi}^{\top}
(\mathbf{y} - \mathbf{t})
\tag{4.96}
\end{align}
$$
この式からヘッセ行列(2階微分)を求めます。
・ヘッセ行列の導出
誤差関数のヘッセ行列は、式(4.91)と式(4.96)のどちらからでも求められます。
・パターン1
誤差関数の勾配(4.91)を更に微分します。
$$
\begin{aligned}
\frac{\partial^2 E(\mathbf{w})}{\partial \mathbf{w} \partial \mathbf{w}^{\top}}
&= \frac{\partial}{\partial \mathbf{w}}
\frac{\partial E(\mathbf{w})}{\partial \mathbf{w}}
\\
&= \sum_{n=1}^N
\frac{\partial}{\partial \mathbf{w}}
(y_n - t_n)
\boldsymbol{\phi}_n
\\
&= \sum_{n=1}^N \left\{
\frac{\partial y_n \boldsymbol{\phi}_n}{\partial \mathbf{w}}
- \frac{\partial t_n \boldsymbol{\phi}_n}{\partial \mathbf{w}}
\right\}
\end{aligned}
$$
後の項は、$\mathbf{w}$を含まないので0行列になり消えます。前の項に関して、スカラ$v = v(\mathbf{x})$とベクトル$\mathbf{a}$の積の微分$\frac{\partial v \mathbf{a}}{\partial \mathbf{x}} = \frac{\partial v}{\partial \mathbf{x}} \mathbf{a}^{\top}$より
$$
\frac{\partial y_n \boldsymbol{\phi}_n}{\partial \mathbf{w}}
= \frac{\partial y_n }{\partial \mathbf{w}}
\boldsymbol{\phi}_n^{\top}
$$
となります。また、連鎖律(合成関数の微分)により2つの微分の積に分解できます。
$$
\begin{aligned}
\frac{\partial y_n}{\partial \mathbf{w}}
&= \frac{\partial y_n}{\partial a_n}
\frac{\partial a_n}{\partial \mathbf{w}}
\\
&= y_n (1 - y_n)
\boldsymbol{\phi}_n
\end{aligned}
$$
前の項はロジスティックシグモイド関数の微分、後の項は重み付き和の微分です。どちらも前項で求めしました。
この式を上の式に代入します。
$$
\frac{\partial^2 E(\mathbf{w})}{\partial \mathbf{w} \partial \mathbf{w}^{\top}}
= \sum_{n=1}^N
y_n (1 - y_n)
\boldsymbol{\phi}_n
\boldsymbol{\phi}_n^{\top}
\equiv
\nabla \nabla E(\mathbf{w})
$$
誤差関数の2階微分$\nabla \nabla E(\mathbf{w})$が得られました。
この式を行列に変形します。
$$
\begin{aligned}
\nabla \nabla E(\mathbf{w})
&= \sum_{n=1}^N
y_n (1 - y_n)
\boldsymbol{\phi}_n \boldsymbol{\phi}_n^{\top}
\\
&= \sum_{n=1}^N
y_n (1 - y_n)
\begin{pmatrix}
\phi_{n,0} \phi_{n,0} & \phi_{n,0} \phi_{n,1} & \cdots & \phi_{n,0} \phi_{n,M-1} \\
\phi_{n,1} \phi_{n,0} & \phi_{n,1} \phi_{n,1} & \cdots & \phi_{n,1} \phi_{n,M-1} \\
\vdots & \vdots & \ddots & \vdots \\
\phi_{n,M-1} \phi_{n,0} & \phi_{n,M-1} \phi_{n,1} & \cdots & \phi_{n,M-1} \phi_{n,M-1}
\end{pmatrix}
\\
&= \begin{pmatrix}
\sum_{n=1}^N y_n (1 - y_n) \phi_{n,0} \phi_{n,0} &
\sum_{n=1}^N y_n (1 - y_n) \phi_{n,0} \phi_{n,1} &
\cdots &
\sum_{n=1}^N y_n (1 - y_n) \phi_{n,0} \phi_{n,M-1} \\
\sum_{n=1}^N y_n (1 - y_n) \phi_{n,1} \phi_{n,0} &
\sum_{n=1}^N y_n (1 - y_n) \phi_{n,1} \phi_{n,1} &
\cdots &
\sum_{n=1}^N y_n (1 - y_n) \phi_{n,1} \phi_{n,M-1} \\
\vdots & \vdots & \ddots & \vdots \\
\sum_{n=1}^N y_n (1 - y_n) \phi_{n,M-1} \phi_{n,0} &
\sum_{n=1}^N y_n (1 - y_n) \phi_{n,M-1} \phi_{n,1} &
\cdots &
\sum_{n=1}^N y_n (1 - y_n) \phi_{n,M-1} \phi_{n,M-1}
\end{pmatrix}
\end{aligned}
$$
さらに、この行列は3つの行列の積に分解できます。
$$
\begin{aligned}
\nabla \nabla E(\mathbf{w})
&= \begin{pmatrix}
\phi_{1,0} & \phi_{2,0} & \cdots & \phi_{N,0} \\
\phi_{1,1} & \phi_{2,1} & \cdots & \phi_{N,1} \\
\vdots & \vdots & \ddots & \vdots \\
\phi_{1,M-1} & \phi_{2,M-1} & \cdots & \phi_{N,M-1}
\end{pmatrix}
\begin{pmatrix}
y_1 (1 - y_1) \phi_{1,0} & y_1 (1 - y_1) \phi_{1,1} & \cdots & y_1 (1 - y_1) \phi_{1,M-1} \\
y_2 (1 - y_2) \phi_{2,0} & y_2 (1 - y_2) \phi_{2,1} & \cdots & y_2 (1 - y_2) \phi_{2,M-1} \\
\vdots & \vdots & \ddots & \vdots \\
y_N (1 - y_N) \phi_{N,0} & y_N (1 - y_N) \phi_{N,1} & \cdots & y_N (1 - y_N) \phi_{N,M-1}
\end{pmatrix}
\\
&= \begin{pmatrix}
\phi_{1,0} & \phi_{2,0} & \cdots & \phi_{N,0} \\
\phi_{1,1} & \phi_{2,1} & \cdots & \phi_{N,1} \\
\vdots & \vdots & \ddots & \vdots \\
\phi_{1,M-1} & \phi_{2,M-1} & \cdots & \phi_{N,M-1}
\end{pmatrix}
\begin{pmatrix}
y_1 (1 - y_1) & 0 & \cdots & 0 \\
0 & y_2 (1 - y_2) & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & y_N (1 - y_N)
\end{pmatrix}
\begin{pmatrix}
\phi_{1,0} & \phi_{1,1} & \cdots & \phi_{1,M-1} \\
\phi_{2,0} & \phi_{2,1} & \cdots & \phi_{2,M-1} \\
\vdots & \vdots & \ddots & \vdots \\
\phi_{N,0} & \phi_{N,1} & \cdots & \phi_{N,M-1}
\end{pmatrix}
\\
&= \boldsymbol{\Phi}^{\top} \mathbf{R} \boldsymbol{\Phi}
\end{aligned}
$$
対角要素が$R_{n,n} = y_n (1 - y_n)$の対角行列を$\mathbf{R}$とおきました。
・パターン2
式(4.96)を使っても求められます。
$$
\begin{aligned}
\frac{\partial^2 E(\mathbf{w})}{\partial \mathbf{w} \partial \mathbf{w}^{\top}}
&= \frac{\partial}{\partial \mathbf{w}}
\frac{\partial E(\mathbf{w})}{\partial \mathbf{w}}
\\
&= \frac{\partial}{\partial \mathbf{w}}
\boldsymbol{\Phi}^{\top} (\mathbf{y} - \mathbf{t})
\\
&= \frac{\partial \boldsymbol{\Phi}^{\top} \mathbf{y}}{\partial \mathbf{w}}
- \frac{\partial \boldsymbol{\Phi}^{\top} \mathbf{t}}{\partial \mathbf{w}}
\end{aligned}
$$
後の項は$\mathbf{w}$を含みません。前の項に関して、行列$\mathbf{A}$とベクトル$\mathbf{u} = u(\mathbf{x})$の積の微分$\frac{\partial \mathbf{A} \mathbf{u}}{\partial \mathbf{x}} = \frac{\partial \mathbf{u}}{\partial \mathbf{x}} \mathbf{A}^{\top}$より
$$
\frac{\partial \boldsymbol{\Phi}^{\top} \mathbf{y}}{\partial \mathbf{w}}
= \frac{\partial \mathbf{y}}{\partial \mathbf{w}}
\boldsymbol{\Phi}
$$
となります。さらに、ベクトル$\mathbf{u} = u(\mathbf{x})$の合成関数$g(\mathbf{u})$の微分$\frac{\partial g(\mathbf{u})}{\partial \mathbf{x}} = \frac{\partial \mathbf{u}}{\partial \mathbf{x}} \frac{\partial g(\mathbf{u})}{\partial \mathbf{u}}$より
$$
\frac{\partial y_n}{\partial \mathbf{w}}
= \frac{\partial \mathbf{a}}{\partial \mathbf{w}}
\frac{\partial \mathbf{y}}{\partial \mathbf{a}}
$$
と分解できます。この式の前の項は、行列とベクトルの積の微分より
$$
\frac{\partial \mathbf{a}}{\partial \mathbf{w}}
= \frac{\partial \boldsymbol{\Phi} \mathbf{w}}{\partial \mathbf{w}}
= \boldsymbol{\Phi}^{\top}
$$
となります。また、後の項は
$$
\begin{aligned}
\frac{\partial \mathbf{y}}{\partial \mathbf{a}}
&= \begin{pmatrix}
\frac{\partial y_1}{\partial a_1} & \frac{\partial y_2}{\partial a_1} & \cdots & \frac{\partial y_N}{\partial a_1} \\
\frac{\partial y_1}{\partial a_2} & \frac{\partial y_2}{\partial a_2} & \cdots & \frac{\partial y_N}{\partial a_2} \\
\vdots & \ddots & \vdots \\
\frac{\partial y_1}{\partial a_N} & \frac{\partial y_2}{\partial a_N} & \cdots & \frac{\partial y_N}{\partial a_N}
\end{pmatrix}
\\
&= \begin{pmatrix}
y_1 (1 - y_1) & 0 & \cdots & 0 \\
0 & y_2 (1 - y_2) & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & y_N (1 - y_N)
\end{pmatrix}
= \mathbf{R}
\end{aligned}
$$
となります。対角要素は、ロジスティックシグモイド関数の微分です。それ以外の要素は、$\frac{\partial \sigma(a_i)}{\partial a_j} = 0\ (i \neq j)$となります。
それぞれ上の式に代入します。
$$
\frac{\partial^2 E(\mathbf{w})}{\partial \mathbf{w} \partial \mathbf{w}^{\top}}
= \boldsymbol{\Phi}^{\top} \mathbf{R} \boldsymbol{\Phi}
= \nabla \nabla E(\mathbf{w})
$$
先ほど同じ式になりました。
以上で、ロジスティック回帰におけるヘッセ行列$\mathbf{H}$
$$
\nabla \nabla E(\mathbf{w})
= \sum_{n=1}^N
y_n (1 - y_n)
\boldsymbol{\phi}_n \boldsymbol{\phi}_n^{\top}
= \boldsymbol{\Phi}^{\top} \mathbf{R} \boldsymbol{\Phi}
\equiv
\mathbf{H}
\tag{4.97}
$$
が得られました。
・更新式の導出
ニュートン-ラフソン法の更新式(4.92)にそれぞれ代入します。
$$
\begin{align}
\mathbf{w}^{(\mathrm{new})}
&= \mathbf{w}^{(\mathrm{old})}
- \mathbf{H}^{-1}
\nabla E(\mathbf{w})
\tag{4.92}\\
&= \mathbf{w}^{(\mathrm{old})}
- (\boldsymbol{\Phi}^{\top} \mathbf{R} \boldsymbol{\Phi})^{-1}
\boldsymbol{\Phi}^{\top} (\mathbf{y} - \mathbf{t})
\end{align}
$$
この式を次のように変形します。
$$
\begin{align}
\mathbf{w}^{(\mathrm{new})}
&= (\boldsymbol{\Phi}^{\top} \mathbf{R} \boldsymbol{\Phi})^{-1} \Bigl\{
\boldsymbol{\Phi}^{\top} \mathbf{R} \boldsymbol{\Phi}
\mathbf{w}^{(\mathrm{old})}
- \boldsymbol{\Phi}^{\top} (\mathbf{y} - \mathbf{t})
\Bigr\}
\\
&= (\boldsymbol{\Phi}^{\top} \mathbf{R} \boldsymbol{\Phi})^{-1}
\boldsymbol{\Phi}^{\top} \mathbf{R} \Bigl\{
\boldsymbol{\Phi} \mathbf{w}^{(\mathrm{old})}
- \mathbf{R}^{-1}
(\mathbf{y} - \mathbf{t})
\Bigr\}
\\
&= (\boldsymbol{\Phi}^{\top} \mathbf{R} \boldsymbol{\Phi})^{-1}
\boldsymbol{\Phi}^{\top} \mathbf{R}
\mathbf{z}
\tag{4.99}
\end{align}
$$
前の式から1行目では、$\boldsymbol{\Phi}^{\top} \mathbf{R} \boldsymbol{\Phi}$を括り出しています。
1行目から2行目では、$\boldsymbol{\Phi}^{\top} \mathbf{R}$を波括弧の外に括り出しています。
2行目から3行目では、波括弧を$\mathbf{z}$とおきました。
$$
\mathbf{z}
= \boldsymbol{\Phi} \mathbf{w}^{(\mathrm{old})}
- \mathbf{R}^{-1} (\mathbf{y} - \mathbf{t})
\tag{4.110}
$$
$\mathbf{z}$は$N$次元ベクトルです。
ニュートン-ラフソン法によるロジスティック回帰のパラメータの更新式が得られました。
参考文献
私のブログと近いコンセプト(?)でPRML他の行間埋めをされているブログなので、一緒に読むと補完できて理解しやすいと思います。特に、私が今のところやるつもりのない演習問題も充実しています。
おわりに
2階微分の式で転置が合わなかった、、ベクトルの微分やベクトルでの微分について教えてもらって解決しました。
この記事の投稿日は、モーニング娘。'21の70枚目のシングルの発売日です!3曲続けてどーぞ♪♪♪
70thシングルって凄いなぁって感動したいところだけど、まーちゃんのラストシングルと思うとあぁ…
【次節の内容】
www.anarchive-beta.com