Tracing where LLM "slop" style comes from in the model and in training, and cutting it out [R]
I wanted to find where the recognizable assistant style (em dashes, "it's not X, it's Y", lists of three, buzzwords) lives in a model and which training stage installs it. Where it lives: in Qwen3-4B-Instruct, a difference-in-means direction from the model's own exaggerated vs plain writing separates 64 hand-written minimal pairs. It correlates up to 0.82 with a trope-based slop score on normal output. Logit-lens readouts show a register axis (grand, abstract vocabulary vs plain hedges like "really", "basically", "stuff"), and per-trope directions are cross-lingual: "not X, but Y" promotes the Chinese 而是 ("but rather"). Where it comes from: the base model has the same direction (cosine 0.90 to 0.97 at middle layers) but writes near the plain end. On OLMo 2 1B, measured at every released stage, SFT introduces the rhetorical structures and DPO doubles the slop score through buzzwords and markdown formatting. Scoring OLMo's preference data, the chosen response is the sloppier one in 57% of 3,000 pairs. Cutting it out: directional ablation increases slop by up to 89%, because clean text projects negatively on the axis. Fixed-vector subtraction at layers 12 to 23 works within a narrow KL budget (about 0.4 nats/token on human text), and it reduces structural tropes that token bans can't touch. Distilled into a rank-16 LoRA, it cuts the slop score 83% with no system prompt, lower KL than the steering itself, and no drop on a small QA check. Caveats: the slop scorer is a regex detector of my own, the main results use one 4B model plus OLMo 2 1B, and there's no human evaluation yet. Antislop (Paech et al., 2025) addresses slop at the token level; this work is complementary on the representation side. Writeup with interactive figures: 100toolkit.com/blog/where-ai-slop-comes-from