機械学習基礎理論独習

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

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

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

確率的識別モデル

2クラス分類(K=2)のロジスティック回帰では、目的変数(ラベル)はt\in\{0,1\}でした。
多クラス分類(K > 2)のロジスティック回帰では、目的変数に対して1-of-K符号化法を使用します。
例えば、5クラスの場合、クラス2のパターンは次の目的変数ベクトルで与えられます。

\begin{eqnarray}
{\bf t}=(0,1,0,0,0)^\top\tag{1}
\end{eqnarray}

2クラス分類のロジスティック回帰ではシグモイド関数を用いましたが、
多クラス分類のロジスティック回帰ではソフトマックス関数を用います。

C_kの事後確率を以下のようにします。

\begin{eqnarray}
p(C_k|{\boldsymbol\phi})=y_k({\boldsymbol\phi})=\frac{\exp(a_k)}{\sum_j\exp(a_j)}\tag{2}
\end{eqnarray}

ここで、a_k

\begin{eqnarray}
a_k={\bf w}_k^\top{\boldsymbol\phi}\tag{3}
\end{eqnarray}

としました。

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

\newcommand{\argmax}{\mathop{\rm arg~max}\limits}\begin{eqnarray}
\argmax_{k}\left(\frac{\exp({\bf w}_k^\top{\boldsymbol\phi}({\bf x}))}{\sum_j\exp(a_j)}\right)\tag{4}
\end{eqnarray}

(4)\bf xに対する事後確率が最大のクラスを採用するという意味です。

目的関数

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

\begin{eqnarray}
p({\bf T}|{\bf w}_1,\ldots,{\bf w}_K)=\prod_{n=1}^N\prod_{k=1}^Kp(C_k|{\boldsymbol\phi})^{t_{nk}}=\prod_{n=1}^N\prod_{k=1}^Ky_{nk}^{t_{nk}}\tag{5}
\end{eqnarray}

と書けます。
ここで、y_{nk}=y_k({\boldsymbol\phi}_n)であり、{\bf T}t_{nk}を要素とする目的関数のN\times K行列です。
(5)に負の対数を取ります。

\begin{eqnarray}
E({\bf w}_1,\ldots,{\bf w}_K)&=&-\ln p({\bf T}|{\bf w}_1,\ldots,{\bf w}_K)\\
&=&-\sum_{n=1}^N\sum_{k=1}^Kt_{nk}\ln y_{nk}\tag{6}
\end{eqnarray}

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

目的関数の微分

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

目的関数E({\bf w}_1,\ldots,{\bf w}_K){\bf w}_j偏微分します。

\begin{eqnarray}
\nabla_{{\bf w}_j}E({\bf w}_1,\ldots,{\bf w}_K)&=&\frac{\partial}{\partial{\bf w}_j}E({\bf w}_1,\ldots,{\bf w}_K)\\
&=&\frac{\partial}{\partial{\bf w}_j}\left(-\sum_{n=1}^N\sum_{k=1}^Kt_{nk}\ln y_{nk}\right)\\
&=&-\sum_{n=1}^N\sum_{k=1}^K\frac{\partial}{\partial{\bf w}_j}t_{nk}\ln y_{nk}\\
&=&-\sum_{n=1}^N\sum_{k=1}^Kt_{nk}\frac{\partial}{\partial y_{nk}}\ln y_{nk}\frac{\partial}{\partial a_j}y_{nk}\frac{\partial}{\partial {\bf w}_j}a_j\\
&=&-\sum_{n=1}^N\sum_{k=1}^K\frac{t_{nk}}{y_{nk}}y_{nk}(I_{kj}-y_{nj}){\boldsymbol\phi}_n\\
&=&\sum_{n=1}^N\sum_{k=1}^K t_{nk}(y_{nj}-I_{kj}){\boldsymbol\phi}_n\\
&=&\sum_{n=1}^N\left(\sum_{k=1}^K t_{nk}y_{nj}{\bf x}_n-\sum_{k=1}^K t_{nk}I_{kj}{\boldsymbol\phi}_n\right)\tag{7}\\
\end{eqnarray}

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

(7)\sum_{k=1}^K t_{nk}y_{nj}{\boldsymbol\phi}_n\sum_{k=1}^K t_{nk}I_{kj}{\boldsymbol\phi}_nを別々に計算します。

\begin{eqnarray}
\sum_{k=1}^K t_{nk}y_{nj}{\boldsymbol\phi}_n&=&y_{nj}{\boldsymbol\phi}_n\sum_{k=1}^Kt_{nk}\\
&=&y_{nj}{\boldsymbol\phi}_n\tag{8}
\end{eqnarray}

(8)では\sum_{k=1}^K t_{nk}=1を使いました。

\begin{eqnarray}
\sum_{k=1}^K t_{nk}I_{kj}{\boldsymbol\phi}_n&=&{\boldsymbol\phi}_n\sum_{k=1}^K t_{nk}I_{kj}\\
&=&{\boldsymbol\phi}_n(t_{ni}I_{ij}+\cdots+t_{nj}I_{jj}+\cdots+t_{nK}I_{Kj})\\
&=&t_{nj}{\boldsymbol\phi}_n\tag{9}
\end{eqnarray}

(9)の2行目から3行目では、I_{jj}=1よりt_{nj}I_{jj}の項だけが残ることを用いました。

(8),(9)(7)に代入します。

\begin{eqnarray}
\nabla_{{\bf w}_j}E({\bf w}_1,\ldots,{\bf w}_K)&=&\sum_{n=1}^N(y_{nj}{\boldsymbol\phi}_n-t_{nj}{\boldsymbol\phi}_n)\\
&=&\sum_{n=1}^N(y_{nj}-t_{nj}){\boldsymbol\phi}_n\tag{10}
\end{eqnarray}

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

\begin{eqnarray}
{\bf w}^{(new)}_j={\bf w}^{(old)}_j-\eta\nabla_{{\bf w}^{(old)}_j} E({\bf w}_1^{(old)},\ldots,{\bf w}_K^{(old)})\tag{11}
\end{eqnarray}

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

偉人の名言


抜け出すための一番の方法は、やり抜くこと。
ロバート・フロスト

参考文献

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

動画

目次へ戻る