PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmier Technisch - Eine echte KI!



TheBlackRave
16.01.2004, 22:50
Hi ich bin neu hier auf diesem Board, da ich selber mit der Roboterentwicklung anfangen will. Jedoch habe ich eine sehr große Erfahrung im Bereich Informatik.

Jetzt zum Subject! Programmier Technisch - Eine echte KI!
Was ist eine echte KI und was ist eine unechte?
Erstmal zu einer unechten KI. Sie besteht meist aus einigen hundert If Then Else anweißungen. Eine echte KI dagegen besteht nur aus einigen Neuronen. Eine echte KI kann man mit paar Zeilen Code um neue Fähigkeiten erweitern. Dabei sollte man die Programmiersprache C++ einsätzen. Dabei sollte die Hardware mindestens 256 KByte Ram bieten.
Eine KI wird eigentlich mit Neuronen programmiert. Man erstellt eine Basis Klasse CNeuron und leitet davon, dann einige Verhaltensmuster ab.
Diese werden mit einander verbunden und schon ist die KI fertig.
Das interessanteste ist jedoch, dass der Roboter mit dieser KI ausgestattet Sachen anstellen wird(sofern es eine größere Anzahl von Neuronen gibt) auf die ihr niemals gekommen wäret. Es gibt im weiteren noch die dynamischen Neuronen, die jedes mal wenn sie was dazu lernen ihr "Gehirn" vergößern indem sie neue Neuronen erstellen.
Ich werde mal in den nächsten Tagen ein Beispiel Programm erstellen.
Er wirklich Roboter entwickeln will sollte Sprachen wie C/Basic/Pascal vergessen. Man muss nun mal mit C++ arbeiten um eine ordentliche KI zu erstellen. Wer eine dynamische KI kommt um C++ eh nicht rum.
Wer Fragen zu diesem Thema hat kann mir ruhig eine PM schicken, ich werde dann so schnell wie möglich darauf antworten.
:wink:

Rotlaus
16.01.2004, 23:10
Man muss nun mal mit C++ arbeiten um eine ordentliche KI zu erstellen. Wer eine dynamische KI kommt um C++ eh nicht rum.

Das halte ich für ein Gerücht. Ok, C++ ist eine feine Scahe, aber was die Vorraussetzung für Neuronen Programmierung betrifft, ist wohl doch eher die Objekt orientierung der Sprache die benötigt wird. Und das kann man nicht nur mit C++ machen.

Just my 2 cent,

Andre

TheBlackRave
16.01.2004, 23:12
Hi Rotlaus! Sowieso meinte ich die OOP Fähigkeit der Sprache. Nun mal ist C++ sehr verbreitet und beliebt und somit die beste Empfehlung.
Ich werde jetzt mal ein Beispiel versuchen zu programmierung und dann zu posten.

zefram
16.01.2004, 23:14
Hallo,

zu allererst: Schön, dass du dich offensichtlich sehr für Neuronale Netze interessierst. Ich darf dir vielleicht zur Vertiefung das Buch "Theorie der neuronalen Netze" von Rojas (Springer Verlag) empfehlen.

Jetzt zu deinem Beitrag. Wenn alles so einfach wäre, wie du geschrieben hast, dann müssten wir uns über KI keinen Kopf mehr zerbrechen. Ein in C++ implementiertes Neuronales Netz macht noch keine Intelligenz. Abgesehen davon ist es völlig egal, mit welcher Sprache man irgendeine Funktionalität implementiert und C++ ist nun auch nicht gerade die klassische KI-Sprache, das sind eher Lisp und Prolog.
Eine KI besteht auch nicht nur aus ein paar Neuronen, die man irgendwie zusammenschaltet und schon hat man ein intelligentes Verhalten. Es gibt viele verschiedene Arten von Neuronalen Netzen und noch mehr Lernverfahren. Angefangen von einfachen Perzeptronen, die schon am XOR-Problem scheitern, über mehrschichtige Netze (Stichwort Backpropagation), Hopfield-Netze, Kohonen-Netze (selbstorganisierende Merkmalskarten), Elmannetze ... jedes von ihnen hat seine Besonderheiten und ist für verschiedene Aufgaben besser geeignet als andere. Die Forschung im Bereich NN ist auch (wieder) ziemlich im Fluß, nachdem es zwischen den sechziger und achziger Jahren ziemlich ruhig geworden war. Neuronale Netze sind ja keineswegs eine neue Erfindung. Das erste Modell von NN wurde schon 1943 von McCulloch und Pitts vorgeschlagen. Das waren übrigens zwei Psychologen, denn damals gab es noch keine Informatiker.

Jedenfalls ist das Gebiet der NN in der Tat sehr interessant und bietet viel Potential. Vielleicht veröffentlichst du mal dein Beispielprogramm hier, mit einer kleinen Beschreibung und Quelltext, um die NN auch anderen Leuten hier näher zu bringen.

16.01.2004, 23:15
Sowieso meinte ich die OOP Fähigkeit der Sprache. Nun mal ist C++ sehr verbreitet und beliebt und somit die beste Empfehlung.
Sag ich ja. C++ ist eine feine Sache, aber keine zwingende Vorraussetzung, wie man bei deinem ersten Posting meinen könnte.

Gruss,

Andre

davil
16.01.2004, 23:18
Allerdings für Controller eignet sich die Sprache nur bedingt. Es werden unheimlich Resourcen verbraucht. Zudem gibt es für die wenigsten Controller einen C++ Compiler.
In Bezug auf PC liegst du nicht ganz falsch, aber bei Controllern hat C++ keine bedeutende Rolle.

Rotlaus
17.01.2004, 11:54
Allerdings für Controller eignet sich die Sprache nur bedingt. Es werden unheimlich Resourcen verbraucht. Zudem gibt es für die wenigsten Controller einen C++ Compiler.
In Bezug auf PC liegst du nicht ganz falsch, aber bei Controllern hat C++ keine bedeutende Rolle.

Das sowieso. Ich würde nicht mal im Traum darauf kommen, auf einem Microcontroller C++ einsetzen zu wollen. Dafür ist der Resourcen Bedarf einfach zu hoch. Ich schwöre ja auf C, aber wir wollen hier ja keinen Glaubenskrieg ausbrechen lassen. :D

Andererseits, nen kleiner ARM7 Controller, mit 1-2 MB RAM, da könnte man dann ja....

Ach, lassen wir das. :wink:

Gruss,

Andre

17.01.2004, 19:57
Also wenn ich den ersten Beitrag hier lesen könnte man glauben KI ist nur eine Sachen von Stunden ist morgen fertig leider sehe ich das nicht so. Aber wenn sich hier ein paar leute finden würden die es wirdlich programmieren wollen whre ich gerne bereit mich zu beteiligen.

in den Frage derr programmier sprache whre ich in bestimmten grenzen offen.

Gruß Numberfive

Frank
17.01.2004, 20:13
In der Tat ist das nicht so einfach mit den neuronalen Netzen. Es gab mal einige Jahre da hat man große Hoffnung in diese Netze gesetzt. Die wenigsten haben sich erfüllt. Man wollte alle nur denkbaren Probleme mit neuronalen Netzen lösen. Auch heute gibt es noch ein großes öffentliches Neuronales Netz zur Vorhersage von Aktienkursen. Allerdings sind die Ergebnisse meines erachtens auch nicht besser als wenn man würfeln würde! (persönliche Meinung). Man kann also keine Wunder von diesen Netzen erwarten, nur für bestimmte Aufgaben wie z.B. Mustererkennung bieten diese Vorteile. Nach dem großen Boom ist es eigentlich recht ruhig um die neuronalen Netze geworden. Das könnt ihr auch gut an den Herausgabedatum der verfügbaren Literatur erkennen.

Ein kleines VB Programm welches ganz gut veranschaulicht wie ein neuronales Netz funktioniert hab ich dem Posting mal angehängt.

Gruß Frank

zefram
18.01.2004, 18:36
Wer mal ein bisschen eingehender mit Neuronalen Netzen spielen möchte, kann sich mal den Stuttgarter-Neuronale-Netze-Simulator ansehen. Damit kann man eine Menge Typen von Netzen zusammenbauen und mit nochmehr Lernverfahren trainieren. Zusätzlich gibts noch viele Analyse-Tools.

Link: http://www-ra.informatik.uni-tuebingen.de/SNNS/

ACU
21.01.2004, 20:48
Das Programm sieht toll aus!
Leider bin ich gerade gescheitert es zu installieren.
Ich habe erst Microsft XServer gedownloaded.
Es tritt aber immer irgendein Pfad Fehler auf.
Ich habe dann irgendein Update (PW118.EXE) runtergeladen ich weiß jetzt aber nicht, wie ich weitermachen soll.
Das kommt mir nämlich alles ziemlich alt vor (dort stande irgendwas mit Win3.11). Deshalb habe ich jetzt Angst mir mein XP zu zerschießen!
Kann mir einer helfen?

Frank
21.01.2004, 21:44
Es gibt glaub mehrere Varianten davon, eine hatte ich vor 1 oder 2 Jahren auch mal geladen, glaube unter Win ME. Oder war es DOS Fenster? Ist schon Weilchen her! Jedenfalls ist es auch mächtig komplexe Software die man nicht mal so zwischendurch testen kann. Gibt ein großes englisches Manual dazu - schau erst mal da rein ob das was für dich ist!

zefram
21.01.2004, 23:08
Nehmt mal das JavaNNS:
http://www-ra.informatik.uni-tuebingen.de/downloads/SNNS/JavaNNS/

PS: TheBlackRave, liest du noch mit? Was macht dein Programm?

stevensen
22.01.2004, 23:14
Hallo,

also ch habe nicht die richtige Ahnung von neuronalen Netzen und habe mir zum Spass den SNNS vor einer Zeit angesehen. Und frage mich ob ich den SNNS nur zum Trainieren eines Netzes benutzen kann. Also angenomen ich hätte Daten mit ein paar Sensoren gesammelt und erstelle dann ein entsprechendes Netz mit dem SNNS. Könnte ich den SNNS mit diesen Daten das Netzt trainieren lassen, um anschließend nur die gewichtete Tabelle z.b. in einem MC zu benutzen?

ShadowPhoenix
07.02.2004, 01:41
Hallo erstmal!
Erstmal eine kleine Aufstellung der KI-Levels:

Level1:
Besteht immer nur aus IF (Bedingung) THEN (Tue das und das)
Das kann man noch nicht als eine KI bezeichnen sondern eigentlich ist das
nur reine Programmierung ohne KI-URSPRUNG.

Level2:
Das wären deine Neuronalen Netze

Level3:
Hmm... bei den Neuronalen Netzen fehlt zwar nicht der URSPRUNG, aber er ist VORPROGRAMMIERT! Und deswegen ist es keine wirkliche KI !

Denkt doch mal an Menschen. Man wird geboren, man fühlt, denkt, sieht, alles mögliche eben... ABER: Der Ursprung des denkens ist schon in dir!
D.h. der Mensch besitzt eine SEELE und die KI selbst auch!


Das Problem, eine wirkliche KI zu erstellen, ist also die Programmierung eines Urpsrunges. Natürlich muss dieser zuerst vorhanden sein, denn sonst wäre man GARNICHTS!
Wenn man also erst mal einen Ursprung hätte, würde einer KI nichts mehr im Wege stehen. Sie würde sich dann selbst weiterentwickeln, Gefühle entwickeln...

Oh mann...KI...das ist schon was sehr KOMPLEXES..
Falls ich etwas -snipped- zusammen geschrieben habe, sorry es ist schon etwas spät ;-)

Diese KI's würden dann bei C-MAX verwendet werden.
Das kommt dann in etwa ein paar hundert Jahren....
Mit freundlichen Grüßen,

Metalguard & ShadowPhoenix

zefram
07.02.2004, 14:47
Hallo,

bevor die Diskussion hier noch esoterischer wird ;) schaut euch mal dieses einfache Programm an.
http://www.tu-chemnitz.de/~niko/neuron.exe

Was ist das? Ein Neuronales Netz, das den Unterschied zwischen geraden und ungeraden Zahlen lernen will. Am Anfang ist es strohdumm. Der Benutzer gibt eine Zahl zwischen 0 und 255 ein und das Netz "rät", ob die Zahl ungerade oder gerade ist. Anschließend kann der Nutzer die Antwort korrigieren. Dabei lernt das Netz. Zur besseren Übersichtlichkeit werden nach jedem Lernschritt die falsch eingeordneten Zahlen ausgegeben.
Nach etwa 15 bis 20 Schritten sollte das Netz alle 255 Zahlen richtig einordnen können.

Das ist nun kein sehr sinnvolles Beisipiel, demonstriert aber einfach mal, dass NN nix geheimnisvolles sind und auch keine "Seele" brauchen.

Wer möchte Tips abgeben, wieviele Neuronen zu dieser Netzleistung nötig sind? :)

duelle
28.02.2004, 13:53
Hi leute,

scheinbar habt ihr hier alle ziemlich viel Ahnung von KI usw.
Also frage icheuch mal:

Ich arbeite an einem Schulprojekt zu KI und würde gerne was über folgende Dinge wissen:

- Ursprung der KI
- Definition von KI
- Wer hat KI als erstes "erfunden" bzw. entwickelt

Hat jemand einen Delphi-Quelltext zu einer einfachen KI?
Das wäre ein tolles Beispiel um die KI zu demonstrieren.

Wäre euch sehr dankbar.

Email: duelle@arcor.de

Gruß
duelle

mpetz
28.02.2004, 19:40
...naja, also mit 16 eine sehr große Erfahrung in Informatik...studier es erstmal, da ist noch einiges im argen!

Gruß
Martin

REB
05.03.2004, 13:53
Der angebliche Ursprung der KI liegt in einer Konferenz im Jahre 1956 in Hannover (nein, das in New Hamphshire,USA) stattfand. Die Teilnehmer der Konferenz gingen davon aus, dass sämtliche Eigenschaften der Intelligenz in abstrakten Modellen präzise beschreibbar sind. Wenn dem so wäre könnte man also auch Maschinen Intelligenz zubilligen. Das entspräche also dem oben erwähnten Level 1 da es nur darauf ankommt einen geeigneten Algorithmus für die Eigenschaften der Intelligenz zu finden. Daraus entstanden die genannten Sprachen Prolog, List,... .

Mit der Zeit lernten die Kybernetiker (keinstenfalls nur Informatiker sondern zuvorderst Biologen) ein wenig die Vorgänge im Gehirn kennen; dabei entstand erst der Bezug zu vernetzten Prozessoren. Da die Signalübertragung im menschlichen Körper über sog. Neuronen verläuft, die arbeitsteilig und voneinander unabhängig arbeiten, überlegte man, ob man Computer auf dieser Basis bauen kann (kann man heute noch nicht, da die Neuronen "im Duplexmodus" arbeiten können; das konnte man den Prozessoren trotz angeblicher Multitaskingfähigkeit heute noch nicht beibringen). So entstand wohl der o.g. Level 2.
C++ wie auch alle anderen auf Klassen basierenden Sprachen sind eigentlich nur "Abfälle" der KI-Diskussionen.

Einzelne "Erfinder" gibt es hier nicht- das Gebiet ist zu komplex dass nur ein Fachmann einer Fachrichtung daran arbeiten kann.
Für Dich würde sich folgendes Buch, dem ich die o.g. Informationen entnommen habe, eignen:
A.Dengel. Künstliche Intelligenz, ISBN 9 783411 102716.

N.B. Die Informatikkurse an Schulen beginnen in einigen Ländern schon mit KLasse 8, also ab 14 Jahren....

REB

zefram
14.03.2004, 23:02
- Ursprung der KI
- Definition von KI
- Wer hat KI als erstes "erfunden" bzw. entwickelt


Dazu vielleicht zur Geschichte noch einige Fakten:
Die Arbeit, in der McCulloch und Pitt erstmalig ihr Modell eines Neuronalen Netzes darstellten, wird allgemein als die erste wissenschaftliche Arbeit auf dem Gebiet KI angesehen. Das war schon 1943.
In den frühen 50ern haben Shannon und Turing die ersten Schachprogramme geschrieben. Minsky und Edmonds bauten 1951 in Princeton mit einen SNARC genannten Computer, der Neuronale Netze simulierte (aus 3000 Röhren).
Der Begriff "Artificial Intelligence" wurde, wie schon erwähnt, 1956 auf einem zweimonatigem Workshop als Name für das neue Forschungsgebiet von John McCarthy vorgeschlagen und von den anderen Teilnehmern (insgesamt 10) akzeptiert.
In der Folgezeit wurden mehrere Problemlöser etnwickelt, die meist auf Basis logischer Regeln Schlußfolgerungen ziehen konnten und auch neue Regeln ableiten konnten. Bis in die 60er hinein erfuhr die KI-Forschung einen ziemlichen Boom. Allerdings setzte danach eine ziemliche Ernüchterung ein. Man sah ein, dass man mit der verfügbaren Rechentechnik und dem bisherigen Wissen lediglich kleine Schritte tun konnte. 1969 beweisen Minsky und Papert, dass das Perzeptron (eine spezielle Form von Neuronalem Netz) nur sehr beschränkte Problemfälle repräsentieren konnte. Das versetzte der NN-Forschung einen ziemlichen Schlag, von dem sie sich erst in den 80ern wieder erholte. Mit den Arbeiten von Hopfield und der Wiederentdeckung des Backpropagation Algorithmus kam es dann ab Mitte der 80er zu einem neuen Aufschwung der NN. Zwischendurch entstanden eine Menge recht leistungsfähiger Expertensysteme für verschiedene Anwendungsgebiete (z.B. Diagnoseysteme in der Medizin usw)

01.04.2004, 16:32
Ich bin beim googlen auf diese Seite gestossen und hab sofort nen Hals bekommen als ich den Kommentar von mpetz gelesen habe.

Man muss nicht Informatik studieren, um Erfahrung in dem Gebiet zu sammeln. Ich habe auch schon einige umfangreiche Programme im Bereich Server/Clients, Datenbanken, Verschlüsselung und auch schon im Bereich einfache KI Systeme geschrieben und meine Erfahrung stammt nur aus Büchern und dem Internet. Ich kenne einige Studenten, die nix draufhaben. Meine persönliche Meinung ist sogar, dass im Bereich der Informatik ein Studium in den meisten Fällen unsinnig ist, da viele Aspekte der Informatik einfach zu schnelllebig sind, als dass man mehrere Jahre dazu lernt. Sicher einige Bereiche, wie zum Beispiel der Bereich der KI ist schon sehr alt und ändert sich im Moment jedenfalls nicht sehr viel, andere grundlegende Bereiche der Programmierung ändern sich rasant. Man schaue sich nur die Entwicklung der Objektorientierten programmierung an, wie die sich in den letzten Jahren gewandelt hat.

Die Studenten in unserer Firma müssen sich immer erst Ewigkeiten einarbeiten, weil die einfach nur minimale praktische Erfahrung haben. Vielleicht gibt es auch "gescheite" Unis, die auch imer auf dem aktuellsten Stand sind und praktische Erfahrung vermitteln, aber so eine stumpfe und einseitige Aussage wie "studier erstmal" ist schon sehr stumpf.

Tschuldigung, wenn das jetzt ein wenig OOT war, aber ich denke, dass diese Sicht der Dinge doch ein wenig voreingenommen, unüberlegt und ja, sogar ein wenig arrogant ist.

Ich wollte niemanden hier beleidigen, ist nicht persönlich gemeint, nur sollte man solche Dinge nicht so pauschalisieren.

In diesem Sinne
Cromax

zefram
01.04.2004, 22:01
Meine persönliche Meinung ist sogar, dass im Bereich der Informatik ein Studium in den meisten Fällen unsinnig ist, da viele Aspekte der Informatik einfach zu schnelllebig sind, als dass man mehrere Jahre dazu lernt. [ ... ] Man schaue sich nur die Entwicklung der Objektorientierten programmierung an, wie die sich in den letzten Jahren gewandelt hat.

Programmieren ist das letzte, was man bei einem Informatikstudium an einer Uni beigebracht bekommt. Wer Programmierer einstellen will, ist mit Fachinformatikern oder Absolventen einer BA um Längen besser bedient. Leute die an einer Uni Informatik studieren, sind diejenigen, die schlußendlich zu den von dir angesprochenen Änderungen führen. Aber um in ein Fachgebiet Innovation einbringen zu können, muß man erstmal einen ebenso breiten wie tiefen Einblick in das Fachgebiet bekommen. Dazu gehört eine ganze Menge Theorie, die erstmal nix mit dem zu tun hat, was man sich als Außenstehender unter Informatik vorstellt. Man erlebt es leider immer wieder, das viele Studienanfänger mit falschen Vorstellungen in ein Informatik-Studium gehen und sich dann wundern, warum die Einführungsvorlesung "Algorithmen & Programmieren" durchgängig die "veraltete und überhaupt nicht praxisrelevante" Sprache Pascal verwendet und nicht C++ o.ä.


Vielleicht gibt es auch "gescheite" Unis, die auch imer auf dem aktuellsten Stand sind und praktische Erfahrung vermitteln

Weder das eine noch das andere sind Aufgabe einer Universität, im Gegenteil. Man muß nicht jede Mode mitmachen. Programmiersprachen sind Schall und Rauch, was bleibt ist der Algorithmus. In welcher Sprache man diesen implementiert, ist zunächst absolut zweitrangig.



aber so eine stumpfe und einseitige Aussage wie "studier erstmal" ist schon sehr stumpf.

In dem Punkt stimm ich dir zu.



Tschuldigung, wenn das jetzt ein wenig OOT war
Dem schließ ich mich an. Aber als Informatikstudent musste ich das einfach mal loswerden.

Aber um mal noch den Bogen zum Topic zu kriegen .... Wenn schon TheBlackRave nichts mehr von sich hören lässt (ist da Ernüchterung eingetreten?) können vielleicht einige andere Nutzer ihre Projekte in Sachen KI vorstellen? Ich fände mehr Diskussionen zu diesem Thema jedenfalls sehr spannend.

NumberFive
03.04.2004, 11:47
Auch mich Interressiert das sehr nur leider kann ich mir keine Programmie ansatz vorstellen wie man lehren Programmiert da
ich das als grund lage für Interligenz sehe was meint ihr jeman ne Idee

Gruß

15.07.2004, 00:50
Wollt ihr Leben erschaffen, braucht ihr ein sich selbst organisierendes Chaos.
Ziel des Lebens ist das Überleben... aber viele Wege führen nach Rom, also...
Schafft ein Neuronales Netz, das nicht "weiss" was es tun soll, sondern nur was es nicht tun soll; schafft genetische algorithmen, die das Neuronale Netz danach organisieren, wie es am besten überleben kann (Zukunftsorientiert); Schafft Rampen, die die Gegenwart am angenehmsten gestalten wollen (Weg des geringsten Widerstands im Jetzt); Rampen und gen. Alg. arbeiten gegeneinander. Was raus kommt ist zweifellos Chaos, aber ein sich selbst organisierendes Chaos.
Rampen und genetische Algorithmen Formen das Ich mit Emotion und Verstand, das NN organisiert das entstehende Chaos, verarbeitet Eingaben und Ausgaben entsprechend.
Was rauskommt ist eine KI, das Problem ist die immense komplexizität und vor allem die richtige Balance der drei Faktoren.
Das wird wahrscheinlich ähnlich wie die Geschichte der Fraktale ablaufen. Fraktal, der mathematische Begriff des organisierten Chaos.
pathologische Kurven nannten MAthematiker damals gleichungen die ins chaos führten und kümmerten sich nicht weiter daraum. Erst Benoit Mandelbrot fand die Ordnung im Chaos, das Fraktal war geboren. Also, wahrscheinlich verläuft es mit der KI ja ähnlich.

MfG,
Do.Pe.

19.08.2004, 11:20
Hallo Ng,

ich bin auch neu hier und möchte mich auch in das Thema KI einarbeiten ...

Das die 1. Message wohl net so ganz das gelbe vom Ei war, braucht glaube ich nicht weiter diskutiert zu werden ...

ABER:

So schlecht war die Idee nicht ...

Ich habe mir die letzten Tage Medizinische Fachbücher angetan um das Menschliche Gehirn zu verstehen (komisch das dieses Buch schon sagt das das Gehirn einen Schatten auf den Menschen wirft (von der Komplexität)....)

In dem Fachbuch steht, das es Bereiche von Neureonen gibt, die also einen bestimmten Zweck erfüllen (sprechen, fühlen, sehen usw.).

So, hieße das, das ich nicht CNeuron habe sondern CNeuronSprechen, CNeuronSehen usw. ???

Und wie funktioniert das mit der Gewichtung ? Können Neuronen auch mehr als einen Ausgang haben, macht das Sinn ?

Ich habe hier das Programm Neuron.exe gefunden, kann jemand auch den Source zur Verfügung stellen ?

Lg

Christian

zefram
19.08.2004, 14:10
So, hieße das, das ich nicht CNeuron habe sondern CNeuronSprechen, CNeuronSehen usw. ???

Nein, die Neuronen sind baugleich. Sie wirken sich eben nur auf andere Teile des Körpers aus. Die einen steuern eben die Zunge beim Sprechen, die anderen verarbeiten Sinneseindrücke aus dem Ohr.

Es gibt ja auch Leute, die Töne "sehen" können. Bei denen bekommen die Neuronen, die für das Sehen zuständig sind auch Inputs von den Nervenzellen im Ohr, was zu tollen Effekten führt. Die Betroffenen beschreiben die Wahrnehmungen oftmals als bunte Nebelschleier etc.
(Ja, das geht bei denen auch ohne Drogen)


Und wie funktioniert das mit der Gewichtung ? Können Neuronen auch mehr als einen Ausgang haben, macht das Sinn ?
Nein, das macht keinen Sinn. Ein Neuron berechnet das Skalarprodukt aus Eingabevektor und Gewichtsvektor, dabei kommt eben nur ein Ergebnis raus.



Ich habe hier das Programm Neuron.exe gefunden, kann jemand auch den Source zur Verfügung stellen ?

Bitte ...
Das habe ich aber damals in ein paar Minuten hingepfuscht, der Code ist alles andere als ein Beispiel für gute Programmierung :)

int main(int argc, char* argv[])
{ float gewichte[8];
float gesamt;
int zahl;
char antwort;
int i,j;
int falsch=0;
float konstante=1.8;

for (i=0;i<8;i++) gewichte[i]=random(2);

cout << "Hallo, ich bin dein neuronales Netz." << endl << "Bringst du mir was bei? Ich will etwas ueber Zahlen lernen." << endl;
cout << endl <<"Damit du siehst, was ich schon kann, werde ich jetzt alle" <<endl << "Zahlen von 1 bis 255 in gerade/ungerade Zahlen einordnen " <<endl << "und selber ueberpruefen, ob meine Antworten stimmen.";
cout << endl<< endl<<endl;

for (zahl=1;zahl<256;zahl++)
{ gesamt=0;
for (i=0;i<8;i++)
{ gesamt+=gewichte[i]*(float)((zahl >> i)&1);
}
if ((gesamt>0) && (zahl % 2)) falsch++;
}
cout << "Ohje, von den 255 Zahlen habe ich " << falsch << " falsch eingeordnet." <<endl << "Ich glaube du musst mir helfen."<<endl <<endl;
cout << "Du sagst mir eine Zahl zwischen 1 und 255 und ich sage dir,"<< endl <<"ob es eine gerade oder ungerade Zahl ist, ok?" <<endl <<"Danach sagst du mir, ob ich richtig oder falsch geantwortet habe."<< endl;
cout << endl << endl << "Wenn du keine Lust mehr hast, gib einfach 0 ein.";
cout <<endl << endl << "Also los gehts" << endl;

while(1)
{ cout << "Bitte gib eine Zahl ein...";
cin >> zahl;
if (zahl==0) break;
gesamt=0;
for (i=0;i<8;i++)
{ gesamt+=gewichte[i]*(float)((zahl >> i)&1);
}
konstante-=0.05;
if (konstante<0.1) konstante=0.1;

if (gesamt >0) cout << "Ich glaube, "<< zahl<< " ist eine gerade Zahl." <<endl;
else cout << "Ich glaube, "<< zahl<< " ist eine ungerade Zahl." <<endl;

cout << "Ist das richtig? (j/n)";
cin >> antwort;

if ((antwort=='n') && (gesamt>0.0))
{ for (i=0;i<8;i++) gewichte[i]-=konstante*(float)((zahl >> i)&1);
}
if ((antwort=='n') && (gesamt<=0))
{ for (i=0;i<8;i++) gewichte[i]+=konstante*(float)((zahl >> i)&1);
}

cout << endl << "Falsch klassifizierte Zahlen:" << endl;
falsch=0;
for (zahl=1;zahl<256;zahl++)
{ gesamt=0;
for (i=0;i<8;i++)
{ gesamt+=gewichte[i]*(float)((zahl >> i)&1);
}
if ((gesamt>0) && (zahl % 2)!=0) {falsch++; cout << zahl << " ";}
if ((gesamt<=0) && (zahl % 2)==0) {falsch++; cout << zahl << " ";}
}
cout << endl <<endl <<"Super, durch deine Hilfe kann ich jetzt schon "<< 255-falsch << " Zahlen richtig einordnen. Das sind nur " << falsch << " falsche."<<endl;

}
return 0;
}

20.08.2004, 09:37
@zefram

danke für den Code...

Verstanden habe ich ihn allerdings nicht ...

Kannst Du den Code evntl. kommentieren ?

Danke


@all

Gestern habe ich mir in einem weiteren Fachbuch nochmal das Gehrin angeschaut (bzw. die Neuronen)...

Wenn die Neuronen alle gleich sind, müsste es doch eine Möglichkeit geben dieses zu programmieren ...

Nur welche (mathematische ?) Operation führt ein Neuron aus ?

In einem Dokument von einer UNI habe ich folgendes gefunden:

E = Eingänge

__________
E1-----| | |
|-------------|------ Ausgang
En-----|_________|


Eine große Rolle scheinen die Gewichte zu spielen...
(Sorry, ich finde das doc gerade net...)


Nur was passiert im inneren ?

Wo wird das Wissen gespeichert ?

Woraus ergibt sich das "Handeln" ?

Wenn Neuronen Transistoren ähneln, woher kommt die "Logik" ?


Ich hoffe es kann jemand ein wenig Licht in das Dunkel bringen...

Vielen Dank

Lg


Christian

zefram
20.08.2004, 10:29
Hallo,

Zuerst wieder die üblichen Links von mir:

http://www.tu-chemnitz.de/informatik/HomePages/KI/scripts/Konnekt-04-skr1.pdf
http://www.tu-chemnitz.de/informatik/HomePages/KI/scripts/Konnekt-04-skr2.pdf
http://www.tu-chemnitz.de/informatik/HomePages/KI/scripts/Konnekt-04-skr3.pdf
http://www.tu-chemnitz.de/informatik/HomePages/KI/scripts/Konnekt-04-skr4.pdf


Nur welche (mathematische ?) Operation führt ein Neuron aus ?

Kurz zusammengefasst: Ein Neuron hat mehrere Eingänge, die ich als "Kanten" bezeichnen werde. Jeder Kante ist eine Zahl, ein sogenanntes "Gewicht" zugeordnet. Im einfachsten Fall kann man sich die Kanten wie elektrische Leitungen vorstellen, sie führen also den Wert 1 oder den Wert 0. Die Gewichte können beliebige reelle Zahlen sein.

Das Neuron berechnet einfach für jede Kante das Produkt aus Kantenwert und Kantengewicht und summiert diese Produkte auf. Ist die Summe größer als ein Schwellwert, wird der Ausgang auf 1 gesetzt, ist er kleiner, ist der Ausgang 0.
Der Ausgang eines Neurons kann dann anderen Neuronen wieder als Eingang dienen usw.



for i:=1 to anzahl_eingänge do begin
summe:=summe+ eingang[i] * gewicht[i];
end;
if summe>schwellwert then ausgang:=1
else ausgang:=0;



Beim Lernen werden die Kantengewichte geändert. Dafür gibt es gewisse Lernregeln und Lernverfahren.
Das "Wissen" des Netzes ist also in den Gewichten der Kanten gespeichert.

20.08.2004, 11:16
@zefram

danke


Lg


Christian

Xeus
22.08.2004, 16:48
Hast du das vielleicht auch für delphi
gruß
xeus

Braindead
29.08.2004, 16:46
for (i=0;i<8;i++) gewichte[i]=random(2);

Welches Include-File brauch ich für random()? Oder ist das eine selbstprogrammierte Funktion?

02.09.2004, 13:35
Kann man einen chatbot im chat verwenden?? das er mit deinen Nicknamen on bleibt und etwas schreibt??? Und woher kann ich so was haben??? Aber ich hab keine ahnung wie man so was selber zusammen bastelt!!! Gibt es da irgendwo was zum downloaden???
Ich bitte um antwort!!! Danke

Trabukh
03.09.2004, 22:04
Ähm, wo ist hier der Bezug zum Thema?! Egal, ich wollte nur mal anmerken, dass in in Elektor-Ausgaben 3/2003 bis 6/2003 Artikel über die Softwareumsetzung von NNs drin sind. Das ist ultraspannend und leicht erklärt, also mit Prog-Beispielen etc...
Wen's interessiert, der kann sich die Ausgaben ja nachbestellen...

Gruß, Trabukh

08.11.2004, 20:15
Hallo erstmal!
Ich befasse mich noch nicht lange mit KI's aber habe schoneinmal erfolglos versucht etwas in so einer größenordnung zu schreiben. Aber könnte man erlerntes und andere Dinge nicht in Header- oder andere Datein schreiben und das Neurale Netz und sowas nicht in den Quelltext schreiben?

12.12.2004, 16:03
am lustigsten ist beim menschen das der muskel sich bewegt und das hirn dann erst sagt das es den muskel bewegen will ;) ^^

Friggle
16.03.2005, 22:50
Hätte da einen mittlerweile recht komfortablen Neuronale Netze Editor und Simulator zu bieten, an dem ich seit längerer Zeit arbeite. Kommt inklusive Setup und kontextsensitiver HTML Hilfe daher.
Ist aus Interesse an NN und aus Frust über den SNNS entstanden (bin für den SNNS aber vielleicht auch zu sehr Windows-User).

Ich würde das Ding hier tierisch gerne mal absetzen und Feedback von allen Interessierten einholen, aber für ein Attachment ist das Zip-File zu groß (2.1MB, Grenze liegt bei 400k) und im Download-Bereich habe ich es irgendwie nicht geschafft, die Datei upzuloaden (obwohl die Meldung kam, es hätte geklappt... vielleicht dauert es einfach noch ein bißchen...? Ihr könnt ja mal schauen, das Ding heißt MemBrain).

Kann mir jemand einen Tip geben, wie ich das Ding (ohne eigenen Webspace) hier veröffentlichen kann?

Grüße,
Friggle

Nebirosh
05.05.2005, 01:19
Ich glaube das grade bei einer solchen Diskussion viele Dinge eine gewichtige Rolle spielen. Ich selber glaube das es nicht unbedingt einer "Seele" oder etwas ähnlichem bedarf um intelligent handeln zu können.
Grundsätzlich sage ich einmal es gibt nicht DIE eine KI oder DAS eine NN. ( nun dürft ihr anfangen Steine zu werfen *fg*)
Was wäre wenn man komplett anders herum beginnt. Bis jetzt haben alle hier beschriebenen ansätze eines gemeinsam, wir programmieren eine KI oder ein NN und schauen was es kann. Was passiert aber wenn man einmal von der anderen Seite beginnt. Ich habe eine Aufgabe oder ein bestimmtes Ziel was erreicht werden soll. Nimmt man das menschliche Gehirn sozusagen als Muster aller Muster für Intelligenz ist es ansich egal was für eine Problemstellung vorliegt, wir haben die Fähigkeit aus bereits bekanntem schlusszufolgern, und der Schlussfolgerung neues Wissen hinzu zu fügen. Mit einem " statischen " NN wird das sehr sehr schwer da wir am Beginn unserer Aufgabestellung nicht genau wissen wie die Software bestimmte dinge interpretiert, reicht also die Anzahl der Neuronen aus oder braucht man am Ende doch mehr. Genau an diesem Punkt scheitern die meisten Implementationen.
Das ganze System muss also "erweiterbar" sein. Selbst wenn wir dieses Problem gelöst haben ergibt sich ein weiteres viel gravierenderes. Der Weg den die meisten NN anwendungen beschreiten beruht auf Gewichtungen sog. biases der einzelnen Verbindungen ( zur Veranschaulichung dient hier meist das von McCulloch und Pitt entwickelte Modell ). Das Menschliche Gehirn arbeitet massiv paralel. Das lässt sich selbst mit einem CRAY X nicht erreichen, und ich glaube das genau dieser Umwandlungsschritt von paraleler Verarbeitung zu gewichteter Verarbeitung plus der zeitlichen Latenz eines biologischen Neurons ( ein Neuron braucht eine gewisse Zeit um nach einem erfolgten Aktionspotential einen erneuten Impuls weiterleiten zu können ) Ebenso wenig ist die räumliche Anordnung bei den Modellen berücksichtigt. Grundlegend gibt es nur zwei Arten von Neuronen, erregende und hemmende. Viel wichtiger als diese Eigenschaft ist aber die Anbindung an nachfolgende Neuronen und deren Position am nachfolgenden Neuron genauer dessen Dendriten. So kann eine hemmende Verbindung vollkommen nutzlos sein wenn sie zu weit von einer erregenden entfernt ist. Für eine Verbindung die allerdings dichter an dieser hemmenden liegt kann es sehr wohl entscheident sein. Ebenso wenig werden feldrezeptive Vorgänge berücksichtig, wo wenige Neuronen eine ganze Region anderer Neuronen erregen kann. ( Hormonwirkung ist zum Beispiel eine feldrezeptive Erregung Adrenaline Nor adrenaline Serotonine etc. Erregen ganze Bereiche des Gehirns )
Die moderne Medizin geht davon aus das das menschliche Gehirn ca. 100^10 Neuronen besitzt. Auf ein paar mehr oder weniger Aufgrund des letzten Alkoholkonsums kommt es nicht unbedingt an. Nun stellt man sich ein Computersystem vor das gleichzeitig 100^10 ( 100 Milliarden ) Prozesse gleichzeitg ( Echtzeit ) abarbeiten kann und dabei noch Werte übergeben kann.
Um dieses doch erhebliche Problem mit der Echtzeitfähigkeit zu llösen könnte man unter Umständen auf ein time shift verfahren zurückgreifen. Eine einzelne CPU berechnet alle Zustände aller Neuronen nacheinander zur Zeit t = 0, nun werden die Werte an die nachfolgenden Einheiten übergeben. Die CPU errechnet nun erneut sämtliche Zustände zur Zeit T = 1. usw. usw.
Unterm Strich bedeutet das was im Menschlichen Gehirn in weniger als 70 ms zwischen t =0 und t = 1 abläuft würde bei diesem Verfahren weit mehr Zeit in anspruch nehmen als 70 ms. Aber damit ließe sich der bis jetzt bekannte Ablauf im Menschlichen Gehirn nachbilden, zwar nicht in Echtzeit aber ein, in meinen Augen sehr guter Ansatz, um einer Maschine das "Denken" bei zu bringen.

Wenn ihr Ideen Anregungen oder Fragen habt einfach eine PN an mich oder hier im Forum weiter posten. Wenn genügend Interesse besteht können wir gerne auch ein Meeting oder Brainstorming via teamspeak oder ähnlichem arrangieren.

Felix G
05.05.2005, 10:15
Mit einem " statischen " NN wird das sehr sehr schwer da wir am Beginn unserer Aufgabestellung nicht genau wissen wie die Software bestimmte dinge interpretiert, reicht also die Anzahl der Neuronen aus oder braucht man am Ende doch mehr. Genau an diesem Punkt scheitern die meisten Implementationen.Ich habe vor einiger Zeit einen sehr interessanten Screensaver gefunden...
Da werden genetische Algorithmen und NNs kombiniert eingesetzt um quasi so eine art "Evolution" zu simulieren.

Es beginnt mit einem einfachen Stab auf einer ebenen Fläche, das ist quasi das erste "Individuum".
Nach einer Weile entwickeln sich dann etwas komplexere Individuen, die z.B. schonmal aus zwei oder drei Stäben und einem Aktor bestehen.
Und so geht es dann weiter, wobei sich teilweise sehr interessante Formen ergeben können.

Aber nicht nur die Körperform, sondern auch das Gehirn (ein NN) entwickelt sich weiter.
(je weiter die "Stäbchenwesen" entwickelt sind, desto mehr Neuronen hat das Hirn)


Das Konzept der genetischen Algorithmen wird dabei verwendet um die Körperform und die Größe des Gehirns zu bestimmen.
Es werden n Individuen erzeugt, getestet und bewertet, anschliessend werden die besten gekreuzt und bilden die nächste Generation.


Ist wirklich nett anzuschauen wie diese Stäbchenwesen auf dem Boden entlang kriechen,
und dabei von Generation zu Generation besser werden.

Trabukh
05.05.2005, 17:59
War es dies hier: http://www.io.com/~spofford/ ?

Gruß, Trabukh

Felix G
05.05.2005, 18:05
nene, der den ich mein war in 3D

Felix G
05.05.2005, 20:09
Hab ihn wieder gefunden: The Golem Project (http://www.demo.cs.brandeis.edu/golem/)
(-> Download -> Golem 2.45)


Schauts euch mal an, ist wirklich interessant

zefram
05.05.2005, 22:11
Bis jetzt haben alle hier beschriebenen ansätze eines gemeinsam, wir programmieren eine KI oder ein NN und schauen was es kann.
Wer macht denn sowas? Das wäre wie "ich schreibe ein Programm und schaue nach, was es kann." Diese Aussage macht für mich wenig Sinn.

Neuronale Netze und alle anderen KI-Ansätze sind keine Hexerei und keine Multifunktionstools mit denen ich alle Probleme lösen kann, im Gegenteil.
Die Netztopologie muß genau an das Problem angepasst sein. Das Netz muß trtainiert werden. Am Ende steht eine Struktur, die genau die definierte Aufgabe lösen kann, aber nicht mehr.
Wenn ich mein Problem und dessen Lösung mathematisch exakt oder hinreichend genähert beschreiben kann, brauche ich kein NN oder genetische Algorithmen oder sonstwas. Das kann mir als Programmierer zwar Spaß machen, effizient ist es aber nicht.
Immer dann, wenn die Überführung eines Problemes in ein mathematisches Modell zu schwierig oder zu unflexibel ist, kann ich über einen KI-Ansatz nachdenken, vorher macht es einfach keinen Sinn.

Genauso sinnlos finde ich den ständigen Vergleich von NN mit dem menschlichen Gehirn. Es ist ja nun nicht so, daß man ein Gehirn züchtet, irgendwo hinlegt und dann ist es von selbst intelligent (bloß weil es ein Gehirn ist und Gehirne sonst auch immer intelligent sind). Abgesehen von der geschilderten mangelhaften Umsetzbarkeit auf heutigen Computern gibt es viel grundsätzlichere Probleme. In jedem Gehirn stecken einige Millionen Jahre Evolution sowie die individuelle Entwicklung vom Fötus bis zum (mehr oder weniger) ausgewachsenem Menschen (dazu gehören auch die verschiedenen sensorischen Reize). Man kann nicht erwarten, auch nur ansatzweise irgendwas vergleichbar komplexes zu erreichen in dem man die bloße Verschaltungsstruktur (NN) schafft und sonst nix weiter tut. Einer Maschine "das Denken" beibringen gleich garnicht.

Ich möchte hier mal Derek Partridge zitieren, der das Problem sehr treffend beschreibt (zwar angewendet auf die Bildverarbeitung, aber trotzdem zutreffend):
"Imagine you've been asleep for a long time, a very long time. I'm not talking abtout the average Sunday-morning lay in; the length of time that I'm asking you to consider is something more like a million years. Now, that's a long sleep. ... Now, imagine further thate you're just coming round to consciousness after this long snooze. The world that you used to inhabit has long since vanished; you are surfacing in a totally alien environment. Nothing looks at all familiar. There is nothing you can relate to: no obvious people, no cosy couch, no chairs, no recognizable room. At that moment, just as you are about to scream and conk out again, an array of 1000x1000 black and white squares floods your visual system, and you are asked what you can recognize in the image."

FJK
03.12.2005, 10:38
hallo

ich habe damal eine dumme frage
ich dachte immer das neuronale netzwerk physikalisch gebaut sind und nicht programmiert sind, als das die die hardware sind...
stimmt das nicht
was genau ist ein neuronales netzwerk?

hat data nicht auch so eins?

zefram
03.12.2005, 11:19
Lesestoff:

http://de.wikipedia.org/wiki/K%C3%BCnstliches_neuronales_Netz
http://www.neuronalesnetz.de
http://www.grundstudium.info/neuro/

skoopy
08.05.2006, 14:24
Hallo Leute

Auch ich bin frisch dabei. Es geht darum ein NN aufzubauen, aber ich weiss gar nicht, worauf es dabai ankommt. was zu beachten ist. Theorie ist keine Frage, ahbe sogar meine Pruefung in NN gemacht, aber praktisch ein NN aufzubauen, da weiss ich gar nicht, wo ich anfangen soll.

Zunächst habe ich meine Eingangsparameter für die bestehende Problematik bestimmt. und das sind nicht gerade wenige. Ich weiss auch, was ich als Ausgang benötige, aber ich weiss nicht worauf ich achten muss, wenn ich das NN aufbauen moechte. Wieviele Layer ich benoetige, welche Funktion (Akticierungsfunktion) fuer welches Neuron, wovon das abhängig ist?!

Zunächst habe ich mir gedacht mit dem Simulator anzufangen, bevor ich implementierungsaufwand in die Aufgabe stecke. Somit kommt halt die Frage auf, Wieviele Neronen benötige ich, wieviele hidden Layer sind noetig, wievile Neuronen in einem Layer gebraucht werden, welche Aktivierungsfunktionen muessen oder sollten eingesetzt werden.

Kann mir jemand sagen, wie ich vorgehen sollte oder könnte?? Gibt es Literaturen oder Internet siden, die einen diebezueglich aufklaeren??

habe ebenso versucht denn SNNS unter WIn XP zu installieren, doch das hat auch nicht geklappt. Gibt es Installationshinweise zu SNNS oder wuerdet ihr mir einen anderen Simulator empfehlen.

Bei dieser Aufgabe handelt es sich um ein Projekt, deshalb sollte der Simulator auch stabil laufen.

Waere euch sehr dankbar, wenn ihr mir etwas weiterhelfen könntet, denn bislang hatte ich nichts mit NN/ KI zu tun gehabt, obwohl es mich schon immer interessiert hat.

Grüsse Skoopy

ogni42
08.05.2006, 15:03
Zuerst solltest Du Dir mal die Frage stellen, welches Problem gelöst werden soll. Je nach Problemstellung (Regelung, Mustererkennung, Klassifikation, Clusterung) kommen verschiedenen Typen von Netzen in Frage.

Die Programmierung ist nicht allzu schwer, da findest Du jede Menge Sourcecode im Netz. U.A in der ltilib (gibts auf sourceforge).

kie
08.05.2006, 15:50
Ein Feld der KI wurde hier noch nicht angesprochen. (Aufjedenfall habe ich es beim diagonallesen dieses Threads nicht gesehen) Die Wegfindung.

Ich würde nie ein NN zum Suchen auf einem endlichen/unendlichen (un-)gerichteten Graphen benutzen. Da gibt es bessere Algorithmen, die Teils in KI Büchern, Teils in Büchern für Algorithmen zu finden sind.

Stichworte sind da wohl: Greedy, Dijkstra und A* (sprich A-Stern oder engl. A-Star).

ogni42
08.05.2006, 16:06
Stimmt. Erwähnenswert ist sicher, dass (derzeit) für manche Probleme kNNs nicht gut funktionieren.

skoopy
09.05.2006, 10:19
Hallo allerseits

erst einmal Merci an ogni42 für deine Antwort. Und zwar handelt es sich hierbei eher um eine Reglung.

Das ganze soll im Bereich der Werkstofftechnik laufen. Man kann sich vorstellen ich habe ein Material X mit einer beliebigen chemischen Zusammensetzung. Dieses Material soll angelassen werden, um eine bestimmte Festigkeit zu erreichen. Aufgrund des produktionstechnischen Vorlebens des Materials können trotz identischer chem. Zusammensetzung unterschiedliche Festigkeiten entstehen. Jetzt geht es darum, die Anlasstemperatur zu bestimmen.

Ich hoffe ich konnte euch mein Problem etwas näher bringen und hoffe auch, dass ein paar hinweise und Ideen von euch bekomme. Ich brauch unbedingt unterstützung, weil ich ganz neu auf diesem Gebiet bin

Danke vorab von
skoopy

skoopy
10.05.2006, 10:36
Hallo leute,

wie ich sehe, kann mir wohl keiner weiterhelfen, daher möchte ich euch um Infomaterialien bitten. Welche Bücher oder Internetseiten könnten mir beim Aufbau eines NN weiterhelfen?

gruesse
skoopy

11.05.2006, 01:27
Hallo skoopy,

ich hatte einfach mal einen Simulator runtergeladen und rumprobiert: Je nach Menge der Eingangsneuronen und Komplexität der Aufgabe sollte die Größe des Netzes angepasst werden, d.h. für eine simple AND-Lösung reichen direkte Verlinkungen der Eingangs-/Ausgangneuronen. Wenn das Netz zu groß ist, lernt es Deine angelegten Muster auswendig und hat keine Ahnung, wie es bei neuen Mustern reagieren soll.
Abhängig davon, wie viele verschiedene Muster Du zum Trainieren anlegst und wie viele Ein-/Ausgangswerte Du hast, kannst Du mit ein wenig rumprobieren herausbekommen, wie viele Neuronen in wie vielen Schichten Sinn machen. Die Anzahl der Links wird dann irgendwann auch mal eine Frage Deiner Hardware...
Mit SNNS bin ich nicht klargekommen, ich hab mit Membrain rumprobiert, ich glaub, das gibts hier unter Downloads.
Hoffe, ich konnte Dir ein klein bischen weiterhelfen.
Gruß,
Gutzufuss2005

ogni42
12.05.2006, 10:46
Bücher:
Zell: Simulation Neuronaler Netze
Haykin: Neural Networks

Es gibt noch etliche Andere. Auch das Buch von PaulRoja ist sehr gut. Das Buch von Zell ist schon älteren Datums aber immer noch sehr empfehelenswert für den Einstieg. Gute Mathekenntnisse muss man bei allen mitbringen.

Es gibt einige C/C++ Bibliotheken, in denen schon kNNs implementiert sind. U.a. in der ltilib (gibts auf sourceforge).

Friggle
12.05.2006, 13:10
Hallo skoopy,

dein Problem läßt sich wahrscheinlich am besten mit einem Feed-Forward Netz lösen. Ich würde mit einer versteckten (Hidden) Schicht anfangen.
Deine Eingangsparameter sollten auf den Bereich 0..1 bzw. -1..1 normiert sein, je nachdem, ob sie nur positiv oder auch negativ sein können.
Im ersteren Fall empfehle ich eine logistische Übertragungsfunktion, im zweiten Fall tangens hyperbolicus.

Schwieriger ist da schon die Kodierung des Netz-Ausgangs, ich weiß nicht, ob da ein Neuron reicht (für die Anlasstemperatur).

Hast Du schon Datensätze zum Trainieren? Kannst sie mir gerne mal schicken, dann kann ich Dir vielleicht etwas Support damit geben (ich bin der Autor des neuronale Netze Simulators MemBrain)
http://www.membrain-nn.de

Grüße,
Friggle
(Thomas Jetter)

skoopy
15.05.2006, 10:56
Hallo Leute

erst einmal danke fuer die Tipps. Bislang habe ich es geschafft den javaNNS zum laufen zu bringen, das war easy. Was auf jedenfall nicht eintretten soll ist was Gast geschrieben hat: "Wenn das Netz zu groß ist, lernt es Deine angelegten Muster auswendig und hat keine Ahnung, wie es bei neuen Mustern reagieren soll." Das NN soll mit nicht bekanntet Datensätzen was anfangen können. Also nichts auswendig gelerntes.

Friggle ich werde mal versuchen auch deinen Simulator zum laufen zu bringen.

So wie ich mir das ganze erarbeitet habe, habe ich momentan 24 Eingangsparameter, wobei man diese zu 7Grruppen gruppieren kann. Für den Ausgang benötige ich 2 Ausgangsparameter (Anlasstemperatur T und Anlasszeit t). Beide müssen bestimmt werden.

Trainigsdaten habe ich auch. Da mir ne ganze Datenbank zur Verfügung steht, muss ich noch die entsprechenden Daten zusammentragen. Dann kann ich sie dir zukommenlassen.

Also habe ich euch richtig verstanden: Der Aufbau eines NN entsteht durch probieren?? stehen hier keine Gesetzmaessigkeiten hinter?

gruss skoopy

ogni42
15.05.2006, 11:20
Es gibt Netztypen, die ihre Topologie selbständig finden. S. Zell, da ist das erklärt.

Wenn Du ein FF-Netz mit einem Backprop (oder verwandten) Training verwenden willst, kannst Du mit der Größe der verdeckten Schicht experimentieren. Da Du 7 Gruppen hast, könntest Du mit 7 oder 14 Neuronen in der verdeckten Schicht beginnen.

Sollten die Parameter zwischen den Gruppen voneinander unabhängig sein, ist es vielleicht besser mehrere einzelne Netze zu Trainieren (also max 7) und dann deren Ausgabe auf ein weiteres Netz zu geben, dass die Ausgaben generiert. Es könnte sein, dass die Generalisierungsfähigkeit dadurch verbessert wird. Auf jeden Fall sinkt die zum Training erforderliche Rechenleistung, da die Gewichtsmatrizen erheblich kleiner werden.

skoopy
16.05.2006, 13:14
Hallo Leute

Kann mir jemand sagen, wovon die Aktivierungsfunktionen abhängig sind?? Wie erkenne ich welche Aktivierungsfunktion eingesetzt werden soll??

Eine Weitere Frage: Ich habe zwar 4 Ausgänge (TA1, TA2, tA1, tA2) dabei sind TA2 und tA2 von TA1 und tA1 abhängig. Kann ich TA1und tA1 jeweils mit TA2 und tA2 verbinden, obwohl beide als Ausgaenge gelten?

gruss
skoopy

ogni42
17.05.2006, 08:34
Wenn die Abhängigkeiten bekannt sind, ist es einfacher, die im Nachhinein zu berechnen. Damit vereinfachen sich die Netztopologie und das Training, der Berechnungsaufwand sinkt.

McCrown
20.07.2007, 11:17
Hallo alle zusammen, zur Eingagsfrage bzgl. echter KI:

Bereits vor einigen Jahren gab es mal einen Bericht über ein Projekt namens Cyc (www.cyc.com), welches als das letzte vielversprechende Projekt auf dem Gebiet der künstlichen Intelligenz (KI) bezeichnet wurde.

Cyc kann man m.E. als wirklich echte KI bezeichnen!

KIDz
25.05.2012, 02:52
@McCrown

jop und es gibt eine open soure version... opencyc http://sourceforge.net/projects/opencyc/files/OpenCyc%202.0/opencyc-2.0-win64.zip/download