Damit ein Large language model ein Videospiel automatisiert durchspielt braucht es mehrere Ebenen aus der DIKW Pyramide. Auf layer 3 (knowledge) wird eine Spielszene in Stichpunkten beschrieben auf einer sehr hohen Abstraktionsschicht. Dies wird dann in den layer2 übersetzt, der viel präziser ist aber weniger leicht zu lesen für einen Menschen und schlußendlich auf den Layer1 transformiert der die low level Daten Ebene darstellt. Der Layer1 kann dann an die Game engine gesendet werden, also an die ScummVM welche das point&click adventure ausführt.
Hier alle 3 layer der DIKW pyramide in einer übersichtlichen json notation.
{
"game": "Zak McKracken and the Alien Mindbenders",
"card_id": 1,
"title": "Morgenroutine in San Francisco",
"representation_1_natural_language": {
"format": "Karteikarte (Menschlich)",
"content": [
"Wache in Zaks Schlafzimmer auf.",
"Nimm das Aquarium-Netz unter dem Bett.",
"Gehe ins Wohnzimmer und nimm die Fernbedienung vom Fernseher.",
"Gehe in die Küche.",
"Nimm das stumpfe Brotmesser aus der Spüle.",
"Öffne den Kühlschrank und nimm das Ei."
]
},
"representation_2_intermediate_logic": {
"format": "Text-to-Action Reasoning (Zwischenschritt)",
"note": "Hier werden implizite Aktionen und Raumwechsel für die KI logisch explizit gemacht.",
"logic_chain": [
{"state": "Room: Bedroom", "goal": "Inventory: Fishnet", "sub_action": "PickUp(Fishnet, under_bed)"},
{"state": "Room: Bedroom", "goal": "Change Room", "sub_action": "WalkTo(Door_West)"},
{"state": "Room: Living Room", "goal": "Inventory: Remote", "sub_action": "PickUp(Remote_Control, on_TV)"},
{"state": "Room: Living Room", "goal": "Change Room", "sub_action": "WalkTo(Door_North)"},
{"state": "Room: Kitchen", "goal": "Inventory: Knife", "sub_action": "PickUp(Bread_Knife, in_Sink)"},
{"state": "Room: Kitchen", "goal": "Access Fridge", "sub_action": "Open(Refrigerator)"},
{"state": "Room: Kitchen", "goal": "Inventory: Egg", "sub_action": "PickUp(Egg, inside_Fridge)"}
]
},
"representation_3_low_level_scumm": {
"format": "SCUMM Engine Executable (Low Level)",
"note": "Direkte Opcode-artige Anweisungen, die Objekten IDs und Verben zuordnen (fiktive IDs).",
"commands": [
{"op": "CUTSCENE_START"},
{"op": "PICK_UP", "obj_id": 142, "comment": "Fishnet"},
{"op": "WALK_TO_OBJECT", "obj_id": 201, "comment": "Door to Living Room"},
{"op": "PICK_UP", "obj_id": 155, "comment": "Remote Control"},
{"op": "WALK_TO_OBJECT", "obj_id": 202, "comment": "Door to Kitchen"},
{"op": "PICK_UP", "obj_id": 160, "comment": "Bread Knife"},
{"op": "OPEN", "obj_id": 175, "comment": "Refrigerator"},
{"op": "PICK_UP", "obj_id": 176, "comment": "Egg"},
{"op": "CUTSCENE_END"}
]
}
}
Das interessante an dem Ansatz ist die Abwesenheit einer künstlichen Intelligenz im klassischen Sinne. Es gibt also kein neuronales Netz oder einen Reinforcement Learning algorithmus welches das Spiel durchspielt sondern die KI wurde so implementiert, dass sie zwischen den layern der DIWK pyramide eine Übersetzung ausführt. Wenn man möchte dass im Videospiel eine andere Aktion ausgeführt wird, schreibt man in den obersten Layer andere Stichworte hinein, die werden dann in echtzeit in die unteren Layer transformiert und ausgeführt. Das prinzip ist vergleichbar mit Unix pipes, also einer Filterkaskade die input in output übersetzt.
No comments:
Post a Comment