Can Hyperbolic Fine-Tuning Close the Gap Between What LLMs Say and Do? A Null Result
A Test of Hyperbolic Low-Rank Adaptation for Self-Report Training
1Harvard University, Cambridge, MA, USA
2California Institute of Technology, Pasadena, CA, USA
After alignment training, large language models (LLMs) give consistent, human-like answers when asked to rate their own personality, but those self-reports do not predict how the models behave. Self-CTRL, a recent training method, tries to close this gap by rewarding self-reports that match behavior. I asked whether the geometry of the space in which a model is fine-tuned limits how well this can work. Personality inventories such as the BFI-2 are hierarchical, and hierarchies fit naturally into hyperbolic space but are distorted in ordinary Euclidean space. I fine-tuned OLMo-7B-Instruct with Self-CTRL under three conditions, with three random seeds each: standard Euclidean LoRA; HypLoRA, a hyperbolic version of LoRA; and HypLoRA with its update size matched to LoRA’s.
Published HypLoRA barely trained. Its gradients were about 38 times smaller than LoRA’s in every seed, and it reduced its divergence from the starting model only 1.4-fold, compared with 18.6-fold for LoRA. The cause of this suppression is not yet identified. With update size matched, the hyperbolic adapter trained normally, but I could not tell it apart from LoRA on any of the 80 quantities I measured.
With three seeds and a sparse reward signal, this study cannot rule out a modest effect of geometry. It does show that published HypLoRA barely trains in this setup, and that in this setting curvature can change only the size of an update, not its direction.
1Introduction
When we want to understand how individuals behave, social scientists often pose surveys, asking respondents to describe themselves. Individuals’ self-reported traits predict what they do. LLMs can answer the same questionnaires, and after alignment training they give consistent, human-like answers. But those answers do not predict the models’ behavior.1 One can imagine a model rating itself as unlikely to tell people what they want to hear, only to then agree with a user who asserts that the Earth is flat.
Self-CTRL is one recent attempt to close this gap. It trains a model with reinforcement learning, rewarding self-reports that are consistent with the model’s behavior.2 This project asks what might cause the gap in the first place, and what might limit methods like Self-CTRL. I approach that question through geometry.
Personality measures are hierarchical. The BFI-2 inventory groups 60 items into 15 facets and the facets into 5 broad domains.3 Hierarchies are hard to represent faithfully in flat, Euclidean space: the number of nodes in a tree grows exponentially with depth, while the room available in Euclidean space grows only polynomially. Hyperbolic space grows exponentially, so trees fit into it with much less distortion.4 Concepts inside LLMs already show hierarchical structure.5 If a model’s representation of personality is squeezed into flat space, the link between its trait self-reports and its behavior could be distorted, contributing to the say-do gap.
Most fine-tuning uses low-rank adaptation (LoRA), which adds a small trainable update to each weight matrix in ordinary Euclidean space.6 HypLoRA performs the same update on a hyperbolic surface, the Lorentz hyperboloid, before mapping the result back.7 My research question was: does Euclidean space distort this psychological structure, and does letting an adapter work in hyperbolic space restore it?
I found that HypLoRA, as published, does not train at the learning rate and step budget I used. Its gradients are about 38 times smaller than LoRA’s, for reasons I have not yet identified. When I corrected the update size, the hyperbolic adapter trained, but its results could not be distinguished from LoRA’s. I also show that in this design the hyperbolic and Euclidean updates always point in the same direction, so geometry can change only how large each update is.
2Results
2.1 Published HypLoRA barely trains
The simplest measure of whether an adapter is learning is the size of its gradient. Figure 1 shows the median gradient norm for each run. LoRA and size-matched HypLoRA both fall between about 1.7 and 2.7. Published HypLoRA falls between 0.056 and 0.064 in all three seeds, about 38 times lower. Its largest value is more than 25 times smaller than the smallest value in either other condition.
The divergence from the starting model tells the same story (Figure 2). Self-CTRL includes a penalty, measured as Kullback-Leibler divergence, that keeps the model close to its starting point. All three conditions began at the same KL value, 0.313. From the first 50 training steps to the last 50, LoRA reduced it 18.6-fold. Published HypLoRA reduced it only 1.4-fold. Size-matched HypLoRA followed LoRA’s path through step 250; its last two blocks are raised by a checkpoint-resume artifact described under Limitations.
Because the adapter barely changed, the model’s self-reports barely changed either. Trait spread, the variation in the model’s trait self-reports, moved by at most 0.011 in every published-HypLoRA seed (Figure 3). The effective rank of the BFI-2 item embeddings rose in all three LoRA seeds and all three size-matched seeds, and changed by at most 0.015 in published HypLoRA (Appendix Table A2).
2.2 With update size matched, HypLoRA cannot be told apart from LoRA
The size-matched condition rescales each hyperbolic update to the size the Euclidean update would have had. This removes the overall scale difference and leaves only the shape of the update. This condition trained normally: its gradient norms and its early KL curve match LoRA’s (Figures 1 and 2).
But it did not differ from LoRA in behavior. Alignment-%, the share of trait–task relationships whose sign matches the literature, moved inconsistently in every condition. Its 95% confidence intervals were 21 to 31 percentage points wide, wider than any difference between conditions (Appendix Table A3). Trait spread rose sharply in one seed and barely in the other two, for both LoRA and size-matched HypLoRA (Figure 3).
To check that I had not simply chosen the wrong measures, I compared each condition with LoRA on all 80 numeric quantities recorded at each checkpoint. Size-matched HypLoRA differed from LoRA in the same direction across all three seeds on 8 of the 80, fewer than the 20 expected by chance. Published HypLoRA did so on 29 of the 80.
2.3 Weight-space comparisons were inconclusive
I also compared the trained adapters directly, using the cosine similarity between runs’ weight updates. Runs of the same method with different seeds had nearly orthogonal updates (cosine about 0.0003 for LoRA). This is expected. LoRA’s A matrix starts random, depends on the seed, and stays close to its starting value during training,8, 9 so each run’s update lies in a different random subspace. Two adapters in different subspaces can still affect the model’s outputs in similar ways, so weight similarity cannot tell us whether the conditions learned the same thing (Appendix Table A5).
3Discussion
Why published HypLoRA barely trains is unresolved. The submitted version of this report explained the small gradients with a numerical clamp in HypLoRA’s return map, which would pin the adapter’s output near zero until the update grew large enough to escape it. That explanation does not apply to the code I ran. My implementation computes the return map as [asinh(u)/u] · xspace (see Methods), which needs no clamp near zero, so the adapter’s output tracks its input at every scale. The suppression itself is real: the gradient norms and the KL divergence measure it directly. Its cause is not yet identified. Curvature is a learnable parameter in HypLoRA, but it changed by less than 0.1% in every run, so in practice I tested a fixed curvature.
Geometry can change update size, not direction. In HypLoRA, the update is scaled by a positive factor on the way into hyperbolic space and scaled again on the way out. Because the LoRA matrices are linear, the direction of the update does not change. I measured a cosine similarity of 1.0000 between the hyperbolic and Euclidean updates for every token. What the geometry does change is how each token’s update is scaled: tokens with very large hidden states are compressed compared with what LoRA would apply. Once the overall size of the update is matched, this per-token scaling is the only remaining difference between HypLoRA and LoRA.
What the null result means. I found no detectable difference between size-matched HypLoRA and LoRA, but this design had limited power. Three seeds are too few for a significance test: with three seeds, the smallest possible p-value from a paired sign test is 0.25. The reward signal was also sparse, with a median reward per step of zero in eight of nine runs. And outcomes depended strongly on the seed, as the trait spread results show. A real but modest effect of geometry could be hidden in that variation. The result should be read as no detectable difference at this power.
Limitations.
- Each condition had three seeds, and only one curvature value was tested.
- The hyperbolic runs exceeded the computing cluster’s time limit and were resumed from checkpoints; the LoRA runs were not. Four of the six resumed runs show a jump in KL at the resume point. This cannot explain the gradient gap, which is present from the first steps, but it adds variance to the hyperbolic conditions.
- HypLoRA could differ from LoRA for reasons other than geometry, such as different optimization dynamics. The size-matched control addresses the largest of these, update scale, but does not rule out the rest.
- Only the adapter is hyperbolic. This is not a comparison between a fully hyperbolic LLM and a Euclidean one; existing hyperbolic LLMs are small, especially if training data must be held constant.
Future directions.
- Trace published HypLoRA’s gradients through each step of the hyperbolic layer to find why they are so small, and sweep the learning rate and training length to test whether it trains, and behaves differently from LoRA, given more budget.
- Use more seeds and a denser reward signal, and compare conditions by their outputs or activations on a fixed set of prompts rather than by their weights.
- Test the per-token scaling directly by applying it to an ordinary LoRA adapter, which isolates the geometric effect without the hyperbolic machinery.
4Methods
Model and adapters
All runs adapt allenai/OLMo-7B-Instruct-hf10 in bfloat16 on a single NVIDIA A100 80 GB GPU. Adapters use rank 32, α = 64, no dropout, and target the q_proj, k_proj, v_proj, up_proj, and down_proj modules. These settings are identical across all nine runs.
HypLoRA implementation
The hyperbolic adapter follows the equations in the HypLoRA paper rather than its released code. The Lorentz re-projection follows the paper’s Eq. 9, and the logarithmic map is computed as [asinh(u)/u] · xspace. Curvature is learnable and kept positive by a softplus; its raw value is initialized at 1.0, giving an effective curvature of 1.313.
Training
All conditions are trained with Self-CTRL2 using group-relative policy optimization for 400 steps. Each group has 8 rollouts sampled at temperature 1.0 with top-p 0.9 and a 150-token limit, with 32 items per rollout. The batch size is 10 with gradient accumulation 2 and micro-batch size 1. The optimizer is AdamW with learning rate 10−5, betas (0.9, 0.95), and no weight decay. A KL penalty toward the reference policy has coefficient 0.1 and uses 8 reference samples.
Conditions
Each of the three conditions was run with seeds 0, 1, and 2. LoRA is the Euclidean baseline. HypLoRA, published uses the method with no correction. HypLoRA, size-matched multiplies each layer’s hyperbolic update by one scalar per forward pass so that its Frobenius norm equals that of the Euclidean update.
Measures
Checkpoints are evaluated at steps 0, 100, 200, 300, and 399. Alignment-% is the share of 30 trait-by-task regression coefficients (6 traits by 5 tasks) whose sign matches the direction expected from the literature, with bootstrap confidence intervals; about 50% is chance.1 Trait spread is the variation in the model’s 1–5 trait self-reports. Geometry is measured on embeddings of the 60 BFI-2 items as bare text: tree distortion measures how far pairwise distances between items depart from the domain–facet–item hierarchy;4 Gromov δ-hyperbolicity measures how tree-like the representation is, using the four-point condition on sampled quadruples;7 and effective rank measures how many dimensions the embeddings use.
Analysis
At step 0 the adapter is untrained, so all three conditions evaluate the same model and agree exactly within a seed. Variation between seeds is therefore larger than variation between conditions, and every comparison is made within a seed, as the change from step 0 to step 399. I report the direction of each per-seed change and its size, not p-values. A change of exactly zero counts as neither positive nor negative. The 80-measure comparison in Section 2.2 is descriptive: with many related measures and three seeds, single entries carry little weight, and only the overall pattern is interpreted. Runs resumed from a checkpoint re-run the steps after that checkpoint; the duplicate records are removed before analysis, keeping the later one.
Reproducibility
All nine runs used identical configuration and identical training and evaluation code, verified by comparing each run’s recorded configuration and code version. The analysis scripts compare_arms.py and adapter_similarity.py are included in the project repository.
References
- P. Han et al., “The Personality Illusion: Revealing Dissociation Between Self-Reports & Behavior in LLMs,” arXiv:2509.03730, Sep. 2025.
- I. Pres, L. Ruis, M. Ghebreselassie, B. Z. Li, and J. Andreas, “Self-CTRL: Self-Consistency Training with Reinforcement Learning,” arXiv:2606.18327, Jun. 2026.
- C. J. Soto and O. P. John, “The next Big Five Inventory (BFI-2): Developing and assessing a hierarchical model with 15 facets to enhance bandwidth, fidelity, and predictive power,” Journal of Personality and Social Psychology, vol. 113, no. 1, pp. 117–143, 2017.
- C. De Sa, A. Gu, C. Ré, and F. Sala, “Representation Tradeoffs for Hyperbolic Embeddings,” Apr. 2018. [Online]. Available: https://arxiv.org/abs/1804.03329v2.
- K. Park, Y. J. Choe, Y. Jiang, and V. Veitch, “The Geometry of Categorical and Hierarchical Concepts in Large Language Models,” arXiv:2406.01506, 2025.
- E. J. Hu et al., “LoRA: Low-Rank Adaptation of Large Language Models,” arXiv:2106.09685, 2021.
- M. Yang et al., “Hyperbolic Fine-Tuning for Large Language Models,” arXiv:2410.04010, Feb. 2026.
- S. Hayou, N. Ghosh, and B. Yu, “LoRA+: Efficient Low Rank Adaptation of Large Models,” 2024.
- J. Zhu et al., “Asymmetry in Low-Rank Adapters of Foundation Models,” 2024.
- D. Groeneveld et al., “OLMo: Accelerating the Science of Language Models,” in Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), Bangkok, Thailand: Association for Computational Linguistics, 2024, pp. 15789–15809, doi: 10.18653/v1/2024.acl-long.841.
- Anthropic, “Claude Opus 5 and Claude Opus 5.5,” large language models accessed through Claude Code, Anthropic, 2026. [Online]. Available: https://www.anthropic.com/claude
Acknowledgements
I thank my faculty mentor, R. Michael Alvarez, for mentorship and for providing access to computing resources. I thank Rafal Kocielnik for technical assistance and guidance throughout this project, and Danny Ebanks for help accessing computing resources. This work was supported by the Caltech WAVE Fellows Program. The computations in this paper were run on the FASRC Cannon cluster supported by the FAS Division of Science Research Computing Group at Harvard University.
I used Claude (Anthropic), through the Claude Code coding assistant, to help write and debug the training, cluster, and analysis code, to help analyze results, and to help draft and format this report. I directed the research, reviewed all code and analyses, and take responsibility for the content.
ASupplementary tables
Table A1: Training signal per run. “Carried gradient” is the share of steps that were neither skipped nor in a group with identical rewards.
| Condition | Seed | Median grad norm | Carried gradient (%) | Skipped (%) |
|---|---|---|---|---|
| LoRA | 0 | 1.9475 | 51.5 | 16.2 |
| LoRA | 1 | 2.2431 | 43.5 | 45.0 |
| LoRA | 2 | 2.7046 | 47.0 | 36.2 |
| HypLoRA, published | 0 | 0.0637 | 75.5 | 13.0 |
| HypLoRA, published | 1 | 0.0558 | 69.5 | 14.0 |
| HypLoRA, published | 2 | 0.0595 | 73.5 | 11.8 |
| HypLoRA, size-matched | 0 | 2.6862 | 51.2 | 21.2 |
| HypLoRA, size-matched | 1 | 1.7062 | 47.0 | 16.5 |
| HypLoRA, size-matched | 2 | 2.0320 | 58.0 | 17.2 |
Table A2: Mean trait spread and change in effective rank, step 0 to step 399.
| Condition | Seed | Spread, step 0 | Spread, step 399 | Δ spread | Δ eff. rank |
|---|---|---|---|---|---|
| LoRA | 0 | 0.5224 | 0.5103 | −0.0121 | +0.0743 |
| LoRA | 1 | 0.4828 | 0.6985 | +0.2157 | +0.0886 |
| LoRA | 2 | 0.5135 | 0.5356 | +0.0221 | +0.1435 |
| HypLoRA, published | 0 | 0.5224 | 0.5116 | −0.0108 | +0.0154 |
| HypLoRA, published | 1 | 0.4828 | 0.4754 | −0.0074 | +0.0003 |
| HypLoRA, published | 2 | 0.5135 | 0.5172 | +0.0037 | −0.0038 |
| HypLoRA, size-matched | 0 | 0.5224 | 0.6047 | +0.0823 | +0.1141 |
| HypLoRA, size-matched | 1 | 0.4828 | 0.8298 | +0.3470 | +0.0466 |
| HypLoRA, size-matched | 2 | 0.5135 | 0.4724 | −0.0411 | +0.0774 |
Table A3: Alignment-% with 95% bootstrap confidence intervals at step 399. Interval widths of 21 to 31 points exceed every difference between conditions.
| Condition | Seed | Step 0 | Step 399 | 95% CI | CI width |
|---|---|---|---|---|---|
| LoRA | 0 | 32.1 | 57.1 | 35.7–64.3 | 28.6 |
| LoRA | 1 | 46.4 | 39.3 | 28.6–53.6 | 25.0 |
| LoRA | 2 | 57.1 | 57.1 | 36.4–64.3 | 27.9 |
| HypLoRA, published | 0 | 32.1 | 53.6 | 32.1–53.7 | 21.6 |
| HypLoRA, published | 1 | 46.4 | 53.6 | 39.3–60.7 | 21.4 |
| HypLoRA, published | 2 | 57.1 | 57.1 | 32.1–60.7 | 28.6 |
| HypLoRA, size-matched | 0 | 32.1 | 34.8 | 30.4–60.9 | 30.5 |
| HypLoRA, size-matched | 1 | 46.4 | 39.3 | 28.6–57.1 | 28.5 |
| HypLoRA, size-matched | 2 | 57.1 | 42.9 | 35.7–60.7 | 25.0 |
Table A4: Geometry: change from step 0 to step 399 in each condition minus the same change in LoRA, paired by seed. “Signs” counts seeds above and below zero.
| Measure | Condition | Seed 0 | Seed 1 | Seed 2 | Mean | Signs |
|---|---|---|---|---|---|---|
| Tree distortion | published | −0.00033 | −0.00035 | −0.00039 | −0.00036 | 0+ / 3− |
| Tree distortion | size-matched | +0.00055 | +0.00114 | −0.00087 | +0.00027 | 2+ / 1− |
| Gromov δ | published | +0.00972 | −0.00003 | −0.00754 | +0.00072 | 1+ / 2− |
| Gromov δ | size-matched | −0.00406 | −0.01618 | −0.00169 | −0.00731 | 0+ / 3− |
| Effective rank | published | −0.0589 | −0.0883 | −0.1473 | −0.0982 | 0+ / 3− |
| Effective rank | size-matched | +0.0397 | −0.0420 | −0.0660 | −0.0228 | 1+ / 2− |
Table A5: Cosine similarity between adapter weights. ΔW = BA is the full low-rank update; A and B are its two factors. At a fixed seed all conditions start from the same random A, which barely changes during training; this shared starting point, not agreement between methods, accounts for the higher same-seed similarity.
| Comparison | ΔW | A | B |
|---|---|---|---|
| Same method, different seeds: LoRA | +0.0003 | +0.0001 | −0.0008 |
| Same method, different seeds: published | +0.0131 | +0.0001 | −0.0011 |
| Same method, different seeds: size-matched | +0.0006 | +0.0001 | −0.0016 |
| Same seed: LoRA vs. size-matched | +0.2019 | +0.9997 | +0.2016 |
| Same seed: LoRA vs. published | +0.2637 | +0.9972 | +0.2702 |
| Same seed: published vs. size-matched | +0.2373 | +0.9972 | +0.2428 |