1-2-AX задача рабочей памяти | |
---|---|
Цель | рабочая память способности долговременной кратковременной памяти |
Задача рабочей памяти 1-2-AX - это задача, которая требует решения рабочей памяти . Его можно использовать как тестовый пример для алгоритмов обучения, чтобы проверить их способность запоминать некоторые старые данные. Эту задачу можно использовать для демонстрации возможностей рабочей памяти таких алгоритмов, как PBWM или долговременная краткосрочная память . [1]
Описание [ править ]
Ввода задачи представляет собой последовательность из цифр / букв 1 , 2 , , X , B , Y . И дополнительные C и Z, которые следует игнорировать. Выход представляет собой последовательность букв L и R - по одной букве на каждую входную букву (кроме C или Z ). Выход R должен возвращаться тогда и только тогда, когда есть соответствие любой конечной части входной последовательности с регулярное выражение «1 [AXBYCZ] * A [CZ] * X» или «2 [AXBYCZ] * B [CZ] * Y». В противном случае (кроме C или Z) следует вернуть букву L. Другими словами, C и Z полностью игнорируются. Последовательность AX или BY принимается (с R ) в зависимости от того, был ли самый последний номер 1 или 2 . В противном случае возвращается L.
Примеры [ править ]
- «21AAXBYAX» → «LLLLRLLLR»
- «12CBZY» → «LLLR»
Требования [ править ]
Чтобы решить эту задачу, алгоритм должен уметь независимо запоминать последнюю цифру 1 или 2 и последнюю букву A или B. Мы называем эту память рабочей памятью . Эта память должна сохранять все остальные входные данные. Кроме того, алгоритм должен иметь возможность вырезать и игнорировать буквы C и Z .
Решения [ править ]
Эта статья, возможно, содержит оригинальные исследования . ( Апрель 2020 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Псевдокод [ править ]
Для традиционных компьютерных моделей оба требования легко решить. Вот какой-то код Python (вроде псевдокода, но работает), где функция next_output получает одно число / букву в качестве ввода и возвращает либо букву, либо ничего. next_outputs предназначен для удобства работы со всей последовательностью.
last_num = "" last_letter = ""def next_output ( next_input : str ): глобальный last_num , last_letter, если next_input в [ "1" , "2" ]: last_num = next_input last_letter = "" return "L" elif next_input в [ "A" , "B" ]: last_letter = next_input return "L" elif next_input in [ "X" , "Y" ]: seq = last_num + last_letter + next_input last_letter = next_input если seq in [ "1AX" , "2BY" ]: вернуть "R" вернуть "L" вернуть Nonedef next_outputs ( next_inputs : str ) -> List [ str ]: "" " Args: next_input: строка. Возвращает: список строк. Пример: >>> next_outputs ("21AAXBYAX") ['L', 'L', 'L', 'L', 'R', 'L', 'L', 'L', 'R'] "" " return [ next_output ( c ) для c в next_inputs ]
Пример:
>>> next_outputs ( "21AAXBYAX" ) ['L', 'L', 'L', 'L', 'R', 'L', 'L', 'L', 'R'] >>> next_outputs ( "12CBZY" ) ['L', 'L', None, 'L', None, 'R']
Конечный автомат [ править ]
Кроме того , эта задача может быть решена простым способом с помощью конечного автомата с 7 состояниями (назовем их --- , 1-- , 2-- , 1А , 2B- , 1AX , 2BY ).
Нейронная сеть [ править ]
Для нейронных сетей эта задача намного сложнее . Для простых нейронных сетей с прямой связью эта задача не решается, поскольку в сетях с прямой связью нет рабочей памяти. Ведь включить рабочую память в нейронные сети - непростая задача. Было несколько подходов, таких как PBWM или долгосрочная краткосрочная память, которые имеют рабочую память. Эта задача 1-2-AX является хорошей задачей для этих моделей, и обе могут ее решить.
Ссылки [ править ]
- Перейти ↑ O'Reilly, RC & Frank, MJ (2006). «Как заставить рабочую память работать: вычислительная модель обучения в лобной коре и базальных ганглиях. Нейроны» . Нейронные вычисления . 18 (2): 283–328. DOI : 10.1162 / 089976606775093909 . PMID 16378516 . Проверено 30 мая 2010 .