السلاسل الزمنية2021متوسط10 دقيقة قراءة

Informer: ما وراء المحوِّل الفعّال للتنبؤ بالسلاسل الزمنية الطويلة

Informer: Beyond Efficient Transformer for Long Sequence Time Series Forecasting

Zhou, H. · Zhang, S. · Peng, J. · Zhang, S. · Li, J. · Xiong, H. · Zhang, W. — AAAI

المشكلة

بالسلاسل الزمنية الطويلة (LSTF) — أي استشراف مئات الخطوات المستقبلية اعتماداً على نوافذ تاريخية ممتدة — مطلب أساسي في تخطيط الطاقة والتنبؤ الجوي والأسواق المالية. المحوِّلات بدت واعدة لهذه المهمة، لكن ثلاث عقبات حالت دون ذلك: أولاً، التقليدي يكلّف O(L2)O(L^2) زمنياً وذاكرياً، فتصبح التسلسلات الطويلة غير عملية. ثانياً، تكديس طبقات المرمِّز يُضاعف هذه التكلفة طبقةً بعد طبقة. ثالثاً، فاكّ الترميز الانحداري يولّد خطوة واحدة في كل مرة، وهو بطيء ويُراكم الأخطاء كلّما امتدّ أفق التنبؤ.

الإسهام

يطرح Informer ثلاث أفكار محورية: الأولى هي الانتباه الذاتي ذو التفرّق الاحتمالي (ProbSparse)، الذي يوظّف تباعد كولباك-لايبلر لرصد الاستعلامات «الفاعلة» القليلة ويخفض التعقيد من O(L2)O(L^2) إلى O(LlogL)O(L \log L). الثانية هي آلية الذاتي التي تنصّف طول التسلسل بين طبقات المرمِّز باستخدام التفاف أحادي البُعد يعقبه تجميع أقصى، فينكمش إجمالي الذاكرة إلى O((2ϵ)LlogL)O((2-\epsilon)L \log L). الثالثة هي فاكّ ترميز توليدي يُنتج تسلسل المخرجات بالكامل في تمريرة أمامية واحدة بدلاً من التوليد خطوة بخطوة. حاز Informer جائزة الورقة المتميّزة في مؤتمر AAAI 2021.

الأثر

أثبت Informer أن المحوِّلات قادرة فعلاً على التنبؤ بعيد المدى بالسلاسل الزمنية وبكفاءة عالية. وقد ألهم مباشرةً عدة أعمال لاحقة: Autoformer وظّف الارتباط الذاتي لتفكيك الموسمية، وFEDformer نقل حسابات الانتباه إلى مجال التردد، وPatchTST قطّع السلسلة الزمنية إلى رُقع على غرار معالجة الصور، وDLinear طرح نموذجاً خطياً بسيطاً شكّك في ضرورة تعقيد المحوِّلات. كذلك امتدّ أثر فكرة الانتباه الاحتمالي المتفرّق إلى أبحاث الانتباه الفعّال خارج نطاق السلاسل الزمنية. ويبقى Informer علامة فارقة في مسيرة تطبيق المحوِّلات على التنبؤ الزمني.

تخيّل أستاذة أمامها 1000 ورقة امتحان تحتاج إلى تصحيح. الطريقة المعتادة — قراءة كل كلمة في كل ورقة — تستنزف وقتاً هائلاً. الأستاذة الذكية تبدأ بـتصفّح سريع لكل ورقة: أيّها يحمل إجابات لافتة تستحق تمعّناً حقيقياً، وأيّها مجرد تكرار نمطي لا يختلف عن غيره. تقرأ الأوراق المميّزة بعناية، وتمنح البقية درجة معيارية، فتنتهي في جزء بسيط من الوقت.

بعد ذلك تُكثّف ملاحظاتها في كل جولة وتحتفظ بالجوهري فقط، فتتقلّص حزمة الأوراق إلى النصف مع كل جولة.

وأخيراً، بدلاً من كتابة الملاحظات جملةً جملة — حيث أي خطأ مبكر يتراكم ويُفسد ما بعده — تكتب التقرير كاملاً دفعة واحدة وهي ترى الصورة الكلّية.

هذا بالضبط ما يفعله Informer مع بيانات : يتخطّى حسابات غير المفيدة، ويضغط التسلسل طبقة بعد طبقة، ويُصدر تنبؤاته كلّها دفعة واحدة.

التحدي: لماذا تفشل المحوِّلات التقليدية في السلاسل الزمنية الطويلة

لنأخذ مثالاً عملياً: نريد التنبؤ باستهلاك الكهرباء ساعةً بساعة لعشرين يوماً قادمة، أي 480 خطوة زمنية كمخرجات. ولكي يلتقط النموذج الأنماط المتكررة كالدورة اليومية والاتجاه الأسبوعي، يحتاج نافذة إدخال طويلة أيضاً — ربما 720 خطوة أو أكثر. في التقليدي، تقارن آلية الانتباه الذاتي كل موضع في التسلسل بكل موضع آخر، فتنشئ مصفوفة انتباه بحجم L×LL \times L. حين يكون L=720L = 720، نتحدث عن أكثر من نصف مليون عنصر — لكل رأس انتباه في كل طبقة. ضع ست طبقات بثمانية رؤوس في كلٍّ منها، وسترى أن التكلفة الحسابية باهظة.

لكن المشكلة أعمق من الحمل الحسابي وحده. لاحظ الباحثون أن أغلب في السلاسل الزمنية تتوزّع بشكل شبه منتظم — بمعنى أنها لا تحمل معلومات مفيدة تقريباً. عدد قليل فقط من أزواج الاستعلام-المفتاح يُنتج أنماط انتباه حادة ومركّزة. التوزيع يتّبع نمط الذيل الطويل: حفنة من الاستعلامات «النشطة» تهيمن على المشهد، بينما الأغلبية «خاملة» توزّع انتباهها بالتساوي كأنها ضوضاء خلفية.

هذه الملاحظة هي البصيرة الجوهرية وراء Informer: ما دامت أغلب الاستعلامات خاملة ولا تحمل معلومات مفيدة، فلماذا نحسبها من الأساس؟

افتح في المختبر
معظم الاستعلامات تُنتج انتباهاً شبه منتظم (الذيل «الخامل»). القليل فقط يُنتج أنماطاً حادة وغنية بالمعلومات (الرأس «النشط»). يركّز Informer على النشطة منها فحسب.
تستيقظ التجربة عند وصولك…

الابتكار الأول: الانتباه ذو التفرّق الاحتمالي — ركّز فقط على ما يهمّ

السؤال المحوري هنا: كيف نعرف أيّ الاستعلامات «نشطة» قبل أن نحسب مصفوفة الانتباه الكاملة؟ يجيب Informer بمقياس تفرّق مبني على .

الفكرة بسيطة: إذا وزّع استعلام ما qiq_i انتباهه بالتساوي على جميع المفاتيح، فتوزيعه منتظم ولا يحمل أي معلومة مفيدة. أما إذا ركّز انتباهه على عدد قليل من المفاتيح، فتوزيعه بعيد عن المنتظم — وهذا يعني أنه يحمل إشارة حقيقية. يمكننا قياس هذا الفرق بحساب تباعد كولباك-لايبلر بين توزيع الانتباه الفعلي لذلك الاستعلام والتوزيع المنتظم. كلّما كان التباعد أكبر، كان الاستعلام أهمّ.

بعد إسقاط حدّ ثابت لا يؤثر في الترتيب، يصل الباحثون إلى مقياس تفرّق عملي:

Mˉ(qi,K)=maxj{qikjd}1LKj=1LKqikjd\bar{M}(q_i, K) = \max_j \left\{ \frac{q_i k_j^\top}{\sqrt{d}} \right\} - \frac{1}{L_K} \sum_{j=1}^{L_K} \frac{q_i k_j^\top}{\sqrt{d}}
مقياس تفرّق الاستعلام — أقصى درجة ناقص متوسط الدرجاتلكل استعلام qiq_i نحسب أعلى درجة انتباه حصل عليها مع أي مفتاح، ثم نطرح منها متوسط درجاته مع جميع المفاتيح. فجوة كبيرة تعني أن qiq_i يملك مفتاحاً مهيمناً يركّز عليه بقوة — أي أنه «نشط». فجوة قريبة من الصفر تعني أنه يوزّع انتباهه بالتساوي — أي أنه «خامل». نحتفظ فقط بأعلى uu استعلام وفق هذا المقياس، حيث u=clnLQu = c \cdot \ln L_Q والثابت cc هو معامل أخذ العينات (يُضبط عملياً على 5).

بعد انتقاء أعلى uu استعلام نشط وتجميعها في مصفوفة مختزلة Qˉ\bar{Q}، يصبح الاحتمالي ببساطة تطبيقاً للانتباه التقليدي على تلك الاستعلامات فقط:

A(Q,K,V)=Softmax ⁣(QˉKd)V\mathcal{A}(Q, K, V) = \text{Softmax}\!\left(\frac{\bar{Q} K^\top}{\sqrt{d}}\right) V
الانتباه الذاتي ذو التفرّق الاحتمالي — الاستعلامات النشطة فقط تنتبهالمصفوفة Qˉ\bar{Q} تحتوي على clnLQc \cdot \ln L_Q صف فقط بدلاً من LQL_Q. الاستعلامات «الخاملة» تحصل على قيمة افتراضية هي المتوسط الحسابي لجميع القيم VV. بذلك ينخفض حساب الانتباه من O(L2)O(L^2) إلى O(LlogL)O(L \log L) مع الحفاظ على التفاعلات المهمّة.
افتح في المختبر
بدّل بين الانتباه التقليدي والانتباه ذي التفرّق الاحتمالي. لاحظ كيف يختار ProbSparse الاستعلامات العليا فقط (بالأحمر) ويُسند قيمة افتراضية للبقية (بالرمادي).
تستيقظ التجربة عند وصولك…

الابتكار الثاني: تقطير الانتباه الذاتي — اضغط وأنت تتقدّم

حتى مع خفض التفرّق الاحتمالي لتكلفة كل طبقة على حدة، يظل تكديس عدة طبقات في يتراكم في استهلاك الذاكرة. والسمات المهيمنة الخارجة من كل طبقة ليست سوى جزء صغير من المدخل الأصلي — فما الداعي لتمرير التسلسل كاملاً إلى الطبقة التالية؟

تجيب عملية الانتباه الذاتي في Informer عن هذا السؤال بـتنصيف طول التسلسل بين كل طبقة والتي تليها. بعد كل طبقة انتباه، يمرّ المخرج عبر أحادية البُعد تمزج الخطوات الزمنية المتجاورة، ثم عبر بخطوة 2. النتيجة أن الطبقة تحتفظ بأبرز السمات وتتخلّص مما عداها — كأنك تُلخّص مقالاً طويلاً في نقاط رئيسية، ثم تلخّص النقاط الرئيسية مرة أخرى.

تخيّل البنية كهرم: الطبقة السفلى (الأقرب للمدخل) ترى التسلسل كاملاً بطول LL، والتي فوقها ترى L/2L/2، ثم L/4L/4، وهكذا. كل طبقة تعمل على تسلسل أقصر من سابقتها، فيصبح إجمالي الذاكرة عبر جميع الطبقات JJ متسلسلة هندسية:

Memory=O ⁣(j=0J1L2jlogL2j)=O ⁣((2ϵ)LlogL)\text{Memory} = O\!\left(\sum_{j=0}^{J-1} \frac{L}{2^j} \log \frac{L}{2^j}\right) = O\!\left((2 - \epsilon) L \log L\right)
ذاكرة التقطير — انكماش هندسي عبر الطبقاتبدون التقطير، تكلّف JJ طبقة متراصّة O(JL2)O(J \cdot L^2) بالانتباه التقليدي أو O(JLlogL)O(J \cdot L \log L) بالتفرّق الاحتمالي وحده. مع التقطير، تتقارب المتسلسلة الهندسية نحو 2LlogL2 L \log L تقريباً — أي ما يقارب تكلفة طبقة واحدة بغضّ النظر عن عدد الطبقات.
افتح في المختبر
تابع هرم المرمِّز: كل طبقة تنصّف التسلسل. إجمالي الذاكرة (على اليمين) يتقارب بدلاً من أن يتصاعد مع العمق.
تستيقظ التجربة عند وصولك…

الابتكار الثالث: فاكّ الترميز التوليدي — تنبّأ بكل شيء دفعة واحدة

في المحوِّلات التقليدية، يعمل بأسلوب : يتنبأ بالخطوة الأولى، ثم يُعيد إدخالها ليتنبأ بالثانية، وهكذا خطوة بخطوة. في حالة 480 خطوة مخرجات، يعني ذلك 480 متتابعة. المشكلة ليست البطء فقط، بل إن كل خطأ في التنبؤ ينتقل إلى الخطوة التالية فتتراكم الأخطاء كلّما طال أفق التنبؤ.

Informer يستبدل هذا الأسلوب بـفاكّ ترميز توليدي يُصدر جميع خطوات المخرجات في تمريرة أمامية واحدة. الحيلة كالتالي: بدلاً من البدء من لا شيء، يتلقّى فاكّ الترميز «رمز بداية» مكوّن من الجزء الأخير من التسلسل المعروف (ليوفّر سياقاً محلياً)، تليه أصفار في المواضع المطلوب التنبؤ بها. ثم يملأ فاكّ الترميز كل تلك الأصفار دفعة واحدة مستعيناً بآلية مع خريطة سمات المرمِّز.

تخيّل الأمر كاختبار «أكمل الفراغ»: الطالب يرى مقدّمة النص (رمز البداية) ثم قسماً فارغاً يجب ملؤه (الأصفار)، فيكتب الإجابة بالكامل دفعة واحدة بدلاً من كلمة كلمة.

افتح في المختبر
قارن بين التوليد خطوة بخطوة (حيث تتراكم الأخطاء) والتوليد دفعة واحدة. اضغط «تشغيل» لتشاهد الفرق في تراكم الأخطاء.
تستيقظ التجربة عند وصولك…

تجميع الأجزاء: بنية Informer الكاملة

البنية الكاملة تدمج الابتكارات الثلاثة ضمن إطار مصمَّم للتسلسلات الطويلة:

: كل خطوة زمنية تُحوَّل إلى متجه عبر دمج ثلاثة مكوّنات — إسقاط خطي لقيمتها العددية، و مُتعلَّم، وسمات زمنية (كساعة اليوم ويوم الأسبوع) تزوّد النموذج بمعرفة التقويم.

المُرمِّز: عدة طبقات انتباه ذاتي ذي تفرّق احتمالي، كل منها متبوعة بعملية تقطير (التفاف أحادي + تجميع أقصى) تنصّف التسلسل. رُزم مُرمِّز متوازية بدقّات مختلفة تعزّز المتانة. الخريطة النهائية للسمات هي تمثيل مضغوط ومقطَّر للمدخل.

فاكّ الترميز: يستقبل رمز البداية (ذيل المدخل المعروف) متبوعاً بأصفار كعناصر نائبة. يستخدم انتباهاً ذاتياً مقنَّعاً ذا تفرّق احتمالي (حتى لا تطّلع التنبؤات على الأصفار المستقبلية)، إضافة إلى انتباه متقاطع مع خريطة سمات المرمِّز. ثم يُصدر جميع التنبؤات في تمريرة أمامية واحدة عبر إسقاط خطي نهائي.

افتح في المختبر
استكشف بنية Informer الكاملة. انقر على أي مكوّن لترى كيف يعالج بيانات السلسلة الزمنية من المدخل إلى المخرج.
تستيقظ التجربة عند وصولك…

بالشيفرة: الانتباه ذو التفرّق الاحتمالي خطوة بخطوة

الانتباه الذاتي ذو التفرّق الاحتمالي — المنطق الأساسيpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import torch
import math

def prob_sparse_attention(Q, K, V, sample_factor=5):
    """الانتباه ذو التفرّق الاحتمالي: O(L log L) بدلاً من O(L²)."""
    L_Q, d = Q.shape
    L_K = K.shape[0]
    
    # الخطوة 1: أخذ عيّنة u = c * ln(L_Q) مفاتيح لقياس التفرّق
    u = max(1, int(sample_factor * math.log(L_Q)))
    
    # الخطوة 2: حساب مقياس التفرّق M لكل استعلام
    #   M(q_i) = max_j(q_i · k_j / √d) - mean_j(q_i · k_j / √d)
    scores = Q @ K.T / math.sqrt(d)         # [L_Q, L_K]
    M = scores.max(dim=-1).values - scores.mean(dim=-1)  # [L_Q]
    
    # الخطوة 3: اختيار أعلى u استعلام من حيث التفرّق
    top_idx = M.topk(u).indices               # [u]
    Q_bar = Q[top_idx]                         # [u, d]
    
    # الخطوة 4: حساب الانتباه فقط للاستعلامات المنتقاة
    attn_scores = Q_bar @ K.T / math.sqrt(d)  # [u, L_K]
    attn_weights = torch.softmax(attn_scores, dim=-1)
    
    # الخطوة 5: الاستعلامات النشطة تحصل على مخرج الانتباه
    #           والخاملة تحصل على mean(V) كقيمة افتراضية
    out = V.mean(dim=0).unsqueeze(0).expand(L_Q, -1).clone()
    out[top_idx] = attn_weights @ V            # [u, d]
    
    return out

التجارب: أسرع وأدقّ على الآفاق الطويلة

اختُبر Informer على أربع مجموعات بيانات حقيقية: ETTh1 وETTh2 (درجات حرارة المحوِّلات الكهربائية بتسجيل ساعي)، وETTm1 (بتسجيل كل 15 دقيقة)، وECL (استهلاك الكهرباء لـ 321 عميلاً). جميع التجارب غطّت آفاق تنبؤ تتراوح من 24 إلى 720 خطوة — أبعد بكثير مما جرّبته الأعمال السابقة.

كشفت النتائج عن ثلاث مزايا واضحة. أولاً، على الآفاق الطويلة (168–720 خطوة)، تفوّق Informer باستمرار على جميع النماذج المرجعية — بما فيها LSTMa وDeepAR والمحوِّل التقليدي — في كلا المقياسين: متوسط مربع الخطأ (MSE) ومتوسط الخطأ المطلق (MAE). وكان التفوّق أبرز ما يكون على أطول الآفاق، حيث انهار أداء المحوِّلات التقليدية بسرعة. ثانياً، استهلاك الذاكرة في Informer يتبع O(LlogL)O(L \log L) مقابل O(L2)O(L^2)، ما أتاح له التعامل مع تسلسلات أطول 5–10 مرات مما يستوعبه المحوِّل التقليدي. ثالثاً، فاكّ الترميز التوليدي جعل أسرع 3–4 مرات بتجنّب التوليد خطوة بخطوة.

افتح في المختبر
قارن متوسط مربع الخطأ عبر آفاق التنبؤ المختلفة. Informer يحافظ على دقّته بينما تنهار النماذج الأخرى.
تستيقظ التجربة عند وصولك…

الإرث: من Informer إلى حديقة محوِّلات السلاسل الزمنية الحديثة

  1. 2017

    المحوِّل (فازواني وآخرون)

    قدّم آلية الانتباه الذاتي بتعقيد $O(L^2)$. أحدث نقلة نوعية في معالجة اللغة الطبيعية لكنه لم يُصمَّم لتسلسلات زمنية طويلة.

  2. 2019

    LogTrans والمحوِّل المتفرّق

    محاولات مبكّرة لتحقيق انتباه فعّال عبر أنماط تفرّق ثابتة أو أقنعة لوغاريتمية. نجحت في خفض التعقيد لكنها اعتمدت أنماطاً مصنوعة يدوياً وليس انتقاءً مُوجَّهاً بالبيانات.

  3. 2021

    Informer (هذه الورقة)

    انتباه متفرّق مُوجَّه بالبيانات عبر ProbSparse، وتقطير للانتباه الذاتي يحقّق كفاءة في الذاكرة، وفاكّ ترميز توليدي يُسرّع الاستدلال. جائزة أفضل ورقة في AAAI.

  4. 2021

    Autoformer (وو وآخرون)

    استعاض عن انتباه حاصل الضرب النقطي بالارتباط الذاتي لالتقاط الدورية الموسمية، وأدخل تفكيكاً صريحاً للاتجاه والموسمية داخل بنية الشبكة.

  5. 2022

    DLinear (زينغ وآخرون)

    نموذج مرجعي مثير للجدل: طبقة خطية بسيطة تفوّقت على كثير من نماذج المحوِّلات في المقاييس المعيارية، ما أثار تساؤلاً جوهرياً: هل نحتاج الانتباه أصلاً للتنبؤ بالسلاسل الزمنية؟

  6. 2023

    PatchTST (ني وآخرون)

    قطّع السلسلة الزمنية إلى رُقع على غرار رموز الصور، فقلّص طول التسلسل بشكل ملحوظ وأتاح نمذجة مستقلة لكل قناة. أظهر أن التعامل مع السلاسل الزمنية كالصور يُطلق إمكانات المحوِّل.

فتح Informer الباب أمام استخدام المحوِّلات في التنبؤ الزمني الطويل، لكن الميدان تجاوزه بسرعة. Autoformer أظهر أن الانحيازات الاستقرائية المخصّصة للمجال (كتفكيك الموسمية) قد تتفوق على الانتباه المتفرّق العام. DLinear طرح تساؤلاً حاداً: هل تضيف المحوِّلات قيمة فعلية في التنبؤ البسيط؟ وPatchTST بيّن أن طريقة تمثيل المدخلات لا تقلّ أهمية عن آلية الانتباه نفسها. ومع ذلك، كل هذه النماذج ما كانت لتظهر لولا أن Informer أثبت أولاً أن المحوِّلات قادرة على التنبؤ بعيد المدى — فتحوّل السؤال من «هل تستطيع ذلك؟» إلى «ما أفضل طريقة للقيام به؟».

المرجعZhou, Zhang, Peng, Zhang, Li, Xiong, Zhang. Informer: Beyond Efficient Transformer for Long Sequence Time Series Forecasting. AAAI, 2021.

مصطلحات هذه الورقة