Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

1

13.07.2014, 23:48

Künstliche Intelligenz - KNN theorie

Ich hab mich mal wieder an ein KI-Simulationsprojekt gesetzt. Schon mal vorweg, ich habe bereits lange gegoogled und die SuFu benutzt ;) .

Ich schreibe hier mal meine aktuellen Überlegungen und Ansätze auf, und hätte gerne Feedback bzw. Vorschläge, wie man es besser lösen könnte.

Ich möchte ein "Multi Agent System" mit autonomen, lernfähigen Agenten, die durch ein KNN, Sinnesorgane und Motoren repräsentiert werden, erstellen.
Die Agenten würden dann per Natural Selektion überleben (oder auch nicht) und mit anderen Agenten Nachfahren, die leicht veränderte KNNs haben, zeugen.

Ich habe mir überlegt, die Neuronen räumlich zu repräsentieren (X-,Y-Koordinate), um Verbindungen zu weiter entfernt gelegenen Neuronen von Anfang an schwächer zu gewichten.
Davon erwarte ich mir einen höheren Grad an Realismus.
Haltet ihr diesen Ansatz für sinnvoll oder eher nur overkill?

Auch wollte ich ein lernfähiges KNN haben, also eines, was während der Simulation Erfahrungen speichert und auch sein Verhalten seinen Erfahrungen anpasst. Für das Gedächtnis habe ich einfach jedes Neuron mit jedem verbunden. Ich werde wahrscheinlich eine große Hidden Layer machen, damit genug Gedächtnis-speicher da ist.
Kennt jemand hierzu eine gute Quelle? (Darf ruhig auch auf Englisch sein :thinking: ).
Zusätzlich hatte ich mir gedacht, dass man neben stark / häufig benutzten Neuronen neue ausbildet (Ich weis selbst nicht so genau, was es bringt, es wird jedoch oft im Zusammenhang mit lernfähigen KNNs erwähnt).
Haltet ihr das für sinnvoll?

Ich würde die Agenten 4x4 Felder oder größer machen, und dann aus den zwei "Ecken" des Agenten (vorne Links/Rechts) jeweils eine Projektion der Welt als Sicht machen. (Also wie ein Ray-Tracing, das erste gefundene Hindernis wird dann in einem Bildpunkt des Auges gespeichert.) Dadurch entsteht dann eine Steroskopie, welche die Agenten dann kombinieren müssten, um Räumlich zu sehen. Haltet ihr diese Idee für realisierbar bzw. wie groß müsste der Hidden layer im gegensatz zum Optik-Layer sein, damit das KNN das dekodieren (Zusammenrechnen) kann? Wäre ein rundumblick (2*180°) realisierbar?

Zu guter Letzt die Motorik:
Ich wollte den Agenten einen Rechts-Links-Drehmotor und einen Vorwärts-/Rückwärtsgang geben. Würdet ihr noch mehr/weniger Motoren hinzufügen? Vielleicht ein Kommunikationsorgan? Wie bei AntMe Duftnoten?

MfG,
RmbRT
P.S. Es ist spät, ich habe Rechtschreib- und Logikfehlern so gut es mir möglich war den gar ausgemacht.
"Dumm ist, wer dummes tut."

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

2

15.07.2014, 19:23

Ich hab mir überlegt, Neuronale Plastizität zu simulieren. Ich habe mir überlegt, das Weight-Attribut der Synapse als ein Cap für die Aktivierung zu nehmen, ist die Aktivierung an der Grenze, wächst die Synapse, indem der Weight (also Max-Wert) der Übertragung erhöht wird.

C#-Quelltext

1
2
3
4
float Value() // In der Synapsenklasse
{
    return Math.Min(weight, source.value);
}

Was haltet ihr davon? Sonst werden ja weight und input multipliziert, aber mir erscheint es logischer, das mit einer Min-Funktion zu machen.

MfG,
RmbRT
"Dumm ist, wer dummes tut."

Otomo

Frischling

Beiträge: 13

Beruf: Student

  • Private Nachricht senden

3

18.08.2014, 13:25

Hallo RmbRt,

Ich verstehe nicht ganz, wozu du die Natürliche Selektion einbauen möchtest. Ein Lernmechanismus würde denke ich für deine Zwecke ausreichen. Die Frage ist jetzt nur erstmal, ob dieses Lernen Supervised, Unsupervised oder Reinforcement Learning sein soll.

Auch denke ich, dass für den Anfang statt der "Kameras" Ultraschallsensoren, die den Abstand messen genug sind. Wenn du mit echten Bilddaten arbeiten möchtest, würde ich dir eher Arbeiten mit einer Depthmap empfehlen, da man mit diesen Daten leichter umgehen kann.

Was genau sollen die Agenten denn leisten/lernen?

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

4

20.08.2014, 21:59

Zu erst mal: Super, dass es Leute gibt, die sich damit beschäftigen!!! :thumbsup: Ich finde das selber sehr interessant und mein Vater treibt mich an auch mal sowas zu programmieren, aber man hat halt viel anderes Zeug zu Proggen... :D

Es gibt einen großen Thread zu dem Thema, da hat Horus das auch mal versucht - und auch ganz interessant gelöst!NeurEvo

Außerdem kenne ich ein wie ich finde gutes Buch darüber: Neuronal Networks (ich habe es selber nicht, aber mal mehrere Seiten darin gelesen)

Ich habe mir auch mal Gedanken gemacht, wie so ein Neuron (und dann ein ganzes Netzwerk) aussehen könnte, nur bei dem Problem des Lernens kam ich nicht mehr weiter. Die einzige Möglichkeit war Selektion durch Tot und Paarung, aber das ist ja beim Mensch nicht ganz so... vielleicht hast du da ein paar Quellen, wo man da was findet - deine Ideen zielen ja auch auf dieses Problem ab...
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

5

21.08.2014, 00:25

Sorry bin lange nicht mehr auf spieleprogrammierer gewesen.
Ich habe mich schon totgesucht nach algorithmen, die das lernverhalten des Gehirns am natürlichsten widerspiegeln.
Leider habe ich nicht viel gefunden. Ich habe mir überlegt, dass man dynamisch während der Simulation die Synapsen verstärken könnte, wenn sie oft getriggert werden, und abschwächen, wenn nicht, aber dafür bräuchte man dann ja viel speicher um die letzten x ticks zu speichern.

MfG,
RmbRT
"Dumm ist, wer dummes tut."

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

6

21.08.2014, 00:58

Wieso bräuchte man viel Speicher?
Man nimmt einfache eine Aktivitätsvariable die kontinuierlich absinkt und durch Aktionen wieder erhöht wird.

Aber ich habe meine Zweifel, dass das überhaupt zu einem Lerneffekt führt. Schließlich ist häufige Aktivität nicht gleich ein Zeichen für eine positive Funktion. Synapsen die dem Verhalten schaden würden ebenso verstärkt werden.

Ich habe bis jetzt nur funktionierende neuronale Netze gesehen, die evolutionär Arbeiten. Also immer die Parameter leicht verändern und wenn sich das positiv ausgewirkt hat beibehalten sonst die Änderungen rückgänig machen.

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

7

21.08.2014, 11:09

Deinen ansatz hatte ich auch schon benutzt (fischsimulation), aber es hat bei mir nichts genützt. (Alle Fische sind rechtsherum im Kreis geschwommen, egal wie ich die synapsen initialisiert habe).

MfG,
RmbRT
"Dumm ist, wer dummes tut."

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

8

21.08.2014, 11:30

Das Problem an der Sache ist: Was ist Positiv und was ist Negativ? Wie mache ich einer Synapse oder einem ganzen Netzwerk klar, dass das jetzt gut war oder nicht. Beim Mensch gibts da Schmerzen (die Nervenbahnen dazu sind in der DNS vorprogrammiert) und bestimmte Hormone, aber wie das funktioniert weiß man auch nicht. Außerdem müsste man es schaffen, dass die Neuronen autonom reagieren und nicht von einer übergeordneten Einheit kontrolliert werden (dezentrale Verwaltung). Dazu müssten die Neuronen auch selber wissen, ob sie sich mal ändern solten oder ob das jetzt gut war - da kommt man dann aber in Bereiche die man noch nicht gelöst bekommen hat.

Ich hoffe das war etwas verständlich formuliert! :D
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

9

21.08.2014, 13:06

Das Problem bei der Fischsimulation sieht mir ehrlich gesagt auch nach einem anderen aus.
Entweder stimmt etwas mit der Steuerung wie sie schwimmen nicht, du hast im nicht genug Zeit zum lernen gegeben oder immer rechts schwimmen ist tatsächlich besser.

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

10

22.08.2014, 11:08

@CeDoMain: Genau das Problem habe ich auch. Da ich auch kein supervised learning mache, scheidet Backpropagation zum lernen aus, momentan habe ich alle Synapsen random [-1..1] initialisiert und nach jeder "Generation" werden die letzten 20 miteinander gekreuzt, also mit zufallsfaktor von 0-1 aufaddiert und dann den durchschnitt genommen. Hinzu kommen noch weitere komplett zufällige KNNs. Das Problem bei dieser methode ist, dass selbst nach 30+ generationen kein funktionierendes KNN generiert wurde.

@Spiele Programmierer: Ich habe auch schon überall geschaut, aber keinen Fehler gefunden.

MfG,
RmbRT
"Dumm ist, wer dummes tut."

Werbeanzeige