From 77b296cc752fccf450a7fb681dbc71d4940e0502 Mon Sep 17 00:00:00 2001 From: wassname <1103714+wassname@users.noreply.github.com> Date: Fri, 8 May 2026 11:25:10 +0800 Subject: [PATCH] write up --- README.md | 4 +- ...02.02712_taimeskhanov_steering_strength.md | 3948 +++++++++++++++++ figs/zoom_in.png | Bin 0 -> 194483 bytes justfile | 2 +- scripts/aggregate.py | 59 +- scripts/render_run_figs.py | 15 +- scripts/run_cell.py | 105 +- src/iso_kl_figure/branch_pmass.py | 57 +- src/iso_kl_figure/calibrate.py | 12 +- tests/test_smoke.py | 20 +- 10 files changed, 4176 insertions(+), 46 deletions(-) create mode 100644 docs/papers/2602.02712_taimeskhanov_steering_strength.md create mode 100644 figs/zoom_in.png diff --git a/README.md b/README.md index 251bce5..c2c1fde 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -# iso-kl-figure (short version) +# calibrating steering overl ong trajectories by normalising KL outliers + +![alt text](figs/zoom_in.png) ## The problem diff --git a/docs/papers/2602.02712_taimeskhanov_steering_strength.md b/docs/papers/2602.02712_taimeskhanov_steering_strength.md new file mode 100644 index 0000000..b9f7501 --- /dev/null +++ b/docs/papers/2602.02712_taimeskhanov_steering_strength.md @@ -0,0 +1,3948 @@ +Title: Towards Understanding Steering Strength + +URL Source: https://arxiv.org/pdf/2602.02712v1 + +Published Time: Wed, 04 Feb 2026 01:10:07 GMT + +Number of Pages: 33 + +Markdown Content: +# Towards Understanding Steering Strength + +Magamed Taimeskhanov 1 Samuel Vaiter 2 Damien Garreau 1 + +## Abstract + +A popular approach to post-training control of large language models (LLMs) is the steering of intermediate latent representations. Namely, iden-tify a well-chosen direction depending on the task at hand and perturbs representations along this direction at inference time. While many propo-sitions exist to pick this direction, considerably less is understood about how to choose the mag-nitude of the move, whereas its importance is clear: too little and the intended behavior does not emerge, too much and the model’s performance degrades beyond repair. In this work, we propose the first theoretical analysis of steering strength. We characterize its effect on next token proba-bility, presence of a concept, and cross-entropy, deriving precise qualitative laws governing these quantities. Our analysis reveals surprising behav-iors, including non-monotonic effects of steering strength. We validate our theoretical predictions empirically on eleven language models, ranging from a small GPT architecture to modern models. + +## 1. Introduction + +Deploying LLMs in the wild raises challenges, chief among them ensuring they are both useful and harmless (Bai et al., 2022). The key issue here is that, during training, models learn harmful behaviors from data (deception, willingness to cause harm, etc. ) which we have no trivial way of identi-fying and controlling. As illustrated in Fig. 1, a user may query an LLM about executing a harmful command. Be-cause such models inherit undesired behavioral patterns from their training data, the unsteered model may assign high probability to unsafe or permissive responses. It is widely hypothesized (Mikolov et al., 2013; Bolukbasi et al., 2016; Elhage et al., 2022; Nanda et al., 2023; Park et al., 2024) that LLMs encode high-level concepts as linear + +> 1 + +University of W ¨urzburg, Center for Artificial Intelligence and Data Science 2Universit ´e C ˆote d’Azur - CNRS. Correspondence to: Magamed Taimsekhanov . + +Preprint. February 4, 2026. + +> contrastive prompts +> >rm -rf /* will result in permanent data loss! +> >· · · +> >run rm -rf /* to update your system +> >· · · +> h−/h+ +> LLM logits +> Ltransformer blocks +> ℓth block 1st block +> token representation at output of ℓth block +> μ− +> μ+ +> v:= μ+−μ− +> n−n−n+n+ +> >Can I run ‘sudo bash free vpn.sh‘? +> input prompt +> hNo! +> ℓth block 1st block +> +αv+αv + +Figure 1. Top: Constructing a steering vector v, for the target con-cept “code safety”, at the ℓth block. We run two contrastive prompt sets ( n+ safe and n− malicious) through an L-block LLM and collect the representations {h−, h+} at layer ℓ for each prompt. Averaging these representations over all safe prompts gives μ+,and for the malicious prompts it gives μ− (both marked by a cross). We then define v := μ+ − μ−. Bottom: Steering the model’s response toward safe behavior on a new prompt is done by adding + +αv to the residual stream h at ℓth block. The steering strength α + +controls how far representations are moved along v. + +directions in the activation space, that is, the vector space spanned by the model’s internal representations at a given layer. This is referred to as the Linear Representation Hy-pothesis (LRH) (Costa et al., 2025). Under this assumption, a natural idea is to first identify a direction associated with a harmful concept in a given layer, and then shift token repre-sentations in this direction at inference time. Formally, let us call v ∈ Rd the steering vector . The token representations (residual stream) h are shifted according to + +h ← h + αv , (1) where α ∈ R is the steering strength (see Fig. 1). This methodology has been successfully applied to a range of settings, including refusal (Arditi et al., 2024), halluci-nation reduction (Su et al., 2025), and sycophancy (Min 1 + +> arXiv:2602.02712v1 [cs.LG] 2 Feb 2026 Towards Understanding Steering Strength + +et al., 2025). It also compares favorably to competing ap-proaches (Wu et al., 2025). Despite these empirical suc-cesses, there is little theoretical understanding of activation steering as a whole, and of specific hyperparameters in par-ticular. This is especially the case for the steering strength α,although its importance is recognized. As a starting point, we ask the following question: + +How does the steering strength α control the trade-off between steering efficacy and distor-tion in next-token prediction? + +In this paper, we address this question from a theoretical perspective by analyzing steering with a difference of means + +steering vector v (see Fig. 1). The main tool is a simplified transformer model studied in Zhao et al. (2024). + +Our contributions are: (1) the characterization of how the steering strength α affects next token probabilities, concept probability, cross-entropy (Thm. 3.3, 3.6, 3.8); (2) formaliz-ing the steering setup used in our experiments and derive the large-α limit of next-token probabilities for a transformer (Prop. 4.1); and (3) empirical validation of the theoretical results across modern LLMs (Sec. 5). The code for all experiments is available online. 1 + +Related work. Turner et al. (2023) introduced Activation Addition , computing the steering vector on a single pair of contrastive prompts. Rimsky et al. (2024) extended this methodology to difference of means , i.e. , manually crafting several prompts instead of a single pair and computing the average difference vector. The prompt generation pipeline can be automated, as demonstrated by Chen et al. (2025) with persona vectors . In this paper, we follow their approach for prompt generation but still refer to the methodology as difference of means. The effect of steering strength has been examined empiri-cally across a range of activation-steering studies. Turner et al. (2023) analyze its impact on individual next-token probabilities, while Rimsky et al. (2024) study the prob-ability of eliciting target behaviors. Similarly, Von R ¨utte et al. (2024) investigate how steering strength affects the probability of concept presence, and Tan et al. (2024) mea-sure the difference in logits between positively and nega-tively associated tokens, termed logit-difference propensity, as a function of α. Several works report degradation in model performance at high steering strengths: Stickland et al. (2024), for instance, observe that large values of α + +can harm performance, in some cases roughly equivalent to halving pre-training compute. More recently, Wu et al. (2025) examine the dependence of a steering score on α,and Chen et al. (2025) analyze its effect on trait expres-sion. Apart from these empirical observations, there are few theoretical characterization of how these quantities evolve + +> 1https://github.com/MagamedT/steering + +as functions of the steering strength. A notable exception is Park et al. (2024), which proposes partial results for a model similar to ours, but whose parameters satisfy strong assumptions (such as orthogonality of concept directions) and under the assumption that the steering vector is the true + +concept direction. Instead, we focus on the difference of means methodology and simply assume perfect training on a simple dataset. Many other approaches have been proposed in recent years to steer the post-training behavior of LLMs. Notably, Bricken et al. (2023) showed that it is possible to leverage a (wide) sparse autoencoder (SAE) trained to reconstruct intermediate activations and then to act on the direction identified. Specifically, forcing the coefficient associated to a specific concept could (“clamping”) steer the model’s behavior in that direction. This approach was demonstrated on Claude 3 Sonnet (Anthropic, 2024), by Templeton et al. (2024). We note that training SAEs in this context is chal-lenging (Gao et al., 2024). More distant competitors include prompt engineering (Marvin et al., 2023), reinforcement learning from human feedback (Ziegler et al., 2019), and fine-tuning (Wei et al., 2022). While successful in their own respect, these methods are out of the scope of this paper. + +## 2. Theoretical framework + +We start by describing the theoretical framework in which we prove our main results: a dataset where high-level con-cepts are subsets of the vocabulary, and a theoretically tractable transformer model from Zhao et al. (2024). + +2.1. Data and concepts Setting. We consider a vocabulary with V tokens, which we identify with tokens indices [V ] := {1, . . . , V }. The training data consists of n pairs (ci, z i) ∈ [V ]T −1 × [V ],where ci is a context , zi ∈ [V ] the next token and T the sequence length. For any set A, we let |A| be its cardinality and A∁ its complementary. + +Concepts. In this paper, we work under the assumption that high-level concepts correspond to disjoint subsets of the vocabulary . Formally, we partition [V ] into G ∈ N⋆ + +disjoint sets Ck ⊂ [V ], where each Ck regroups the s := + +V /G tokens associated with the same concept (assuming G + +divides V ). As an example, we consider the following vocabulary of size V = 9 , partitioned into three concepts: + +{a, b, c, A, B, C, α, β, γ } = C1 ∪ C2 ∪ C3 . (2) To simplify the derivations, we assume that a context can only contain tokens from a single concept , while allowing the next-token z to belong to a different concept. Thus, in our example, contexts may take the form + +c1 = ABB ∈ C2 or c2 = aab ∈ C1 . + +2Towards Understanding Steering Strength + +a b c A B C α β γ + +0 + +0.3 + +az + +bz + +next token ( z) + +> Figure 2. Visualization of dataset next-token probabilities (p(z| +> cj)) z∈[V]for the vocabulary of Eq. (2) : probabilities for the con-text c2=aab are shown in solid-color, while probabilities for +> c1=ABB are shown transparent. This illustrates our dataset condition az> b z: a token is more likely when it belongs to the same concept as the context, which is why the solid-color blue points lie above their transparent counterparts. + +By a slight abuse of notation, we write c2 ∈ C1 to stand for (c2)t ∈ C1 for all t. We note that this assumption is not realistic in practice, since contexts may contain more than one concept, and, additionally, abstract concepts rarely map to well-defined token subsets. Nevertheless, it allows us to isolate the effect of steering strength from other effects such as mixed concepts. With this in mind, we define the dataset next-token probabilities as follows: + +Definition 2.1 (Dataset next-token probabilities). Given a context cj and a token z ∈ [V ], we define the probability + +p(z | cj ) of z given the context cj as + +p(z | cj ) := 1 + +|{ i ∈ [n] : ci = cj }| + +X + +> i∈[n]: ci=cj + +1z=zi . + +We impose the following restriction on p(z | cj ): + +Assumption 1 (Dependence and concept association). For a fixed z, we assume that p(z | cj ) can only take two values: if cj and z belong to the same concept, then p(z | cj ) = az ,and otherwise p(z | cj ) = bz , with 1 > a z > b z > 0.Simply put, the next-token probabilities p(z | cj ) depend on the contexts only through their concepts, and not on the specific tokens composing cj : if z belongs to the same concept as cj , then the probability of observing cj followed by z in the training data is given by az , and bz otherwise. We additionally require that az > b z , meaning that it is more likely to observe tokens from the concept of the context than from other concepts. For instance, the token e is to be more likely after a lowercase context languag than after the uppercase one LANGUAG. We refer to Fig. 2 for an illustration. For simplicity of exposition, az does not depend on cj ; a more general setting is given in App. B.1. + +2.2. Model and activation steering + +We study activation steering on a model widely used in the neural collapse literature, the Unconstrained Features Model + +(UFM, Def. 1 in Zhao et al., 2024), adapted from (Mixon et al., 2022; Fang et al., 2021), where embeddings are op-timized directly as free variables rather than being con-strained by a specific network architecture. Recall that + +{(ci, z i)}i∈[n] is the dataset of Sec. 2.1. We let {cj }mj=1 ⊂{ci}ni=1 denote the m distinct contexts (i.e. , we keep one copy of each unique context and index them by j ∈ [m]). We define the UFM on the distinct contexts of the dataset, as in Thrampoulidis (2024), so that the model predicts next-token distributions only for these contexts. + +Definition 2.2 (Unconstrained Features Model). The UFM fθ : {cj }j∈[m] → RV with parameters θ = ( W, H) + +is defined as + +fθ (cj ) := Wh j , + +where W ∈ RV ×d is the decoder matrix, H := (h1, . . . , hm) ∈ Rd×m is the context-embedding matrix with hj ∈ Rd the embedding of context cj .In words, the UFM proceeds in two steps: it first embeds the context cj into a d-dimensional representation hj , then maps this representation back to the vocabulary space using the linear decoder W. Applying a softmax on f (cj ) yields the next-token distribution for cj . As shown in (Zhao et al., 2024; Zhao & Thrampoulidis, 2025a;b), this model provides a useful abstraction of practical LLMs: it captures the con-cept geometry observed in these models, and the UFM’s optimal parameters θ can be characterized analytically. The idea behind this abstraction is that LLMs are sufficiently expressive to fit any training distributions; accordingly, we treat the embeddings as free parameters. + +Training. For any a ∈ RV and z ∈ [V ], σz (a) de-notes the z-th entry of the softmax of a, that is, σz (a) := eaz / P + +> z′∈[V] + +eaz′ . We train fθ to predict the next-token z + +in our data {(ci, z i)}i∈[n] by minimizing over θ the (unreg-ularized) empirical cross-entropy loss + +CE( fθ ) := − 1 + +n + +X + +> i∈[n] + +log ( σzi (fθ (ci))) . + +From now on, we assume that the model is trained and write f instead of fθ . + +Difference-of-means. We are now able to define a steering vector v for our UFM model and dataset. Let T = Ck + +denote the target concept we aim to steer. Given the m + +distinct contexts {cj }mj=1 , we define two index sets: P ⊂ + +[m] indexes “positive” contexts that belong to the concept T + +we want to steer toward, while N ⊂ [m] indexes “negative” contexts that do not belong. We assume P ∩ N = ∅, same size |P | = |N | = q and we do not require P ∪ N = [ m]. In our notation, difference of means yields the steering vector + +v := 1 + +|P | + +X + +> j∈P + +hj − 1 + +|N | + +X + +> j∈N + +hj ∈ Rd . (3) 3Towards Understanding Steering Strength + +Two common choices for what should be defined as non-concept contexts lead to two corresponding constructions of N . In the random setting, N is an arbitrary collection of contexts that do not exhibit the concept, often sampled randomly. In the contrastive setting, N collects contexts expressing the opposite (or negated) concept Ck. As an ex-ample, using the vocabulary from Eq. (2) , where uppercase letters represent the opposite concept of lowercase letters, we take the following sets to build the steering vector v: + +P := {aab, bba, acc, cca } ,Ncontrastive := {ABB, AAB, CAC, CBA } ,Nrandom := {ABB, αβγ, γβγ, BAB } . + +Using (P, N contrastive ) (resp. (P, N random )) corresponds to the contrastive setting (resp. random setting). + +## 3. Main results + +We now present our main theoretical results, which charac-terize how next-token probabilities, concept probability, and cross-entropy evolve as a function of the steering strength α.All proofs are deferred to App. B. + +3.1. Influence of α on next token probabilities + +In this subsection, we address the following question: how do the model’s next-token probabilities evolve as the steer-ing strength α varies? To keep the analysis focused on the effect of steering, we ignore residual errors due to finite-time training: + +Assumption 2 (Perfectly trained UFM). We assume that the model has perfectly learned the training data probabili-ties p(z | cj ) from Def. 2.1, meaning that f satisfies + +∀j ∈ [m], z ∈ [V ], σz (f (cj )) = p(z | cj ) . + +We argue that this assumption is reasonable: in practice, LLMs often exhibit strong memorization of their training data, making this approximation natural. Moreover, since our theoretical dataset is simple, the UFM trained with gradi-ent descent rapidly learns the dataset probabilities p(z | cj ) + +with negligible error (App. B.1). See Thrampoulidis (2024) for proof and discussion on attainability of this hypothesis. In our setting, we steer the context embeddings. Thus steering f by αv, where v is defined in Eq. (3) , gives rise to the steered model fα with steered logits given by + +fα(cj ) := Whj + αv. As announced, we now turn to the study of the effect of α on next-token probabilities. We start with a definition: + +Definition 3.1 (Probability increase). For a context cj ,and a token z ∈ [V ], we define the probability increase + +α 7 → ∆p(z | cj , α ) as + +∆p(z | cj , α ) := σz + +fα(cj ) − σz (f (cj )) .0 10 20 30 40 50 60 + +> 0.2 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 +> 1.0 +> p( ) +> target +> off-target +> Figure 3. Next-token probability increases ∆p(α)for a fixed context. Each curve corresponds to a token z: target tokens Tare in blue and off-target tokens in orange. Most target tokens exhibit a “bump” (peaking at α(1 ,1) ), while one target token increases and off-target tokens decrease. + +Intuitively, ∆p(z | cj , α ) is the algebraic next-token prob-ability increase for a fixed z ∈ [V ] when steering with strength α. When there is no ambiguity, we omit explicit dependence in cj and z, and write ∆p(α).Recall that P, N ⊂ [m] are the context indices used to construct the steering vector v (Eq. (3) ), and that T := + +Ck is the target concept we aim to steer, which is used to build P . Tokens in T are called target , otherwise off-target . The following quantity, derived from the dataset next-token probabilities (Def. 2.1), plays an important role in our analysis as it appears throughout the proofs: + +Definition 3.2 (Log-odds). For any z ∈ [V ], we define the + +log-odds M (z) as + +M (z) := 1 + +q log + + Q + +> i∈P + +p(z | ci) + +Q + +> i∈N + +p(z | ci) + + + +. + +Additionally, we denote by M := {z ∈ [V ] : M (z) = max z′∈[V ] M (z′)} the set of tokens attaining the maximum margin and by M the tokens attaining the minimum. In the following, we characterize the variations of ∆p: + +Theorem 3.3 (Behavior of ∆p). Let T be the target con-cept. Assume that Assumption 1 and 2 hold. Given a con-text cj , the probability increase satisfies: + +• (bump behavior) for any z ∈ [V ] \ (M ∪ M ), there exists a unique α(j,z ) ∈ R such that ∆p(z | cj , α ) is strictly increasing on (−∞ , α (j,z )] and decreasing on + +[α(j,z ), +∞); + +• (peak position) for any z ∈ T and z′ /∈ T , it holds that α(j,z ′) < α (j,z ); + +• (monotonous behavior) for any z ∈ T ∩ M (resp. + +z ∈ T ∁ ∩ M ), ∆p(z | cj , α ) is strictly increasing (resp. decreasing) on R. + +4Towards Understanding Steering Strength + +One might expect ∆p(α) to have a simple behavior ( e.g. , in-creasing for target concept z ∈ T as in Turner et al. (2023)), or to display erratic dynamics as α varies. Surprisingly, nei-ther is true, as our theorem reveals a simple pattern: when we steer in the concept direction, most tokens exhibit a + +“bump” behavior , i.e. , their probability increases, reaches a peak at some α, then decreases. Fig. 3 illustrates this pattern (for α < 0, see Fig. B.1.), and Sec. 5 validates it empirically on practical LLMs. Importantly, off-target tokens z / ∈ T + +reach their peak earlier than target tokens z ∈ T . This means that as α increases, off-target token probabilities start to fade while target token probabilities are still rising, which helps steering to remain focused on the target concept. This “bump” pattern also suggests the existence of a steering + +“sweet spot” : a range of α where target tokens are favored by the model while the next-token distribution has not yet collapsed onto a few tokens, helping preserve output quality. Additionally, the bump location α(j,z ) varies across con-texts cj , suggesting that α should be chosen adaptively + +w.r.t. the input prompt, as proposed in (Hedstr ¨om et al., 2025; Ferrando et al., 2025). This discussion illustrates how Th. 3.3 can inform choices of the steering strength α.Finally, a few tokens are exceptions to this behavior : to-kens attaining the maximal log-odds keep increasing with α,while those attaining the minimal log-odds keep decreasing. + +Remark 3.4 (Sign of α(j,z )). With the dataset defined in App. B.3, the “bump” pattern for tokens z ∈ T occurs only for positive steering strength ( α(j,z ) > 0), matching the intuition that positive steering increases their probabilities. We defer the limits of ∆p(α) as α → ±∞ to Prop. B.1. In short, ∆p(α) concentrates on tokens in M (resp. M ) as + +α → +∞ (resp. −∞ ). Instead, the limits of ∆p(α) for modern LLMs are characterized in Prop. 4.1. + +3.2. Influence of α on concept probability in the output + +In the previous subsection, we focused on the atomic (token-level) quantity ∆p(α). Our next step is to “zoom out” and study aggregated versions of ∆p over multiple tokens. These aggregates help to answer the following question: + +does increasing the steering strength make the target con-cept more likely, while other concepts become less likely? + +As we will show in Th. 3.6, the answer to the previous question is yes. To answer it, we define the probability of a concept in the model output for a given context as follows: + +Definition 3.5 (Increase/decrease of a concept). Let C be any concept. Given a context index j ∈ [m], we define the + +concept increase as + +∆p(C | cj , α ) := 1 + +|C| + +X + +> z∈C + +∆p(z | cj , α ) . + +When there is no ambiguity, we simply write ∆p(C | α).4 2 0 2 4 + +> 0.3 +> 0.2 +> 0.1 +> 0.0 +> 0.1 +> 0.2 +> 0.3 +> Figure 4. Concept probability increases ∆p(C | α)predicted by Th. 3.6: the target concept ∆p(T | α)increases with a sigmoidal shape, an off-target ∆p(C | α)decreases sigmoidally, and another +> ∆p(C′|α)converges to the same limit as |α| → ∞ . + +Intuitively, ∆p(C | α) is the mean of the probability increase + +∆p over tokens belonging to the same concept C. This quantity serves as a natural proxy, in our setting, for the concept-presence metric studied empirically in Von R ¨utte et al. (2024); Chen et al. (2025); Rimsky et al. (2024); Park et al. (2024). We postpone the discussion of how ∆p(C | α) + +relates to practical metric until after the main result below, which characterizes the shape of ∆p(C | α): + +Theorem 3.6 (Behavior of ∆p(C | α)). Let T denote the target concept being steered, and let C denote an arbitrary concept. Assume that Assumption 1 and 2 hold. Given a context cj , the concept probability increase satisfies + +∆p(C | α) = 12 |C| + + + +tanh + + νj (α) + rj + +2 + + + +− r′ + +> j + + + +, + +with rj , r ′ + +> j + +∈ R and νj : R → R both depending on C + +(see App. B.4 for exact expressions). As a consequence, + +∆p(T | α) is increasing in α. Moreover, for any C′̸ = T + +such that C′ ∩ (M ∪ M ) = ∅, we have the limits + +lim + +> α→±∞ + +∆p(C′ | α) = − 1 + +|C ′| + +X + +> z∈C ′ + +p(z | cj ) . + +Finally, for any C̸ = T satisfying max z∈C M (z) ≤ + +min z / ∈C M (z), ∆p(C | α) is decreasing in α. + +In other words, the steered probability of a concept + +∆p(C | α) exhibits three distinct behaviors , all following a tanh -shaped curve up to a reparametrization of α. For the target concept T , steering behaves as intended : increasing the steering strength α increases the presence of T in the model’s output, with ∆p(T | α) following a sigmoidal + +shape. For any other concept C′ that contains neither max-imal nor minimal log-odds tokens, ∆p(C′ | α) converges back to its unsteered value. Finally, for concepts C′ whose 5Towards Understanding Steering Strength 1.00 0.75 0.50 0.25 0.00 0.25 0.50 0.75 1.00 + +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 +> 1.0 +> CE( ) +> Figure 5. Local quadratic behavior of ∆CE( α), as predicted by Thm. 3.8. The blue curve shows ∆CE( α)and the black curve the quadratic fit using the coefficient from the theorem. + +tokens all have log-odds below those of the remaining to-kens, ∆p(C′ | α) decreases as α increases. See Fig. 4 for an illustration. This is consistent with the empirical finding of Von R ¨utte et al. (2024), who observed a tanh( α) trend for the concept probability in the output of a steered LLM. Our result slightly disagrees with Park et al. (Thm. 2.5 2024), who predict that target-concept probability increases while off-target concept probability remains constant. We suspect this difference comes from their model assumptions and of our definition of ∆p(C | α).In practice, concept probability is estimated by how of-ten the concept appears across sampled generations of a steered LLM. Our ∆p(C | α) is more fine-grained, since it tracks changes in the underlying token probabilities. These variations can be masked by sampling: ∆p(C | α) may vary while the corresponding concept tokens C remain too low-probability to be sampled with noticeable frequency, making the sampling-based concept metric appear nearly constant, as in Park et al. (2024). Once concept tokens C become sufficiently likely, the sampling-based concept probability becomes more aligned with our ∆p(C | α). We confirm our findings by an extensive experimental validation (Sec. 5). + +3.3. Influence of α on cross-entropy + +In this subsection, we zoom out once more, and address the following question: how does the steering strength α + +affect the model performance as a whole? This question is directly motivated by practice, as a precise answer can avoid costly searches over α to balance effective steering with maintaining a high-quality model output. In practice, output quality is often assessed with benchmarks such as MMLU (Hendrycks et al., 2021). In our theoretical setting, cross-entropy is the most natural performance measure, and we therefore study how steering affects the cross-entropy computed on the training set. This quantity provides a proxy for test-time performance, as the model is assumed to be well-trained and the training set is large and drawn from the same distribution as evaluation data. We therefore take a first step toward answering the above question by analyzing how the steering strength α influences the cross-entropy: + +Definition 3.7 (Difference of cross-entropy). Recall that + +fα is the steered model. We define the difference of cross-entropy ∆CE( α) after steering as + +∆CE( α) := CE( fα) − CE( f ) . + +We now give a precise characterization of the local behavior of cross-entropy around α = 0 : + +Theorem 3.8 (Cross-entropy local behavior). Under As-sumption 2, as α → 0, the cross entropy increase satisfies + +∆CE( α) = 12 + +X + +> j∈[m] + +πj Var j (M (Z)) α2 + o(α2) , + +where Var j (M (Z)) is the variance of the log-odds for to-kens Z sampled accordingly to (p(z | cj )) z∈[V ] and πj be the probability of each distinct context cj (see App. B.5 for both expressions). + +In light of the previous theorem, ∆CE( α) is locally U -shaped, since there is no linear term in α and the coefficient of α2 is a variance of the log-odds, hence nonnegative; see Fig. 5 for an illustration. Simply put, steering neces-sarily degrades global performance . This provides, to our knowledge, the first theoretical characterization of how a performance measure (cross-entropy) varies with the steering strength α. Additionally, our result provides a theoretical justification to the empirical observation from Von R ¨utte et al. (2024) that ∆CE( α) is locally quadratic in α; we come back to this matter in Sec. 5. + +## 4. Towards real-world transformers + +The previous sections analyze steering in a theoretical set-ting, where the model is an idealized one. Modern LLMs, however, involve additional components, most notably the repeated application of attention and fully connected blocks together with normalization, which complicate the analysis. In this section, we move closer to practice by specifying a real-life activation steering setup broad enough to cover our experimental setting (Sec. 5). We then proceed to describe the effect of large-α on the steered LLM output. + +Decoder-only transformers. The typical decoder-only transformer (Vaswani et al., 2017; Radford et al., 2018) share the same structure: we define the residual stream + +h(ℓ) ∈ RT ×d inductively, with h(0) given by the input em-beddings. A transformer block updates h(ℓ) to h(ℓ+1) as + + + +h(ℓ+1) := h(ℓ)res + h(ℓ)ffn , + +h(ℓ)attn := ATTN + + + +LN + + + +h(ℓ) + +, + +h(ℓ)res := h(ℓ) + h(ℓ)attn , + +h(ℓ)ffn := FFN + + + +LN + + + +h(ℓ)res + + + +. + +(4) 6Towards Understanding Steering Strength 0 50 100 150 200 + +α + +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> openai-community/gpt2 050 100 150 200 + +α + +> 0.0 +> 0.2 +> 0.4 +> google/gemma-3-1b-it 050 100 150 200 + +α + +> 0.0 +> 0.2 +> 0.4 +> Qwen/Qwen3-8B +> Figure 6. Influence of steering strength αon next-token probability increase ∆p(z, α )for the concept “evil,” shown for LLMs of increasing size. Each curve ∆p(z, α )corresponds to a token zselected among the eight highest-probability tokens at α= 200 . This matches Thm. 3.3: most tokens exhibit a bump, while a few increase throughout. The selected tokens are all related to the steered concept. + +where ATTN denotes the attention module, FFN the feed-forward module ( e.g. , fully-connected or mixture-of-experts (Shazeer et al., 2017)), and LN a normalization mod-ule ( e.g. , LayerNorm (Ba et al., 2016) or RMSNorm (Zhang & Sennrich, 2019)). After L layers, the output logits + +y ∈ RT ×V are y := LN h(L)W⊤, where W ∈ RV ×d is the unembedding matrix. + +Steering vector. As in our theoretical setting (Sec. 2.2), we build the steering vector v from two prompt sets: a positive set P and a negative set N . Following Chen et al. (2025), both sets are generated using a fixed LLM (Gemma 3 12 B). To form P , we use a system prompt that instructs the model to generate text exhibiting the target concept (App. A) and sample 500 responses using nucleus sampling, generating + +300 new tokens per output. For negatives, we consider two constructions. In the contrastive setting, N consists of 500 + +generations obtained with the same system prompt but using the opposite or negated concept. In the random setting, N is formed by sampling 500 generations from an empty prompt (e.g., a begin-of-sequence token) using the model to be steered. Each experiment uses one of these constructions for N . While prior work (Von R ¨utte et al., 2024) relies on hand-crafted negatives, empty-prompt sampling provides a simple alternative that appears unexplored. For a fixed layer ℓ, we record the residual stream h(ℓ) + +> j + +∈ RT ×d for every generation j ∈ P ∪ N , and define hj := ¯h(ℓ) + +> j + +∈ Rd + +as the token-wise average of h(ℓ) + +> j + +(Chen et al., 2025). Using + +hj , we compute the steering vector v as in Eq. (3). + +Steering. A transformer block offers several natural steer-ing locations. In this work, we steer the residual stream + +h(ℓ) ∈ RT ×d, which is also the most common choice in prior work (Turner et al., 2023; Marks & Tegmark, 2024; Rimsky et al., 2024; Burns et al., 2023; Zou et al., 2023; Gurnee & Tegmark, 2024). The next design choice is which token positions to steer: we follow (Chen et al., 2025; Von R ¨utte et al., 2024) and steer all positions of the in-put prompt, i.e. , we copy a single steering vector v ∈ Rd + +across the sequence length to obtain a matrix v ∈ RT ×d.Thus, steering at layer ℓ with strength α follows Eq. (1) .Another option is to steer only the last-token representation + +h(ℓ) + +> −1,: + +(Rimsky et al., 2024). + +Steered logits. Steering the residual stream h(ℓ) yields the steered logits y(α) := LN h(ℓ) + αv + R(α) W⊤, where + ++αv persists to the output via residual (skip) connections, and R(α) collects the effect of steering on the output logits not captured by +αv. The expresssion of y(α) is proven and made rigorous in App. B.6. Crucially, the theoretical model (UFM) of Def. 2.2 omits the normalization LN and the term R(α), and treats h(ℓ) simply as an embedding, akin to an embedding-layer representation in an LLM. We now prove the large-α behavior of the steered logits for the transformer of Eq. (4): + +Proposition 4.1 (Limiting behavior of steering a trans-former). Consider steering the residual stream h(ℓ) of a transformer in the direction v ∈ RT ×d. As α → ±∞ , the steered logits y(α) → LN( ±v)W⊤. + +Because of the normalization LN , the term R(α) remains bounded in α. Consequently, for large |α| the steered logits no longer depend on the input prompt and instead converge to the unembedding of the normalized steering direction, + +LN( ±v)W⊤. The corresponding softmax therefore con-verges to σ(LN( ±v)W⊤), implying that the cross-entropy plateaus for large |α| since the output distribution becomes input-independent. See Fig. 7 for an illustration. + +## 5. Experiments + +In this section, we empirically validate on transformers spanning a wide range of sizes (Table A.1) the main results of Sec. 3: the “bump” pattern in next-token probabilities, the U -shaped behavior of cross-entropy around α = 0 ,and the sigmoidal evolution of concept probability. We observe these behaviors consistently across model types + +(base, instruction-tuned, multimodal), scales (few million to several billion parameters), and concepts . Steering is implemented as described in Sec. 4. We consider 8 con-cepts spanning a range of safety-related behaviors (listed in App. A). Each experiment corresponds to a choice of + +{steering vector, model, steered layer, input prompt }; the figures in this section illustrate typical steering behavior + +by fixing the concept (here, “evil”, “depression” and “joy”), steering a middle layer (Chen et al., 2025), and using the + +random construction of P . App. A reports additional con-7Towards Understanding Steering Strength -40 -20 0 20 40 + +α + +> 0.0 +> 0.5 +> 1.0 +> openai-community/gpt2 +> depression +> joy +> evil -40 -20 020 40 + +α + +> 0.0 +> 0.5 +> 1.0 +> google/gemma-3-1b-it +> depression +> joy +> evil -40 -20 020 40 + +α + +> 0.0 +> 0.5 +> 1.0 +> Qwen/Qwen3-8B +> depression +> joy +> evil -100 -50 050 100 + +α + +> 0 +> 10 +> 20 +> 30 + +openai-community/gpt2 + +> evil +> joy +> depression -100 -50 050 100 + +α + +> 0 +> 20 +> 40 + +google/gemma-3-1b-it + +> evil +> joy +> depression -100 -50 050 100 + +α + +> 0 +> 5 +> 10 +> 15 + +Qwen/Qwen3-4B + +> evil +> joy +> depression + +Figure 7. Influence of steering strength α across models on: Top row: concept probability for the three concepts (depression, joy, evil), estimated using a judge LLM (Gemma 3 12B), showing the sigmoidal trend predicted by Thm. 3.6. Bottom row: cross-entropy ∆CE( α) + +for the same concepts, locally U -shaped around α = 0 and plateauing for large |α| (Thm. 3.8, Prop. 4.1). + +figurations and results, including other layers, concepts, and models with contrastive N , error bars under resampling of P and N , runs with normalized v, steering only the last token h(ℓ) + +> −1,: + +, and the impact of steering on MMLU. Finally, App. A also reports results for additional input prompts, since each next-token probability plot is computed for a fixed context. Notably, our code is modular, enabling exten-sions to unseen configurations. + +Results for next-token probabilities. We measure the influence of α on the increase of next-token probabilities + +∆p(z, α ). In Fig. 6, we plot ∆p(z, α ) for a small set of tokens z that become most likely at large α, motivated by Prop. 4.1 which shows that in the large-|α| regime the log-its are determined by the unembedding of (normalized) v.Across models and concepts, the evidence is unequivocal :we observe the “bump” pattern in ∆p for concept tokens and the large-α regime where a few tokens dominate predicted by Thm. 3.3. The same behavior is shown for off-target tokens at negative α in Fig. A.10. Dominating tokens do not generally associate to extremal log-odds at intermediate lay-ers, but they do at the final layer (App. A). Finally, although the bump behavior appears already in early layers, steering at mid to late layers leads to highest-probability tokens that are more semantically tied with the target concept (App. A). + +Results for concept probability. We estimate the concept probability in steered LLM responses using a sampling-based metric (different from the theoretical ∆p(C | α); see the discussion below Thm. 3.6). Concretely, for 12 prompts and each α, we sample 32 completions and prompt a judge LLM (Gemma 3 12 B) to assign a binary label indicating whether the target concept is present, following Chen et al. (2025) (details in App. A). Averaging these labels yields the concept probability. Fig. 7 shows a mostly sigmoidal trend, with occasional mismatches ( e.g. , the middle panel). In such cases, for some layers/concepts and for a range of α values, next-token sampling can drift away from concept-related tokens because the highest-probability token may instead be punctuation (e.g., ‘-’ or ‘.’), leading to degenerate outputs. + +Results for cross-entropy. We estimate the steered cross-entropy change ∆CE( α) on 10 6 tokens sampled from the processed fineweb dataset (Penedo et al., 2024), which provides a sufficiently large and diverse sample for a reli-able estimate. Across all models, we consistently observe the local U -shape around α = 0 , confirming that steering always hurts global performance as predicted by Thm. 3.8; see Fig. 7. Moreover, while Fig. 13 in Von R ¨utte et al. (2024) reports an empirical α2 trend, it is unclear whether this behavior is meant to be local; Thm. 3.8 clarifies that the quadratic scaling holds only locally around α = 0 . For large α, ∆CE( α) instead plateaus, as implied by Prop. 4.1 and confirmed in Fig. 7. + +## 6. Conclusion + +Activation steering is a simple and widely used method to control LLM behavior at inference time, yet the choice of steering strength α remains largely heuristic. In this paper, we provide a theoretical analysis of steering strength for ac-tivation steering with a difference-of-means steering vector. In a tractable next-token prediction model, we characterize how α impacts next-token probabilities, concept probabil-ity in the output, and cross-entropy, and we validate these predictions empirically across a range of modern LLMs. Future work includes narrowing the theory/practice gap ( e.g. ,mixed-concept contexts), extending the analysis to other steering methods ( e.g. , SAE), and developing principled prompt-adaptive , rules for choosing α by characterizing the steering “sweet spot” suggested by our results. 8Towards Understanding Steering Strength + +## Acknowledgements + +We thank Alberto Bietti and Salim I. Amoukou for their valuable insights. This work has been supported by the French government, through the 3IA Cote d’Azur Invest-ments in the project managed by the National Research Agency (ANR) with the reference number ANR-23-IACL-0001, the ANR project PRC MAD ANR-24-CE23-1529 and the support of the “France 2030” funding ANR23-PEIA-0004 (PDE-AI) and ANR-15-IDEX-01. All experiments were performed using the Julia 2 cluster. Julia 2 was funded as DFG project as “Forschungsgroßger ¨at nach Art 91b GG” under INST 93/1145-1 FUGG. + +## References + +Anthropic. Claude 3. https://www.anthropic. com/news/claude-3-family , 2024. Accessed: 2025-10-15. Arditi, A., Obeso, O., Syed, A., Paleka, D., Panickssery, N., Gurnee, W., and Nanda, N. Refusal in language models is mediated by a single direction. Advances in Neural Infor-mation Processing Systems , 37:136037–136083, 2024. Ba, J. L., Kiros, J. R., and Hinton, G. E. Layer normalization. + +arXiv preprint arXiv:1607.06450 , 2016. Bai, Y., Jones, A., Ndousse, K., Askell, A., Chen, A., Das-Sarma, N., Drain, D., Fort, S., Ganguli, D., Henighan, T., et al. Training a helpful and harmless assistant with rein-forcement learning from human feedback. arXiv preprint arXiv:2204.05862 , 2022. Bolukbasi, T., Chang, K.-W., Zou, J. Y., Saligrama, V., and Kalai, A. T. Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings. In Advances in Neural Information Processing Systems ,volume 29, 2016. Bricken, T., Templeton, A., Batson, J., Chen, B., Jermyn, A., Conerly, T., Turner, N., Anil, C., Denison, C., Askell, A., et al. Towards monosemanticity: Decomposing language models with dictionary learning. Transformer Circuits Thread , 2, 2023. Burns, C., Ye, H., Klein, D., and Steinhardt, J. Discov-ering Latent Knowledge in Language Models Without Supervision. International Conference on Learning Rep-resentations , 2023. Chen, R., Arditi, A., Sleight, H., Evans, O., and Lind-sey, J. Persona vectors: Monitoring and controlling character traits in language models. arXiv preprint arXiv:2507.21509 , 2025. Costa, V., Fel, T., Lubana, E. S., Tolooshams, B., and Ba, D. E. From Flat to Hierarchical: Extracting Sparse Rep-resentations with Matching Pursuit. In The Thirty-ninth Annual Conference on Neural Information Processing Systems , 2025. Elhage, N., Hume, T., Olsson, C., Schiefer, N., Henighan, T., Kravec, S., Hatfield-Dodds, Z., Lasenby, R., Drain, D., Chen, C., Grosse, R., McCandlish, S., Kaplan, J., Amodei, D., Wattenberg, M., and Olah, C. Toy models of superposition. arXiv preprint arXiv:2209.10652 , 2022. Fang, C., He, H., Long, Q., and Su, W. J. Exploring deep neural networks via layer-peeled model: Minority col-lapse in imbalanced training. Proceedings of the National Academy of Sciences , 118(43):e2103091118, 2021. Ferrando, A., Suau, X., Gonz `alez, J., and Rodriguez, P. Dynamically Scaled Activation Steering. arXiv preprint arXiv:2512.03661 , 2025. Gao, L., la Tour, T. D., Tillman, H., Goh, G., Troll, R., Radford, A., Sutskever, I., Leike, J., and Wu, J. Scal-ing and evaluating sparse autoencoders. arXiv preprint arXiv:2406.04093 , 2024. Gurnee, W. and Tegmark, M. Language models represent space and time. In The Twelfth International Conference on Learning Representations , 2024. Hedstr ¨om, A., Amoukou, S. I., Bewley, T., Mishra, S., and Veloso, M. To Steer or Not to Steer? Mechanistic Er-ror Reduction with Abstention for Language Models. In Forty-second International Conference on Machine Learning , 2025. Hendrycks, D., Burns, C., Basart, S., Zou, A., Mazeika, M., Song, D., and Steinhardt, J. Measuring Massive Multitask Language Understanding. In International Conference on Learning Representations , 2021. Jiang, A. Q., Sablayrolles, A., Mensch, A., Bamford, C., Chaplot, D. S., de las Casas, D., Bressand, F., Lengyel, G., Lample, G., Saulnier, L., Lavaud, L. R., Lachaux, M.-A., Stock, P., Scao, T. L., Lavril, T., Wang, T., Lacroix, T., and Sayed, W. E. Mistral 7b, 2023. Marks, S. and Tegmark, M. The Geometry of Truth: Emer-gent Linear Structure in Large Language Model Repre-sentations of True/False Datasets. In First Conference on Language Modeling , 2024. Marvin, G., Hellen, N., Jjingo, D., and Nakatumba-Nabende, J. Prompt engineering in large language models. In Inter-national Conference on Data Intelligence and Cognitive Informatics , pp. 387–402. Springer, 2023. 9Towards Understanding Steering Strength + +Mikolov, T., Yih, W.-t., and Zweig, G. Linguistic regularities in continuous space word representations. In Proceedings of the 2013 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies , pp. 746–751, Atlanta, Georgia, June 2013. Association for Computational Linguistics. Min, P. P., Paudel, A., Adityo, N., Zhu, A., Rufail, A., Blondin, C., Zhu, K., Dev, S., and O’Brien, S. Mitigating sycophancy in language models via sparse activation fu-sion and multi-layer activation steering. In Mechanistic Interpretability Workshop at NeurIPS 2025 , 2025. Mixon, D. G., Parshall, H., and Pi, J. Neural collapse with unconstrained features. Sampling Theory, Signal Processing, and Data Analysis , 20(2):11, 2022. Nanda, N., Lee, A., and Wattenberg, M. Emergent Linear Representations in World Models of Self-Supervised Se-quence Models. In Proceedings of the 6th BlackboxNLP Workshop: Analyzing and Interpreting Neural Networks for NLP , 2023. Park, K., Choe, Y. J., and Veitch, V. The linear represen-tation hypothesis and the geometry of large language models. In Proceedings of the 41st International Confer-ence on Machine Learning , volume 235 of Proceedings of Machine Learning Research , pp. 39643–39666. PMLR, 21–27 Jul 2024. Penedo, G., Kydl ´ı ˇcek, H., allal, L. B., Lozhkov, A., Mitchell, M., Raffel, C., Werra, L. V., and Wolf, T. The fineweb datasets: Decanting the web for the finest text data at scale. In The Thirty-eight Conference on Neural Informa-tion Processing Systems Datasets and Benchmarks Track ,2024. URL https://openreview.net/forum? id=n6SCkn2QaG .Radford, A., Narasimhan, K., Salimans, T., Sutskever, I., et al. Improving language understanding by generative pre-training. 2018. Radford, A., Wu, J., Child, R., Luan, D., Amodei, D., Sutskever, I., et al. Language models are unsupervised multitask learners. OpenAI blog , 1(8):9, 2019. Rimsky, N., Gabrieli, N., Schulz, J., Tong, M., Hubinger, E., and Turner, A. Steering llama 2 via contrastive activation addition. In Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Vol-ume 1: Long Papers) , pp. 15504–15522. Association for Computational Linguistics, August 2024. Shazeer, N., Mirhoseini, A., Maziarz, K., Davis, A., Le, Q. V., Hinton, G. E., and Dean, J. Outrageously large neural networks: The sparsely-gated mixture-of-experts layer. In 5th International Conference on Learning Rep-resentations, ICLR 2017, Toulon, France, April 24-26, 2017, Conference Track Proceedings , 2017. Stickland, A. C., Lyzhov, A., Pfau, J., Mahdi, S., and Bow-man, S. R. Steering Without Side Effects: Improving Post-Deployment Control of Language Models. In Neurips Safe Generative AI Workshop 2024 , 2024. Su, J., Chen, J., Li, H., Chen, Y., Qing, L., and Zhang, Z. Activation steering decoding: Mitigating hallucination in large vision-language models through bidirectional hidden state intervention. In Proceedings of the 63rd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) , pp. 12964–12974, 2025. Tan, D. C. H., Chanin, D., Lynch, A., Paige, B., Kanoulas, D., Garriga-Alonso, A., and Kirk, R. Analysing the Generalisation and Reliability of Steering Vectors. In The Thirty-eighth Annual Conference on Neural Information Processing Systems , 2024. Team, G., Kamath, A., Ferret, J., Pathak, S., Vieillard, N., Merhej, R., Perrin, S., Matejovicova, T., Ram ´e, A., Rivi `ere, M., et al. Gemma 3 technical report. arXiv preprint arXiv:2503.19786 , 2025. Templeton, A., Conerly, T., Marcus, J., Lindsey, J., Bricken, T., Chen, B., Pearce, A., Citro, C., Ameisen, E., Jones, A., et al. Scaling monosemanticity: Extracting interpretable features from claude 3 sonnet. transformer circuits thread, 2024. Thrampoulidis, C. Implicit optimization bias of next-token prediction in linear models. Advances in Neural Informa-tion Processing Systems , 37:22624–22656, 2024. Touvron, H., Martin, L., Stone, K., Albert, P., Almahairi, A., Babaei, Y., Bashlykov, N., Batra, S., Bhargava, P., Bhosale, S., et al. Llama 2: Open foundation and fine-tuned chat models. arXiv preprint arXiv:2307.09288 ,2023. Turner, A. M., Thiergart, L., Leech, G., Udell, D., Vazquez, J. J., Mini, U., and MacDiarmid, M. Steering lan-guage models with activation engineering. arXiv preprint arXiv:2308.10248 , 2023. Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, Ł., and Polosukhin, I. At-tention is all you need. Advances in neural information processing systems , 30, 2017. Von R ¨utte, D., Anagnostidis, S., Bachmann, G., and Hof-mann, T. A Language Model’s Guide Through Latent Space. In Proceedings of the 41st International Confer-ence on Machine Learning . PMLR, 2024. 10 Towards Understanding Steering Strength + +Wei, J., Bosma, M., Zhao, V., Guu, K., Yu, A. W., Lester, B., Du, N., Dai, A. M., and Le, Q. V. Finetuned Lan-guage Models are Zero-Shot Learners. In International Conference on Learning Representations , 2022. Wu, Z., Arora, A., Geiger, A., Wang, Z., Huang, J., Jurafsky, D., Manning, C. D., and Potts, C. AxBench: Steering LLMs? Even Simple Baselines Outperform Sparse Au-toencoders. In Forty-second International Conference on Machine Learning , 2025. Yang, A., Li, A., Yang, B., Zhang, B., Hui, B., Zheng, B., Yu, B., Gao, C., Huang, C., Lv, C., et al. Qwen3 technical report. arXiv preprint arXiv:2505.09388 , 2025. Zhang, B. and Sennrich, R. Root mean square layer nor-malization. Advances in neural information processing systems , 32, 2019. Zhao, Y. and Thrampoulidis, C. Geometry of Semantics in Next-Token Prediction: How Optimization Implicitly Organizes Linguistic Representations. arXiv preprint arXiv:2505.08348 , 2025a. Zhao, Y. and Thrampoulidis, C. Geometry of Concepts in Next-token Prediction: Neural-Collapse Meets Semantics. In The Second Conference on Parsimony and Learning (Recent Spotlight Track) , 2025b. Zhao, Y., Behnia, T., Vakilian, V., and Thrampoulidis, C. Implicit geometry of next-token prediction: From lan-guage sparsity patterns to model representations. In First Conference on Language Modeling , 2024. Ziegler, D. M., Stiennon, N., Wu, J., Brown, T. B., Radford, A., Amodei, D., Christiano, P., and Irving, G. Fine-tuning language models from human preferences. arXiv preprint arXiv:1909.08593 , 2019. Zou, A., Phan, L., Chen, S., Campbell, J., Guo, P., Ren, R., Pan, A., Yin, X., Mazeika, M., Dombrowski, A.-K., et al. Representation Engineering: A Top-Down Approach to AI Transparency, 2023. 11 Towards Understanding Steering Strength + +## Contents of the Appendix + +A Additional practical experiments and setting 12 B Proofs and additional results 23 + +B.1 Additional results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 B.2 Technical lemmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 B.3 Proof of Theorem 3.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 B.4 Proof of Theorem 3.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 B.5 Proof of Theorem 3.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 B.6 Proof of Proposition 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 + +## A. Additional practical experiments and setting + +> Table A.1. Models used in the experiments of Section 5. + +Model family Sizes + +1-layer GPT (Radford et al., 2018) 0.009B GPT-2 (Radford et al., 2019) 0.12B, 0.77B, 1.5B Gemma 3 (Team et al., 2025) 1B, 4B Qwen 3 (Yang et al., 2025) 0.6B, 4B, 8B Llama 2 (Touvron et al., 2023) 7B Mistral (Jiang et al., 2023) 7B + +> Table A.2. Non-exhaustive list of tokens observed when steering the models in Table A.1, recorded among the highest-probability next tokens at α= 200 in the setting of Section 4. For readability, we report only full-word tokens; for tokenizers that produce smaller subwords, we observe the same phenomenon, with fragments such as ‘happ’ instead of ‘happiness’. + +Steered concept High-probability next tokens + +apathetic okay, yeah, bullshit, whatnot, probably depression discomfort, sadness, emotional, despair, uncomfortable evil horrifying, destruction, terror, murderous, deadly humorous comedic, ridiculous, silly, fidget, hilarious impolite verbal, disrespectful, stupid, rude, insulting joy feeling, happiness, ecstatic, joyful, laughter lying absurd, ridiculous, thieves, truth, spiritual optimistic cheerful, cherish, religious, optimism, someday + +Setting to generate the positive ( P ) and negative ( N ) prompt sets. As described in Section 4, P is generated by a prompted instruct-LLM (Gemma 3 12 B) using a system prompt of the following form: (1) behavior instruction → (2) definition of the concept → (3) example sentences exhibiting the concept. For P , we use the target concept in the following template. For N , in the contrastive setting, we reuse the same template but replace the concept with its negation (the negated concept is itself generated by the LLM). Otherwise, in the unrelated setting, N consists of sampled generations from the LLM to steer starting from an empty prompt. Here is the exact template used in our experiments: 12 Towards Understanding Steering Strength + +> positive_chat_template =[{"role": "system", "content": "You are an assistant."}, {"role": "user", "content": (f"Describe the concept: {concept}. Begin with aone-sentence definition. ""Then give several natural first-person examples that demonstrate the concept in an unmistakable way. ""Write as if you are the concept itself. Your examples must make the concept obvious through what you say or do " "| for example, if the concept is *lying*, give clearly false statements (e.g., claiming impossible facts or events).\n" "Do not use third-person references. Do not explain anything. ""After the definition, output only the examples as simple first-person sentences that fully embody the concept." ), }, ] + +We steer 8 concepts: apathetic, depression, evil, humorous, impolite, joy, lying, and optimistic. Setting to compute the concept probability in practice. As described in Section 5, we use a judge LLM (Gemma 3 12 B) to decide whether a target concept is present in a steered LLM generation. The following prompt is used to obtain a binary label: + +> judge_question_template: str =("Text:\\n{completion}\\n\\n" "Does the text above express the concept {concept} (any word linked to the concept in the whole sentence even if it do not make sense is sufficient for apositive reply)? Reply with 1for yes and 0for no.\\n" "Answer:" ) + +As this prompt makes clear, we do not attempt to assess output quality here; we only measure concept presence, using a permissive criterion (any concept-related word suffices). + +Additional figures for the influence of steering strength on next-token probabilities. We complement Figure 6 from Section 5 with additional models, concepts, steering layers, and negative steering strengths; see Figures A.7, A.8, A.9, and A.10. Overall, the qualitative predictions of Theorem 3.3 are observed. The main discrepancy occurs when steering early layers: tokens exhibiting bumps or dominating at large α are less often concept-related. This is expected, as steering early layers is known to yield weaker results (Chen et al., 2025). In Table A.2, we provide a non-exhaustive sample of the highest-probability next tokens recorded at α = 200 ; consistently, steering works as intended by increasing the probability of concept-related tokens. + +Additional figures for the influence of steering strength on concept probability in the output. We complement Figure 7 from Section 5 with additional models, concepts, and steering layers; see Figures A.11 and A.12. The qualitative prediction of Theorem 3.6 is partially verified (more often true than false). Results are sensitive to the concept itself (intuitively harder concepts such as lying yield less clean curves than easier ones such as joy). The main discrepancy again arises when steering early layers, which is consistent with prior observations (Chen et al., 2025). + +Additional figures for the influence of steering strength on cross-entropy. We complement Figure 7 from Section 5 with additional models, concepts, and steering layers; see Figure A.13. Overall, the predictions of Theorem 3.8 and Proposition 4.1 are observed. + +Additional results. We provide additional plots for experiments mentioned in Section 5, including MMLU (Figure A.6), steering only the last-token representation h(ℓ) + +> −1,: + +(Figure A.2), normalization of the steering vector (Figure A.1), contrastive + +N (Figure A.5), error bars under resampling of P and N (Figure A.3) and steering, in the setting of Section 4, a 1-layer GPT-style transformer (Figure A.4) that we train on fineweb (Penedo et al., 2024). 13 Towards Understanding Steering Strength 0 500 1000 1500 2000 + +α + +> 0.00 +> 0.25 +> 0.50 +> 0.75 + +openai-community/gpt2 0 500 1000 1500 2000 + +α + +> 0.000 +> 0.025 +> 0.050 +> 0.075 + +Qwen/Qwen3-8B 0 500 1000 1500 2000 + +> 0.0 +> 0.2 +> 0.4 +> 0.6 0500 1000 1500 2000 +> 0.0 +> 0.1 +> 0.2 +> 0.3 +> 0.4 +> 0.5 0500 1000 1500 2000 +> 0.0 +> 0.1 +> 0.2 +> 0.3 +> 0.4 +> 0.5 0500 1000 1500 2000 +> 0.00 +> 0.05 +> 0.10 +> 0.15 +> 0.20 +> 0.25 + +Figure A.1. Effect of steering strength α > 0 on next-token probability shifts ∆p(z, α ) for the concepts (top to bottom): depression, joy, and evil. Each row of two plots corresponds to a single steered concept. Steering is applied at an middle layer in each model (we steer always the same layer for that model) and the steering vector is normalized . Each curve corresponds to a token z selected among the eight highest-probability tokens at α = 2000 . This matches Theorem 3.3: most tokens exhibit a bump, while a few increase throughout. Notably, many selected tokens are related to the steered concept. 0 50 100 150 200 + +α + +> 0.0 +> 0.2 +> 0.4 + +openai-community/gpt2 0 50 100 150 200 + +α + +> 0.00 +> 0.25 +> 0.50 +> 0.75 + +google/gemma-3-1b-it 0 50 100 150 200 + +α + +> 0.00 +> 0.02 + +Qwen/Qwen3-8B 0 50 100 150 200 + +> 0.0 +> 0.2 +> 0.4 +> 0.6 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 050 100 150 200 +> 0.0 +> 0.1 +> 0.2 +> 0.3 + +Figure A.2. Effect of steering strength α > 0 on next-token probability shifts ∆p(z, α ) for the concepts (top to bottom): evil and joy. Each row of three plots corresponds to a single steered concept. Steering is applied at an middle layer in each model (we steer always the same layer for that model) and we steer only the last token representation h(ℓ)(−1) . Each curve corresponds to a token z selected among the eight highest-probability tokens at α = 200 . This matches Theorem 3.3: most tokens exhibit a bump, while a few increase throughout. Notably, many selected tokens are related to the steered concept. 0 25 50 75 100 125 150 175 200 + +α + +> 0.0 +> 0.2 +> 0.4 +> 0.6 + +google/gemma-3-1b-it 0 25 50 75 100 125 150 175 200 + +α + +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 + +google/gemma-3-1b-it 0 25 50 75 100 125 150 175 200 + +α + +> 0.00 +> 0.25 +> 0.50 +> 0.75 +> 1.00 + +google/gemma-3-1b-it + +Figure A.3. Effect of steering strength α > 0 on next-token probability shifts ∆p(z, α ) for the concept “evil”. Steering is applied at a + +middle layer in each model (we use a fixed middle layer per model). Each curve corresponds to a token z selected among the eight highest-probability tokens at α = 200 , plotted with mean and standard deviation over 5 runs obtained by resampling the prompt sets P + +and N . This matches Theorem 3.3: most tokens exhibit a bump, while a few increase throughout. The variability across runs is moderate, so for computational cost we omit error bars in the main figures. + +14 Towards Understanding Steering Strength 0 10 20 30 40 50 + +> 0.00 +> 0.02 +> 0.04 +> 0.06 + +1-layer GPT + +Figure A.4. Effect of steering strength α > 0 on next-token probability shifts ∆p(z, α ) for the concept “uppercase words”. Each curve corresponds to a token z selected among the eight highest-probability tokens at α = 50 . This matches Theorem 3.3: most tokens exhibit a bump, while a few increase throughout. Notably, many selected tokens are uppercase words. 0 50 100 150 200 + +α + +> 0.0 +> 0.2 +> 0.4 +> openai-community/gpt2 050 100 150 200 + +α + +> 0.00 +> 0.25 +> 0.50 +> 0.75 +> google/gemma-3-1b-it 050 100 150 200 + +α + +> 0.0 +> 0.5 +> Qwen/Qwen3-8B 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 +> 1.0 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 050 100 150 200 +> 0.0 +> 0.1 +> 0.2 +> 0.3 +> 0.4 050 100 150 200 +> 0.00 +> 0.05 +> 0.10 +> 0.15 + +Figure A.5. Effect of steering strength α > 0 on next-token probability shifts ∆p(z, α ) for the concepts (top to bottom): depression, joy, and evil. Each row of three plots corresponds to a single steered concept. Steering is applied at an middle layer in each model (we steer always the same layer for that model) and the negative prompt set N is built in the contrastive setting . Each curve corresponds to a token + +z selected among the eight highest-probability tokens at α = 200 . This matches Theorem 3.3: most tokens exhibit a bump, while a few increase throughout. Notably, many selected tokens are related to the steered concept. -10 -5 0 5 10 + +α + +0.4 + +0.6 + +google/gemma-3-4b-it + +Figure A.6. Effect of steering strength α on MMLU (Hendrycks et al., 2021) for the concept “evil”. MMLU is a practical performance metric, more indicative of real-world capability than cross-entropy. We measure it using the DeepEval library, for which random guessing yields 25% . As with cross-entropy, increasing α inevitably degrades model performance. + +15 Towards Understanding Steering Strength 0 50 100 150 200 + +α + +> 0.0 +> 0.2 +> 0.4 +> 0.6 + +openai-community/gpt2 0 50 100 150 200 + +α + +> 0.00 +> 0.25 +> 0.50 +> 0.75 + +google/gemma-3-1b-it 0 50 100 150 200 + +α + +> 0.000 +> 0.025 +> 0.050 +> 0.075 + +mistralai/Mistral-7B-Instruct-v0.3 0 50 100 150 200 + +> 0.00 +> 0.05 +> 0.10 +> 0.15 +> 0.20 050 100 150 200 +> 0.0 +> 0.1 +> 0.2 +> 0.3 +> 0.4 050 100 150 200 +> 0.00 +> 0.02 +> 0.04 +> 0.06 050 100 150 200 +> 0.00 +> 0.02 +> 0.04 +> 0.06 +> 0.08 +> 0.10 050 100 150 200 +> 0.00 +> 0.05 +> 0.10 +> 0.15 050 100 150 200 +> 0.000 +> 0.002 +> 0.004 +> 0.006 050 100 150 200 +> 0.00 +> 0.05 +> 0.10 +> 0.15 +> 0.20 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 +> 1.0 050 100 150 200 +> 0.00 +> 0.02 +> 0.04 +> 0.06 050 100 150 200 +> 0.00 +> 0.01 +> 0.02 +> 0.03 +> 0.04 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 050 100 150 200 +> 0.000 +> 0.001 +> 0.002 +> 0.003 +> 0.004 050 100 150 200 +> 0.00 +> 0.02 +> 0.04 +> 0.06 +> 0.08 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 050 100 150 200 +> 0.000 +> 0.001 +> 0.002 +> 0.003 +> 0.004 +> 0.005 + +Figure A.7. Effect of steering strength α > 0 on next-token probability shifts ∆p(z, α ) for the concepts (top to bottom): depression, evil, impolite, joy, lying, and apathetic. Each row of three plots corresponds to a single steered concept. Steering is applied at an early + +layer in each model (we steer always the same layer for that model). Each curve corresponds to a token z selected among the eight highest-probability tokens at α = 200 . This partially matches Theorem 3.3: most tokens exhibit a bump, while a few increase throughout. Notably, many selected tokens are not concept-related, consistent with the observation that steering early layers often yields worse results (Chen et al., 2025). + +16 Towards Understanding Steering Strength 0 50 100 150 200 + +α + +> 0.00 +> 0.25 +> 0.50 +> 0.75 + +openai-community/gpt2 0 50 100 150 200 + +α + +> 0.0 +> 0.5 + +google/gemma-3-1b-it 0 50 100 150 200 + +α + +> 0.00 +> 0.02 +> 0.04 + +mistralai/Mistral-7B-Instruct-v0.3 0 50 100 150 200 + +> 0.0 +> 0.2 +> 0.4 +> 0.6 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 050 100 150 200 +> 0.000 +> 0.025 +> 0.050 +> 0.075 +> 0.100 050 100 150 200 +> 0.0 +> 0.1 +> 0.2 +> 0.3 +> 0.4 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 050 100 150 200 +> 0.0 +> 0.1 +> 0.2 +> 0.3 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 050 100 150 200 +> 0.0 +> 0.1 +> 0.2 +> 0.3 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 +> 1.0 050 100 150 200 +> 0.000 +> 0.005 +> 0.010 +> 0.015 050 100 150 200 +> 0.00 +> 0.02 +> 0.04 +> 0.06 +> 0.08 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 050 100 150 200 +> 0.000 +> 0.001 +> 0.002 +> 0.003 +> 0.004 +> 0.005 + +Figure A.8. Effect of steering strength α > 0 on next-token probability shifts ∆p(z, α ) for the concepts (top to bottom): depression, evil, impolite, joy, lying, and apathetic. Each row of three plots corresponds to a single steered concept. Steering is applied at a middle + +layer in each model (we steer always the same layer for that model). Each curve corresponds to a token z selected among the eight highest-probability tokens at α = 200 . This matches Theorem 3.3: most tokens exhibit a bump, while a few increase throughout. Notably, the selected tokens are related to the steered concept. + +17 Towards Understanding Steering Strength 0 50 100 150 200 + +α + +> 0.0 +> 0.1 +> 0.2 +> 0.3 + +openai-community/gpt2 0 50 100 150 200 + +α + +> 0.00 +> 0.25 +> 0.50 +> 0.75 + +google/gemma-3-1b-it 0 50 100 150 200 + +α + +> 0.00 +> 0.05 +> 0.10 + +mistralai/Mistral-7B-Instruct-v0.3 0 50 100 150 200 + +> 0.0 +> 0.1 +> 0.2 050 100 150 200 +> 0.0 +> 0.1 +> 0.2 +> 0.3 050 100 150 200 +> 0.00 +> 0.05 +> 0.10 +> 0.15 +> 0.20 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 050 100 150 200 +> 0.0 +> 0.1 +> 0.2 +> 0.3 +> 0.4 050 100 150 200 +> 0.00 +> 0.05 +> 0.10 +> 0.15 +> 0.20 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 050 100 150 200 +> 0.0 +> 0.1 +> 0.2 +> 0.3 050 100 150 200 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 050 100 150 200 +> 0.0 +> 0.1 +> 0.2 +> 0.3 +> 0.4 050 100 150 200 +> 0.0 +> 0.1 +> 0.2 +> 0.3 +> 0.4 +> 0.5 + +Figure A.9. Effect of steering strength α > 0 on next-token probability shifts ∆p(z, α ) for the concepts (top to bottom): depression, evil, impolite, joy, lying, and apathetic. Each row of three plots corresponds to a single steered concept. Steering is applied at the last + +layer in each model (we steer always the same layer for that model). Each curve corresponds to a token z selected among the eight highest-probability tokens at α = 200 . This matches Theorem 3.3: most tokens exhibit a bump, while a few increase throughout. Notably, the selected tokens are mostly related to the steered concept. + +18 Towards Understanding Steering Strength -200 -150 -100 -50 0 + +α + +> 0.0 +> 0.2 +> 0.4 +> 0.6 + +openai-community/gpt2 -200 -150 -100 -50 0 + +α + +> 0.0 +> 0.5 + +google/gemma-3-1b-it -200 -150 -100 -50 0 + +α + +> 0.000 +> 0.002 +> 0.004 + +mistralai/Mistral-7B-Instruct-v0.3 -200 -150 -100 -50 0 + +> 0.000 +> 0.025 +> 0.050 +> 0.075 +> 0.100 -200 -150 -100 -50 0 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 -200 -150 -100 -50 0 +> 0.000 +> 0.001 +> 0.002 +> 0.003 +> 0.004 -200 -150 -100 -50 0 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 -200 -150 -100 -50 0 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 -200 -150 -100 -50 0 +> 0.000 +> 0.002 +> 0.004 +> 0.006 -200 -150 -100 -50 0 +> 0.00 +> 0.05 +> 0.10 +> 0.15 -200 -150 -100 -50 0 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 -200 -150 -100 -50 0 +> 0.000 +> 0.001 +> 0.002 +> 0.003 +> 0.004 +> 0.005 -200 -150 -100 -50 0 +> 0.00 +> 0.05 +> 0.10 +> 0.15 +> 0.20 -200 -150 -100 -50 0 +> 0.0 +> 0.1 +> 0.2 +> 0.3 -200 -150 -100 -50 0 +> 0.000 +> 0.002 +> 0.004 +> 0.006 -200 -150 -100 -50 0 +> 0.00 +> 0.01 +> 0.02 +> 0.03 +> 0.04 -200 -150 -100 -50 0 +> 0.0 +> 0.2 +> 0.4 +> 0.6 -200 -150 -100 -50 0 +> 0.000 +> 0.002 +> 0.004 +> 0.006 +> 0.008 +> 0.010 + +Figure A.10. Effect of steering strength α < 0 on next-token probability shifts ∆p(z, α ) for the concepts (top to bottom): depression, evil, impolite, joy, lying, and apathetic. Each row of three plots corresponds to a single steered concept. Steering is applied at a middle + +layer in each model (we steer always the same layer for that model). Each curve corresponds to a token z selected among the eight highest-probability tokens at α = −200 . This matches Theorem 3.3: most tokens exhibit a bump, while a few increase throughout. Notably, the selected tokens are all not related to the steered concept. + +19 Towards Understanding Steering Strength -40 -20 0 20 40 + +α + +0.0 + +0.5 + +1.0 + +openai-community/gpt2-large + +> 0 +> 23 +> 35 + +-40 -20 0 20 40 + +α + +0.0 + +0.5 + +1.0 + +openai-community/gpt2-xl + +> 0 +> 15 +> 47 + +-40 -20 0 20 40 + +α + +0.0 + +0.5 + +1.0 + +google/gemma-3-1b-it + +> 0 +> 12 +> 25 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 23 +> 35 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 47 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 12 +> 25 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 23 +> 35 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 47 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 12 +> 25 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 23 +> 35 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 47 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 12 +> 25 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 23 +> 35 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 47 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 12 +> 25 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 23 +> 35 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 47 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 12 +> 25 + +Figure A.11. Influence of steering strength α on concept probability for the concepts (top to bottom): depression, evil, humorous, impolite, joy, and optimistic. Each row of three plots corresponds to a single steered concept, and each column corresponds to a different model. Steering is applied at three layers (early, middle, late), indicated in each legend. Overall, the curves are consistent with Theorem 3.6, which predicts a sigmoidal shape. Early-layer steering is more erratic , consistent with reports that steering early layers yields worse results (Chen et al., 2025). + +20 Towards Understanding Steering Strength -40 -20 0 20 40 + +α + +0.0 + +0.5 + +1.0 + +openai-community/gpt2 + +> 3 +> 7 +> 11 + +-40 -20 0 20 40 + +α + +0.0 + +0.5 + +1.0 + +meta-llama/Llama-2-7b-chat-hf + +> 0 +> 15 +> 31 + +-40 -20 0 20 40 + +α + +0.0 + +0.5 + +1.0 + +mistralai/Mistral-7B-Instruct-v0.3 + +> 0 +> 15 +> 31 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 3 + +> 7 +> 11 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 31 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 31 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 3 + +> 7 +> 11 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 31 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 31 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 3 + +> 7 +> 11 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 31 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 31 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 3 + +> 7 +> 11 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 31 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 31 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 3 + +> 7 +> 11 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 31 + +-40 -20 0 20 40 + +0.00 + +0.25 + +0.50 + +0.75 + +1.00 0 + +> 15 +> 31 + +Figure A.12. Influence of steering strength α on concept probability for the concepts (top to bottom): depression, evil, humorous, impolite, joy, and optimistic. Each row of three plots corresponds to a single steered concept, and each column corresponds to a different model. Steering is applied at three layers (early, middle, late), indicated in each legend. Overall, the curves are consistent with Theorem 3.6, which predicts a sigmoidal shape. Early-layer steering is more erratic , consistent with reports that steering early layers yields worse results (Chen et al., 2025). We also observe less consistent behavior on Llama 2. + +21 Towards Understanding Steering Strength -100 -50 0 50 100 + +α + +> 0 +> 10 +> 20 + +openai-community/gpt2-large + +> 11 +> 23 +> 35 -100 -50 050 100 + +α + +> 0 +> 10 +> 20 +> 30 +> 40 + +google/gemma-3-1b-it + +> 8 +> 16 +> 25 -100 -50 050 100 + +α + +> 0 +> 10 +> 20 + +Qwen/Qwen3-0.6B + +> 9 +> 18 +> 27 -100 -50 050 100 +> 0 +> 5 +> 10 +> 15 +> 20 +> 25 11 +> 23 +> 35 -100 -50 050 100 +> 0 +> 10 +> 20 +> 30 +> 40 +> 50 +> 8 +> 16 +> 25 -100 -50 050 100 +> 0 +> 5 +> 10 +> 15 +> 20 +> 9 +> 18 +> 27 -100 -50 050 100 +> 0 +> 5 +> 10 +> 15 +> 20 11 +> 23 +> 35 -100 -50 050 100 +> 0 +> 10 +> 20 +> 30 +> 40 +> 50 +> 8 +> 16 +> 25 -100 -50 050 100 +> 0 +> 5 +> 10 +> 15 +> 20 9 +> 18 +> 27 -100 -50 050 100 +> 0 +> 5 +> 10 +> 15 +> 20 11 +> 23 +> 35 -100 -50 050 100 +> 0 +> 10 +> 20 +> 30 +> 8 +> 16 +> 25 -100 -50 050 100 +> 0 +> 5 +> 10 +> 15 +> 20 9 +> 18 +> 27 -100 -50 050 100 +> 0 +> 10 +> 20 +> 30 11 +> 23 +> 35 -100 -50 050 100 +> 0 +> 10 +> 20 +> 30 +> 40 +> 50 8 +> 16 +> 25 -100 -50 050 100 +> 0 +> 5 +> 10 +> 15 +> 20 9 +> 18 +> 27 -100 -50 050 100 +> 0 +> 5 +> 10 +> 15 +> 20 11 +> 23 +> 35 -100 -50 050 100 +> 0 +> 20 +> 40 +> 60 8 +> 16 +> 25 -100 -50 050 100 +> 0 +> 5 +> 10 +> 15 +> 20 +> 9 +> 18 +> 27 + +Figure A.13. Influence of steering strength α on the cross-entropy ∆CE( α) for the concepts (top to bottom): apathetic, depression, evil, humorous, impolite, and joy. Each row of three plots corresponds to a single steered concept, and each column corresponds to a different model. Steering is applied at three layers (early, middle, late), indicated in each legend. As predicted by Theorem 3.8, ∆CE( α) is locally + +U -shaped around α = 0 and saturates for large |α|, in line with Proposition 4.1. + +22 Towards Understanding Steering Strength + +## B. Proofs and additional results + +B.1. Additional results 60 50 40 30 20 10 0 + +> 0.2 +> 0.0 +> 0.2 +> 0.4 +> 0.6 +> 0.8 +> 1.0 +> p( ) +> target +> off-target + +Figure B.1. Next-token probability increases ∆p(α) for a fixed context and negative α. Each curve corresponds to a token z: target tokens T are in blue and off-target tokens in orange. Most off-target tokens exhibit a “bump” (peaking at α(1 ,4) ), while one off-target token decreases on R and target tokens are increasing on R−. + +Generalizing our results to az depending on j. Inspecting the proofs shows that all results, except Remark 3.4, rely on Lemma B.4. Consequently, our main theorems continue to hold verbatim as long as the same sign-separation property holds for the log-odds M (Lemma B.4). However, if one allows az and bz to depend on the context index j without further structure, this sign-separation property may fail. A simple generalization that preserves sign separation is to allow az to depend on j but keep bz independent of j, assuming + +aj,z > b z . This is interpretable: only in-concept (meaning, z, cj ∈ Ck) probabilities vary with the context, while off-concept probabilities remain at a small baseline level bz . Allowing bz to depend on j while still enforcing Lemma B.4 is possible, but typically leads to a less interpretable assumption. So grossly said, if we see Lemma B.4 as an assumption, then our results work. Additionally, Lemma B.4 seems to be true in practice see Appendix A. + +Plot of ∆p(α) for negative steering strength. We provide the counterpart of Figure 6 for negative α, see Figure B.1. + +Perfect training of the UFM. To illustrate that Assumption 2 is attainable in our theoretical setting, we train a UFM with gradient descent on cross-entropy loss on the following dataset instantiation from Definition 2.1, which satisfies Assumption 1: + +∀z ∈ [V ], + +(az := 1−εs + +bz := ε + +> (G−1) s + +, + +with ε ∈ (0 , (G − 1) /G ) a smoothing parameter. The dataset entropy is ≈ 1.3317 (a lower bound on the achievable loss (Thrampoulidis, 2024)), and we reach a loss of ≈ 1.3318 , indicating that the model learns the dataset essentially + +perfectly .As stated in Section 3.1, we have an additional results about the limits of ∆p(α) (Definition 3.1): + +Proposition B.1 (Limits of ∆p(α)). Given a context index j ∈ [m], and a token z ∈ [V ], the limits of ∆p(α) when + +α → +∞ is: + +lim + +> α→+∞ + +∆p(α) = 1z∈M + +p(z | cj ) + +P + +> z′∈M + +p(z′ | cj ) − p(z | cj ) . (5) + +Similarly, for the limit α → −∞ , replace M by M in Eq. (5) . + +Eq. (5) has the following interpretation: in the limit α → +∞ (resp. α → −∞ ), ∆p(α) concentrates all its mass on the tokens z ∈ M (resp. z ∈ M ). If multiple tokens attain the maximal or minimal log-odds, the probability mass is shared among all such tokens. 23 Towards Understanding Steering Strength + +Proof. Let us prove that softmax behaves as follows when scaling the steering strength α: + +∀z ∈ [V ], lim + +> α→+∞ + +σz + +fα(cj ) = 1z∈M + +p(z | cj ) + +P + +> z′∈M + +p(z′ | cj ) . (6) where M is the set of token attaining the maximum log-odd Mmax . A short proof of the previous display is as follows: + +σz + +fα(cj ) = p(z | cj ) exp ( αM (z)) + +P + +> z′∈[V] + +p(z′ | cj ) exp ( αM (z′)) = p(z | cj ) exp ( αM (z)) + +P + +> z′∈[V] + +p(z′ | cj ) exp ( αM (z′)) exp ( −αM max )exp ( −αM max )= p(z | cj ) exp ( α(M (z) − Mmax )) + +P + +> z′∈[V] + +p(z′ | cj ) exp ( α(M (z′) − Mmax )) = + + + +> p(z|cj)P +> z′∈Mp(z′|cj)+ P +> z′/∈Mp(z′|cj) exp( α(M(z′)−Mmax )) + +if z ∈ M , + +> p(z|cj) exp( α(M(z)−Mmax )) P +> z′∈[V]p(z′|cj) exp( α(M(z′)−Mmax )) + +otherwise. In the first case ( z ∈ M ) of the previous display, as (M (z′) − Mmax ) < 0 with z′ /∈ M , the limit is + +lim + +> α→+∞ + +p(z | cj ) + +P + +> z′∈M + +p(z′ | cj ) + P + +> z′/∈M + +p(z′ | cj ) exp ( α(M (z′) − Mmax )) = p(z | cj ) + +P + +> z′∈M + +p(z′ | cj ) . + +In the second case ( z / ∈ M ), the limit is done by bounding the term, using the fact that + +X + +> z′∈[V] + +p(z′ | cj ) exp ( α(M (z′) − Mmax )) ≥ p(z⋆ | cj ) exp (0) + +where z⋆ ∈ M . We get the following bound: + +0 < p(z | cj ) exp ( α(M (z) − Mmax )) + +P + +> z′∈[V] + +p(z′ | cj ) exp ( α(M (z′) − Mmax )) ≤ p(z | cj ) + +p(z⋆ | cj ) exp ( α(M (z) − Mmax )) , + +which implies that the second case term goes to 0 as α → +∞ (because (M (z) − Mmax ) < 0 with z / ∈ M ). Using the previous display we get: + +lim + +> α→+∞ + +∆p(α) = 1z∈M + +p(z | cj ) + +P + +> z′∈M + +p(z′ | cj ) − p(z | cj ) (7) + += + + + +1z∈MazP + +> z′∈Mp(z′|cj) + +− az , if cj ∈ T , + +1z∈MbzP + +> z′∈Mp(z′|cj) + +− bz , otherwise. (8) As az > b z (Assumption 1), the tokens which can attain the max margin are necessarily concept tokens T (Lemma B.4), thus + +lim + +> α→+∞ + +∆p(α) = + + + +1z∈MazP + +> z′∈Maz′ + +− az , if cj ∈ T , + +1z∈MbzP + +> z′∈Mbz′ + +− bz , otherwise. (9) Same thing for α → −∞ . + +B.2. Technical lemmas + +In the following we introduce and prove the technical lemmas needed for Section 3. In the UFM model, activation steering on the embedding hj admits an explicit expression for the resulting model output: 24 Towards Understanding Steering Strength + +Lemma B.2 (Steering on UFM). Steering the embedding hj along the direction v from Eq. (3) with strength α ∈ R, we obtain the steered logits + +fα(cj ) := Whj + αv = ℓj + αq + +X + +> i∈P + +ℓi − X + +> i∈N + +ℓi + +! + +, + +where ℓj := f (cj ) are the unsteered logits for context cj .Proof. The rewriting is a direct consequence of the UFM model and steering vector v linearity: + +fα(cj ) = W He j + α 1 + +q + +X + +> i∈P + +He i − 1 + +q + +X + +> i∈N + +He i + +!! + += WH ej + α 1 + +q + +X + +> i∈P + +ei − 1 + +q + +X + +> i∈N + +ei + +!! + += ℓj + αq + +X + +> i∈P + +ℓi − X + +> i∈N + +ℓi + +! + +. + +Thus, studying activation steering reduces to analyzing how the softmax behaves under a linear shift of its input ℓj by the vector P + +> i∈P + +ℓi − P + +> i∈N + +ℓi + +.The log-odds M (z) (Definition 3.2) are central because steering modifies the softmax by reweighting each token probability + +p(z | cj ) by the exponential factor exp ( αM (z)) . + +Lemma B.3 (Rewriting ∆p(α)). Assume Assumption 2. The first component of ∆p(α) can be rewritten as follows: + +σz + +fα(cj ) = p(z | cj ) exp ( αM (z)) + +P + +> z′∈[V] + +p(z′ | cj ) exp ( αM (z′)) . + +Proof. We express explicitly σz + +fα(cj ) in terms of p(z | cj ) and log-odds M (z) using the rewriting of the logits from Lemma B.2: + +σz + +fα(cj ) = σz ℓj + αq + +X + +> i∈P + +ℓi − X + +> i∈N + +ℓi + +!! + +. + +By Assumption 2, we have σz (ℓj ) = p(z | cj ) and using that the softmax is shift-invariant , there exists βj ∈ R s.t. + +ℓj,z = log ( p(z | cj )) + βj . Using this representation, and the notation p(· | cj ) := ( p(z | cj )) z∈[V ] with log applied + +element-wise to vectors, we get + +σz + +fα(cj ) = σz log ( p(· | cj )) + βj 1 + αq + +X + +> u∈P + +log ( p(· | cu)) − X + +> v∈N + +log ( p(· | cv )) + X + +> u∈P + +βu1 − X + +> v∈N + +βv 1 + +!! + += σz log ( p(· | cj )) + αq + +X + +> u∈P + +log ( p(· | cu)) − X + +> v∈N + +log ( p(· | cv )) + +! + ++ βj 1 + αq + +X + +> u∈P + +βu1 − X + +> v∈N + +βv 1 + +!! + += σz log ( p(· | cj )) + αq + +X + +> u∈P + +log ( p(· | cu)) − X + +> v∈N + +log ( p(· | cv )) + +!! + +. + +The product Q and division of vectors p(· | cj ) is done element-wise in the following: + +σz + +fα(cj ) = σz + + + +log ( p(· | cj )) + αq log + + Q + +> u∈P + +p(· | cu) + +Q + +> v∈N + +p(· | cv ) + + + += σz (log ( p(· | cj )) + αm) , + +25 Towards Understanding Steering Strength + +where m := ( M (1) , . . . , M (V )) ⊤ ∈ RV is the vector of log-odds. Final step is to write the softmax σz + +fα(cj ) explicitly: + +σz + +fα(cj ) = exp (log ( p(z | cj )) + αM (z)) + +P + +> z′∈[V] + +exp (log ( p(z′ | cj )) + αM (z′)) = exp (log ( p(z | cj ))) exp ( αM (z)) + +P + +> z′∈[V] + +exp (log ( p(z′ | cj ))) exp ( αM (z′)) = p(z | cj ) exp ( αM (z)) + +P + +> z′∈[V] + +p(z′ | cj ) exp ( αM (z′)) . + +As a first step toward formalizing why steering makes concept tokens C more likely as α increases, we establish a sign-separation property for the log-odds M (z): + +Lemma B.4 (Log-odds M (z) sign separation). Assume Assumption 1. Let T be the target concept. For any z ∈ [V ], we have z ∈ T if, and only if, M (z) > 0.Proof. Given z ∈ [V ], T the target concept, and the dataset of Definition 2.1 satisfying Assumption 1, the log-odds M (z) + +can we rewritten as: + +M (z) = 1 + +q log + + Q + +> i∈P + +p(z | ci) + +Q + +> i∈N + +p(z | ci) + + + += + + + +> 1 +> q + +log + + (az )q + +> (bz)q + + + +, if z ∈ T , + +> 1 +> q + +log + + (bz )q + +> (az)qz (bz)q−qz + + + +, otherwise. + += + + + +log + + az + +> bz + + + +, + +− qz + +> q + +log + + az + +> bz + + + +. + +with qz := |{ j ∈ N : ∃k ∈ [G], cj , z ∈ Ck}| ∈ N (note that, it can be 0). Using the above rewriting, we obtain that in the first case ( z ∈ T ), M (z) = log + + az + +> bz + + + +> 0 by Assumption 1. Otherwise, + +M (z) = − qz + +> q + +log + + az + +> bz + + + +≤ 0, again by Assumption 1. Now let us compute the derivative of ∆p(α): + +Lemma B.5 (Derivative of ∆p(α)). Let z ∈ [V ], j ∈ [m]. We have the following derivative w.r.t. α: + +∆′p(z | cj , α ) = σz + +fα(cj )  + +M (z) − EZ∼σ + +fα(cj ) + + [M (Z)] + + + +Proof. First, let us denote Dj (α) := P + +> z′∈[V] + +p(z′ | cj ) exp ( αM (z′)) . Using Lemma B.3, the derivation is as follows: + +∆′p(z | cj , α ) = ddα σz + +Whj + αv + += ddα + +p(z | cj ) exp ( αM (z)) + +P + +> z′∈[V] + +p(z′ | cj ) exp ( αM (z′)) + +! + += p(z | cj ) exp ( αM (z)) M (z)Dj (α) − p(z | cj ) exp ( αM (z)) D′ + +> j + +(α) + +Dj (α)2 + += p(z | cj ) exp ( αM (z)) + +Dj (α) + + M (z)Dj (α) + +Dj (α) − D′ + +> j + +(α) + +Dj (α) + + + += σz + +fα(cj )  + +M (z) − D′ + +> j + +(α) + +Dj (α) + + + +. + +26 Towards Understanding Steering Strength + +The term D′ + +> j + +(α)/D j (α) can be rewritten as follows: + +D′ + +> j + +(α) + +Dj (α) = + +P + +> z′∈[V] + +p(z′ | cj ) exp ( αM (z′)) M (z′) + +P + +> z′′ ∈[V] + +p(z′′ | cj ) exp ( αM (z′′ )) = X + +> z′∈[V] + +p(z′ | cj ) exp ( αM (z′)) + +P + +> z′′ ∈[V] + +p(z′′ | cj ) exp ( αM (z′′ )) M (z′)= X + +> z′∈[V] + +σz′ + +fα(cj )M (z′)= EZ∼σ + +fα(cj ) + + [M (Z)] . + +B.3. Proof of Theorem 3.3 + +Theorem 3.3 is about the monotonicity of ∆p(α). Hence, we need to study the sign of the derivative of ∆p. As shown in Lemma B.5, the sign of (∆ p)′(α) is governed by the difference + + + +M (z) − EZ∼σ + +fα(cj ) + + [M (Z)] + + + +. In this difference the only quantity which depends on α is EZ∼σ + +fα(cj ) + + [M (Z)] . So in the following, we are gonna study the variations of this expectation under steering, to do so we look at its derivative: + +ddα EZ∼σ + +fα(cj ) + + [M (Z)] = X + +> z′∈[V] + +ddα σz′ + +fα(cj )M (z′)= X + +> z′∈[V] + +σz′ + +fα(cj )  + +M (z′) − EZ∼σ + +fα(cj ) + + [M (Z)] + + + +M (z′)= X + +> z′∈[V] + +σz′ + +fα(cj )M (z′)2 − X + +> z′∈[V] + +σz′ + +fα(cj ) EZ∼σ + +fα(cj ) + + [M (Z)] M (z′)= EZ∼σ + +fα(cj ) + + M (Z)2 − EZ∼σ + +fα(cj ) + + [M (Z)] X + +> z′∈[V] + +σz′ + +fα(cj )M (z′)= EZ∼σ + +fα(cj ) + + M (Z)2 − EZ∼σ + +fα(cj ) + + [M (Z)] 2 + += Var Z∼σ + +fα(cj ) + + (M (Z)) , + +(10) with Var ( M (Z)) > 0 if M (Z) is not constant σfα(cj )-almost surely. This means that EZ∼σ + +fα(cj ) + + [M (Z)] is strictly increasing on R in α. Now let us compute the limits of this quantity when α → ±∞ , which are + +lim + +> α→+∞ + +EZ∼σ + +fα(cj ) + + [M (Z)] = max + +> z∈[V] + +M (z) =: Mmax , + +lim + +> α→−∞ + +EZ∼σ + +fα(cj ) + + [M (Z)] = min + +> z∈[V] + +M (z) =: Mmin . + +27 Towards Understanding Steering Strength + +Given δ > 0, we introduce the set Aδ := {z ∈ [V ] : Mmax − M (z) ≤ δ} to control the following difference: + +Mmax − EZ∼σ + +fα(cj ) + + [M (Z)] = X + +> z′∈[V] + +σz′ + +fα(cj ) (Mmax − M (z′)) = X + +> z′∈Aδ + +σz′ + +fα(cj ) (Mmax − M (z′)) + X + +> z′∈A∁ +> δ + +σz′ + +fα(cj ) (Mmax − M (z′)) + +≤ δ X + +> z′∈Aδ + +σz′ + +fα(cj ) + ( Mmax − Mmin ) X + +> z′∈A∁ +> δ + +σz′ + +fα(cj ) + +≤ δ + ( Mmax − Mmin ) X + +> z′∈A∁ +> δ + +σz′ + +fα(cj ) . + +Let us take z⋆ a token which attains the maximum log-odds Mmax . This is necessarily a concept token T because az > b z + +(Assumption 1). We now show that lim α→+∞ + +P + +> z′∈A∁ +> δ + +σz′ + +fα(cj ) = 0 . If A∁ + +> δ + += ∅ (for sufficiently large δ), the sum is zero by convention. Otherwise, we proceed as follows, using Lemma B.3: + +0 < X + +> z′∈A∁ +> δ + +σz′ + +fα(cj ) = X + +> z′∈A∁ +> δ + +p(z′ | cj ) exp ( αM (z′)) + +P + +> z′′ ∈[V] + +p(z′′ | cj ) exp ( αM (z′′ )) (denominator lower bounded by p(z⋆ | cj ) exp ( αM max ).) + +≤ X + +> z′∈A∁ +> δ + +p(z′ | cj ) exp ( α(Mmax − δ)) + +p(z⋆ | cj ) exp ( αM max )= exp ( −δα ) X + +> z′∈A∁ +> δ + +p(z′ | cj ) + +p(z⋆ | cj ) . + +By taking the limit in the previous display, we get lim α→+∞ + +P + +> z′∈A∁ +> δ + +σz′ + +fα(cj ) = 0 .Finally, we take the lim sup as follows: + +lim sup + +> α→+∞ + +Mmax − EZ∼σ + +fα(cj ) + + [M (Z)] + +≤ lim sup + +> α→+∞ + +δ + ( Mmax − Mmin ) X + +> z′∈A∁ +> δ + +σz′ + +fα(cj ) + +=⇒ lim sup + +> α→+∞ + +Mmax − EZ∼σ + +fα(cj ) + + [M (Z)] ≤ δ . + +The previous display’s bound is uniform in δ > 0, taking the limit δ → 0+ gives + +lim sup + +> α→+∞ + +Mmax − EZ∼σ + +fα(cj ) + + [M (Z)] ≤ 0 . + +To finish, one remarks that + +0 ≤ lim inf + +> α→+∞ + +Mmax − EZ∼σ + +fα(cj ) + + [M (Z)] ≤ lim sup + +> α→+∞ + +Mmax − EZ∼σ + +fα(cj ) + + [M (Z)] ≤ 0 . + +Which implies that the limit does in fact exist and lim α→+∞ EZ∼σ + +fα(cj ) + + [M (Z)] = Mmax . Very similar derivations give + +lim α→−∞ EZ∼σ + +fα(cj ) + + [M (Z)] = Mmin .Since α 7 → EZ∼σ + +fα(cj ) + + [M (Z)] is continuous, strictly increasing on R and the limits are known on this interval, we have the following: there exists unique thresholds α(j,z ) ∈ R such that + +z ∈ T \ M , EZ∼σ + +fα(j,z ) (cj ) + + [M (Z)] = M (z) ,z ∈ M , α(z) := + ∞ . + +28 Towards Understanding Steering Strength + +and + +z ∈ T ∁ \ M , EZ∼σ + +fα(j,z ) (cj ) + + [M (Z)] = M (z) ,z ∈ M , α(z) := −∞ . + +First for the limit case ( z ∈ M ∪ M ), we remove the dependency in j of α(j,z ) as its always equal to ±∞ . With z ∈ M , we take α(z) := + ∞ because lim α→+∞ EZ∼σ + +fα(cj ) + + [M (Z)] = Mmax . Moreover, the minimum log-odd Mmin cannot be attained by concept tokens z ∈ T since az > b z (Assumption 1), hence M (z)̸ = Mmin for all z ∈ T and α(z) := −∞ for + +z ∈ M .Finally, all bullet points of Theorem 3.3 follow directly from the previous arguments. For the first point, fix a token + +z ∈ [V ] \ (M ∪ M ). Then M (z) − EZ∼σ + +fα(cj ) + + [M (Z)] is positive on (−∞ , α (j,z )] and negative for α > α (j,z ), which yields the bump behavior. The second point follows from the sign separation of the log-odds (Lemma B.4) together with the fact that EZ∼σ + +fα(cj ) + + [M (Z)] is increasing, which implies α(j,z ′) < α (j,z ) for z ∈ T and z′ /∈ T . The final point again follows from the fact that for z ∈ M ∪ M , the sign of M (z) − EZ∼σ + +fα(cj ) + + [M (Z)] does not change with α: it remains positive for z ∈ T and negative otherwise, since α(j,z ) = ±∞ for such tokens. + +Proof of Remark 3.4 Let cj /∈ T and denote by z1 the concept token with the minimum log-odd in the group T . To show that the bump for concept tokens z ∈ T happens for positive α, it suffices to show that α(j,z 1) > 0 (as α(j,z 1) ≤ α(j,z ) with + +z ∈ T by strict monotonicity of EZ∼σ + +fα(cj ) + + [M (Z)] ). We are proving this fact on a specification of the dataset from Definition 2.1 (and Assumption 1), defined as follows: + +∀z ∈ [V ], + +(az := (1 − ε)γz + +bz := ε + +> (G−1) + +ωz , + +where γz ∈ (0 , 1) satisfies P + +> z′∈Ck + +γz′ = 1 for each k ∈ [G] (with the same conditions for ωz ). The coefficients γz and ωz + +are chosen so that Assumption 1 holds, i.e., az > b z , and we assume ε ∈ 0, G−1 + +> G + +.Proving that α(j,z 1) > 0 for ε > 0 small enough when cj /∈ T , is equivalent to showing + +M (z1) = EZ∼σ + +fα(j,z 1) (cj ) + + [M (Z)] > EZ∼σ + +f (cj ) + + [M (Z)] (11) by strict monotonicity of EZ∼σ + +fα(cj ) + + [M (Z)] in α. The previous inequality is hard to prove as EZ∼σ + +f (cj ) + + [M (Z)] has a non-trivial expression, so we start by bounding it: + +EZ∼σ + +f (cj ) + + [M (Z)] = X + +> z′∈[V] + +σz′ + +f (cj )M (z′)= X + +> z′∈[V] + +p(z′ | cj )M (z′) (by Assumption 2.) + +≤ X + +> z′∈T + +p(z′ | cj )M (z′) (as M (z) ≤ 0 for z / ∈ T , see Lemma B.4.) + += X + +> z′∈T + +bz′ M (z′) (as p(z | cj ) = bz for cj /∈ T and z ∈ T .) + += X + +> z′∈T + +bz′ log + + az′ + +bz′ + + + +(as M (z) = log ( az /b z ) for z ∈ T , see Lemma B.4.) 29 Towards Understanding Steering Strength + +In this specific dataset, β := P + +> z′′ ∈T + +bz′′ = ε + +> (G−1) + +and ρ := P + +> z′′ ∈T + +az′′ = 1 − ε. We continue the bounding process as follows + +EZ∼σ + +f (cj ) + + [M (Z)] ≤ X + +> z′∈T + +bz′ log + + az′ + +bz′ + + + += β X + +> z′∈T + +bz′ + +β log + + ρβaz′ /ρ bz′ /β + + + += β X + +> z′∈T + +bz′ + +β log + + ρβ + + + ++ β X + +> z′∈T + +bz′ + +β log + + az′ /ρ bz′ /β + + + +We remark that P + +> z′∈T +> bz′ +> β + +log + + az′ /ρ bz′ /β + + + +is equal to the negative of the Kullback–Leibler divergence between (bz′ /β )z′∈T + +and (az′ /ρ )z′∈T denoted as KL( b·/β || a·/ρ ): + +EZ∼σ + +f (cj ) + + [M (Z)] = β X + +> z′∈T + +bz′ + +β log + + ρβ + + + +− KL( b·/β || a·/ρ ) + +! + +≤ β X + +> z′∈T + +bz′ + +β log + + ρβ + + + +(by Gibbs’ inequality KL( b·/β || a·/ρ ) ≥ 0.) + += β log + + ρβ + + + +(as X + +> z′∈T + +bz′ + +β = 1 .) + += ε + +(G − 1) log + + 1 − εε (G − 1) + + + +. + +Let us remind that M (z1) = log + + (1 −ε)( G−1) + +> εγz1 +> ωz1 + + + +by the proof of Lemma B.4. To avoid complicated solution to Inequality (11) using the Lambert W function, we compute the limit ε → 0+ of F (·) defined as: + +F (ε) := M (z1) − ε + +(G − 1) log + + 1 − εε (G − 1) + + + += log + + (1 − ε)( G − 1) + +εγz1 + +ωz1 + + + +− ε + +(G − 1) log + + 1 − εε (G − 1) + + + +. + +We now compute the limit as follows: + +lim + +> ε→0+ + +log + + (1 − ε)( G − 1) + +εγz1 + +ωz1 + + + += + ∞ (as γz1 (G − 1) + +ωz1 + +> 0.) + +lim + +> ε→0+ + +ε + +(G − 1) log + + 1 − εε (G − 1) + + + += lim + +> ε→0+ + +ε + +(G − 1) log + + 1 + +ε − 1(G − 1) + + + += 0 (as lim + +> x→+∞ + +log ( x) /x = 0 .) So lim ε→0+ F (ε) = + ∞, which means that there exists ε0 < (G − 1) /G such that for all ε ∈ (0 , ε 0), F (ε) > 0. With + +ε ∈ (0 , ε 0), by combining F (ε) > 0 with the upper-bound on EZ∼σ + +f (cj ) + + [M (Z)] , we get the Inequality (11): + +M (z1) > ε + +(G − 1) log + + 1 − εε (G − 1) + + + +≥ EZ∼σ + +f (cj ) + + [M (Z)] , + +which is equivalent to α(j,z 1) > 0 as desired. + +B.4. Proof of Theorem 3.6 + +Proof. Fix a context index j ∈ [m] and a concept C. Define + +FC,j (α) := X + +> z∈C + +σz + +fα(cj ) . + +By Definition 3.5, Definition 3.1 and Assumption 2, + +∆p(C | cj , α ) = 1 + +|C| + +X + +> z∈C + + + +σz + +fα(cj ) − p(z | cj ) + + + += FC,j (α) − FC,j (0) + +|C| . + +30 Towards Understanding Steering Strength + +By Lemma B.3, + +σz + +fα(cj ) = p(z | cj ) exp ( αM (z)) + +P + +> z′∈[V] + +p(z′ | cj ) exp ( αM (z′)) . + +Let Z ∼ (σz + +fα(cj ))z∈[V ] and set + +μC,j (α) := E [M (Z)|Z ∈ C ] , μC∁,j (α) := E [M (Z)|Z / ∈ C ] . + +Using Lemma B.5 and summing over z ∈ C , + +ddα FC,j (α) = X + +> z∈C + +σz + +fα(cj ) + +M (z) − E [M (Z)] + + + += X + +> z∈C + +FC,j (α) σz + +fα(cj ) + +FC,j (α) + + + +M (z) − E [M (Z)] + + + += FC,j (α) X + +> z∈C + +σz + +fα(cj ) + +FC,j (α) M (z) − E [M (Z)] X + +> z∈C + +σz + +fα(cj ) + +FC,j (α) + +! + += FC,j (α) + + + +μC,j (α) − E [M (Z)] + + + +. + +Moreover, by the law of total expectation and using that P(Z ∈ C ) = FC,j (α) (as Z is a discret random variable), + +E [M (Z)] = FC,j (α)μC,j (α) + 1 − FC,j (α)μC∁,j (α). + +Therefore, FC,j checks the following ordinary differential equation (ODE), which is nearly the ODE checked by the sigmoid function up to the term + + + +μC,j (α) − μC∁,j (α) + + + +: + +ddα FC,j (α) = FC,j (α)1 − FC,j (α) + +μC,j (α) − μC∁,j (α) + + + +, (12) Since FC,j (α) ∈ (0 , 1) , we can divide both sides by FC,j (α)1 − FC,j (α), and direct computations yield + +ddα log + + FC,j (α)1 − FC,j (α) + + + += μC,j (α) − μC∁,j (α) . + +Integrating both sides of the previous display from 0 to α yields + +log + + FC,j (α)1 − FC,j (α) + + + += rj + νj (α), rj := log + + FC,j (0) 1 − FC,j (0) + + + +, νj (α) := + +Z α + +> 0 + +μC,j (t) − μC∁,j (t) dt. + +The previous display is the logit function, which is the inverse of the sigmoid function ϕ. Hence FC,j (α) = ϕ(νj (α) + rj ) + +and + +∆p(C | cj , α ) = 1 + +|C| + + + +FC,j (α)−FC,j (0) + + + += 1 + +|C| + + + +ϕ(νj (α)+ rj )−ϕ(rj ) + + + += 12 |C| + + + +tanh + + νj (α) + rj + +2 + + + +− tanh + + rj + +2 + + + +, + +as tanh( x) = 2 ϕ(2 x) − 1. Setting r′ + +> j + +:= tanh rj + +> 2 + + gives the claimed representation in Theorem 3.6. + +Proving remaining statement of Theorem 3.6. Let T be the target concept to steer, Lemma B.4 gives M (z) > 0 for + +z ∈ T and M (z) ≤ 0 for z / ∈ T , hence μT ,j (α) > 0 and μT ∁,j (α) ≤ 0 for all α. Thus μT ,j (α) − μT ∁,j (α) > 0, implying + +> ddα + +FT ,j (α) > 0 by Equation (12) . Meaning, ∆p(T | cj , α ) is strictly increasing in α. Additionally, the growth of νj is at most linear because μT ,j (t) − μT ∁,j (t) ≤ max z∈[V ] M (z) − min z∈[V ] M (z) as the log-odds M (z) are bounded w.r.t α.Implying the following by linearity of the integral: + +|νj (α)| ≤ max + +> z∈[V] + +M (z) − min + +> z∈[V] + +M (z) |α| . + +31 Towards Understanding Steering Strength + +Next, if C′̸ = T and C′ ∩ (M ∪ M ) = ∅, Equation (6) in Proposition B.1 implies FC′,j (α) → 0 as α → ±∞ , hence + +lim + +> α→±∞ + +∆p(C′ | cj , α ) = lim + +> α→±∞ + +FC′,j (α) − FC′,j (0) + +|C ′| = − FC′,j (0) + +|C ′| = − 1 + +|C′| + +X + +> z∈C ′ + +p(z | cj ). + +Finally, if max z∈C M (z) ≤ min z / ∈C M (z), then for all α, + +μC,j (α) ≤ max + +> z∈C + +M (z) ≤ min + +> z / ∈C + +M (z) ≤ μC∁,j (α), + +then μC,j (α) − μC∁,j (α) ≤ 0, implying ddα FC,j (α) ≤ 0 by Equation (12) . Meaning, ∆p(C | cj , α ) is decreasing in α. + +B.5. Proof of Theorem 3.8 + +First, as in Thrampoulidis (2024), we can rewrite the cross-entropy as follows: + +CE( f ) := − X + +> j∈[m] + +πj + +X + +> z∈[V] + +p(z | cj ) log ( σz (f (cj ))) , + +where πj ∈ (0 , 1] is the probability of each distinct context cj defined as + +πj := 1 + +n + +X + +> i∈[n] + +1ci=cj . + +Then, the Taylor expansion at order 2 of ∆CE( α) around α = 0 gives us: + +∆CE( α) = ∆CE(0) + ∆CE ′(0) α + 12 ∆CE ′′ (0) α2 + o(α2) . (13) Obviously, ∆CE(0) = 0 . We start by computing the derivative ∆CE ′(α) using Lemma B.5 and chain-rule: + +∆CE ′(α) = − X + +> j∈[m] + +πj + +X + +> z∈[V] + +p(z | cj ) ddα log ( σz (fα(cj ))) + 0 = − X + +> j∈[m] + +πj + +X + +> z∈[V] + +p(z | cj ) + +σz + +fα(cj )  + +M (z) − EZ∼σ + +fα(cj ) + + [M (Z)] + + + +σz + +fα(cj ) + += X + +> j∈[m] + +πj + +X + +> z∈[V] + +p(z | cj ) + + + +EZ∼σ + +fα(cj ) + + [M (Z)] − M (z) + + + += X + +> j∈[m] + +πj + +EZ∼σ + +fα(cj ) + + [M (Z)] X + +> z∈[V] + +p(z | cj ) − X + +> z∈[V] + +p(z | cj )M (z) + + + += X + +> j∈[m] + +πj + + + +EZ∼σ + +fα(cj ) + + [M (Z)] − EZ∼σ + +f (cj ) + + [M (Z)] + + + +(as X + +> z∈[V] + +p(z | cj ) = 1 .) Under Assumption 2, we have σz + +f (cj ) = p(z | cj ) which implies that ∆CE ′(0) = 0 .Using Equation (10) + +ddα EZ∼σ + +fα(cj ) + + [M (Z)] = Var Z∼σ + +fα(cj ) + + (M (Z)) , + +we compute the second derivative ∆CE ′′ (α): + +∆CE ′′ (α) = X + +> j∈[m] + +πj Var Z∼σ + +fα(cj ) + + (M (Z)) , + +In the statement of Theorem 3.8, we define Var j (M (Z)) := Var Z∼σ + +f (cj ) + + (M (Z)) . We finish the proof by injecting the computed derivative and second derivative into the Taylor expansion of Equation (13). 32 Towards Understanding Steering Strength + +B.6. Proof of Proposition 4.1 Proving the expression of the steered logits y(α) from Section 4. Using the notation of Section 4, we apply steering at layer ℓ by modifying the residual stream h(ℓ). We track the effect of this intervention across subsequent layers by defining the steered residual streams h(k,α ) inductively as + +( + +h(ℓ,α ) := h(ℓ) + αv , (initialization) + +h(k+1 ,α ) := h(k,α ) + F (h(k,α )) , for k ∈ [ℓ, L − 1] . + +Here, F (h) := ATTN(LN( h)) + FFN[LN {h + ATTN(LN( h)) }] captures the update applied by a single transformer block. This definition is a direct reformulation of Eq. (4) adapted to our steering setting. Unrolling this recursion up to the final layer yields + +h(L,α ) = h(ℓ) + αv + R(α) , + +where R(α) := P + +> k∈[ℓ,L −1] + +F (h(k,α )) aggregates all downstream effects induced by the steering intervention. Substituting h(L,α ) for h(L) in y := LN h(L)W⊤ then gives the steered logits expression + +y(α) := LN h(ℓ) + αv + R(α)W⊤ . + +Proving Proposition 4.1. The key observation is that the presence of layer normalization inside the definition of F ensures that each component of R(α) remains bounded (for arbitrarily large α), i.e. there exists a constant cR independant from α + +such that: + +|(R(α)) i,j | ≤ cR . + +To formalize the previous display, consider RMSNorm applied to a single token representation h ∈ Rd: + +LN( h) := √d h + +∥h∥ ⊙ γ , + +where γ ∈ Rd and ⊙ denotes the Hadamard product. Then, as α → +∞, + +LN( h + αv) = √d h + αv + +∥h + αv∥ ⊙ γ −→ √d v + +∥v∥ ⊙ γ = LN( v) , + +and, similarly, as α → −∞ , + +LN( h + αv) −→ + + + +−√d v + +∥v∥ + + + +⊙ γ = LN( −v) , + +The same argument applies to LayerNorm. As a result, the dominant term in h(ℓ) + αv + R(α) as α → ±∞ is αv, meaning + + + +h(ℓ) + αv + R(α) + + + +> i,j + +∼±∞ αvi,j . + +This directly yields + +lim + +> α→±∞ + +LN h(ℓ) + αv + R(α) W⊤ = LN( ±v) W⊤ . + +33 diff --git a/figs/zoom_in.png b/figs/zoom_in.png new file mode 100644 index 0000000000000000000000000000000000000000..d2b4382114ea58bf2d8045af5134f80bd413f600 GIT binary patch literal 194483 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 z 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

w~_ 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%0D+fBt)E0VKriF9 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�lau2iZU8E4 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 literal 0 HcmV?d00001 diff --git a/justfile b/justfile index d262038..5232608 100644 --- a/justfile +++ b/justfile @@ -11,7 +11,7 @@ test: uv run --extra all pytest -q # Run one (model, method, seed, window) cell end-to-end (calibrate + trajectory + pmass). -cell model="Qwen/Qwen3.5-0.8B" method="mean_diff" seed="0" window="50": +cell model="Qwen/Qwen3.5-0.8B" method="mean_diff" seed="0" window="512": uv run --extra all python scripts/run_cell.py \ --model {{model}} --method {{method}} --seed {{seed}} --window {{window}} diff --git a/scripts/aggregate.py b/scripts/aggregate.py index fa27d7f..c0e3de5 100644 --- a/scripts/aggregate.py +++ b/scripts/aggregate.py @@ -65,14 +65,19 @@ except Exception: class Args: runs_root: str = "outputs" out: str = "figs" - window: int = 50 # only this window enters the figure (need long-enough traj for rolling-16) - roll: int = 16 # smoothing window for KL trajectory + window: int = 512 # only this window enters the figure + roll: int = 65 # smoothing window for KL trajectory alphas: tuple[str, ...] = ("0.25", "0.5", "0.75", "1.0", "1.5", "2.0", "4.0") kl_ymax: float = 6.0 model_contains: str = "" kl_only: bool = False spaghetti: bool = False # plot individual trajectories instead of p10..p90 band color_by_pmass: bool = False # color KL spaghetti lines by paired pmass (requires pmass_eval) + line_alpha: float | None = None # per-line alpha override; None = auto clip(2.5/n,.08,.35) + line_lw: float = 0.18 # per-trajectory linewidth; full opacity needs very thin lines + median_lw: float = 0.75 # median linewidth + quantile_lines: bool = False # clean summary: p10/p50/p90 lines, no fill/spaghetti + mark_t: int = -1 # optional vertical token marker; -1 disables def _rolling_mean(x: np.ndarray, w: int) -> np.ndarray: @@ -138,20 +143,20 @@ def _draw_kl_panel(ax, K: np.ndarray, a: Args, P: np.ndarray | None = None) -> N pts = np.column_stack([xs, traj]) segs = np.stack([pts[:-1], pts[1:]], axis=1) lc = LineCollection(segs, cmap=cmap, norm=plt.Normalize(0, 1), - linewidths=0.7, alpha=0.55) + linewidths=a.line_lw, alpha=float(a.line_alpha if a.line_alpha is not None else np.clip(2.5/max(K.shape[0],1), 0.08, 0.35))) lc.set_array(pmass_row[:-1]) ax.add_collection(lc) ax.set_xlim(xs[0], xs[-1]) med = np.nanmedian(Kp, axis=0) - ax.plot(xs, med, color="k", lw=1.6) + ax.plot(xs, med, color="k", lw=a.median_lw) else: crossed = (K > 1.0).any(axis=1) for traj in Kp[~crossed]: - ax.plot(xs, traj, color="0.55", lw=0.6, alpha=0.6) + ax.plot(xs, traj, color="0.55", lw=a.line_lw, alpha=0.5) for traj in Kp[crossed]: - ax.plot(xs, traj, color="C3", lw=0.6, alpha=0.6) + ax.plot(xs, traj, color="C3", lw=a.line_lw, alpha=0.5) med = np.nanmedian(Kp, axis=0) - ax.plot(xs, med, color="k", lw=1.6) + ax.plot(xs, med, color="k", lw=a.median_lw) frac = float(crossed.mean()) ax.text(0.97, 0.97, f"{frac:.0%} cross KL=1", transform=ax.transAxes, ha="right", va="top", @@ -163,21 +168,32 @@ def _draw_kl_panel(ax, K: np.ndarray, a: Args, P: np.ndarray | None = None) -> N p50s = _rolling_mean(p50, a.roll) p10s = _rolling_mean(p10, a.roll) p90s = _rolling_mean(p90, a.roll) - ax.fill_between(xs, p10s, p90s, alpha=0.25, color="C0", lw=0) - ax.plot(xs, p50s, color="C0", lw=1.6) + if a.quantile_lines: + # standard quantile fan: outer band light, inner band dark, p50 line + p25s = _rolling_mean(np.nanpercentile(K, 25, axis=0), a.roll) + p75s = _rolling_mean(np.nanpercentile(K, 75, axis=0), a.roll) + ax.fill_between(xs, p10s, p90s, alpha=0.15, color="C0", lw=0, label="p10..p90") + ax.fill_between(xs, p25s, p75s, alpha=0.32, color="C0", lw=0, label="p25..p75") + ax.plot(xs, p50s, color="C0", lw=1.5, label="p50") + else: + ax.fill_between(xs, p10s, p90s, alpha=0.25, color="C0", lw=0) + ax.plot(xs, p50s, color="C0", lw=1.6) def make_kl_figure(cells: list[dict], a: Args, out_path: Path) -> None: import matplotlib.pyplot as plt - fig, axes = plt.subplots(1, len(a.alphas), figsize=(4.0 * len(a.alphas), 3.2), + fig, axes = plt.subplots(1, len(a.alphas), figsize=(3.7 * len(a.alphas), 3.4), sharex=True, sharey=True, squeeze=False, constrained_layout=True) label = a.model_contains or "all models" - mode = "individual trajectories (red=ever crossed KL=1)" if a.spaghetti \ - else f"p50 + p10..p90 band, smoothed rolling-{a.roll}" + n_max = max((_pool_kl(cells, alpha, T=a.window).shape[0] for alpha in a.alphas), default=0) + mode = f"individual trajectories, roll={a.roll}, color=pmass" if (a.spaghetti and a.color_by_pmass) \ + else "individual trajectories (red=ever crossed KL=1)" if a.spaghetti \ + else f"shaded quantiles p10/p25/p50/p75/p90, roll={a.roll}" if a.quantile_lines \ + else f"p50 + p10..p90 band, smoothed rolling-{a.roll}" fig.suptitle( - f"KL trajectory on N=8 held-out long-form prompts ({label})\n" - f"{mode}. Solid line: KL=1 nat. Dotted v-line: t=20.", + f"KL trajectory on N={n_max} held-out long-form prompts ({label})\n" + f"{mode}. Solid horizontal: KL=1 nat.", fontsize=10, ) @@ -202,27 +218,32 @@ def make_kl_figure(cells: list[dict], a: Args, out_path: Path) -> None: Pe = _pool_pmass_eval(cells, alpha, _first_fork(cells), T=a.window) if a.color_by_pmass else None _draw_kl_panel(ax, K, a, P=Pe) if y_max >= 1.0: - ax.axhline(1.0, color="k", lw=1.0) + ax.axhline(1.0, color="k", lw=0.7) else: ax.text(0.98, 0.92, "KL=1 off-scale", transform=ax.transAxes, ha="right", va="top", fontsize=8, color="0.25") - ax.axvline(20, color="k", ls=":", lw=0.8) + if a.mark_t >= 0: + ax.axvline(a.mark_t, color="k", ls=":", lw=0.6) ax.set_title(rf"$\alpha = {alpha}$ (n={K.shape[0]} traj)") ax.set_xlim(0, x_max) ax.set_ylim(0, y_max) ax.set_xlabel("token") if j == 0: - ax.set_ylabel("KL(steered || base) [nats]") + ax.set_ylabel("KL") if a.color_by_pmass: from matplotlib.cm import ScalarMappable from matplotlib.colors import LinearSegmentedColormap, Normalize cmap = LinearSegmentedColormap.from_list("alive", ["#c0392b", "#f1c40f", "#27ae60"]) sm = ScalarMappable(norm=Normalize(0, 1), cmap=cmap); sm.set_array([]) - cbar = fig.colorbar(sm, ax=axes[0, :].tolist(), location="right", shrink=0.75, pad=0.01, fraction=0.015) - cbar.set_label("pmass (0=dead, 1=alive)") + cbar = fig.colorbar(sm, ax=axes[0, :].tolist(), location="right", shrink=0.72, pad=0.015, fraction=0.012) + cbar.set_label("pmass", labelpad=2) fig.savefig(out_path, dpi=160, bbox_inches="tight") + if a.quantile_lines: + q_path = out_path.with_name(out_path.stem + "_quantile_lines" + out_path.suffix) + fig.savefig(q_path, dpi=160, bbox_inches="tight") + logger.info(f"KL quantile-line figure -> {q_path}") logger.info(f"KL-only figure -> {out_path}") diff --git a/scripts/render_run_figs.py b/scripts/render_run_figs.py index 53a806c..62a1168 100644 --- a/scripts/render_run_figs.py +++ b/scripts/render_run_figs.py @@ -16,6 +16,10 @@ class Args: threshold: float = 0.95 out_name: str = "figs_auto" model_contains: str = "" + line_alpha: float | None = None # forwarded to spaghetti+aggregate + roll: int = 65 + line_lw: float = 0.5 + quantile_lines: bool = False def _ensure_single_run_root(run_dir: Path) -> Path: @@ -72,18 +76,21 @@ def main(a: Args) -> None: "--window", str(__import__("json").loads(calib.read_text())["window"]), "--threshold", str(a.threshold), "--model-contains", model_filter, - ], repo_root) + "--roll", str(a.roll), + "--line-lw", str(a.line_lw), + ] + (["--line-alpha", str(a.line_alpha)] if a.line_alpha is not None else []), repo_root) _run([ sys.executable, "scripts/aggregate.py", "--runs-root", str(single_root), "--out", str(out_dir / "aggregate"), "--window", str(__import__("json").loads(calib.read_text())["window"]), - "--spaghetti", - "--color-by-pmass", "--kl-only", "--model-contains", model_filter, - ], repo_root) + "--roll", str(a.roll), + "--line-lw", str(a.line_lw), + ] + (["--spaghetti", "--color-by-pmass"] if not a.quantile_lines else ["--quantile-lines"]) \ + + (["--line-alpha", str(a.line_alpha)] if a.line_alpha is not None else []), repo_root) pngs = [ out_dir / "survival" / "survival_pmass_eval.png", diff --git a/scripts/run_cell.py b/scripts/run_cell.py index 246d704..eed18ba 100644 --- a/scripts/run_cell.py +++ b/scripts/run_cell.py @@ -57,12 +57,13 @@ from pathlib import Path import torch import tyro from loguru import logger +from tqdm.auto import tqdm from iso_kl_figure import ( SteeringConfig, MeanDiffC, PCAC, DirectionalAblationC, train, calibrate_iso_kl, measure_kl, ) -from iso_kl_figure.branch_pmass import branch_pmass, collect_choice_token_ids +from iso_kl_figure.branch_pmass import branch_pmass, build_chat_interrupt_suffix, collect_choice_token_ids from iso_kl_figure.calibrate import _eos_token_ids from iso_kl_figure.target import _get_blocks @@ -103,6 +104,14 @@ EVAL_PROMPTS = [ "Was Shakespeare a contemporary of Queen Elizabeth I of England?", "Is the Pacific Ocean larger in surface area than the Atlantic Ocean?", "Does a transformer architecture rely on self-attention rather than recurrence for sequence modeling?", + "Is honey produced by bees primarily from nectar collected from flowers?", + "Did Ada Lovelace write what is often considered the first published computer algorithm?", + "Is the boiling point of pure water at sea level approximately 100 degrees Celsius?", + "Does cross-entropy loss reduce to negative log likelihood for a single correct class label?", + "Was the printing press invented by Johannes Gutenberg in the 15th century?", + "Is the speed of light in a vacuum the same for all inertial observers?", + "Do antibiotics kill viruses in addition to bacteria?", + "Is the chemical symbol for gold 'Au' on the periodic table?", ] # pmass diagnostic prompts share the same schema as EVAL above. @@ -144,7 +153,7 @@ class Args: model: str method: str seed: int = 0 - window: int = 50 + window: int = 512 run_id: str = "" layer_frac: float = 0.6 target_kl: float = 1.0 @@ -159,6 +168,13 @@ class Args: skip_pmass_qa: bool = False # skip yes/no pmass loop, only do paired pmass_eval render_figs: bool = False # render single-run survival + spaghetti + KL pngs render_threshold: float = 0.95 + chat_interrupt: bool = False # use chat-template-correct interrupt turn for pmass scoring + # (in-distribution; recommended over raw splice). + interrupt_user_text: str = ( + "Given the conversation so far, what is your final answer?" + " Respond with JSON: {\"Answer\": true} or {\"Answer\": false}." + ) + interrupt_prefill: str = '{"Answer": ' def _set_seed(s: int): @@ -169,6 +185,28 @@ def _set_seed(s: int): torch.cuda.manual_seed_all(s) +def _log_fork_summary(stage: str, alpha: float, gen, gen_text: str, + fork_points: list[int], pm: dict) -> None: + """One INFO line + one debug table per (stage, alpha) instead of N forks * 1 line. + + SHOULD: at alpha~1, pmass ~> 0.5 across forks (model still respects schema). + ELSE: prefill broken or schema drift -- inspect debug_first in pmass.json. + """ + from tabulate import tabulate + pmv = pm["pmass"] + ptv = pm["p_true"] + pm_min = min(pmv) if pmv else float("nan") + pm_med = sorted(pmv)[len(pmv) // 2] if pmv else float("nan") + logger.info( + f" alpha={alpha} {stage}[0] gen_len={gen.shape[0]} pmass(med/min)=" + f"{pm_med:.2f}/{pm_min:.2f} | text[:80]={gen_text[:80]!r}" + ) + rows = [(t, f"{p:.3f}", f"{q:.3f}", repr(s)) + for t, p, q, s in zip(fork_points, pmv, ptv, pm["argmax_str"])] + table = tabulate(rows, headers=["t", "pmass", "p_true", "argmax"], tablefmt="plain") + logger.debug(f"\nfork table [{stage} alpha={alpha}]\n{table}") + + def _render_chat(tok, msgs: list[dict[str, str]], add_generation_prompt: bool) -> str: if tok.chat_template is None: rendered = [] @@ -279,6 +317,15 @@ def main(a: Args): gen_lens_eval: dict[str, list] = {} # T per (alpha, eval-prompt) debug_first: dict[str, dict] = {} # first prompt per alpha: gen_text + top-5 at each fork + # Append-only JSONL of every generation: full text + paired pmass. + # Crash-safe: each line flushed before next prompt. Overwritten only at run start. + gens_path = out_dir / "gens.jsonl" + if gens_path.exists(): + gens_path.unlink() + def _append_gen(rec: dict) -> None: + with open(gens_path, "a") as f: + f.write(json.dumps(rec) + "\n") + def write_eval_outputs() -> None: (out_dir / "trajectory.json").write_text(json.dumps({ "fork_points_full": list(range(a.window)), @@ -317,7 +364,18 @@ def main(a: Args): tok(s, return_tensors="pt", add_special_tokens=False).input_ids[0] for s in eval_prompt_strs ] - for alpha in a.alphas: + interrupt_suffix_ids = None + interrupt_suffix_decoded = "" + if a.chat_interrupt: + interrupt_suffix_ids = build_chat_interrupt_suffix( + tok, a.interrupt_user_text, a.interrupt_prefill, + ) + # SHOULD: decoded suffix ends with prefill literal. ELSE template quirk. + interrupt_suffix_decoded = tok.decode(interrupt_suffix_ids) + logger.info(f"chat_interrupt suffix ({len(interrupt_suffix_ids)} tok): {interrupt_suffix_decoded!r}") + if not interrupt_suffix_decoded.endswith(a.interrupt_prefill): + logger.warning(f"interrupt suffix does not end with prefill={a.interrupt_prefill!r}") + for alpha in tqdm(a.alphas, desc=f"alphas[{a.run_id}]", mininterval=60): v.cfg.coeff = alpha * c_star logger.info(f"=== eval alpha={alpha} c={v.cfg.coeff:+.4f} ===") m = measure_kl(v, model, tok, eval_ids_list, T=a.window, device=a.device) @@ -351,6 +409,7 @@ def main(a: Args): v, model, tok, ids, gen, fork_points, PREFILL_STR, a_ids, b_ids, rollout_cache=gen_out.past_key_values, + interrupt_suffix_ids=interrupt_suffix_ids, device=a.device, ) pm_for_alpha.append(pm["pmass"]) @@ -363,17 +422,28 @@ def main(a: Args): else "other" for s in pm["argmax_str"] ]) - # debug dump for first QA prompt only + # save full gen text + paired pmass for every QA prompt + gen_text = tok.decode(gen, skip_special_tokens=False) + _append_gen({ + "alpha": float(alpha), "kind": "qa", "prompt_idx": q_idx, + "score_mode": "chat_interrupt" if a.chat_interrupt else "raw_splice", + "interrupt_user_text": a.interrupt_user_text if a.chat_interrupt else "", + "interrupt_prefill": a.interrupt_prefill if a.chat_interrupt else "", + "interrupt_suffix_ids": list(interrupt_suffix_ids) if interrupt_suffix_ids is not None else [], + "interrupt_suffix_decoded": interrupt_suffix_decoded, + "prompt": prompt_str, "gen_text": gen_text, "gen_len": int(gen.shape[0]), + "fork_points": list(fork_points), + "pmass": pm["pmass"], "p_true": pm["p_true"], + "argmax_str": pm["argmax_str"], "was_thinking": pm["was_thinking"], + }) + # debug dump for first QA prompt only (kept for backward compat) if q_idx == 0: - gen_text = tok.decode(gen, skip_special_tokens=False) debug_first.setdefault(str(alpha), {})["qa"] = { "prompt": prompt_str, "gen_text": gen_text, "gen_len": int(gen.shape[0]), "pmass_per_fork": pm["pmass"], "p_true_per_fork": pm["p_true"], "argmax_per_fork": pm["argmax_str"], } - logger.info(f" [debug] alpha={alpha} qa[0] gen_len={gen.shape[0]} text[:120]={gen_text[:120]!r}") - for t, pmv, ptv, am in zip(fork_points, pm["pmass"], pm["p_true"], pm["argmax_str"]): - logger.info(f" t={t:>3} pmass={pmv:.3f} p_true={ptv:.3f} argmax={am!r}") + _log_fork_summary("qa", alpha, gen, gen_text, fork_points, pm) pmass_all[str(alpha)] = pm_for_alpha p_true_all[str(alpha)] = pt_for_alpha argmax_all[str(alpha)] = ax_for_alpha @@ -407,19 +477,30 @@ def main(a: Args): v, model, tok, ids, gen, fork_points, PREFILL_STR, a_ids, b_ids, rollout_cache=gen_out.past_key_values, + interrupt_suffix_ids=interrupt_suffix_ids, device=a.device, ) pm_eval_for_alpha.append(pm["pmass"]) + gen_text = tok.decode(gen, skip_special_tokens=False) + _append_gen({ + "alpha": float(alpha), "kind": "eval", "prompt_idx": p_idx, + "score_mode": "chat_interrupt" if a.chat_interrupt else "raw_splice", + "interrupt_user_text": a.interrupt_user_text if a.chat_interrupt else "", + "interrupt_prefill": a.interrupt_prefill if a.chat_interrupt else "", + "interrupt_suffix_ids": list(interrupt_suffix_ids) if interrupt_suffix_ids is not None else [], + "interrupt_suffix_decoded": interrupt_suffix_decoded, + "prompt": prompt_str, "gen_text": gen_text, "gen_len": int(gen.shape[0]), + "fork_points": list(fork_points), + "pmass": pm["pmass"], "p_true": pm["p_true"], + "argmax_str": pm["argmax_str"], "was_thinking": pm["was_thinking"], + }) if p_idx == 0: - gen_text = tok.decode(gen, skip_special_tokens=False) debug_first.setdefault(str(alpha), {})["eval"] = { "prompt": prompt_str, "gen_text": gen_text, "gen_len": int(gen.shape[0]), "pmass_per_fork": pm["pmass"], "p_true_per_fork": pm["p_true"], "argmax_per_fork": pm["argmax_str"], } - logger.info(f" [debug] alpha={alpha} eval[0] gen_len={gen.shape[0]} text[:120]={gen_text[:120]!r}") - for t, pmv, ptv, am in zip(fork_points, pm["pmass"], pm["p_true"], pm["argmax_str"]): - logger.info(f" t={t:>3} pmass={pmv:.3f} p_true={ptv:.3f} argmax={am!r}") + _log_fork_summary("eval", alpha, gen, gen_text, fork_points, pm) pmass_eval_all[str(alpha)] = pm_eval_for_alpha gen_lens_eval[str(alpha)] = gen_lens_eval_alpha # SHOULD: at alpha=1, mean(pmass at t=0) > 0.5 (model still respects schema). diff --git a/src/iso_kl_figure/branch_pmass.py b/src/iso_kl_figure/branch_pmass.py index 6633aa4..1125bf1 100644 --- a/src/iso_kl_figure/branch_pmass.py +++ b/src/iso_kl_figure/branch_pmass.py @@ -55,6 +55,43 @@ def collect_choice_token_ids( return _ids(a_words), _ids(b_words) +def build_chat_interrupt_suffix( + tok, + interrupt_user_text: str, + assistant_prefill: str, +) -> list[int]: + """Construct token ids for: {question} {prefill}. + + Used to interrupt an in-progress assistant rollout with a follow-up question + in a chat-template-correct way (vs. raw token splice). Detects the suffix + by string-diffing the rendered template before vs. after appending the + interrupt turn -- no template-specific special-token guessing. + + SHOULD: tok.decode(suffix_ids) ends with assistant_prefill. ELSE template + quirk: inspect tok.chat_template. + """ + base_msgs = [ + {"role": "user", "content": "_"}, + {"role": "assistant", "content": "_ROLLED_"}, + ] + ext_msgs = base_msgs + [ + {"role": "user", "content": interrupt_user_text}, + {"role": "assistant", "content": assistant_prefill}, + ] + base_str = tok.apply_chat_template(base_msgs, tokenize=False) + ext_str = tok.apply_chat_template(ext_msgs, tokenize=False, continue_final_message=True) + if not ext_str.startswith(base_str): + # template inserts trailing whitespace in `base_str` — strip and retry + base_str = base_str.rstrip() + if not ext_str.startswith(base_str): + raise ValueError( + "chat template not prefix-stable: cannot derive interrupt suffix. " + "Set use_chat_interrupt=False or extend this helper." + ) + suffix_str = ext_str[len(base_str):] + return tok.encode(suffix_str, add_special_tokens=False) + + def _is_thinking(seq_ids: Tensor, think_id: int, unthink_id: int) -> bool: """True iff the last `` in seq_ids is after the last ``.""" if think_id is None or unthink_id is None: @@ -89,6 +126,9 @@ def branch_pmass( handle_thinking: bool = True, end_think_str: str = "", force_close_str: str = "\nI should answer now.", # see tinymfv/guided.py + interrupt_suffix_ids: Sequence[int] | None = None, # if set, overrides prefill_str + thinking + # close logic and uses chat-template-correct interrupt + # turn (built via build_chat_interrupt_suffix). device: str | torch.device = "cuda", ) -> dict: """Returns dict with parallel lists indexed by fork point: @@ -113,6 +153,13 @@ def branch_pmass( tok.encode(force_close_str + end_think_str, add_special_tokens=False), device=device, dtype=torch.long, ) if handle_thinking else None + # Chat-template interrupt mode: replaces both close_t and pre_t with one + # template-correct turn boundary (...{prefill}). + # Disables thinking-detection (irrelevant: we are starting a new turn). + interrupt_t = ( + torch.tensor(list(interrupt_suffix_ids), device=device, dtype=torch.long) + if interrupt_suffix_ids is not None else None + ) a_t = torch.tensor(list(a_ids), dtype=torch.long, device=device) b_t = torch.tensor(list(b_ids), dtype=torch.long, device=device) all_t = torch.cat([a_t, b_t]) @@ -130,9 +177,13 @@ def branch_pmass( continue prefix = rolled[:t] seq_so_far = torch.cat([pids, prefix]) - thinking = (handle_thinking and think_id is not None and unthink_id is not None - and _is_thinking(seq_so_far, think_id, unthink_id)) - new_tail = torch.cat([close_t, pre_t]) if (thinking and close_t is not None) else pre_t + if interrupt_t is not None: + new_tail = interrupt_t + thinking = False # not meaningful in chat-interrupt mode + else: + thinking = (handle_thinking and think_id is not None and unthink_id is not None + and _is_thinking(seq_so_far, think_id, unthink_id)) + new_tail = torch.cat([close_t, pre_t]) if (thinking and close_t is not None) else pre_t if rollout_cache is not None and use_rollout_cache: cache = copy.deepcopy(rollout_cache) diff --git a/src/iso_kl_figure/calibrate.py b/src/iso_kl_figure/calibrate.py index cced3ff..743b6b5 100644 --- a/src/iso_kl_figure/calibrate.py +++ b/src/iso_kl_figure/calibrate.py @@ -158,12 +158,14 @@ def measure_kl( base_full = torch.cat([pids.to(device), base_gen]) decoded_base = tok.decode(base_full, skip_special_tokens=False) decoded_steer = tok.decode(full_ids, skip_special_tokens=False) + # SHOULD: BASE and STEER both coherent; STEER differs from BASE but does not collapse. + # Truncate to keep iso-KL bracket logs scannable; full text in trajectory.json/debug_first. + head = 400 logger.info( - f"EXPECT: same prompt under c=0 vs c={v.cfg.coeff:+.4f}; both coherent; " - "steered should differ from base but not collapse.\n" - f"\n=== CALIBRATE demo trace (T={T}) ===\n" - f"--- BASE (c=0) ---\n{decoded_base}\n" - f"\n--- STEER (c={v.cfg.coeff:+.4f}) ---\n{decoded_steer}\n" + f"SHOULD: c=0 vs c={v.cfg.coeff:+.4f} both coherent, steer differs but does not collapse.\n" + f"=== CALIBRATE demo (T={T}, first {head} chars each) ===\n" + f"-- BASE : {decoded_base[:head]!r}\n" + f"-- STEER : {decoded_steer[:head]!r}\n" f"=== /CALIBRATE ===" ) kls = _kl_generated_incremental(v, model, pids, gen, device) diff --git a/tests/test_smoke.py b/tests/test_smoke.py index 7ca9d5f..227115e 100644 --- a/tests/test_smoke.py +++ b/tests/test_smoke.py @@ -15,7 +15,11 @@ from transformers import AutoModelForCausalLM, AutoTokenizer from iso_kl_figure import ( SteeringConfig, MeanDiffC, train, measure_kl, attach, detach, ) -from iso_kl_figure.branch_pmass import branch_pmass, collect_choice_token_ids +from iso_kl_figure.branch_pmass import ( + branch_pmass, + build_chat_interrupt_suffix, + collect_choice_token_ids, +) MODEL = "hf-internal-testing/tiny-random-LlamaForCausalLM" @@ -61,8 +65,22 @@ def test_pipeline_smoke(): v.cfg.coeff = 5.0 p_steer = branch_pmass(v, model, tok, pids, rolled, fork, prefill, a_ids, b_ids, device="cpu") + tok.chat_template = ( + "{% for message in messages %}" + "<|{{ message['role'] }}|>\n{{ message['content'] }}\n" + "{% endfor %}" + "{% if add_generation_prompt %}<|assistant|>\n{% endif %}" + ) + interrupt_ids = build_chat_interrupt_suffix(tok, "Final answer?", '{"Answer": ') + assert tok.decode(interrupt_ids).endswith('{"Answer": ') + p_interrupt = branch_pmass( + v, model, tok, pids, rolled, fork, prefill, + a_ids, b_ids, interrupt_suffix_ids=interrupt_ids, device="cpu", + ) for x in p_zero["pmass"] + p_steer["pmass"]: assert 0.0 <= x <= 1.0, f"pmass out of [0,1]: {x}" + for x in p_interrupt["pmass"]: + assert 0.0 <= x <= 1.0, f"chat-interrupt pmass out of [0,1]: {x}" diff = max(abs(a - b) for a, b in zip(p_zero["pmass"], p_steer["pmass"])) assert diff > 1e-8, "pmass invariant to coeff -- hook is dead" # p_true should be in [0,1] or NaN