Outlist CMR (also called CMR-DE, “Distinct Encoding”) provides an alternative approach to handling repeated items. Instead of using position-based encoding, it maintains item-based encoding but introduces out-of-list context to distinguish presentations.
The Mechanism
When an item appears for the second time, the model mixes its contextual input with an “out-of-list” context unit. This creates temporal separation between the two presentations:
First presentation: Normal context integration
Repetition: Context input mixed with a unique out-of-list unit
The out-of-list context makes the second presentation’s trace partially distinct from the first.
Why Out-of-List Context?
The theoretical motivation is that seeing something familiar triggers a different mental state than seeing something new:
“I’ve seen this before” is itself part of the encoding context
The repetition carries information about being a repetition
This meta-cognitive state affects how the item is encoded
Balance between item context and out-of-list context
\(\alpha = 1.0\): No out-of-list mixing (equivalent to standard CMR)
\(\alpha = 0.5\): Equal mix of item and out-of-list context
\(\alpha = 0.0\): Only out-of-list context (complete distinction)
Usage
Code
from jaxcmr.models.outlist_cmr import CMRimport jaxcmr.components.context as TemporalContextparams = {"encoding_drift_rate": 0.5,"start_drift_rate": 0.5,"recall_drift_rate": 0.5,"learning_rate": 0.5,"primacy_scale": 2.0,"primacy_decay": 0.8,"shared_support": 0.05,"item_support": 0.25,"choice_sensitivity": 0.6,"mfc_trace_sensitivity": 0.7, # Out-of-list mixing ratio"stop_probability_scale": 0.05,"stop_probability_growth": 0.2,"learn_after_context_update": True,"allow_repeated_recalls": False,}# Must use expanded contextmodel = CMR( list_length=16, parameters=params, context_create_fn=TemporalContext.init_expanded, # Required!)
Comparison: Positional vs Outlist
Aspect
Positional CMR
Outlist CMR
Feature layer
Position-based
Item-based
Distinction mechanism
Different position = different trace
Out-of-list context unit
Memory structure
Positions in MCF
Items in MCF (standard)
Context size
Standard
Expanded (2N+1)
Recall identifies
Position
Item
Predictions
Context Similarity
With \(\alpha < 1\): - First and second presentations have partially distinct contexts - Lower \(\alpha\) = more distinct - Transitions from repetition don’t strongly cue first presentation
Spacing Effects
The out-of-list mixing happens regardless of spacing. This differs from drift-based models where spacing affects context overlap directly.
Implementation
Key code from experience_item:
Code
def experience_item(self, item_index): item =self.items[item_index] context_input =self.mfc.probe(item)# Check if item was already encoded new_context = lax.cond(self.recallable[item_index], # Already studied?# Repetition: mix with out-of-list contextlambda: self.context.integrate_with_outlist( context_input, self.mfc_sensitivity, self.encoding_drift_rate ),# First presentation: standard integrationlambda: self.context.integrate(context_input, self.encoding_drift_rate), ) ...
The integrate_with_outlist method in TemporalContext handles the mixing:
Code
def integrate_with_outlist(self, inlist_input, ratio, drift_rate):# Mix in-list input with next available out-of-list unit context_input = normalize_magnitude( (normalize_magnitude(inlist_input) * ratio)+ (self.outlist_input * (1- ratio)) )# Then standard integration...
Theoretical Connections
This model relates to:
Encoding specificity: Each encoding event has unique contextual features
Global matching models: Items can match based on overall similarity, not just local context
Recognition memory: The “old” signal at repetition affects encoding
The out-of-list context can be interpreted as an “already seen” tag that becomes part of the memory trace.