My Artificial Intelligence



  • Ich habe eine künstliche Intelligenz (einen Agenten) entwickelt und auf GitHub hochgeladen.

    https://github.com/tobi2409/MyAi

    Die Beschreibung dazu könnt ihr in der entsprechenden ReadMe lesen. Das passende FrontEnd dazu ist aber noch in der Entwicklungsphase.

    Wenn ihr wollt, könnt ihr mal reinschauen und über eine Rückmeldung würde ich mich freuen.

    Danke 🙂



  • Hmm... Ich habs kurz überflogen, aber ich hab ehrlich gesagt keine Ahnung, was du willst. Allein dein Englisch ist sehr holprig. Weder mit der Beschreibung noch mit dem Code konnte ich auf die Schnelle viel anfangen.



  • @Mechanics Der Mensch hat mehrere Optionen, um etwas auf der Welt zu ändern. Er kann also mithilfe seiner Muskelkraft Auswirkungen auf andere Teilchen haben. Wenn man in der Phase ist, wo man die Welt noch erkundet, sammelt man Erfahrungen und da man aufgrund seiner Emotionen bestimmte Ziele verfolgt (z.B.: kein Hungergefühl), werden einige der gesammelten Erfahrungen als angenehm, andere als unangenehm betrachtet. Nicht jede Handlung führt nämlich dazu, dass das Ziel erfüllt wird. Wenn ich mich als Mensch nun für eine Handlung (Option) entscheide, merke ich mir, ob und wie oft diese angewandte Option mein Ziel erfüllt hat.

    Die Welt in dieser Anwendung ist ein Vektor mit Wahrheitswerten, damit man es für das Erste einfach halten kann. Es gibt 3 Optionen (Handlungen), wie man diese Welt beeinflussen kann. Die erste Option sorgt dafür, dass jeder wahre Wert im Vektor falsch wird, wenn der Wert auf der nächsten Position falsch ist. Die zweite Option invertiert die Werte. Die dritte Option setzt alle Werte auf wahr.

    Sobald der Mensch handelt, sieht er nicht die Auswirkungen, die seine Handlung auf das gesamte Universum haben, sondern nur auf einen kleinen Teil. Daher wird beim Erkunden der Welt (Methode: inspect in AiLogic) nur ein Index im Array betrachtet. Das Ergebnis dieser Methode ist eine Liste von InspectionEntries. Ein InspectionEntry beinhaltet den Wert, wie er vorher war, den Wert danach, die Position (den Index) und die Option.

    Die Methode "analyze" zählt anhand der InspectionList nach, wie oft bei einem "Vorher-Wert" ein bestimmter "Nachher-Wert" entstanden ist. Mithilfe der Parameter "compareProperty" und "comparePropertyValue" kann man angeben, ob es für die Auszählung immer nur eine bestimmte Option (Handlung) oder immer nur ein bestimmtes Index (Position) in Betracht ziehen soll.
    Die Methode "analyzePrecise" untersucht mehrere Werte einer Eigenschaft. (z.B.: mehrere Optionen oder mehrere Positionen).
    Wenn die Methode "analyze" nur einen Eintrag beinhaltet, weil es immer nur einen "Nachher-Wert" in der Zählung gegeben hat, wird die Kombination aus dem "Vorher-Wert" mit z.B. der Option als allgemeingültig betrachtet.
    Die Methode "traceGoal" dient dafür, um aus der InspectionList einen festgelegten "Nachher-Wert" aufzusuchen und mithilfe des InspectionEntry weiß man, dass für den darinstehenden "Vorher-Wert" und dieser Option oder diesem Index (je nachdem) mal der "Nachher-Wert" entstanden ist, den man sich als Ziel gesetzt hat. Und dann kann man eben analysieren, wie oft dieser "Nachher-Wert" entstanden ist und wie oft ein anderer "Nachher-Wert" rauskam, der evtl. nicht als Ziel gewünscht ist.

    Wie im Readme beschrieben ist das Projekt noch in der Entwicklungsphase und daher ist das FrontEnd, das all die AiLogic-Module kombinieren soll, noch nicht wirklich hilfreich. Über die Tests kann man aber sehen, dass die AiLogic-Module soweit funktionieren.

    Was eventuell auch fehlt, ist eine Analysier-Methode, die z.B. Optionen mit Positionen kombiniert, sodass dann ermittelt werden kann, ob z.B. eine bestimmte Option nur in Kombination mit einer bestimmten Position immer den gleichen "Nachher-Wert" rausbringt.



  • Welches Problem löst die Anwendung bzw. welchen Zweck verfolgt sie?



  • @hustbaer Die Anwendung lernt von einer Welt, indem es diese mithilfe der angebotenen Optionen untersucht. Diese Welt ist in diesem Fall sehr vereinfacht, damit man nicht schnell den Überblick verliert.

    Später kann man jedoch als Grundlage eine Welt nehmen, die nicht nur wie bislang Wahrheitswerte als Elemente aufnimmt, sondern Teilchen, Atome, so wie sie in unserer Welt vorkommen. Dazu verbunden mit einer Physik-Engine, sodass sich die Teilchen genauso verhalten und bewegen wie in der reellen Welt. Der Anwendung (Intelligenz) selber stehen wie bisher Optionen zur Verfügung, um die Welt beeinflussen zu können.

    Wenn ein Mensch nämlich nichts gelehrt bekommt - also keinen Schulbesuch genossen hat und ihm keine Bücher/Mitmenschen zur Verfügung stehen - muss er sich die Funktionsweise der Welt selber beibringen und erarbeiten. Das tut er durch Untersuchungen, indem er die Welt erkundet und verschiedene Sachen ausprobiert. Dadurch kann er analysieren, wie oft der gleiche und auch andere Nachher-Zustände eintreten, wenn er aus einem bestimmten Vorher-Zustand gehandelt hat.
    Wenn mehrere Nachher-Zustände in der Analyse-Tabelle enthalten sind, d.h. wenn es unterschiedliche Möglichkeiten bei dem geben kann, was passiert, dann kann er sich beim nächsten Mal eben nicht sicher sein.
    Das Ziel dabei ist es, dass irgendwann nur eine Möglichkeit für eine Nachher-Situation entsteht.
    Um das zu realisieren, ist eine Funktion, welche die Optionen (Handlungsmöglichkeiten) und Positionen solange miteinander kombiniert und verknüpft, bis so wenig wie möglich Nachher-Situationen vorhanden sind. Diese Funktion ist noch nicht implementiert.

    Der Zweck hinter der Anwendung ist allgemein erstmal Spaß an der Programmierung und Interesse bei der Umsetzung von philosophischen Erkenntnissen. Einen wirtschaftlichen Zweck hat es (vorerst) noch nicht.



  • Was genau tut die Software denn aktuell? Auch wenn ich von Java nichts verstehe, so hab ich doch den Eindruck, dass so wenig Quellcode nicht besonders viele Funktionen erfüllen kann. Vielleicht kannst du etwas konkreter beschreiben, was deine "AI" tun soll? Für welche Situationen sie geeignet sein soll? Es gibt ja keine "eierlegende Wollmilch-AI ...



  • @oser Verstehe ich das richtig dass du ein "Framework" für die Entwicklung von KIs gebastelt hast, das auf einer neuen "Mechanik" basiert die du dir selbst ausgedacht hast -- aber ohne eine erste KI mit der man das ganze sinnvoll demonstrieren könnte?

    Einen wirtschaftlichen Zweck hat es (vorerst) noch nicht.

    Was ja voll OK ist. Der Knackpunkt ist aber vermutlich

    Der Zweck hinter der Anwendung ist allgemein erstmal Spaß an der Programmierung und Interesse bei der Umsetzung von philosophischen Erkenntnissen.

    Denn so lange man nix konkretes hat das man auspobieren könnte/mit dem man rumspielen könnte, werden sich vermutlich ausser dir nicht sehr viele Leute dafür interessieren.

    Später kann man jedoch als Grundlage eine Welt nehmen, die nicht nur wie bislang Wahrheitswerte als Elemente aufnimmt, sondern Teilchen, Atome, so wie sie in unserer Welt vorkommen. Dazu verbunden

    Die Beschreibung in deinem vorigen Beitrag klingt ehrlich gesagt nicht danach als ob man das auf irgendwas sinnvolles erweitern könnte.



  • @hustbaer

    Etwas, womit man rumspielen könnte, ist das FrontEnd, das alle Funktionen der AiLogic sinnvoll miteinander verbindet. Das FrontEnd ist allerdings noch nicht fertig. Daran muss ich arbeiten und es vielleicht in der überarbeiteten Verfassung hochladen. Ich hab gedacht, den Sinn kann man sich anhand der Tests herleiten, aber das war wohl ein Trugschluss.

    Man könnte das Projekt schon auf was Sinnvolles erweitern. Gerade wie bereits erwähnt dass man von dem Wahrheitsvektor als Welt wegkommt und stattdessen echte Teilchen simuliert. Damit würden sich dann viel mehr Möglichkeiten eröffnen. Und eine Methode, mit der es möglich ist, die gemachten Erfahrungen exakter durch das Kombinieren von unterschiedlichen Optionen und Indizes herzuleiten.

    Und ja, das Projekt umfasst nicht viel Code und ich habe auch nicht vor, 20 Millionen Zeilen Code zu schreiben, da wenn man sowohl philosophisch als auch programmtechnisch versucht, auf einer niedrigen Abstraktionsebene das Größere aufzubauen, spart man sich durchaus viele Zeilen Code und hat am Ende die gleiche Funktionalität.



  • Man könnte das Projekt schon auf was Sinnvolles erweitern. Gerade wie bereits erwähnt dass man von dem Wahrheitsvektor als Welt wegkommt und stattdessen echte Teilchen simuliert.

    Nein.



  • @hustbaer Begründung?



  • Weil dabei niemals was rauskommen wird was mehr kann als nur vollkommen planlos im Dunkeln rumzustochern.



  • @hustbaer Dass du das so siehst, liegt eher daran, weil es auf einer sehr abstrakten Ebene läuft. Das kann schon fast alles, was es können muss. Weil die menschliche Intelligenz funktioniert auf psychologischer Ebene auch nicht anders, als dass Erkenntnisse abgeschätzt werden und ob der daraus resultierende "Nachher-Zustand" dem persönlichen Ziel entspricht.
    Und auch die ganzen Erkenntnisse in den Naturwissenschaften entstanden dadurch, weil Experimente durchgeführt worden sind, die eben zu Erkenntnissen führten. Und die Experimente wurden solange durchgeführt, bis man sich konkret klar war, warum etwas wie funktioniert.


  • Mod

    Nichts für ungut, aber das ist alles Esoterik, keine Informatik. Die Esoterik gibt sich auch gerne als unverstandene Wissenschaft aus, ist sie aber trotzdem nicht.



  • @SeppJ Das ist keine Esoterik, sondern so tickt der Mensch wirklich. Oder willst du mir sagen, dass du nicht aufgrund von gemachten Erfahrungen deine Entscheidungen triffst?
    Andererseits könnte ich dich auch fragen, was du unter Wissenschaft verstehst. Und Informatik ist es definitiv, sonst würde ich ja nichts programmieren.



  • @oser sagte in My Artificial Intelligence:

    Das ist keine Esoterik, sondern so tickt der Mensch wirklich. Oder willst du mir sagen, dass du nicht aufgrund von gemachten Erfahrungen deine Entscheidungen triffst?

    Naja, da gehört schon viel mehr dazu. Da sind auf allen Ebenen (physikalisch, biologisch) sehr viele Gesetzmäßigkeiten, das gibt dein System nicht her. Und es ist auch kein sinnvoll abstrahiertes Modell, wie z.B. KNNs. Also nein, dabei kann nichts rauskommen 😉 Ich hätt mir noch am ehesten vorstellen können, dass das Richtung game of life geht.


  • Mod

    @oser sagte in My Artificial Intelligence:

    @SeppJ Das ist keine Esoterik, sondern so tickt der Mensch wirklich. Oder willst du mir sagen, dass du nicht aufgrund von gemachten Erfahrungen deine Entscheidungen triffst?

    Und wo bleibt dies bei dir? Das ist ein philosophischer Aufsatz, kein erkennbares Modell, keine Anwendung, kein Ergebnis.

    Andererseits könnte ich dich auch fragen, was du unter Wissenschaft verstehst.

    Das, was im Wörterbuch steht. Geht oft mit den Dingen oben einher.

    Und Informatik ist es definitiv, sonst würde ich ja nichts programmieren.

    Informatik hat mit Programmieren so viel zu tun wie Mathematik mit Rechnen....



  • @SeppJ sagte in My Artificial Intelligence:

    Informatik hat mit Programmieren so viel zu tun wie Mathematik mit Rechnen....

    aber ohne informatik kein programm bzw. ohne mathematik keine rechnung, oder?


  • Mod

    @Wade1234 sagte in My Artificial Intelligence:

    @SeppJ sagte in My Artificial Intelligence:

    Informatik hat mit Programmieren so viel zu tun wie Mathematik mit Rechnen....

    aber ohne informatik kein programm bzw. ohne mathematik keine rechnung, oder?

    Nun, ich habe nicht gesagt, dass sie gar nichts miteinander zu tun hätten 🙂



  • @oser Du hast hier ein Modell beschreiben, von dem du behauptest dass es tolle Dinge "können kann" um es mal so zu formulieren. Glaubt dir aber keiner. Manche (ich auch), sind sogar so weit gegangen zu behaupten dass sie glauben dass das Modell ganz sicher nichts interessantes können kann. Aber darum geht's erstmal nicht.

    Denk dir einfach dass wir alle nur geschrieben hätten "ich glaube das erstmal nicht" (statt sinngemäss "kann nicht funktionieren"). Der Ball ist jetzt bei dir. Du behauptest dass es funktioniert, also bist du quasi in der Bringschuld. Beweise dass es geht. Schreib eine Implementierung die mit deinem Modell ein nicht-triviales Problem löst. Wenn du das demonstrieren kannst, wird die Reaktion hier vermutlich ganz anders aussehen.

    Oder lass es, auch voll OK. Dann darfst du dich aber nicht wundern wenn es weiterhin keinen interessiert und wir weiterhin nicht glauben dass das Modell irgendeinen Wert hat.



  • @SeppJ sagte in My Artificial Intelligence:

    Nun, ich habe nicht gesagt, dass sie gar nichts miteinander zu tun hätten 🙂

    naja ich wollte darauf hinaus, dass man zum programmieren doch erst einmal informatik bzw. zum rechnen erst einmal mathematik betreiben muss. also unabhängig davon, ob das genannte programm etwas taugt (ich habe es mir leider nicht ansehen können und wahrscheinlich hätte ich da auch nicht die ahnung von), werden da doch bestimmt informationen bzw. daten verarbeitet und man muss sich gedanken machen, wie das passieren soll.


Log in to reply