E-Book, Deutsch, 382 Seiten
Reihe: Rheinwerk Computing
Noack / Sanner Künstliche Intelligenz verstehen
2. Auflage 2023
ISBN: 978-3-8362-9860-5
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Eine spielerische Einführung
E-Book, Deutsch, 382 Seiten
Reihe: Rheinwerk Computing
ISBN: 978-3-8362-9860-5
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Neugierig auf KI? Lust, zu experimentieren? Dann sind Sie hier richtig. Es erwartet Sie mehr als ein Buch: Mit den im Web bereitgestellten Beispielen können Sie zuschauen und ausprobieren, wie verschiedene KI-Verfahren Texte ergänzen, Spiele gewinnen (oder auch verlieren - das hängt ganz von Ihnen ab ...), Daten sortieren und vieles mehr. Sie können Parameter wie Textlänge oder Anzahl der Versuche verändern oder auch direkt Hand an den Code anlegen und sehen, was passiert. Dank der Web-Umgebung p5js genügt einfaches JavaScript, um die visuellen Programme zu erstellen. So können Sie sich ganz auf die Logik konzentrieren.
Pit Noack zeigt Ihnen im Buch Schritt für Schritt und Verfahren für Verfahren, was dahinter steckt. Mit handgezeichneten Lerngrafiken und Cartoons von Sophia Sanner. Alle Projekte zum Nachprogrammieren, Herunterladen oder online Bearbeiten. Experimente erwünscht!
Aus dem Inhalt:
- Grundlagen aus der Informatik
- Wörter und Sätze vervollständigen
- Schreibfehler automatisch korrigieren
- Zusammenhänge erkennen und Daten ordnen
- Selbstlernende Algorithmen
- Neuronale Netze
- Transformer und Large Language Models
- Auch für Kultur- und Medieninteressierte geeignet
Autoren/Hrsg.
Weitere Infos & Material
Materialien zum Buch ... 16 Vorwort zur zweiten Auflage ... 17 1. Einleitung ... 19 1.1 ... Worum es uns in diesem Buch geht ... 20 1.2 ... Für wen wir dieses Buch geschrieben haben ... 21 1.3 ... Aufbau der einzelnen Kapitel ... 22 1.4 ... Ein Wort an die Programmierunkundigen ... 22 1.5 ... Beispielprogramme und die Webseite zum Buch ... 23 1.6 ... Warum wir JavaScript und p5.js verwendet haben ... 25 1.7 ... Begriffliche Abgrenzung und Fachbegriffe ... 26 1.8 ... Inhalte, Themen, Kapitel ... 27 1.9 ... Dank ... 30 2. Texte bauen mit Markow ... 31 2.1 ... Das Beispielprogramm Nonsense-Texter ... 35 2.2 ... Der Code des Nonsense-Texters unter der Lupe ... 37 2.3 ... Das Beispielprogramm Wörter vorschlagen ... 43 2.4 ... Wörter vorschlagen ... 47 2.5 ... Gewichteter Zufall ... 48 2.6 ... Ideen zum Weitermachen ... 50 2.7 ... Zusammenfassung und Ausblick ... 51 3. Schreibfehler automatisch korrigieren ... 53 3.1 ... Das Beispielprogramm Wortvergleich ... 54 3.2 ... Die Matrix befüllen ... 57 3.3 ... Die Umsetzung im Beispielprogramm ... 62 3.4 ... Das Beispielprogramm Korrekturvorschläge ... 65 3.5 ... Ideen zum Weitermachen ... 67 3.6 ... Zusammenfassung und Ausblick ... 68 4. Wörter gruppieren ... 69 4.1 ... Items und Transaktionen ... 71 4.2 ... Kenngrößen der Assoziationsanalyse ... 72 4.3 ... Ein Beispiel von Hand gerechnet ... 76 4.4 ... Das Beispielprogramm Begriffsnetz ... 79 4.5 ... Eine Tour durch den Code ... 82 4.6 ... Ideen zum Weitermachen ... 88 4.7 ... Zusammenfassung und Ausblick ... 90 5. Spiele für eine Person lösen ... 93 5.1 ... Das Spiel Fruchtkräsch ... 93 5.2 ... Wie findet die KI den besten Zug? ... 95 5.3 ... Eine vielseitig einsetzbare Spiel-KI ... 98 5.4 ... Die Klasse Spielzustand ... 99 5.5 ... Die Klasse KI ... 102 5.6 ... Ideen zum Weitermachen ... 107 5.7 ... Zusammenfassung und Ausblick ... 108 6. Spiele für zwei Personen gewinnen ... 109 6.1 ... Das Spiel Reversi ... 110 6.2 ... Das Beispielprogramm Reversi KI ... 111 6.3 ... Der Minimax-Algorithmus ... 112 6.4 ... Tiefensuche und Rekursion ... 115 6.5 ... Die Klasse Spielzustand ... 123 6.6 ... Die Klasse KI ... 126 6.7 ... Beschleunigung mit Alpha-Beta-Pruning ... 130 6.8 ... Ideen zum Weitermachen ... 131 6.9 ... Zusammenfassung und Ausblick ... 132 7. Q-Learning ... 133 7.1 ... Das Eichhörnchen und das Nussversteck ... 134 7.2 ... Umwelt, Agent, Aktion und Belohnung ... 139 7.3 ... Die Q-Tabelle ... 141 7.4 ... Das Beispielprogramm Q-Lerner ... 142 7.5 ... Die Q-Tabelle befüllen ... 147 7.6 ... Der Code unter der Lupe ... 150 7.7 ... Gamma bestimmt die Weitsicht ... 152 7.8 ... Epsilon: Erforschung oder Anwendung ... 154 7.9 ... Ein zweiter Blick auf den Code ... 156 7.10 ... Alpha ... 158 7.11 ... Was wir weggelassen haben ... 159 7.12 ... Ideen zum Weitermachen ... 161 7.13 ... Zusammenfassung und Ausblick ... 163 8. K-nächste-Nachbarn ... 167 8.1 ... Häschen, Igel, Vogelspinne oder Hai? ... 168 8.2 ... Das Beispielprogramm Tiere erkennen ... 169 8.3 ... Entfernungen bestimmen mit Pythagoras ... 172 8.4 ... Der Code im Detail ... 175 8.5 ... Ideen zum Weitermachen ... 178 8.6 ... Zusammenfassung und Ausblick ... 179 9. K-means-Clustering ... 181 9.1 ... Clusterbildung in Aktion ... 183 9.2 ... Das Beispielprogramm Wetterdaten gruppieren ... 186 9.3 ... Der Code ... 188 9.4 ... Grenzen des Verfahrens ... 191 9.5 ... Ideen zum Weitermachen ... 195 9.6 ... Zusammenfassung und Ausblick ... 195
10. Neuronale Netze I: Das Häschenproblem ... 197 10.1 ... Bilderkennung: ein klassisches Problem ... 198 10.2 ... Was ist ein Modell? ... 199 10.3 ... Der Aufbau eines neuronalen Netzes ... 201 10.4 ... Das Häschenneuron und seine Kollegen ... 204 10.5 ... Das Beispielprogramm Tiere erkennen II ... 209 10.6 ... Der Code ... 211 10.7 ... Ideen zum Weitermachen ... 211 10.8 ... Zusammenfassung und Ausblick ... 212
11. Neuronale Netze II: Auf dem Weg ins Tal ... 213 11.1 ... Das überwachte Lernen ... 214 11.2 ... Die schrittweise Justierung des Modells ... 216 11.3 ... Das Beispielprogramm Gradientenabstieg ... 223 11.4 ... Der Code ... 225 11.5 ... Tipps zum Weitermachen ... 226 11.6 ... Zusammenfassung und Ausblick ... 226
12. Neuronale Netze III: Fehler zurückverfolgen mit dem Neuronentrainer ... 229 12.1 ... Was ist Backpropagation? ... 230 12.2 ... Das Beispielprogramm Neuronentrainer ... 231 12.3 ... Validierungsdaten, Überanpassung, Generatoren ... 237 12.4 ... Weitere Beispielaufgaben ... 240 12.5 ... Die Anzahlen der verdeckten Schichten und der Neuronen ... 244 12.6 ... Was wir weggelassen haben ... 245 12.7 ... Ideen zum Weitermachen ... 246 12.8 ... Zusammenfassung und Ausblick ... 248
13. Neuronale Netze IV: Faltungsnetze, Autoencoder, GANs und DQL ... 249 13.1 ... Faltungsnetze ... 249 13.2 ... Modelle, die Bilder erzeugen ... 258 13.3 ... Autoencoder ... 260 13.4 ... Generative Adversarial Networks ... 261 13.5 ... Deep Q-Learning ... 264 13.6 ... Zusammenfassung und Ausblick ... 265
14. Transformer verstehen ... 267 14.1 ... Ein Sprachmodell von außen betrachtet ... 267 14.2 ... Wörter in Zahlen codieren für Fortgeschrittene ... 269 14.3 ... Worteinbettungen ... 270 14.4 ... Das Beispielprogramm Wort-Navigator ... 276 14.5 ... Vom Text zur Worteinbettung ... 282 14.6 ... Vom Wort zum Satz zum Text: Sequenzeinbettungen ... 290 14.7 ... Das Beispielprogramm Sequenz-Navigator ... 292 14.8 ... Transformer am Horizont ... 297 14.9 ... Zusammenfassung und Ausblick ... 301 14.10 ... Ideen zum Weitermachen ... 304 Nachwort: Auf der Suche nach Trurls Elektrobarden ... 305 Anhang ... 313 A ... Eine kurze Einführung in JavaScript und p5.js ... 315 B ... Glossar ... 359 C ... Quellen und weiterführende Literatur ... 369 D ... Abbildungsverzeichnis ... 373 Index ... 377
2 Texte bauen mit Markow
Wissen Sie, was ein Zeichtstern, ein Nichtspunkt oder ein Duftgebück ist? Oder haben Sie etwa schon einmal wirrwartend fenstige Wunschwellen durchhoffnet? Vermutlich nicht! Auch wenn diese rätselhaften Wörter offenbar deutschsprachig sind, können wir über deren Bedeutung nur mutmaßen. Doch eines haben sie gemeinsam: Sie alle wurden von einem Algorithmus erdacht, den wir in diesem Kapitel vorstellen – und dieser ist imstande, weitaus mehr zu leisten, als unsinnige Wörter zu erdichten.
Worum es in diesem Kapitel geht
-
Mittels Markow-Prozessen lassen sich Abfolgen von Zeichen und Wörtern untersuchen und deren Eigenschaften im Sinn einer Parodie reproduzieren.
-
Das Beispielprogramm »Nonsense Texter« erzeugt auf Knopfdruck seltsame Fantasiewörter und witzige Texte.
-
Das Beispielprogramm »Wörter vorschlagen« bietet Satzvervollständigungen an.
Ob Zeitungsmeldung, Bedienungsanleitung oder Roman: Wann immer Menschen einen Text lesen, steht der Sinn des Geschriebenen im Vordergrund. Computer allerdings wissen nichts über Texte und deren Bedeutung. Für einen Rechner sind Texte lediglich Zeichenketten, genauer gesagt: Abfolgen von Zahlen. Jede Zahl steht für ein Zeichen. Die Übersetzung von Zeichen in Zahlen und zurück regelt meist der ASCII- oder der Unicode-Standard.
Dieses Kapitel stellt eine Erfindung vor, die der russische Mathematiker Andrei Markow um 1919 gemacht hat. Sein Markow-Prozess lässt sich besonders gut auf Zeichenketten anwenden. Dieser untersucht gegebene Texte im Hinblick auf eine einzige Eigenschaft: Welche Zeichen folgen darin aufeinander und welche nicht? In einem zweiten Schritt kann der Markow-Prozess Texte zusammenbauen, die diese Eigenschaft des Originals reproduzieren – mit erstaunlichen und oft belustigenden Ergebnissen.
Im einfachsten Fall besitzt ein Markow-Prozess kein Gedächtnis. Das bedeutet, dass die Wahrscheinlichkeit für das Auftreten eines bestimmten nächsten Zeichens unabhängig von den vorherigen Zeichen ist. Wenn Sie einen deutschsprachigen Text mittels eines solchen erinnerungslosen Markow-Prozesses untersuchen, werden Sie feststellen, dass die Häufigkeit des Buchstabens E etwa 15 % beträgt. Seltene Buchstaben wie X, Y oder Q hingegen kommen auf Häufigkeiten von wenigen Prozentbruchteilen.
Interessanter wird es, wenn der Algorithmus zur Bestimmung der Wahrscheinlichkeit eines nächsten Zeichens die vorherigen Zeichen berücksichtigt. Der Grad des Markow-Prozesses legt die Anzahl der berücksichtigten vorangegangenen Zeichen fest. Grad 1 bedeutet, dass nur das jeweils letzte Zeichen zählt, ein Markow-Prozess zweiten Grades interessiert sich für die letzten beiden Zeichen und so fort.
Abbildung 2.1 Das Prinzip hinter dem Markow-Prozess: links die Textbeispiele, rechts oben der Übergangsgraph, rechts unten die Übergänge als Tabelle
Abbildung 2.1 veranschaulicht das Prinzip anhand eines Markow-Prozesses ersten Grades und eines aus vier Wörtern bestehenden Textbeispiels: HAUS, LAUS, LAUB und AUA. Der Übergangsgraph und die Tabelle zeigen:
-
Auf ein H oder L folgt immer ein A.
-
Auf ein A folgt immer ein U.
-
Auf ein U kann ein S, ein B oder ein A folgen.
Damit haben wir die zulässigen Übergänge vollständig beschrieben. Die Produktion eines neuen Worts nach den so beschriebenen Regeln läuft dann wie folgt ab:
-
Starten Sie an einem beliebigen Knoten des Übergangsgraphen, beispielsweise mit dem A.
-
Nach dem A folgt immer ein U.
-
Das U bietet drei Anschlussmöglichkeiten: S, B und A. In diesem Fall suchen Sie sich eine aus oder lassen das Los entscheiden! Auf diese Weise können Sie etwa folgende Ketten bilden: AU, AUS, AUB, AUA, AUAUS, AUAUB …
Entsprechendes gilt, wenn Sie mit einem H starten. Dann kann der Algorithmus HA, HAU, HAUS, HAUHAU, HAUAUB etc. produzieren. Der hier dargestellte Markow-Prozess ist insofern vereinfacht, als dass er die Häufigkeiten der einzelnen Übergänge nicht berücksichtigt. Das holen wir in Abschnitt 2.3, »Das Beispielprogramm Wörter vorschlagen«, nach.
Nach dem eben gezeigten Prinzip lassen sich auch auf Basis umfangreicherer Textbeispiele neue Texte beliebiger Länge erzeugen. Der Markow-Prozess weiß zwar nichts über Sprachen und Wörter, kann aber ausgehend von entsprechenden Textquellen eindeutig deutschsprachige Wörter wie transportig, wiedenartig, überhaftlich und deineswegs erdenken oder englischsprachigen Unsinn wie: my deal happily doubt what he two schreiben.
Dieses Kapitel zeigt zwei konkrete Anwendungen von Markow-Prozessen: Der »Nonsense-Texter« produziert neue Texte aufgrund von gegebenen Textquellen. Das Programm »Wörter vorschlagen« bietet eine simple Satzvervollständigung.
Hintergrund: Graphentheorie Teil I
Was haben ein U-Bahn-Netz, eine elektronische Schaltung und Verwandtschaftsverhältnisse gemeinsam? Sie alle lassen sich mittels sogenannter Graphen darstellen. Graphen sind mathematische Modelle für netzartige Strukturen. Sie sind zusammengesetzt aus Knoten und Kanten.
-
Wenn der Graph ein U-Bahn-Netz darstellen soll, dann stehen die Knoten für U-Bahn-Stationen und die Kanten für Gleisverbindungen.
-
Soll ein Graph Verwandtschaftsverhältnisse abbilden, stehen die Knoten für Personen und die Kanten für Verbindungen wie Elternschaft, Heirat oder Adoption.
-
Auch die räumliche Struktur eines Computerspiels könnte durch einen Graphen repräsentiert werden: Knoten wären dann Räume und Kanten Objekte wie Türen, Fahrstühle oder Teleporter, die dem Raumwechsel dienen.
-
Bei einem Rechnernetz würden Knoten für Hardwarekomponenten (PCs, Router...) stehen und Kanten für Verbindungen (LAN-Kabel, WLAN...).
Graphen haben sich als leistungsfähig erwiesen, wenn es darum geht, Übersicht in komplexe Zusammenhänge zu bringen und diese einheitlich darzustellen. Auch bei vielen in diesem Buch vorgestellten Problemen ist es hilfreich, diese als Graphenprobleme zu verstehen. Wir werden daher in diesem und zwei weiteren Kästen in Kapitel 4, »Wörter gruppieren«, und Kapitel 5, »Spiele für eine Person lösen«, die wichtigsten Begriffe der Graphentheorie vorstellen.
Auch die möglichen Verläufe einer Schachpartie und die Bedienung eines Getränkeautomaten lassen sich mittels Graphen darstellen. Dabei repräsentieren Knoten die Zustände und Kanten die Zustandsübergänge.
-
Bei einer Schachpartie stehen die Knoten für Stellungen der Figuren auf dem Brett und die Kanten für gültige Züge.
-
Bei der Bedienung des Getränkeautomaten könnten die Knoten Zustände wie Getränk gewählt, Münze eingeworfen oder Getränk ausgegeben repräsentieren. Die Kanten sind dann Aktionen wie Getränk wählen, Münze einwerfen oder Getränk ausgeben.
Die Darstellung solch veränderlicher Systeme in Form eines Graphen ist sehr nützlich. In der Informatik nennen wir das auch einen Zustandsautomaten (engl. State Machine). Die folgende Abbildung zeigt ein sehr einfaches Beispiel. Es gibt lediglich zwei Zustände: Blume traurig und Blume fröhlich. Der einzige Zustandsübergang ist hier gießen:
Der entsprechende Graph sieht so aus:
Auch ein Markow-Prozess lässt sich als Graph verstehen. Zustände könnten bei einem Markow-Prozess dritten Grades die zuletzt erschienenen drei Buchstaben sein. Die Kanten würden dann jeweils für das Anfügen eines einzelnen Buchstabens stehen.
2.1 Das Beispielprogramm Nonsense-Texter
Der »Nonsense-Texter« erzeugt Texte auf Basis gegebener Textquellen. Wie alle Beispielprogramme in diesem Buch können Sie den Nonsense-Texter direkt im Webbrowser öffnen, ausprobieren, den Code anschauen und modifizieren. Dafür nutzen Sie den p5.js-Online-Editor. Unter https://maschinennah.de/ki-buch finden Sie Links auf alle Beispielprogramme, geordnet nach Kapiteln.
Mit dem roten Button oben links starten Sie das Programm. Sie können sogar den Programmcode verändern und die Auswirkungen...