Kann man mit Strong AI die Leistung von Computern einschätzen?

„Strong AI“ beschäftigt sich nach dem Selbstverständnis mit Künstlicher Intelligenz. Demzufolge wäre es auch die erste Anlaufstelle wenn man eine Aussage benötigt darüber was Computer können und was nicht. Leider basiert „Strong AI“ jedoch auf dem Paradigma der „Computational GOFAI“, was bedeutet dass die bevorzugte Lösungsmethode darin besteht einen sehr kurzen Algorithmen zu verwenden, der auf einem Supercomputer ausgeführt wird und über Brute-Force sich selbst modifiziert. Das mag spannend sein, aus einem philosophischen Blickwinkel heraus ist in der Praxis jedoch mangels Computerpower nicht praktikabel.

Die spannende Frage lautet vielmehr, was man mit Hilfe von gutem Softwareengineering auf aktueller Hardware erreichen kann und was nicht. Nehmen wir mal einen Computer wie den Raspberry PI, hardwaremäßig sind seine Spezifikationen klar definiert, man weiß was er zu leisten im Stande ist. Unklar ist jedoch, was dafür erstellte Software leisten kann und was nicht. Relativ simpel lässt sich diese Frage immer dann beantworten wenn man explizite „Strong AI“ Algorithmen verwenden. Beispielsweise könnte man einen BusyBeaver Algorithmen laufen lassen, der Programmcode automatisch findet. Ausgehend von der konkreten Implementierung und den Gigaflops die der Raspberry PI liefert kann man so leicht berechnen, wie lange eine Lösung ungefähr dauert. Aber was ist, wenn man keinen rechenintensiven Algorithmus verwendet sondern mit handgecodedetem Java-Code arbeitet? Was kann ein Java-Datei im Umfang von 100 MB leisten, was kann eine im Umfang von 10 GB leisten? Diese Fragen können von der Strong AI nicht beantwortet, weil in beiden Fällen der Java-Code keine richtige „True AI“ ist, sondern vielmehr auf ein konkretes Problem hin erstellt wurde und deshalb auch nicht lernfähig ist.

Für einen anderen Kleincomputer, den Commodore 64, mag die Abschätzung über die Maximale Leistung noch simpel erscheinen. In 64 kb RAM kann man selbst mit der besten Programmiermethode, keine High-End-Betriebssysteme hineinzwängen. Es gibt zwar auch für den C-64 ein LUnix und vermutlich könnte man dieses von der Leistungsfähigkeit noch steigern, aber dem großen Vorbild, einem ausgewachsenen Ubuntu auf dem PC, wird es niemals nacheifern können. Kurz gesagt, es ist relativ simpel die Hardware des C-64 auszureizen, so dass man halbwegs genau abschätzen kann, was mit diesem Computer möglich ist und was nicht.

Aber bereits mit dem Raspberry PI sieht die Ausgangslage anders aus. Dort gibt es zwar auch Limitierungen (das Originalmodell hatte nur 256 MB RAM und eine vergleichsweise langsame CPU. Allerdings ermöglicht dieses Setting bereits auch sehr umfangreiche Programme darauf unterzubringen. Dank Swapping und der Verwendung einer SD-Card kann man ohne weiteres Software auf dem Raspberry PI starten die 4 GB groß ist. Und solche Software kann man nicht so nebenbei programmieren, was in der Praxis bedeutet, selbst wenn man mehrere Jahrzehnte kostant programmieren würde, hätte man nicht genug Quellcode erstellt, damit der Raspberry PI das Programm nicht mehr starten könnte. Insofern ist es bereits nicht mehr möglich zu sagen, wo genau die Grenzen liegen. Theoretisch wäre es vorstellbar, mit dem Raspberry PI alles mögliche zu programmieren, inklusive Robotik die weitaus mehr kann, als heutige Systeme.

Um die Leistungsfähigkeit von Software einzuschätzen wird in aller Regel die Maßzahl Lines of Code verwendet. Dabei wird unterstellt, dass durchschnittliche Programme auch ungefähr die selbe Menge an Code benötigen um eine bestimmte Aufgabe zu bewältigen. Hierbei gilt die Umrechnung, dass 40 Lines of Code = 1 kb sind, so dass 100 Million LoC = 2,5 Gigabyte. Programme in dieser Größenordnung gibt es aktuell noch gar keine, allenfalls komplette Betriebssystem-Distributionen kommen auf diesen Umfang. Man kann deshalb sagen, dass es aktuell unklar ist, was man mit einem Raspberry PI alles anfangen kann und das die „Strong AI“ darauf leider keine Antwort weiß. Offenbar ist das ganze eine empirische Frage die sich nur über bereits erstellte Software beantworten lässt, also genau das möglich ist, was jemand schon programmiert hat. Andersherum ist es wahrscheinlich, dass es in 100 Jahren Software geben wird, die weitaus mehr aus einem Rasberry PI herausholt, als man sich das heute vorstellen kann. Womöglich wird es dann ausreichen, wenn man diesen Kleincomputer in einen Roboter verbaut um damit dann einen Androiden zu besitzen. Aber das ist reine Spekulation.

Aber wie kann es sein, dass man das Potential von Erfindungen nicht kennt? Das ist ein Novum. Von jeder anderen Sache die es gibt, weiß man ziemlich genau was damit möglich ist und was nicht. Beispielsweise ist bekannt, dass Wasser bei 100 Grad kocht, aber bei Computern gibt es derzeit niemanden der sagen kann, was sie können und was nicht. Theoretisch ist mit dem richtigen Programm alles möglich, das wurde schon mehrfach demonstriert.

Es gab zwar vor einigen Jahren mal den Versuch über die Unterteilung in P und NP-harte Probleme für Klarheit zu sorgen, doch eine Aussagekraft hat das eigentlich nicht. Weil man fast jedes NP-harte Problem auch mit etwas nachdenken so lösen kann, dass man dafür keine unenendlich schnellen Computer mehr benötigt. Das beste Beispiel ist vermutlich die SSL-Verschlüsselung welche formal zwar ein NP-hartes Problem darstellt, defakto aber von einer geschickten Malware sehr leicht ausgehebelt werden kann. Auch andere Probleme aus dem Bereich Sprachverarbeitung oder Bilderkennung lassen sich in aller Regel effizient implementieren (im Sinne von wenig CPU Bedarf). So dass man die Unterscheidung zwischen möglich und unmöglich allenfalls an der Verfügbarkeit von Sourcecode bestimmen kann. Wenn man also den Programmcode hat, um ein Problem zu lösen, dann kann man es lösen und umgekehrt.

Insofern ist die Unterteilung in P und NP-harte Probleme obsolet geworden zugunster einer Unterteilung in Probleme für die es OpenSource Quellcode gibt und für die es keinen Quellcode gibt. Lösbar ist demzufolge jedes Problem, für das auf github oder einer anderen Plattform jemand das passende Programm veröffentlicht hat.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s