Karatas | Eigene KI-Anwendungen programmieren | E-Book | sack.de
E-Book

E-Book, Deutsch, 446 Seiten

Reihe: Rheinwerk Computing

Karatas Eigene KI-Anwendungen programmieren


2. Auflage 2025
ISBN: 978-3-367-11261-6
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection

E-Book, Deutsch, 446 Seiten

Reihe: Rheinwerk Computing

ISBN: 978-3-367-11261-6
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection



KI-Anwendungen selbst erstellen und mit eigenen Daten nutzen - das ist möglich: mit frei verfügbarer Technologie, lokaler Hardware und sogar ohne Programmierkenntnisse.
Die KI-Technologie wird in atemberaubendem Tempo immer zugänglicher. Mit diesem Buch sind Sie immer einen Schritt voraus. Lernen Sie einschlägige KI-Verfahren kennen und setzen Sie für jedes dieser Verfahren eine Anwendung selbst um. Dafür nutzen Sie die Data Science Plattform KNIME - ideal, um eigene Daten aus unterschiedlichen Quellen zu integrieren und mit rein grafischer Programmierung Anwendungen zu erstellen.
Das Buch deckt eine Reihe von Themen ab, darunter:
Künstliche neuronale Netze
Entscheidungsbäume
Bilderkennung
Convolutional Neural Networks
Transfer Learning
Textgenerierung
Unsupervised und Reinforcement Learning
Transformer: ChatGPT, DALL-E und Co.
Außerdem führen wir Sie in die Welt von TensorFlow und Keras ein und zeigen Ihnen, wie Sie Anwendungen in einfachem Python erstellen können. Alle vorgestellten Projekte sind in der beruflichen Bildung erprobt und haben sich als effektiv erwiesen.
So bereichern Sie Ihre Skills mit einem modernen Werkzeugkasten, mit dem Sie maschinelles Lernen in der Datenanalyse, dem Controlling und vielen weiteren Anwendungsfeldern nutzen können.
Alle Codebeispiele zum Download; Jupyter Notebooks erleichtern die Arbeit mit dem Material zum Buch. Starten Sie jetzt mit Ihrer eigenen KI!

Aus dem Inhalt:

  • Installation und Konfiguration der Werkzeuge
  • Mit verschiedenen Datenquellen arbeiten
  • Visuelle Programmierung ohne Code
  • Anomalieerkennung
  • Convolutional Neural Networks
  • Zeitreihenanalysen
  • Transfer Learning
  • Unsupervised Learning
  • Reinforcement Learning
  • Evolutionäre Algorithmen
  • Texte und Bilder generieren
  • ChatGPT und DALL-E


Die Fachpresse zur Vorauflage:
Revisionspraxis PRev - Journal für Revision, IT-Sicherheit,
SAP-Sicherheit und Datenschutz: »Eine wertvolle Ressource und Empfehlung für jeden, der die Faszination und das Potenzial künstlicher Intelligenz erkunden und eigene Projekte realisieren möchte.«

LINUX MAGAZIN: »Karatas vermittelt dem Leser in einem reich bebilderten Werk eine Unmenge von Hintergrundinformationen und geht somit weit über klassische Klicktutorials hinaus. Der etwas höhere Lernaufwand wirkt ob des Erkenntnisgewinns auf jeden Fall gerechtfertigt.«



Metin Karatas war der erste Lehrer des neu eingerichteten Schulfaches 'Künstliche Intelligenz' in Bayern und ist Mitglied der entsprechenden Lehrplankommission. Der Ingenieur der Elektro- und Informationstechnik unterrichtet außerdem Programmierung, Elektrotechnik, Projektmanagement und mehr an einer Technikerschule für berufliche Bildung. Es begeistert ihn, modernste Technologien zu erforschen und das theoretische Verständnis mit praktischer Erfahrung zu verknüpfen.
Karatas Eigene KI-Anwendungen programmieren jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


Materialien zum Buch ... 15  1.  Einleitung ... 17  1.1 ... Was bietet dieses Buch? ... 18  1.2 ... Was ist eine »künstliche Intelligenz«? ... 19  1.3 ... Geschichte der KI -- ein kurzer Überblick ... 21  1.4 ... Verwendete Werkzeuge ... 23  2.  Installation von Anaconda ... 29  2.1 ... Windows und macOS ... 29  2.2 ... Linux ... 30  2.3 ... Konfiguration und Test ... 31  3.  Das künstliche neuronale Netz ... 39  3.1 ... Klassifizierung ... 40  3.2 ... Das Kochrezept ... 42  3.3 ... Aufbau künstlicher neuronaler Netze ... 46  3.4 ... Aufbau eines künstlichen Neurons ... 48  3.5 ... Feed Forward ... 50  3.6 ... Backpropagation ... 52  3.7 ... Aktualisierung der Gewichte ... 55  3.8 ... KNN für Klassifizierung ... 58  3.9 ... Hyperparameter und Overfitting ... 66  3.10 ... Umgang mit nichtnumerischen Daten ... 69  3.11 ... Umgang mit Datenlücken ... 71  3.12 ... Korrelation versus Kausalität ... 73  3.13 ... Normierung der Daten ... 81  3.14 ... Regression ... 84  3.15 ... Deployment ... 87  3.16 ... Übungen ... 93  4.  Entscheidungsbäume ... 95  4.1 ... Einfache Entscheidungsbäume ... 96  4.2 ... Boosting ... 108  4.3 ... XGBoost Regressor ... 118  4.4 ... Deployment ... 120  4.5 ... Übungen ... 121  5.  Faltungsschichten, Bilder und mehr ... 123  5.1 ... Einfache Bildklassifizierung ... 125  5.2 ... Hyperparameter-Optimierung mit Early Stopping und KerasTuner ... 130  5.3 ... Convolutional Neural Network (CNN) ... 135  5.4 ... Bildklassifizierung mit CIFAR-10 ... 142  5.5 ... Verwendung vortrainierter Netze ... 146  5.6 ... Übungen ... 150  6.  Transfer Learning ... 151  6.1 ... Funktionsweise ... 154  6.2 ... Übungen ... 161  7.  Anomalieerkennung ... 163  7.1 ... Unausgewogene Daten ... 164  7.2 ... Resampling ... 169  7.3 ... Autoencoder ... 171  7.4 ... Übungen ... 178  8.  Textklassifizierung ... 179  8.1 ... Embedding Layer ... 179  8.2 ... GlobalAveragePooling1D Layer ... 183  8.3 ... Text Vectorization ... 185  8.4 ... Analyse der Zusammenhänge ... 188  8.5 ... Klassifizierung großer Datenmengen ... 193  8.6 ... Übungen ... 196  9.  Clusteranalyse ... 197  9.1 ... Grafische Analyse der Daten ... 198  9.2 ... Der Algorithmus k-Means-Clustering ... 203  9.3 ... Das fertige Programm ... 206  9.4 ... Übungen ... 209

10.  Visuelle Programmierung mit Orange ... 211  10.1 ... Installation ... 211  10.2 ... Klassifizierung mit Entscheidungsbaum ... 213  10.3 ... Regression mit Entscheidungsbaum ... 220  10.4 ... Deployment ... 221  10.5 ... Klassifizierung mit KNN ... 223  10.6 ... Regression mit KNN ... 227  10.7 ... Bildklassifizierung mit XGBoost ... 229  10.8 ... Unüberwachte Klassifizierung von Bildern ... 230  10.9 ... Textklassifizierung mit XGBoost ... 234  10.10 ... Übungen ... 236

11.  Visuelle Programmierung mit KNIME ... 239  11.1 ... Installation ... 240  11.2 ... Einfache künstliche neuronale Netze ... 245  11.3 ... XGBoost ... 267  11.4 ... Bildklassifizierung mit vortrainiertem Modell ... 271  11.5 ... Transfer Learning ... 277  11.6 ... Autoencoder ... 284  11.7 ... Textklassifizierung ... 292  11.8 ... AutoML ... 297  11.9 ... Clusteranalyse ... 301  11.10 ... Zeitreihenanalyse ... 306  11.11 ... Weitere Hinweise zu KNIME ... 322  11.12 ... Übungen ... 322

12.  Reinforcement Learning ... 325  12.1 ... Q-Learning ... 327  12.2 ... Erforderliche Python-Kenntnisse für das Spiel ... 332  12.3 ... Training ... 337  12.4 ... Test ... 340  12.5 ... Ausblick ... 341  12.6 ... Übungen ... 342

13.  Genetische Algorithmen ... 343  13.1 ... Der Algorithmus ... 344  13.2 ... Beispiel einer sortierten Liste ... 348  13.3 ... Beispiel für Gleichungssysteme ... 351  13.4 ... Beispielanwendung aus der Praxis ... 353  13.5 ... Übungen ... 357

14.  ChatGPT und Gemini ... 359  14.1 ... Prompt Engineering ... 362  14.2 ... Programmierschnittstelle ... 375  14.3 ... Übung ... 392

15.  DALL-E und Imagen ... 393  15.1 ... Bildgenerierung ... 394  15.2 ... Übung 1: API mit Moderation ... 402

16.  Ausblick ... 403  Anhang ... 403  A ... Lösungen ... 405  B ... Literaturhinweise ... 441  Index ... 443


1.4    Verwendete Werkzeuge


Es stehen viele Programmiersprachen, Bibliotheken und Tools zur Verfügung, um KIs zu entwickeln. Hier soll eine kurze Vorstellung über die Auswahl erfolgen, die in diesem Buch Anwendung findet. Es wird noch nichts installiert oder programmiert.

1.4.1    Python


Die Programmiersprache Python ist eine sehr einfach zu erlernende, aber gleichzeitig sehr mächtige Sprache. Schon bei der Entwicklung wurde Wert auf Lesbarkeit, Plattformunabhängigkeit und einfache Strukturen gelegt. Auch wenn Sie unter Windows programmieren, ist das Programm anschließend auf einem Linux-Rechner oder macOS lauffähig. Diese Vorteile haben dazu geführt, dass sie mittlerweile eine der beliebtesten Programmiersprachen überhaupt ist. In der Welt der Data Science und KI hat sie sich als De-facto-Standard durchgesetzt. Wie schon erwähnt, soll dieses Buch keine Einführung in die Programmiersprache Python sein. Für uns ist sie nur Mittel zum Zweck. Die folgenden Python-Anweisungen sollen die Einfachheit verdeutlichen. Wir werden mit der Programmierung erst beginnen, nachdem im nächsten Kapitel die Installation erfolgt ist.

Das obligatorische »Hallo Welt«-Beispiel sieht folgendermaßen aus:

print("Hallo Welt!")

Mit der print-Funktion können Daten in der Konsole ausgegeben werden, in diesem Falle »Hallo Welt!«. Wir können diese Zeichenkombination (Datentyp String) auch erst in einer Variable speichern und danach ausgeben:

ausgabe = "Hallo Welt!"
print(ausgabe)

Datentypen

Die elementarsten Datentypen in Python sind

  • Strings (Zeichenketten), welche in einfachen oder doppelten Anführungszeichen geschrieben werden (z. B. "Hallo Welt!"),

  • Integer (Ganzzahlen, z. B. 72) und

  • Float (Fließkommazahlen, z. B. 3.14).

Je nach Datentyp sind bestimmte Operationen möglich. String-Daten wie »Hallo« und »Welt« können zu »Hallo Welt« zusammengefügt werden. Integer- oder Float-Daten können miteinander verrechnet werden, z. B. 3 × 8.

Weitere Datentypen werden wir erst vorstellen, wenn sie zur Lösung einer bestimmten Aufgabenstellung benötigt werden.

Dieselbe Variable kann auch für eine Ganzzahl (Datentyp Integer) oder Fließkommazahl (Datentyp Float) wiederverwendet werden. In Python-Variablen können Daten beliebigen Typs gespeichert werden.

ausgabe = "Hallo Welt!"
print(ausgabe)

ausgabe = 42
print(ausgabe)

ausgabe = 42.2
print(ausgabe)

Hier wird nacheinander »Hallo Welt!«, 42 und 42.2 ausgegeben. Sehen wir uns nun ein vermeintlich komplizierteres Programm an:

# Festlegung des Alters auf 20
alter = 20
# Abfrage, ob eine Volljährigkeit vorliegt
if alter >= 18:
print("Du bist volljährig!")
else:
print("Du bist noch nicht volljährig!")

Das #-Zeichen leitet Kommentare ein, die beim Lesen des Codes helfen können; diese Zeilen werden nicht ausgeführt. In der Variable alter wird die Zahl 20 gespeichert. Danach kommt eine Abfrage, ob das Alter größer oder gleich 18 ist. Trifft das zu (wie in diesem Beispiel der Fall), erfolgt die entsprechende Ausgabe. Der else-Zweig wird übersprungen und das Programm beendet. Klären wir folgende Fragen:

  1. Welche Auswirkung hätte es, wenn in der Variable alter der Wert 16 gespeichert werden würde? Antwort: Der if-Zweig würde übersprungen und der else-Zweig ausgeführt werden. Die Ausgabe wäre »Du bist noch nicht volljährig!«

  2. In manchen Ländern ist man erst mit 21 volljährig. Welche Änderung ist an diesem Programm dafür notwendig? Antwort: Bei der if-Abfrage erfolgt der Vergleich mit der Zahl 21 statt mit 18.

  3. Kann man die oben durchgeführte Änderung für die Abfrage der Volljährigkeit als »Programmierung« bezeichnen? Oder als »Konfiguration«? Darüber kann man streiten, wenn man nichts Besseres zu tun hat.

Wie Sie sehen, ist es in Python recht einfach, den Quellcode nachzuvollziehen.

1.4.2    Jupyter Notebook


Wir benötigen eine Software, in welche wir die Python-Befehle eintippen können. Mithilfe dieser Software soll programmiert, ausgeführt und getestet werden. Software dieser Art nennt man integrierte Entwicklungsumgebung (IDE, Integrated Development Environment). Für Python gibt es eine Reihe von sehr guten Entwicklungsumgebungen. In Data Science und KI-Entwicklung haben sich jedoch einfache Jupyter Notebooks (open source) etabliert. Hier wird im Browser programmiert, meist besteht das Programm aus einer einzigen Datei. Um Python sowie Jupyter Notebook (und bei Bedarf viele weitere Tools) zu installieren und zu konfigurieren, werden wir die kostenlose, für diesen Einsatzzweck entwickelte Anaconda-Distribution verwenden. Diese gibt es für Windows, Linux und macOS. Mit Anaconda können Sie einfache Entwicklungsumgebungen lokal am PC oder zentral auf einem Server einrichten. Der Vorteil der Servervariante ist, dass man von mehreren Clients aus einfach per Browser mit Jupyter Notebook programmieren kann. An diesen Clients ist keine weitere Installation notwendig. Wenn Sie hingegen keinen eigenen Server benutzen wollen, sondern einen von Anaconda in der Cloud zur Verfügung gestellten, kostet es Geld.

Entwicklungsumgebung

Eine integrierte Entwicklungsumgebung (IDE, Integrated Development Environment) stellt wichtige Werkzeuge zur Verfügung, welche Sie bei der Programmierung unterstützen. Dazu gehören das automatische Erkennen und Vervollständigen von Befehlen, Autokorrektur sowie hilfreiche Hinweise bei Programmierfehlern.

1.4.3    Orange


Die Software Orange verfolgt einen ganz anderen Ansatz: Die Programmierung erfolgt mittels grafischer Bausteine, welche per Drag-and-Drop in den Arbeitsbereich gezogen, miteinander verbunden und konfiguriert werden. Man nennt das auch visuelle Programmierung. Orange Data Science (meist einfach Orange genannt) wurde von der University of Ljubljana in Slowenien entwickelt. Die Software ist open source, kostenlos und plattformunabhängig.

In Abbildung 1.1 sehen Sie ein Programm mit einem künstlichen neuronalen Netz, welches mit Trainingsdaten trainiert und mit Testdaten getestet wird. Der Aufbau ist sehr übersichtlich und gut nachvollziehbar.

Abbildung 1.1     Ein Programm mit einem künstlichen neuronalen Netz

1.4.4    KNIME


KNIME ist, wie Orange auch, ein Tool zur visuellen Programmierung, hat aber einen größeren Funktionsumfang. Dafür bedarf es auch einer längeren Einarbeitungszeit. KNIME basiert auf Eclipse, einer weit verbreiteten Entwicklungsumgebung für verschiedenste Programmiersprachen. Auch diese Software ist open source, kostenlos und plattformunabhängig.

Das folgende Beispiel zeigt ein Programm, welches die Inhalte einer Excel-Datei ausliest und die Zahlenwerte in einem Grafen plottet (siehe Abbildung 1.2).

Abbildung 1.2     Laden einer Excel-Datei und Plotten der Inhalte

Die Ausgabe des Bausteins »Line Chart« sehen Sie in Abbildung 1.3: Dazu müssen Sie nach dem Ausführen einen Rechtsklick auf den Baustein ausführen und auf View: Line Chart klicken.

Ist die Datenquelle nicht eine Excel-Datei, sondern z. B. eine Datenbank oder CSV-Datei, müssen Sie nur den Baustein Excel Reader ersetzen.

Abbildung 1.3     Plotten der Inhalte

1.4.5    ChatGPT und Gemini


Fragen wir einfach ChatGPT oder Gemini selbst, wer oder was es ist …

User: Wer oder was bist du? Erkläre es mir so, als wäre ich 12 Jahre alt.

Antwort: Okay! Stell dir vor, ich bin eine richtig schlaue Art Roboter – aber einer, der nicht herumlaufen kann. Ich lebe nur auf Computern oder im Internet.

Mein Name ist ChatGPT.

Ich...


Karatas, Metin
Metin Karatas war der erste Lehrer des neu eingerichteten Schulfaches „Künstliche Intelligenz“ in Bayern und ist Mitglied der entsprechenden Lehrplankommission. Der Ingenieur der Elektro- und Informationstechnik unterrichtet außerdem Programmierung, Elektrotechnik, Projektmanagement und mehr an einer Technikerschule für berufliche Bildung. Es begeistert ihn, modernste Technologien zu erforschen und das theoretische Verständnis mit praktischer Erfahrung zu verknüpfen.



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.