Die "Links-KI" - ein KI-Programm, das "links" lernt (u.ä.)

Gliederung

-1. Zweites Vorwort (2023, drei Jahre später)

0. Vorwort

1. Einleitende Übersicht
1.1 Symbolisches Lernen aus Beispielen
1.2 Bezug zur Welt, Weltobjekte
1.3 Kommunikationsschnittstelle "User - KI" mit Nachricht

2. Das Lernen der Links-KI
2.1 Lernbeispiele, Abfrage und Anwendung/Aufforderung/Befehl
2.2 Lerntypen absolut, relativ, zeitlich
2.3 Nachrichten-Satz-Syntax
2.4 Objekt-Abgleich / "-Erkennung"

3. Links-Lernbeispiel, direktes und abgeleitetes/abstrahiertes Wissen
3.1 Ausgangspunkt
3.2 Lern-Situation 1 (grundlegend)
3.3 Situation 2 (darauf aufbauend)
3.4 Ergänzung, Anmerkung zum Lernen
3.5 Abfrage und Anwendung des Gelernten
3.6 Programm-Internes, absolute und relative Operatoren

4. Zusammenfassung: Begrifflichkeiten und weitergehende Anmerkungen mit Aussichten
4.1 Begrifflichkeiten
4.2 Speicherung, weitergehende
4.3 Zugriff auf Außenwelt (lesend)
4.4 Ausgabe zur Außenwelt (kommunikativ und zur 'realen' Welt)
4.5 Komplexeres, UND-Operator u.ä.
4.6 Ziel-Erreichung
4.7 Komplexere Welt mit KI-Nachfrage, Lernen komplexerer Begriffe als Aussicht
4.8 Apropos Aufgaben(klassen)


-1. Zweites Vorwort (2023, drei Jahre später)

Auf Wunsch eines Forumsteilnehmer in dialogos-philosophie.de (Timberlake) ergänze ich meinen früheren Text, um alles Weitere möglichst anschaulich zu erklären, insbesondere auch für Leser, die nicht mit dem Programmieren sehr vertraut sind.

Grundsätzlich steht KI manchmal etwas hochtrabend für Programme, die irgendetwas menschlichähnlich können. Bei der links-KI hier geht es darum zu zeigen, wie es auf einer kleiner programmierten Basis möglich ist, überhaupt etwas maschinell lernen zu können (1.). Damit dies dem Anwender auch plausibel gezeigt werden kann, ohne dass er irgendwie in das Programm hineinschauen muss, soll er das Gelernte abfragen können (2.). Und damit das auch noch einen erkennbaren Sinn macht, kann der Anwender schließlich dem System auf Basis seiner Lernbeispiele der Links-KI auch real etwas ausführen lassen, also z.B. das Setzen eines Objektes links (und nicht irgendwo beliebig) (3.).

(1.) bis (3.) sind drei zentrale Schritte, wie auch der Mensch prinzipiell lernen kann: So wird z.B. Schülern erst Lernstoff vermittelt (=1.), das dann z.B. vom Lehrer überprüft werden kann (=2.), und der Schüler am besten auch lernt anzuwenden (=3.; leider nicht immer selbstverständlich, z.B. bei etwas sehr theoretischem).

Wie kann man nun von der Idee der Links-KI zum Algorithmus kommen, also der Programmvorschrift, die schließlich in einer Programmiersprache real in ein Programm "gegossen" werden kann?

Erst einmal: Warum überhaupt gerade eine Links-KI? Warum nicht etwas ganz anderes lernen?
Meine Gründe:
1. Ich wollte etwas lernen lassen, das ein wenig unsere reale Welt modelliert, und da bot sich eine kleine räumliche (2-dimensionale) Welt an, in der man sehen und etwas machen kann.
2. Wichtig war mir, dass es sich der Rahmen ohne großen Aufwand programmtechnisch realisieren ließ: Eine Ausgabe eines 2-dimensionalen (Gesamt-)Feldes ist sehr einfach, vor allem, wenn die Objekte auf den (Einzel-)Feldern sehr einfach sind, weshalb meine Objekte auf jedem einzelnen Feld einfach Buchstaben sind. Schon seit Jahrzehnten lassen sich in z.B. in der einfachen Sprache Basic solche Daten auch einfach speichern, die zur Ausgabe anstehen.

Ach ja, warum übrigens gerade "Links-KI?
"Oben" wäre sprachlich nicht so schön gegangen, weil "über" ein anderes Wort ist siehe "A [ist] oben" zu "A [ist] über B", während "A [ist] links" und "A [ist] links-von B" ähnlicher klingt.
"Rechts-KI" hätte man dagegen mit dem juristischen "Recht(s)" verwechseln können - mal abgesehen von meiner eher politischen Einstellung ;)

Welche Elemente braucht nun die Links-KI überhaupt?
- Die 2-dimensionale Welt, bei mir 20*20-Felder, jedes einzelne mit leerem Inhalt oder ggf. mit einem Buchstaben gesetzt.
- Eine Eingabe-Zeile, mit der mit der Links-KI "gesprochen" wird.
- Eine Ausgabe-Zeile, in der die Links-KI seine Antwort schreiben kann.
- Einen Fakten-Speicher für die ihm beigebrachten Fakten, z.B. bei "A links." mit A in Koordinate (0,8) werden zwei Teil-Fakten "links/x/0" und "links/y/8" gespeichert.
- Ein Lernspeicher für von der Links-KI als Verallgemeinerung erkanntes, abgeleitetes Wissen, z.B. mit "links/x/0", dass "links" steht für x-Koordinate mit Wert 0.
- Daneben ggf. noch weitere Elemente, z.B. um umfangreiche Lernsituation zu speichern und später wieder laden zu können.

Hier ist ein Screenshot von meinem Programm mit den wichtigsten Kommentierungen, alles Farbige (nicht schwarz/grau/weiß) sind solche Erläuterungen.
Die Buttons sind programmtechnische Hilfen, z.B. da "Go" links unten, damit die KI angetriggert wird, gerade jetzt die Eingabe-Zeile zu lesen und zu verarbeiten. Alle andere Buttons sind eigentlich für die eigentliche Lern-KI nicht wichtig.
In die 20*20-Welt kann (bzw. muss) man als Anwender selbst Buchstaben hineinschreiben, gerade anfangs immer nur einen, damit die Links-KI eindeutig lernen kann. Später kann die Links-KI auch selbst Buchstaben dort hineinschreiben, z.B. wenn man ihr den Befehl gibt "[Schreibe] A links!".

 

Soweit erst einmal. Fortsetzung ist geplant und hängt vom Feedback ab ;)


0. Vorwort

Dieser Text hier ist primär auf Wunsch eines Forumsteilnehmers des philosophie-raum.de (future06) und auf Basis eines dortigen Forumsbeitrages von mir entstanden, den ich erweitert, etwas abgerundet und formatiert habe.

Inhaltlich habe ich mir schon seit Jahren immer mal wieder Gedanken dazu gemacht, ebenso an einem Programm weitergeschrieben.

Diesen Text selbst habe ich auf dieser Basis in zwei Tagen erstellt und bin froh, darum gebeten worden zu sein, da ich etwas in dieser Form schon immer einmal machen wollte. Allerdings ist er in dem Sinne nicht vollständig, als dass er z.B. nicht alle Einzelheiten beschreibt, insbesondere kaum auf den zweiten (relatives links-von) und vor allem nicht auf den dritten Lerntyp (zeitliches nach-links) eingeht. Soweit weitere Details gewünscht, ergänze ich diesen Text gerne; bitte teilt mir ggf. gezielt, was euch fehlt.

Burkart Venzke
(Norderstedt, den 28.6.2020)


1. Einleitende Übersicht

1.1 Symbolisches Lernen aus Beispielen

Die Links-KI (oder auch kurz "KI" hier) ist ein (hier vor allem abstraktes) Programm, das symbolisch lernt, das heißt in klar definierten Regeln, expliziten Daten u.ä., im Gegensatz z.B. zum neuronalen Lernen. Sie lernt einfache Begrifflichkeiten, die für sie so etwas wie "Sinn macht" durch Abgleich der/Ihrer Welt mit einer vom User (bzw. Anwender, also der der die KI benutzt) kommunizierten Nachricht.
Das heißt, ich definiere nicht, was "links" bedeutet, sondern lasse die Links-KI diesen und ggf. ähnliche Begriffe ("rechts", "oben", "unten"; "links-oben"; "links-von", "nach-links" u.ä.) lernen.
Dabei erhält die KI nur einzelne gezielte Lernbeispiele (und nicht z.B. große Mengen wie bei neuronalen Lernen), es ist also ein wohlmeinendes "Lernen aus Beispielen" mit einem User als Lehrer.
Wie soll das nun gehen?

1.2 Bezug zur Welt, Weltobjekte

Eine Grundlage ist für mich, dass die (bzw. jegliche allgemeine) KI einen Bezug zu einer Welt hat (bzw. haben sollte im Allgemeinen).
Als Fernziel (für eine allgemeine, starke KI) einmal soll es die reale Welt sein können, erst einmal aber modellieren wir uns eine sehr einfache.
Diese einfache Welt ist hier eine n*n-Matrix mit Koordinaten (X/Y je von 0 bis n-1) mit Buchstaben als mögliche Objekte (="Weltobjekte") mit ihnen.
Diese Welt habe ich so gewählt, weil sich das leicht programmieren und veranschaulichen lässt.

Anmerkung: Den Urspung des Koordinatensystems (0,0) definiere ich hier im üblichen mathematischen Sinne als links unten; in meinem Programm war er links oben.

1.3 Kommunikationsschnittstelle "User - KI" mit Nachricht

Als zweiten Aspekt definiere ich eine Kommunikationsschnittstelle zwischen dem User und der Links-KI, damit der User sie, ähnlich wie ein Lehrer ein Kind, gut schulen kann, und das auf einem klaren Weg, so dass die KI nicht programmtechnisch angefasst bzw. verändert wird bei ihrem Lernen.
Praktisch gesehen ist es eine einfache Texteingabezeile zur synchronen Übertragung einer Textnachricht.

2. Das Lernen der Links-KI

2.1 Lernbeispiele, Abfrage und Anwendung/Aufforderung/Befehl

Die Links-KI bekommt Lernbeispiele vom User vorgesetzt, in dem in ihrer Welt z.B. am linken Rand vom User ein A eingegeben (platziert) wird und der User parallel dazu der KI mnitteilend schreibt "A links."
Ziel ist, dass die KI daraus abstrahierend "links" lernt.

Im zweiten Schritt soll das Gelernte dann abfragbar sein, die KI auf eine Frage "A links?" mit "Ja" oder "Nein" antworten.

Im dritten Schritt soll die KI das Gelernte schließlich anwenden können, d.h. bei einem Auffordeungs- bzw. Befehlssatz "A links!" soll die KI am linken Welt-Rand ein A platzieren.

2.2 Lerntypen absolut, relativ, zeitlich

Im Programm wird unterschieden zwischen drei verschiedenen Lerntypen und zwar (immer am Beispiel von "links"):
1. "links": Damit ist die absolute Positionierung in der Welt gemeint, also hier der linke Rand.
2. "links-von": Hier geht es um die relative Positionierung von zwei Objekten. Ein Lernbeispiel dazu ist "A links-von B."
3. "nach-links": Hier ist die zeitliche Veränderung eines Objektes gemeint, z.B. als Lernbeispiel "A nach-links.".

2.3 Nachrichten-Satz-Syntax

Die Syntax eines Nachrichten-Satzes ist: "<Sprachitem> <Sprachitem> <ggf. weiteres Sprachitem> <Satzzeichen>".
Als Satzzeichen kommen ".", "?" und "!" in Frage.
Das Satzzeichen "." steht für "Wissensaufnahme", die KI soll aus der Nachricht und dem Weltzustand lernen.
Das "?" steht für die Wissensabfrage ("A links?" mit den möglichen Antworten "Ja" oder "Nein").
Last but not least steht das "!" steht für "das Gelernte anwenden" (bei "A links!" setzt die KI ein A irgendwo nach links, natürlich erst, wenn "links" gelernt wurde).

2.4 Objekt-Abgleich / "-Erkennung"

Die Sprachitems werden mit Objekten aus der Welt wie auch ggf. dem KI-eigenen Wissen abgeglichen.
Der Abgleich von Sprachitem und Weltobjekt geschieht hier direkt auf Gleichheit, also ein A im Satz entspricht einem A in der Welt.
So etwas wie ggf. komplexe Objekterkennung wird hier weggelassen.
Solange die KI noch kein Wissen hat, kann sie natürlich auch nichts mit ihrem Wissen abgleichen und speichert Zusammenhänge direkt.

3. Links-Lernbeispiel, direktes und abgeleitetes/abstrahiertes Wissen

Ich demonstriere das Lernen der Links-KI nun an einem konkreten Beispiel zum Lernen von "links".

3.1 Ausgangspunkt

Die KI hat kein Wissen, also keinen irgendwie gespeicherten Datensatz, weder einen direkten, noch gar einen abgeleiteten/abstrahierten, siehe dazu weiter unten.

3.2 Lern-Situation 1 (grundlegend)

Der KI wird "A links." mitgeteilt und die Welt besteht genau aus einem A auf den Koordinaten (0,3).
Die KI vergleicht "A links", genauer die beiden Sprachobjekte "A" und "links", mit der Welt, die aus den Welt-Elementen "A" mit X-Koordinate "0" und Y-Koordinate "3" besteht.
Aufgrund des identischen A matcht (match (englisch) bedeutet ungefähr "abgleichen") sie die Sprachobjekte mit den Welt-Elementen.
Durch Weglassen des den Match identifizierden A merkt die KI sich, dass "links" einen Zusammenhang zu X-Koordinate "0" und Y-Koordinate "3" hat.
Dies speichert sie direkt ("direkt gespeicherter Datensatz" bzw. "direktes Wissen").
(Auf Speicherdetails verzichte ich hier; sie können prinzipiell unterschiedlich aussehen.)

Anmerkung:
Bei gleicher Welt und "B links." hätte nichts gematcht werden können und die KI hätte nichts lernen können.
Hätte die Welt dagegen neben dem A auch ein B z.B. auf (0,2) gehabt, hätte die KI auch "B links." entsprechend wie oben lernen können und das Weltobjekt A einfach ignoriert.

3.3 Situation 2 (darauf aufbauend)

Der KI wird diesmal "C links." mitgeteilt bei einer Welt mit einem C auf (0,7).
Die KI matcht nun über das C "links" zusammen mit der X-Koordinate "0" und Y-Koordinate "7".
Da die KI nun durch Situation 1 schon Wissen hat, gleich sie dies mit dem Match aus Situation 2 ab.
Der Match zwischen (etwas verkürzt) "links X=0 Y=3" und "links X=0 Y=7" identifiziert mit dem gemeinsamen "links" einen Abgleich und stellt fest,
dass beide Male X=0 passt, dagegegen Y=3 und Y=7 unterschiedlich sind.
So lernt die KI, dass "links" mit "X=0" und "Y unterschiedlich" korrespondiert, was somit zu abgeleitetem bzw. abstrahierten Wissen führt.

3.4 Ergänzung, Anmerkung zum Lernen

Entsprechend kann die KI rechts, oben und unten lernen. Ebenso ist z.B. "links-unten" zu lernen möglich, wenn man die KI mehrfach "links-unten" mit (0,0) abgleichen lässt (die KI prüft nicht, ob sie ein Lernbeispiel schon einmal hatte und dieses so u.U. irrelevant, weil doppelt sein könnte).

Es ist so einfach möglich, mehrere Begriffe parallel lernen zu lassen, weil diese sich mit ihrem jeweiligen Match-Begriff, also z.B. "links" nicht in die Quere kommen.
Natürlich hätte man statt "links" auch "left", "gauche" oder "Hugo" als Wort nehmen können; in meinen praktischen Tests habe ich mit "li" gearbeitet.
Klar, wenn man "L" statt "links" nähme und in die Welt ein L schreibt, käme die KI durcheinander, das muss man als freundlicher User natürlich vermeiden.

Soweit zum Lernen der KI.

3.5 Abfrage und Anwendung des Gelernten

Bei einer Abfrage "C links?" würde die KI (nach gelerntem "links") prüfen, ob auf irgendeiner Position (0,<beliebig>) ein C steht und ggf. "Ja" oder sonst "Nein" antworten.
Denkbar wäre auch etwas wie "Wo C links?", das könnte dann ein weiterer Schritt für eine bessere KI sein.

Bei einer Anwendung (Aufforderung, Befehl) "D links!" würde die KI zufällig eine Y-Position wählen zu der X-Position links (=0) wählen
und z.B. auf (0,5) ein D setzen.

3.6 Programm-Internes, absolute und relative Operatoren

In meinen, über Jahre immer mal wieder real weitergeschriebenem (Java-)Programm ist die Links-KI ein Programmmodul, also eine halbwegs abgeschlossene Einheit innerhalb eines ganzen Programm. Alles andere wie die Welt und die Kommunikationsschnittstelle sind ebenfalls Teile des Programms.
Wer selbst programmiert kann sich gut vorstellen, dass solche über lange Zeit geschriebenen Programme "wachsen", also nach Bedarf erweitert werden, ohne neu strukturiert und damit sauberer/lesbarer zu werden. Es gibt Teile, die haben ich in einer zweiten oder auch dritten Version neu geschrieben, aber nie das ganze Programm. Insofern könnt ihr euch vorstellen, dass der Programmcode alles andere als toll aussieht und deshalb nicht veröffentlicht werden soll. (Abgesehen davon, dass nicht alles perfekt funktioniert, aber das tut der Theorie ja zum Glück kein Abbruch.)

Vielleicht hat sich jemand gefragt, warum "links" wie "links-von" überhaupt funktionieren und ob noch mehr gehen kann.

Intern im Programm arbeite ich mit drei festgelegten Operatoren:
1. Dem absoluten Zahlenabgleich, z.B. für "links" mit der X-Koordinate 0
2. Der absoluten Differenz zweier Koordinatenzahlen von X oder Y 
3. Der Vorzeichenbetrachtung der Differenz zweier Koordinatenzahlen von X oder Y

Bei "A links-von B" mit A auf (1,2) und B auf (4,2) werden die X-Koordinaten 4-2=2 und Y-Koordinaten 2-2=0 voneinander abgezogen und die Differenz einerseits absolut betrachtet (siehe 2.), andererseits deren Vorzeichen (Signum; siehe 3.).
So wird hier "links-von" (bei einem weiteren ähnlichen gelernten Beispiel) als "X-Differenz positiv und Y-Differenz = 0" angesehen.
(Dass man die 1. von den 2. Koordinaten abzieht und nicht umgekehrt, ist für das Lernergebnis letztlich egal, solange es immer gleich geschieht, auch wenn die internen Daten anders wären.)

Mit den beiden Merkmalen bei 2. "absolute Differenz" und 3. "Vorzeichen (der Differenz)" kann man zusätzlich noch ein links-von von einem direkt-links-von unterscheiden:
"Links-von" ist "X-Differenz positiv und Y-Differenz = 0", während "Direkt-links-von" dagegen "X-Differenz = 1 und Y-Differenz = 0" wäre.

4. Zusammenfassung: Begrifflichkeiten und weitergehende Anmerkungen mit Aussichten

Hier fasse ich noch ein wenig zusammen und komme ich zuerst auf Begrifflichkeiten zurück.

4.1 Begrifflichkeiten

Symbole sind hier die Buchstaben als "Weltobjekte" und gleichzeitig "Kommunikationsobjekte", wobei sie nicht hier extra wahrgenommen werden müssen, sondern einfach abgeglichen werden.

Die anderen 'nur' "Kommunikationsobjekte" sind hier "links" und "rechts" u.ä.; 'nur', weil sie im Gegensatz zu den Weltobjekten in der Welt selbst nicht auftreten.

Verallgemeinert sind die Symbole also hier Wörter bzw. Begriffe, entweder einem Weltobjekt zugeordnet ("A") oder einer (zu lernenden) "Weltsituation" ("Relation" o.ä.) wie "links".

Gelernt wird elementar durch Speichern von Situationen und wenn möglich auch durch Abstraktionen als weitere Erkenntnis.

4.2 Speicherung, weitergehende

Wie schon gesagt soll die genaue Speicherung hier egal sein, weil sie in verschiedener Form möglich ist und hier nicht entscheidend sein sollte.
Natürlich muss man sich in allgemeinerer Form des Lernens darüber genauer Gedanken machen; so scheinen mir z.B. semantische Netze, also ein Aufbau von Verlinkungen zwischen Begriffen/(abstrakten) Objekte ein guter Ansatz.

4.3 Zugriff auf Außenwelt (lesend)

Bei der Links-KI wird implizit angenommen, dass sie direkten (und zum User synchronen) Zugriff sowohl auf die Welt wie auch auf die Textnachricht wie "A links." hat.
Bei einer real(er)en KI muss man sich natürlich Gedanken über Interfaces zur echten Aussenwelt machen. Zu "wie die KI auf die Welt zugreift" kann ich mir grundsätzlich viel vorstellen, u.a. einfach die Sinne vom Menschen abgeschaut, also das Sehen, Hören, Tasten usw. und auf der anderen Seite unterschiedliche Arten von Ausgaben, z.B. in Form eines Roboters durch dessen Bewegung u.a.

Die Links-KI wird rein synchron gesteuert. Der User setzt die Welt-Objekte manuell in die n*n-Matrix, wie er sich für sein Lernbeispiel benötigt, gibt dann eine Dialogzeile ein - egal ob zum Lernen, zur Abfrage oder als Anwendungsbefehl - und startet mittels Button-Klicks die Übergabe an die KI.
Interessant könnte sein, die KI asynchron agieren zu lassen, aber dazu müsste man sich genauere Gedanken machen.

4.4 Ausgabe zur Außenwelt (kommunikativ und zur 'realen' Welt)

Die Ausgabe der Links-KI besteht

1. (kommunikativ) bei Abfrage-Sätzen einfach nur aus einem festen "Ja" oder "Nein", das für die User-Bequemlichkeit in ein spezielles Feld geschrieben wird.
Man hätte sie natürlich auch in das Dialogfeld schreiben können, aber damit hätte man die Eingabe des Users gelöscht, die man u.U. noch sehen möchte.
Diese Ausgabe ist natürlich nur sehr primitiv und gerade mal auf die beiden Wörter festgelegt. Z.B. bei einem neuen "Wo A?" könnte man der KI ein "links" 'abringen'.

2. (zur 'realen' Welt) bei Anwendungsbefehlssätzen in der Ausgabe eines Weltobjektes auf einem Koordinatenpunkt, also bei "A links!" schreibt die KI ein A auf (0,).
Dabei ist ihr egal, ob da schon ein Weltobjekt/Buchstabe steht oder nicht; dies zu berücksichtigen wäre eine interessante Erweiterungsmöglichkeit.
Selbstverständlich ist dies auch nur eine sehr einfache, punktuelle Ausgabe, die bei komplexeren Aufgaben erweitert werden müsste, z.B. wenn ein Weltobjekt mal aus mehr als einem Buchstaben bestehen soll.

4.5 Komplexeres, UND-Operator u.ä.

Ein nächster Schritt wäre nun, dass Ein- und Ausgaben komplexer werden können und natürlich auch das zu aufzubauende Wissen.
Z.B. etwas wie "neben" oder auch "Reihe (von Objekten)" könnten das hier sein.
Eine weitere Idee sind Sätze der Form "A links UND A unten." u.a. zur eindeutigen Positionierung auf (0,0) über ein "UND".
Interessant wären selbstverständlich z.B. auch "ODER" oder "NICHT".

4.6 Ziel-Erreichung

Ein anderer Schritt ist das Lernen abstrakterer Begriffe hinsichtlich einer Zielerreichung.
Z.B. könnte man der Links-KI beibringen, ein Weltobjekt A von einer Position (X1,Y1) nach (X2,Y2) zu bringen, die Erreichung der Position (X2,Y2) ist dann ein vom User vorgegebenes "Ziel". Das wären praktisch mehrere auszuführende Schritte in Sinne von "A nach-links!" u.ä.

4.7 Komplexere Welt mit KI-Nachfrage, Lernen komplexerer Begriffe als Aussicht

Zum Lernen komplexerer Begriffe könnte man die n*n-Matrix-Welt so erweitern, dass sie nicht jede Ausführungs-Operation der KI ausführt, sondern u.U. ablehnt ("Geht nicht") wie unsere reale Welt, wenn man z.B. mit der Hand irgendwo gegenschlägt und die Hand nicht weiterkommt.
Auf die Links-KI bezogen könnte es z.B. dann sein, wenn die KI versucht ein Weltobjekt in eine Position zu verschieben oder zu setzen, auf der sich schon ein anderes Weltobjekt befindet.

Wenn die KI z.B. mittels direkter Näherung an (X2,Y2) nur (noch) auf "Geht nicht"-Reaktionen der Welt stößt, kann sie ihr Ziel nicht erreichen;
hier müsste die KI erkennen, dass mehrfaches Ausführen einer identischen Aktion nicht zum Ziel führt und könnte z.B. abbrechen oder den User
sagen "geht nicht" oder "ich kann das Ziel nicht erreichen, hilf mir" und so ggf. Unterstützung vom User erbitten.
Der Sinn hierbei könnte sein, dass die KI nach somit möglicherweise erfolglosen Erreichen dieses Ziels etwas wie "Hindernis" (als Ursache) oder auch "Umweg" (also Lösung) als neue Begriffe lernen soll/kann.
Aber das wäre eine neue, spannende Aufgabe...

4.8 Apropos Aufgaben(klassen)

Als eine umfangreiche, denkbare zu lernende Domäne stelle ich mir Aufgaben(klassen) in der n*n-Welt vor.
Z.B. gibt es viele davon auf janko.at, z.B. meine Lieblingsaufgaben der Fillominos (https://www.janko.at/Raetsel/Fillomino/index.htm?) oder für eine KI wohl einfachere wie Nanbaboru (https://www.janko.at/Raetsel/Nanbaboru/index.htm?).
Zur Lösung der Aufgaben sind für die KI z.T. interessante Elemente zu erlernen (vorgeben statt zu lernen wäre nicht in Sinne (m)einer KI).
Dies könnte z.B. ein "Feld-Bereich" sein, der aus einer Menge von nebeneinanderliegenden, gleichen elementaren Weltobjekten besteht, z.B. {A(0,0), A(0,1), A(1,0), A(1,1)}, hier ein (quadratischer) Feld-Bereich aus 2*2=4 A.