June 19, 2026

Geschlossene Systeme und das Scheitern Künstlicher Intelligenz

 In Ergänzung zu früheren Blogposts über geschlossene Systeme soll ausführlicher erläutert werden wo das Problem mit solchen Systeme besteht.

Zunächst einmal ist ein geschlossenes System etwas gutes in der Technikgeschichte weil es dabei hilft Komplexität zu senken. Ein Dieselmotor basiert auf physikalischen Prinzipien realisiert in der Anordnung der Bauteile. Alles was nichts mit der Umwandlung von fossiler Kraftstoffe in Drehbewegung zu tun hatt gehört defnitionsgemäß nicht zu einem Dieselmotor und liegt außerhalb. Es kann ignoriert werden. Dadurch kann man räumlich wie sachlich eingrenzen worum es bei einer Kraftmschine geht. Man kann Bücher darüber verfassen, man kann das Prinzip verstehen und nachbauen.

Auch Softwareentwicklung funktioinert als geschlossenes System. Ein Tetric Computerspiel realisiert in der C/C++ Sprache besteht aus dem sourcecode der ca. 500 lines of code umfasst. Alles was nicht in diesem Sourcecode definiert wurde, gehört nicht zum Projekt, liegt außerhalb und kann ignoriert werden. Folglich besteht Programmieren darin, den vorhandenen Sourcecode zu verbessern. Es gibt auch hier ein sachliches Thema auf das man fokussieren kann und was in ein erfolgreiches Projekt mündet.

Geschlossene Systeme zeichnen sich dadurch aus, dass eine scharfe Systemgrenze gezogen wird, etwas ist Bestandteil des Systems oder eben nicht. Auch sehr große umfangreiche Softwareprojekte wie ein Betriebssystem können als geschlsosene Systeme betrachtet werden. Sie bestehen aus mehreren tausend Dateien mit dem Sourcecode, und alles was darin nicht definiert wurde gehört nicht zum Betriebssystem. Diese banale Feststellung ist so allgegenwertig dass man in der Realität verinfacht nur von Systeme spricht und annimmt, dass alle Systema auf diese Weise erstellt und verbessert werden.

Genau dieser Trugschluss führte bis 2010 dazu, dass Künstliche Intelligenz nach einem ähnlichen Prinzip imaginiert wurde. Die Annahme war, dass ein Roboter oder eine KI Software als geschlsosenes System funktioniert, wo also in Software bestimmte Module und Algorithmen enthalten sind. Z.B. könnte ein Roboter eine pfadplanungs routine enthalten.

Ein solches KI System wird dadurch verbessert dass man weiteren Sourcecode anfügt und vorhandene algorithmen verbessert. Die meisten Robotikprojekte bis 2010 wurden nach dieser Prämisse entwickelt. Speziell der umfangreiche Sourcecode von selbstfahrenden Autos vor dem Jahr 2010 wurde ähnlich wie ein Softwaregroßprojekt programmiert: es gab Bugtracker, es gab versionsverwaltungssysteme und es gab eine Codebasis die in eine ausführbare Exe datei kompiliert wurde.

Leider gibt es mit geschlossenen KI systemen ein Problem. Je mehr ein solcher Roboter leisten soll, desto mehr Sourcecode wird benötigt. Und damit steigt die Fehleranzahl an. Bereits sehr kleine ingame AI projekte bei denen nur eine Spielfigur von einem NPC gesteuert wird, benötigen sehr viele Codezeilen. Will man selbstfahrende Autos programmieren steigt der bedarf an Lines of Code weiter. Vorhandene Werkzeuge um große Informatik Projekte zu organisieren, wie wikis oder bugtracker mögen für die klassische Softwareentwicklung gute Dienste leisten, bei dezidierten Robotik-Projekten versagen sie jedoch. Das problem ist eben nicht wie man die Software programmiert, sondern das Problem ist dass unklar ist welche Art von Software benötigt wird.

Der Ausweg aus dem Dilemma besteht darin die Annahme von geschlossenen Systemen in frage zu zustellen. Ein solches System bedeutet aus Software-Perspektive dass der Sourcecode für einen Computertyp geschrieben wird. Der Algorithmus wird auf der CPU ausgerührt und berechnet dort etwas. Die Berechnung wird im Sourcecode des Programms definiert. Das gegenteil sind offene Systeme. Dort wird nichts berechnet sondern es werden Nachrichten versendet. Das TCP/IP Protokoll im Internet ist ein Besipiel für ein offenes System, aber auch die DIKW pyramide, der Morse code oder die Unicode Tabelle sind offene Systeme.

Offene Systeme zeichnen sich dadurch aus dass sie als Nachrichtenübermittlung konzipiert sind. Es gibt einen Sender und einem Empfänger. Meist erfolgt die Datenübertragung über Schichten um die Komplexität zu senken. Offene Systeme wurden in der KI Geschichte bis zum Jahr 2010 meist ignoriert. Die einzige Ausnahme sind Multiagentensysteme, wo also Softwareagenten untereinander Botschaften senden, vergleichbar mit objektorientierter Programmierung. Es war jedoch unklar wie man diese Technik zur Robotiksteuerung einsetzen kann.

An dieser Stelle ein kleiner Exkurs wie vor dem Jahr 2010 selbstfahrendew Autos als geschlossene Systeme programmiert wurden. Die Idee war, dass es ein computerprogram gibt, welche die Künstliche Intelligenz ist. Dieses computerprogram besteht aus rund 500 MB Sourcecode programmiert in der Sprache C/C++ und enthält alle Module die für die Steruerung des Autos benötigt werden. Also planung, Bilderkennung, Entscheidungen treffen, Fehlerroutinen, Logging, Situationsbewertung usw. Die Intelligenz des Roboters ist in dieser 500 MB großen Datei gebündelt, es gibt keine Außenwelt die weitere Module enthält.

Aus Sicht der Informatik stellt so ein Softwareprojekt die best practice Methode da. Es wird klar definiert was Teil des Roboters ist, und es gibt Tools um die 500 MB große Sourcecode datei zu erstellen und zu verbessern. Leider funktioniert in der Realität so ein Workflow nicht. Die 500 MB Datei geschrieben in C/C++ ist eben nicht im Stande den Roboter zu kontrollieren und zwar generell nicht. Je mehr man versucht den Fehler zu finden desto mehr zusätzlicher Sourcecode muss erstellt werden, der neue Fehler enthält und der niemals im Stande ist die komplexe Realität abzubilden. Der Unterschied zwischen der internen Darstellung im Roboter und der Realität außerhalb des Roboters ist gewaltig.

Innerhalb des bekannten paradigmas geschlsosener Softwaresysteme ist es unmöglich den Fehler zu finden. es ist eben nicht so, dass der 500 MB Sourcecode für das selbstfahrende Auto veraltete algorithmen enthält oder schlecht programiert wäre. Sondern das Problem ist viel grundsätzlicher Natur und betrifft die Annahme hinter solchen Projekten. Das Ziel in der Robotik bis 2010 war es, autonome Roboter zu bauen welche keine menschliche Sprache verstehen. Dieser Bias wurde nirgendwo explizit definiert, sondern ergibt sich automatisch wenn man geschlossene Systeme entwickelt.

No comments:

Post a Comment