Die Vorteile von NNSpace – CE Intelligence

Welcher Programmierer kennt das nicht? Man macht sich sehr viel Gedanken über das neue Programm, betrachtet alle (oder fast alle) Ausnahmefälle, führt aufwendige Tests durch und verschwendet einen Haufen Zeit damit dem Computer irgendwie klar zu machen, was man von ihm will. Am Ende funktioniert das Programm trotzdem nicht und man muss sich noch eine ganze Weile mit Bugs rumärgern, bis der Rechner endlich kapiert hat, was man von ihm will. Und dann merkt man zwischendurch später immer noch, dass irgendwo an irgendeiner Ecke die ganze Sache hängt und eben nicht das macht, was man gern hätte.

Gehen wir einen Schritt weiter: Massendatenverarbeitung, Erkennung hochkomplexer, verformter oder verschleierter Muster, kann das überhaupt über eine Programmiersprache beschrieben werden? Manches ja, manches nein. Wenn nein, dann kommt: Künstliche Intelligenz, neuronale Netze und ähnliches. Also haben wir jetzt mit neuronalen Netzen im Computer alle Probleme überwunden dem Computer Informationen mitzuteilen und er kann jetzt alle Aufgaben lösen? Weit gefehlt: Künstliche Neuronale Netze sind längst nicht so leistungsfähig, wie unser Gehirn. Es gibt viele Anwendungsfälle an denen auch sie scheitern, was ist nun hier das Problem?

Wir haben doch eigentlich dasselbe Problem wie zuvor: Die Netze im Computer werden nämlich jetzt nicht programmiert, sondern vom Computer generiert, nämlich gelernt. Das heißt im Prinzip: Der Programmierer lässt den Computer für sich programmieren und das intelligent. Das funktioniert auch sehr gut, aber der Programmierer sagt dem Computer doch wieder nicht was er will. Er kann den Computer mit Beispielen in die richtige Richtung lenken, aber letztendlich gibt er ihm wieder nur Hinweise, nur Anhaltspunkte. Ob es sich dabei nun um handgeschriebene Programmteile oder um Musterbeispiele handelt, ist doch völlig egal. Unser Problem, dass der Computer nie macht, was der Mensch ihm sagt bleibt doch bestehen. Es ist keineswegs immer der Fall, dass beim Lernvorgang eines solchen neuronalen Netzes etwas Sinnvolles herauskommt.

Damit stehen wir also wieder am Anfang. Soll heißen „weg mit künstlicher Intelligenz“, Begründung: „Bringt sowieso nichts?“. Nein! Nur: Die KI/AI muss sich verbessern und den Menschen in ihre Lernvorgänge einbeziehen. Wir wissen oft wie ein bestimmtes Problem zu lösen ist, warum übertragen wir nicht unsere eigenen Erkenntnisse zu den Problemen in den Aufbauprozess von so einem Netz? Dann hätten wir doch mächtige Intelligenz, denn wir hätten uns selbst. Lassen wir uns neuronale Netze trainieren und nicht Algorithmen diese Aufgabe übernehmen!

Zunächst müssen wir eines klarstellen: Wir werden nie dazu in der Lage sein den gesamten Denkprozess den unser Gehirn durchläuft bei einer bestimmten Problemstellung in den Computer zu übertragen. Aus zwei Gründen ist das nicht möglich:

  1. Unsere Denkweise ist zu komplex, sodass es ein unermesslicher zeitlicher Aufwand wäre sie zu beschreiben
  2. Wir können sie nicht beschreiben, weil wir nicht wissen, was in unserem Gehirn passiert

Wenn wir zum Beispiel eine handgeschriebene Zahl sehen, dann erkennt unser Gehirn die Zahl wieder. Aber wir könnten nie beschreiben wie dieser Vorgang funktioniert, weil wir nicht wissen, was unser Gehirn macht. Wir können höchstens grobe Teile des Denkprozesses umschreiben, aber nie Details. Wir werden also nicht darum herumkommen neuronale Netze im Computer mit Beispielen und Algorithmen zu trainieren, sondern wir müssen auf einer höheren Abstraktionsebene denken. Wenn wir dem Netz die ungefähren Zusammenhänge mitteilen, müssen wir nur noch die Details lernen. Aber wie soll das funktionieren?

Schauen wir uns mal an, wie so ein Netz zurzeit gelernt wird:

Ein Lernalgorithmus erhält Beispiele und lernt damit das Netz. Das bleibt bestehen und muss nun aber durch eine weitere Instanz verallgemeinert werden. Soll heißen: der Lernalgorithmus lernt niemals unser vollständiges Netz, sondern nur einen Teil (wie oben beschrieben). Damit müssen wir also letztendlich viele Teilnetze zusammenfassen und teilen durch die Art der Zusammenfassung dem Netz die grobe Denkstruktur unseres Gehirns mit:

Das ermöglicht es uns also durch Kombination unsere eigene Intelligenz in Modellen neuronaler Netze zu verarbeiten. Wenn man sich das ganze so abstrakt nicht vorstellen kann, hier vielleicht noch mal die Übersicht (CE = Combined Execution heißt Mensch stellt Teil vom Netz, Maschine stellt anderen Teil und dann wir die gesamte zusammengesetzte Struktur aus beiden vereint ausgeführt-also: Lernvorgänge getrennt, Ausführung kombiniert=Combined Execution):

1. Mensch befasst sich mit dem Problem, dass die künstliche Intelligenz (AI) lösen soll

2. Mensch kann einige Verbindungen (natürlich nie alle) in seinem Gehirn durch seine Denkweise (unbewusst) identifizieren, aber nicht alle

3. Mensch überträgt die grobe Struktur in den Computer

4. Maschine findet fehlende Verbindungen (=> Effizienzsteigerung, weil nicht mehr alle Verbindungen von der Maschine gefunden werden müssen)

Das ist natürlich genau das, was NNSpace durch die Kombination möglich macht. Der Mensch gibt die Struktur vor und wird dadurch unbewusst gezwungen bestimmte Strukturen einfach durch seine Denkweise festzulegen. Das Modell wird dann zumindest teilweise richtig biologisch. Auch wenn man zum Beispiel das menschliche Gehirn wirklich als solches modellieren möchte können Erkenntnisse, die wir inzwischen über seine Struktur gemacht haben (z.B. Gefühle oder verschiedene Bereiche vom Gehirn) eingebaut werden. Die Algorithmen machen nur noch die „Drecksarbeit“, nämlich das tatsächliche Klein-Klein der Verknüpfungen. Selbstverständlich funktioniert das nur mäßig gut aber auf jeden Fall wesentlich besser als das Netz nur von Algorithmen zu trainieren lassen.

Kombination macht Sinn! Ich denke man sollte viele neuronale Netze, die neu entwickelt werden auf diese Weise speziell an ihren Anwendungsfall anpassen. Wer Ideen dazu hat oder mal gern etwas testen würde kann mir jederzeit hier eine Mail schreiben.

Bugfix für XP-User

Weil die CTP 2 mit komprimierten Icons ausgestattet ist, läuft sie leider nicht auf XP (oder niedriger, obwohl das wohl kaum der Fall sein wird). Um dieses Problem noch zu beheben wird ein Bug-Fix für die CTP 2 veröffentlicht, bei dem gleich noch einige andere Kleinigkeiten mit behoben werden konnten. Anbei ein kleiner Screenshot meiner Anwendung im virtuellen XP-Modus (Das Video auf der Startseite funktioniert zumindest bei mir auf XP nicht, ist denk ich aber kein Problem das braucht man ja nicht):

Nur um mal die anderen Änderungen zu erwähnen: Ich hab bei der Speicherverwaltung noch einiges geändert (z.B. die Sache, dass wenn man die Anwendung 2mal öffnet immer eine abstürzt und ähnliches). Ansonsten bleibt natürlich alles gleich, es gibt keine neuen Funktionen.

Wenn irgendjemand ein Problem mit der Anwendung hat (z.B. das mit XP), bitte über das Kontaktformular melden und dann gibts einen neuen Bugfix.