السلاسل الزمنية2024متوسط11 دقيقة قراءة

نموذج أساسي بفاكّ ترميز فقط للتنبؤ بالسلاسل الزمنية

A Decoder-Only Foundation Model for Time Series Forecasting

Das, A. · Kong, W. · Sen, R. · Zhou, Y. — ICML

المشكلة

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

الإسهام

يقدّم الباحثون TimesFM: محوِّل بفاكّ ترميز فقط يضم 200 مليون معامل، مُدرَّب مسبقاً على نحو 100 مليار نقطة زمنية تمزج بين بيانات واقعية (اتجاهات بحث Google وإحصاءات صفحات ويكيبيديا) وأنماط مُصطنعة (عمليات ARMA، موسمية، اتجاهات عامة). الفكرة أن النموذج يتعامل مع مقاطع السلسلة الزمنية باعتبارها رقعاً تُشبه الرموز في النماذج اللغوية، ويعتمد انتباهاً سببياً برقعة إدخال بطول 32 ورقعة إخراج بطول 128، ما يتيح له التنبؤ بأي أفق زمني عبر فكّ ترميز بعدد أقل من الخطوات. أداؤه دون أمثلة على معايير Monash وDarts وETT يُضاهي أو يتجاوز أفضل النماذج المُشرَف عليها والمُدرَّبة خصيصاً على كل مجموعة بيانات — بتكلفة لا تُقارن بتكلفة النماذج اللغوية الكبيرة.

الأثر

أثبت TimesFM أن فكرة النموذج الأساسي ليست حكراً على اللغة والرؤية الحاسوبية، بل تمتد إلى السلاسل الزمنية أيضاً. بيّن أن نموذجاً صغيراً نسبياً (200 مليون معامل) مُدرَّباً من الصفر على بيانات زمنية فحسب يتفوّق بفارق واسع على نماذج لغوية ضخمة أُعيد توظيفها للتنبؤ مثل GPT-3. فتح هذا العمل الباب أمام موجة كاملة من النماذج الأساسية للسلاسل الزمنية — جاء بعده Chronos وMoirai وغيرهما — ورسّخ وصفة التقسيم إلى رقع مع التدريب بفاكّ ترميز فقط بوصفها النهج المعياري في هذا المجال.

تخيّل خبير أرصاد جوية مُخضرماً درس آلاف الخرائط المناخية من كل قارة: رياح موسمية استوائية، جبهات باردة قطبية، موجات حرّ صحراوية. حين تُقدَّم له خريطة طقس لمدينة لم يزرها قط، يظلّ قادراً على توقّع طقس الأيام القادمة — لأنه يتعرّف على الأنماط لا على المدينة ذاتها.

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

المشكلة: كل مجموعة بيانات تحتاج نموذجها الخاص

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

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

السؤال المنطقي إذن: هل يمكن بناء نموذج أساسي للسلاسل الزمنية كما بُني GPT للنصوص؟ التحدي أن السلاسل الزمنية لا تمتلك مفردات ثابتة ولا قواعد نحوية محددة، وتتراوح دقّاتها الزمنية تراوحاً هائلاً — من قراءات حسّاسات كل 10 دقائق إلى أرقام الناتج المحلي السنوية.

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

الفكرة الأولى: الرقع هي رموز السلاسل الزمنية

في النماذج اللغوية، يُقسَّم النص إلى — وحدات فرعية يعالجها النموذج واحدة تلو الأخرى. TimesFM يتبع المبدأ نفسه مع السلاسل الزمنية: يُجزّئ المدخلات إلى رقع غير متراكبة بطول ثابت (32 نقطة زمنية افتراضياً). يمكن تشبيه كل رقعة بـ«كلمة» في عالم السلاسل الزمنية.

لماذا التقسيم إلى رقع؟ لثلاثة أسباب. أولاً، الضغط: سلسلة من 512 نقطة تتحوّل إلى 16 رمزاً فقط، فتصبح تكلفة أقل بكثير. ثانياً، كل رقعة تلتقط بنية محلية — كدورة يومية أو إيقاع أسبوعي — وهو أمر تعجز عنه نقطة زمنية منفردة. ثالثاً، أثبت PatchTST سابقاً أن هذا التقسيم يُحسِّن دقّة التنبؤ بصورة ملموسة.

تمرّ كل رقعة عبر كتلة متبقية للإدخال — شبكة MLP صغيرة مزوّدة بوصلة تجاوز — فتُنتج متجهاً بحجم model_dim (يساوي 1280 في نموذج 200 مليون معامل). بعد ذلك تُضاف ليعرف النموذج ترتيب الرقع. الناتج النهائي هو تسلسل من متجهات جاهزة للدخول إلى المُحوِّل.

tj=InputResidualBlock(y~j(1m~j))+PEjt_j = \text{InputResidualBlock}(\tilde{y}_j \odot (1 - \tilde{m}_j)) + PE_j
بناء رمز الإدخال — الرقعة + التقنيع + الموضعتُضرب كل رقعة ỹⱼ عنصرياً في القناع المعكوس لإلغاء المواضع المحشوّة بالأصفار، ثم تمرّ عبر كتلة متبقية لتوليد متجه بحجم model_dim، وأخيراً يُضاف إليها تشفير الموضع PEⱼ.
افتح في المختبر
اسحب المنزلق لتغيير طول الرقعة وشاهد كيف تُقسَّم السلسلة الزمنية.
تستيقظ التجربة عند وصولك…

الفكرة الثانية: التدريب بفاكّ ترميز فقط لتنبؤ مرن

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

الحل الذي يقدّمه TimesFM هو اعتماد بنية فقط — المنهج نفسه الذي يقوم عليه GPT-2. في هذه البنية، كل رمز إخراج لا يلتفت إلا إلى الرموز التي سبقته (وهو ما يُعرف بـ السببي). النتيجة أن النموذج يتعلّم التنبؤ بالرقعة التالية انطلاقاً من جميع الرقع السابقة، ووقت الاستدلال يستطيع توليد رقع مستقبلية ذاتية الانحدار بأي عدد مطلوب.

الفرق الجوهري بين TimesFM وGPT يكمن في طول رقعة الإخراج. النماذج اللغوية تولّد رمزاً واحداً في كل خطوة، بينما TimesFM يولّد رقعة إخراج من 128 نقطة زمنية في الخطوة الواحدة — أي 4 أضعاف طول رقعة الإدخال. عملياً، التنبؤ بـ 512 نقطة مستقبلية لا يحتاج سوى 4 خطوات بدلاً من 16. وكلّما قلّت الخطوات، قلّ تراكم الأخطاء وتسارع الاستدلال.

افتح في المختبر
قارن عدد خطوات التوليد الذاتي المطلوبة لأطوال رقع إخراج مختلفة.
تستيقظ التجربة عند وصولك…
oj=StackedTransformer((t1,m˙1),,(tj,m˙j))o_j = \text{StackedTransformer}\bigl((t_1, \dot{m}_1), \ldots, (t_j, \dot{m}_j)\bigr)
ناتج المحوِّل السببي — كل رقعة لا ترى إلا الرقع السابقة لهايعالج المحوِّل المتراكب جميع رموز الإدخال عبر انتباه ذاتي سببي. رمز الإخراج oⱼ يختزن المعلومات من الرقع 1 إلى j مع الالتزام بالقناع السببي.
y^pj+1:pj+h=OutputResidualBlock(oj)\hat{y}_{pj+1:pj+h} = \text{OutputResidualBlock}(o_j)
تحويل الإخراج — كل ناتج من المحوِّل يتنبأ برقعة إخراجيمرّ رمز الإخراج oⱼ عبر كتلة متبقية أخرى فيُنتج h = 128 نقطة زمنية مستقبلية. هذا هو الفرق الجوهري عن النماذج اللغوية التي لا تولّد سوى رمز واحد في كل خطوة.

البنية: فاكّ الترميز المُرقَّع بالتفصيل

بنية TimesFM الكاملة تمرّ بثلاث مراحل متتالية، كأنها خط تجميع في مصنع:

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

المرحلة الثانية — المُحوِّل المتراكب: 20 طبقة من المحوِّل تستخدم (16 رأساً) إلى جانب شبكات تغذية أمامية. بُعد النموذج 1280، وكل طبقة تطبّق . هذه الكتلة تحتضن الجزء الأكبر من المعاملات البالغة 200 مليون.

المرحلة الثالثة — تحويل الإخراج: كل ناتج من المحوِّل يمرّ عبر كتلة متبقية للإخراج تحوّله من model_dim إلى رقعة إخراج تضم 128 نقطة زمنية.

دالة الخسارة في التدريب بسيطة ومباشرة: محسوباً على جميع رقع الإخراج في الدفعة التدريبية. لا حيل معقّدة — مجرد مقارنة بين القيم المتنبَّأ بها والقيم الفعلية.

افتح في المختبر
استكشف المراحل الثلاث لبنية TimesFM بشكل تفاعلي.
تستيقظ التجربة عند وصولك…
L=1Nj=1NMSE(y^pj+1:pj+h,  ypj+1:pj+h)\mathcal{L} = \frac{1}{N} \sum_{j=1}^{N} \text{MSE}\bigl(\hat{y}_{pj+1:pj+h},\; y_{pj+1:pj+h}\bigr)
خسارة التدريب — متوسط مربعات الأخطاء على جميع رقع الإخراجلكل رقعة من رقع الإدخال الـ N، يتنبأ النموذج بـ h = 128 نقطة مستقبلية. الخسارة هي متوسط MSE عبر جميع الرقع في الدفعة. في حال التنبؤ الاحتمالي، يمكن استبدال MSE برؤوس كَمّيّة — لكن الورقة تركّز على التنبؤ النقطي.

الوقود: 100 مليار نقطة زمنية

أي نموذج أساسي لن يتجاوز أداؤه جودة البيانات التي تدرَّب عليها. يستمدّ TimesFM بياناته من ثلاثة مصادر رئيسية:

اتجاهات بحث Google (نحو 0.5 مليار نقطة): بيانات الاهتمام بالبحث عبر الزمن لنحو 22 ألف استعلام شائع، بدقّات ساعية ويومية وأسبوعية وشهرية تغطّي الفترة من 2007 إلى 2022.

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

(نحو 6 مليارات نقطة): 3 ملايين سلسلة زمنية مُولَّدة، طول كلٍّ منها 2048 نقطة، تمزج عمليات ARMA بأنماط موسمية (جيبية وجيب تمامية) واتجاهات (خطية وأُسّية) ودوال خطوة. الغرض من هذه البيانات ضمان أن يرى النموذج دقّات زمنية وأنماطاً قلّ تمثيلها في البيانات الحقيقية.

تُكمل مجموعات بيانات واقعية إضافية (M4 والكهرباء والمرور والطقس) هذا المزيج. يسحب مُحمِّل التدريب 80% من البيانات الحقيقية و20% من المُصطنعة، مع توزيع متساوٍ بين مجموعات الدقّات الزمنية المختلفة.

افتح في المختبر
استكشف تكوين مجموعة بيانات التدريب المسبق لـ TimesFM وحجمها.
تستيقظ التجربة عند وصولك…

الفكرة في الكود

المنطق الأساسي لـ TimesFM — التقسيم إلى رقع، المحوِّل السببي، تنبؤ الإخراجpython

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

import numpy as np

def patchify(series, patch_len=32):
    """قسِّم السلسلة الزمنية إلى رقع غير متراكبة."""
    n = len(series) // patch_len
    patches = series[:n * patch_len].reshape(n, patch_len)
    return patches

def input_residual_block(patch, W1, W2, b1, b2):
    """شبكة MLP مع وصلة تجاوز — تحوّل الرقعة إلى متجه بحجم model_dim."""
    h = np.maximum(0, patch @ W1 + b1)  # طبقة مخفية بتنشيط ReLU
    out = h @ W2 + b2                     # طبقة خطية
    return out + patch @ W_skip            # وصلة التجاوز

def timesfm_forward(series, model, patch_len=32, output_len=128):
    """تمريرة أمامية واحدة لـ TimesFM."""
    patches = patchify(series, patch_len)

    # المرحلة 1: الرقع ← رموز الإدخال
    tokens = []
    for j, patch in enumerate(patches):
        token = input_residual_block(patch, *model.input_params)
        token += model.pos_encoding[j]     # أضف تشفير الموضع
        tokens.append(token)

    # المرحلة 2: محوِّل سببي — كل رمز لا يرى إلا الرموز السابقة
    outputs = model.causal_transformer(tokens)  # (N, model_dim)

    # المرحلة 3: كل رمز إخراج ← تنبؤ بـ output_len نقطة تالية
    forecasts = []
    for o in outputs:
        pred = output_residual_block(o, *model.output_params)
        forecasts.append(pred)              # الشكل: (output_len,)

    return forecasts  # آخر تنبؤ = التنبؤ الفعلي بالمستقبل

# الفكرة الجوهرية: output_len (128) > patch_len (32)
# ← خطوات ذاتية الانحدار أقل لتغطية الأفق الكامل
# ← تراكم أخطاء أقل من التوليد رمزاً بعد رمز

النتائج: نموذج واحد ينافس أفضل المتخصصين

جرى تقييم TimesFM بدون أمثلة على ثلاث مجموعات — أي مجموعات بيانات لم يطّلع عليها أثناء التدريب قط:

أرشيف Monash (18 مجموعة بيانات): يشمل مجالات متنوّعة من التمويل والطقس والمرور، بدقّات زمنية تمتد من الدقائق إلى السنوات. حقّق TimesFM أفضل متوسط هندسي لخطأ ، متفوّقاً على نماذج مُشرَف عليها مثل DeepAR وN-BEATS، ومتقدّماً على llmtime (المبني على GPT-3) بأكثر من 25%.

Darts (8 مجموعات بيانات): سلاسل أحادية المتغير بأنماط موسمية لافتة. جاء أداء TimesFM ضمن هامش الدلالة الإحصائية لأفضل النماذج (ARIMA الموسمي وllmtime)، رغم أنه يعمل دون أي أمثلة مسبقة.

ETT (4 مجموعات بيانات، بآفاق 96 و192): بيانات حرارة محوِّلات الكهرباء. ضاهى TimesFM أو تفوّق على PatchTST — وهو نموذج متطوّر للتنبؤ بعيد المدى ومُدرَّب خصيصاً على هذه المجموعات.

كل هذه النتائج جاءت من نموذج 200 مليون معامل نفسه دون أي خاص بالمهمة. واستغرق تدريبه يومين فحسب على 16 نواة TPUv5e.

افتح في المختبر
قارن أداء TimesFM بدون أمثلة مع النماذج المُشرَف عليها.
تستيقظ التجربة عند وصولك…

دراسة الاستئصال: ماذا يُسهم كل قرار تصميمي

تتضمن الورقة دقيقة تبرّر كل قرار تصميمي رئيسي:

التوسّع (17 مليون → 70 مليون → 200 مليون): يتحسّن الأداء بشكل مطّرد مع زيادة حجم الحوسبة (FLOPs)، وفق نمط الشبيه بقوانين التوسّع في النماذج اللغوية الكبيرة. هذا يُلمّح إلى أن نماذج أكبر حجماً ستحقّق نتائج أفضل.

طول رقعة الإخراج (8 → 128): رقع الإخراج الأطول تُقلّل الخطأ باطّراد في مهام التنبؤ بعيد المدى. الانتقال من طول 8 إلى 128 على مجموعات ETT يُظهر تحسّناً رتيباً واضحاً، ما يؤكّد أن تقليل خطوات التوليد ذاتي الانحدار يفيد فعلاً.

طول رقعة الإدخال (8 → 128): النقطة المثلى تقع عند 16–32. الرقع القصيرة جداً (8) تفقد البنية المحلية، والرقع الطويلة جداً (128) تدفع النموذج نحو بنية المُرمِّز-فاكّ الترميز التقليدية فيخسر مزايا التدريب بفاكّ ترميز فقط.

البيانات المُصطنعة: حذف هذه البيانات يُضعف الأداء على الدقّات الزمنية قليلة التمثيل (الفصلية والسنوية وكل 10 دقائق). أما على البيانات الساعية جيدة التمثيل (ETTh) فلا يكاد يظهر فرق — لكن على بيانات 15 دقيقة (ETTm)، تُحدث البيانات المُصطنعة فرقاً ملموساً.

ما الذي فتحه TimesFM

  1. 2022

    PatchTST — التقسيم إلى رقع للسلاسل الزمنية

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

  2. 2023

    llmtime — النماذج اللغوية الكبيرة كأدوات تنبؤ

    أظهر أن GPT-3 يستطيع التنبؤ دون أمثلة مسبقة عبر تحويل قيم السلاسل الزمنية إلى نص. الفكرة واعدة لكنها مكلفة، وكثيراً ما تغلّبت عليها نماذج متخصصة أصغر حجماً.

  3. 2024

    TimesFM — أول نموذج أساسي عملي للسلاسل الزمنية

    نموذج بفاكّ ترميز فقط يضم 200 مليون معامل، تدرَّب مسبقاً على 100 مليار نقطة زمنية. أداؤه دون أمثلة يُضاهي أحدث النماذج المُشرَف عليها عبر معايير Monash وDarts وETT.

  4. 2024

    Chronos — ترميز قيم السلاسل الزمنية إلى رموز

    نهج أمازون: تكميم قيم السلاسل الزمنية إلى حاويات منفصلة ثم تدريب نموذج مبني على T5 على الرموز الناتجة. يُكمّل نهج TimesFM القائم على الرقع بدلاً من منافسته.

  5. 2024

    Moirai وغيره — موجة النماذج الأساسية

    ظهرت نماذج أساسية متعددة للسلاسل الزمنية. Moirai من Salesforce يتعامل مع التنبؤ متعدد المتغيرات. المنهجية التي رسّخها TimesFM أصبحت هي المعيار السائد في المجال.

الإرث الحقيقي لـ TimesFM هو إثبات المفهوم: بالإمكان فعلاً بناء نموذج أساسي لـالسلاسل الزمنية يُعمّم عبر مجالات ودقّات زمنية وآفاق تنبؤ مختلفة. الوصفة واضحة: قسِّم المدخلات إلى رقع، واستخدم محوِّلاً بـفاكّ ترميز فقط، ودرِّبه على بيانات مختلطة ضخمة — هذه الوصفة أصبحت نقطة الانطلاق لكل عمل جديد في هذا الحقل. وكما أثبت BERT أن التدريب المسبق ينجح في معالجة اللغة الطبيعية، أثبت TimesFM أنه ينجح في التنبؤ بالسلاسل الزمنية.

المرجعDas, Kong, Sen, Zhou. A Decoder-Only Foundation Model for Time Series Forecasting. ICML, 2024.

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