NNSpace – The next one

Jetzt ist es wieder mal so weit. Wie jedes Jahr um diese Zeit, endlich … nein es ist noch nicht Weihnachten! Ich habe mich dazu durchgerungen mit einer neuen Version von NNSpace anzufangen. Mein Plan ist es im Moment alle Algorithmen, Ausführungspläne und so weiter als Activities/Workflows mit der WF 4 auszulagern. Das sollte möglichst grafisch passieren,  nur die Grundbausteine sollen noch in C# implementiert werden. Für einen Algorithmus wie z.B. die Backpropagation hat das mehrere Vorteile:

  • Man versteht den Algorithmus! Selbst als Programmierer blickt man bei den Algorithmen im Code kaum durch. Ich habe bei der letzten Version (CTP 2) regelmäßig Stunden damit zugebracht irgendwelche Fehler in den Algorithmen zu suchen .. Mit einer grafischen Übersicht dürfte das etwas einfacher werden. Außerdem kann man so besser erklären was passiert.
  • Der Algorithmus ist sehr dynamisch! Wenn wir die Workflows als XAML abspeichern und laden, kann man das jederzeit ändern. Das kann dann sogar der Benutzer machen, wenn er ein bisschen Durchblick hat.

Also, wie muss man sich das dann vorstellen? Ungefähr so:

Das ist mein erster Entwurf für einen Backpropagation-Workflow. Ihr erinnert euch sicherlich noch an die Backprop, also:

  1. Wir nehmen ein feed-forward Netz (Verbindungen nur in eine Richtung) und führen das aus (Forward Execute)
  2. Wir vergleichen das Ergebnis mit einem vorgegebenen Ziel-Vektor und berechnen den quadratischen Fehler (MSE)
  3. Wir berechnen die Ableitungen des Fehlers nach den Gewichten (die Delta-Werte sind hier zwischengespeicherte Teil-Ableitungen, die wir vorher cachen um Performance zu sparen)
  4. Wir aktualisieren die Gewichte anhand der Ableitungen
  5. Wir fangen wieder von vorne an, bis wir der Meinung sind, dass es gut ist

Dafür brauchen wir soweit erstmal nur folgende Code-Activities:

  • Mean Squared Error (quadratischer Fehler) mit Ableitung
  • Sigmoid für die Aktivierungsfunktionen mit Ableitung
  • For-Activity zum durchlaufen der Units, also z.B. zum Berechnen vom NetInput usw. (scheinbar gibt es gar keine For im .NET Framework, also hab ich fix mal selber eine gebastelt)

Innen drin sieht das dann z.B. so aus (für die Ausführung):

und innerhalb von „Calculate Hidden States“ werden zunächst die net-Inputs zusammengezält und dann die Ergebnisse gesammelt durch die sigmoide Aktivierungsfunktion gezogen:

Eigentlich cool oder? Durch die Möglichkeit die Dinger im Designer zusammenzuklappen bleibt das Ganze auch immer schön übersichtlich. Ich bin selber gespannt, wie es jetzt noch weitergeht. Auf jeden Fall könnte es eventuell mit der Performance Probleme geben, wenn ja, müsste ich nochmal umdenken. Es stehen also nach der Logik noch ein paar Tests und dann die Integration in den Rehosted Workflow Designer an.

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.

Neue Dokumentation online

Weil die neue CTP ja nun doch anders ist als die erste  und vielleicht auch nicht immer einfach zu handhaben, hab ich jetzt mal hier noch ein paar neue Sachen hochgeladen um den Einstieg leichter zu machen und, dass man mal ein praktisches Beispiel hat.

Es geht zunächst um das And-Beispiel um zu zeigen wie das Programm funktioniert, nicht wie neuronale Netze funktionieren. Richtig praktische Beispiele mach ich selbstverständlich auch noch, man kann ja auch einfach mal selbst den Contrastive Divergence Algorithmus unter die Lupe nehmen(z.B. mit dem MNIST data set mal probieren, findet man auch einige Beispiele im Netz), geht ungefähr so:

1.Unterste Schicht mit CD trainieren

2.Netz erstellen, test klicken(statt ausführen), bias nicht vergessen, MNIST Daten auf die untere Schicht geben, obere Schicht ausgeben lassen und in Datei speichern(geht nur Textdatei, sorry)

3.Mit der generierten Datei die nächste Schicht mit CD trainieren… und so weiter bis zur letzten Schicht, dann labels mit Backprop und das wars..

Kommt natürlich auf die Genauigkeit an mit der man das betreibt aber das ganze dauert schon eine Weile auf einem normalen Rechner, das lässt sich aber nicht ändern, die Datenmengen der MNIST sind sehr sehr groß.

Feedback zur neuen Version bitte über das Kontakt-Formular (Contact).

NNSpace CTP 2 veröffentlicht

Endlich, nach einiger Verspätung hab ich jetzt die zweite CTP von NNSpace veröffentlicht. Außer den typischen Bugfixes und UI-Verbesserungen, die man sicherlich gleich beim ersten Start bemerken wird gibt es folgende richtige Änderungen:

  1. Die Speicherverwaltung: NNSpace ist jetzt in der Lage so große Netze zu erstellen, wie auf die Festplatte passen, weil zwar der Arbeitsspeicher ziemlich ausgelastet wird, aber alles unnötige sofort auf die platte weggeschreiben wird, wo es dann bei Bedarf ohne, dass man sich Gerdanken darüber machen muss wieder geladen wird. Man sollte allerdings darauf achten mindestens ein paar Gigabyte freien Festplattenspeicher zu haben, sonst bringt die ganze Sache natürlich überhaupt nichts
  2. Die Implementierung der NNS: Die Neural Network Specification(hab ich zum ersten Mal in meinem post am 3.10. letztes Jahr erwähnt) wird vollständig implementiert. Ich denke ich werd da  mal noch ein Beispiel dazu machen, man findet einige Erklärungen dazu hier: compositedevtec.tk/nnspace
  3. Lokalisierung: wer sich dafür interessiert NNSpace in einer Fremdsprache zu verwenden kann mir eine EMail schicken. Englisch wird schon unterstützt(auf amerikanisch-englischen Systemen schaltet das Programm automatisch die Sprache um).
  4. Neue und verbesserte Trainingsalgorithmen
  5. Testfunktion: Man kann jetzt das Netz außer der Ausführung noch zum Generieren von Daten verwenden

Downloadlink binaries: selensoft.tk(Silverlight wird benötigt)

Natürlich braucht man wie immer das .NET Framework 4.0

Die Macht der Cluster

Letztens einen Artikel vom Spiegel gelesen, über Mieten von einem Cluster. Mich hat schon immer mal der Gedanke umgetrieben, dass meine Trainingsalgorithmen von NNSpace einfach viel zu langsam auf einem einzelnen Computer laufen. Es gibt ja auch viele andere Sachen, die man eigentlich gerne auf die Computer im ganzen Haus verteilen würde, zugegeben das geht nicht mit Allem aber ich denke das was Amazon hier zum Beispiel anbietet ist schon eine Richtung, die in Zukunft auch genutzt werden wird. So weit denk ich aber noch gar nicht, mir gehts vielmehr um das Prinzip. Es wäre doch mal interessant zu Testen ob man fähig ist so eine Clusterstruktur aufzubauen, jetzt mal ohne Amazon und 1000 Prozessoren, sondern einfach nur mit 2 oder 3 Computern im eigenen Haus. Letztendlich ist dann der Schritt (falls man das Aufteilen der Arbeit in 1000 Teile vorher schon erledigt hat) nicht mehr so groß zum Rechenzentrum. Es geht ja vielmehr um die Fähigkeit der Anwendung überhaupt auf irgend so einem System zu laufen.

  1. Ich glaube wir haben dabei erst mal zwei Typen von Teilnehmern, ich nenne sie jetzt mal Distributor(davon gibts einen) und Calculator(davon kann es unendlich viele geben). Das heißt jetzt nicht unbedingt, dass nicht auch mehrere solcher Typen auf derselben Maschine laufen können, aber wir brauchen irgendwie eine Instanz(Distributor), die Befehle vom Benutzer annimmt und die dann auf die Arbeitspferde(Calculator) verteilt.
  2. Dann ist noch ein Format nötig über das sich Distributor und Calculator unterhalten. Dabei denk ich jetzt nicht an irgendein Protokoll oder oder Ähnliches, das ist Implementierung und gehört nicht zur Architektur, sondern vielmehr die Art der Ergebnisse und Aufträge. Man muss dann eben immer beachten, dass die Übertragung eine kurze Weile dauert, und deshalb die Daten nicht zu oft gesendet werden dürfen und nicht zu groß sein dürfen.

Dabei ist selbstverständlich das Hauptproblem das Aufteilen der Arbeit, denn die Calculators sollten schon eine Weile zu Rechnen haben, bevor sie das Ergebnis zurückschicken, damit sich die ganze Sache lohnt.

Einen Anwendungsfall sehe ich hier zum Beispiel wenn man viele parallele Ausführungen von einem Netz durchführen möchte, mit dem Lernen sieht es hier schon etwas komplizierter aus, weil sich ja die Gewichte ständig ändern und deshalb immer hin und hergeschickt werden müssten. Letztendlich werde ich wohl zuerst über eine generelle Infrastruktur zum Zusammenschließen eines solchen Rechenclusters nachdenken müssen, die mein Netze-Programm dann benutzen kann. Aber diese Funktionen werden natürlich noch nicht mit der CTP 2 kommen, aber wenn sowas funktioniert, dann wäre das sicherlich ein Release für sich wert.

Pünktliche Weihnachtsgeschenke

In den letzten Tagen musste ich wieder und wieder feststellen, dass Weihnachten nicht mehr weit hin ist. Nicht zuletzt hat mich Herr Jimmy Wales, der bestrebt ist die Finanzierung seiner Weihnachstgeschenke durch ominöse Spendenaktionen abzudecken, wie jedes Jahr um diese Zeit ;)  daran erinnert. Aber nicht nur der kann verschenken, auch ich hab vor neue Software zu verschenken: NNSpace CTP 2 steht auf dem Weihnachtsprogramm und wird hoffentlich noch pünktlich von meinem FTP-Schlitten ins Web gezogen und dann dort von Santa Claus alias square 7 verteilt. Hier die hautsächlichen Änderungen:

  • Vollständige Unterstützung der NNS(Nerural Network Specification, s. auch Downloads), das ist der Hauptpunkt, da hier viele Änderungen auch in der Struktur nötig waren und sind
  • Verbesserung der Backpropagation(Unterstützung verschiedener Fehlerfunktionen u.ä.)
  • Lokalisierung
  • Neues Design
  • Bugfixes(z.b. Validierung beim Speichern aufgehoben)

Wer sich jetzt mit dem Projekt ein bisschen näher beschäftigen möchte, sollte sich auf jeden Fall mal die NNS unter Downloads(oben) durchlesen. Ich hoffe das Zeug ist einigermaßen verständlich, zugegeben häng ich mit der Erklärung hinterher, die eigentliche Dokumentation für das ganze Projekt ist noch in Arbeit, werd mal sehen, ob  ich die zusammen mit der CTP 2 veröffentlichen kann.

Screenshot CTP 2-Vorschau

Neue Webpage für AI

Vielleicht hat der eine oder andere schon gemerkt, dass auf der Hauptseite jetzt noch ein neuer Link auf eine Seite zu nnspace steht(anstatt der neuron net builder Sache). In Zukunft werden jetzt alle relevanten Informationen, Downloads und Dokumentationen zu NNSpace und der NNS(Meiner „Verfassung“) dort auftauchen. Ich nenne meine Dokumentation zu NNSpace jetzt Automation Guidance(NNAG). Hier mal noch ein Link

Einheit auf der ganzen Linie – Was Deutschland mit AI gemeinsam hat

Heute ist der Tag der deutschen Einheit! Aufgrund der geschichtsträchtigen Ereignisse vor 20 Jahren hab ich mir auch einmal Gedanken über Einheit gemacht. Dabei hab ich meine Netze zwar nicht gleich schwarz – rot – gold gestrichen, aber es geht(war ja klar) um NNSpace:

Eigentlich ist es ja eine Schande. Jedes halbwegs fortschrittliche Land hat heutzutage eine Verfassung. Es existieren für viele Streitfälle(z.B. in der Justiz, o.ä.) genau festgeschriebene Gesetzmäßigkeiten, an die sich alle(oder auch nur manche) halten. Aber wenn ich jetzt den Browser aufmach und neural networks bei google reinhack, dann find ich gleich auf Anhieb mehrere verschiedene Möglichkeiten, wie man sich sowas vorstellt. Ich mein damit nicht, dass etwa bezweifelt wird, dass da Neuronen sind und dass die Gewichte zwischen sich haben und Aktivierungsfunktionen, aber dann hörts auch schon wieder auf. Fragen über Fragen: Müssen die Eingänge immer addiert, und die Gewichte immer mit den Ausgaben multipliziert werden? Was genau ist eine Schicht, gibt es sowas überhaupt, wenn ja wozu? Wann gehören Neuronen zu einer Schicht, wann zu einer anderen? Wie kann man ein neuronales Netz generell(ohne Wissen über den konkreten Anwendungsfall) mit einer spezielleren Struktur, als nur das Neuron als ultimativen Baustein darstellen? Also hab ich mich hingesetzt und eine Verfassung für neuronale Netze geschrieben. Ich werd jetzt NNSpace direkt nach der ausrichten, und meine ganze Infrastruktur aus ihrer Grundlage heraus aufbauen, und sie von jetzt ab immer als Beweis und Erklärung nutzen, weil ich finde, dass so eine einheitliche Definition von unbedingter Wichtigkeit ist. Wer sich meine Einfälle dazu mal ansehen möchte kann das Dokument in Kürze hier runterladen. Es soll NNSpace und der ganzen AI eine Ordnung geben, und bestehende Modelle besser erklären helfen. Dabei hab ich natürlich versucht alle Seiten zufrieden zu stellen, und eine zugleich spezielle, aber auch allgemeingültige Ordnung zu bringen. Wer diese Spezifikation(so mein Ziel) erfüllt(oder durch kleine Umbauten erfüllen kann), der kann und sollte sein Modell sofort in NNSpace dynamisch einbinden. Es handelt sich hierbei also um eine Art Eignungstest(wo wir wieder bei der Integration und Wulff und der deutschen Einheit wären). Sieht man mal wozu mich der gute Kohl noch alles bringt…

EDIT: Download hier

Der Tag t ist gekommen, was tun mit NNSpace?

Es ist der Tag t in einer schönen gemütlichen Firma f, als plötzlich der Kunde k hereingeplatzt kommt und den Programmierer x mit einer ganz verrückten Idee i nervt, die darin besteht, dass er die Kursdaten einer Aktie a für die nächste Zeit vorausberechnen möchte. Er hat gehört, dass so etwas möglich ist und erwartet von der Firma seines Vertrauens(f) jetzt die Lösung. Nun stellen sich dem Programmierer x verschiedene Möglichkeiten:

Möglichkeit 1

Der Tag t ist der Geburtstag des Programmierers x, also hat er keine Lust sich mit solchen Dingen rumzuplagen, von denen er sowieso keine Ahnung hat. Deshalb sagt es zum Kunde k das Problem i sei nicht lösbar(denkt sich dabei seinen Teil über das Problem i). Der Kunde k geht verärgert zur Konkurrenz. Keine gute Idee.

Möglichkeit 2

Der Programmierer x ist ein hervorragender Auskenner in Neurocomputing und künstlicher Intelligenz. Er beginnt sofort ein Programm zu schreiben was 25.000 Euro kostet und drei Monate in der Entwicklung dauert. Der Kunde k kann aufgrund der hohen Kosten nur noch Verluste verbuchen, obwohl er jetzt bessere Aussagen über die Aktien treffen kann sind seine Ausgaben für das Programm höher. Deshalb geht der Kunde k pleite. Pech für die Firma f, die jetzt schon wieder einen Kunden weniger hat.

Möglichkeit 3

Der Programmierer x kennt eine hervorragendes Software s, in die er ein Paar Daten eingibt, und die ihm dann automatisch die Berechnung durchführt. Der Kunde k freut sich ungemein, macht Gewinn, setzt weiterhin auf die Firma f und sorgt für regelmäßige Einnahmen.

Das Problem:

Es gibt zwar Software für dieses Beispiel(z.B. Analysis Services, SQL Server) bei denen ist allerdings schon eine Menge vorkonfiguriert, sodass man wenig Spielraum hat. Manche Sachen sind damit auch einfach nicht machbar. Dann gibt es die andere Seite, nämlich Programme wie MemBrain(was mich an LabView erinnert, und LabView mag ich nicht), wo man dann mal so 2000 Neuronen per Hand eingeben muss. Das macht sicherlich Spaß, wenn man mal 2000 Minuten nichts zu tun hat… Aber das hat auch noch einen Nachteil für mich, wenn man alle Neuronen einzeln sieht, wird das alles sehr unübersichtlich. Zusammenfassen ist eines der grundlegendsten Prinzipien in NNSpace(Zumal dieselbe Eingabe vielleicht eine halbe Minute dauert)

Was ich wirklich sagen will ist: Wozu ist NNSpace eigentlich gut, wenn es doch schon Software gibt(das Software Sinn macht glaubt jetzt zumindest die Firma f)

Die Antwort:

Ich hab 2 generelle Probleme mit den existierenden Programmen: Sie sind entweder „zu sehr konfiguriert“ oder „zu sehr konfigurierbar“. Es macht doch wenig Sinn jedes einzelne Neuron einzugeben, wenn sowieso alle die gleichen Eigenschaften haben.

Die Idee ist(nochmal zusammengefasst):

OK, der Tag t+1 ist fast gekommen und ich hab nicht Geburtstag, deshalb muss ich jetzt Schluss machen.