Ich habe den neuesten GPML-Matlab-Code heruntergeladen. Ich habe die Dokumentation gelesen und die Regressionsdemo ohne Probleme ausgeführt. Ich habe jedoch Schwierigkeiten zu verstehen, wie ich es auf ein Regressionsproblem anwenden kann, mit dem ich konfrontiert bin.
Das Regressionsproblem ist wie folgt definiert:
Sei ein Eingabevektor und y i ∈ R 25 sein entsprechendes Ziel. Die Menge von M Eingängen ist in einer Matrix X = [ x 1 , … , x M ] ⊤ angeordnet und ihre entsprechenden Ziele sind in einer Matrix Y = [ y 1 - ˉ y , … , y M - ˉ y ] ⊤ gespeichert . mit ˉ yDies ist der mittlere Zielwert in .
Ich möchte ein GPR-Modell mit der quadratischen Exponentialfunktion trainieren:
,
Dabei ist gleich wenn und andernfalls . Die Hyperparameter sind wobei der angenommene Geräuschpegel in den Trainingsdaten und die Längenskala ist. 1 i = j 0 θ = ( α , β , γ ) γ β
Um das Modell zu trainieren, muss ich die negative logarithmische Grenzwahrscheinlichkeit in Bezug auf die Hyperparameter minimieren:
Dabei ist c eine Konstante und die Matrix eine Funktion der Hyperparameter (siehe Gleichung k (xi, xj) = ...).
Basierend auf der Demo auf der GPML-Website ist mein Versuch, dies mithilfe des GPML-Matlab-Codes zu implementieren, unten aufgeführt.
covfunc = @covSEiso;
likfunc = @likGauss;
sn = 0.1;
hyp.lik = log(sn);
hyp2.cov = [0;0];
hyp2.lik = log(0.1);
hyp2 = minimize(hyp2, @gp, -100, @infExact, [], covfunc, likfunc, X1, Y1(:, n));
exp(hyp2.lik)
nlml2 = gp(hyp2, @infExact, [], covfunc, likfunc, X1, Y1(:, n));
[m s2] = gp(hyp2, @infExact, [], covfunc, likfunc, X1, Y1(:, n), X2);
Y2r(:, n) = m;
X1 enthält die Trainingseingaben
X2 enthält die Testeingänge
Y1 enthält die Trainingsziele
Y2r sind die Schätzungen aus der Anwendung des Modells
n ist der Index, mit dem jedes Element im Ausgabevektor zurückgeführt wird
Ist dies angesichts des Problems der richtige Weg, um das GPR-Modell zu trainieren und anzuwenden? Wenn nicht, was muss ich ändern?
covfunc = { 'covSum', { 'covSEiso' } }
ich nicht ganz sehe, wie dies jetzt für verrauschte Daten sorgt. Es scheint, dass sich die Toolbox seit meiner letzten Verwendung stark verändert hat. Ich werde sie mir später genauer ansehen .Ich denke, das Problem könnte eine falsche Modellspezifikation sein. Wenn Ihre Ziele Winkel von + -180 Grad haben, ist der "Rauschprozess" für Ihre Daten möglicherweise nicht guassisch genug, sodass die baysischen Beweise keine gute Möglichkeit sind, die Hyperparameter zu optimieren. Überlegen Sie beispielsweise, was passiert, wenn "Rauschen" das Signal umgibt. In diesem Fall ist es zu klug sein , kann entweder die Modellauswahl durchführt , indem die Kreuzvalidierungsfehler minimiert wird (es ist eine Public Domain Implementierung des Verfahrens simplex Nelder-Mead hierwenn Sie nicht über die Optimierungs-Toolbox verfügen). Die Kreuzvalidierungsschätzung der Leistung ist nicht so empfindlich gegenüber Modellfehlspezifikationen, sondern eine direkte Schätzung der Testleistung, während die marginale Wahrscheinlichkeit des Modells der Beweis für das Modell ist, da die Modellannahmen korrekt sind. Siehe die Diskussion ab Seite 123 des Buches von Rasmussen und Williams.
Ein anderer Ansatz wäre, die Ausgänge neu zu codieren, damit ein Gaußsches Rauschmodell besser geeignet ist. Eine Sache, die Sie tun könnten, ist eine Form der unbeaufsichtigten Reduzierung der Dimensionalität, da es nichtlineare Beziehungen zwischen Ihren Zielen gibt (da es nur eine begrenzte Art und Weise gibt, wie sich ein Körper bewegen kann), so dass es eine niedrigerdimensionale Mannigfaltigkeit gibt, die Ihre Ziele leben weiter, und es wäre besser, die Koordinaten dieser Mannigfaltigkeit als die Winkel selbst zu regressieren (auf diese Weise gibt es möglicherweise auch weniger Ziele).
Auch eine Art Procrustes-Analyse könnte eine gute Idee sein, um die Unterschiede zwischen den Probanden vor dem Training des Modells zu normalisieren.
Möglicherweise finden Sie einige der Arbeiten von Neil Lawrence zur Wiederherstellung des menschlichen Interesses. Ich erinnere mich, dass ich vor einigen Jahren auf einer Konferenz eine Demo davon gesehen habe und war sehr beeindruckt.
quelle