ロジスティック回帰のコスト関数の Gradient Descent 導出

Coursera の Andrew Ng 先生が講師をしている Machine Learning を受講しています。その3週目でロジスティック回帰のコスト関数の Gradient Descent が導出なしに紹介されていたため、導出をメモとして残しておきます。

ロジスティック回帰のコスト関数

ロジスティック回帰のコスト関数  J(\theta) は、以下の式で与えられます。


\begin{align}
J(\theta) = - \frac{1}{m} \sum _ {i=1} ^ {m} \left(
    y ^ {(i)} \log h _ {\theta}(x ^ {i}) + (1-y ^ {(i)}) \log {(1-h _ {\theta}(x ^ {(i)}))}
\right) \tag{1}
\end{align}

この  J(\theta) を 各  \theta の要素で偏微分することでコスト関数の Gradient Descent が求まります。

\begin{equation}
\frac{\partial}{\partial \theta _ {j}}J(\theta) = \frac{1}{m}\sum _ {i=i} ^ {m}
    \left(h _ {\theta}(x ^ {(i)}) - y ^ {(i)}
    \right) x ^ {(i)} \tag{2}
\end{equation}
この (2)式 の導出を行います。

準備

(2)式 を導出するために、事前にいくつかの式を計算しておきます。

まず、  h _ {\theta}(x ^ {(i)}) はシグモイド関数であり、次の式で表されます。

\begin{equation}
h _ {\theta}(x ^ {(i)}) = \frac{1}{1+e ^ {- \theta ^ {T} \cdot x}} \tag{3}
\end{equation}

(3)式 より、

\begin{equation}
1 - h _ {\theta}(x ^ {(i)}) = \frac{e ^ {-\theta ^ T \cdot x}}{1+e ^ {-\theta ^ T \cdot x}} \tag{4}
\end{equation}

(3), (4)式 より、


\begin{align}
\frac{h _ {\theta}(x ^ {(i)})}{1-h _ {\theta}(x ^ {(i)})} &=
    \frac{1}{1+e ^ {- \theta ^ {T} \cdot x}} \cdot \frac{1+e ^ {-\theta ^ Tx}}{e ^ {-\theta ^ T \cdot x}} \notag \\
&= \frac{1}{e ^ {-\theta ^ T \cdot x}} \notag \\
&= e^{\theta ^ T \cdot x} \tag{5}
\end{align}

(5)式 より、

\begin{equation}
\log \frac{h _ {\theta}(x ^ {(i)})}{1-h _ {\theta}(x ^ {(i)})} =
    \log e ^ {\theta ^ T \cdot x} =
    \theta ^ T \cdot x \tag{6}
\end{equation}

また、


\begin{align}
\frac{\partial}{\partial \theta _ {j}} \log (1-h _ {\theta}(x ^ {(i)})) &= 
    \frac{\partial (1-h _ {\theta}(x ^ {(i)}))}{\partial \theta _ {j}} \cdot
    \frac{\partial}{\partial (1-h _ {\theta}(x ^ {(i)}))} 
    \log (1-h_{\theta}(x^{(i)})) \notag \\
%
&= \frac{\partial h _ {\theta}(x ^ {(i)})}{\partial \theta _ {j}} \cdot
    \frac{\partial}{\partial h _ {\theta}(x ^ {(i)})} (1-h _ {\theta}(x ^ {(i)})) \cdot
    \frac{1}{1-h _ {\theta}(x ^ {(i)}} \notag \\
% by eq(3)
&= \frac{\partial}{\partial \theta _ {j}} \frac{1}{1+e ^ {-\theta ^ {T} \cdot x}} \cdot
    (-1) \cdot \frac{1}{1-h _ {\theta}(x ^ {(i)})} \tag{7} \\
% by eq(4)
&= \frac{\partial (1+e ^ {-\theta ^ {T} \cdot x})}{\partial \theta _ {j}} \cdot
    \frac{\partial}{\partial (1+e ^ {-\theta ^ {T} \cdot x})} \frac{1}{1+e ^ {-\theta ^ {T} \cdot x}} \cdot
    -\frac{1+e ^ {-\theta ^ T \cdot x}}{e ^ {-\theta ^ T \cdot x}} \tag{8} \\
%
&= \frac{\partial }{\partial \theta _ {j}}{(1+e ^ {-\theta ^ {T} \cdot x})} \cdot
    -(1+e ^ {-\theta ^ {T} \cdot x}) ^ {-2} \cdot
     -\frac{1+e ^ {-\theta ^ T \cdot x}}{e ^ {-\theta ^ T \cdot x}} \notag \\
%
&= -x e ^ {-\theta ^ {T} \cdot x} \cdot 
    \frac{1}{e ^ {-\theta ^ {T} \cdot x} \cdot (1+e ^ {-\theta ^ T \cdot x})} \notag \\
%
&= - \frac{x}{1+e ^ {-\theta ^ T \cdot x}} \notag \\
%
&= -h _ {\theta}(x ^ {(i)}) \cdot x \tag{9}
\end{align}

(7}式(3}式 の代入によって、 (8)式(4)式 の代入によって得られます。

コスト関数の偏微分

まず、 (1)式 のコスト関数の変形を行い、  y^{(i)} をまとめます。


\begin{align}
    \frac{\partial}{\partial \theta _ {j}}J(\theta) 
    &= -\frac{1}{m}\sum_{i=1}^{m}
        \frac{\partial}{\partial \theta_{j}}\left(
            y^{(i)} \log h_{\theta}(x^{(i)}) + (1-y^{(i)})\log (1-h_{\theta}(x^{(i)}))
        \right) \notag \\
%
    &= -\frac{1}{m}\sum_{i=1}^{m}\frac{\partial}{\partial \theta_{j}}\left(
            y^{(i)} \log \frac{h_{\theta}(x^{(i)})}{(1-h_{\theta}(x^{(i)}))} +
            \log (1-h_{\theta}(x^{(i)}))
        \right) \tag{10}
\end{align}

ここで、(10)式 の大カッコ内の第一項に (5)式 を代入することで、(11)式 を得られます。


\begin{equation}
\frac{\partial}{\partial \theta_{j}}J(\theta) = -\frac{1}{m}\sum_{i=1}^{m}\frac{\partial}{\partial \theta_{j}}\left(
    y^{(i)} \log e^{\theta^{T} \cdot x} +
    \log (1-h_{\theta}(x^{(i)}))
\right) \tag{11}
\end{equation}

最後に、総和内の偏微分を行い、(2)式 を導出します。


\begin{align}
\frac{\partial}{\partial \theta_{j}}J(\theta) 
    &= -\frac{1}{m}\sum_{i=1}^{m}\frac{\partial}{\partial \theta_{j}}\left(
        y^{(i)} (\theta^{T} \cdot x) +
        \log (1-h_{\theta}(x^{(i)}))
    \right) \notag \\
%
    &= -\frac{1}{m}\sum_{i=1}^{m} \left(
        y^{(i)} \cdot x +
        \left(-h_{\theta}(x^{(i)}) \cdot x \right)
    \right) \tag{12} \\
%
    &= \frac{1}{m}\sum_{i=1}^{m} \left(
        h_{\theta}(x^{(i)}) - y^{(i)}
    \right) x  \tag{13}
\end{align}

なお、 (12)式 は大カッコ内の第二項の偏微分に (9)式 を代入することで得られます。