機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

ロジスティック回帰 - 2クラス分類

確率的識別モデル

2クラス分類問題における確率モデルの場合、目的変数は2値表現が一般的です。
その表記では、クラスC_1t=1で表現し、クラスC_2t=0で表現する1つの目的変数t\in\{0,1\}が使用されます。
tの値はクラスがC_1である確率として解釈できます。

t=1である確率を出力するモデルを定義したいが、
回帰同様、{\bf w}^\top{\boldsymbol\phi}({\bf x})をモデルとしてしまうと、
値域が(-\infty,\infty)となってしまい、確率の公理を満たしません。

そこで、以下のようにします。\boldsymbol\phiを特徴ベクトルとします。

\begin{eqnarray}
p(t=1|{\boldsymbol\phi})=y({\boldsymbol\phi})=\sigma({\bf w}^\top{\boldsymbol\phi})\tag{1}
\end{eqnarray}

ここで\sigma(\cdot)シグモイド関数です。

(1)の値域は[0,1]なので確率の公理を満たしています。
また(1)より、t=0の事後分布は、以下のように書けます。

\begin{eqnarray}
p(t=0|{\boldsymbol\phi})=1-\sigma({\bf w}^\top{\boldsymbol\phi})\tag{2}
\end{eqnarray}

(1),(2)を合わせて書くことができます。

\begin{eqnarray}
p(t|{\boldsymbol\phi})=\sigma({\bf w}^\top{\boldsymbol\phi})^t(1-\sigma({\bf w}^\top{\boldsymbol\phi}))^{1-t}\tag{3}
\end{eqnarray}

\bf wが求まったとして、新たな入力\bf xに対して、クラスC_kを予測する場合は以下のようにします。

\begin{eqnarray}

\left\{
    \begin{array}{l}
    C_1\hspace{20px}\sigma({\bf w}^\top{\boldsymbol\phi}({\bf x})) > 0.5\\
    C_2\hspace{20px} それ以外
    \end{array}\tag{4}
  \right.
\end{eqnarray}

目的関数

データ集合\{{\boldsymbol\phi}_n,t_n\},t_n\in\{0,1\}であり、{\boldsymbol\phi}_n={\boldsymbol\phi}({\bf x}_n)n=1,\ldots,Nに対する尤度関数は、

\begin{eqnarray}
p({\bf t}|{\bf w})=\prod_{n=1}^Ny_n^{t_n}(1-y_n)^{1-t_n}\tag{5}
\end{eqnarray}

と書けます。
ここで{\bf t}=(t_1,\ldots,t_N)^\topであり、y_n=p(t=1|{\boldsymbol\phi}_n)です。
(5)に負の対数を取ります。

\begin{eqnarray}
E({\bf w})&=&-\ln p({\bf t}|{\bf w})\\
&=&-\sum_{n=1}^N(t_n\ln y_n+(1-t_n)\ln(1-y_n))\tag{6}
\end{eqnarray}

目的関数(6)を交差エントロピー誤差関数と呼びます。

目的関数の微分

この目的関数は解析的に解くことができないので、目的関数の勾配ベクトルを求めて数値的に(最急降下法など)解くことを考えます。

\begin{eqnarray}
\nabla E({\bf w})&=&\frac{\partial}{\partial{\bf w}}E({\bf w})\\
&=&\frac{\partial}{\partial{\bf w}}\left(-\sum_{n=1}^N(t_n\ln y_n+(1-t_n)\ln(1-y_n))\right)\\
&=&-\sum_{n=1}^N\left(\frac{\partial}{\partial{\bf w}}t_n\ln y_n+\frac{\partial}{\partial{\bf w}}(1-t_n)\ln(1-y_n)\right)\\
&=&-\sum_{n=1}^N\left(\frac{\partial}{\partial y_n}t_n\ln y_n\frac{\partial}{\partial a}\sigma(a)\frac{\partial}{\partial{\bf w}}{\bf w}^\top{\boldsymbol\phi}_n+\frac{\partial}{\partial y_n}(1-t_n)\ln(1-y_n)\frac{\partial}{\partial a}\sigma(a)\frac{\partial}{\partial{\bf w}}{\bf w}^\top{\boldsymbol\phi}_n\right)\\
&=&-\sum_{n=1}^N\left(\frac{t_n}{y_n}y_n(1-y_n){\boldsymbol\phi}_n+(-1)\frac{1-t_n}{1-y_n}y_n(1-y_n){\boldsymbol\phi}_n\right)\\
&=&-\sum_{n=1}^N\left(t_n(1-y_n){\boldsymbol\phi}_n-(t_n-1)y_n{\boldsymbol\phi}_n\right)\\
&=&-\sum_{n=1}^N(t_n-t_ny_n+t_ny_n-y_n){\boldsymbol\phi}_n\\
&=&\sum_{n=1}^N(y_n-t_n){\boldsymbol\phi}_n\tag{7}\\
\end{eqnarray}

(7)の4行目でa={\bf w}^\top{\boldsymbol\phi}_nとおきました。

勾配ベクトル\nabla E({\bf w})が求まりました。
最急降下法で解く場合、以下の更新式を収束するまで繰り返せば{\bf w}が求まります。

\begin{eqnarray}
{\bf w}^{(new)}={\bf w}^{(old)}-\eta\nabla E({\bf w}^{(old)})\tag{8}
\end{eqnarray}

\eta > 0は学習パラメータです。

偉人の名言

f:id:olj611:20210415184027p:plain:w300
夢中で日を過ごしておれば、
いつかわかる時が来る。
坂本龍馬

参考文献

パターン認識機械学習 上巻

動画

目次へ戻る