forked from TH_General/Template_Summary
298 lines
16 KiB
TeX
298 lines
16 KiB
TeX
\chapter{Linear Classification}%
|
|
\label{cha:Linear Classification}
|
|
Bei der Klassifikation eines Datensatzes $D =\{(\bm{x}_i,c_i)\}_{i=1\dots N}$ geht es darum,
|
|
die einzelnen Datenelemente $\bm{x}_i\in\mathbb{R}^d$ einer Klasse $c\in\{1\dots K\}$ zuzuordnen.
|
|
|
|
\paragraph{Generative Modelling}%
|
|
\label{par:Generative Modelling}
|
|
Bei generativen Klassifikator-Modellen wird auf Basis der gegebenen Daten die Wahrscheinlichkeitsverteilung $p(c)$ für alle Klassen
|
|
sowie die Wahrscheinlichkeitsverteilungen $p(\bm{x}|c)$ für die Elemente innerhalb der einzelnen Klassen bestimmt.
|
|
Anschließend kann mittels der Regel von Bayes (\cref{sub:Bayes Rule}) die Wahrscheinlichkeit dafür errechnet werden,
|
|
in welcher Klasse ein gegebenes $\bm{x}$ liegt:
|
|
\begin{equation}
|
|
p(c|\bm{x}) = \dfrac{p(\bm{x}|c)p(c)}{p(\bm{x})}
|
|
\end{equation}
|
|
Generative Modelle sind oft sehr komplex weshalb sie nicht näher behandelt werden.
|
|
\begin{itemize}
|
|
\item $p(c_1)\hat{=}$die Wahrscheinlichkeit, dass ein Element der Klasse $c_1$ angehört
|
|
\item $p(\bm{x}_1|c_1)\hat{=}$ die Wahrscheinlichkeit, dass ein Element, von dem bekannt ist, dass es zu $c_1$ gehört an Position $\bm{x}_1$ liegt
|
|
\end{itemize}
|
|
|
|
\paragraph{Discriminative Modelling}%
|
|
\label{par:Discriminative Modelling}
|
|
Bei diskriminativen Klassifikator-Modellen wird direkt $p(c|\bm{x})$ oder eine Prediktor-Funktion $f(\bm{x})$ ermittelt.
|
|
Diese Art von Klassifikator-Modellierung ist einfacher als das \nameref{par:Generative Modelling}.
|
|
|
|
\section{Binary Classification}%
|
|
\label{sec:Binary Classification}
|
|
Gibt es nur zwei Klassen ($c_i\in\{0,1\}$) spricht man von binärer Klassifikation.
|
|
Hierbei ist es das Ziel einen Klassifikator $f(\bm{x})$ anzulernen, sodass:
|
|
\begin{equation} \label{eq:binary_classification}
|
|
f(\bm{x}_i) = \begin{cases} >0 &\text{falls }c_i=1\\ <0 &\text{falls }c_i=0 \end{cases}
|
|
\end{equation}
|
|
|
|
\subsection{Linear Classifiers}%
|
|
\label{sub:Linear Classifiers}
|
|
\begin{wrapfigure}{r}{.5\textwidth}
|
|
\vspace*{-15mm}
|
|
\centering
|
|
\includegraphics[width=0.8\linewidth]{linear_classification.png}
|
|
\caption{Lineare Klassifikation}
|
|
\label{fig:linear_classification}
|
|
\end{wrapfigure}
|
|
Ein linearer Klassifikator hat die Form:
|
|
\begin{equation} \label{eq:linear_classifier}
|
|
f(\bm{x}) = \bm{w}^T\bm{x} + b
|
|
\end{equation}
|
|
Die Gerade (2D) bzw. Hyper-Ebene (N-D),
|
|
die durch diese Funktion $f(x)=0$ gegeben ist wird als Diskriminante (discriminator) bezeichnet.
|
|
$\bm{w}$ ist der Normalvektor (normal) zur Geraden und $b$ das Bias.
|
|
|
|
\subsubsection{Linear Separability}%
|
|
\label{ssub:Linear Separability}
|
|
\includegraphics[width=\textwidth]{linear_separability.png}
|
|
|
|
\subsection{Optimization}%
|
|
\label{sub:Binary Classification:Optimization}
|
|
Um den linearen Klassifikator zu optimieren sind mehrere Methoden denkbar.
|
|
\subsubsection{0-1 loss}%
|
|
\label{ssub:0-1 loss}
|
|
Es lässt sich eine Stufenfunktion definieren,
|
|
welche 1 für $f(\bm{x})>0$ und 0 für alle anderen Werte von $f(\bm{x})$ ist:
|
|
\begin{equation} \label{eq:0-1_prediction}
|
|
y = \text{step}(f(\bm{x})) = \text{step}(\bm{w}^T\bm{x} + b)
|
|
\end{equation}
|
|
Eine Optimierung hätte dann das Ziel den 0-1-Verlust $L_0$ zu optimieren.
|
|
\begin{equation} \label{eq:0-1_loss}
|
|
L_0(\bm{w}) = \sum_i \mathbb{I}(\text{step}(\bm{w}^T\bm{x} + b)\ne c_i)
|
|
\end{equation}
|
|
In der Formel für $L_0$ gibt $\mathbb{I}$ 1 zurück,
|
|
wenn der Inhalt der Klammern wahr ist.
|
|
Die Summe gibt daher die Anzahl der falsch klassifizierten Datenpunkte zurück.
|
|
Da es sich bei der Optimierung von $L_0$ um ein NP-hartes Problem handelt wird diese Methode in der Praxis fast nie verwendet.
|
|
|
|
\subsubsection{regression loss}%
|
|
\label{ssub:regression loss}
|
|
Eine Optimierung des Klassifikators mithilfe des Regression Loss $L_{reg}$ ist einfach,
|
|
da es sich hierbei der quadratische Verlust verwendet werden kann.
|
|
\begin{equation} \label{eq:regression_loss}
|
|
L_{reg}(\bm{w}) = \sum_i (f(\bm{x}_i)-c_i)^2
|
|
\end{equation}
|
|
Allerdings hat diese Optimierungsmethode den Nachteil,
|
|
dass sie stark durch Ausreißer beeinflusst werden kann.
|
|
\begin{figure}[H]
|
|
\centering
|
|
\includegraphics[width=0.8\textwidth]{regression_loss.png}
|
|
\caption{Auswirkung von Ausreißern auf die Verwendung des Regression Loss'}
|
|
\label{fig:regression_loss}
|
|
\end{figure}
|
|
|
|
\subsubsection{Logistic \noms{sigmoid}}%
|
|
\label{ssub:Logistic sigmoid function}
|
|
\begin{wrapfigure}{r}{.5\textwidth}
|
|
\vspace*{-15mm}
|
|
\centering
|
|
\includegraphics[width=0.8\linewidth]{sigmoid_function.png}
|
|
\caption{die \noms{sigmoid}}
|
|
\label{fig:sigmoid_function}
|
|
\end{wrapfigure}
|
|
Da sich sowohl eine lineare (auch außerhalb des relevanten Bereiches $\{0,1\}$),
|
|
als auch eine stufenförmige (nicht kontinuierlich) Optimierung nicht besonders gut eignen wird oft auf die \nomf{sigmoid} zurückgegriffen.
|
|
\begin{equation} \label{eq:sigmoid_function}
|
|
\nomeq{sigmoid}(a) = \dfrac{1}{1+\exp(-a)}
|
|
\end{equation}
|
|
Auf der Basis dieser Funktion lässt sich eine Verlustfunktion definieren:
|
|
\begin{equation} \label{eq:sigmoid_loss_function}
|
|
L(\bm{w}) = \sum_i (\nomeq{sigmoid}(f(\bm{x}_i)) - c_i)^2 = \sum_i (\nomeq{sigmoid}(\bm{w}^T\bm{x}_i + b) - c_i)^2
|
|
\end{equation}
|
|
Die \noms{sigmoid} hat zudem folgende Eigenschaften:
|
|
\begin{itemize}
|
|
\item \nomsym{sigmoid} ist begrenzt: $\nomeq{sigmoid}(a)\in(0,1)$
|
|
\item \nomsym{sigmoid} ist symmetrisch: $1- \nomeq{sigmoid}(a) = \nomeq{sigmoid}(-a)$
|
|
\item der Gradient kann einfach bestimmt werden: $\nomeq{sigmoid}'(a) = \frac{\exp(-a)}{(1+\exp(-a))^2} = \nomeq{sigmoid}(a)(1-\nomeq{sigmoid}(a))$
|
|
\end{itemize}
|
|
|
|
\subsubsection{Log-Likelihood}%
|
|
\label{ssub:Log-Likelihood}
|
|
Mithilfe des \noms{sigmoid} lässt sich die Wahrscheinlichkeitsdichtefunktion für die beiden Klassen aufstellen:
|
|
\begin{align} \label{eq:simoidial_probability_distribution}
|
|
&p(c=1|\bm{x}) = \nomeq{sigmoid}(\bm{w}^T\bm{x}+b), p(c=0|\bm{x}) = 1 - \nomeq{sigmoid}(\bm{w}^T\bm{x}+b)\\
|
|
\Leftrightarrow &p(c|\bm{x}) = p(c=1|\bm{x})^c p(c=0|\bm{x})^{1-c} = \nomeq{sigmoid}(\bm{w}^T\bm{x}+b)^c (1 - \nomeq{sigmoid}(\bm{w}^T\bm{x}+b))^{1-c}
|
|
\end{align}
|
|
Hierbei handelt es sich um eine bedingte Bernoulli Distribution (\cref{sub:Bernoulli Distribution}),
|
|
weshalb nun direkt die bedingte Bernoulli log-likelihood optimiert werden kann.
|
|
Die negative Likelihood wird auch oft als Cross-Entropy Loss bezeichnet
|
|
\begin{align} \label{eq:bernoulli_log-likelihood}
|
|
\log\text{lik}(\tilde{\bm{w}},D) &= \sum_i \log p(c_i|\bm{x}_i)\\
|
|
&= \sum_i \log(p(c=1|\bm{x}_i)^{c_i} p(c=0|\bm{x}_i)^{1-c_i})\\
|
|
&= \dots\\
|
|
&= \sum_i c_i \log \nomeq{sigmoid}(\tilde{\bm{w}}^T\tilde{\bm{x}}_i) + (1-c_i)\log(1 - \nomeq{sigmoid}(\tilde{\bm{w}}^T\tilde{\bm{x}}_i))
|
|
\end{align}
|
|
|
|
\subsubsection{Logistic Regression}%
|
|
\label{ssub:Logistic Regression}
|
|
Die Optimierung der Log-Likelihood einer \noms{sigmoid} nennt man \say{Logistic Regression},
|
|
obwohl es eigentlich eine Klasifizierung ist (alte Funktion; früher war man bei der Benennung noch nicht so streng).
|
|
\begin{equation} \label{eq:logistic_regression}
|
|
\argmax_{\tilde{\bm{w}}}\log\text{lik}(\tilde{\bm{w}},D) = \argmax_{\tilde{\bm{w}}} \sum_i c_i \log \nomeq{sigmoid}(\tilde{\bm{w}}^T\tilde{\bm{x}}_i) + (1-c_i)\log(1 - \nomeq{sigmoid}(\tilde{\bm{w}}^T\tilde{\bm{x}}_i))
|
|
\end{equation}
|
|
Für diese Funktion kann gezeigt werden,
|
|
dass sie konvex ist (es existiert nur ein globales Maximum).
|
|
Allerdings handelt es sich anders als bei der linearen Regression (\cref{cha:Linear Regression}) nicht um eine \say{Closed Form Solution},
|
|
was bedeutet,
|
|
dass hier der \nameref{sec:Gradient Descent} für die Optimierung verwendet wird.
|
|
|
|
\subsubsection{Generalized Logistic Models}%
|
|
\label{ssub:Generalized Logistic Models}
|
|
Um das Verfahren zur Erstellung linearer Diskriminanten auch für nicht-lineare Feature-Räume zu verwenden,
|
|
muss ein ähnlicher Trick wie bei der \nameref{sec:Generalisierung der linearen Regression} verwendet werden.
|
|
Auch hier wird mittels einer \nomf{vector_valued_function} auf eine nicht-lineare Funktion abgebildet.
|
|
\begin{equation} \label{eq:generlized_logisitc_regression}
|
|
\argmax_{\bm{w}}\log\text{lik}(\bm{w},D) = \argmax_{\bm{w}} \sum_i c_i \log \nomeq{sigmoid}(\bm{w}^T\bm{\phi}(\bm{x}_i)) + (1-c_i)\log(1 - \nomeq{sigmoid}(\bm{w}^T\bm{\phi}(\bm{x}_i)))
|
|
\end{equation}
|
|
\begin{figure}[H]
|
|
\vspace*{-5mm}
|
|
\centering
|
|
\includegraphics[width=0.5\textwidth]{generalized_logistic_regression.png}
|
|
\caption{Generalized Logistic Regression}
|
|
\label{fig:generalized_logistic_regression}
|
|
\end{figure}
|
|
|
|
\subsubsection{Regularization of the Logistic Regression}%
|
|
\label{ssub:Regularization of the Logistic Regression}
|
|
Ähnlich wie bei der Regularisierung der linearen Regression (\cref{sec:Regularization of the Linear Regression}) ist es auch bei der Logistic Regression sinnvoll eine Regularization Penalty einzuführen,
|
|
um Overfitting zu vermeiden.
|
|
\begin{equation} \label{eq:regularized_logisitc_regression}
|
|
L(\tilde{\bm{w}},D)=\log\text{lik}(\tilde{\bm{w}},D) - \nomeq{regularization_factor}\text{penalty}(\tilde{\bm{w}})
|
|
\end{equation}
|
|
Bei der Lositic Regression wird hierbei meist der der L2 Regularization Loss $\text{penalty}(\tilde{\bm{w}})= ||\tilde{\bm{w}}||^2$ verwendet
|
|
|
|
\section{Gradient Descent}%
|
|
\label{sec:Gradient Descent}
|
|
Der Gradient Descent ist ein Verfahren,
|
|
dass es ermöglicht den Extremwert einer konvexen Funktion zu finden.
|
|
Allgemein wird versucht eine Funktion,
|
|
die aus der Summe von Verlust $l$ und Penalty besteht zu optimieren.
|
|
\begin{equation} \label{eq:general_form_optimization}
|
|
\argmin_{\text{parameters $\bm{\theta}$}}\sum_{i=1}^N l(\bm{x}_i,\bm{\theta}) + \nomeq{regularization_factor} \text{penalty}(\bm{\theta})
|
|
\end{equation}
|
|
Bei diesem Verfahren wird ein beliebiger Anfangspunkt im Werteraum gewählt,
|
|
der Gradient bestimmt und ein neuer Punkt in absteigender Richtung gewählt.
|
|
Dieser Schritt wird so lange wiederholt,
|
|
bis ein Minimum erreicht ist (Gradient = 0).
|
|
\begin{algorithm}
|
|
\caption{Gradient Descent}\label{gradient_descent_algorithm}
|
|
\begin{algorithmic}[1]
|
|
\State $\bm{x}_0$ $\gets$ init, $t=0$
|
|
\While{termination condition does not hold}
|
|
\State $\bm{x}_{t+1}=\bm{x}_t-\nomeq{learning_rate}\nabla f(\bm{x}_t)$, $t=t+1$
|
|
\EndWhile
|
|
\end{algorithmic}
|
|
\end{algorithm}
|
|
Die \say{termination condition} des Algorithmus kann z.B. die Größe des Gradienten, die Änderung des Wertes von $f(\bm{x}_t)$
|
|
oder einfach eine bestimmte Anzahl an Schleifendurchläufen sein.
|
|
|
|
\subsection{\nomf{learning_rate}}%
|
|
\label{sub:learning_rate}
|
|
Meistens wird eine abnehmende \noms{learning_rate} verwendet (z.B. $\nomeq{learning_rate}_t = \frac{1}{t}$),
|
|
damit zu Beginn schnell Fortschritte in Richtung des Minimums gemacht werden und zudem vermieden wird,
|
|
im späteren Verlauf um das Minimum herumzuspringen.
|
|
|
|
\subsection{Batch Gradient Descent}%
|
|
\label{sub:Batch Gradient Descent}
|
|
Im Standardverfahren des Gradient Descents Loss Function über alle Datenpunkte evaluiert.
|
|
Man spricht daher auch von einem Batch Gradient Descent.
|
|
\begin{equation} \label{eq:batch_gradient_descent}
|
|
\frac{1}{n}\sum_i l(\bm{x}_i;\bm{\theta})\qquad \bm{\theta}_{t+1} = \bm{\theta}_t - \dfrac{\eta}{n}\sum_i \nabla_{\bm{\theta}} l(\bm{x}_i;\bm{\theta}_t)
|
|
\end{equation}
|
|
Dies stellt eine Approximation des tatsächlich erwarteten Verlustes nach dem Prinzip der \nameref{sub:Monte-carlo estimation} dar.
|
|
\begin{equation}
|
|
\mathbb{E}_{\bm{x}}\left[l(\bm{x};\bm{\theta})\right]\qquad \bm{\theta}_{t+1} = \bm{\theta}_t - \eta\mathbb{E}_{\bm{x}}\left[\nabla_{\bm{\theta}} l(\bm{x};\bm{\theta}_t)\right]
|
|
\end{equation}
|
|
|
|
\subsection{\texorpdfstring{\glsxtrfull{SDG}}{\glsfmtfull{SDG}}}%
|
|
\label{sub:SDG}
|
|
\begin{wrapfigure}{r}{.5\textwidth}
|
|
\vspace*{-15mm}
|
|
\centering
|
|
\includegraphics[width=0.8\linewidth]{batch_vs_stochastic_gradient_descent.png}
|
|
\caption{Batch vs. Stochastic Gradient Descent}
|
|
\label{fig:batch_vs_stochastic_gradient_descent}
|
|
\vspace*{-20mm}
|
|
\end{wrapfigure}
|
|
Um die Loss Function nicht für alle Datenpunkte evaluieren zu müssen wird beim \gls{SDG} lediglich der Verlust an einem einzelnen, zufällig gewählten Punkt ermittelt
|
|
\begin{equation} \label{eq:stochastic_gradient_descent}
|
|
l(\bm{x}_i;\bm{\theta})\qquad \bm{\theta}_{t+1} = \bm{\theta}_t - \eta\nabla_{\bm{\theta}} l(\bm{x}_i;\bm{\theta}_t)
|
|
\end{equation}
|
|
Dies hat zwar den Nachteil,
|
|
dass Die Funktion nicht immer absteigt (jedoch meistens).
|
|
Allerdings ist die Evaluation der Loss Function wesentlich effizienter als beim Batch Gradient Descent.
|
|
|
|
\subsection{Mini-Batches}%
|
|
\label{sub:Mini-Batches}
|
|
Die Verwendung von Mini-Batches für den Gradient Descent stellt eine Mischform von \nameref{sub:Batch Gradient Descent} und \nameref{sub:SDG} dar.
|
|
Hierbei wird nicht die Loss Function für einen kleinen Teil der Datenpunkte ausgewertet.
|
|
Dies ist weniger rechenintensiv (vor allem, wenn die Mini-Batch-Größe an die verwendete \gls{GPU} angepasst ist) als beim \nameref{sub:Batch Gradient Descent}
|
|
aber auch zielgerichteter als beim \nameref{sub:SDG}.
|
|
\begin{equation} \label{eq:mini-batches}
|
|
\frac{1}{b}\sum_i l(\bm{x}_i;\bm{\theta})\qquad \bm{\theta}_{t+1} = \bm{\theta}_t - \dfrac{\eta}{b}\sum_i \nabla_{\bm{\theta}} l(\bm{x}_i;\bm{\theta}_t)
|
|
\end{equation}
|
|
|
|
\subsection{Gradient for Logisitic Regression}%
|
|
\label{sub:Gradient for Logisitic Regression}
|
|
Die Loss Function für die Logistic Regression kann dank der Eigenschaften der \noms{sigmoid} (\cref{ssub:Logistic sigmoid function}) einfach aufgestellt werden:
|
|
\begin{align} \label{eq:gradient_for_logistic_regression}
|
|
\dfrac{\partial\text{loss}_i}{\partial\bm{w}}
|
|
&= \dfrac{\partial}{\partial\bm{w}}\left(c_i\log\nomeq{sigmoid}(\bm{w}^T\bm{\phi}(\bm{x}_i)) + (1 - c_i) \log(1-\nomeq{sigmoid}(\bm{w}^T\bm{\phi}(\bm{x}_i)))\right)\\
|
|
&= \dots\text{\cref{sec:Herleitung: Gradient for Logistic Regression}}\\
|
|
&= (c_i - \nomeq{sigmoid}(\bm{w}^T\bm{\phi}(\bm{x}_i)))\phi(\bm{x}_i)
|
|
\end{align}
|
|
|
|
\section{Multiclass Classification}%
|
|
\label{sec:Multiclass Classification}
|
|
\begin{wrapfigure}{r}{.4\textwidth}
|
|
\vspace*{-10mm}
|
|
\centering
|
|
\includegraphics[width=0.8\linewidth]{multiclass_linear_classification.png}
|
|
\caption{Multiclass Linear Classification}
|
|
\label{fig:multiclass_linear_classification}
|
|
\vspace*{-10mm}
|
|
\end{wrapfigure}
|
|
Mithilfe der Linearen Klassifikation können auch mehr als zwei Klassen klassifiziert werden.
|
|
Hierfür wird die Softmax Likelihood Function verwendet:
|
|
\begin{equation} \label{eq:softmax_likelihood_function}
|
|
p(c=c_i|\bm{x}) = \frac{\exp(\bm{w}_i^T\bm{\phi}{x})}{\sum_{k=1}^K \exp(\bm{w}_k^T\bm{\phi}(\bm{x}))}
|
|
\end{equation}
|
|
Hiebei erhält jede Klasse einen eigenen Gewichtsvektor.
|
|
Die Klassifizierung erfolgt,
|
|
indem geguckt wird, für welche klasse $c_i$ $\bm{w}_i^T\bm{\phi}(\bm{x})$ am höchsten ist.
|
|
|
|
Das Problem kann hierbei mithilfe des 1-Hot-Encodings als eine Conditional Multinomial Distribution aufgestellt werden (\cref{sub:Multinomial/Categorical Dristribution}):
|
|
\begin{align} \label{eq:multiclass_classification_distribution}
|
|
p(c|\bm{x}) &= \prod_{k=1}^K p(c=k|\bm{x})^{\bm{h}_{c,k}}\\
|
|
&= \prod_{k=1}^K \left(\frac{\exp(\bm{w}_k^T\bm{\phi}(\bm{x}_i))}{\sum_{k'=1}^K \exp(\bm{w}_{k'}^T\bm{\phi}(\bm{x}_i))} \right)^{\bm{h}_{c,k}}\\
|
|
\end{align}
|
|
|
|
\paragraph{Data log-likelihood}%
|
|
\label{par:multiclass_classification:Data log-likelihood}
|
|
\begin{align} \label{eq:multiclass_classification:Data log-likelihood}
|
|
\loglik(\mathcal{D},\bm{w}_{1:K}) &= \sum_{i=1}^N\log p(c_i|\bm{x}_i)\\
|
|
&= \dots \text{ \color{red}siehe Vorlesung 02 Folie 69}\\
|
|
&= \sum_{i=1}^N\sum_{k=1}^K\bm{h}_{c_i,k}\bm{w}_k^T\bm{\phi}(\bm{x}_i)
|
|
- \underbrace{\log\left( \sum_{j=1}^K\exp(\bm{w}_j^T\bm{\phi}(\bm{x}_i))\right)}_\text{independent from $k$} \underbrace{\sum_k\bm{h}_{c_i,k}}_{=1}
|
|
\end{align}
|
|
|
|
\paragraph{Gradient}%
|
|
\label{par:multiclass_classification:Gradient}
|
|
|
|
\begin{alignat}{2} \label{eq:multiclass_classification:Gradient}
|
|
&\frac{\partial\loss_i}{\partial\bm{w}_k}
|
|
&&= \frac{\partial}{\partial \bm{w}_k}\left(\sum_{k=1}^K\bm{h}_{c_i,k}\bm{w}_k^T\bm{\phi}(\bm{x}_i) - \log\left( \sum_{j=1}^K\exp(\bm{w}_j^T\bm{\phi}(\bm{x}_i))\right) \right)\\
|
|
& &&= \dots\text{ \color{red} siehe Übung 2 Aufgabe 1.1 }\\
|
|
& &&= \bm h_{c_i,k} \bm\phi(\bm x_i) - \dfrac{\exp(\bm w_k^T\bm \phi(\bm x_i))}{\sum_j^K \exp(\bm w^T_j \bm \phi(\bm x_i))} \bm \phi(\bm x_i)\\
|
|
\Leftrightarrow&\frac{\partial\loss_i}{\partial\bm{w}}
|
|
&&= - \sum_i^N \left( \bm h_{i,k} \bm \phi(\bm x_i) - \dfrac{\exp(\bm w_k^T\bm \phi(\bm x_i))}{\sum_j^K \exp(\bm w^T_j \bm \phi(\bm x_i))} \bm \phi(\bm x_i) \right) \\
|
|
& &&= -\sum_i^N \bm \phi(\bm x_i) \left( h_{i,k} - p_{i,k} \right)
|
|
\end{alignat}
|
|
|