1-2-AX Arbeitsspeicheraufgabe

Artikel bearbeiten
1-2-AX-Arbeitsspeicheraufgabe
ZweckArbeitsgedächtnisfähigkeiten des Langzeitgedächtnisses

Die 1-2-AX-Arbeitsspeicheraufgabe ist eine Aufgabe, bei der der Arbeitsspeicher gelöst werden muss. Es kann als Testfall für Lernalgorithmen verwendet werden, um ihre Fähigkeit zu testen, sich an alte Daten zu erinnern. Diese Aufgabe kann verwendet werden, um die Arbeitsgedächtnisfähigkeiten von Algorithmen wie PBWM oder Langzeitkurzgedächtnis zu demonstrieren.

Inhalt

  • 1 Beschreibung
    • 1.1 Beispiele
  • 2 Anforderungen
  • 3 Lösungen
    • 3.1 Pseudocode
    • 3.2 Finite-State-Maschine
    • 3.3 Neuronales Netz
  • 4 Referenzen

Beschreibung

Der Eingang der Aufgabe ist eine Folge der Zahlen / Buchstaben 1, 2, A, X, B, Y. Und zusätzliches C und Z, die ignoriert werden sollten. Die Ausgabe ist eine Folge der Buchstaben L und R - ein Buchstabe für jeden Eingabebuchstaben (außer C oder Z). Die Ausgabe R sollte genau dann zurückgegeben werden, wenn ein nachfolgender Teil der Eingabesequenz mit dem übereinstimmt regulärer Ausdruck "1 [AXBYCZ] * A [CZ] * X" oder "2 [AXBYCZ] * B [CZ] * Y". Andernfalls (außer C oder Z) sollte ein L zurückgegeben werden. Mit anderen Worten, C und Z werden vollständig ignoriert. Die Sequenz AX oder BY wird akzeptiert (mit einem R), je nachdem, ob die letzte Zahl eine 1 oder eine 2 war. Andernfalls wird ein L zurückgegeben.

Beispiele

  • "21AAXBYAX" → "LLLLRLLLR"
  • "12CBZY" → "LLLR"

Bedarf

Um diese Aufgabe zu lösen, muss ein Algorithmus in der Lage sein, sich sowohl die letzte Nummer 1 oder 2 als auch den letzten Buchstaben A oder B unabhängig voneinander zu merken. Wir bezeichnen diesen Speicher als Arbeitsspeicher. Dieser Speicher muss alle anderen Eingaben beibehalten. Außerdem muss der Algorithmus in der Lage sein, die Buchstaben C und Z zu entfernen und zu ignorieren.

Lösungen

Pseudocode

Bei herkömmlichen Computermodellen sind beide Anforderungen leicht zu lösen. Hier ist ein Python- Code (eine Art Pseudocode, funktioniert aber), bei dem die Funktion next_output eine einzelne Zahl / einen einzelnen Buchstaben als Eingabe erhält und entweder einen Buchstaben oder nichts zurückgibt. Mit next_outputs können Sie bequem eine ganze Sequenz bearbeiten.

last_num = ""last_letter = ""def next_output(next_input: str):global last_num, last_letterif next_input in ["1", "2"]:last_num = next_inputlast_letter = ""return "L"elif next_input in ["A", "B"]:last_letter = next_inputreturn "L"elif next_input in ["X", "Y"]:seq = last_num + last_letter + next_inputlast_letter = next_inputif seq in ["1AX", "2BY"]:return "R"return "L"return Nonedef next_outputs(next_inputs: str) -gt; List[str]:"""Args:next_input: A string. Returns:A list of strings.Example:gt;gt;gt; next_outputs("21AAXBYAX")['L', 'L', 'L', 'L', 'R', 'L', 'L', 'L', 'R']"""return [next_output(c) for c in next_inputs]

Beispiel:

gt;gt;gt; next_outputs("21AAXBYAX")['L', 'L', 'L', 'L', 'R', 'L', 'L', 'L', 'R']gt;gt;gt; next_outputs("12CBZY")['L', 'L', None, 'L', None, 'R']

Finite-State-Maschine

In ähnlicher Weise kann diese Aufgabe auf einfache Weise durch eine Finite-State-Maschine mit 7 Zuständen gelöst werden (nennen Sie sie ---, 1--, 2--, 1A-, 2B-, 1AX, 2BY).

Neurales Netzwerk

Diese Aufgabe ist für neuronale Netze viel schwieriger. Für einfache neuronale Feedforward-Netzwerke ist diese Aufgabe nicht lösbar, da Feedforward-Netzwerke keinen Arbeitsspeicher haben. Schließlich ist es eine schwierige Aufgabe, das Arbeitsgedächtnis in neuronale Netze einzubeziehen. Es gab verschiedene Ansätze wie PBWM oder Langzeit-Kurzzeitgedächtnis mit Arbeitsgedächtnis. Diese 1-2-AX-Aufgabe ist eine gute Aufgabe für diese Modelle und beide können die Aufgabe lösen.

Verweise

Contacts: mail@wikibrief.org
Der Inhalt ist unter der CC BY-SA 3.0-Lizenz verfugbar (sofern nicht anders angegeben).