السلاسل الزمنية2023متوسط12 دقيقة قراءة
هل المحوِّلات فعّالة في التنبؤ بالسلاسل الزمنية؟
Are Transformers Effective for Time Series Forecasting?
Zeng, A. · Chen, M. · Zhang, L. · Xu, Q. — AAAI
المشكلة
بحلول 2022 سيطرت المحوِّلات على مشهد طويلة المدى: حصل Informer على جائزة أفضل ورقة في AAAI 2021، وظهر Autoformer في NeurIPS 2021. كل نموذج جديد كان يُضيف آليات انتباه ذاتي أعقد من سابقه لمحاولة التقاط العلاقات الزمنية. لكن هناك مشكلة جوهرية: لا يهتم بالترتيب أصلاً — فهو يقيس العلاقات بين العناصر بصرف النظر عن مواقعها. السلاسل الزمنية على العكس تماماً: الترتيب فيها هو الإشارة نفسها. وزاد الأمر سوءاً أن هذه النماذج قورنت فقط بأساليب تكرارية تعاني من تراكم الأخطاء، فبدت المقارنات مُضلِّلة.
الإسهام
قدّم المؤلفون DLinear: نموذج بسيط لدرجة مُحرجة. الفكرة أنه يُفكِّك السلسلة الزمنية إلى عام ومُركَّبة متبقية عبر ، ثم يُمرِّر كلاً منهما عبر طبقة خطية واحدة فقط. بأسلوب (بدلاً من الأسلوب التكراري)، تفوّق هذا النموذج على كل المحوِّلات القائمة — Informer وAutoformer وFEDformer وPyraformer وLogTrans — على 9 مجموعات بيانات مرجعية، وبفارق يصل أحياناً إلى 25–50%. والأخطر من ذلك: حين زاد الباحثون حجم ، تحسّن DLinear باطّراد بينما المحوِّلات لم تستفد — دلالة قوية على أنها لا تلتقط العلاقات الزمنية كما يُفترض.
الأثر
هزّت هذه الورقة مجتمع السلاسل الزمنية هزّة حقيقية، وأجبرت الباحثين على سؤال أساسي: هل التعقيد المعماري هو فعلاً الطريق الصحيح؟ وقد ألهمت مباشرةً ورقة PatchTST التي ردّت بإثبات أن المحوِّلات تنفع فعلاً حين يُعاد تصميم طريقة الترميز (تجميع الخطوات الزمنية في رُقع بدلاً من معالجتها نقطة نقطة). أصبح DLinear بعد هذه الورقة خط أساس إلزامياً — أي نموذج تنبؤ جديد لا بدّ أن يتفوّق عليه حتى يُؤخذ بجدّية. كما نبّهت الورقة إلى فرق جوهري كان مُهمَلاً: الفرق بين التنبؤ التكراري والتنبؤ المباشر متعدد الخطوات.
تخيّل مدينة تتسابق على بناء ناطحات سحاب أطول لترى أبعد نقطة في الأفق. كل برج جديد — Informer وAutoformer وFEDformer — يُضيف طوابق ومصاعد وزجاجاً أكثر تعقيداً. لكن يأتي شخص ويصعد تلّة بسيطة على طرف المدينة، فيكتشف أنه يرى أبعد من كل مَن في ناطحات السحاب. لماذا؟ لأن تلك الأبراج صُمِّمت أصلاً لرصد معالم المدن — مبانٍ ومَعلَمات متفرّقة (أي دلالية) — وليس لمتابعة أفق ممتد ومتّصل (). التلّة هي DLinear: لا طوابق ولا مصاعد، فقط خط رؤية مباشر.
السؤال: هل الانتباه الذاتي يُفيد فعلاً في السلاسل الزمنية؟
نجاح في معالجة اللغة و جاء من قدرتها على اكتشاف علاقات دلالية بين الرموز — أي كلمة تتّصل بأي كلمة، وأي رقعة صورة ترتبط بأخرى. آلية الانتباه الذاتي بارعة في ذلك لأنها تنظر إلى كل زوج من العناصر بالتساوي، دون اعتبار لموقعه. لكن هذه الخاصية بالذات — — هي عكس ما تحتاجه السلاسل الزمنية.
في السلاسل الزمنية، الترتيب هو كل شيء. أسعار الأسهم، درجات الحرارة، استهلاك الكهرباء — كلها تدفّقات مستمرة يحمل فيها كل موضع زمني معنى جوهرياً. الانتباه الذاتي على النقيض: يرى كل زوج من النقاط لكنه لا يُبالي بترتيبها. صحيح أن تُعوِّض جزئياً، لكن البنية في أصلها صُمِّمت للعلاقات الدلالية لا للديناميكيات الزمنية.
من هنا طرح المؤلفون سؤالاً حادّاً: ماذا لو تخلّينا عن كل هذا التعقيد واستخدمنا أبسط نموذج ممكن مع التنبؤ المباشر متعدد الخطوات؟ هل ستبقى للمحوِّلات ميزة حقيقية؟
المتغيّر الخفي: طريقة التنبؤ أهم من أداة التنبؤ
قبل أن نقارن بين البنيات المعمارية، هناك نقطة حاسمة أهملتها الأوراق السابقة: الطريقة التي تُولَّد بها التنبؤات متعددة الخطوات.
(IMS) يعمل كالتالي: ندرِّب النموذج على التنبؤ بخطوة واحدة فقط، ثم نُعيد ناتجه كمدخل لتنبؤ الخطوة التالية، وهكذا. هذا هو الأسلوب المألوف في الشبكات التكرارية والأساليب التقليدية. المشكلة أن خطأ كل خطوة يتسرّب إلى الخطوة التالية — تخيّل أن كل تنبؤ يرث ضجيج مَن سبقه. عند الخطوة 720، يكون كارثياً.
التنبؤ المباشر (DMS) يختلف جذرياً: النموذج يأخذ نافذة المراجعة كاملةً ويُخرج جميع الخطوات المستقبلية دفعة واحدة. لا حلقة تغذية راجعة، وبالتالي لا تراكم أخطاء.
وهنا تكمن المفارقة: نماذج المحوِّلات كلها (Informer وAutoformer وFEDformer) تستخدم التنبؤ المباشر. لكن التي قورنت بها — كالشبكات التكرارية وDeepAR — تستخدم التنبؤ التكراري. أي أن المقارنة لم تكن عادلة من الأساس: تفوّق المحوِّلات قد يعود بالكامل إلى استراتيجية التنبؤ، لا إلى البنية المعمارية نفسها.
DLinear: فكِّك، ثم أسقِط
يقوم DLinear على ملاحظتين بسيطتين. الأولى: خطية واحدة هي أبسط وسيلة لتجميع معلومات الماضي والتنبؤ بالمستقبل — مجرد مُتعلَّمة تُحوِّل L خطوة مُدخلة إلى T خطوة مُخرَجة. الثانية: السلسلة الزمنية إلى اتجاه ومتبقٍّ (كما فعل Autoformer) تقنية مستقلة عن النموذج وتُفيد أي بنية.
DLinear يدمج الفكرتين معاً: يُطبِّق متوسطاً متحركاً بنافذة 25 لاستخلاص الاتجاه، ثم يطرح الاتجاه من الإشارة الأصلية ليحصل على المتبقّي. بعد ذلك يمرِّر كل مُركَّبة عبر طبقة خطية مستقلة، ويجمع الخرجَين للحصول على التنبؤ النهائي.
هذا هو النموذج بأكمله. لا رؤوس انتباه ذاتي، لا متعددة الطبقات، لا تضمينات موضع، لا . مجرد تفكيك يليه عمليتا ضرب مصفوفات.
لماذا يُهمّ التفكيك: فصل البطيء عن السريع
السلسلة الزمنية الخام ليست إشارة واحدة بل تراكب لحركات متعددة تعمل على سرعات مختلفة. تخيّلها كأمواج البحر: هناك المدّ الذي يمثّل الاتجاه البطيء طويل الأمد، وهناك التموّجات السريعة التي تمثّل التقلّبات الموسمية. حين نُلزم نموذجاً واحداً بتعلّم الحركتين معاً — البطيئة والسريعة — نجعل مسألة التحسين أصعب بلا داعٍ.
فكرة التفكيك المُستعارة من Autoformer بسيطة: نُمرِّر متوسطاً متحركاً على الإشارة فنحصل على الاتجاه المُنعَّم، ثم نطرحه من الإشارة الأصلية فنحصل على المتبقّي — وهو المُركَّبة الموسمية أو الدورية.
وقد أكّدت أن التفكيك يُحدث فرقاً واضحاً حين يكون هناك اتجاه بارز في البيانات (مثل Exchange-Rate وILI وETT)، بينما تقلّ فائدته في بيانات بلا اتجاه واضح (مثل Traffic وWeather). وهذا منطقي تماماً: إن لم يكن هناك مدّ لفصله، فلا فائدة من خطوة التفكيك.
الفكرة في الكود
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import torch
import torch.nn as nn
class MovingAvg(nn.Module):
"""يستخرج الاتجاه من السلسلة الزمنية عبر المتوسط المتحرك."""
def __init__(self, kernel_size=25):
super().__init__()
self.kernel_size = kernel_size
self.avg = nn.AvgPool1d(kernel_size, stride=1, padding=0)
def forward(self, x):
# حشو الأطراف للحفاظ على الطول
front = x[:, :1, :].repeat(1, (self.kernel_size - 1) // 2, 1)
end = x[:, -1:, :].repeat(1, (self.kernel_size - 1) // 2, 1)
x_padded = torch.cat([front, x, end], dim=1)
trend = self.avg(x_padded.permute(0, 2, 1)).permute(0, 2, 1)
return trend
class DLinear(nn.Module):
"""تفكيك + طبقتان خطيتان. هذا كل شيء."""
def __init__(self, look_back=96, horizon=96, channels=1):
super().__init__()
self.decomp = MovingAvg(kernel_size=25)
self.linear_trend = nn.Linear(look_back, horizon) # Wt
self.linear_remainder = nn.Linear(look_back, horizon) # Ws
def forward(self, x):
# x: (حجم_الدفعة, نافذة_المراجعة, القنوات)
trend = self.decomp(x) # الاتجاه المُنعَّم
remainder = x - trend # ما تبقّى
# إسقاط كل مُركَّبة من L → T خطوة زمنية
trend_out = self.linear_trend(trend.permute(0, 2, 1))
remainder_out = self.linear_remainder(remainder.permute(0, 2, 1))
forecast = (trend_out + remainder_out).permute(0, 2, 1)
return forecast # (حجم_الدفعة, أفق_التنبؤ, القنوات)
# إجمالي المعاملات عند L=96, T=96, C=1:
# Wt: 96×96 = 9,216 Ws: 96×96 = 9,216 المجموع: ~18 ألف
# للمقارنة: Informer ≈ 14 مليون، Autoformer ≈ 15 مليون، FEDformer ≈ 21 مليونالنتائج: البساطة تفوز على 9 معايير
النتائج كانت صادمة. تفوّق DLinear على جميع المحوِّلات في أغلب الإعدادات عبر 9 مجموعات : ETTh1 وETTh2 وETTm1 وETTm2 وTraffic وElectricity وWeather وExchange-Rate وILI.
والفوارق لم تكن هامشية. على Exchange-Rate مثلاً، تفوّق DLinear على FEDformer بنحو 50% في . وعلى Weather تجاوز التحسّن 25%. بل إن أسلوباً ساذجاً كتكرار آخر قيمة (Repeat-C) تفوّق وحده على كل المحوِّلات في Exchange-Rate بأكثر من 30%.
الكفاءة الحسابية كانت مذهلة بالقدر نفسه. DLinear يحتاج فقط 0.04 مليار عملية MAC مقابل 3.93 لـ Informer و4.41 لكل من Autoformer وFEDformer. زمن : 0.4 ميلي ثانية مقابل 40–164 ميلي ثانية للمحوِّلات. عدد : نحو 140 ألف مقابل 14–21 مليوناً.
اختبار نافذة المراجعة: هل تستطيع المحوِّلات الاستفادة من تاريخ أطول؟
المنطق بسيط: أي نموذج يلتقط العلاقات الزمنية فعلاً يجب أن يتحسّن حين نُعطيه تاريخاً أطول. إذا رأيت 30 يوماً بدلاً من 4، من المفترض أن يتحسّن تنبؤك — هذا بديهي.
اختبر المؤلفون جميع النماذج بـنوافذ مراجعة تتراوح من 24 إلى 720 خطوة. النتيجة كانت كاشفة: المحوِّلات إما ركدت أو تدهورت مع نوافذ أكبر. Informer وAutoformer وPyraformer أظهروا خطأً ثابتاً أو متصاعداً كلما كبرت النافذة. FEDformer كان أحسن حالاً قليلاً لكنه هو أيضاً توقّف عن التحسّن.
DLinear على العكس: تحسّن باطّراد مع كل توسيع للنافذة. على مجموعة Traffic انخفض خطأ المربعات الوسطي من 0.65 (عند L=24) إلى 0.41 (عند L=720). وعلى Electricity من 0.23 إلى 0.13. تحسّن كبير ومتّسق.
هذه ربما أقوى نتيجة في الورقة كلها. فهي تُشير إلى أن المحوِّلات لا تتعلّم العلاقات الزمنية حقاً — بل تربط المدخلات بالمخرجات دون أن تستفيد من البنية الزمنية التي يوفّرها التاريخ الإضافي.
قراءة الأوزان: ماذا يتعلّم DLinear فعلاً
بما أن DLinear نموذج خطي، فإن مصفوفة أوزانه المُتعلَّمة W ∈ ℝᵀˣᴸ تكشف لنا مباشرة أي خطوات في الماضي تؤثر في أي خطوات في المستقبل. هذا مستوى من لا تقدر المحوِّلات بطبقاتها المعقّدة على مجاراته.
في مجموعة Electricity (بدقة ساعية)، ظهرت في أوزان المتبقّي أشرطة قطرية واضحة تتكرّر كل 24 خطوة — أي أن النموذج تعلّم بنفسه الدورية اليومية. الخطوة المُخرَجة الأولى تعتمد أساساً على الخطوات المُدخلة 1 و25 و49 و73، وهي نفس الساعة في الأيام السابقة. وفي Traffic ظهرت دوريتان: يومية (24 خطوة) وأسبوعية (168 خطوة).
أما في Exchange-Rate (حيث لا دورية)، فتركّزت الأوزان على أحدث الخطوات الزمنية — أي أن النموذج اكتشف وحده أن القيم الأخيرة هي الأهم عند التنبؤ ببيانات مالية لا تتبع نمطاً دورياً. هذه القدرة على التفسير ليست ميزة جانبية، بل هي تأكيد على أن النموذج يتعلّم أنماطاً زمنية حقيقية ومنطقية.
تشريح المحوِّلات: ما الذي يُفيد وما الذي يضرّ
أجرى المؤلفون تجربة كاشفة: أزالوا مكوّنات المحوِّلات واحداً تلو الآخر ليروا ما الذي يُسهم فعلاً في الأداء. حين جُرِّد Informer تدريجياً من طبقات الانتباه الذاتي والتصميمات الإضافية — مُحوِّلين إياه خطوة بخطوة إلى نموذج خطي — الأداء تحسّن مع كل خطوة إزالة. كلما اقترب النموذج من طبقة خطية صرفة، كان تنبؤه أفضل.
تجربة كشفت أيضاً نتيجة مُعبِّرة: Informer انهار بدون تضمينات الموضع لأنه يعامل كل خطوة زمنية كـرمز مستقل، بينما FEDformer — الذي يعتمد أساساً على تحويلات فورييه — صمد أمام إزالتها. هذا يعني أن قوة FEDformer مصدرها تحليل التردّدات، لا بنية المحوِّل نفسها.
وحتى حجم بيانات التدريب لم يُنقذ المحوِّلات. على مجموعة Traffic، أدّى تقليص البيانات من 17,544 ساعة إلى 8,760 ساعة (سنة واحدة) إلى تحسُّن التنبؤات لدى جميع النماذج — وهذا ينسف الحجة القائلة بأن المحوِّلات ستتألّق لو أُعطيت بيانات أكثر.
القيود: ما الذي لا يستطيعه DLinear
المؤلفون أنفسهم كانوا صريحين بشأن حدود DLinear. بوصفه نموذجاً خطياً بطبقة واحدة، فسعته محدودة — لا يقدر على التقاط ديناميكيات لاخطية أو نقاط تحوّل مفاجئة أو تفاعلات معقّدة بين مقاييس زمنية مختلفة. صُمِّم كـخط أساس وليس كحلّ نهائي لـالتنبؤ بالسلاسل الزمنية.
أعمال لاحقة — أبرزها PatchTST — أثبتت أن المحوِّلات يمكن أن تنجح في السلاسل الزمنية حين نُعيد التفكير في طريقة الترميز. بدلاً من معاملة كل خطوة زمنية كـرمز مستقل (مما يُفتّت الإشارة)، يجمع PatchTST خطوات متتالية في رُقع — تماماً كما تفعل محوِّلات الرؤية مع الصور. هذا يحفظ البنية الزمنية المحلية قبل أن يعمل الانتباه الذاتي، وقد تفوّق PatchTST على DLinear باستمرار.
النقاش الذي أطلقه DLinear لم يتوقّف: فكرة أن تضع خط أساس بسيطاً وتتحدّى الجميع بتجاوزه أجبرت المجتمع على تقييم ما تُضيفه المحوِّلات فعلاً، وقادت إلى تصميمات أذكى بدلاً من التخلّي عنها.
الخطّ الزمني: النقاش الكبير حول السلاسل الزمنية
2021
Informer — جائزة أفضل ورقة في AAAI
قدّم آلية انتباه ذاتي احتمالية متناثرة للتنبؤ طويل المدى بالسلاسل الزمنية. كان أول مَن استخدم التنبؤ المباشر في محوِّلات السلاسل الزمنية، وحقّق أفضل النتائج على معايير ETT.
2021
Autoformer — NeurIPS
أدمج تفكيك الاتجاه والموسمية داخل بنية المحوِّل، واستبدل الانتباه الذاتي بآلية الارتباط الذاتي. فكرة التفكيك هذه هي التي ألهمت لاحقاً تصميم DLinear.
2022
FEDformer — ICML
محوِّل يجمع بين التفكيك وتحليل التردّدات عبر تحويلات فورييه والمويجات، مع تعقيد حسابي خطي O(L). كان أقرب المحوِّلات أداءً إلى DLinear.
2023
DLinear — AAAI (هذه الورقة)
نموذج خطي بطبقة واحدة فقط تفوّق على كل المحوِّلات القائمة. طرح تساؤلاً جوهرياً عن جدوى الانتباه الذاتي في النمذجة الزمنية.
2023
PatchTST — ICLR
جاء ردّاً على DLinear بإثبات أن المحوِّلات تنجح حين تُجمَّع الخطوات الزمنية في رُقع بدلاً من معالجتها فُرادى. أعاد الثقة بالمحوِّلات عبر إصلاح طريقة الترميز.
المرجعZeng, Chen, Zhang, Xu. Are Transformers Effective for Time Series Forecasting?. AAAI, 2023.
مصطلحات هذه الورقة
- التنبؤ بالسلاسل الزمنيةTime Series Forecasting
- التفكيكDecomposition
- التنبؤ المباشر متعدد الخطواتDirect Multi-Step Forecasting
- التنبؤ التكراري متعدد الخطواتIterated Multi-Step Forecasting
- نافذة المراجعةLook-Back Window
- اتجاهTrend
- المتوسط المتحركMoving Average
- الانتباه الذاتيSelf-Attention
- متوسط الخطأ المربّعMean Squared Error (MSE)
- متوسط الخطأ المطلقMean Absolute Error (MAE)
- ذاتي الانحدارAutoregressive
- ثابت أمام التبديلPermutation-Invariant
- سلسلة زمنية متعددة المتغيّراتMultivariate Time Series