Ich studiere Bayes'sche Theorie. Dieses Mal werde ich die lineare Regression basierend auf der Bayes'schen Theorie zusammenfassen. Die Bücher und Artikel, auf die ich mich bezog, lauten wie folgt.
[Mustererkennung und maschinelles Lernen](https://www.amazon.co.jp/%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E8%AA % 8D% E8% AD% 98% E3% 81% A8% E6% A9% 9F% E6% A2% B0% E5% AD% A6% E7% BF% 92-% E4% B8% 8A-CM-% E3 % 83% 93% E3% 82% B7% E3% 83% A7% E3% 83% 83% E3% 83% 97 / dp / 4612061224)
[Bayes Deep Learning](https://www.amazon.co.jp/%E3%83%99%E3%82%A4%E3%82%BA%E6%B7%B1%E5%B1%A4% E5% AD% A6% E7% BF% 92-% E6% A9% 9F% E6% A2% B0% E5% AD% A6% E7% BF% 92% E3% 83% 97% E3% 83% AD% E3 % 83% 95% E3% 82% A7% E3% 83% 83% E3% 82% B7% E3% 83% A7% E3% 83% 8A% E3% 83% AB% E3% 82% B7% E3% 83 % AA% E3% 83% BC% E3% 82% BA-% E9% A0% 88% E5% B1% B1% E6% 95% A6% E5% BF% 97-ebook / dp / B07YSHL8MS / ref = read_cwrtbar_2 / 356-7679536-6826133? _encoding = UTF8 & pd_rd_i = B07YSHL8MS & pd_rd_r = 36fddf3f-0e8b-4921-8e3c-13dd6fe2007f & pd_rd_w = nZY1w & pd_rd_wg = h8TZc & pf_rd_p = 64c49d12-7012-452e-9a49-e43c9513f9fc & pf_rd_r = 7CCX4HQPWKQC8344612V & PSC = 1 & refRID = 7CCX4HQPWKQC8344612V)
Bayesianische lineare Regression https://openbook4.me/sections/1563
PRML Frage 3.7, 3.8 Antworten https://qiita.com/halhorn/items/037db507e9884265d757
Die Idee der linearen Regression, auf die Sie beim Erlernen des maschinellen Lernens stoßen, unterscheidet sich von der Idee der linearen Bayes'schen Regression, mit der wir uns diesmal befassen. Der Umriss ist unten dargestellt.
Eine lineare Regression, die auf der Methode des kleinsten Quadrats basiert, wird als frequenztheoretische lineare Regression bezeichnet, um sie von der Bayes'schen linearen Regression zu unterscheiden. * Wenn der Name nicht streng frequenzbasiert ist, würden wir uns freuen, wenn Sie einen Kommentar abgeben könnten.
Diese Methode kann auch mit Excel sehr einfach erhalten werden. Ich benutze es auch oft beim Zusammenstellen von Daten in meiner Arbeit. Nun, diese Methode ist sehr einfach zu überlegen.
E(w) = \frac {1}{2}\sum_{n=1}^{N}(y(x_n,w)-t_n)^2
Jedoch,
Sie müssen lediglich den Polynomkoeffizienten $ w $ finden, der $ E (w) $ minimiert und als Fehlerfunktion bezeichnet wird.
Betrachten Sie andererseits die Bayes'sche lineare Regression. Berücksichtigen Sie die folgenden Wahrscheinlichkeiten für die beobachteten Daten $ X, Y $.
p(w|X,Y) = \frac {p(w)p(Y|X,w)}{p(X,Y)}
Hier,
Es wird sein.
Der Punkt der Bayes'schen Denkweise ist, dass alle nach Wahrscheinlichkeit (= Verteilung) organisiert sind. ** Ich verstehe, dass ich versuche, es als Distribution einschließlich der optimalen Lösung zu erfassen **.
Ein weiterer Punkt ist die Idee der Bayes'schen Schätzung. Es bezieht sich auf den Versuch, eine Wahrscheinlichkeit (= Nachwahrscheinlichkeit) mit einem Wert (= Vorwahrscheinlichkeit) zu finden, der im Voraus angenommen wird. Als ich es zum ersten Mal hörte, war es erfrischend.
In diesem Fall,
Bei dieser Bayes'schen Denkweise ist es notwendig, die Zeitachse zu berücksichtigen. Mit anderen Worten, es ist notwendig, den Zeitfluss zu berücksichtigen, um den Gewichtsparameter vorübergehend aus bestimmten Daten zu bestimmen und ihn jederzeit auf einen guten Wert zu aktualisieren. Dies ist eine sehr praktische Idee, um Daten aus einer kleinen Anzahl von Daten zu erhöhen.
Nun möchte ich das Regressionsproblem durch Bayes'sche lineare Regression lösen. Betrachten Sie Folgendes für $ p (w | X, Y) $ mit dem Parameter $ t $.
p(w|t) \propto p(t|w)p(w)
Ursprünglich sollte $ p (t) $ bei der Durchführung der Berechnung auf den Nenner kommen, aber da die Berechnung kompliziert ist, werden wir sie mit der Proportionalformel $ \ propto $ betrachten. Hier sind unten $ p (t | w) $ und $ p (w) $ gezeigt.
\begin{align}
p(t|w)&=\prod_{n=1}^N \left\{ \mathcal{N} (t_n|w^T\phi(x_n), \beta^{-1}) \right\}\\
\end{align}\\
p(w)=\mathcal{N}(w|m_0, S_0)
Es wird so formuliert, dass es der Gaußschen Verteilung folgt.
Zusätzlich werden Konstanten und Funktionen unten gezeigt.
=\prod_{n=1}^N \left\{ \mathcal{N} (t_n|w^T\phi(x_n), \beta^{-1}) \right\} \mathcal{N}(w|m_0, S_0)\\
\propto \left( \prod_{n=1}^N exp\left[ -\frac{1}{2} \left\{ t_n - w^T \phi(x_n) \right\}^2 \beta \right] \right) exp\left[ -\frac{1}{2} (w - m_0)^TS_0^{-1}(w - m_0) \right]\\
= exp\left[ -\frac{1}{2} \left\{ \beta \sum_{n=1}^N \left( t_n - w^T\phi(x_n) \right)^2 + (w - m_0)^TS_0^{-1}(w - m_0) \right\} \right]
Kann mit transformiert werden. Danach werden wir diese Formel sorgfältig entwickeln.
\beta \sum_{n=1}^N \left( t_n - w^T\phi(x_n) \right)^2 + (w - m_0)^TS_0^{-1}(w - m_0)\\
= \beta \left( \begin{array}{c}
t_1 - w^T\phi(x_1) \\
\vdots\\
t_N - w^T\phi(x_N)
\end{array} \right)^T
\left( \begin{array}{c}
t_1 - w^T\phi(x_1) \\
\vdots\\
t_N - w^T\phi(x_N)
\end{array} \right)
+ (w - m_0)^TS_0^{-1}(w - m_0)
Es kann ausgedrückt werden als $ w ^ T \ phi (x_1) = \ phi ^ T (x_1) w $. Deshalb,
= \beta \left( \begin{array}{c}
t_1 - \phi^T(x_1)w \\
\vdots\\
t_N - \phi^T(x_N)w
\end{array} \right)^T
\left( \begin{array}{c}
t_1 - \phi^T(x_1)w \\
\vdots\\
t_N - \phi^T(x_N)w
\end{array} \right)
+ (w - m_0)^TS_0^{-1}(w - m_0)\\
Es wird sein. Hier wird die Basisfunktion in einer Form ausgedrückt, die als Entwurfsmatrix bezeichnet wird (siehe unten).
\Phi = \left( \begin{array}{c}
\phi^T(x_1) \\
\vdots\\
\phi^T(x_N)
\end{array} \right)
Wir werden dies zur weiteren Zusammenfassung verwenden. Die Begriffe nur $ \ beta $ und $ m $ sind konstante Begriffe, werden jedoch als $ C $ zusammengefasst.
= \beta (t - \Phi w)^T(t - \Phi w) + (w - m_0)^TS_0^{-1}(w - m_0)\\
= \beta ( w^T\Phi^T\Phi w - w^T\Phi^Tt - t^T\Phi w ) + w^TS_0^{-1}w - w^TS_0^{-1}m_0 - m_0^TS_0^{-1}w + C\\
Da $ S_0 $ kovariant ist, handelt es sich um eine symmetrische Matrix. Da seine inverse Matrix ebenfalls eine symmetrische Matrix ist, kann sie daher als $ (S_0 ^ {-1}) ^ T = S_0 ^ {-1} $ ausgedrückt werden. Wenden Sie dies auf den $ w $ -Koeffizienten an
= w^T(S_0^{-1} + \beta \Phi^T\Phi)w - w^T(S_0^{-1}m_0 + \beta \Phi^T t) - (S_0^{-1}m_0 + \beta \Phi^T t)^Tw + C
Hier, wenn $ R = S_0 ^ {-1} m_0 + \ beta \ Phi ^ Tt $
= w^TS_N^{-1}w - w^TR - R^Tw + C
Ich konnte zusammenfassen. Darüber hinaus kann es von hier aus durch quadratische Vervollständigung und Faktorisierung zusammengefasst werden, aber es ist eine ziemlich schwierige Berechnung. Bestätigen Sie die Übereinstimmung, indem Sie die in Amanojaku vervollständigte Formel erweitern.
\mathcal{N}(w|m_N, S_N)\\
\propto exp\left\{ -\frac{1}{2} (w - m_N)^T S_N^{-1} (w - m_N) \right\}
Wieder werden wir nur den Inhalt von $ - \ frac {1} {2} $ in $ exp $ in der Gaußschen Verteilungsgleichung diskutieren.
(w - m_N)^T S_N^{-1} (w - m_N)\\
Hier sind $ m_N und S_N $ wie folgt angegeben.
m_N = S_N(S_0^{-1} m_0 + \beta \Phi^Tt) = S_NR\\
S_N^{-1} = S_0^{-1} + \beta \Phi^T \Phi
Hier erscheint $ S_N $ auch in der Zielformel, die aus der posterioren Verteilung abgeleitet wurde. Erweitern Sie sie also nicht, sondern erweitern Sie $ m_N $.
(w - m_N)^T S_N^{-1} (w - m_N)\\
= (w - S_NR)^T S_N^{-1} (w - S_NR)\\
= w^T S_N^{-1} w - w^T R - R^Tw + C
Daher posteriore Verteilung
Lassen Sie uns dieses Mal zufällig generierte Datenpunkte basierend auf der $ sin $ -Funktion zurückverfolgen.
beyes.ipynb
#Machen Sie eine Planungsprozession
Phi = np.array([phi(x) for x in X])
#Hyperparameter
alpha = 0.1
beta = 9.0
M = 12
beyes.ipynb
n = 10
X = np.random.uniform(0, 1, n)
T = np.sin(2 * np.pi * X) + np.random.normal(0, 0.1, n)
plt.scatter(X, T)
plt.plot(np.linspace(0,1), np.sin(2 * np.pi * np.linspace(0,1)), c ="g")
plt.show()
Für eine einfache Berechnung setzen Sie diesmal $ m_0 = 0 $, $ S_0 = α ^ {-1} I $ $ S_N ^ {-1} = αI + \ beta \ Phi ^ T \ Phi $, $ m_N = βS_N \ Phi ^ Tt $.
beyes.ipynb
#Streuung der posterioren Wahrscheinlichkeiten
S = np.linalg.inv(alpha * np.eye(M) + beta * Phi.T.dot(Phi))
#Durchschnittliche Ex-post-Wahrscheinlichkeit
m = beta * S.dot(Phi.T).dot(T)
beyes.ipynb
x_, y_ = np.meshgrid(np.linspace(0,1), np.linspace(-1.5, 1.5))
Z = np.vectorize(norm)(x_,y_)
x = np.linspace(0,1)
y = [m.dot(phi(x__)) for x__ in x]
plt.figure(figsize=(10,6))
plt.pcolor(x_, y_, Z, alpha = 0.2)
plt.colorbar()
plt.scatter(X, T)
#Durchschnitt der vorhergesagten Verteilung
plt.plot(x, y)
#Echte Verteilung
plt.plot(np.linspace(0,1), np.sin(2 * np.pi * np.linspace(0,1)), c ="g")
plt.show()
#Probenparameter aus der posterioren Verteilung
m_list = [np.random.multivariate_normal(m, S) for i in range(5)]
for m_ in m_list:
x = np.linspace(0,1)
y = [m_.dot(phi(x__)) for x__ in x]
plt.plot(x, y, c = "r")
plt.plot(np.linspace(0,1), np.sin(2 * np.pi * np.linspace(0,1)), c ="g")
Der Schatten zeigt, wo die Wahrscheinlichkeitsdichte hoch ist.
Dieses Mal haben wir die lineare Bayes'sche Regression vom Konzept bis zur Implementierung zusammengefasst. Ich war fast ratlos, weil die Ausdrucksentwicklung sehr kompliziert war. Die Idee ist jedoch sehr einfach und eine wichtige Idee beim maschinellen Lernen, wie man aus einer kleinen Datenmenge eine plausible Wahrscheinlichkeit erhält.
Ich werde weiterhin lernen, die Gefühle von Bayesian tief zu verstehen.
Das vollständige Programm finden Sie hier. https://github.com/Fumio-eisan/Beyes_20200512
Recommended Posts