From 101bfba31f4f6fa4db320abe8a760459b0daf2cc Mon Sep 17 00:00:00 2001 From: paul-loedige Date: Thu, 4 Feb 2021 10:55:21 +0100 Subject: [PATCH] reinforcement learning abgeschlossen --- .../Reinforcement Learning.tex | 46 +++++++++++++++--- images/epsilon-greedy.png | Bin 0 -> 24857 bytes 2 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 images/epsilon-greedy.png diff --git a/chapters/Maschinelles Lernen/Reinforcement Learning.tex b/chapters/Maschinelles Lernen/Reinforcement Learning.tex index d7b5b44..6071e84 100644 --- a/chapters/Maschinelles Lernen/Reinforcement Learning.tex +++ b/chapters/Maschinelles Lernen/Reinforcement Learning.tex @@ -96,9 +96,43 @@ Beim \ac{TD} Learning lernt der Agent bereits aus unvollständigen Episoden. Man sagt: \say{learning a guess from a guess} - \paragraph{Q-Learning} - Wenn man die Bellman-Funktion für Action-Value-Funktionen (\ref{rl: value}) einsetzt erhält man: - $$Q(s,a)=\mathbb{E}\left[R_{t+1}+\gamma Q(S_{t+1},A_{t+1})\mid S_t=s, A_t=a\right]$$ - Hieraus ergibt sich die Aktualisierungsregel für das Q-Learning - $$Q(s_t,a_t)\gets \underbrace{s_t,a_t}_{\text{old value}} + \underbrace{a}_{\text{learning rate}} \cdot \left(\overbrace{\underbrace{r_{t+1}}_{\text{reward}} + \underbrace{\gamma}_{\text{discount facotr}}\cdot\underbrace{\max_aQ(s_{t+1},a)}_{\text{estimate of optimal future value}}}^{\text{learned value}}-\underbrace{Q(s_t,a_t)_{\text{old value}}}\right)$$ - \includegraphics[width =.8\textwidth]{q-learning.png} \ No newline at end of file + \section{Q-Learning} + \label{q-learning} + Wenn man die Bellman-Funktion für Action-Value-Funktionen (\ref{rl: value}) einsetzt erhält man: + $$Q(s,a)=\mathbb{E}\left[R_{t+1}+\gamma Q(S_{t+1},A_{t+1})\mid S_t=s, A_t=a\right]$$ + Hieraus ergibt sich die Aktualisierungsregel für das Q-Learning + $$Q(s_t,a_t)\gets \underbrace{s_t,a_t}_{\text{old value}} + \underbrace{a}_{\text{learning rate}} \cdot \left(\overbrace{\underbrace{r_{t+1}}_{\text{reward}} + \underbrace{\gamma}_{\text{discount facotr}}\cdot\underbrace{\max_aQ(s_{t+1},a)}_{\text{estimate of optimal future value}}}^{\text{learned value}}-\underbrace{Q(s_t,a_t)_{\text{old value}}}\right)$$ + \includegraphics[width =.8\textwidth]{q-learning.png} + Für die Auswahl des Pfades wird häufig der $\epsilon$-greedy (\ref{epsilon-greedy}) Algorithmus verwendet. + \begin{tabular}{|p{.465\textwidth}|p{.465\textwidth|}} + \hline + \textbf{Vorteile} & \textbf{Herausforderungen}\\ + \hline + \begin{itemize} + \item lernt nach jedem Schritt + \item lernt ohne Erreichen eines Zielzustands + \item benötigt kein Modell für die Aktionsauswahl + \end{itemize} & + \begin{itemize} + \item Benötigt meist eine Simulation + \item Wie geht man mit großen Zustandsräumen um? + \end{itemize}\\ + \hline + \end{tabular} + + \subsection{Exploration vs Exploitation} + \label{exploration vs exploitation} + Nach zufälliger Durchsuchung gelangt der Agent irgendwann durch Zufall zu einem positiven Ergenis. + Nun steht er allerdings vor einem Dilemma. + Soll er den Weg mit bekannt hohem Nutzen (\ref{rl: value}) gehen (Exploitation) oder noch nicht ausprobierte Aktionen versuchen (Exploration)? + Der Vorteil der Exploration ist, dass ein besserer Weg als der bereits bekannte gefunden werden kann, + wohingegen die Exploitation den Vorteil eines sicheren Rewards (\ref{rl}) hat. + + \subsubsection{$\epsilon$-greedy} + \label{epsilon-greedy} + \begin{wrapfigure}{h}{.5\textwidth} + \vspace{-15mm} + \includegraphics[width = .5\textwidth]{epsilon-greedy.png} + \end{wrapfigure} + Ein Algorithmus, der einen Mittelweg zwischen beiden Lösungen darstellt ist der $\epsilon$-greedy-Algorithmus. + Hierbei wird mit einer von $\epsilon$ abhängigen Wahrscheinlichkeiten ein zufälliger Weg anstatt des besten bekannten Weges gewählt.\\ \ No newline at end of file diff --git a/images/epsilon-greedy.png b/images/epsilon-greedy.png new file mode 100644 index 0000000000000000000000000000000000000000..13929ee0801abe88e9d2b7473336528cf73f3083 GIT binary patch literal 24857 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ఃGI0jO6A887Y~SljJ~*j(bQ_FgHj;8;h(tX zsB>-a?io0AUu}d6XB@`Y+$z)H5eNOTAXpYaye>HOnXwIkbo&sC3W4!&+qi?>{g`o=b5rM);`qn z*RXFu#eiCzj$*?-qn;A=;0V=xa_Zk;Scq95g{vE!2#|Lo5{Zy(V~#;yIH=ttBd~kq3x(YMa1LOuv-f=a^@yr$74ITvDy|j>9VH6~amv^Z0FmEI z35ov|HO!f$IFuyZxeF;0*f{%RP5bKab`Oap!5P-S=kfM-MHE!^b&`u(Dv2Z$fElg@ z*`_*nx=R>1t>halo#a|%6obMu$lS0rZJR&g#FS}`xXokrzf^JF;^OYg>CJ;l1E3c} zZeyL-5(`3qaHB(}tN0Jm<-tA+@bN%>r^UxIp7@P!5>k$47s%gPjBLK`i5WY0-P`kd zQdqGKVQKo7AGWlLxbxgN56gh}vgj+7A>IeeA=CAGw&QCb6S<$n%QjQF8!}oTJh=-J zt4H|ectnzepKb4n>{Qoz(<64rn7{E z$IB|N`ijbpDUFa=Y<2jlDMoIvq;BsGoGQc=CHTg3BdD}&?`GYP4C?Uw=;QePQ{phM zas|_UcgcKj3x_zkhzc+MN5Ftb%ze=@U7t;}!h^H+p%e?GOWr0G5O|s-WVB!8$lKbB z)gEc~R7x|qYp>*_!C~7ni@(3>kXT7mv7Qq2*Yv}UUtTfHE*&vWQE(y;=lZk|hzssD zBoi;Lz5ia|>qCSF@!tz<<>I%Ca{$-JMKJllm;XNa|DO-U@W$3PQ0KEcN?wCqMkvUr KNS8?(2mcQURCf>n literal 0 HcmV?d00001