نماذج اللغة2021متوسط10 دقيقة قراءة
RoFormer: محوِّل مُحسَّن بالتضمين الموضعي الدوراني
RoFormer: Enhanced Transformer with Rotary Position Embedding
Su, J. · Lu, Y. · Pan, S. · Murtadha, A. · Wen, B. · Liu, Y. — Neurocomputing
المشكلة
المحوِّل الأصلي يُرمِّز الموضع بإضافة متجه جيبي ثابت إلى تضمين كل رمز. هذا يمنح النموذج معلومات عن ، لكنه لا يُدمج المسافة النسبية بين الرموز مباشرةً في آلية الانتباه. التضمينات الموضعية المتعلَّمة تعاني من القيد نفسه: هي أيضاً مطلقة ومحدودة بطول أقصى ثابت. أساليب مثل طريقة Shaw وآخرين (2018) وTransformer-XL تُضيف حدود انحياز إلى درجات الانتباه، لكنها تُدخل معاملات إضافية وتُعقّد البنية ولا تمتد بشكل طبيعي إلى أنواع . حتى عام 2021 لم تكن هناك طريقة واحدة تجمع بنظافة بين المطلق والنسبي بدون معاملات إضافية، مع الحفاظ على التوافق مع القياسي والخطي معاً.
الإسهام
التضمين الموضعي الدوراني (RoPE): بدلاً من إضافة متجه موضعي، يُدير RoPE متجهات الاستعلام والمفتاح بزوايا تعتمد على الموضع داخل فضاءات ثنائية الأبعاد. الدوران يُرمِّز الموضع المطلق، لكن الجداء النقطي بين أي استعلام ومفتاح مُدارَين يعتمد فقط على المسافة النسبية بينهما — مما يوحّد المنهجين بدون أي معاملات إضافية. يُضعف RoPE تلقائياً انتباه الرموز البعيدة، ويدعم أطوال تسلسل غير محدودة، ويعمل بسلاسة مع الانتباه الخطي. النموذج الناتج، RoFormer، يتقارب أسرع من BERT أثناء التدريب المسبق ويتفوّق على الخطوط المرجعية الجيبية والمتعلَّمة في مهام GLUE والترجمة الآلية (WMT'14 EN→DE) ومعايير تصنيف النصوص الطويلة الصينية.
الأثر
أصبح RoPE الترميز الموضعي المعتمد فعلياً في النماذج اللغوية الكبيرة الحديثة. تبنّته LLaMA وLLaMA 2 وMistral وPaLM وGemma وQwen وCodeLlama، مما يجعله من أكثر الابتكارات انتشاراً في منظومة المحوِّل. صياغته الرياضية الأنيقة ألهمت أيضاً عائلة من الامتدادات — YaRN والتكبير الواعي بـ NTK والتكبير الديناميكي — التي تُمكّن من الاستقراء إلى أطوال سياق أبعد بكثير من طول التدريب.
تخيّل ساعةً بعقارب متعددة. كل كلمة في الجملة عقربٌ يُشير إلى زاوية تُحدَّد بموقعه. حين تسأل «ما المسافة بين هذين العقربين؟»، الإجابة هي الفرق بين الزاويتين — بصرف النظر عن أي اتجاه تدور فيه الساعة ككل. هذا بالضبط ما يفعله التضمين الموضعي الدوراني: يُدير متجه كل كلمة بزاوية تعتمد على موقعها، فيحسب انتباه المحوِّل المسافة النسبية تلقائياً بدلاً من العنوان المطلق.
مشكلة الموضع: لماذا يحتاج المحوِّل إلى إحداثيات
على عكس الشبكات التكرارية التي تُعالج الرموز واحداً تلو الآخر — وبالتالي تعرف ترتيبها بطبيعة بنيتها — فإن الانتباه الذاتي في المحوِّل يتعامل مع المدخلات كأنها مجموعة بلا ترتيب. لو بدّلت مواضع الكلمات في جملة، ستحصل على درجات انتباه متطابقة. الترميز الموضعي يحلّ هذه المشكلة بأن يُلصق بكل رمز بطاقة تحدّد موقعه ليتمكن النموذج من التمييز بين الأول والأخير.
قبل RoPE كان هناك منهجان سائدان:
الترميز الجيبي المطلق (Vaswani وآخرون، 2017) — يُضيف نمطاً ثابتاً من الجيب وجيب التمام إلى تضمين كل رمز. طريقة بسيطة وبلا معاملات إضافية، لكنها تعيش خارج حساب الانتباه. دالة الانتباه نفسها لا ترى المسافة النسبية صراحةً.
انحياز الموضع النسبي (Shaw وآخرون، 2018؛ Dai وآخرون، 2019) — يحقن حدّ انحياز قابلاً للتعلّم في درجة الانتباه بناءً على المسافة بين موضعي الاستعلام والمفتاح. هذا يجعل الانتباه واعياً بالمسافة، لكنه يكلّف معاملات إضافية ويُعدّل صيغة الانتباه ولا يمتد بشكل طبيعي إلى الانتباه الخطي.
السؤال الذي يُجيب عنه RoPE هو: هل نستطيع ترميز الموضع بحيث يصبح الجداء النقطي في الانتباه تلقائياً دالةً في المسافة النسبية — بلا انحياز إضافي، وبلا معاملات زائدة، ومع توافق كامل مع الانتباه الخطي؟
الفكرة الجوهرية: أدِر ولا تُضِف
تبدأ فكرة RoPE من سؤال عن درجة الانتباه. في الانتباه الذاتي القياسي، الدرجة بين رمزين في الموضعين m وn هي:
score = q_m · k_n
نريد طريقة لحقن الموضع بحيث يعتمد هذا الجداء النقطي فقط على محتوى المتجهات وعلى المسافة النسبية (m − n)، وليس على الموضعين المطلقين m وn كلٍّ على حدة. رياضياً نبحث عن دالتين f_q وf_k بحيث:
⟨ f_q(x_m, m), f_k(x_n, n) ⟩ = g(x_m, x_n, m − n)
تُثبت الورقة أن العائلة الوحيدة من الحلول، حين نعمل في بُعدين، تستخدم الضرب في الأعداد المركّبة — أو ما يُعادله: الدوران. إذا عاملنا كل زوج من أبعاد التضمين على أنه الجزء الحقيقي والتخيّلي من عدد مركّب، فإن الضرب بـ يُكافئ تدوير المتجه ثنائي الأبعاد بزاوية mθ. وحين نحسب الجداء النقطي لمتجهين مُدارَين، تتلاشى الدورانات المطلقة ولا يبقى إلا الفرق (m − n)θ.
هذه هي الفكرة الجوهرية: الدوران يُرمِّز الموضع المطلق، لكن الجداء الداخلي لا يرى سوى الموضع النسبي.
مصفوفة الدوران: من بُعدين إلى d بُعد
في أبسط حالة — بُعدان فقط — يعامل RoPE متجه الاستعلام كعدد مركّب ويضربه بـ . بتطبيق صيغة أويلر، يُعادل هذا مصفوفة دوران 2×2 تُطبَّق على كل زوج من أبعاد التضمين.
للتضمين الكامل بأبعاد d، يُقرن RoPE الأبعاد اثنين اثنين — (0,1)، (2,3)، …، (d−2, d−1) — ليحصل على d/2 دوراناً ثنائياً مستقلاً. كل زوج يحصل على تردد دوران خاص θ_i مُحدَّد بالتقدّم الهندسي نفسه المستخدم في التضمين الجيبي الأصلي:
الأزواج منخفضة التردد تلتقط أنماط الموضع بعيدة المدى، بينما الأزواج عالية التردد تلتقط الترتيب المحلي الدقيق. مجتمعةً، تُشكّل الدورانات الـ d/2 مصفوفة دوران واحدة قطرية الكتل R_m تُطبَّق على متجهي الاستعلام والمفتاح عند الموضع m.
ثلاث خصائص جوهرية
RoPE ليس مجرد رياضيات أنيقة — بل يُقدّم ثلاث خصائص عملية كانت مفقودة في طرق الترميز الموضعي السابقة:
1. مرونة طول التسلسل. لأن الدورانات تُحسب مباشرة من معادلة رياضية، لا توجد جداول بحث ثابتة. يستطيع النموذج معالجة تسلسلات بأي طول دون إعادة تدريب التضمينات الموضعية. الأساس الجيبي يضمن أن زوايا الدوران تبقى موزّعة بشكل جيد لأي رقم موضع.
2. تناقص الاعتماد بين الرموز البعيدة. تُثبت الورقة أن الجداء الداخلي بين الاستعلام والمفتاح يتناقص طبيعياً كلما زادت المسافة النسبية. هذا يتوافق مع الحدس اللغوي: الكلمة عادةً أكثر ارتباطاً بجاراتها من الرموز البعيدة. ينشأ هذا التناقص من التقدّم الهندسي للترددات — المكونات عالية التردد تتوسّط بسرعة بينما المكونات منخفضة التردد تستمر لكن بمساهمة أقل.
3. التوافق مع الانتباه الخطي. في انتباه softmax القياسي، يُطبَّق RoPE قبل الجداء النقطي وهذا مباشر. لكن في الانتباه الخطي (حيث يُستبدل softmax بخرائط سمات نوى)، يجب أن يكون الترميز الموضعي متوافقاً مع حيلة النواة. ولأن RoPE تحويل ضربي على الاستعلام والمفتاح (وليس انحيازاً جمعياً على الدرجة)، فإنه يندمج بنظافة: كل ما عليك هو التدوير قبل تطبيق النواة.
التنفيذ: بساطة مفاجئة
رغم الرياضيات الغنية، تنفيذ RoPE لا يحتاج إلا بضعة أسطر. الحيلة الأساسية: بدلاً من بناء مصفوفة d×d وضربها، استخدم عمليات عنصرية. أقرن الأبعاد اثنين اثنين، واحسب مسبقاً cos(mθ_i) وsin(mθ_i)، ثم طبّق الدوران ثنائي الأبعاد على كل زوج:
هذه عملية عنصرية: لا ضرب مصفوفات، تعقيدها O(d) لكل رمز، بنفس تكلفة إضافة التضمينات الجيبية. عملياً تُنفّذ كثير من الأُطُر هذا عبر ضرب الأعداد المركّبة باستخدام صيغة أويلر ، وهي تُترجم طبيعياً إلى عمليات فعّالة على وحدات المعالجة الرسومية.
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import torch
def precompute_freqs(dim: int, max_len: int, base: float = 10000.0):
"""حساب ترددات الدوران مسبقاً لكل زوج أبعاد."""
i = torch.arange(0, dim, 2).float() # أرقام الأزواج: 0, 2, 4, ...
freqs = 1.0 / (base ** (i / dim)) # θ_i = 10000^{-2i/d}
positions = torch.arange(max_len).float() # m = 0, 1, 2, ...
angles = positions[:, None] * freqs[None, :] # (max_len, dim/2)
return torch.cos(angles), torch.sin(angles) # جداول cos/sin المحسوبة مسبقاً
def apply_rope(x: torch.Tensor, cos: torch.Tensor, sin: torch.Tensor):
"""تطبيق التضمينات الدورانية على متجه الاستعلام أو المفتاح x بأبعاد (B, L, d)."""
d = x.shape[-1]
x1, x2 = x[..., :d//2], x[..., d//2:] # تقسيم إلى أزواج فردية/زوجية
# دوران ثنائي الأبعاد: (x1', x2') = (x1·cos − x2·sin, x1·sin + x2·cos)
rotated = torch.cat([
x1 * cos - x2 * sin,
x1 * sin + x2 * cos,
], dim=-1)
return rotated
# الاستخدام داخل طبقة انتباه المحوِّل:
# cos, sin = precompute_freqs(d_head, max_seq_len)
# q = apply_rope(q, cos[:seq_len], sin[:seq_len])
# k = apply_rope(k, cos[:seq_len], sin[:seq_len])
# الآن q @ k.T يُرمِّز الموضع النسبي تلقائياً!التجارب: تقارب أسرع وأداء أفضل
قيّم المؤلفون RoFormer على عدة معايير:
تقارب التدريب المسبق: منحنى خسارة نمذجة اللغة المُقنَّعة في RoFormer انخفض تحت منحنى BERT مبكراً واستمر بالتفوق طوال 100 ألف خطوة تدريب، مما يُظهر أن إشارة الموضع الدورانية تُساعد النموذج على التعلّم بشكل أسرع.
معايير GLUE: عند الضبط الدقيق، تفوّق RoFormer على BERT بشكل ملحوظ في ثلاث مهام من أصل ست (MRPC وQQP وSTS-B) وكان منافساً في البقية. المكاسب الأبرز ظهرت في المهام التي تتطلب فهم العلاقات بين أزواج الجمل — بالضبط حيث يكون الوعي بالموضع النسبي أكثر أهمية.
الترجمة الآلية (WMT'14 EN→DE): حسّن RoFormer درجة BLEU من 27.3 إلى 27.5 مقارنة بالمحوِّل القياسي.
تصنيف النصوص الطويلة الصينية: بتمديد الطول من 512 إلى 1024 رمزاً، حسّن RoFormer-1024 الدقة بمقدار 1.5 نقطة مئوية مقارنة بـ WoBERT-512 على معيار CAIL2019-SCM، مما يُثبت تميّز RoPE مع المدخلات الأطول.
الانتباه الخطي: حين طُبّق RoPE على Performer (أحد أنواع الانتباه الخطي)، خفّض خسارة التدريب مقارنة بالأداء بدون ترميز موضعي — مؤكداً التوافق مع الانتباه المبني على النوى.
إرث RoPE: الترميز الموضعي لعصر النماذج اللغوية الكبيرة
2017
الترميز الموضعي الجيبي
المحوِّل الأصلي يُضيف متجهات جيبية ثابتة إلى تضمينات الرموز. بسيط لكنه مطلق — الانتباه لا يرى المسافة النسبية مباشرة.
2018
انحياز الموضع النسبي (Shaw وآخرون)
يُضيف حدود انحياز قابلة للتعلّم إلى درجات الانتباه بناءً على المسافة النسبية. فعّال لكنه يُدخل معاملات إضافية ولا يعمل مع الانتباه الخطي.
2019
Transformer-XL وXLNet
تكرار على مستوى المقاطع مع ترميز موضعي نسبي. يتعامل مع سياقات أطول لكن بتنفيذ معقد وحدود تفاعل بين المحتوى والموضع.
2021
RoPE (هذه الورقة)
التضمينات الدورانية توحّد الموضع المطلق والنسبي بلا معاملات إضافية. بسيط وأنيق ومتوافق مع الانتباه القياسي والخطي معاً.
2023
LLaMA وMistral وPaLM تتبنّى RoPE
LLaMA من Meta وPaLM من Google وMistral جميعها تستخدم RoPE كترميز موضعي، ليصبح المعيار المعتمد في النماذج اللغوية الكبيرة.
2023
YaRN والتكبير الواعي بـ NTK
امتدادات لـ RoPE تُعدّل أساس التردد للاستقراء إلى أطوال سياق أبعد بكثير من طول التدريب (مثلاً 128 ألف رمز أو أكثر)، مما يُمكّن النماذج اللغوية الكبيرة طويلة السياق اليوم.
المساهمة الأعمق لـ RoPE ليست رقماً على معيار بعينه — بل هي بصيرة رياضية حلّت التوتر بين الموضع المطلق والنسبي. بإثبات أن الدوران هو العملية الوحيدة التي تُرمِّز الموضع المطلق مع جعل الجداء الداخلي يرى الموضع النسبي فقط، وجد Su وزملاؤه حلاً بلغ من النظافة أن المجال بأكمله تقارب عليه. اليوم، إن كنت تستخدم نموذجاً لغوياً كبيراً حديثاً — LLaMA أو Mistral أو Gemma أو Qwen أو عشرات غيرها — فإن متجهات الاستعلام والمفتاح لديك تُدار بواسطة RoPE قبل كل عملية انتباه.
المرجعSu, Lu, Pan, Murtadha, Wen, Liu. RoFormer: Enhanced Transformer with Rotary Position Embedding. Neurocomputing, 2021.
مصطلحات هذه الورقة
- التضمين الموضعي الدوارRotary Position Embedding (RoPE)
- الترميز الموضعيPositional Encoding
- مصفوفة الدورانRotation Matrix
- الموضع النسبيRelative Position
- الموضع المطلقAbsolute Position
- الانتباه الذاتيSelf-Attention
- الضرب الداخليInner Product
- تضمين جيبيSinusoidal Embedding
- مصفوفة الطلب (الاستعلام)Query
- مصفوفة المفتاح (الاستدلال)Key
- نافذة السياقContext Window
- طول المتتاليةSequence Length
- الضرب النقطيDot Product
- الانتباه الخطيLinear Attention
- معدّل الاضمحلالDecay Rate