"Lernende" KI

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Ich hab ein simples Beispiel im Sinn worauf man eine basis KI aufbauen könnte, momentan schreibe ich ein rundenbasiertes Strategiespiel was extrem simpel gehalten ist(naja ich versuchs xD)

      es wird insgesamt zirka:

      PHP-Quellcode

      1. 36+
      Zugmöglichkeiten geben.

      ich glaub ende nächster woche ist das spiel soweit einsatzbereit für KI Tests :D

      sollte Selbstverteidigung genauso wichtig wie die Bewegung sein.
      naja wenn z.b. ein Aufklärer auf einen feindlichen Trupp stößt(wobei der feind den Aufklärer nicht bemekt hat) ist es wohl besser eine feindliche Übermacht nicht in aussichtslose Kämpfe zu involvieren..

      außerdem können ja mehrere KI "Persönlickeiten" existieren.
    • sollte Selbstverteidigung genauso wichtig wie die Bewegung sein.
      naja wenn z.b. ein Aufklärer auf einen feindlichen Trupp stößt(wobei der feind den Aufklärer nicht bemekt hat) ist es wohl besser eine feindliche Übermacht nicht in aussichtslose Kämpfe zu involvieren..

      außerdem können ja mehrere KI "Persönlickeiten" existieren.[/quote]
      Ich meinte jetzt im Falle eines gegnerischen Angriffs - der Bot sollte nicht stehen bleiben, sondern je nach dem ob er Chancen hat oder der Feind mehr Einheiten hat sich zurückziehen oder ihn in Bedrängnis bringen. Selbstverteidigung sollte, außer wenn der Tot sowieso klar ist, _immer_ Vorrang haben.

      Persönlichkeit: Ja das ist ein Part der (glaube ich) noch nicht angesprochen wurde. Ein Bot sollte auch ähnlich wie ein Mensch spielen, und Menschen spielen ja auch nicht gleich. Manche sind aggressiv, andere spielen lieber in Gruppen oder allein, unterstützen, sind gerne ganz weit vorne oder auch hinten, haben je nach dem dann auch Lieblingswaffen, ...
    • Huhu nach langer Zeit erscheine ich mal ausm nix auch mal wieder hier ;)

      Also beim Thema Lernende KI konnte ich nicht wiederstehen ich bin ein Riesen Fan von Artifical Life/Intelligence und habe mich sehr eingehend damit beschäftigt.

      Eure Ansätze waren ja teilweise schon ganz gut, allerdings scheint ihr das Problem einer Lernenden KI aus einer zu weiten Distanz an zu gehen.
      Beim Forschungsgebiet der Künstlichen Intelligenz zb. wird umgekehrt Programmiert, nuja wie soll ich das erklären... nochmalerweise beginnt man ja damit ein Problem als Ganzes zu Analysieren und dann eine Lösung zu Programmieren, dass funktioniert aber nicht bei AI, man erstellt dort quasi die kleinst Möglich Einheit der Problemstellung (Neuron komme ich später zu) und erst anschliessend setzt man es zu etwas Funktionierenden zusammen, quasi eine von unten nach Oben Programmierung.


      Die Ansätze hier waren ja bisher recht gut haben aber allesamt nicht wirklich etwas mit einem Lernenden Mechanismus zu tun.
      Die beste lösung für eine Lernede KI ist immernoch ein sogenanntes Neuronales Netzwerk, für alle die nicht wissen was das ist, das ist dieses Fleischige Rosa Ding dort in eurem Kopf ;)

      Um es mal genauer zu erläutern:

      Ein Künstliches Neuronales Netzwerk versucht Biologische Neuronensysteme nach zu ahmen, es ist dabei In der Lage mithilfe von Lern-Algorithmen zu Lernen dies geschieht in etwas so:

      1) Ein reiz wird von einem Neuron Wahrgenommen.
      2)Das Neuron leitet seinen Reiz mithilfe von Synapsen an andere Neuronen weiter(dabei spielt die Gewichtung der Synapsen eine Rolle)
      3)Die anderen Neuronen erhalten den Reiz, wurde eine Reiszschwelle überschritten fangen diese Ihrerseits wieder an zu Feuern an Weitere Neuronen.
      4) Der Reiz ereicht die Ausgabeneuronen je nach Gewichtung und Reizstärke die ankommt kann nun bestimmt werden welche Aktion durchgeführt werden sollen

      5)Jetz kommt der Lern Algorihtmus ins Spiel, er überprüft die Eingabe und die Ausgabe und wendet anschliesend ein Belohnugs/Bestrafungsprinzip an.
      Das heisst genauer, eher wir unser Neuronales Netzwerk einsetzen müssen wir es Trainieren, wir Geben ihm einen Bestimmten Reiz auf dem es Eine bestimmte Reaktion ausgeben soll.
      War die Ausgabe des NN das was wir uns von ihm erhofft haben Belohnen wir es, der Lern-Ar. Verstärkt die Synapsen die Aktiv waren, so wird bei einem Wiederauftreten des Reizes abhängig von anderen Aktiven Neuronen mehr oder weniger die Gewünschte Aktion ausgeführt.
      Hat es nicht das Gemacht was es sollte wird die Gewichtung der Synapsen geschwächt oder sie werden gar ganz "gekappt".

      Dieser Trainigsprozess kan natürlich eine weile Dauern und recht schwer sein und ist keinesfalls Vorprogrammierbar(nur auf sehr Primitiver Ebene jedenfalls).

      Umsomehr Reize ein NN wahrnehmen kann, umsomehr Neuronen es hat und umsomehr Output es Liefern kann umso "Klüger" wird es, es brauch aber schon eine ganze menge Neuronen um auch nur anhähernd auf das Niveaou einer Ratte zu kommen... (Wer so einen Super Computer hat kanns ja mal Probieren ^^ immerhin steigt mit jedem Neuron ja auch der Speicher und Rechenbedarf an und das Multipliziert sich immer mehr so das schon ein Neuron zuviel dan ganz schön Performance schluckt, aba mit kleinern NNs kan man auch ganz Interessante Resultate erzielen)


      Ich überlege mir seit längeren mir eine DLL für Neuronale Netzwerke in C# zu schreiben, hab aber ka ob eine in C# geschriebene dll auch im GM funktioniert.


      Edit: Hab ich glatt den halben Post vergessen^^

      Zu euren bisherigen überlegungen wegen der Persönlichkeit Emotionen etc.

      Als allererstes den dafür würde euch jeder Neuro-Wissenschaftler köpfen ;) Das Gehirn funktioniert NICHT wie ein Computer schon garnicht ;) ich hab da ein schönes Zitat "Unser Gehirn gleicht einem hektischen China-Restaurant: Es ist überfüllt und chaotisch, und die Leute rennen ohne jeden erkenbaren Sinn und Zweck hin und her, aber auf wundersame Weise werden am Ende alle Bestellungen erledigt".

      1.) Die Gefühle, absolut unerlässlich für das Menschliche Lernen... Gefühle sind nicht der gegenpart zu "Berechnend" ohne gefühle würde ein Mensch garnicht Lernen, erst Gefühle wie Angst etc verstärken das Lernen in solcher hinsicht das wir nicht 10 mal in ein Messer rennen und immernochnicht kapiert haben das uns das umbrungt (wen mans den 10mal schafft ;)), ein Mensch ohne Gefühle (Die ja an sich nichtsweiter als Botenstoffe sind) wäre dumm wie ein Stück Brot. Ein Künstliches NN kan auch ohne Gefühle Lernen, mit würde es aber eindeutug Menschlicher wirken.

      2.)ich denke eine KI setzt Persöhnlichkeit vorraus ... (ein schwieriges thema)
      Persönlichkeit entwickelt sich durch das Gelernte und die damit zusammenhängenden Emotionalen Erinnerungen keine einfache sache sowas zu Progen, Ein NN das gar Erinnerung und Emotion besitzt würde von ganz alleine eine Persönlichkeit aufbauen.

      3.)WENN DANN SONNST
      Sry aber das ist zwar eine "KI" im sinne von einer Funktionierenden Spiel KI aber wirklich "Lernen" könnte eine solche KI nicht, den sie würde immer nach dem selben Schema vorgehen auch wen sie X Parameter zu verfügung hat an der sie entscheidet.

      4.)Nochmal: Es soll hier um die Simulation eines Menschen vor dem Computer
      gehen, und nicht, wie sich Menschen im wirklichen Leben verhalten
      würden. Und während eines Computerspiels blendet man seine Gefühle
      i.d.R. aus

      Siehe "1", würdest du das tazächlich tun wärst du ausser stande auch nur den Bildschirm wahr zu nehmen, Gefühle behindern nicht unsern Denkprozess sie leiten ihn egal wo wie und wann (und nochmal Gefühle sind Botenstoffe die Zustände bestimmen genauso wie eine Variabel in einem Programm einen zustand wiederspiegeln kann)

      schließlich soll sie dazulernen, um besser zu werden, und sich nicht in
      eine virtuelle Aggressionsspirale reinsteigern
      (getötet->wütend->schlechtere Spielweise->leichter
      getötet->noch wütender->noch schlechtere Spielweise->u.s.w.
      u.s.f.).

      Diese Spirale Existiert sogar Tatsächlich^^ so dienen Emotionen den Lernprozess, aber man sagt ja "zuviel des guten".
      Alle Rechtschreibfehler sind natürlich GEWOLLT und können vom Finder behalten werden

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Kev-men ()

    • Zu der Schrotflinte ich finde man musste das ist % und varb. setzen

      so in etwa

      Beispiel

      Pistole 50%

      M4 50%

      Schrot 50%

      sollte er treffen dann geht die % zahl hoch und trifft er nicht nimmt die^^ und je hoher % ist desto lieber nimmt er die waffe^^

      Außerdem musste man dann auch noch wen es Human sein soll auch das Adrenalin ein bauen und Psyche den je Niedriger die Psyche desto weniger trifft er^^
      Sorry bin Legastheniker :cursing:

    • @ Kev-man:
      Du hast da eine relativ interessante Theorie, ich habe sogar schon einaml eine Neuronen-Extension auf der GMC gefunden, habe zu der Zeit aber überhaupt nix damit anfangen können, geschweige denn verstanden, was das sein soll. Ich werde mich vielleicht nochmal damit auseinandersetzen.

      @NickNick:
      Fakt ist aber, dass ja jede Waffe ihre Vor- und Nachteile hat. So kann man nicht einfach die Zahlen erhöhen/herabsetzen, wenn der Bot mit der Schrot aus 200 Meter entfernung nicht trifft. Da wären dann wieder zig andere Parameter nötig, um das so zu realisieren, und da ist es wohl gleich besser, dem Bot einzuprogrammieren, in welchen Situationen er welche Waffe wählen soll.

      © 2008 by Teamgrill Productions
    • Wenn ich das richtig verstanden habe, heißt das, dass man verschiede Neuronen proggen müsste die auf zb. hspeed,vspeed, collision line in Blickrichtung, vielleicht Schritte (die hört man in einer bestimmten entfernung, je nach speed) bzw. schüsse,treffer, schüsse, gegner oder verbündete die ihre waffen wechseln, abschüsse, bewegung der gegner und verbündeten,...
      Und diese reize (dem input) weiter verarbeiten. Und wenn man dan mal das Grundgerüst hat, könnte man solche lernenden Typen gegen Menschen spielen lassen. Dann müssten die die wichtigkeit der Reize auswerten und selbst ihre Reaktion auf gewisse Reize ändern und erlernen. Aber erstmal bräuchte man eben das Grundgerüst.
      Könnte man sogar noch durch eine evolutionäre Strategie verfeinern (stand in einer PM). Wird heute schon angewendet um Bauteile zu etwickeln oder auch Programme. Im Programm werden immer wieder neue Zufalls Teile bzw Programme erstellt. Die die in der Simulation was können werden weiterbehalten die anderen vernichtet (Selektion), dann verändern sich Programme immer wieder (Mutation) und müssen sich auch auf andere Bedingungen einstellen können (Isolation)....ob und wie man das am besten anpackt, hab ich keine Ahnung. Wär doch lutstig wenn auf einen vituellen Schlachtfeld (jeder Soldat hat zb 10 Leben) herausgefunden wird welche KI am besten ist, diese in die nächst Runde beibehalten wird (vielleicht ein bisschen verändert) und die schlechten wieder herausgeschmissen werden.
      PULSE

      Zweispieler [||||||||||]
      Einspieler [||||||||||]

      [Die Entgrater ist auf Eis gelegt]
    • Klingt richtig interessant hier!

      Wir Menschen haben ja Reflexe. Diese müsste man auch einbauen. Also bei jedem Input wird der Wert, der importiert werden muss, gemessen und falls dieser zu hoch ist, wird ein Output gemacht, das sich von der Quelle des Inputs zum Beispiel entfernt oder es zerstört. Gleichzeitig wird die Ursache des Reflexes gespeichert, damit er den Fehler nicht wiederholt.

      Trompadon schrieb:

      Wär doch lutstig wenn auf einen vituellen Schlachtfeld (jeder Soldat hat zb 10 Leben) herausgefunden wird welche KI am besten ist, diese in die nächst Runde beibehalten wird (vielleicht ein bisschen verändert) und die schlechten wieder herausgeschmissen werden.
      Das wird aber auch ganz schön schwer, ein Programm zu schreiben, dass selber KI's schreibt, testet und verändert...


      MfG flogy
    • Also ich denke, mit der Neuronen-Geschichte sind wir schon ziemlich nah dran. Das erinnert mich wieder an einige Filme, die wir in Bio übers Gehirn angeschaut haben. Die Reize werden so weit ich mich erinnern kann von der Hypophyse verwaltet und ggf. ans Lymbische System weitergeleitet, je nach dem, wie stark der Reiz ist.
      Das in ein Spiel zu übertragen ist zwar nicht gerade leicht, aber es ist machbar.
      Das würde dann sehr viele Parameter erfordern, auch wenn man sich auf die wichtigsten beschränken müsste, wir wissen alle, dass der GM (jetz mal davon ausgehend, dass es im GM gemacht wird) nicht der schnellste ist. ausserdem muss das ganze ja auch noch auf normalen "Nicht-Supercomputern" laufen. Trompadon sagte etwas von einem Grundgerüst gesagt, was in dieser Situation wohl wirklich angebracht wäre. Die Frage ist, wie man jetzt generell die Reize verwaltet, da wir ja eine lernende Ki wollen. Wenn wir jetzt aber fertige Reize definieren, ist die KI im grunde ja eingeschränkt. Das hieße, die KI müsste die Reize selbst erstellen, wobei man aber einen Filter einbauen müsste, dass sie nicht unbegrenzt Reize erstellt (Beispiel: Reiz 1 - Gegner 10 meter entfernt, Reiz 2 - Gegner 9 meter usw) d.h., dass die KI bestimmte Reize zusammenfasst (Gegner 10-5 m entfernt).
      Ausserdem wäre da noch die Frage, wie es bei meherern gleichzeitig eintretenden Reizen funktioniert. Werden sie zu einem einzelnen, neuen Reiz zusammengefasst, oder einzeln weitergletet und die Reaktionen dann kombiniert? (Natürlich nur in bestimmten situationen möglich)

      © 2008 by Teamgrill Productions
    • Also das mit dem Zusammenfassen verstehe ich nicht ganz. Ein Gegner kann ja nicht 10m und gleichzeitig 9m entfernt sein.

      Ich habe mir das jetzt etwa so vorgestellt, dass man verschiedene Sinne programmiert. Zum Beispiel kann man ja mal mit dem Fühlen beginnen. Berührt irgend ein Objekt unsere KI, muss die KI das merken - es gibt also einen Input, dass irgend ein Objekt unsere KI berührt. Auf diesen Input hin fragt die KI ab, wie schnell das andere Objekt denn auf uns zukommt und aus welcher Richtung (also auch wo es die KI berührt). Das sind dann alles gesammelte Informationen, die aber noch nichts bringen. Als nächstes wird aber zum Beispiel abgefragt, wieviele Leben unsere KI jetzt hat. Sind das weniger als vor der Kollision, verarbeitet die KI diese Daten:
      1. Was passierte, dass die Leben sanken? Es gab eine Kollision mit einem anderen Objekt
      2. Was war schuld, dass dieses andere Objekt uns schadete? Es war mit einer zu hohen Geschwindigkeit unterwegs und traf uns
      3. Geschwindigkeit und Flugrichtung des Gegnerischen Objekts speichern
      Wenn das nächste Mal ein Objekt mit derselben oder einer höheren Geschwindigkeit auf uns zufliegt, muss unsere KI einen Output machen, also ausweichen. Wenn es das nächste Mal aber von einem langsamer fliegenden Objekt getroffen wird, was wiederum schadet, wird das wieder gespeichert, dass auch langsamere Objekte ab Geschwindigkeit v schaden können.

      Natürlich muss die KI auch weitere Eigenschaften des anderen Objekts abfragen, denn es liegt ja nicht immer an der Geschwindigkeit, sondern auch an der Grösse, Masse usw.


      MfG flogy
    • Ich meinte, dass es nicht für jeden möglichen Input eine andere Reaktion gibt. Dass also bei meinem Beispiel die gleiche Reaktion hervorgerufen wird wenn der Abstand zum Gegner zw 5 und 10 metern liegt.
      Zu deinem Beispiel. Ist das nicht fast schon zu sehr Lernen? Ich meine, wenn ein Mensch ein Spiel spielt und da ein Großer Gegenstand mit hoher Geschwindigkeit auf einen zufliegt, wird er auch sofort versuchen auszuweichen und sich nicht erst treffen lassen um zu wissen, dass das nicht gut ist. Aber im Grunde hast du schon Recht.
      Sorgen macht mir, wie das geregelt wird, wenn mehrer Inputs zeitgleich einkommen die komplett gegenteilige Reaktionen auslösen. Wenn die beiden inputs auch noch gleich stark sind, was soll der Bot tun? Kombinieren? Zufall? Oder solche dinge verhindern (zwei gleich große zeitgleiche inputs)?

      © 2008 by Teamgrill Productions
    • Ja, weil der Mensch das schonmal gelernt hat, die KI nicht.

      Wenn mehrere Inputs kommen, werden die einfach nacheinander verarbeitet und am Schluss kommt erst der Output. Das Ganze läuft nach dem EVA-Prinzip: Eingabe - Verarbeitung - Ausgabe. Also erst alle Inputs pro Step, dann alle Verarbeitungen und Berechnungen und zum Schluss die Reaktionen darauf, also die Outputs.
      Ist also vor und über der KI eine Wand und von hinten kommt ein Schuss, sind das seine drei Inputs. Er verarbeitet zuerst, dass er dem Schuss ausweichen muss. Dann wird geprüft, ob er springen kann, was aber wegen der Mauer oben nicht möglich ist. Danach wird geprüft, ob er nach rechts oder links gehen kann und erst dann, wenn die obere Mauer vorbei ist, springen kann und weil das auch nicht möglich ist, duckt er sich (Output).


      MfG flogy
    • Das mit Grundgerüst mein ich so: Man bräuchte auf jeden Fall eine Basis (so wie einem Baby). Denn aus dem nichts kann sich keine Ki bilden. Natürlich ist das in der Evolution passiert...aber in Milliarden von Jahren. Die Ki braucht in jedem Fall ein Grundgerüst, in wie weit das geht (also ob er weiß wann er Schaden bekommt oder das er weiß das er kämpfen soll (lol))[--> gut diese zwei Sachen sollte er wahrscheinlich schon "hardcodiert" vorgekaut bekommen]...müsste man testen. Der "KI Bot" sollte ein gewisses Grundwissen haben, eine Anzahl von Reizen (schaffen von Neuen ist Sache der Evolution, und nicht einer KI), eine Anzahl von Outputs (Bewegung, Schießen,...), eine Physik die die Ki nicht ändern kann und einen beschränkten Speicher von Listen, Arrays, Maps, Tabellen,...
      PULSE

      Zweispieler [||||||||||]
      Einspieler [||||||||||]

      [Die Entgrater ist auf Eis gelegt]
    • Ich finde Ihr solltet Euch nochmal Gedanken darüber machen, was eine Simulation ist, was sie erfordert, was ihr Zweck ist, etc.. Denn Ihr geht hier ran, als würde es darum gehen einen mechanischen Menschen zu konstruieren, während der ganze Sinn doch einfach ist einen als menschlichen Spieler überzeugenden Bot zu machen, der im Rahmen der menschlichen Limitierungen die größte Effizienz rausholt. Das Thema Evolution ist hier etwa völlig fehl am Platze. Und auch die meisten Bereiche und Phasen in der Pädagogik muss man hier einfach überspringen. Wir wollen doch keinen Säugling, der mit ner Knarre in der Hand geboren wird und anfängt am Lauf zu nuggeln und sich zig mal das Hirn rausbläst (bevor er lernt, dass das "bäh" ist), sondern wir wollen einen fertigen Kämpfer, der seine Leistung steigert!
    • @Kev-man: In C# wäre es möglich eine DLL zu schreiben, nur muss der Anwender je nach version das .NET Framework < v3.5 installiert haben.

      Also, mal was zur Programmierung:
      Wie ihr schon gesagt habt, muss ein Grundgerüst und die Möglichkeit für Gut/Schlecht Impulse sowie eine Art Adrenalin vorhanden sein.
      Das Grundgerüst kann man machen, indem man einfach definiert, dass schon ein Paar "Erfahrungen" vorhanden sind, z.B. dass, wenn der Spieler nur noch ein paar Meter entfernt ist, das Adrenalin steigt, und somit, nur die wichtigsten Daten verarbeitet werden und die Gut/Schlecht Impulse erst einmal ausser Acht gelassen werden. Damit zum nächsten Punkt: Die zu verarbeiteten Daten müssen eine bestimmte Priorität haben, zum Beispiel ist das einer Kugel ausweichen wichtiger, als eine neue Waffe einzusammeln. Hat die KI das Falsch gemacht, und doch lieber zuerst die Waffe eingesammelt, wird Sie durch einen "Schlecht"-Impuls bestraft, und weiß, dass es besser ist, von der Kugel wegzulaufen, als zur Waffenkiste hin. Das könnte gelöst werden, indem über den Input hineinkommt "Kiste 10 Meter entfernt, Schuss 20 Meter entfernt"-"Kiste 9 Meter entfernt, Schuss 3 Meter entfernt"-"Kiste 8 Meter entfernt, von Schuss getroffen", die KI merkt, dass sie, indem sie bestraft wird, wenn das Ereignis "Schuss trifft" vor dem Ereignis "Kiste eingesammelt" eintrifft, es besser ist, das Ereignis "Schuss trifft" nach "Kiste eingesammelt" oder garnicht eintreffen zu lassen. Trifft es in anderer Reihenfolge ein, ist es immernoch schlecht, denn unsere KI soll nicht getroffen werden. Sie wird versuchen, entweder "Schuss trifft" vor "Kiste eingesammelt" oder "Schuss trifft" oder "Kiste eingesammelt" garnicht eintreten zu lassen. Da wir "Schuss trifft" vor "Kiste gesammelt" und "Kiste gesammelt" vor "Schuss trifft" schon als "schlecht" gekennzeichnet haben, wird die KI versuchen, "Schuss trifft" und "Kiste gesammelt" seltener eintreten zu lassen. Damit die KI allerdings immernoch Kisten sammelt, müssen wir sie mit einem "Gut"-Impuls belohnen, wenn sie das tut. Nun, wie lassen wir die KI nach Den Impulsen handeln? Wer das Spiel Black & White kennt, wird wissen, dass wir der Kreatur einen Gut/Schlecht Impuls geben, indem wir sie während/nach einer Aktion ihrerseits den Bauch kraulen, oder ihr einen Hieb geben. Sie wird diese Aktion, wenn sie Gelegenheit dazu hat, sehr häufig bis garnicht ausführen, je nachdem, wie wir sie trainiert haben. Mit unserer KI können wir es ähnlich machen, wenn sie die Gelegenheit hat, eine Kiste einzusammeln, und "Kiste einsammeln" belohnt wird, wird sie die Kiste einsammeln. Wenn jedoch zur gleichen Zeit ein Schuss kommt, sollte sie erst vermeiden, das Bestrafte zu vermeiden, und dann erst das Belohnte zu tun. Ist der Gegner bzw. Spieler in der Nähe, steigt das "Adrenalin", die KI muss schneller handeln und lässt Belohnung sowie "unwichtige" Sachen aussenvor, daher die Priorität für einzelne Aktionen (in B&W als "Rolle der Kreatur" bekannt, zum Beispiel baut sie mehr Häuser, wenn ihre Rolle "Baumeister" ist).

      So, sehr langer Text, hoffentlich nichts vergessen, sonst: PM me.
      €dit: Uff, eine Stunde geschrieben... :pinch:
      @Prustel: Ich bin auch C :sauf:
      Oha, die Danksagungen häufen sich... <(o.O)> <(^.^)>
      PM me.
    • Freut mich das euch die Idee mit dem NN gefällt.

      Ansich ist die Programierung eines simpleren Neuronalen Netzwerks nichtmal so schwer, wen auch aufwändig.

      Es gibt ansich nur drei formen von Neuronen:

      Input-Neuronen: Nehmen ihre umwelt war und Reagiern auf bestimmte Reize (diese werden vorgegeben beispielsweise kan neuron A die X Position des Spielers wahrnehmen Neuron B die Y Position)


      Verarbeitungs-Neuronen: Die zich Neuronen die zwischen dem Input und output liegen, umsomehr man hiervon hat umso flexibler kann das Netzwerk arbeiten.


      Output-Neuronen: Geben letzendelich dan den Output aus. Hier kann man lösen welche Aktion ausgeführt werden soll anhand der Reizintensivität als bsp.:

      Unser NN hat wahrgenommen das der Spieler in Schussweite ist, ander Neuronen melden ihn allerdings auch das er stark verwundet ist, wieder andere Neuronen melden eine Deckung beoi XY. Nun gehts los die Input-Neuronen beginnen ihre Signale zu Feuern, andere Neuronen nehmen dies wahr, einige Neuronen erhalten gleich von mehrern Input-Neuronen Signale und ihre Reiz erhöt sich, am ende durch ein Chaos das man selber nicht überlicken mag kommen unser Signale am Output an.
      Da unser NN dahingehend Trainiert wurde sich zu verstecken wen es verwundet ist und Deckung in der Nähe ist, sind entsprechende Gewichtungen vorhanden die die Reize der deckung mit den Reizen der Verwundet zusammenführen, am ende entscheidet sich unser NN dafür in Deckung zu gehn, da der Aktuelle OutPut Reiz mit dem Befehl "Versteck dich" gerade am intensivsten ist.

      Das Lernen bei Neuronen geschieht durch verschieben der Gewichtung zwischen ihnen:

      Edit: Bei der Skizze haut was nicht mit der Formatierung hin, am besten man guckt mal bei Google nach einem Schema.

      ###################### Gw=9 #####################
      ######Neuron 1########----------------------------#######Neuron 2######
      ##################### ####################
      |
      | Gewichtung= 3
      |
      #####################
      ######Neuron 3#######
      ####################


      Wen Neuron 1 einen Reiz erhält wird es diesen (so eine gewisse Reizschwelle übertreten wurde) an andere Neuronen weiterleiten.
      Neuron 1 hat zwei Verbindungen: Eine zu Neuron 2 und eine zu Neuron 3.
      Neuron1 hat genug Reizinput erhalten das sein Reizschwellwert überschritten wurde somit leitet er seinen Reiz weiter an Neuron 2 & 3.
      Die Gewichtung nach Neuron 2 ist stark genug den Reiz zu übertragen, er kommt zwar schwächer an wurde aber weiter geleitet und veranlasst Neuron 2 seinerseits den Reiz an mit ihm verbundene Neuronen weiter zu leiten.
      Neuron 3 hingegen ereicht zwar der reiz, da seine Verbindung mit Neuron 1 aber zu schwach ist kann der Reiz den Schwellwert der benötigt wird nicht überschreiten, Neuron 3 wird keine Reize weiterleiten. Es seie den Neuron 3 würde nun auchnoch von anderen Neuronen Reize erhalten, diese würden sich mit seinem bereits erhaltenen Reiz summieren bis sie schliesslich seine Reizschwelle überschreiten und er ebenfalls zu Feuern beginnt.

      Eine Lernroutine muss sich jede einzelne dieser Gewichtungen merken wie sie war als die KI etwas gemacht hat um dann die Gewichtungen zu verstärken(Bei "Belohnung") oder sie zu schwächen ("Bei einem Fehler).

      Eine KI mit NN die während des Spiels weiter Lernt (also nicht nur in einem Trainingsprogramm) wird mit der Zeit ihre eigene Dynamik und Strategie entwickeln, solche Netze können recht eigenständig wedern und verändern sich permanent je nach ihrer Erfahrung. Theoretisch könnte eine KI mit einem NN sogar Lernen wie sie Betrügen kann ohne das es ursprünglich gewollt war, an solchen stellen freut man sich weil der kleine ja so schlau is ;P oder man schiebt da Riegel vor.

      EDIT.: Ps nochmals Neuronale Netzwerke kann man keine Erfahrung einprogrammieren, sie sammeln ihr wissen (In den Gewichtungen der Synapsen) auf eine Subtiele und nicht nachvollziehbare weise, so wie der Mensch auch.
      Teileweise können erinnerungen an Gelerntes an 40 unterschiedlichen bereichen des gesamten Neuronensystems gespeichert sein und noch Chaotischer.

      Ein solches NN muss aufjedenfall mit einem Speziellen darauf ausgerichteten Trainigsprogramm trainiert werden, bei dem man Bedingungen und Ziele angiebt, und das Programm solange eine dauerschleife durchführt mit dem Belohnen/Beestrafen bis die Ausgabe des NN der gewünschten ausgabe des Users entspricht.


      Nochma Edit (Mir fällt halt immer wieder was ein was ich vergessen habe^^ *schussel is*:

      Sorgen macht mir, wie das geregelt wird, wenn mehrer Inputs zeitgleich
      einkommen die komplett gegenteilige Reaktionen auslösen. Wenn die
      beiden inputs auch noch gleich stark sind, was soll der Bot tun?
      Kombinieren? Zufall? Oder solche dinge verhindern (zwei gleich große
      zeitgleiche inputs)?
      Also beim Input wäre das nicht so schlimm ein Neuronales Netz giebt nie daselebe aus, die ausgabe verändert sich immer wieder und Vaariert je nachdem welche Neuronen grade Aktiv sind (es sind ja noch viel mehr Input permanent Aktiv als nur zwei) gerade für solche Probleme werden NN oft genutzt da sie Entscheidungsfähig sind. Eher könnte es ein Problem geben wen Mehr als ein OutPut die selbe Signalstärke hat, theoretisch könnte dann ein zweites NN entscheiden welches ausgeführt wird (ähnlich unserem Hirn wo es ja viele in sich geschlossene System gibt und eines mit dem anderen Komoniziert), will man sich das aber einsparen tja da müsste man dan wohl oder übel Zufall entscheiden lassen oder nichts tun lassen, was ansich nicht so schlimm wäre in der nexten Millisekunde in der das NN sich wieder von forne ausführt sieht die Welt ja schon wieder ganz anders aus(und wen nur ein einziger Input eine Minimale Signaländerung hat reicht das schon), das NN hätte also quasi nur einen für einen Menschen nicht bemerkbaren Blackout.
      Alle Rechtschreibfehler sind natürlich GEWOLLT und können vom Finder behalten werden

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von Kev-men ()

    • Die ganze Neuronengeschichte ist zwar sehr interessant aber wenig praktikabel. Ich habe diese Idee auch mal verfolgt aber dann fallen gelassen, weil sie einfach den Rahmen eines kleinen 2D-Spiels sprengte.

      Ein Spiel mit relativ geringen Inputmöglichkeiten wird von so einer KI schnell beherrscht und sie spielt irgendwann perfekt. Ich bin daher zu dem Schluss gekommen, dass eine adaptive KI immer künstlich verdummt werden muss bzw. eine begrenzte Anzahl von Ressourcen zur Verfügung haben, die sie sich aber selbst einteilen kann.


      Ich begnüg mich bei Bossen mit einem recht einfachen Konzept, das ich in Spielen aber komischerweise bisher nicht beobachtet habe:

      Ein Beispiel:
      Boss A hat 5 Mögliche Angriffe. Gehen wir der Einfachheit halber mal davon aus, dass sie zu Beginn alle mit den gleichen Chancen ausgeführt werden.

      Nach jedem Angriff wird gemessen, wer wieviel Schaden eingesteckt hat und der Angriff bekommt eine Effektivitätsnote. Entsprechend ihrer Effektivitätsnote ändert sich die Wahrscheinlichkeit, mit der die Angriffe eingesetzt werden, wobei der ineffektivste z.B. gar nicht mehr eingesetzt wird, um den Glücksfaktor ein wenig zu killen.

      Ein so programmierter Boss ist förmlich darauf aus, den Spieler zu erledigen - bei einem Boss, der von Anfang bis Ende sich gleich verhält auch sehr effektiv.
      Wenn der Boss allerdings z.b. ab 50% Leben seine Angriffe doppelt so schnell ausführt, aber seine Effektivitätsnoten beibehält, kann der Spieler Angriffe bis 50% bewusst versauen, um so ab 50% den schwersten Angriff gar nicht erst kontern zu müssen - bis der Boss sich auf dieses neue Verhalten dann eingestellt hat ist er vermutlich schon tot.

      Dieses System ist leicht zu implementieren und macht simple Bosse gleich um eine ganze Ecke interessanter.
      Macht man diese Effektivitätsnoten global und kategorisiert sie, um ein Profilbild des Spielers zu erstellen, ergeben sich weitere Möglichkeiten:
      Alle Bossen speichern ihre Beobachtungen in eine gemeinsame Datenbank ab - sie stellen fest, dass der Spieler Angriffen immer springen ausweicht obwohl er sich auch Ducken könnte. Sie stellen auch fest, dass der Spieler lieber die Pistole nutzt als die Shotgun.

      Kommende Endgegner machen sich das zunutzen und modifzieren ihre Angriffe bereits im Vorfeld entsprechend und verteilen gleich zu Beginn Effektivitätsnoten. Das Ergebnis: Der Spieler kämpft gegen vorbereitete Bosse, die indiviudell auf ihn zugeschnitten sind und auf seine Schwächen abzielen.

      Noch eine Idee zum Weiterdenken: Wenn wir uns von der eindimensiolanen Angriffsliste lösen und die Beobachtungen auf Abfolgen und/oder Kombinationen von Angriffen erweitern, wird das System noch gemeiner und effektiver. Der Nachteil wäre in diesem Fall eine längere Beobachtungsphase des Spielers.
      Dem kann man allerdings wiederum entgegenwirken, indem man in dieser mehrdimensionalen Attacken-Matrix auch Effektivitätsnoten für Angriffe einträgt, die der Boss in diesem Moment gar nicht ausgeführt hat - wenn der Spieler z.b. einem Angriff durch Springen ausweicht und ihn damit komplett verhindert, bekommen andere Angriffe die man durch Springen kontern kann auch eine schlechte Note (bzw. einen Teil davon).


      Soviel dazu ersteinmal von mir.
    • Ausserdem müssen wir bedenken, dass eine neuronale KI nicht für ein Spiel geeignet ist (ich rechne auch nicht damit, dass das in nächster Zeit möglich ist...)! Wenn diese nämlich selber lernt, denkt, handelt und vielleicht sogar noch Emotionen besitzt, denke ich nicht, dass die dann jederzeit Lust hat, mit dir ein 2D-Jump'n'run zu spielen.
      Ich wäre also dafür, dass wir uns von diesem Thema wieder etwas abwenden. Klar, es ist sehr interessant, aber erstens können wir das nicht umsetzen und zweitens sollten wir mal bei etwas kleinerem beginnen.

      Zudem fände ich es interessant, wenn wir alle gemeinsam eine lernende KI zu programmieren versuchen. Also nich als Spiel, sondern erstmal als Projekt. Diese sollte halt sehr einfach gehalten sein, also so, dass sie sich vielleicht nur bewegen und schiessen kann. Dennoch sollte sie lernen können. Würde das jemanden interessieren, bei so einem Projekt mitzumachen?


      MfG flogy
    • KI ist sowas von schwer es zu schaffen
      KI was ihr immer Beschreibt ist keine Ki sonderen mehr ein bot der das will was ihr wolt
      jedoch ist Ki mehr als was ihr wolt
      den Ki kann seine Eigene Enscheidungen Treffen doch ihr wisst schon bescheit was es machen wird :thumbdown:


      habt ihr schon mal in Betracht gezogen das ihrgenwo auf der welt Einen Supere Rechner steht der seine eigene super Ki hat und uns Beobachtet

      also ich hab vor dem Respekt :thumbsup:
      Sorry bin Legastheniker :cursing:

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von NickNick ()