{"id":166308,"date":"2022-12-21T13:32:45","date_gmt":"2022-12-21T12:32:45","guid":{"rendered":"https:\/\/liora.io\/de\/?p=166308"},"modified":"2026-02-06T07:06:41","modified_gmt":"2026-02-06T06:06:41","slug":"q-learning-machine-learning-mit-reinforcement-learning","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/q-learning-machine-learning-mit-reinforcement-learning","title":{"rendered":"Q-learning &#8211; Machine Learning mit Reinforcement Learning"},"content":{"rendered":"<h2>Reinforcement Learning ist eine Methode des Machine Learning, mit der komplexe Aufgaben selbstst\u00e4ndig gel\u00f6st werden k\u00f6nnen.<\/h2>\nErst k\u00fcrzlich machte diese Algorithmusfamilie im E-Sport von sich reden, als <a href=\"https:\/\/deepmind.com\/blog\/article\/AlphaStar-Grandmaster-level-in-StarCraft-II-using-multi-agent-reinforcement-learning\">AlphaStar<\/a> ver\u00f6ffentlicht wurde, ein Algorithmus, der entwickelt wurde, um die besten Spieler der Welt in <a href=\"https:\/\/starcraft2.com\/de-de\/\">StarCarft<\/a> herauszufordern. Diese Algorithmen haben ein <b>gro\u00dfes Potenzial, <\/b>erweisen sich aber manchmal als sehr zeitaufwendig in der Erstellung und Parametrisierung. Dieser Artikel soll dir helfen, zu <b>verstehen, was Q-Learning ist <\/b>und wie du Zeit bei der <b>Implementierung <\/b>dieser Art von L\u00f6sung sparen kannst.\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/weiterbildung-data-scientist\">Lernen Sie Machine Learning<\/a><\/div><\/div>\n\n<h3>Definitionen<\/h3>\n<h4>Was genau ist Reinforcement Learning?<\/h4>\n<a href=\"https:\/\/liora.io\/quest-ce-que-le-reinforcement-learning\">Reinforcement Learning<\/a> ist eine Methode des maschinellen Lernens, die es einem <b>Agenten <\/b>(virtuelle Entit\u00e4t: Roboter, Programm usw.), der in eine <b>interaktive Umgebung <\/b>gesetzt wird (seine Aktionen ver\u00e4ndern den Zustand der Umgebung), erm\u00f6glichen soll, <b>Aktionen zu <\/b>w\u00e4hlen, die quantitative <b>Belohnungen <\/b>maximieren. Der Agent probiert aus und verbessert seine Handlungsstrategie auf der Grundlage der von der Umgebung gelieferten Belohnungen.\n<h4>Was ist Q-Learning?<\/h4>\nEs gibt viele verschiedene Reinforcement-Learning-Algorithmen, die in mehrere Unterfamilien kategorisiert werden. <b>Q-Learning <\/b>ist sowohl relativ <b>einfach <\/b>und erm\u00f6glicht gleichzeitig das Verst\u00e4ndnis von Lernmechanismen, die vielen anderen Modellen gemeinsam sind.\n\nZur einleitenden Veranschaulichung: Ein Q-Learning-Algorithmus arbeitet, um ein grundlegendes Problem zu l\u00f6sen. Beim Labyrinth-Spiel z. B. besteht das Ziel des Spiels darin, dem Roboter beizubringen, das Labyrinth so schnell wie m\u00f6glich zu verlassen, w\u00e4hrend er zuf\u00e4llig auf einem der wei\u00dfen Felder platziert wird. Um dies zu erreichen, gibt es drei zentrale Schritte im Lernprozess:\n<ul>\n \t<li style=\"font-weight: 400\"><b>Kenntnis<\/b>: Definition einer Aktien-Wert-Funktion Q ;<\/li>\n \t<li style=\"font-weight: 400\"><b>Wissen erweitern<\/b>: Q-Funktion aktualisieren ;<\/li>\n \t<li style=\"font-weight: 400\"><b>Handeln<\/b>: eine Strategie f\u00fcr PI-Aktionen beschlie\u00dfen<\/li>\n<\/ul>\nQ-Learning ist also ein <b>verst\u00e4rkender Lern<\/b>algorithmus, der versucht, die <b>beste Handlung unter <\/b>Ber\u00fccksichtigung des <b>aktuellen Zustands zu <\/b>finden. Es wird als <b>nicht-politisch <\/b>betrachtet, weil die Q-Learning-Funktion Aktionen lernt, die au\u00dferhalb der aktuellen Politik liegen, wie z. B. zuf\u00e4llige Aktionen zu ergreifen, und daher keine Politik erforderlich ist. Genauer gesagt versucht Q-Learning, eine Politik zu erlernen, die die Gesamtbelohnung maximiert.\n\nDas &#8222;Q&#8220; in Q-Learning steht f\u00fcr <b>Qualit\u00e4t<\/b>. In diesem Fall steht Qualit\u00e4t f\u00fcr den Nutzen einer bestimmten Handlung, um eine zuk\u00fcnftige Belohnung zu erhalten.\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/de\/weiterbildung-data-scientist\">Q-Learning beherrschen lernen<\/a><\/div><\/div>\n\n<h3>Q-Learning: Konkrete Umsetzung<\/h3>\n<h4>Erstellen einer Q-Tabelle<\/h4>\nWenn der Lernprozess abgeschlossen ist, erstellen wir eine sogenannte <b>q-Tabelle<\/b> oder -Matrix, die der Form <b>[Zustand, Aktion] <\/b>folgt, und initialisieren unsere <b>Werte auf null<\/b>. Wir aktualisieren und speichern unsere q-Werte dann nach jeder Episode. Diese Wertetabelle wird zu einer Referenztabelle f\u00fcr unseren Agenten, der anhand der Werte in dieser Matrix die beste Aktion ausw\u00e4hlt.\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>import numpy as np\n# Initialize q-table values to 0\nQ = np.zeros((state_size, action_size))<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\n<h4>Q-Learning und Updates<\/h4>\nDer n\u00e4chste Schritt besteht einfach darin, dass der Agent mit der Umgebung interagiert und Aktualisierungen der <b>Zustand-Aktion-Paare <\/b>in unserem Array <b>Q[state, action] <\/b>durchf\u00fchrt.\n<h5><b>&#8211; Handeln: Untersuchen oder verwerten<\/b><\/h5>\nEin Agent interagiert mit der Umgebung auf zwei Arten. Die erste besteht darin, die Q-Tabelle als Referenz zu verwenden und alle m\u00f6glichen Aktionen f\u00fcr einen bestimmten Zustand zu visualisieren. Der Agent w\u00e4hlt dann die Aktion aus, die auf dem maximalen Wert dieser Aktionen basiert. Dies wird als <b>Exploitation <\/b>bezeichnet, da wir die uns zur Verf\u00fcgung stehenden Informationen nutzen, um eine Entscheidung zu treffen.\n\nDer zweite Weg besteht darin, nach dem Zufallsprinzip zu handeln. Dies wird als <b>Exploration <\/b>bezeichnet. Anstatt Handlungen nach der maximalen zuk\u00fcnftigen Belohnung auszuw\u00e4hlen, w\u00e4hlen wir eine Handlung zuf\u00e4llig aus. Zuf\u00e4llig zu handeln ist wichtig, weil es dem Agenten erlaubt, zu erforschen und neue Zust\u00e4nde zu entdecken, die sonst w\u00e4hrend des Exploitationsprozesses m\u00f6glicherweise nicht ausgew\u00e4hlt werden.\n\nDu kannst das Erkunden \/ Abbauen ausbalancieren, indem du epsilon (\u03b5) verwendest und den Wert f\u00fcr die H\u00e4ufigkeit, mit der du erkunden oder abbauen m\u00f6chtest, festlegst. Hier ist ein ungef\u00e4hrer Code, der davon abh\u00e4ngt, wie der Status und der Aktionsraum eingestellt sind.\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>import random\n# Set the percent you want to explore\nepsilon = 0.2\nif random.uniform(0, 1) &lt; epsilon:\n    &quot;&quot;&quot;\n    Explore: select a random action\n    &quot;&quot;&quot;\nelse:\n    &quot;&quot;&quot;\n    Exploit: select the action with max value (future reward)\n    &quot;&quot;&quot;<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\n<h5><b>&#8211; Aktualisierung der q-Tabelle<\/b><\/h5>\n<b>Aktualisierungen finden nach jedem Schritt <\/b>oder jeder Aktion statt und enden, wenn eine Episode abgeschlossen ist. In diesem Fall bedeutet &#8222;beendet&#8220;, dass der Agent einen <b>Endzustand <\/b>erreicht hat. Ein Endzustand kann z. B. auf einer Bezahlseite landen oder ein gew\u00fcnschtes Ziel erreichen. Mit gen\u00fcgend Exploration (Schritte und Episoden) wird der Agent in der Lage sein, zu konvergieren und die <b>optimalen Werte <\/b>von q oder q-Star (Q\u2217) zu lernen.\n\nHier sind die drei grundlegenden Schritte:\n<ol>\n \t<li style=\"font-weight: 400\">Der Agent beginnt in einem Zustand (s1), nimmt eine Aktion (a1) vor und erh\u00e4lt eine Belohnung (r1).<\/li>\n \t<li style=\"font-weight: 400\">Der Agent w\u00e4hlt die Aktion, indem er sich auf die Q-Tabelle mit dem h\u00f6chsten Wert (max) ODER zuf\u00e4llig (epsilon, \u03b5) bezieht.<\/li>\n \t<li style=\"font-weight: 400\">Aktualisierung der Q-Werte<\/li>\n<\/ol>\nHier ist die grundlegende Update-Regel f\u00fcr Q-Learning :\n<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp># Update q values\nQ[state, action] = Q[state, action] + lr * (reward + gamma * np.max(Q[new_state, :]) \u2014 Q[state, action])<\/xmp>\n\t\t\t\t<\/code>\n<\/pre>\nIn der obigen Aktualisierung gibt es einige Variablen, die wir noch nicht erw\u00e4hnt haben. Was hier passiert, ist, dass wir unsere q-Werte entsprechend der Differenz zwischen den neuen aktualisierten und den alten Werten anpassen. Wir aktualisieren die neuen Werte mithilfe des Gamma und passen unsere Schrittgr\u00f6\u00dfe mithilfe der Lernrate (lr) an.\n<h3>Einige Referenzen<\/h3>\n<ul>\n \t<li style=\"font-weight: 400\"><b>Lernrate: <\/b>lr, oft auch als Alpha bezeichnet, kann als der <b>Grad der Akzeptanz <\/b>des neuen Wertes im Vergleich zum alten Wert definiert werden. Oben nehmen wir die Differenz zwischen dem neuen und dem alten Wert und multiplizieren diesen Wert mit der Lernrate. Dieser Wert wird dann zu unserem vorherigen q-Wert addiert, wodurch er sich in die Richtung unserer letzten Aktualisierung bewegt.<\/li>\n \t<li style=\"font-weight: 400\"><b>Gamma: <\/b>Gamma oder \u03b3 ist ein <b>Aktualisierungsfaktor<\/b>. Er wird verwendet, um die sofortige und die zuk\u00fcnftige Belohnung ins Gleichgewicht zu bringen. In unserer obigen Aktualisierungsregel kannst du sehen, dass wir den Abschlag auf die zuk\u00fcnftige Belohnung anwenden. Im Allgemeinen kann dieser Wert zwischen 0,8 und 0,99 variieren.<\/li>\n \t<li style=\"font-weight: 400\">Belohnung<b>:<\/b> Eine Belohnung (reward) ist der <b>Wert, <\/b>den du <b>erh\u00e4ltst, <\/b>nachdem du eine bestimmte Aktion in einem bestimmten Zustand ausgef\u00fchrt hast. Eine Belohnung kann zu jedem gegebenen Zeitschritt oder nur zum Terminalzeitschritt auftreten.<\/li>\n \t<li style=\"font-weight: 400\"><b>Max: <\/b>np.max() verwendet die numpy-Bibliothek und nimmt das <b>Maximum der zuk\u00fcnftigen Belohnung <\/b>und wendet es auf die Belohnung des aktuellen Zustands an. Dies bewirkt, dass die aktuelle Handlung durch die m\u00f6gliche zuk\u00fcnftige Belohnung beeinflusst wird. Tats\u00e4chlich sind wir durch Q-Learning in der Lage, die zuk\u00fcnftige Belohnung den aktuellen Handlungen zuzuordnen, um dem Agenten zu helfen, die rentabelste Handlung in jedem gegebenen Zustand auszuw\u00e4hlen.<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Reinforcement Learning ist eine Methode des Machine Learning, mit der komplexe Aufgaben selbstst\u00e4ndig gel\u00f6st werden k\u00f6nnen. Erst k\u00fcrzlich machte diese Algorithmusfamilie im E-Sport von sich reden, als AlphaStar ver\u00f6ffentlicht wurde, ein Algorithmus, der entwickelt wurde, um die besten Spieler der Welt in StarCarft herauszufordern. Diese Algorithmen haben ein gro\u00dfes Potenzial, erweisen sich aber manchmal als [&hellip;]<\/p>\n","protected":false},"author":47,"featured_media":166310,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2472],"class_list":["post-166308","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-ki"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/166308","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/users\/47"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/comments?post=166308"}],"version-history":[{"count":1,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/166308\/revisions"}],"predecessor-version":[{"id":217749,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/166308\/revisions\/217749"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/166310"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=166308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=166308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}