Dieser Beitrag stammt von Bob
Obwohl der Beitrag von mir stammt, geht es in der Geschichte teilweise um Andrew, aber hauptsächlich darum, wie LLMs in Mathe besser werden. Anstatt allen von LLMs zu erzählen und eine theoretische Diskussion zu führen, dachte ich, es wäre nützlich, Ihnen ein weiteres Beispiel für die Artwork der Interaktion mit LLMs zu zeigen, die ich sehr nützlich finde.
Die Hintergrundgeschichte
Andrew erwähnt häufig, dass er mit Stans Commonplace -Stichprobenzeiten ungeduldig ist und möchte, dass ihm etwas schneller eine grobe Antwort gibt. Ich und mehrere Kollegen haben additionally daran gearbeitet, eine schnellere Anpassung zu finden Nutpie Sampler, der bereits mit Modellen ausgeführt werden kann, die in Stan oder PYMC kodiert werden). Das bedeutet Bewertung. Additionally fragte ich Andrew endlich um ein Beispiel.
Gelman’s Messfehlermodell
Hier ist das Messfehlermodell, das Andrew mir gegeben hat:
knowledge {
int N;
vector(N) y;
vector(N) x_star;
actual sigma_x_star;
}
parameters {
actual a, b, mu_x;
actual sigma, sigma_x;
vector(N) x;
}
mannequin {
x ~ regular(mu_x, sigma_x);
y ~ regular(a + b*x, sigma);
x_star ~ regular(x, sigma_x_star);
}
Abgesehen davon liebe ich, dass es eine angemessene Untergrenze gibt N.
Dies ist ein klassisches Messfehlermodell – wenn Sie nicht bekannt sind Stan -Benutzerhandbuch Einführung in Messfehlermodelle.
Bobs überarbeitetes Modell
Das sieht aus wie ein BDA Typmodell – Es gibt unsachgemäße flache Priors. Und die latenten wahren Werte der Kovariaten x eine zentrierte Parametrisierung haben. Beide können zu Problemen zur Anpassung führen. Daher habe ich unter Verwendung von Offset und Multiplern zu einer nicht zentrierten Parametrisierung geschwungen und dann einige schwach informative Priors für alle Parameter hinzugefügt.
knowledge {
int N;
vector(N) y;
vector(N) x_star;
actual sigma_x_star;
}
parameters {
actual a, b, mu_x;
actual sigma, sigma_x;
vector(N) x;
}
mannequin {
a ~ regular(0, 1);
b ~ regular(0, 1);
mu_x ~ regular(0, 1);
sigma ~ lognormal(0, 0.5);
sigma_x ~ lognormal(0, 0.5);
x ~ regular(mu_x, sigma_x);
y ~ regular(a + b * x, sigma);
x_star ~ regular(x, sigma_x_star);
}
Es passt besser als Andrew, aber immer noch nicht intestine. Mit dem Commonplace-1000-Warmup- und 1000-Stichproben-Iterationen auf vier Ketten gab es immer noch R-Hass-Werte über 1,2. Wenn wir das bis zu einer Größenordnung mehr Iterationen ankurbeln, sieht alles in Ordnung aus, aber es hat immer noch eine integrierte Autokorrelationszeit von rund 100 (was bedeutet, dass ES das 1/100 -fache der Stichprobengröße beträgt).
Überarbeitete Modell von GPT 5
Als ich mir das Modell ansah, dachte ich, dass es wie ein Hauptkandidat aussah, um das auszumarschieren x Parameter – Es hat einen normalen Prior und es wird zu einer normalen Wahrscheinlichkeit verwendet. Aber ich bin schrecklich in dieser Artwork von Mathematik und es gab keine Mathematikstatistik wie Philip Greengard, additionally wandte ich mich an GPT 5, was bereits etwas Mathe für mich gemacht hatte, das ich selbst nicht tun konnte (Berechnung der zweiten und vierten Momente von Neals Trichter). Hier ist meine Interaktion mit GPT 5.0 auf „Auto“. GPT 3.5 konnte kaum ein syntaktisch korrektes Stan -Programm für eine lineare Regression schreiben. Lassen Sie mich additionally nur sagen, dass es seitdem einen langen Weg zurückgelegt hat.
(Bob) Ich habe das folgende STAN -Programm für Messfehler in X und ich frage mich, ob es eine Möglichkeit gibt, einige der Variablen herauszufinden, um diese Probe effizienter zu gestalten. Ich dachte, da alles regular ist, würde es eine Probability geben. Insbesondere möchte ich das X out, wenn möglich, marginalisieren.
```stan (code from above) ```Ich wäre in Ordnung, die Priors auf dem Sigma leicht zu modifizieren, um inverse Gammas auf Sigma^2 zu sein, wenn dies dazu beitragen würde, die Räder der Marginalisierung zu fetten.
Und siehe da, der Genie hat ein korrekt marginalisiertes Stan -Programm zurückgegeben:

knowledge {
int N;
vector(N) y;
vector(N) x_star;
actual sigma_x_star;
}
parameters {
actual a, b, mu_x;
actual sigma, sigma_x;
}
remodeled parameters x*)
actual sd_xstar = sqrt(sq.(sigma_x) + sq.(sigma_x_star));
actual sd_y_cond = sqrt(sq.(sigma) + sq.(b) * tilde_v);
vector(N) tilde_mu = tilde_v * ( inv_var_x * rep_vector(mu_x, N)
+ inv_var_xs * x_star );
mannequin x*)
Gefolgt von diesem Rat:
- (GPT5) Integration von μX ist auch mit einem normalen Prior möglich, induziert jedoch eine dichte Kreuzbeobachtungskovarianz (Rang-1-Replace) und ist in der Regel für HMC/Nuts schlechter. ΜX als Parameter zu halten ist normalerweise besser.
Hat es funktioniert?
Ja! Es hat nicht nur funktioniert, es hat auch beim ersten Versuch funktioniert. Und die Ergebnisse stimmten zu dem überein, was ich von einem viel längeren Lauf des vollständigen Modells bekam, aber mit einem großartigen ESS.
GPT, können Sie unseren Benutzern zu Hause erklären, wie Sie das gemacht haben?
Ich dachte Stan -Benutzerhandbuch. Additionally bat ich den Genie, sich selbst zu erklären.
. Jetzt möchte ich dies als Beispiel für unsere Benutzer im Effizienzkapitel des (*Stan -Benutzerhandbuchs*) (*Stan -Benutzerhandbuch*) aufschreiben (https://mc-stan.org/docs/stan-users-guide/efficien-tuning.html). Ich möchte additionally eine Erklärung für ein ähnliches Publikum. Angesichts der Tatsache, dass wir uns mit der faktorisierten bedingten Kind befassen, können Sie ein bisschen detaillierter darüber eingehen, wie Sie die Formulare der vier Variablen abgeleitet haben, die Konstanten $ tilde {v} $ und $ mu_i $ und die Ausschüttungen für $ x_i^ star $ und y_i mid x_i^ star $ $? Sie können es in bekannte Eigenschaften von Normalen unterteilen, erinnern Sie mich jedoch daran, was diese sind, weil ich nicht sehr intestine mit klassischen Mathematikstatistiken von Exponentialfamilien bin, noch viele unserer Benutzer.
Und natürlich mit einem LLM, Bob ist dein Onkel (aus der französischen Redewendung et voilà):


Natürlich muss ich die gesamte Mathematik überprüfen, bis ich sie gründlich verstehe, und dann in dann zu konvertieren
Die Stan -Benutzerhandbuch Stil.
