[KI] Gesetzmäßigkeiten aus Daten ableiten und verwenden



  • Hallo,

    Ich habe mich im Bereich der künstlichen Intelligenz in letzter Zeit verstärkt mit neuronalen Netzen, Klassifizierern und dem(?) Perzeptron beschäftigt.
    Nun wollte ich ein Programm schreiben, welches aus 2 Eingangsdaten (positive und negative) eine Gesetzmäßigkeit ableitet und diese auf neue Daten anwendet.
    Als Beispiel habe ich mir die Addition gedacht: D.h. ich gebe dem Programm 20 Tripel wo die ersten beiden Zahlen addiert werden und die dritte Zahl das Ergebnis ist. z.B. 5,2,7
    Als negative Eingaben dann entsprechende Tripel, wo die dritte Zahl falsch ist, also z.B. 2,5,5
    Zuerst dachte ich, ich könnte vielleicht die Idee des Perzeptrons übernehmen und modifizieren, aber damit kann ich ja eigentlich nur entscheiden ob eine gewisse Lösung richtig sein kann, aber nicht wie ich auf diese komme.
    Es muss doch aber möglich sein, aus den Eingangsdaten eine entsprechende Gesetzmäßigkeit zu finden.
    Weiß jemand in welchen Teilbereich der künstlichen Intelligenz das fällt und welche Algorithmen/Ideen es da gibt?

    Gruß Pille



  • Hab ich das richtig verstanden? Du willst einen Algorithmus, der herausfindet, dass man addieren muss um auf der richtige Ergebnis zu kommen? Was soll der noch können?



  • Ja exakt das 😉
    Analog soll er bei entsprechenden Daten dann natürlich finden, dass man z.b. subtrahieren muss oder auch mal x^y rechnen muss, sowas halt.

    Meine momentane Idee ist, das auf ein Suchproblem zurückzuführen, welches dann heuristisch gelöst wird. Also ich erstelle - ausgehend von den 4 Grundrechenarten +,-,,/ [wobei + und * denke ich schon reichen würden] - einen Suchbaum der alle (unendlich viele) Kombinationen dieser Rechenarten beinhaltet. Als z.B. folgende Varianten für die Addition:
    Wenn x und y die Eingaben sind:
    x+y; y+y, x+x, y+k, x+k (wobei k eine Konstant ist)
    Dann kann man in Verbindung mit der Multiplikation z.B. noch bauen:
    (x+y)*k,y*y+x,x*x+y,x*x+y*y,y*x+y
    x usw...

    Ich muss nur noch eine "gute" Funktion finden um die Ergebnisse entsprechend zu gewichten, sodass ich weiß in welche Richtung ich im Baum gehen muss und eine Funktion finden, die mir ALLE möglichen Kombinationen Stück für Stück (quasi auf Anfrage) ausgibt.
    Die Idee hierbei wäre - analog zum vorgehen eines Menschen - wenn die Addition der Eingaben zu niedrig ist multipliziere ich diese. Wen das zu Groß ist, subtrahiere ich noch was usw..
    Dummerweise wird man so schnell in eine Sackgasse kommen denke ich, darum bin ich mir nicht so sicher, wie praktikabel das wäre.



  • Tja, ich füchte, Dein Vorhaben stirbt, sobald Du das da http://www.research.att.com/~njas/sequences/ genauer anschaust.



  • Hm, soweit ich das sehe, wird doch einfach eine Datenbank nach entsprechenden Zahlenfolgen durchsucht oder nicht? Das ist ja nicht unbedingt mein Ziel 😉
    Ich will ja dem Rechner beibringen, dass wenn er 10 mal "sieht" wie man addiert, dass er das dann auch kann (okay er kann es schon, aber später dann vielleicht auch komplexe mathematische Probleme).

    Aber wenn ich das richtig sehe, muss man dieses Problem noch nichtmal komplett mit Mitteln aus der KI lösen. Als ich mir gerade eine Funktion überlegt habe, womit ich hinreichend viele Kombinationen aus +,-,*,/ finde, kam mir die Taylor-Reihe in den Sinn.
    Theoretisch reicht es doch das n-te Taylorpolynom aufzubauen um eine ganz/geborchenrationale Funktion n-ten Grades zu finden, welches die gegeben Werte hinreichend gut (Abweichung < 0.0000...1, je nach Genauigkeit) abbildet.
    Ich ging ja sowieso von Anfang an davon aus, dass es einen mathematischen Zusammenhang zwischen den Zahlen gibt.
    So erhalte ich vielleicht keinen exakten Term, aber hoffentlich eine hinreichend gute Näherungen 😉

    In einem 2. Schritt kann ich dem Programm ja dann noch eventuell kleine "Feinheiten" wie modulos, e oder Fakultät beibringen, mal sehen.



  • Die Zahlenfolgenaufgaben von Intelligenztests kannst Du bruteforcen. Sinnvolle Abhängigkeiten kannste vielleicht nur finden, wenn Dir klar ist, was alles erlaubt ist. Bei Polynomen zum Beispiel greift die Differenzenrechnung (nicht Differenzialrechnung) wunderbar.



  • Das interessante an neuronalen Netzen ist, dass du am Ende nicht mehr sagen kannst, wie der Computer die Daten versteht - obwohl er oftmals die richtige Antwort gibt.


Anmelden zum Antworten