1-2-AX arbetsminnesuppgift

1-2-AX arbetsminnesuppgift
Syfte arbetsminnesförmåga hos långtidsminnet

Arbetsminnesuppgiften 1-2-AX är ett kognitivt test som kräver att arbetsminnet löses.

Det kan användas som ett testfall för att lära sig algoritmer för att testa deras förmåga att komma ihåg gamla data. Denna uppgift kan användas för att demonstrera arbetsminnesförmågan hos algoritmer som PBWM eller långtidsminne .

Beskrivning

Inmatningen av uppgiften är en sekvens av siffrorna/bokstäverna 1 , 2 , A , X , B och Y , och ytterligare distraherande instanser av 3 , C och Z som bör ignoreras. För varje tecken i inmatning i följd måste motivet svara med vänster ( L ) eller höger ( R ).

De två målsekvenser som försökspersonen letar efter är AX och BY . När försökspersonen stöter på en 1 måste de byta till att leta efter AX , och när de stöter på en 2 måste de byta till att leta efter BY .

När personen letar efter AX , om personen stöter på ett X som har sett ett A tidigare (och på liknande sätt för ett Y när han letar efter BY ), och där den föregående bokstaven inte var en del av en tidigare sekvens, svarar de R för att markera slutet på den sekvens; deras svar på alla andra tecken ska vara L .

Exempel

Inmatning 2 1 A A X X Y A X
Produktion L L L L R L L L R
Inmatning 1 2 A B X Y A C Z
Produktion L L L L L R L L L

Krav på algoritmer

För att lösa denna uppgift måste en algoritm både kunna komma ihåg den sista siffran 1 eller 2 och den sista bokstaven A eller B oberoende av varandra. Vi hänvisar till detta minne som arbetsminnet . Detta minne måste bevara all annan inmatning. Dessutom måste algoritmen kunna ta bort och ignorera bokstäverna C och Z .

Lösningar

Pseudokod

För traditionella datormodeller är båda kraven lätta att lösa. Här är lite Python- kod (typ av pseudokod men fungerar) där funktionen next_output får en enda siffra/bokstav som inmatning och returnerar antingen en bokstav eller ingenting. next_outputs är till för att det ska fungera på en hel sekvens.

  
  

      
    










      
        
          
          
         
        
          
         
        
              
          
            
             
         
     

    
    










          last_num  =  ""  last_letter  =  ""  def  next_output  (  next_input  :  str  )  ->  str  |  None  :  """  Args:  next_input: En sträng som innehåller ett enda tecken.  Returnerar:  En sträng som innehåller bokstäverna "L", "R" eller None.  Exempel:  >>> next_output("2")  'L'  """  global  last_num  ,  last_letter  if  next_input  in  [  "1"  ,  "2"  ]:  last_num  =  next_input  sista_bokstav  =  ""  returnera  "L"  elif  next_input  i  [  "A"  ,  "B"  ]:  last_letter  =  next_input  returnera  "L"  elif  nästa_input  i  [  "X"  ,  "Y"  ]:  seq  =  last_num  +  last_letter  +  next_input  sista_bokstav  =  nästa_input  if  seq  in  [  "1AX"  ,  "2BY"  ]:  return  "R"  return  "L"  return  None  def  next_outputs  (  next_inputs  :  str  )  ->  list  [  str  ]:  """  Args:  next_input: En sträng.  Returnerar:  En lista med strängar som innehåller bokstäverna "L" eller "R".  Exempel:  >>> next_outputs("21AAXBYAX")  ["L" , "L", "L", "L"   , "R   "  , "L", "L", "L", "R"] """ returnerar  [  nästa_utgång  (  c  )  för  c  i  nästa_ingångar  ] 

Exempel:




 >>>  nästa_utgångar  (  "21AAXBYAX"  )  ['L', 'L', 'L', 'L', 'R', 'L', 'L', 'L', 'R']  >>>  nästa_utgångar  (  "12CBZY"  )  ['L', 'L', None, 'L', None, 'R'] 

Finite-state maskin

På liknande sätt kan denna uppgift lösas på ett enkelt sätt av en finita-tillståndsmaskin med 7 tillstånd (kalla dem --- , 1-- , 2-- , 1A- , 2B- , 1AX , 2BY ).

Neuralt nätverk

Denna uppgift är mycket svårare för neurala nätverk . För enkla neurala nätverk för feedforward är denna uppgift inte lösbar eftersom feedforward-nätverk inte har något arbetsminne. När allt kommer omkring är det en svår uppgift att inkludera arbetsminnet i neurala nätverk. Det har funnits flera tillvägagångssätt som PBWM eller långtidsminne som har arbetsminne. Denna 1-2-AX-uppgift är en bra uppgift för dessa modeller och båda kan lösa uppgiften.