Künstliche Intelligenz: Creatures: Lernfähigkeit?

Moin,

vor einigen Jahren habe ich im Spiegel einen Artikel über das Programm (Spiel) Creatures gelesen, in dem ein lernfähiger Charakter implementiert wurde, der in Abwandlung dann auch als Computer-Gegner in Militär-Flugsimulatoren eingesetzt worden sein soll.

Ich stelle mir nun die Frage: Wie programmiert man sowas? Also Lernfähigkeit wurde glaube ich mit Trial and Error umgesetzt, aber wie bringt man einem Computerprogramm bei, welches Ergebnis „wünschenswert/postitiv/zielführend“ war und dass er eben den beschrittenen Weg als effektiv beibehalten soll und andere Wege zu einem nicht wünschenswertem Ergebnis führen?

Ich hoffe mein Problem ist deutlich geworden: Wie pflanze ich einem Computerprogramm „Richtig“ und „Falsch“ -Werte ein, damit „Trial und Error“ überhaupt funktionieren kann?

thx
moe.

Hi Moe,

Ich hoffe mein Problem ist deutlich geworden: Wie pflanze ich
einem Computerprogramm „Richtig“ und „Falsch“ -Werte ein,
damit „Trial und Error“ überhaupt funktionieren kann?

in Spiele, übernimmt das der Spieler, bei ‚Black an White‘ z.B. wird die ‚Kreatur‘ vom Spieler belohnt oder bestraft. (streicheln oder schlagen)

Gruß, Rainer

Hi Moe,

Ich hoffe mein Problem ist deutlich geworden: Wie pflanze ich
einem Computerprogramm „Richtig“ und „Falsch“ -Werte ein,
damit „Trial und Error“ überhaupt funktionieren kann?

in Spiele, übernimmt das der Spieler, bei ‚Black an White‘
z.B. wird die ‚Kreatur‘ vom Spieler belohnt oder bestraft.
(streicheln oder schlagen)

und wie wird dem Programm vermittelt, dass „streicheln“ wünschenswert/positiv ist und „schlagen“ negativ?

thx
moe.

Hi Moe,

und wie wird dem Programm vermittelt, dass „streicheln“
wünschenswert/positiv ist und „schlagen“ negativ?

mit einem Flag, einem Wert in der Datenbank, mit dem der Faktor für den Zufallsgenerator beeinflußt wird. Das wird jeder Programmierer etwas anders machen, denke ich.
Ich würde bei jedem möglichen ‚Verhalten‘ per Zufallsgenerator ermitteln, ob die Aktion ausgeführt werden soll und die Wahrscheinlichkeit mit dem Erfahrungswert verschieben.

Noch mal das Beispiel ‚Black and White‘.
Frißt die Kreatur einen Menschen, wird sie satt, das wird positiv vermerkt. Soll sie aber nicht, akso wird sie bestraft, das wird negativ vermerkt.
Ist die Kreatur ohnehin satt und wird für das Fressen von Menschen bestraft, wirkt die negative Erfahrung schwerer, das Verhalten wird abgeschwächt. Kümmert sich der Spieler um die Kreatur, wird sie sehr bald keine Menschen mehr fressen … lerneffekt.

Gruß, Rainer

Hi Moe,

und wie wird dem Programm vermittelt, dass „streicheln“
wünschenswert/positiv ist und „schlagen“ negativ?

mit einem Flag, einem Wert in der Datenbank, mit dem der
Faktor für den Zufallsgenerator beeinflußt wird. Das wird
jeder Programmierer etwas anders machen, denke ich.
Ich würde bei jedem möglichen ‚Verhalten‘ per Zufallsgenerator
ermitteln, ob die Aktion ausgeführt werden soll und die
Wahrscheinlichkeit mit dem Erfahrungswert verschieben.

Hast Du ein simples Zahlenbeispiel? Meine Vorstellungskraft reicht noch nicht ganz aus um das zu manifestieren :wink:

Noch mal das Beispiel ‚Black and White‘.
Frißt die Kreatur einen Menschen, wird sie satt, das wird
positiv vermerkt. Soll sie aber nicht, akso wird sie bestraft,
das wird negativ vermerkt.
Ist die Kreatur ohnehin satt und wird für das Fressen von
Menschen bestraft, wirkt die negative Erfahrung schwerer, das
Verhalten wird abgeschwächt. Kümmert sich der Spieler um die
Kreatur, wird sie sehr bald keine Menschen mehr fressen …
lerneffekt.

das ist soweit klar, nur wie das konkret aussieht (positiv/negativ) leuchtet mir noch immer nicht ein.

thx
moe.

Hi Moe,

ich hab’s mal als VB-Programm geschrieben. Ich denke das sollte verständlich sein.

Option Explicit
Dim Erfahrung As Byte

Private Sub Form\_Load()
 Erfahrung = 127 'Normalwert, 50%
End Sub

Private Sub cmdNegativ\_Click()
 If Erfahrung \> 0 Then
 Erfahrung = Erfahrung - 1
 End If
 aktion
End Sub

Private Sub cmdPositiv\_Click()
 If Erfahrung 

OK? In der Anwendung steht die Variable dann natürlich in einer DB.

Gruß, Rainer

Hi Moe,

ich hab’s mal als VB-Programm geschrieben. Ich denke das
sollte verständlich sein.

Option Explicit
Dim Erfahrung As Byte

Private Sub Form_Load()
Erfahrung = 127 'Normalwert, 50%
End Sub

Private Sub cmdNegativ_Click()
If Erfahrung > 0 Then
Erfahrung = Erfahrung - 1
End If
aktion
End Sub

Private Sub cmdPositiv_Click()
If Erfahrung

OK?

Hmmmmm… zunächst Danke für die Mühe.
Aber: Wenn ich das richtig verstehe, dann ist das ja keine Lernfähigkeit im eigentlichen Sinne. Es gibt nur die Möglichkeit einen „Erfahrungsrahmen“, den der Programmierer schon kennen muss, dem Avater bis zu einem gewissen Rahmen zugänglich zu machen. Avater wird also nicht über das hinaus „lernen“ können, was der Programmierer vorgegeben hat, richtig?

Ich hatte das revolutionäre am Konzept eher so verstanden, dass eine eigenständige Lernfähigkeit unabhängig von „Wissensvorgaben“ des Programmierers möglich ist. Im Spiegel-Artikel schrieb der Creatures-Programmierer, dass sein Avatar mit Spielen belohnt wurde und in der Programmierung das werfen eines Balles gegen eine Wand vorgesehen war. Durch den „Lern-Algorithmus“ entstand das Ergebnis, dass sich Avatar mit einem anderen Avatar den Ball hin- und herspielte, was wiederum nicht in der Programmierung selbst vorgesehen war…

weiterhin dankbar für erleuchtende Hinweise zum Konzept „Lernfähigkeit von Computer-Programmen“
moe.

Hi Moe,

Hmmmmm… zunächst Danke für die Mühe.

*gg* das war keine Mühe, hat doch nur ein paar Minuten gedauert.

Aber: Wenn ich das richtig verstehe, dann ist das ja keine
Lernfähigkeit im eigentlichen Sinne. Es gibt nur die
Möglichkeit einen „Erfahrungsrahmen“, den der Programmierer
schon kennen muss, dem Avater bis zu einem gewissen Rahmen
zugänglich zu machen. Avater wird also nicht über das hinaus
„lernen“ können, was der Programmierer vorgegeben hat,
richtig?

Absolut richtig. Genau dazu sind die Spiele, Flugsimulatoren … im Moment fähig. Zu mehr nicht.

Ich hatte das revolutionäre am Konzept eher so verstanden,
dass eine eigenständige Lernfähigkeit unabhängig von
„Wissensvorgaben“ des Programmierers möglich ist.

Das soll wohl schon entwickelt sein, hat aber mit PCs nichts zu tun.

Im
Spiegel-Artikel schrieb der Creatures-Programmierer, dass sein
Avatar mit Spielen belohnt wurde und in der Programmierung das
werfen eines Balles gegen eine Wand vorgesehen war. Durch den
„Lern-Algorithmus“ entstand das Ergebnis, dass sich Avatar mit
einem anderen Avatar den Ball hin- und herspielte, was
wiederum nicht in der Programmierung selbst vorgesehen war…

Das kann schon vorkommen, daß bei sehr komplexen Programmen die Ergebnisse überraschen, wenn verschiedene Effekte sich überlagern. Daß ein Programm auf einem PC kreativ sein kann halte ich für eine Werbeaussage. Das ist noch Zukunft.

weiterhin dankbar für erleuchtende Hinweise zum Konzept
„Lernfähigkeit von Computer-Programmen“

Unterhalte Dich darüber mal mit Microdigi, der hat da deutlich mehr Ahnung. IMHO hat der so etwas (mit?) entwickelt, nur fertig produziert ist es noch nicht. Micorodigi meint, wir werden noch 10 Jahre darauf warten müssen.

Gruß, Rainer

Hi Moe,

in einem anderen Brett hast Du vor einiger Zeit nach dem unterschied zwischen NC und CNC gefragt und eine falsche Antwort bekommen. Ich konnte das nicht korrigieren, weil der Beitrag abgeschlossen war.
Eine NC-Maschine hat keinen Computer, nur eine elektromechanische Steuerung und eine Längenmeßeinrichtung. Die Steuerung erfolgt über einen Lochstreifen und Sensoren, die den Transport des Lochstreifens auslösen. '72 habe ich an so einem Ding gearbeitet. :smile:

Gruß, Rainer

Hi Moe,

Hmmmmm… zunächst Danke für die Mühe.

*gg* das war keine Mühe, hat doch nur ein paar Minuten
gedauert.

Aber: Wenn ich das richtig verstehe, dann ist das ja keine
Lernfähigkeit im eigentlichen Sinne. Es gibt nur die
Möglichkeit einen „Erfahrungsrahmen“, den der Programmierer
schon kennen muss, dem Avater bis zu einem gewissen Rahmen
zugänglich zu machen. Avater wird also nicht über das hinaus
„lernen“ können, was der Programmierer vorgegeben hat,
richtig?

Absolut richtig. Genau dazu sind die Spiele, Flugsimulatoren
… im Moment fähig. Zu mehr nicht.

Ich muss diesen Spiegel-ARtikel wohl tatsächlich suchen!! :frowning: Genau davon war nämlich die Rede. Flugsimulatoren, deren Fähigkeiten die des Piloten überschreiten.

Ich hatte das revolutionäre am Konzept eher so verstanden,
dass eine eigenständige Lernfähigkeit unabhängig von
„Wissensvorgaben“ des Programmierers möglich ist.

Das soll wohl schon entwickelt sein, hat aber mit PCs nichts
zu tun.

Aber programmiert werden muss das doch auch, oder?

Im
Spiegel-Artikel schrieb der Creatures-Programmierer, dass sein
Avatar mit Spielen belohnt wurde und in der Programmierung das
werfen eines Balles gegen eine Wand vorgesehen war. Durch den
„Lern-Algorithmus“ entstand das Ergebnis, dass sich Avatar mit
einem anderen Avatar den Ball hin- und herspielte, was
wiederum nicht in der Programmierung selbst vorgesehen war…

Das kann schon vorkommen, daß bei sehr komplexen Programmen
die Ergebnisse überraschen, wenn verschiedene Effekte sich
überlagern. Daß ein Programm auf einem PC kreativ sein kann
halte ich für eine Werbeaussage. Das ist noch Zukunft.

Ganz so pessimistisch bin ich da nicht: Von derartigen Methoden habe ich schon öfter gehört. Auch an der TU-Berlin wird damit beispielsweise gearbeitet. Da gibt es ein Institut, das sich mit „Evolutions-Technologie“ beschäftigt. Auf ähnlicher Basis werden durch zufällige Mutationen z.B. Flügelprofile verändert und die Ergebnisse dann in „positive Veränderung“ und „negative Veränderung“ unterteilt und weiter mutiert. Allein die Implementierung von „positiv“/„negativ“ ist mir wie schon gesagt noch vollkommen schleierhaft. :wink:

weiterhin dankbar für erleuchtende Hinweise zum Konzept
„Lernfähigkeit von Computer-Programmen“

Unterhalte Dich darüber mal mit Microdigi, der hat da deutlich
mehr Ahnung. IMHO hat der so etwas (mit?) entwickelt, nur
fertig produziert ist es noch nicht. Micorodigi meint, wir
werden noch 10 Jahre darauf warten müssen.

werde microdigi mal suchen. Ist doch User hier, oder?

thx
moe.

Hi Moe,

in einem anderen Brett hast Du vor einiger Zeit nach dem
unterschied zwischen NC und CNC gefragt und eine falsche
Antwort bekommen. Ich konnte das nicht korrigieren, weil der
Beitrag abgeschlossen war.
Eine NC-Maschine hat keinen Computer, nur eine
elektromechanische Steuerung und eine Längenmeßeinrichtung.
Die Steuerung erfolgt über einen Lochstreifen und Sensoren,
die den Transport des Lochstreifens auslösen. '72 habe ich an
so einem Ding gearbeitet. :smile:

Ich glaube gehört zu haben, dass auch NC-Maschinen „programmiert“ wurden?! Wie programmiert man eine Maschine ohne Computer? Oder wurde Programmierung damals anders verstanden als heute??

thx
moe.

Hallo,

Ich glaube gehört zu haben, dass auch NC-Maschinen
„programmiert“ wurden?!

ja, natürlich.

Wie programmiert man eine Maschine
ohne Computer? Oder wurde Programmierung damals anders
verstanden als heute??

ja, völlig anders. Das Programm waren die Löcher in dem Papierstreifen.

Ich hatte auch das ‚Vorgängermodell‘, das war noch einfacher und leichter zu beschreiben. Eine Fräsmaschine mit ‚Anschlägen‘ am Tisch, die Microtaster gedrückt haben. Die Microtaster haben dann eine Walze einen Schritt weiter geschaltet. Die Walze und die Führung hat Rillen, um Kugeln zu führen. Die Kugeln schalten die Motore der Maschinen und schon läuft ein Programm ab, so wie die Kugeln eingelegt werden. Programmiert wird die Maschine mit den Kugeln. Mehr als ein paar Microtaster und ein paar Relais gab es da nicht.

Gruß, Rainer

Hi Moe,

Ich muss diesen Spiegel-ARtikel wohl tatsächlich suchen!! :frowning:
Genau davon war nämlich die Rede. Flugsimulatoren, deren
Fähigkeiten die des Piloten überschreiten.

hmmm, schade, den Spielgel habe ich nicht abboniert …

Ich hatte das revolutionäre am Konzept eher so verstanden,
dass eine eigenständige Lernfähigkeit unabhängig von
„Wissensvorgaben“ des Programmierers möglich ist.

Das soll wohl schon entwickelt sein, hat aber mit PCs nichts
zu tun.

Aber programmiert werden muss das doch auch, oder?

Die zukünftige Rechnergeneration mit KI? Nein. Ein minimaler algorithmus, der den Betrieb ermöglicht reicht da wohl, der Rest ist Problemlösung per lernfähiger KI. Ich denke, daß so ein System Informationen, Bilder anfordern wird, die nötig sind, ein Problem zu lösen. Ich glauge nicht, daß ein Programm da nützlich und/oder nötig ist.

Im
Spiegel-Artikel schrieb der Creatures-Programmierer, dass sein
Avatar mit Spielen belohnt wurde und in der Programmierung das
werfen eines Balles gegen eine Wand vorgesehen war. Durch den
„Lern-Algorithmus“ entstand das Ergebnis, dass sich Avatar mit
einem anderen Avatar den Ball hin- und herspielte, was
wiederum nicht in der Programmierung selbst vorgesehen war…

Das kann schon vorkommen, daß bei sehr komplexen Programmen
die Ergebnisse überraschen, wenn verschiedene Effekte sich
überlagern. Daß ein Programm auf einem PC kreativ sein kann
halte ich für eine Werbeaussage. Das ist noch Zukunft.

Ganz so pessimistisch bin ich da nicht: Von derartigen
Methoden habe ich schon öfter gehört. Auch an der TU-Berlin
wird damit beispielsweise gearbeitet. Da gibt es ein Institut,
das sich mit „Evolutions-Technologie“ beschäftigt. Auf
ähnlicher Basis werden durch zufällige Mutationen z.B.
Flügelprofile verändert und die Ergebnisse dann in „positive
Veränderung“ und „negative Veränderung“ unterteilt und weiter
mutiert. Allein die Implementierung von „positiv“/„negativ“
ist mir wie schon gesagt noch vollkommen schleierhaft. :wink:

weiterhin dankbar für erleuchtende Hinweise zum Konzept
„Lernfähigkeit von Computer-Programmen“

Unterhalte Dich darüber mal mit Microdigi, der hat da deutlich
mehr Ahnung. IMHO hat der so etwas (mit?) entwickelt, nur
fertig produziert ist es noch nicht. Micorodigi meint, wir
werden noch 10 Jahre darauf warten müssen.

werde microdigi mal suchen. Ist doch User hier, oder?

Ja, ich habe aber schon einige Zeit nichts von ihm gelesen. Ich habe aber noch eine Mail von ihm … soll ich ihn bitten, Dir mal 'ne Mail zu schreiben?

Gruß, Rainer