[PYTHON] PRML: Kapitel 7 Kernel-Maschine mit spärlicher Lösung

Überblick

PRML Kapitel 7 In Python implementierte Regression der Relevanzvektormaschine (RVM).

Jupyter-Notizbuch, in dem der Code und die experimentellen Ergebnisse zusammengefasst sind.

RVM-Modell

Bedingte Wahrscheinlichkeitsverteilung der Realwert-Zielvariablen $ t $ für einen gegebenen Eingabevektor $ \ mathbf {x} $

p(t|\mathbf{x}, \mathbf{w}, \beta) = \mathcal{N}(t|y(\mathbf{x}), \beta^{-1})

Hier wird $ \ beta = \ sigma ^ {-2} $ durch den Rauschgenauigkeitsparameter (die Umkehrung der Rauschdispersion) definiert, und der Durchschnittswert wird durch das folgende lineare Modell definiert.

y(\mathbf{x})=\sum_{i=1}^{M}w_{i}\phi_{i}(\mathbf{x})=\mathbf{w}^{T}\mathbf{\phi}(\mathbf{x})

Als Basisfunktion wird eine Kernelfunktion mit einzelnen Trainingsdaten als Argument verwendet.

y(\mathbf{x})=\sum_{n=1}^{N}w_{n}k(\mathbf{x}, \mathbf{x}_{n})+b

Die Gesamtzahl der Parameter beträgt $ M = N + 1 $. Die Wahrscheinlichkeitsfunktion ist durch die folgende Gleichung gegeben.

p(\mathbf{t}| \mathbf{X}, \mathbf{w}, \beta) = \prod_{n=1}^{N} p(t_{n}|\mathbf{x}_{n}, \mathbf{w}, \beta)

Eine Gaußsche Vorverteilung mit einem Durchschnitt von 0 wird als Vorverteilung des Parametervektors $ \ mathbf {w} $ verwendet. In RVM wird für jeden Gewichtungsparameter $ w {i} $ ein anderer Superparameter $ \ alpha {i} $ verwendet. __ Das heißt, die vorherige Verteilung für Gewichte ist wie folgt.

p(\mathbf{w}|\mathbf{\alpha}) = \prod_{i=1}^{M} \mathcal{N} (w_{i}|0, \alpha_{i}^{-1})

Wobei $ \ alpha_ {i} $ die Genauigkeit des entsprechenden Gewichtungsparameters $ w_ {i} $ darstellt, $ \ mathbf {\ alpha} = (\ alpha_ {1}, \ dots, \ alpha_ {M}) ^ {T} $. Das Maximieren der Evidenz für diese Superparameter führt bei den meisten Superparametern zu einer Unendlichkeit, wobei die posteriore Verteilung der entsprechenden Gewichtungsparameter auf den Nullpunkt konzentriert wird. Dann spielt die diesen Parametern entsprechende Basisfunktion (die Kernelfunktion, die den Abstand zum entsprechenden Datenpunkt darstellt) keine Rolle bei der Vorhersage, so dass sie entfernt werden kann und ein spärliches Modell erhalten wird.

Die hintere Wahrscheinlichkeit für den Gewichtsvektor ist wieder Gaußsch und wird in der folgenden Form ausgedrückt.

p(\mathbf{w}|\mathbf{t}, \mathbf{X}, \mathbf{\alpha}, \beta) = \mathcal{N}(\mathbf{w}|\mathbf{m}, \mathbf{\Sigma})

Hier sind der Mittelwert und die Kovarianz durch die folgenden Gleichungen gegeben.

\mathbf{m} = \beta \mathbf{\Sigma} \mathbf{\Phi}^{T} \mathbf{t}
\mathbf{\Sigma} = \left( \mathbf{A} + \beta \mathbf{\Phi}^{T} \mathbf{\Phi} \right)^{-1}

$ \ Mathbf {\ Phi} $ ist jedoch das Element $ \ Phi_ {ni} = \ phi_ {i} (\ mathbf {x_ {n}}) $ für $ i = 1, \ dots, N $ und $ N \ times M $ Planungsmatrix mit Element $ \ Phi_ {nM} = 1 $ für $ n = 1, \ dots, N $, $ \ mathbf {A} = \ rm {diag} (\ alpha_ {i}) $.

Die Werte von $ \ mathbf {\ alpha} $ und $ \ beta $ werden durch die zweite Art der wahrscheinlichsten Schätzung erhalten, die auch als __evidence approximation __ bekannt ist. Um den zweiten Typ der wahrscheinlichsten Schätzung durchzuführen, integrieren Sie zuerst die Gewichtsparameter.

p(\mathbf{t}|\mathbf{X}, \mathbf{\alpha}, \beta) = \int p(\mathbf{t}|\mathbf{X}, \mathbf{w}, \beta)p(\mathbf{w}|\mathbf{\alpha}) d\mathbf{w}

Da diese Gleichung ein Faltungsintegral zweier Gaußscher Verteilungen ist, kann das Integral analytisch ausgeführt werden, und die logarithmische Wahrscheinlichkeit kann wie folgt erhalten werden.

\ln p(\mathbf{t}|\mathbf{X}, \mathbf{\alpha}, \beta) = \ln \mathcal{N} (\mathbf{t}|\mathbf{0}, \mathbf{C}) = -\frac{1}{2}\{ N \ln (2 \pi) + \ln |\mathbf{C}| + \mathbf{t}^{T}\mathbf{C}^{-1}\mathbf{t}\}

Hier ist $ \ mathbf {t} = (t_ {1}, \ dots, t_ {N}) ^ {T} $. Wir haben auch die $ N \ times N $ -Matrix $ \ mathbf {C} $ wie folgt definiert.

\mathbf{C} = \beta^{-1}\mathbf{I} + \mathbf{\Phi} \mathbf{A}^{-1} \mathbf{\Phi}^{T}

Durch Setzen des Differentials der erhaltenen logarithmischen Wahrscheinlichkeit auf 0 wird die Aktualisierungsgleichung des Superparameters wie folgt erhalten.

\begin{split} \alpha_{i}^{new} &= \frac{\gamma_{i}}{m_{i}^{2}} \\ (\beta^{new})^{-1} &= \frac{\|\mathbf{t} - \mathbf{\Phi m}\|^{2}}{N - \Sigma_{i}\gamma_{i}} \end{split}

Hier ist $ \ gamma_ {i} $ eine Größe, die angibt, wie gut der entsprechende Gewichtungsparameter $ w_ {i} $ in den Daten angegeben und durch die folgende Gleichung definiert ist.

\gamma_{i} = 1 - \alpha_{i} \Sigma_{ii}

Unter Verwendung der obigen Ergebnisse läuft das Lernen von Superparametern wie folgt ab. Zunächst werden der Durchschnitt der posterioren Wahrscheinlichkeiten $ \ mathbf {m} $ und die Kovarianz $ \ mathbf {\ Sigma} $ aus den Anfangswerten von $ \ mathbf {\ alpha} $ und $ \ beta $ geschätzt, die entsprechend ausgewählt wurden. Als nächstes werden die Superparameter aus den erhaltenen Werten geschätzt. Dieser Vorgang wird abwechselnd wiederholt, bis die entsprechenden Konvergenzbedingungen erfüllt sind.

Experiment

Trainingsdaten

synthetic_data_sin.png

Ergebnis

Entwurfsmatrix und verwandte Vektoren

design_matrix_relevance_vector.png

Vektoren, die nicht mit der Ausgabe $ \ mathbf {t} $ zusammenhängen, haben den Wert $ \ alpha $ von $ \ infty $. Mit anderen Worten, die Spalte mit dem größeren Wert von $ \ alpha ^ {-1} $ ist der zugehörige Vektor.

RVM-Regressionsergebnisse

RVM_regression.png

Erwägung

Recommended Posts

PRML: Kapitel 7 Kernel-Maschine mit spärlicher Lösung
Sparsame Modellierung: Kapitel 5 Von der exakten Lösung zur ungefähren Lösung
Kernel-Methode mit Python
Tag 65 (Lösung) Das Jupyter-Notebook funktioniert nicht mit dem nicht verbundenen Kernel.
PRML Kapitel 7 Verwandte Vector Machine Python-Implementierung für Regressionsprobleme