Hyperbolic Fine-tuning for Large Language Models
<|reference_start|>Hyperbolic Fine-tuning for Large Language Models: Large language models (LLMs) have demonstrated remarkable performance on various tasks. However, it remains an open question whether the default Euclidean space is the most suitable choice for embedding tokens in LLMs. In this study, we first investigate the non-Euclidean characteristics of LLMs. Our findings reveal that token frequency follows a power-law distribution, with high-frequency tokens clustering near the origin and low-frequency tokens positioned farther away. Additionally, token embeddings exhibit a high degree of hyperbolicity, indicating a latent tree-like structure in the embedding space. Building on the observation, we propose to efficiently fine-tune LLMs in hyperbolic space to better exploit the underlying complex structures. However, we found that this fine-tuning in hyperbolic space cannot be achieved with naive application of exponential and logarithmic maps, when the embedding and weight matrices both reside in Euclidean space. To address this technique issue, we introduce a new method called hyperbolic low-rank efficient fine-tuning, HypLoRA, that performs low-rank adaptation directly on the hyperbolic manifold, avoiding the cancellation effect caused by the exponential and logarithmic maps, thus preserving the hyperbolic modeling capabilities. Through extensive experiments, we demonstrate that HypLoRA significantly enhances the performance of LLMs on reasoning tasks, particularly for complex reasoning problems. In particular, HypLoRA improves the performance in the complex AQuA dataset by up to 13.0%, showcasing its effectiveness in handling complex reasoning challenges<|reference_end|>
@article{yang2024hyperbolic,
    title={Hyperbolic Fine-tuning for Large Language Models},
    author={Menglin Yang, Aosong Feng, Bo Xiong, Jihong Liu, Irwin King, Rex Ying},
    journal={arXiv preprint arXiv:2410.04010},
    year={2024},
    archivePrefix={arXiv},
    eprint={2410.04010},
    primaryClass={cs.LG cs.AI cs.CL cs.NE}
}