فاینتیون کردن مدلهای زبانی و تصویری لزوماً به معنی اضافه کردن لایههای Low-Rank مثل LoRA نیست. یه دیدگاه عمیقتر و ریاضیطور وجود داره به اسم Orthogonal Finetuning (OFT) که به جای اینکه بیاد یه ماتریس دلتا (Delta Weights) رو با وزنهای اصلی جمع کنه، سعی میکنه نورونها رو توی فضا "بچرخونه" تا روابط معنایی (Pairwise angles) بینشون حفظ بشه.
ایده اصلی اینه: وقتی شما با LoRA فاینتیون میکنی، ممکنه ساختار هندسی فضای ویژگیهای مدل (Hyperspherical Energy) رو بهم بریزی چون داری یه نویز Low-Rank بهش اضافه میکنی. اما OFT میاد یک ماتریس Orthogonal یاد میگیره و در وزنهای اصلی ضرب میکنه. اینطوری Norm ماتریس وزنها ثابت میمونه و پایداری آموزش به شدت بالا میره.
مشکل OFT کجاست؟ هزینه محاسباتی و تعداد پارامترها. اگه بخوایم یه ماتریس Orthogonal کامل (Dense) بسازیم، تعداد پارامترها خیلی زیاد میشه. اگر هم بخوایم Block-Diagonal کار کنیم (مثل OFT معمولی)، تعامل بین فیچرها محدود میشه و Expressivity مدل میاد پایین.
راه حل جدید مقاله BOFT (Butterfly Orthogonal Finetuning) استفاده از ساختار Butterfly Factorization هست. این دقیقاً همون ایدهایه که توی الگوریتم Cooley-Tukey برای FFT (تبدیل فوریه سریع) استفاده میشه. به جای اینکه یک ماتریس گنده و پرهزینه یاد بگیریم، میایم اون رو به حاصلضرب چندین ماتریس Sparse تجزیه میکنیم.
نکات فنی و معماری BOFT:
۱. دیدگاه انتقال اطلاعات (Information Transmission):
توی این معماری، ضرب ماتریسها مثل انتقال اطلاعات توی یک شبکه Grid دیده میشه. ساختار Butterfly اجازه میده با کمترین تعداد یال (Edge)، اطلاعات از تمام نودهای ورودی به تمام نودهای خروجی برسه (Dense Connectivity) ولی با تعداد پارامتر کمتر
۲. حفظ ویژگیهای طیفی (Spectral Properties):
برخلاف LoRA که ممکنه مقادیر ویژه (Singular Values) ماتریس وزن رو تغییر بده، BOFT به خاطر ماهیت Orthogonal بودن، Spectral Norm وزنهای Pretrained رو دستنخورده نگه میداره. این یعنی دانش قبلی مدل بهتر حفظ میشه و کمتر دچار Catastrophic Forgetting میشیم.
۳. درونیابی وزنها (Weight Interpolation):
یه ویژگی عجیب و جالب BOFT اینه که چون از ضرب چندین ماتریس متعامد تشکیل شده، شما میتونید بعد از آموزش، برخی از این ماتریسها رو با ماتریس همانی (Identity) جایگزین کنید. این کار باعث میشه بتونید خیلی نرم بین مدل اصلی و مدل فاینتیون شده حرکت کنید (Interpolate) بدون اینکه نیاز به آموزش مجدد باشه. توی Stable Diffusion این قابلیت باعث میشه بتونید میزان تاثیر فاینتیون رو روی خروجی نهایی دقیق کنترل کنید.
۴. کاربرد در ویژن و زبان:
توی بنچمارکها، BOFT روی LLMها (مثل Llama-2) در تسکهای ریاضی و استدلال، و روی مدلهای ویژن (مثل ViT و Stable Diffusion) عملکرد بهتری نسبت به LoRA داشته. مخصوصاً در ControlNetها و Subject-driven generation، تونسته Identity سوژه رو خیلی بهتر از LoRA حفظ کنه.
به نظر من، جذابیت اصلی BOFT توی Inductive Bias اون هست. ساختار Butterfly ذاتاً شبیه به تبدیلهای خطی کلاسیک (مثل Fourier و Cosine Transform) عمل میکنه و این باعث میشه مدل روی دادههای جدید بهتر تعمیم (Generalize) پیدا کنه. هرچند پیادهسازی اون پیچیدهتر از LoRA هست و شاید توی Training کمی کندتر باشه (به خاطر ضرب ماتریسهای متوالی)، ولی چون در زمان Inference میشه وزنها رو با مدل اصلی Merge کرد، هیچ Latency اضافی نداره.
اگه دنبال فاینتیون کردن هستید و LoRA جواب مطلوب رو نمیده یا پایداری آموزش پایینه، BOFT آلترناتیو ریاضیپسند و قویتریه.
📃 مقاله اصلی:
Parameter-Efficient Orthogonal Finetuning via Butterfly Factorization
https://arxiv.org/abs/2311.06243
🛠 Join @LLMEngineers Community
Post #260
1.47K