Adaptive Pluralistic Alignment: A pipeline for dynamic artificial democracy
Rachel Freedman, May 2026arXiv:2605.01642MethodPartialAuthority: Developer (open)
Learns a compact reward model for each annotator by low-rank decomposition over a shared reward basis. These models then vote as a jury over candidate outputs under a social-choice rule. As values shift over time, the jury adapts by fitting new annotator weights on the fixed bases. A proof-of-concept on the PRISM dataset with simulated historical annotators finds that jury composition and the choice of voting rule can substantially affect outcomes where jury preferences are heterogeneous.
CodeAdaptivePluralistic
from aiag import LM
from aiag.data import pref_data
from aiag.procedural import AdaptivePluralistic
lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
ask = "Should the city allow food trucks downtown?"
first = pref_data([ask] * 2, ["Yes, with permits.", "Yes, on side streets."], ["No.", "No, protect restaurants."],
annotator=["ana", "ben"])
later = pref_data([ask], ["Only on weekends."], ["Yes, everywhere."], annotator=["caz"])
ap = AdaptivePluralistic(lm).fit(first) # shared basis rewards, and each annotator's mix of them
ap.adapt(later, period=1) # a new period's annotators fit only their own mix
jury = ap.convene() # a jury drawn equally from each period
winners = ap(ask, ["Yes, with permits.", "Only on weekends.", "No."]) # 1 for each reply instant runoff can elect- AdaptivePluralisticProcedureaiag/procedural/deliberative_aggregation.py:994 Adaptive pluralistic alignment: each annotator's reward a simplex-weighted mix of shared basis rewards (a low-rank decomposition), a jury drawn equally from each period ranking candidates by those rewards and electing by instant runoff, and new periods joining by fitting only new weights on the frozen bases (Freedman, 2026).
pip install aiagEvery method in aiag Library on GitHub