Reinforcement Learning – Konzept 02: Monte Carlo [Monte-Carlo (MC)]

Dieser Artikel konzentriert sich auf die Lösung der folgenden Probleme:
(1) Was ist die Monte-Carlo-Methode?
(2) Welche Probleme kann die Monte-Carlo-Methode lösen?
(3) Welche Vorteile bietet die Monte-Carlo-Methode? Oder warum die Monte-Carlo-Methode verwenden?

1. Theoretische Grundlage

1.1 Bernoullis Satz der großen Zahlen

Führen Sie N unabhängige wiederholte Experimente durch. Mit zunehmender Anzahl der Experimente tritt die Häufigkeit von Ereignis A auf n A N \dfrac{n_A}{N} NNA Konvergiert zur Wahrscheinlichkeit von Ereignis A entsprechend der Wahrscheinlichkeit p A p_A PA

1.2 Xinchins Satz über große Zahlen

Eine Folge unabhängiger und identisch verteilter (iid, independent and identically distributed) Zufallsvariablen x 1 , x 2 , x 3 , . . . , x n x_1, x_2, x_3, ..., x_n X1,X2,X3,...,Xn,Ich möchte mehrere Semester haben μ \mu μ, probieren Sie einen Teil der Stichprobe aus der Zufallssequenz aus und zeichnen Sie ihn als Menge auf X s X_s Xs, mit E ( X s ) = μ E(X_s)=\mu E(Xs)=μ, also mit der Stichprobengröße n n Wenn n zunimmt, nähert sich der Stichprobenmittelwert dem Grundgesamtheitsmittelwert an.

1.3 Chebyshevs Satz über große Zahlen

Angenommen, die Zufallsvariablenfolge x 1 , x 2 , x 3 , . . . , x n x_1, x_2, x_3, ..., x_n X1,X2,X3,...,Xn 两两 Gegenseitige Differenz und gewünschte Existenz E ( X i ) = μ i E(X_i)=\mu_i E(Xi)=Mi, die Varianz existiert und hat eine gemeinsame begrenzte Obergrenze, das heißt:

D ( X i ) = σ i 2 < M D(X_i)=\sigma^2_i<MD(Xi)=Pich2<M

Mit zunehmender Stichprobengröße nähert sich der Stichprobenmittelwert dann dem Grundgesamtheitsmittelwert an.

1.4 Unterschiede und Zusammenhänge zwischen den dreien

  • Bernoullis Satz der großen Zahlen offenbart die Beziehung zwischen Häufigkeit und Wahrscheinlichkeit;
  • Hinchins Satz über große Zahlen offenbart die Beziehung zwischen dem arithmetischen Mittel und der mathematischen Erwartung;
  • Chebyshevs Satz über große Zahlen offenbart die Beziehung zwischen dem Stichprobenmittelwert und der wahren Erwartung (im Vergleich zu Hinchins Satz über große Zahlen 切比雪夫大数定理并未要求同分布, der allgemeiner ist).

Zusammenfassend verbindet der Satz der großen Zahlen 平均值 aus der mathematischen Statistik und 期望 aus der Wahrscheinlichkeitstheorie.

2. Monte-Carlo-Methode

2.1 Ursprung von Monte Carlo

Monte Carlo ist ein berühmtes Casino in Monaco, und der Name dieser Methode weist auf den Zufallsstichprobencharakter hin.

Die Monte-Carlo-Methode, auch als statistische Simulationsmethode und statistische Experimentmethode bekannt, ist eine numerische Simulationsmethode, die Wahrscheinlichkeitsphänomene als Forschungsobjekt verwendet. Es handelt sich um eine Berechnungsmethode, die statistische Werte erhält und unbekannte charakteristische Größen auf der Grundlage der Stichprobenerhebung annimmt Methode. Diese Methode simuliert die zufälligen Eigenschaften des Systems, indem sie ein dem System ähnliches Wahrscheinlichkeitsmodell erstellt und Zufallsexperimente auf einem digitalen Computer durchführt. Daher eignet sie sich für Simulationsexperimente an diskreten Systemen und eignet sich besonders für einige schwierige oder schwierige Probleme mit analytischen Methoden sogar unmöglich zu lösen.

Monte Carlo ist keine tiefgreifende Theorie, sondern lediglich eine Methode oder Strategie, die auf dem Satz der großen Zahlen basiert. Es verwendet die Häufigkeit des Auftretens von Stichproben nach der Stichprobe, um die Wahrscheinlichkeit abzuschätzen, sodass eine Näherungslösung anstelle einer exakten Lösung erhalten wird. Mit zunehmender Anzahl von Stichproben nähert sich die Näherungslösung der exakten Lösung an. Die Monte-Carlo-Methode selbst ist kein Optimierungsalgorithmus und unterscheidet sich wesentlich von Optimierungsalgorithmen wie genetischen Algorithmen und Partikelschwarmalgorithmen.

Die theoretische Grundlage der Monte-Carlo-Methode ist die Wahrscheinlichkeits- und Statistiktheorie;

Die Hauptmethode/Implementierungsmethode der Monte-Carlo-Methode sind Zufallsstichproben und statistische Experimente.

2.2 Monte-Carlo-Problemlösungsideen

Grundschritte von Monte Carlo:

Der erste Schritt besteht darin, ein Wahrscheinlichkeitsmodell oder einen Zufallsprozess zu erstellen, dessen Parameter oder numerische Eigenschaften der Lösung des Problems nahe kommen.
Der zweite Schritt besteht darin, verschiedene Verteilungen anzugeben das Modell Stichprobenmethode für Zufallsvariablen;
Der dritte Schritt besteht darin, diese Parameter oder numerischen Merkmale durch Beobachtung oder Stichprobenexperimente des Modells oder Prozesses zu berechnen.
Kurz gesagt besteht die Monte-Carlo-Methode aus drei Hauptschritten: Erstellen eines Wahrscheinlichkeitsmodells, Verwenden von Wahrscheinlichkeitsverteilungsstichproben und Erstellen verschiedener Schätzer.

Für einfache Probleme, die analytisch gelöst werden können, ist Monte Carlo eine „dumme Methode“, für viele Probleme, die schwer zu lösen sind, ist Monte Carlo jedoch eine effektive oder sogar die einzig praktikable Methode.

2.2 Anwendung der Monte-Carlo-Methode

Berechnung bestimmter Integrale;
Numerische Berechnung transzendentaler Integrale (Newton-Leibniz-Formel ist schwer zu lösen), wie y=sin(x 2), y=e{ax^2} usw.;
Finden Sie die Fläche unregelmäßiger Formen;
Finden Sie \pi ;
Risikobewertung;

3. Ein paar kleine Kastanien

3.1 Bestimmte Integrale lösen

y = \int_{0}{10}x2dx \

3.1.1 Analysemethode

y = \int_{0}{10}x2dx=\frac{1}{3}x< a i=3>3|_0{10}=\frac{1}{3}\times103-\frac{1}{3}\ times03=\frac{1000}{3} \

3.1.2 Monte-Carlo-Methode

Es gibt zwei Methoden zur Berechnung bestimmter Integrale mit der Monte-Carlo-Methode: die Zufallspunktmethode und die Erwartungsmethode (oder Durchschnittsmethode). Dieser Artikel konzentriert sich auf die Zufallspunktmethode. Die Idee, das bestimmte Integral mit der Zufallspunktmethode zu lösen, ist: Das Problem ist x\in[0, 10],,y\in[0, 100], also sind Punkte gleichmäßig innerhalb des rechteckigen Intervalls von verteilt 10\times100, und die Statistik fällt unter die Kurve. Das Verhältnis der Anzahl der Punkte multipliziert mit der Fläche des rechteckigen Intervalls ist der Wert des bestimmten Integrals. Hinweis: Die Kurve in diesem Beispiel liegt vollständig über der x-Koordinatenachse, sodass die positiven und negativen Vorzeichen nicht berücksichtigt werden müssen. Wenn die Fläche positiv oder negativ ist, müssen Sie zuerst die Fläche teilen, die Partitionen berechnen und dann Summe!

Das Wesen des bestimmten Integrals besteht darin, die von der Abszisse eingeschlossene vorzeichenbehaftete Fläche zu summieren. Daher hat die Monte-Carlo-Methode einen Nachteil: Sie kann nur das bestimmte Integral einer Funktion finden, deren Wert konstant nicht negativ oder konstant nicht positiv ist das bestimmte Integralintervall. Wenn das Integral Das Intervall ist positiv oder negativ, dann kann das Intervall nur in mehrere Teilintervalle aufgeteilt, separat berechnet und dann addiert werden!

%% Monte-Carlo-Methode zur näherungsweisen Lösung bestimmter Integrale
% Integralkurve: y = x ^ 2
% Bestimmtes Integralintervall: [0, 10]

%% Matlab-Code
clear; clc; close all; warning off;
rng(0);
set(0,'defaultAxesFontName', 'Monospaced'); % Verstümmelte chinesische Zeichen verhindern

% Diskretisierung
L = 10; % Integrationslänge
fs = 1 / 1e3; % Abtastrate
x = 0 : fs : L;
y = x .^ 2;
S = L * (L ^ 2); % Probenraumfläche a>

% verteilte Proben innerhalb des Intervalls
N_Lis = [1e1, 1e2, 1e3, 1e4]; % Liste der Probennummern

% 求解定积分
res_integ = 1/3 * (10^3 - 0^3); % 解析解
Figure(1); clf;
für n = 1 : length(N_Lis)
cnt = 0;
x_random = L * rand(1, N_Lis(n)); % 随机点x
y_random = L ^ 2 * rand(1, N_Lis(n)); % 随机点y
for i = 1 : N_Lis(n)
if y_random(i) <= x_random(i) ^ 2< a i=9> cnt = cnt + 1; end end res_appro = cnt / N_Lis(n) * S; % 近似解



% 作图
subplot(2, 2, n);
plot(x, y, 'k', 'linewidth', 2); hold on;
area(x, y, 'facecolor', [0, 1, 1]); hold on;
scatter(x_random, y_random, 10, 'r', 'filled', 'markerfacealpha', 0.5);
xlabel('x'); ylabel('y'); set(gca, 'fontsize', 14);
title(['解析解≈', num2str(res_integ, '%.1f'), '   近似解≈', num2str(res_appro, '%.1f')]);

end
f = suptitle('Lösen des bestimmten Integrals von y=x^2');
set(f, 'fontsize', 18) ; set(gcf, 'position', [12, 60, 1450, 650]);
Laufende Ergebnisse:

Aus den obigen Laufergebnissen können wir erkennen, dass die Näherungslösung mit zunehmender Anzahl der Stichprobenpunkte immer näher an die reale analytische Lösung herankommt.

3.2 Lösen Sie nach der Fläche eines Sechsecks auf

Die Figur ist ein Sechseck, das von sechs geraden Linien umgeben ist. Die sechs geraden Linien sind:

\begin{cases} \begin{align} &y1 = 1\notag\ &y2 = -x + 2\notag\ &y3 = x + 2\notag\ &y4 = 3\notag\ &y5 = -x+5\notag\ &y6=x-1\notag \end{align} \end{cases} \

3.2.1 Analysemethode

Diese Figur besteht aus zwei oberen und unteren Trapezen, ihre Fläche beträgt also:

S = (1 + 3) \times 1 \div 2 \times 2 = 4 \

3.2.2 Monte-Carlo-Methode

Die Idee bei der Verwendung der Monte-Carlo-Methode zur Lösung unregelmäßiger Flächen ist: Das unregelmäßige Muster muss innerhalb eines bestimmten regelmäßigen Rechtecks ​​liegen. Die Fläche des Rechtecks ​​ist leicht zu finden. Die Wahrscheinlichkeit, dass sich ein Punkt innerhalb befindet Die unregelmäßige Form ist p=\frac{A_{Form} }{A}. Wenn Sie also wiederholt Punkte in den rechteckigen Bereich streuen und die Anzahl der Stichprobenpunkte groß genug ist, entspricht der Anteil (Häufigkeit) der in das unregelmäßige Muster gestreuten Punkte ungefähr der Wahrscheinlichkeit, dass die Punkte in die unregelmäßige Form fallen. Im Augenblick:

p=\frac{A_{Form}}{A}\ungefähr\frac{n}{N} \

Das unregelmäßige Grafikintervall \Omega kann durch die folgende mathematische Formel ausgedrückt werden:

\Omega={y\geq1,and,y\geq -x+2,and,y\leq x+2,and,y\leq 3,and,y\leq -x+5,and,y\geq x -1} \

Das ist das „Treffer“-Intervall der Monte-Carlo-Methode. Daher lautet der Matlab-Code der Monte-Carlo-Methode wie folgt:

%% Monte-Carlo-Methode zur ungefähren Lösung des Grafikbereichs
klar; clc; alle schließen; Warnung aus;

% Produktionsmuster
L = 4; % Ward-Rechtecklänge
fs = 1 / 1e3;
x1 = 1 : fs : 2;
y1 = 1 * ones(1, length(x1));
x2 = 0 : fs : 1; y3 = x3 + 2; x3 = 0 : fs : 1;
y2 = -x2 + 2; y4 = 3 * ones(1, length(x4)); x5 = 2 : fs : 3; y5 = -x5 + 5; x6 = 2 : fs : 3; y6 = x6 - 1 ;







S = L * L;

% 计算图形面积
res_integ = (1 + 3) * 1 /2 * 2;
N_Lis = [1e1, 1e2, 1e3, 1e4];
figur(1); clf;
für n = 1 : length(N_Lis)
cnt = 0;
x_random = L * rand(1, N_Lis(n));
y_random = L * rand(1, N_Lis(n));
für i = 1 : N_Lis(n) res_appro = cnt / N_Lis(n) * S; end end cnt = cnt + 1; && (y_random(i)<=3) && (y_random(i)<=-x_random(i)+5) && (y_random(i)>=x_random(i)-1)
if (y_random(i)>=1) && (y_random(i)>=-x_random(i)+2) && (y_random(i)<=x_random(i)+2) …




% 作图
subplot(2, 2, n);
plot(x1, y1, 'k', 'linewidth', 2); hold on;
plot(x2, y2, 'm', 'linewidth', 2); hold on;
plot(x3, y3, 'g', 'linewidth', 2); hold on;
plot(x4, y4, 'y', 'linewidth', 2); hold on;
plot(x5, y5, 'b', 'linewidth', 2); hold on;
plot(x6, y6, 'r', 'linewidth', 2); hold on;
h = fill([1, 2, 3, 2, 1, 0], [1, 1, 2, 3, 3, 2], 'c');
scatter(x_random, y_random, 10, 'r', 'filled', 'markerfacealpha', 0.5); hold off;    
xlabel('x'); ylabel('y'); title(['样本数=', num2str(N_Lis(n)), '   解析解=', num2str(res_integ), '   近似解≈', num2str(res_appro, '%.2f')]); 
set(gca, 'fontsize', 14); set(h, 'edgealpha', 0, 'facealpha', 0.3);

end
h = suptitle('Monte-Carlo-Methode zum Ermitteln der Fläche des Diagramms');
set(h, 'fontsize ', 18);
set(gcf, 'position', [12, 60, 1450, 650]);
Laufergebnisse:

Einige Leute haben vielleicht Fragen. Die beiden oben genannten Beispiele können durch reguläre bestimmte Integralformeln und reguläre Diagrammflächenberechnungsformeln erhalten werden. Warum müssen wir also die Monte-Carlo-Methode verwenden? Die Monte-Carlo-Methode scheint nicht so einfach zu sein wie die analytische Lösung. Welche Bedeutung hat die Monte-Carlo-Methode?

Eine Frage zur Lösung dieser Frage: Wenn Sie auf eine unregelmäßige Figur ohne Flächenberechnungsformel stoßen, wie berechnet man dann deren Fläche? Jemand möchte sagen: Benutze bestimmte Integrale! Dann frage ich mich noch einmal: Was wäre, wenn die Kurvenfunktionen rund um diese unregelmäßige Figur nicht integrierbar wären? Dann kann die analytische Lösung nicht berechnet werden. Zu diesem Zeitpunkt kann die Monte-Carlo-Methode nur zur Lösung der Näherungslösung verwendet werden.

3.3 Lösen Sie den Bereich unregelmäßiger Formen

Die Figur ist eine unregelmäßige Figur, die von drei Kurven umgeben ist. Die drei Kurven sind:

\begin{cases} \begin{align} &y1 = sin(x^2)\notag\ &y2 = \frac{sin(x)}{x}\notag\ &y3 = e{-x2}\notag\notag\ \end{align} \end{cases} ,,,,,0\leq x\leq 2 \

Wie unten gezeigt, sind die folgenden beiden Bilder die Kurven der drei Funktionen und die von ihnen eingeschlossenen Flächen.

Modellieren Sie die Fläche der umschlossenen Fläche\Omega wie folgt:

\begin{cases}\begin{align}&S=\int\int_{\Omega}1dxdy\note\&\Omega={(x,,y),,, 0\leq x \leq2,one,y\leq sin(x^2),one,y\leq \frac{sin(x)}{x},one,y\geq e{-x 2}}\notes\\end{align}\end{cases} \

Im Augenblick:

\begin{align}S&=\int_02\int_{e{-x 2}}{min(sin(x^2), \frac{sin(x)}{x})}1dydx\notag\&=\int_0^2 y|_{ e{-x2}{min(sin(x2 ), \frac{sin(x)}{x})}dx\notag\&=\int_0^2 min(sin(x^2), \frac{sin(x)}{x})-e< /span>2}dx\notag\\end{align} \{-x

Wenn Sie über gute mathematische Fähigkeiten verfügen, können Sie auf einen Blick erkennen, dass es sich bei diesen drei Funktionen um nicht integrierbare Funktionen handelt. Dieses Beispiel kann nicht analytisch gelöst werden. Im Folgenden wird der Schwerpunkt auf die Anwendung der Monte-Carlo-Methode gelegt.

Die Idee der Monte-Carlo-Methode besteht darin, Punkte innerhalb eines rechteckigen Intervalls von 2\times3 gleichmäßig zu verteilen, den Anteil der Punkte zu zählen, die in die Fläche fallen, und dann mit der Fläche des rechteckigen Intervalls zu multiplizieren, um die ungefähre Fläche zu erhalten des Diagramms. Die Stichprobenpunkte sind: Je größer die Zahl, desto näher liegt die Näherung am wahren Wert.

Eingeschlossen ist der Flächenraum \Omega, der das „Treffer“-Intervall der Monte-Carlo-Methode ist. Daher lautet der Matlab-Code der Monte-Carlo-Methode wie folgt:

%% Monte Carlo löst Probleme, die nicht durch analytische Lösungen gelöst werden können
clear; clc; close all; warning off;

% Signal, das nicht von drei Personen erzeugt werden kann
T = 20;
fs = 1 / 1e3;
x0 = -T : fs : T;
y1 = sin(x0.^ 2);
y2 = sin(x0) ./ x0;
y3 = exp(-x0.^2);

figure(1); clf;
subplot(3, 1, 1);
plot(x0, y1, ‘linewidth’, 1.5); ylabel(‘y’); title(‘y=sin(x^2)’); set(gca, 'fontsize', 12);
subplot(3, 1, 2);
plot(x0, y2, 'linewidth', 1.5) ; ylabel(‘y’); title(‘y=sin(x)/x’); set(gca, 'fontsize', 12);
subplot(3, 1, 3);
plot(x0, y3, 'linewidth', 1.5) ; xlabel(‘x’); ylabel(‘y’); title(‘y=e{-x2}’); set(gca, ‚fontsize‘, 12);

% Systematisierte Fläche
x = 0 : fs : 2;
y11 = sin(x.^ 2);
y21 = sin(x) ./ x;
y31 = exp(-x.^2);

figure(2); clf;
plot(x, y11, ‚linewidth‘, 1.5); warte mal;
plot(x, y21, ‘linewidth’, 1.5); warte mal;
plot(x, y31, 'linewidth', 1.5); warte;
area(x(y11>y31 & y21>y11), y11(y11>y31 & y21>y11), 'facecolor', 'c', 'edgealpha', 0); warte;
area(x(y11>y31 & y21>y11), y31(y11>y31 & y21>y11), 'facecolor', 'w', 'edgealpha', 0); warte;
h = legend('y=sin(x^2)', 'y=sin(x)/x', 'y=e{-x2}', 'location', 'southwest');
xlabel('x'); ylabel(‘y’); title(‘求三条曲线围成的面积’); set(gca, ‚fontsize‘, 12); set(h, ‚fontsize‘, 12);

% 蒙特卡洛法求面积
L = 2;
H = 3;
S = L * H;
N_Lis = [1e1, 1e2, 1e3, 1e4];
Figure(3); clf;
für n = 1 : length(N_Lis)
N = N_Lis(n);
x_random = L * rand (1, N);
y_random = H * rand(1, N) - 1;
cnt = 0;
für i = 1 : N
if (y_random(i) <= sin(x_random(i)^2)) && (y_random(i) <= sin(x_random(i))/x_random(i)) …
&& (y_random(i) >= exp(-x_random(i)^2))
cnt = cnt + 1;
end
Ende
res_appro = cnt / N * S;

subplot(2, 2, n);
plot(x, y11, 'linewidth', 1.5); hold on;
plot(x, y21, 'linewidth', 1.5); hold on;
plot(x, y31, 'linewidth', 1.5); hold on;
area(x(y11>y31 & y21>y11), y11(y11>y31 & y21>y11), 'facecolor', 'c', 'edgealpha', 0); hold on;
area(x(y11>y31 & y21>y11), y31(y11>y31 & y21>y11), 'facecolor', 'w', 'edgealpha', 0); hold on;
scatter(x_random, y_random, 10, 'r', 'filled', 'markerfacealpha', 0.5);
xlabel('x'); ylabel('y'); title(['样本数=', num2str(N_Lis(n)), '   近似解≈', num2str(res_appro, '%.2f')]); 
set(gca, 'fontsize', 14); 

Ende

h = suptitle('Monte-Carlo-Methode zum Ermitteln der Fläche einer Figur');
set(h, 'fontsize', 18);< a i=2> set (gcf, 'position', [12, 60, 1450, 650]); Laufergebnisse:

4. Zusammenfassung

Bei der Monte-Carlo-Methode handelt es sich nicht um einen Optimierungsalgorithmus, sondern um eine diskretisierte Problemlösungsstrategie auf Basis des Satzes der großen Zahlen. Sie eignet sich besonders dann, wenn die analytische Lösung des Problems schwer zu berechnen ist oder es gar keine analytische Lösung gibt.




Referenzmaterialien:
Monte-Carlo-Prinzipien und Beispiele (mit Matlab-Code)
Top Ten Algorithmen für die mathematische Modellierung 01 – Monte-Carlo-Algorithmus ( Monte Carlo )
[Python-Monte-Carlo-Algorithmus]

おすすめ

転載: blog.csdn.net/u013250861/article/details/134890225