Künstliche Intelligenz

  • aber genau das macht man doch bei künstlicher intelligenz. Abstrakt betrachtet wird eine Entscheidungsfindung angestellt und Ergebnisse + Situation werden sich gemerkt. Das sind dann sozusagen Erfahrungen die gesammelt werden. Da Computer einfach viel schneller arbeiten als menschenliche Gehirne, sammeln die natürlich auch viel schneller Erfahrungen.


    MMn. ist das Maß an Intelligenz, wie gut die Entscheidungen sind, die getroffen werden. Man kann ja auch total schwachsinnig entscheiden, dann ist das halt nicht so intelligent. Solang man aber daraus lernt und das nächste mal eine weniger schwachsinnige Entscheidung trifft, zeugt das eben schon von einem mindestmaß an intelligenz. Umso weniger Enthscheidungsgänge eine K.I. benötigt um die perfekte Entscheidung zu treffen, umso intelligenter ist sie für mich.

  • AFAIK liegt das Hauptaugenmerk auf Effizienz, das heißt, möglichst schnell mit möglichst wenig Fehlentscheidungen die 'richtige' Entscheidung zu treffen.


    Hierbei liegt das Problem dann wieder im Punkt 'richtige Entscheidung'.


    Man kann das alte Beispiel der Ethik heranziehen:
    Stell Dir vor ein Zug mit 100 Passagieren rattert auf eine Weiche zu, die Du stellen musst.
    Je nach Deiner Entscheidung rast der Zug entweder auf einen Abgrund zu (100+ Tote) oder über ein paar Gleisarbeiter (5 Tote).
    Wie entscheidest Du Dich?


    Beim Menschen variiert hier die Entscheidung gern je nach Ausgangsposition der Weiche.


    Diese Annahme fordert eine Entscheidung A) oder B)
    Steh' ich jetzt direkt an der Weiche stell ich sie auf die Arbeiter und brüll in die Flüstertüte 'Zug im Anmarsch!'.
    Sitz' ich im Kontrollzentrum verlasse ich mich vielleicht darauf, dass die Jungs schon mitbekommen werden, dass da ein Zug auf sie zu kommt.
    Eventuell ist das auch ne elektrisch betriebene Lok und ich sitz in der Leitstelle, dann halte ich das Ding erst an und stell die Weiche dann auf die Position, die den längsten Weg bis zur Katastrophe verspricht.
    Sind überhaupt keine Bauarbeiten angekündigt worden und es ist davon auszugehen, dass die fünf sich da widerrechtlich aufhalten, stell ich die Weiche auf die kleine Gruppe und rate denen, dass sie Augen und Ohren offen halten.
    Sind die 100+ Passagiere hingegen gewalttätige Hooligans könnte es durchaus passieren, dass ich die Situation leicht falsch einschätze und aus Versehen auf den Abgrund schalte.


    All diese Möglichkeiten muss eine künstliche Intelligenz erst einmal analysiert bekommen, sie muss also nicht nur Daten haben sondern auch noch Annahmen treffen können.


    Ein weiteres Problem ist meiner Meinung nach, dass die Verknüpfungen einer KI meines Wissens stringent sind. Frei nach dem Faultier Sid:
    "Ich seh' 'n Baum, ich ess' 'n Blatt. Das ist mein Fährtenlesen."
    Intelligenz funktioniert anders. Intelligenz springt mal über die eine neurale Erinnerung/Wertung/Abstraktion/Kreativität Leitung, mal über eine andere Leitung. Mal wird für dieselbe Situation mehr Kreativität, mal mehr Erinnerung, mal mehr Wertung beansprucht.


    Vor Allem unter Stress führen manchmal sehr seltsame Verknüpfungen zu sehr seltsamen Entscheidungen, die sich am Ende als genial herausstellen. (Siehe Henry Ford.)
    In anderen Situationen wird der passende Zufall herbeigeführt. (Robert Martin Glover, Charles Goodyear)


    Vor Allem Charles Goodyear ist ein wunderbares Beispiel dafür, dass man ziemlich hirnverbrannt sein und trotzdem einen Geniestreich landen kann.


    Auch Thomas Edison, Steven Hawking, Albert Einstein, Linus Torvalds, Bill Gates oder Steve Jobs zeichne(te)n sich dadurch aus, es mit Ethik, Wertung und Respekt jetzt nicht soooo ernst zu nehmen und etliche Entscheidungen zu treffen, die zunächst komplett falsch oder gar schwachsinnig erschienen.
    Dennoch werden sie gemeinhin als ziemlich intelligent angesehen und ihnen werden bahnbrechende Errungenschaften nachgesagt.


    Allen kann man nachsagen: Scheitern auf etlichen Ebenen hat sie zu ihren Errungenschaften gebracht. Eine Option, die in den aktuellen Ansätzen der künstlichen Intelligenz soweit ich weiß komplett ignoriert wird.
    Niemand will halt, dass so ein T-2000 seine Entwickler röstet um auszuprobieren was passiert. ;)


    Auch scheint der Ansatz zu sein, dass die Entwickler der KI viel Input darüber geben, was geht und was nicht geht.
    Haben unsere Eltern bei uns auch versucht. Im Gegensatz zur KI sind wir trotzdem auf dem Sessel herumgeturnt, haben versucht vor unseren Eltern auf die Straße zu rennen, sind im Kirschbaum rumgeklettert, haben in Industrieruinen gespielt, Schulstunden geschwänzt und ähnliche Dinge gemacht, die wir nicht hätten tun sollen.
    (Und bei einigen Dingen auch erkannt, warum das doofe Ideen waren.)


    Hab mal ein Kind gesehen, dass mich mit riesigen Augen angestarrt hat, weil ich auf einem Tisch saß.
    In seiner Welt saßen Menschen immer auf Sitzmöbeln und aßen oder arbeiteten an Tischen.
    Dann hat es das auch mal ausprobiert und war völlig erstaunt, dass man auf Tischen sitzen konnte!
    (Die Blicke der Mutter - Dolche, ich schwör. +g+)


    Es hat so ein bisschen was vom Affentheorem.
    Wenn die Grundlage der Erfahrungen einer KI lediglich aus Konditionierung besteht (wie es aktuell ja der Fall ist), dann tötet es mitunter das, was aus unserer Sicht intelligente Menschen hatten.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Hey Leute,
    Hab mal ein wenig in den Tiefen des Forums gestöbert und bin auf dieses spritzen Thema gestoßen.


    Leider habe ich eine schlechte Nachricht. Denn so etwas wie künstliche intelligenzen gibt es nicht.


    Es handelt sich dabei schlichtweg um genetische Algorithmen, die klever hintereinander geschaltet sind.


    Die kleinste KI kommt sogar mit mit nur einem genetischen Algorithmus aus. Bei Hochleistungs KIs sind es verschiedene Algorithmen mit verschiedenen Einstiegspunkten.


    Durch die Verwendung solcher hintereinander und/oder parallel geschalteter Algorithmen ist eine KI auch nur in der Lage die Sachen zu erlernen und Lösungen dafür zu finden, für die ihr Algorithmus auch ausgelegt wurde.


    Es gibt allerdings auch Projekte, bei denen es darum geht, eine KI zu entwickeln, die immer mehr kann.
    Das ist aber ein anderes Thema und geht sogar über das Deep - Learning hinaus.

    Kann Spuren von persönlicher Meinung, Sarkasmus und Lakritz enthalten. Einzelne Wörter nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: suche bei Google

  • Computer sind zwar schnell, können aber nur 8 Sachen gleichzetig (bei 8 Kernen).


    Das menschliche Gehirn besteht aus 100 Milliarden von Nervenzellen. Ein Neuron ist mit ca. 10.000 anderen Neuronen unterschiedlich stark verknüpft und hat eine Taktfrequenz von 1 kHz. Das Gehirn läuft massivst parallel.


    Ich habe mal ein Buch zur neuronalen Programmierung gelesen, "Bauplan für eine Seele" von Dietrich Dörner. Der Autor benutzt zur Programmierung ausschließlich Neuronen und kommt damit auf verständliche Weise erstaunlich weit.


    Um Gedanken zu formen ist es wichtig eine Sprache zu verstehen. Das ist der Schlüssel. Zumindest habe ich auch das aus dem genannten Buch mitgenommen.

    Und denkt immer daran: "Das Leben ist ein Handschuh, der gar nicht existiert. Mal ist er da, dann wieder nicht. Das ist des Lebens Lauf. Du denkst du kannst ihn sehen, doch dann trickst er dich aus."

  • Ja, im Zuge eines kleinen privaten Projekts hatte ich mal eine geschrieben. Die konnte nach abgeschlossenem Training Wörter darauf prüfen, ob es sich dabei um ein Palindrom handelt oder nicht.


    Kompliziert war zu Beginn, dass reindenken in die Materie. Schlussendlich war es aber nur ein Genetischer Algorithmus, der dafür sorgt, dass sich die Gewichtungen und die einzelnen Verbindungen so anpassten, dass später die richtige Lösung gefunden wurde.

    Kann Spuren von persönlicher Meinung, Sarkasmus und Lakritz enthalten. Einzelne Wörter nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: suche bei Google

  • Wenn das gewünscht ist schon. Das kann ich jetzt aber nicht zwischen Tür und Angel machen.
    Ich denke mal heute Abend, wenn ich was mehr Ruhe und Zeit habe.

    Kann Spuren von persönlicher Meinung, Sarkasmus und Lakritz enthalten. Einzelne Wörter nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: suche bei Google

  • So, dass hat jetzt ein wenig gedauert aber gut, dann will ich mal versuchen auf verständliche Weise zusammen zu bekommen, was ich da damals gemacht hab


    Ich hatte mich für ein wirklich kleines Netz entschieden. Somit hatte ich 3 Schichten von Neuronen.
    -1) Die Eingangsschicht (Grün)
    -2) Die Verarbeitungsschicht (Blau)
    -3) Die Ausgabeschicht (Rot)


    [Blockierte Grafik: https://picload.org/image/rpawwwiw/nnn_empty.png]


    Ich hatte hier wirklich nicht die Lust, alle Verbindungen ein zu zeichnen. Stellt euch einfach vor, jedes Neuron aus der Eingabeschicht macht es mit jedem Neuron aus der Verarbeitungsschicht und das gleiche zwischen der Verarbeitungsschicht und der Ausgabeschicht.


    Die Verbindungen zwischen den einzelnen Neuronen nennt man Synapsen.
    In meiner Version haben die Synapsen keine Gewichtung um den Inputt zu verstärken oder zu schwächen. Die Synapsen können hier nur die Zustände 0 = true (Aktiviert) und 1 = false (Deaktiviert) haben. Zu Beginn stehen alle Neuronen auf true.


    Machen wir es an Hand eines Beispiels:
    Wir nehmen den Namen Otto und wollen nun prüfen, ob es sich bei diesem Namen um ein Palindrom handelt. Zu Beginn setze ich alle Buchstaben auf klein. Sonst würde das Netz “O“ und “o“ als nicht gleich betrachten.
    Nun zerlege ich die Buchstaben in ihre Bits. Ich habe dafür natürlich eine kleine Tabelle in der ich mit einem switch / case Block durchlaufe und mir die richtigen Bits zu holen. (Geht auch Algorithmisch aber darum ging es mir nicht.)


    “o“ = 01101111
    “t“ = 01110100
    “t“ = 01110100
    “o“ = 01101111


    So. Nun haben wir unsere 32 Eingangswerte. Diese lassen wir in unser Netz purzeln. Und erhalten so unsere erste gefüllte Schicht:


    [Blockierte Grafik: https://picload.org/image/rpawwwpr/nnn_firstline.png]


    Da in der ersten Runde alle Synapsen aktiv sind fangen auch nun alle Neuronen der Eingabeschicht auf alle Neuronen der Verarbeitungsschicht an zu feuern. Alle eingehenden Werte in ein Neuron der Verarbeitungsschicht werde zusammengerechnet. Da hier jedes Neuron auf jedes Neuron feuert haben alle Neuronen in der Verarbeitungsschicht den gleichen Inputt und zwar [0+1+1+0+1+1+1+1+0+1+1+1+0+1+0+0+0+1+1+1+0+1+0+0+0+1+1+0+1+1+1+1=20]


    [Blockierte Grafik: https://picload.org/image/rpawwwpa/nnn_secondline.png]


    Jetzt kommen die Neuronen aus der Verarbeitungsschicht zum Einsatz.
    In den meisten Neuronalen Netzen steckt hier eine kleine Rechnung hinter, die sich im Laufe der Ausführung ändern und anpassen kann. Auf diese veränderbare Rechnung habe ich in meinem Netz verzichtet und habe den Neuronen eine Konstante Abfrage mitgegeben, nach denen sie bestimmen sollen, ob die Eingabe richtig oder falsch ist.
    Die Frage, die sich nun stellt ist, wann ist die Eingabe richtig und wann ist sie falsch. Also ein Palindrom (Hier mit einer geraden Anzahl von Buchstaben) hat immer eine gerade Anzahl an 1sen und eine gerade Anzahl von 0len in seinem Bit Code. Also habe ich folgende Bedingung in die Neuronen eingebaut:

    Java
    if( value % 2 == 0 ) { output = 0; }
    else { output = 1; }

    Da in unserem Fall value in jedem Neuron 20 ist, kommt am Ende auch immer eine 0 raus. Somit sieht unsere Ausgabeschicht, die ebenfalls von jedem Neuron befeuert wird ziemlich 0lig aus:


    [Blockierte Grafik: https://picload.org/image/rpawwwpl/nnn_thirdline.png]


    Die Ausgabeneuronen werden ausgewertet. Befindet sich keine 1 darunter ist das Netz der Meinung es handelt sich um ein Palindrom und das Ergebnis wird als wahr gewertet.


    RICHTIG!!!


    Nun aber mal ein Wort, dass kein Palindrom ist, wie das Wort “Test“. Erst wird auch dieses Wort wieder in seine Bits zerlegt:


    “t“ = 01110100
    “e“ = 01100101
    “s“ = 01110011
    “t“ = 01110100


    Ohne jetzt immer das Netz zu zeichnen rechnen wir einfach mal nach, was bei der Verarbeitungsschicht ankommt: [0+1+1+1+0+1+0+0+0+1+1+0+0+1+0+1+0+1+1+1+0+0+1+1+0+1+1+1+0+1+0+0 = 17]


    Mit der 17 in der Verarbeitungsschicht angekommen wird wieder auf Mudolo 2 geprüft und festgestellt, dass 17 eine ungerade Zahl ist. Also wird hier von jedem Neuron eine 1 weiter gegeben. Mit lauter Einsen in der Ausgabeschicht ist sofort klar, dass es sich anscheinend nicht um ein Palindrom handelt.


    AUCH RICHTIG!!!


    Das sieht jetzt ja schon alles ganz gut aus. Doch die eigentliche Intelligenz, die ich versuchte nach zu bauen ist noch nicht da. Also werden wir mal etwas fieser und geben das NICHT Palindrom “temp“ rein.


    “t“ = 01110100
    “e“ = 01100101
    “m“ = 01101101
    “p“ = 01110000


    Und auch diese Bits wollen ausgerechnet werden: [0+1+1+1+0+1+0+0+0+1+1+0+0+1+0+1+0+1+1+0+1+1+0+1+0+1+1+1+0+0+0+0 = 16]
    Mit der Rechnung nach Modulo 2 wird festgestellt, dass es sich hierbei um eine gerade Zahl und somit auch um ein Palindrom handelt.


    FALSCH!!!


    Und jetzt geht es los….
    Nachdem das Netz ein falsches Ergebnis ausgeworfen hat, springt nun die Lernfunktion an. Hierbei werden “zufällig“ Synapsen aus der ersten in die zweite und von der zweiten in die dritte Schicht deaktiviert oder aktiviert und der Durchlauf wird wiederholt.


    Es dauert eine Zeit und viele Versuche, bis das Netz auch hier auf das richtige Ergebnis kommt.
    Jetzt wird wieder beim ersten Wort “Otto“ begonnen. Durch die Deaktivierung/Aktivierung einzelner Synapsen ist die Chance nun gegeben, dass hier das Netz bestimmt, dass es sich bei “Otto“ NICHT um ein Palindrom handelt.


    Da dies natürlich falsch ist, wird wieder an den Synapsen rumgeschraubt und der Test so lange wiederholt, bis das Ergebnis wieder richtig ist. Nach “Otto“ kommt wieder “Test“. Müssen hier Einstellungen gemacht werden, wird danach wieder mit “Otto“ angefangen.


    Erst wenn “Otto“, “Test“ und “Temp“ richtig interpretiert werden, kommt das nächste Wort.
    Für das Training hatte ich 100 Wörter vorgesehen, die ihren Test alle bestehen mussten, damit die KI sagt, sie sei fertig. Das Training habe ich natürlich nicht manuell vorgenommen, sondern habe es Unüberwacht gestaltet. (Ein unterschied der Neuronalen Netze ist das Überwachte lernen und das Unüberwachte lernen.)
    Mit einer kleinen GUI konnte ich dem Programm beim Lernen zugucken. und sehen, wann eine Synapse aktiviert und wann eine deaktiviert wurde. (Sah cool aus)


    Schön zu sehen war am Ende, welches Muster sich im Netz ergab:


    [Blockierte Grafik: https://picload.org/image/rpawwwii/nnn_afterlearning.png]


    Wie hier nun NICHT schön zu erkennen ist, wird das erste Bit des ersten Buchstaben mit dem ersten Bit des vierten Buchstabens und das zweite Bit des ersten Buchstabens mit dem zweiten Bit des vierten Buchstabens und das fünfte Bit des zweiten Buchstabens mit dem fünften Bit des dritten Buchstabens verglichen. Natürlich werden auch alle anderen miteinander verglichen. Und zwar so, dass am Ende immer das richtige Ergebnis raus kommt.


    FERTIG!!!


    Dies war nur eine einfache, wirklich richtig einfache, Ausführung eines Neuronalen Netzes. Ich habe dies auf einem solch niedrigen Level gehalten, da es mir nicht darum ging SkyNet nach zubauen, sondern einfach nur um zu verstehen, wie und was da im Hintergrund so abläuft.
    Ich möchte nicht Sagen, dass man nach diesem kleinen Beispiel die Welt der Neuronalen Netze versteht aber man bekommt einen kleinen Einblick davon, wie ein solches Netz arbeitet und was es mit dem lernen auf sich hat.


    Ich habe keine Ahnung ob ich das jetzt verständlich oder ausführlich genug erklärt habe. Wenn Fragen sind, einfach rein damit.
    Wenn ich es kann werde ich diese sogar beantworten.

    Kann Spuren von persönlicher Meinung, Sarkasmus und Lakritz enthalten. Einzelne Wörter nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: suche bei Google

  • Hey,


    da dieser kleine Beitrag wohl gut angekommen ist und ich auch schon der einen oder anderen PN dazu bekommen habe, werde ich wohl ein Tutorial dazu machen.


    Allerdings braucht das ein wenig Zeit. Ich werde mal sehen, dass ich zum Wochenende hin was zusammenstelle, mit dem man das Netz nachbauen kann.

    Kann Spuren von persönlicher Meinung, Sarkasmus und Lakritz enthalten. Einzelne Wörter nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: suche bei Google

  • Halo Fischkralle super deine Erklärung.
    Wie hast du das Netz den in Java umgesetz? Sind das drei Felder , mit in deinen Fall 32 Feldern?
    Ist es richtig das dein System nur mit Wörtern aus 4 Buchstaben arbeiten kann?
    Wie hast du es gemacht mit den activiren und deactiviern der Verbindungen damit das system lernnt?

  • Hey jogimuc,
    Jede Schicht (Eingang, Verarbeitung und Ausgabe) wurden als Objekte in einem Array der Länge 32 angelegt.
    Jedes dieser Objekte beinhaltete ein 32ger Boolean Arrays, welche die Verbindungen darstellen.


    Ich bin aber gerade dabei das Programm ein zweites mal für ein Tutorial am schreiben.
    Ich hatte zwar geschrieben ich würde das dieses Wochenende machen. Doch brauche ich doch etwas mehr Zeit.


    Die Sonne hatte etwas Vorrang.
    Werde aber den Quellcode bald öffentlich machen.

    Kann Spuren von persönlicher Meinung, Sarkasmus und Lakritz enthalten. Einzelne Wörter nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: suche bei Google

  • Ok das mit den Array und den Boolean Arry ist klar. Ob das einzelne Objekte sind ist erstmal egal für erweiterung praktisch. Nur wie machst du das mit den sich sebst verändern der Boolean werten? in einer Schleife alle möglichkeiten durchlaufen und die richtigern merken oder?

  • Wie ich ja schon in einem anderen Beitrag geschrieben hatte, gibt es keine künstliche Intelligenz, sondern nur genetische Algorithmen.
    Und ich glaube hier sind wir auf ein super Beispiel gestoßen


    Also:
    Die einzelnen Lernsysteme eines neuronalen Netzes unterscheiden sich in
    vielen Kategorien. Hier möchte ich die Kategorie Heuristik absprechen.


    (Passt auch zu einem anderen Thema (Neuronale Netze als Spiel))


    Das Netz, das ich erstellt hatte war auf einem solch niedrigem Level angesiedelt, dass ich sogar ohne Heuristik gearbeitet hatte.
    Aber was heißt das jetzt?
    Wurde ein falsches Ergebnis ausgegeben sprang folgende Funktion an:


    Java
    int noOfChanged = (int)(Math.random()*10);
    for(int i=0; i<noOfChanged; i++){
        int nrn = (int)(Math.random()*inNrns.length);
        int syn = (int)(Math.random()*inNrns[nrn].synapsis.length);
        inNrns[nrn].synapses[syn] = !inNrns[nrn].synapses[syn];
    }

    noOfChanged = Anzahl der zu ändernden Verbindungen
    nrn = Index des Neurons mit der zu ändernden Verbidnugen.
    syn = Die Synapse, die die Verbindung symbolisiert, die es zu ändern gilt.
    inNrns = Das Array in dem ich die Eingansschicht gespeichert hatte.
    synapses = Das Array in einem Neuron mit den Synapsen (Booleans)
    [Zu verstehen ist hier das eine Synapse nur aus einem boolean besteht und damit den Zustand einer Verbindung repräsentiert]


    Aus dem Grund des absolut zufällige Vorgehens dauerte es auch seine Zeit bis der Lernprozess abgeschlossen war.


    Hätte ich eine Heuristik eingebaut, wäre das Ziel schneller erreicht gewesen Eine Heuristik hätte Auskunft über das Ziel gegeben. Und auch hier gibt es
    wieder verschiedene Möglichkeiten. Die wohl einfachste wäre sich zu merken, an welchen Neuronen der Output Schicht das richtige Ergebnis
    angekommen ist. Somit würde für dieses Wort nur die Synapsen umgestellt, die nicht auf das Neuron der Verarbeitungsschicht zeigen, das das
    richtige Ergebnis an seinen Partner in der Ausgabeschicht übergibt.


    Ich hoffe diesmal habe ich mit meiner Antwort getroffen.

    Kann Spuren von persönlicher Meinung, Sarkasmus und Lakritz enthalten. Einzelne Wörter nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: suche bei Google

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!