Wie programmiert man eine selbstlernende Künstliche Intelligenz?

9 Antworten

Die heutigen AIs ("artificial intelligence") sind Mischungen aus neuronalen Netzwerken, Data Mining ("big data") und Raten. Neuronale Netzwerke sind unglaublich einfache Kombinationen aus ein paar wirklich billigen Formeln.Im Ernst, es ist so. Stell dir ein Neuron vor, die kleine (nicht kleinste) EInheit eines solchen Netzwerks. Ein Neuron hat ein paar Eingänge und meistens einen Ausgang. Das Neuron berechnet aus den Eingangswerten einen Ausgangswert. Die daran beteiligten Formeln sind das Geheimnis der ganzen AI/KI. Jetzt ist es aber nicht so, dass die Formeln unfassbar komplex wären und ein fortgeschrittenes Studium der Mathematik oder Informatik bedürften, im Gegenteil.Du kannst beispielsweise einem Eingang beibringen, dass er einen gewissen Wert an das Neuron liefert, wenn ein gewisser Wert eben am Eingang anliegt. Die Formel dazu kann dann so etwas Triviales wie A = E, also "Ausgangswert gleich Eingangswert" sein. Wichtig ist, dass du durch dein gesamtes Netzwerk ein "Wertesystem" legst, sodass jeder Eingang an das Neuron gleichwertige Werte liefert. Angenommen, das Wertesystem hätte einen Umfang von 4 Bit, also von 0000 bis 1111. Das gibt 16 diskrete Werte. Du kannst dann in der Ausformulierung der Formel festlegen, dass die Werte 0000 bis 0111 negative Werte sind und die von 1000 bis 1111 positive. Da hättest du dann ein Neuron, das zwischen "Sehr wahrscheinlich nein" über "quasi Neutral" bis hin zu "sehr wahrscheinlich ja" aussagt.Du kannst aber ein Neuron auch anders definieren. Das Wertesystem bleibt. Stell dir nun vor, du hättest A/D-Wandler mit 4 Bit Auflösung. Vor den A/D-Wandlern hängen Sensoren ("Sinne"). Einer der Sensoren eines autonomen Staubsauger-Roboters ermittelt den Ladestand seines Akkus, und ein anderer ermittelt die Entfernung zur Ladestation. Aus der Entfernung zur Ladestation ergibt sich einleuchtend die verbleibende Saugzeit, bis die Ladung des Akkus nur noch dafür ausreicht, dass der Roboter selbstständig zurück zur Ladestation fahren kann.Akku-Ladezustände präzise zu ermitteln, ist eine Kunst, keine Wissenschaft. Dennoch kannst du einer AI beibringen, Erfahrungswerte zu sammeln, also solche Eingangswerte in einer Datenbank zu speichern. Sagen wir mal, dabei käme heraus, dass 20% der Akku-Kapazität ohne Saugen noch reichen, um 5 Meter bis zur Ladestation zurückzulegen. Das ist so, wie wenn du schon Durst fühlst, aber dir noch sicher bist, dass du bis zum nächsten Wasserhahn kommst.Nun stell dir vor, der Sohn des Hauses findet es lustig, den Saugroboter vom Erdgeschoss in sein Zimmer zu tragen und mit ihm Fußball zu spielen, ohne auf die Ladeanzeige zu achten. Der Akku hat immer noch 20% Ladekapazität, aber ist nun 10 Meter von der Ladestation entfernt, ganz abgesehen von der Treppe, die ihn vom Erdgeschoss trennt.Da jetzt ein einzelnes Neuron namens "Panik" dazu zu bewegen, die letzten Energiereserven dafür aufzuwenden, einen Alarmton ("Geschrei") auszustoßen, ist nichts anderes, als eine Funktion mit 2 Eingabewerten und 1 Ausgabewert zu schreiben. Das Neuron abstrahiert es nur: "Akkuladung < 20% UND Entfernung > 5m = 1100!" Wieso 1100? Weil es da schon sehr arg Not tut, den Saugroboter irgendwie zu retten, auch wenn der mögliche Wert von 15 (1111) nicht erreicht, sondern erst bei 12 (1100) liegt.Babys schreien ja aus den unerfindlichsten Gründen: Ihnen ist zu warm, zu kalt, Mama kümmert sich nicht genug, der Strampler kneift, Oma hat böse geschaut, ein Pups hängt quer...: Das Baby schreit!Wie gesagt, so ein Verhalten lässt sich recht einfach mit einem sehr einfachen "Hirn" aka neuronalen Netzwerk hinstellen.Komplizierter wird es, wenn das Baby / der Saugroboter etwas lernen soll. Nehmen wir an, der der Sohn des Hauses hat zwar Spaß daran, die letzten Energiereserven des Saugroboters bis zur roten Anzeige des Ladezustands dieses Geräts für seinen Spaß auszukosten, trägt den Roboter dann aber liebervoll und zuverlässig zur Ladestation und stöpselt ihn ein. Das dann angemessene Verhalten des Roboters wäre, eben nicht zu schreien, weil er erfahren / gelernt hat, dass er vor dem totalen elektischen Kollaps wieder aufgeladen wird. Damit das funktioniert, reichen ein, zwei Neuronen nicht mehr aus, das System wird komplexer. Es ist unangebracht, dass das Neuron aus Ladezustand und Entfernung gleich Alarm schlägt.Ob das aber so ist, muss der Saugroboter selber lernen, also er muss Erfahrungen sammeln. Der Zugriff auf Erfahrungen ist kein programmiertechnisches Kunststück, sondern das Sammeln (in der Umgebung von Menschen) von Sozialverhalten ist es.Der klassische Ansatz beim "Machine Learning" ist, die Neuronen und ihre Teile so zu gestalten, dass die Übersetzer, also die eingeimpften Funktionen, die aus einem Eingangs- einen Ausgangswert machen, über Parameter zu modifizieren. Dazu gibt es quasi unendlich viel Literatur. Der nächste Trick ist, den Ausgangswert dann wieder zurück in die höheren Ebenen zu bringen ("Backpropagation"), um das Antwortverhalten zu optimieren. Trick, Kunst, Ratespiel deswegen, weil sich daraus ein chaotisches System ergibt, das entweder auf einen klaren Zielwert oder auf ein unbrauchbares Hin- und Her-Geschalte hinaus artet.Neuere Ansätze hierzu schalten gleich 3 neuronale Netzwerke hintereinander: Sensor, Kogitor, Aktor. Das Sensor-Netzwerk nimmt Signale auf, etwa die Position und den Ladezustand, vielleicht, weil der Roboter auch im Dunklen navigieren soll, Ultraschallsensor-Werte. Das Aktor-Netzwerk erzeugt die Antworten. Das können Signale an eine Motorsteuerung sein bei einem Roboter, aber auch Sprachausgabe auf einem dummen Laptop. Beim Roboter wäre es problematisch, jemand würde die "Ohren", also Mikrofone aus Spaß mit einem Kaugummi zu kleben.Da kommt der Kogitor, also der "Wissende", der "Erfahrene" zum Einsatz, um solche Fehler zu kompensieren. Hierzu ist es aber nötig, dass das gesamte System Ziele hat. Es muss in diesem Fall lernen, dass es sich nicht mehr auf seine Mikrofone verlassen kann.Na ja, und so weiter, und so weiter. Die Evolution hat zighundert Millionen Jahre dafür gebraucht ;)

Hallo,

um eine KI zu programmieren bedarf es sehr viel Programmierarbeit, da das Programm wahrscheinlich auch noch selbst lernen soll. Kurzgefasst funktioniert es so: Das Hauptprogramm speichert Daten in Dateien oder in Datenbanken. Beim Start oder zwischendurch liest das Programm die Dateien oder die Datenbanken und speichert dann temporär die Bedeutungen von den Wörtern und von Sätzen ab. Falls eine Frage mit einem gespeicherten Satz kommt, kann das Programm diese beantworten. Falls der Satz unbekannt ist, könnte man dem Programm einprogrammieren das es fragen soll, was der Satz bedeutet oder sucht dann mit z.B. "http://www.google.de/?#q=" + satz + "". Dieses Wissen speichert das Programm wieder ab.

Wenn die KI für Android sein soll, könnte man die Sprachaufnahmen von Google Now oder Google Text-in-Sprache benutzen.

Ich hoffe ich konnte helfen

linuxmensch12

gibts doch schon längst, die google app ( mit der sprachsuche ) sag einfach: "definition auto" .. google greift halt auf die wikipedia artikel zu und lässt sie vorlesen, nennt sich text-to-speech , ist halt ne sehr aufwendige sache du musst den programm alles bei bringen da es noch keine richtige ki gibt die wie ein kind sachen selbst lernen kann

Selbst die Google Sprachsuche oder Siri würden bei der Frage nur den ersten Satz aus einem Wikipedia Artikel vorlesen. Und das sind beides Systeme, die auf einer großen Serverfarm laufen, damit sie genug Leistung haben, um zu funktionieren. Ich weiß es zwar nicht 100%ig, aber ich gehe davon aus, dass die Google-Variante in Java und die Apple-Variante in Swift oder Xcode geschrieben wurde.

linuxmensch12  25.06.2016, 15:00

XCode ist die Entwicklungsumgebung von Apples Apps. Zum programmieren wird Swift oder Objective-C verwendet.

0

Das eine hat irgendwie nichts mit dem anderem zu tun .

Selbstlernend ? Bezogen worauf ? Sprache selber lernen ? Ein spiel lernen ?

Das Leben lernen ?

Stimmen Menschlich klingen lassen ? Öhm , da gibt es sehr viele Möglichkeiten abzudecken und ich würde fast sagen , es wird nie wirklich Menschlich klingen , da schon das eine oder andere komplizierte Regelwerk stimmen absenken bzw anheben müsste und auch die Zusammenstellung einzelner Silben müsste wieder auf den Gesamtkontext eingstimmt werden .

Selbst das Vorlesen muss man ausgiebig üben damit man die entsprechende Emotion in die Stimme legt .