Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
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.2.1 Die Komponenten des Markow-Objekts
38
2.2.2 Übergänge lernen
38
2.2.3 Nonsense-Texte produzieren
40
2.3 Das Beispielprogramm Wörter vorschlagen
43
2.3.1 Die Komponenten des Markow-Objekts
43
2.3.2 Übergänge und Häufigkeiten lernen
44
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.2.1 Die Füllung der oberen Zeile und der linken Spalte
57
3.2.2 Die Füllung der verbleibenden Zellen
58
3.2.3 Die drei Schritte unter der Lupe
62
3.3 Die Umsetzung im Beispielprogramm
62
3.3.1 Das Levenshtein-Objekt
62
3.3.2 Die Funktion matrix()
63
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.2.1 Support
72
4.2.2 Confidence
73
4.2.3 Lift
74
4.3 Ein Beispiel von Hand gerechnet
76
4.4 Das Beispielprogramm Begriffsnetz
79
4.4.1 Die Datenquelle
81
4.4.2 Beschränkung der Anwendung auf Item-Paare
81
4.5 Eine Tour durch den Code
82
4.5.1 Die Klasse Begriffsnetz
82
4.5.2 Enkodierung der Transaktionen
83
4.5.3 Befüllung der Arrays für Support
85
4.5.4 Befüllung der Arrays für Confidence und Lift
87
4.5.5 Die Funktion assoziationen()
87
4.6 Ideen zum Weitermachen
88
4.7 Zusammenfassung und Ausblick
90
4.7.1 Der Apriori-Algorithmus
90
4.7.2 Transaktionstabellen
90
4.7.3 Eine Übersicht aller Fachbegriffe aus diesem Kapitel
91
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.4.1 Züge liefern modifizierte Spielzustände
100
5.4.2 Die möglichen Züge
100
5.4.3 Die Bewertung eines Spielzustands
100
5.4.4 Ein Gedächtnis für Züge
101
5.4.5 Die Schnittstelle im Überblick
101
5.5 Die Klasse KI
102
5.5.1 Alle Folgezustände eines Spielzustands berechnen
102
5.5.2 Alle Spielverläufe per Warteschlangenverfahren berechnen
103
5.5.3 Die Spielzustände nach Bewertung sortieren
106
5.5.4 Die Funktion besterZug()
106
5.5.5 Die Funktionen des KI-Objekts im Überblick
107
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.3.1 Anwendungsgebiete und Grenzen des Minimax-Algorithmus
114
6.4 Tiefensuche und Rekursion
115
6.4.1 Breitensuche und Tiefensuche
116
6.4.2 Die Paradoxie der Rekursion
117
6.4.3 Verzweigte Rekursion
121
6.5 Die Klasse Spielzustand
123
6.5.1 Die Bewertungsfunktion
123
6.5.2 Die Schnittstelle im Überblick
125
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.2.1 Das Verhältnis von Agent und Umwelt
140
7.3 Die Q-Tabelle
141
7.3.1 Q steht für Qualität
142
7.4 Das Beispielprogramm Q-Lerner
142
7.5 Die Q-Tabelle befüllen
147
7.5.1 Warum funktioniert das?
149
7.6 Der Code unter der Lupe
150
7.6.1 Die Umwelt
150
7.6.2 Der Q-Lerner
151
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.11.1 Komplexere Umwelten
160
7.11.2 Kosten für Aktionen
160
7.11.3 Belohnungen mit Zustands-Aktions-Paaren verknüpfen
160
7.11.4 Mehrere Belohnungszustände
160
7.12 Ideen zum Weitermachen
161
7.12.1 OpenAI Gym
162
7.12.2 Das Buch von Sutton und Barto
163
7.13 Zusammenfassung und Ausblick
163
7.13.1 Menschliches Lernen vs. Q-Learning
163
7.13.2 Die Grenzen des Verfahrens
164
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.1.1 Mittelwert, Zentrum, Schwerpunkt
183
9.1.2 Die Schrittfolge des k-means-Clustering-Algorithmus
185
9.2 Das Beispielprogramm Wetterdaten gruppieren
186
9.3 Der Code
188
9.3.1 Zentren zufällig setzen
189
9.3.2 Datenpunkte zuordnen
189
9.3.3 Zentren neu berechnen
190
9.4 Grenzen des Verfahrens
191
9.4.1 Unsinnige Gruppierungen
191
9.4.2 Zu viele Dimensionen
192
9.4.3 Linear nicht trennbare Datenpunktmengen
194
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.4.1 Die biologische Nervenzelle als Vorbild
205
10.4.2 Das künstliche Neuron
207
10.4.3 b steht für Bias
208
10.4.4 Die Aktivierungsfunktion
208
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.2.1 Die grundlegende Idee
217
11.2.2 Steigung
218
11.2.3 Tangente
219
11.2.4 Ableitung
219
11.2.5 Der Gradientenabstieg
220
11.2.6 Die Lernrate
222
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.2.1 Aufgaben und Netzarchitekturen
232
12.2.2 Ein Wiedersehen mit dem Häschenproblem
235
12.2.3 Lineare Trennbarkeit
236
12.3 Validierungsdaten, Überanpassung, Generatoren
237
12.3.1 Validierungsdaten und Überanpassung
238
12.3.2 Generatoren
239
12.4 Weitere Beispielaufgaben
240
12.4.1 Kreis und Hintergrund
240
12.4.2 Quadrat und Hintergrund
241
12.4.3 Farbtunnel sieben Farben
242
12.5 Die Anzahlen der verdeckten Schichten und der Neuronen
244
12.5.1 Viel hilft viel?
244
12.6 Was wir weggelassen haben
245
12.6.1 Dynamisierung der Lernrate
245
12.6.2 Batch und Epoche
245
12.6.3 Verlustfunktionen und Softmax
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.1.1 Das Beispielprogramm Filterlabor I
250
13.1.2 Der Filterkernel in Aktion
251
13.1.3 Padding und Striding
253
13.1.4 Das Beispielprogramm Filterlabor II
254
13.1.5 Eine Filterkombination, die den Buchstaben K erkennt
255
13.1.6 Die Struktur eines Faltungsnetzes
256
13.1.7 Faltungsnetze trainieren
257
13.2 Modelle, die Bilder erzeugen
258
13.3 Autoencoder
260
13.3.1 Dimensionsreduktion
260
13.3.2 Daten ausdenken
261
13.4 Generative Adversarial Networks
261
13.5 Deep Q-Learning
264
13.5.1 Wie kommt die Umwelt ins Modell?
265
13.6 Zusammenfassung und Ausblick
265
14 Transformer verstehen
267
14.1 Ein Sprachmodell von außen betrachtet
267
14.1.1 Unterschiede zum Markow-Prozess
268
14.2 Wörter in Zahlen codieren für Fortgeschrittene
269
14.3 Worteinbettungen
270
14.3.1 Relationen übertragen
274
14.4 Das Beispielprogramm Wort-Navigator
276
14.4.1 Textquelle I: Dünstende Köchinnen und frittierende Konditoren
276
14.4.2 Die Bedienoberfläche
277
14.4.3 Relationen übertragen im Wort-Navigator
279
14.5 Vom Text zur Worteinbettung
282
14.5.1 One Hot Encoding
283
14.5.2 Paare aus Ziel- und Kontextwörtern
284
14.5.3 Das Training
286
14.5.4 Vom Training zur Worteinbettung
287
14.5.5 Warum funktioniert das?
288
14.5.6 Kosinus-Ähnlichkeit
289
14.6 Vom Wort zum Satz zum Text: Sequenzeinbettungen
290
14.7 Das Beispielprogramm Sequenz-Navigator
292
14.7.1 Textquelle II: Ein Tag im Leben von Kati Katzenstein
292
14.7.2 Die Bedienoberfläche
294
14.7.3 Relationen zwischen Sequenzen
296
14.8 Transformer am Horizont
297
14.8.1 Ein verbesserter Markow-Prozess
297
14.8.2 Und täglich grüßt Frau Katzenstein
298
14.8.3 Positional Encodings
299
14.8.4 Gewichtungen
299
14.8.5 Sprache ist Kontext
299
14.8.6 Aufmerksamkeit
300
14.9 Zusammenfassung und Ausblick
301
14.9.1 Was wir ausgelassen haben
301
14.9.2 Unterschiede zu ausgewachsenen Transformern
302
14.9.3 Das erstaunliche Abstraktionsvermögen von Transformern
303
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