Noack / Sanner | Künstliche Intelligenz verstehen | E-Book | sack.de
E-Book

E-Book, Deutsch, 382 Seiten

Reihe: Rheinwerk Computing

Noack / Sanner Künstliche Intelligenz verstehen

Eine spielerische Einführung
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
Noack / Sanner Künstliche Intelligenz verstehen jetzt bestellen!

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...



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.