Time Series Forecasting2020متوسط12 دقيقة قراءة

DeepAR: التنبؤ الاحتمالي باستخدام الشبكات التكرارية الذاتية الانحدار

DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks

Salinas, D. · Flunkert, V. · Gasthaus, J. · Januschowski, T. — International Journal of Forecasting

المشكلة

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

الإسهام

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

الأثر

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

تخيّل خبير أرصاد جوية أمضى 20 سنة يدرس طقس كل المدن في المنطقة. حين تأتيه مدينة جديدة تماماً وتسأله عن طقس الغد، لا يحتار — بل يقول فوراً: «هذا النمط يشبه المدن الساحلية في الربيع.» والأهم أنه لا يعطيك رقماً واحداً، بل يقول: «الأرجح 21 درجة، لكن توقّع ما بين 18 و24.»

التنبؤ التقليدي يشبه أن توظّف خبيراً مستقلاً لكل مدينة لا يعرف إلا سجلاتها. أما DeepAR فهو ذلك الخبير المخضرم الذي تعلّم من جميع المدن معاً: يكتشف الأنماط المشتركة، يتعامل مع المدن الجديدة بسلاسة، ويعطيك دائماً نطاقاً — لا رقماً يتيماً.

المشكلة: نموذج لكل سلسلة لا يصمد أمام التوسّع

لنأخذ مثالاً واقعياً: بائع تجزئة كبير يتتبّع الطلب على 500,000 منتج عبر 1,000 فرع. الطرق التقليدية كـ ARIMA أو التمهيد الأُسّي تبني نموذجاً منفصلاً لكل سلسلة زمنية على حدة. وهذا يُسبّب ثلاث مشكلات أساسية:

التوسّع: بناء وصيانة نصف مليون نموذج عبء تشغيلي ضخم.

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

البداية الباردة: المنتج الجديد ليس له تاريخ أصلاً، فالنماذج المنفردة لا تملك ما تبدأ منه.

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

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

الفكرة: نموذج واحد لكل السلاسل يُخرج توزيعات احتمالية

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

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

2. مُخرَج احتمالي: بدل أن يتنبأ النموذج برقم واحد، يُخرج معاملات توزيع احتمالي عند كل خطوة زمنية. إن كانت البيانات مستمرة، يُخرج المتوسط μ والانحراف المعياري σ لتوزيع غاوسي. وإن كانت بيانات عدّ، يُخرج معاملات التوزيع ذي الحدين السالب. النتيجة: توزيع تنبؤي كامل لا مجرد رقم وحيد.

البنية : في كل خطوة زمنية، يأخذ النموذج الملاحظة السابقة والمتغيرات المصاحبة، يمرّرها عبر LSTM، ويُخرج معاملات التوزيع. تخيّلها كسلسلة حلقات: كل حلقة تستخدم ناتج الحلقة السابقة لتُنتج التنبؤ التالي.

البنية: كيف تتعاون LSTM مع دالة الأرجحية

في كل خطوة زمنية t، يمرّ DeepAR بأربع مراحل:

الخطوة 1 — تجميع المُدخلات: نأخذ الملاحظة السابقة z(t−1) مع المتغيرات المصاحبة x(t) — وهي سمات زمنية كيوم الأسبوع والشهر والعطلات، إضافة إلى أي سمات خاصة بالعنصر — مع السابقة h(t−1).

الخطوة 2 — عبر LSTM: نُدخل كل ذلك إلى شبكة LSTM متعددة الطبقات، فتُنتج حالة خفية جديدة h(t). فكّر في الحالة الخفية كذاكرة مضغوطة تلخّص كل ما رآه النموذج حتى الآن عن هذه السلسلة.

الخطوة 3 — إنتاج معاملات التوزيع: نُمرِّر h(t) عبر طبقتين كاملتي الاتصال. في حالة مثلاً: طبقة تُخرج μ(t) وهو المتوسط المتوقع، وطبقة تُخرج σ(t) وهو الانحراف المعياري، ويمرّ عبر دالة softplus لضمان أنه موجب دائماً.

الخطوة 4 — حساب : الأرجحية ℓ(z(t) | θ(t)) تقيس: ما مدى توافق القيمة الحقيقية z(t) مع التوزيع الذي توقّعه النموذج؟ أثناء نُعظِّم هذه الأرجحية — أو بصياغة مكافئة، نُصغِّر اللوغاريتم السالب لها.

افتح في المختبر
استكشف بنية DeepAR: انقر على أي مرحلة لتتبّع تدفق البيانات من المُدخلات عبر LSTM وصولاً إلى معاملات التوزيع.
تستيقظ التجربة عند وصولك…
hi,t=LSTM ⁣(hi,t1,  zi,t1,  xi,t)h_{i,t} = \text{LSTM}\!\left(h_{i,t-1},\; z_{i,t-1},\; \mathbf{x}_{i,t}\right)
تكرار LSTM — بناء الحالة الخفيةفي كل خطوة تستقبل LSTM ثلاثة مُدخلات: الحالة الخفية السابقة، والقيمة المُلاحظة السابقة، والمتغيرات المصاحبة الحالية. تُنتج حالة خفية جديدة تختزل فيها كل ما رأته من تاريخ السلسلة حتى هذه اللحظة. من هذه الحالة الخفية يُشتق التوزيع المتوقع عند الزمن t.
θi,t=θ ⁣(hi,t,Θ),zi,t ⁣(θi,t)\theta_{i,t} = \theta\!\left(h_{i,t},\, \Theta\right), \qquad z_{i,t} \sim \ell\!\left(\cdot \mid \theta_{i,t}\right)
إخراج معاملات التوزيعتمرّ الحالة الخفية h عبر طبقات إسقاط مُتعلَّمة (بمعاملات Θ) لتُنتج معاملات التوزيع θ. في حالة التوزيع الغاوسي مثلاً، هذه المعاملات هي μ وσ. بعدها تُعامَل الملاحظة z(t) على أنها عيّنة مسحوبة من هذا التوزيع.

التدريب: تعظيم الأرجحية باستخدام التلقين القسري

يُدرَّب DeepAR عبر تعظيم لوغاريتم الأرجحية على البيانات المُلاحظة. دالة الخسارة تأخذ الشكل التالي:

L=i=1Nt=t0Tlog ⁣(zi,t  |  θi,t)\mathcal{L} = \sum_{i=1}^{N} \sum_{t=t_0}^{T} \log \ell\!\left(z_{i,t} \;\middle|\; \theta_{i,t}\right)
هدف التدريب — لوغاريتم الأرجحيةنجمع لوغاريتم الأرجحية على كل السلاسل N وكل الخطوات الزمنية من t₀ إلى T. الهدف أن يتعلّم النموذج وضع احتمال عالٍ على القيم التي حدثت فعلاً. تصغير سالب هذا التعبير يعادل تعظيم الأرجحية.

أثناء التدريب، يعتمد النموذج على ما يُعرف بـ****: في كل خطوة زمنية، يتلقّى النموذج القيمة الحقيقية السابقة z(t−1) كمُدخل — لا تنبؤه هو. الأمر يشبه طالباً يتدرّب ومعه ورقة الإجابات: يرى دائماً الجواب الصحيح للخطوة السابقة، فيتعلّم أسرع وبثبات أكبر.

لكن عند لا توجد قيم مستقبلية حقيقية. هنا يضطر النموذج لاستخدام عيّناته المُولَّدة كمُدخلات — وهذا يخلق فجوة جوهرية بين بيئة التدريب وبيئة التشغيل الفعلي. هذا تحدٍّ معروف في ، ويتعامل معه DeepAR باختيار نوافذ تدريب عشوائية من السلاسل لتقليل هذا الأثر.

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

الاستدلال: كيف تُبنى التنبؤات بمسارات مونت كارلو

عند الاستدلال، يبني DeepAR تنبؤاته عبر أخذ عيّنات مونت كارلو. الخطوات كالتالي:

  1. نُمرِّر التاريخ المعروف (نطاق التهيئة) عبر LSTM لبناء الحالة الخفية — بالضبط كما نفعل في التدريب.

  2. عند أول خطوة تنبؤ، نسحب عيّنة من التوزيع المتوقع: z̃(t₀) ~ Gaussian(μ(t₀), σ(t₀)).

  3. نُدخل تلك العيّنة كقيمة سابقة للخطوة التالية — بدل الملاحظة الحقيقية التي لا نملكها بعد.

  4. نكرّر ذلك لكل خطوة حتى نهاية أفق التنبؤ.

  5. نُعيد العملية كاملة K مرة (مثلاً K=100) فنحصل على K مسار عيّنة.

كل مسار هو سيناريو مستقبلي محتمل. حين نجمع المسارات الـ K معاً، نحصل على تقريب تجريبي للتوزيع التنبؤي الكامل. من هذه المسارات نستطيع حساب أي نريده (P10 أو P50 أو P90)، أو فترات ثقة، أو قيم متوقعة — حسب ما يحتاجه نظام اتخاذ القرار.

افتح في المختبر
شاهد كيف تتراكم 100 مسار عيّنة لتبني تنبؤاً احتمالياً. كل مسار يرسم سيناريو مختلفاً، ومعاً تكشف المسارات عن حجم عدم اليقين.
تستيقظ التجربة عند وصولك…

أدوات عملية: تطبيع المقياس وتضمينات العناصر

في الواقع العملي تظهر مشكلتان يعالجهما DeepAR بحلول بسيطة وفعّالة:

تطبيع المقياس: المنتج «أ» قد يبيع 10,000 وحدة يومياً بينما المنتج «ب» يبيع وحدتين فقط. لو أدخلنا القيم الخام، ستسيطر السلاسل الكبيرة على التدريب وتبتلع إشارة السلاسل الصغيرة. الحل: يقسم DeepAR كل سلسلة على معامل مقياس v_i — عادةً متوسط قيمها المطلقة في نطاق التهيئة — فتتعلّم الشبكة الأنماط في فضاء مُطبَّع، ثم تُعاد التنبؤات إلى مقياسها الأصلي. بهذه الطريقة تستطيع شبكة واحدة التعامل مع سلاسل تختلف أحجامها بمراتب عديدة.

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

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

كيف تختار دالة الأرجحية المناسبة

من أقوى نقاط تصميم DeepAR أن دالة الأرجحية قابلة للاستبدال بسهولة. البنية الأساسية للشبكة لا تتغيّر — كل ما يتغيّر هو طبقة الإخراج ودالة الخسارة:

الأرجحية الغاوسية — تناسب البيانات المستمرة كدرجة الحرارة والأسعار واستهلاك الطاقة. الشبكة تُخرج μ وσ، ودالة الخسارة هي اللوغاريتم السالب لكثافة التوزيع الغاوسي عند القيمة الحقيقية.

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

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

Gauss(zμ,σ)=12πσexp ⁣((zμ)22σ2)\ell_{\text{Gauss}}(z \mid \mu, \sigma) = \frac{1}{\sqrt{2\pi}\,\sigma} \exp\!\left(-\frac{(z - \mu)^2}{2\sigma^2}\right)
الأرجحية الغاوسية — للبيانات الحقيقية القيمهذه كثافة الاحتمال لملاحظة القيمة z حين يتوقع النموذج متوسطاً μ وانحرافاً معيارياً σ. الشبكة تتعلّم ضبط μ وσ بحيث تقع القيم الحقيقية في مناطق كثافة عالية — أي أن التنبؤات دقيقة وتقدير عدم اليقين مُعايَر.

الفكرة مُترجمة إلى كود

التمرير الأمامي في DeepAR — خطوة تدريب بأرجحية غاوسيةpython

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

import numpy as np

def deepar_forward(lstm, z_prev, x_t, h_prev, W_mu, W_sigma):
    """خطوة زمنية واحدة في DeepAR: مُدخلات → LSTM → معاملات التوزيع."""
    # ندمج القيمة السابقة مع المتغيرات المصاحبة والتضمين الاختياري
    inp = np.concatenate([z_prev, x_t])

    # تُنتج LSTM حالة خفية جديدة (ذاكرة مضغوطة)
    h_t = lstm.forward(h_prev, inp)          # الشكل: (hidden_dim,)

    # نُسقط الحالة الخفية على معاملات التوزيع
    mu = W_mu @ h_t                           # المتوسط المتوقع
    sigma = softplus(W_sigma @ h_t)           # الانحراف المعياري (دائماً > 0)

    return h_t, mu, sigma

def deepar_train_loss(model, series, covariates):
    """حساب خسارة اللوغاريتم السالب للأرجحية على سلسلة زمنية واحدة."""
    loss = 0.0
    h = np.zeros(model.hidden_dim)            # الحالة الخفية الأولية

    for t in range(1, len(series)):
        h, mu, sigma = deepar_forward(
            model.lstm,
            z_prev=series[t-1:t],              # تلقين قسري: نُدخل القيمة الحقيقية
            x_t=covariates[t],
            h_prev=h,
            W_mu=model.W_mu,
            W_sigma=model.W_sigma,
        )
        # اللوغاريتم السالب للأرجحية الغاوسية
        loss += 0.5 * np.log(2 * np.pi * sigma**2) + (series[t] - mu)**2 / (2 * sigma**2)

    return loss / (len(series) - 1)

# عند الاستدلال: نستبدل series[t-1] بعيّنة من Gaussian(mu, sigma).
# نكرّر K مرة → K مسار عيّنة → توزيع تنبؤي تجريبي.

النتائج: أداء متفوّق على مجموعات بيانات واقعية

اختُبر DeepAR على عدة مجموعات بيانات كبيرة تغطي الطلب على التجزئة وقطع غيار السيارات واستهلاك الكهرباء، وكانت النتائج لافتة:

تحسّن بنحو 15% في خسارة المئين المُرجَّحة مقارنة بأفضل الطرق السائدة كـ ARIMA والتمهيد الأُسّي والموسمي الساذج، وذلك على معظم مجموعات البيانات.

بيانات الكهرباء (370 سلسلة ساعية): تفوّق DeepAR بفارق واضح على الطرق التقليدية، وكان الفارق أوضح في الآفاق الزمنية الطويلة حيث تزداد أهمية الأنماط المشتركة بين السلاسل.

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

بيانات حركة المرور (862 سلسلة إشغال طرق): نجح DeepAR في التقاط الموسمية اليومية والأسبوعية المشتركة بين المستشعرات، وأنتج نطاقات عدم يقين مُعايَرة جيداً.

الخلاصة المهمة: نموذج شامل واحد تفوّق باستمرار على مجموعة من النماذج المتخصصة المبنية لكل سلسلة على حدة — مع حاجة أقل بكثير للضبط اليدوي.

DeepAR من منظور المُرمِّز وفاكّ الترميز

يمكن فهم DeepAR عبر إطار المُرمِّز وفاكّ الترميز المعروف في نماذج التسلسل إلى تسلسل:

نطاق التهيئة — أي الملاحظات التاريخية — يلعب دور : شبكة LSTM تقرأ التاريخ المعروف وتُراكم السياق في حالتها الخفية. بنهاية هذه المرحلة تكون الحالة الخفية ملخصاً مضغوطاً لكل ما يعرفه النموذج عن هذه السلسلة.

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

ما الذي مهّد له DeepAR

  1. 2017

    DeepAR

    شبكة تكرارية ذاتية الانحدار شاملة للتنبؤ الاحتمالي. نموذج واحد يخدم آلاف السلاسل ويُولّد مسارات مونت كارلو مع إمكانية تبديل دالة الأرجحية.

  2. 2019

    GluonTS

    مكتبة مفتوحة المصدر للتنبؤ الاحتمالي بالسلاسل الزمنية مبنية على MXNet. وضعت DeepAR والنماذج المشابهة في أيدي الممارسين بسهولة.

  3. 2019

    Amazon Forecast

    خدمة مُدارة من AWS للتنبؤ بالسلاسل الزمنية، يقوم DeepAR بدور خوارزميتها الأساسية. أوصلت التنبؤ العصبي إلى بيئات الإنتاج الفعلية على نطاق واسع.

  4. 2021

    Informer

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

  5. 2023

    PatchTST

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

  6. 2024

    Chronos

    نموذج لغوي مُدرَّب مسبقاً للسلاسل الزمنية يعتمد على ترميز القيم كرموز. يحمل فلسفة DeepAR في التوليد الذاتي الانحدار والتنبؤ الاحتمالي، لكن على نطاق النماذج التأسيسية.

المرجعSalinas, Flunkert, Gasthaus, Januschowski. DeepAR: Probabilistic forecasting with autoregressive recurrent networks. International Journal of Forecasting, 2020.

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