Home Resume Artwork Writing Data Contact
← Technical Projects

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

Zakiriya Gladney1

Faculty Mentor: R. Michael Alvarez2

1Harvard University, Cambridge, MA, USA

2California Institute of Technology, Pasadena, CA, USA

Abstract

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.

Median gradient norm per run (log scale) 0.05 0.1 0.5 1 5 LoRA mean 2.298 HypLoRA, published mean 0.060 HypLoRA, size-matched mean 2.141
Figure 1: Published HypLoRA’s gradients are about 38 times smaller than those of the other two conditions. Each dot is one seed’s median gradient norm over 400 training steps, excluding steps the reward gate skipped. The horizontal axis is logarithmic. The three published-HypLoRA values lie between 0.056 and 0.064; the other two conditions lie between 1.71 and 2.70.

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.

KL to reference policy, median of 3 seeds (log scale) 0.4 0.1 0.03 0.01 0 100 200 300 training step (start of each 50-step block) HypLoRA, published ×1.4 LoRA ×18.6 HypLoRA, size-matched ×3.5
Figure 2: Both conditions that train move steadily away from the starting point; published HypLoRA barely moves. Median across three seeds of the per-step KL divergence from the reference policy, in 50-step blocks, on a logarithmic axis. All three conditions start at an identical KL of 0.313 on the first graded step. The size-matched curve rises at steps 300 and 350 because of a checkpoint-resume artifact in four of the six hyperbolic runs.

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).

Mean trait spread, step 0 → step 399 0.85 0.65 0.45 LoRA 0 399 HypLoRA, published 0 399 HypLoRA, size-matched 0 399
Figure 3: Published HypLoRA’s trait spread is flat; the other two conditions move, but inconsistently. Each line is one seed, from step 0 to step 399. All three conditions share the same step-0 value within a seed, because the adapter is untrained at step 0 and every condition is evaluating the same model.

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.

Future directions.

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

  1. P. Han et al., “The Personality Illusion: Revealing Dissociation Between Self-Reports & Behavior in LLMs,” arXiv:2509.03730, Sep. 2025.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. E. J. Hu et al., “LoRA: Low-Rank Adaptation of Large Language Models,” arXiv:2106.09685, 2021.
  7. M. Yang et al., “Hyperbolic Fine-Tuning for Large Language Models,” arXiv:2410.04010, Feb. 2026.
  8. S. Hayou, N. Ghosh, and B. Yu, “LoRA+: Efficient Low Rank Adaptation of Large Models,” 2024.
  9. J. Zhu et al., “Asymmetry in Low-Rank Adapters of Foundation Models,” 2024.
  10. 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.
  11. 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.

ConditionSeedMedian grad normCarried gradient (%)Skipped (%)
LoRA01.947551.516.2
LoRA12.243143.545.0
LoRA22.704647.036.2
HypLoRA, published00.063775.513.0
HypLoRA, published10.055869.514.0
HypLoRA, published20.059573.511.8
HypLoRA, size-matched02.686251.221.2
HypLoRA, size-matched11.706247.016.5
HypLoRA, size-matched22.032058.017.2

Table A2: Mean trait spread and change in effective rank, step 0 to step 399.

ConditionSeedSpread, step 0Spread, step 399Δ spreadΔ eff. rank
LoRA00.52240.5103−0.0121+0.0743
LoRA10.48280.6985+0.2157+0.0886
LoRA20.51350.5356+0.0221+0.1435
HypLoRA, published00.52240.5116−0.0108+0.0154
HypLoRA, published10.48280.4754−0.0074+0.0003
HypLoRA, published20.51350.5172+0.0037−0.0038
HypLoRA, size-matched00.52240.6047+0.0823+0.1141
HypLoRA, size-matched10.48280.8298+0.3470+0.0466
HypLoRA, size-matched20.51350.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.

ConditionSeedStep 0Step 39995% CICI width
LoRA032.157.135.7–64.328.6
LoRA146.439.328.6–53.625.0
LoRA257.157.136.4–64.327.9
HypLoRA, published032.153.632.1–53.721.6
HypLoRA, published146.453.639.3–60.721.4
HypLoRA, published257.157.132.1–60.728.6
HypLoRA, size-matched032.134.830.4–60.930.5
HypLoRA, size-matched146.439.328.6–57.128.5
HypLoRA, size-matched257.142.935.7–60.725.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.

MeasureConditionSeed 0Seed 1Seed 2MeanSigns
Tree distortionpublished−0.00033−0.00035−0.00039−0.000360+ / 3−
Tree distortionsize-matched+0.00055+0.00114−0.00087+0.000272+ / 1−
Gromov δpublished+0.00972−0.00003−0.00754+0.000721+ / 2−
Gromov δsize-matched−0.00406−0.01618−0.00169−0.007310+ / 3−
Effective rankpublished−0.0589−0.0883−0.1473−0.09820+ / 3−
Effective ranksize-matched+0.0397−0.0420−0.0660−0.02281+ / 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ΔWAB
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