Das Potential in der Kombination der klassischen Programmierung und der Nutzung von LLM-Modellen, wie etwa ChatGPT oder DALL-E, mittels Anwendung entsprechender API Schnittstellen ist enorm.
Lesen Sie den Erfahrungsbericht und die Vorstellung der Möglichkeiten am Hand einzelner Beispiele: Link zum Blog
Erfahren Sie wie die Nutzung von LLM-Modellen, wie ChatGPT oder Claude, ihre Effizienz in der Entwicklung von Programmiercode steigern kann.
Lesen Sie den Erfahrungsbericht mit KI-Modellen zur interaktiven Erstellung von Programmiercode in verschiedenen Programmiersprachen: Link zum Blog
KI-FOTO-APP: Die App mit frei definierbaren themenbasierten Fotoalben, in denen man sich mit ChatGPT über die Inhalte seiner Fotos unterhalten kann: Link zur KI-Foto-App
KI-Hautkrebsvorsorge: Die App zur Einschätzung von Muttermalen auf ein Hautkrebsrisiko nach der ABCDE-Regel. Link zur Hautkrebsvorsorge-App
KI-Rezepte-App: Die App zur automatischen strukturierten Sammlung Deiner Lieblingsrezepte aus Zetteln, Fotos, PDF-Dokumenten oder Rezepte-Links ohne manuelle Erfassung. Link zur KI-Rezepte-App
KI-Stricken-App: die App zur automatischen Bildgenerierung für Strickmuster in definierbarer Rastergröße und Anzahl Wollfarben auf Basis von Stichworten oder Beschreibungen. Link zur KI-Stricken-App
Projekt KI-Sauklaue: Mit KI-Sauklaue kannst Du Dir eine individuelle KI aufbauen, die lernt, Deine Handschrift, egal wie unleserlich, zu erkennen. Dazu wird ein vortrainiertes TrOCR-Modell (Transfer Optical Character Recognition) genutzt und mit Deinen Trainingsdaten verfeinert.
Der nachfolgende Link gibt Dir eine Einführung in die spannende Thematik: Link zur KI-Sauklaue-Einführung
Neugierig geworden?
Steige mit den nachfolgenden Kapiteln tiefer in die Materie der Handschriftenerkennung ein:
Kapitel: Unleserliche Handschriften – Eigenarten, Besonderheiten
Erfahre was aktuelle TrOCR-Modelle heute schon erkennen können und warum unleserliche Handschriften weiterhin ein großes Problem für diese Modelle darstellt.
Kapitel: Stufen der Handschrifterkennung im Projekt KI Sauklaue
Erfahre aus welchen Elementen das Projekt KI Sauklaue ausgebaut ist und in welchen einzelnen Stufen die Handschriftenerkennung funktioniert.
Kapitel: Trainieren eines KI Sauklaue-Modells mit Deiner Handschrift
Erhalte einen Überblick wie Du im Projekt KI Sauklaue einem Modell Deine Handschrift näherbringen kannst und es mit Deinen handschriftlichen Texten trainieren kannst. Erfahre grundsätzliche Techniken zum Training eines TrOCR-Modells und dessen Grenzen.
Kapitel: Besonderheiten in der Kalibrierung Deiner Handschrift (sehr technisch)
Steige tiefer in das Thema der Kalibrierung Deiner individuellen Handschrift ein. Lerne die Verfahren und Parameter kennen, mit denen im Projekt KI Sauklaue lernen, Deine Handschrift möglichst genau zu erkennen.
Kapitel: Funktionen und Techniken zur Vorhersage und Post-Processing (sehr technisch)
Erfahre im Detail, wie Du die Vorhersagen zu einem neuen handschriftlichen Text durchführen kannst. Auch hier gibt es zahlreiche Parameter, mit denen Du das Verhalten des Systems beeinflussen kannst. Erfahre wie das TrOCR-Modell mit der Nachbearbeitung eines LLM-Modells zusammenspielt und wie Du es beeinflussen kannst.
Kapitel: Strukturelemente und Vorgehen zum Einrichten eines eigenen Modells
Du willst nun konkret Dein eigenes Modell einrichten und Deine Handschrift trainieren lassen? Befasse Dich zunächst noch einmal mit den Strukturelementen von KI Sauklaue und erfahre Grundsätzliches zum Vorgehen beim Einrichten Deines eigenen Modells.
Kapitel: Bedienungsanleitung „KI-Sauklaue“ im Detail
Hier geht im Detail um die einzelnen Funktionen im Programmpaket des Projekts KI Sauklaue. Es ist mehr ein Nachschlagewerk, wenn Du bei der Bedienung Fragen hast.
Kapitel: Die API-Schnittstelle zum Projekt KI Sauklaue
Erfahre wie Du von außen über eine API-Schnittstelle direkt auf ein trainiertes Sauklaue Modell zugreifen kannst. Hier findest Du die Beschreibung der API Schnittstelle mit Programmierbeispielen in Python, als Shell-Skript oder als Apple Kurzbefehle mit Integration in die Foto App.
In diesem Bereich befassen wir uns mit einer konkurrierenden Umgebung, in denen zwei Akteure (wovon einer menschlich ist) gegensätzliche Ziele haben, was zu adversarialen Suchproblemen führt. Anstatt sich mit dem Chaos zufälliger Scharmützel zu beschäftigen, ist dies ein Beispiel für Denkspiele wie Schach, Go, Mühle, Dame oder eben auch 4-Gewinnt.
Für KI Entwickler ist die vereinfachte Natur dieser Spiele ein klarer Vorteil: Der Zustand eines Spiels ist einfach zu repräsentieren und die Agenten/Spieler sind normalerweise auf eine kleine Anzahl von Aktionen beschränkt, deren Auswirkungen durch präzise Regeln definiert sind.
Aus Sicht des maschinellen Agenten gibt es mindestens drei Haltungen, die wir gegenüber diesen „Multiagentenumgebungen“ einnehmen können. Die erste Haltung, die bei einer sehr großen Anzahl von Agenten angebracht ist, besteht darin, sie im Ganzen als eine Ökonomie zu betrachten. Dadurch können wir zum Beispiel vorhersagen, dass eine steigende Nachfrage zu einem Preisanstieg führen wird, ohne die Aktion eines einzelnen Agenten vorhersagen zu müssen.
Zweitens könnten wir die gegnerischen Agenten lediglich als Teil der Umgebung ansehen - einen Teil, der die Umgebung nichtdeterministisch macht. Doch wenn wir die gegnerischen Agenten so modellieren wie beispielsweise das Wetter - also manchmal fällt Regen und manchmal nicht -, dann entgeht uns das Konzept, dass unsere Gegner aktiv versuchen, uns zu besiegen, während der Regen vermutlich keine derartigen Absichten hat.
Der dritte Ansatz ist die explizite Modellierung der gegnerischen Agenten mit den Techniken der adversarialen Spielbaumsuche - das eigentliche Thema dieses Abschnitts.
Zuerst beginnen wir mit dem Versuch einen definierten optimalen Zug mit einem Algorithmus, der alle Stellungen bis zu einer bestimmten Suchtiefe bewertet, um diesen Zug zu finden: die Minimax-Suche.
Dabei wird zusätzlich das Konzept des Kürzens - Pruning - angewendet, die die Suche effizienter macht, indem Teile des Suchbaums ignoriert werden, die keinen Unterschied zum optimalen Zug machen.
Da wir dabei aber normalerweise nicht alle Zugkombinationen bis zum Ende des Spiels und einer Entbewertung durchspielen können, kommt der Nutzenfunktion einer Spielstellung eine große Funktion zu. Es gilt den Nutzen einer Stellung bis in die Vorschau einer bestimmten Anzahl von Zügen zu optimieren. Dies wird durch die Nutzenfunktion (Utility-Funktion) ausgedrückt, die bei der Entwicklung ein bestimmtes Spielverständnis voraussetzt.
Der zweite Ansatz befasst sich mit heuristischen Evaluierungsfunktion, um von einem Zustand ausgehend mit vielen schnellen Simulationen des Spiels, für jeden zur Auswahl stehenden Zug abzuschätzen, wer gewinnen wird: Der Monte-Carlo-Tree-Search (Die Namensgebung ist dabei tatsächlich vom Casino des Monte Carlo abgeleitet).
Die Maximierung einer Nutzenfunktion zu einzelnen Stellungen spielt dabei keine Rolle, vielmehr werden viele zufällige Spiele bis zu einem Spielende durchgespielt und geprüft, wer gewonnen hat. Der Nutzen eines Zuges wird also mehr durch den statistischen durchschnittlichen Nutzen aus dem Ergebnis vieler Simulationen gezogen.
Der dritte Ansatz befasst sich mit modernen neuronalen Netzen, die über einen Ansatz des Reinforcement Learnings trainiert wurden.
Das Reinforcement Learning (RL, Verstärkungslernen) ist dabei eine Trainingsmethode, bei dem ein Agent/Spieler mit der Spiel-Welt interagiert und periodisch Belohnungen (oder, in der Terminologie der Psychologie, Verstärkungen) erhält, die widerspiegeln, wie gut er sich schlägt. Beim 4-Gewinnt zum Beispiel ist die Belohnung 1 für einen Sieg, 0 für eine Niederlage und 0,5 für ein Remis.
Das Konzept der Belohnungen bei den verschiedenen Formen des Reinforcement Learning ist mehr oder weniger dasselbe: die erwartete Summe der Belohnungen zu maximieren. Reinforcement Learning ist dabei eine Weiterentwicklung eines Markov-Entscheidungsprozesses (MDPs), bei dem der Agent das MDP nicht als zu lösendes Problem übergeben bekommt; der Agent befindet sich vielmehr im MDP.
Er kennt möglicherweise weder das Transitionsmodell noch die Belohnungsfunktion und muss handeln, um mehr zu lernen. Stellen Sie sich vor, Sie spielen ein neues Spiel, dessen Regeln Sie nicht kennen. Nach etwa hundert Zügen sagt Ihnen der Schiedsrichter: „Sie haben verloren". Das ist Reinforcement Learning in Kürze.
In der weiterführenden Einführung werde ich grundsätzlich auf das Prinzip des Reinforcement Learning von neuronalen Netzen eingehen. In einem gesonderten Abschnitt werde ich auf folgende Themen eingehen:
verschiedene Topologien von neuronalen Netzen (MLP - Multi Layer Perceptron, CNN - Convolutional Neural Network, RSN - Residual based spatial Network) und
verschiedene Trainingsmethoden (Reines Selflearning, PPO - Proximal Policy Optimization, Alpha Zero (inkl. MCTS), Curriculum Learning mit PPO) eingehen, die beim Reinforcement Learning sinnvoll angewendet werden können.
Weiterführende Erläuterungen:
Der nachfolgende Link gibt Dir eine Einführung in die spannende Thematik der Spielstheorie und zum Reinforcement Learning: Link zur Einführung Spieltheorie
Deluxe Connect 4:
Wenn Sie wissen wollen, wie sich die verschiedenen Techniken der Spieltheorie in der Praxis schlagen, dann spielen Sie doch mal ein paar Partien Connect 4 und bauen sich ein gutes ELO Ranking auf: Link zu Deluxe Connect 4
Deep Connect 4:
Mit Ceep Connect 4 erhöhen wir die Komplexität deutlich, in dem wir einen dreidimensionalen Spielraum für 4 Gewinnt erschaffen. Stellen Sie sich einfach 7 Connect 4-Spiele hintereinander vor. Sie bekommen ein Spielfeld mit 7x7 Röhren, in die Sie bis zu 6 Kugeln hineingebenn können.
Dabei kann man in alle Richtungen der 3 Dimensionen 4 Kugeln zusammenführen. Damit der Anzugsvorteil von Rot nicht zu stark wird, wird das Spielzentrum gesperrt. Wenn Sie jetzt glauben, dass dadurch das Spiel einfacher geworden ist, täuschen Sie sich. Probieren Sie aus.
An diesem Beispiel mit einer deutlichen Erhöhung der Komplexität erkennt man die Grenzen der Algorithmen MiniMax und MCTS.
Minimax mit Spielstufe 6 braucht gerade bei ausgeglichenen Stellungen extrem viel Zeit, weil zu wenig Spielzweige durch Pruning verkürzen kann.
MCTS bekommt Probleme, weil er in einer Zeit von 10 oder 15 Sekunden statistisch nicht mehr ausreichend genug Spiele gespielt bekommt, um immer den besten Zug zu finden.
Ein neuronalen Netz hingegen, einmal ausreichend trainiert, wird wie bei einem normalen Connect 4 in extremer Geschwindigkeit spielen und den Gegener vor große Probleme stellen.
Spielen Sie doch mal ein paar Partien Deep Connect 4 und tauchen in die faszinierende Welt eines 3 dimensionalen Spieleklassikers ein: Link zu Deep Connect 4