Wie programmiert man eine selbstlernende Künstliche Intelligenz?

... komplette Frage anzeigen

10 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 ;)

Antwort bewerten Vielen Dank für Deine Bewertung

Im Cloud-Zeitalter muss man dazu nicht mehr unbedingt selbst in Infrastruktur und Software investieren, sondern kann entsprechende Entwicklungs-Plattformen nutzen. Ein Beispiel für künstliche Intelligenz wäre die IBM Watson Developer Cloud.

http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/

Da es sich um APIs handelt, ist man nicht auf bestimmte Programmiersprachen festgelegt.

Antwort bewerten Vielen Dank für Deine Bewertung

Du kannst prinzipiell mit jeder Programmiersprache eine künstliche Intelligenz programmieren - in der Theorie. In der Praxis scheitert man an den immer selben Problemen. Jene, die wahrscheinlich nicht daran scheitern täten (Bill Gates u.Co), warnen davor, die Entwicklung diesbezüglich voranzutreiben.

Hier eine interessante Abhandlung zu diesem Thema, auf die ich zufälligerweise gerade gestern stiess: http://www.cs.hs-rm.de/~panitz/ki/skript.pdf

Bez. Menschlich klingenden Stimmen: Es gibt verschiedene Varianten, um eine natürlich klingende virtuelle Stimme, also Sprache zu erreichen, die ihre Anwendung auch bei Vorlesesoftware etc. finden. Man kann jemanden anstellen, der das Wörterbuch von A bis Z vorliest, und dies aufnehmen, oder ihn etliche Silben und Lautr sprechen lassen, oder beides zusammen. Die grosse Anzahl an Aufnahmen kann dann spezifisch verwendetbwerden. Oder aber man generiert synthetische Laute ohne Sprecher. Diese klingen dann aber weniger natürlich meistens.


Antwort bewerten Vielen Dank für Deine Bewertung

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

Antwort bewerten Vielen Dank für Deine Bewertung

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.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von 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 .

Antwort bewerten Vielen Dank für Deine Bewertung

LISP war die ursprüngliche KI Programmiersprache.  Das Projekt KI gilt aber als quasi gescheitert. Geldmittel dafür wurden abgezogen 1990er Jahre.

Nur die Japaner, die eigentlich weit hinten dran waren haben mehr Geld reingesteckt und können jetzt so einfache Roboter präsentieren. Aber so richtig KI ist das wohl auch nicht ... alles in den Kinderschuhen ... ich denke AKITO oder so heisst da ein Frauenroboter: https://www.google.de/search?q=AI+Roboter+Japan&biw=1440&bih=710&tbm=isch&tbo=u&source=univ&sa=X&ved=0ahUKEwiZotup0e\_KAhXKIpoKHWjfCTQQsAQIGw

außerdem gibts noch nen Roboterhund für Senioren und es gibt so ein ROBOTWARS Events

Antwort bewerten Vielen Dank für Deine Bewertung

Um eine gute selbst lernende KI zu erschaffen, müsstest du ein Neuronales Netzwerk programmieren. Ich wünsche dir dabei viel Spaß und wenn du es schaffte kannst du wirklich sagen "Ick kann sehr gut programmieren.".

Antwort bewerten Vielen Dank für Deine Bewertung

Wenn ich dir das sagen könnte wäre ich der reichste mann der welt. Was kannst du denn schreiben?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Fred4
11.02.2016, 12:40

Was meinst du mit was kannst du den schreiben? Welche Sprache ich kann?

0
Kommentar von Fred4
11.02.2016, 12:44

Ich kann html css und lerne gerade c++ ich weiss html css sind keine Programmiersprachen und nach c++ will ich noch php lernen

0

Das Wissen dazu lässt sich kostenlos aus dem Internet zusammen klauen, grundsätzlich wenn es ums Programmieren und um Allgorithmen geht. Ich würde dir aber für deinen Wissensdurst empfehlen Geld in ein Buch zu Investieren.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Fred4
11.02.2016, 12:44

könntest du mir eins empfehlen

0

Was möchtest Du wissen?