Laden...

NeuroBox

Erstellt von cdr vor 19 Jahren Letzter Beitrag vor 16 Jahren 21.246 Views
C
cdr Themenstarter:in
980 Beiträge seit 2003
vor 19 Jahren
NeuroBox

Neues Projekteforum? Dann beginnen wir doch gerade mit einem kleinen Projekt, an dem ich schon länger immer wieder etwas weiterarbeite und gerade gestern eine neue Release 2.5 veröffentlicht habe: NeuroBox, eine Bibliothek zum generieren, propagieren und trainieren neuronaler Netzwerke. Das ganze ist Opensource und auch auf SourceForge veröffentlich.

Die NeuroBox ist in drei Bibliotheken geteilt: Die Hauptbibliothek (NeuroBox.dll) ist relativ einfach aufgebaut und beinhaltet die Grundstrukturen eines Neuronalen Netzwerkes wie Representationen von Schichten, Neuronen und Synapsen - verknüft mit Algorithmen für die Berechnung und dem Training der Netze.

Im Prinzip lässt sich damit schon praktisch alles machen, für die klassische Anwendung der Mustererkennung bietet es sich jedoch an, den redundant anfallenden weiteren Code für die Pattern Verwaltung, das generieren optimierter Netzwerkstrukturen sowie das automatisieren der Trainings in einer weiteren Bibliothek verallgemeinert zusammenzufassen. Dies ist die zweite Bibliothek (NeuroBox.PatternMatching.dll).

Die dritte (NeuroBox.Repository.dll) übernimmt die Verwaltung verschiedener Netzwerke und Trainingszustände in einem typisierten DataSet und ermöglicht entsprechend auch das importieren und exportieren in XML Files und das Binden an Datenbanken.

In der Zwischenzeit haben sich (teilweise auch in der Zusammenarbeit mit anderen) auch einige kleine Demo Anwendungen entwickelt. Auch eine MSDN-like Referenz steht zur Verfügung.

Was mich an dieser Stelle (neben allgemeinem Feedback) vor allem interessieren würde, ist, wer hier schon irgendwie mit künstlichen neuronalen Netzen zu tun gehabt hat oder sie sogar aktiv anwendet - oder sich zumindest theoretisch über künstliche Intelligenz (mit oder ohne neuronale Netzwerke) interessiert ....?

R
139 Beiträge seit 2004
vor 19 Jahren

an erster stelle mal ein dickes Lob 👍
bin schon seit einigen tag auf der suche nach so ein neuronales netz beispiel.
im mom arbeite ich an einem projekt zwecks text erkennnug.
bis jetzt habe ich mit recognizer aus dem hause logitech gearbeitet, naja ist nicht so toll. ein kumpel hatte letzte woche die idee evtl. mal so einen neuronales netz aufzubauen -> wenn das mal kein zufall ist auf dieses beispiel zu stossen 😁

"oder sich zumindest theoretisch über künstliche Intelligenz (mit oder ohne neuronale Netzwerke) interessiert ....?"

also wegen neugier und projekt bin ich sehr interessiert 😉

posted by the real prince of persia

F
529 Beiträge seit 2003
vor 19 Jahren

Ich finde Neuronale Netze sind das interressanteste am Programmieren. Ich habe zwar noch keines programmiert weil ich keine Zeit habe, aber ich werde mich dembald damit auch mal auseinandersetzten....

Ich habe auch ein paar Fragen:
Wie viele Quelltextzeilen hat alleine die Grundbibliothek?
Woher hast du das Wissen, wie sowas näher aufgebaut ist?
Wie viele Neuronen befinden sich bei dir in der verdeckten Schicht, wie viele in der Ein- und wie viele in der Ausgangsschicht?

--
mfg
Franknstein

Besuchen sie das VisualC++ - Forum

C
cdr Themenstarter:in
980 Beiträge seit 2003
vor 19 Jahren

Da ich in der neuen Release einiges ausgelagert habe ist sie nun mit gut 2000 Zeilen (inklusive XML Inline Referenz) eigentlich gut überschaubar, vor allem da die meisten Zeilen auf objektorientierten Krimskrams draufgehen - die eigentlichen Rechnungen umfassen nicht mehr als vielleicht 100 bis 200 Zeilen ...

Bezüglich wissen: einigermassen fundiertes Grundwissen im Bereich der Numerischen Methodik (aufbauend auf der Vektoranalysis) und der Wahrscheinlichkeitstheorie evtl. zusammen mit wenigen biologischen Grundlagen (bzgl. Nervensystem) sollten mehr als ausreichen, sind aber nicht unbedingt notwendig (zumindest Mittelschulwissen bzgl. Differentialrechnung in mehreren Dimensionen sollte man aber schon haben) ... natürlich könnte man auch einfach aus einem Buch einen Algorithmus ableiten (vielleicht gibt es sogar welche mit fertigen Bausteinen, k.a.), die Frage ist dann halt ob man dann auch versteht was wirklich abgeht ...

Wie viele Neuronen befinden sich bei dir in der verdeckten Schicht, wie viele in der Ein- und wie viele in der Ausgangsschicht?

Das hängt ganz von der Anwendung ab. Das Framework stellt mittel zum Bau eines Netzwerkes zur Verfügung, nicht ein fixes hartcodiertes Netzwerk. Die Bibliothek ist ja auch nicht auf eine feste Anwendung beschränkt ... Die Multi Logic Operator Demo nutzt z.b. 2 Eingans- 32 oder 64 Verdeckte und 16 Ausgangsneuronen, die Pattern Matching Demo hat aber z.B. mehr Neuronen in der Eingangsschicht als in der verdeckten Schicht. Auch mehrere verdeckte Schichten sind möglich ...

F
529 Beiträge seit 2003
vor 19 Jahren

Danke für die Antworten aber noch eine Frage:
Wie lange hast du für die Lerndatenerstellung gebraucht?

--
mfg
Franknstein

Besuchen sie das VisualC++ - Forum

22 Beiträge seit 2004
vor 19 Jahren

Bei mir im Büro geht es hauptsächlich um die Verwaltung und den Aufbau eines geografischen Datenstocks.

Dazu kann man zB ein Luftbild (= Orthofoto) welches als TIFF Bild vorliegt hernehmen und daraus nach Mustern suchen, die man nachher vektorisiert.

So können automatisch riesige Datenmengen nach Themen bezogen aus dem sonst eigentlich wertlosen Orthofoto gezogen werden (zB Straßenzüge, Waldgebiete, usw.).

Und genausoetwas werde ich mir irgendwanneinmal, wenn ichs denn schaffen sollte, versuchen zu programmieren. Solche Tools gibt es zwar zu Hauf, doch sind Sie nicht immer genau für diesen Verwendungszweck zugeschnitten, oder kompliziert zu bedienen.

Problematisch wird dabei die zu verarbeitende Datenmenge, da ein Luftbild, welches 1,25 km hoch und 2,5 km breit ist, bereits 50MByte an Daten auf der Festplatte ausmacht. Für ein interessantes Untersuchungsgebiet, sagen wir mal 20000 qkm kommen wir da schon auf ~ 1TeraByte an Rasterbildern. Würd mich interessieren, wie man da am besten die Speicherverwaltung macht, um das Neuronale Netz mit den gesamten Datenstock zu füttern.

mfG, Pee

"Think Shell!"

T
55 Beiträge seit 2004
vor 19 Jahren

8o Wie interessant. 🙂 Ein Studienkollege und ich arbeiten z.Z. auch einen NN Projekt, welches sich in der finalen Phase befindet. -> siehe Thread.
Wie ich sehe, hätten wir uns wahrscheinlich eine Menge Arbeit sparen können, wenn wir gleich mal bei SourceForge nach deiner Library gesucht hätten. 😉
Naja, so lernt wenigstens alles selbst.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo cdr,

der Thread ist schon älter, aber da du zum einen die Neurobox wohl noch immer weiter entwickelst und zum anderen auch noch hier im Forum aktiv bist, will ich dir eine Antwort auf die Eingangsfrage nicht vorenthalten.

NNs waren (wieder) aktuell geworden, als ich gerade mit meinem Studium fertig war und sie haben mich so interessiert, dass ich paralell zu meiner Arbeit ein entsprechendes Seminar besucht habe. Das Referat, dass ich in diesem Seminar gehalten habe, war so ziemlich dass einzige, dass ich voll in den Sand gesetzt habe.

Thema war das subsymbolische Pradigma und ich habe es bis heute nicht wiklich verstanden. Das hat aber glaube ich auch damit zu tun, dass es nicht in mein Weltbild passt. Das ein Ergebnis entsteht, ohne das es symbolisch berechnet wurde bzw. berechnet werden kann, ist für mich Voodoo. Genauso, wie ich immer (verzweifelt) versuche zu verstehen, was das Verhalten einer einzelnen Ameise zum Funktionieren des Ameisenstaates beiträgt, war ich auch immer geneigt, einem einzelen Neuron eine bestimmte Funktion zuzuschreiben. Dass man damit nicht ans Ziel kommt, ist mir schon klar.

Das verhauene Referat hat mir nicht geschadet, da ich meinen Abschluss ja schon hatte, aber auch dazu geführt, dass ich mich nicht ernsthaft weiter mit dem Thema beschäftigt habe. Als mir irgendwann die ANN-Demo über den Weg gelaufen ist, habe ich mal wieder nach gedacht, ob ich nicht auch eine NN-Bibliothek schreiben soll, aber letztendlich sehe ich das mit den NN so ähnlich wie mit den logischen Programmiersprachen (wer erinnert sich noch an das Fifth-Generation-Project?). Genauso, wie man den NNs die Fähigkeit die Informatik zu revolutionieren zugeschrieben hat, hatte man das auch den logischen Programmiersprachen zugeschrieben. Die Revolution ist in beiden Fällen (noch?) ausgeblieben, aber beide habe sich bestimmte Nischen erobern können.

herbivore

402 Beiträge seit 2005
vor 18 Jahren

Hallo, eine kurze echt gut verständliche Einleitung zu dem Thema kannst Du in der Dissertation eines ehemaligen Kollegen von mir lesen:

Zur Modularisierung und Interpretierbarkeit Neuronaler Netze

@cdr

Arbeitest Du z.Zt. an der Neurobox? Sie leistet zwar wunderbare Arbeit, aber Du hattest ja super Ideen zu V2.8.

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

C
cdr Themenstarter:in
980 Beiträge seit 2003
vor 18 Jahren

Habe heute eine neue Version veröffentlicht:

Download (SourceForge) [Quelltext + Binaries]

  • New Configuration System: Hierarchical, you may override settings on all levels (Network, Layer, Neuron, Synapse) and add your own settings dynamically.

  • Namespace: I finally removed the "Cdrnet" prefix, so all namespaces begin with "NeuroBox".

  • New Function Fitting Building Block for curve fitting applications. New demo, "ApproxTraining".

  • New auto training classes, try them out or adapt them to your needs.

  • Various minor enhancements

  • .NET 2.0, VisualStudio 2005 Project

925 Beiträge seit 2004
vor 16 Jahren

Mal wieder was neues in diesem Projekt?