نظرية الاحتمال1906تأسيسي10 دقيقة قراءة

توسيع قانون الأعداد الكبيرة ليشمل الكمّيات المترابطة

Extension of the Law of Large Numbers to Dependent Quantities

Markov, A. A. — Bulletin of the Society of Physics‑Mathematics, Kazan

المشكلة

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

الإسهام

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

الأثر

تحوّلت سلاسل ماركوف إلى أداة محورية في الاحتمالات والإحصاء وعلوم الحاسوب. نماذج ماركوف المخفية أصبحت الأساس الذي بُنيت عليه أنظمة التعرف على الكلام والتحليل الجيني. وأساليب مونت كارلو بسلاسل ماركوف (MCMC) فتحت الباب أمام البايزي في فضاءات عالية الأبعاد كان التعامل معها مستحيلاً حسابياً. أما خوارزمية PageRank التي أسّست Google فهي في جوهرها سلسلة ماركوف على بيان الويب. والأمر يمتد إلى نماذج السلاسل الزمنية ARIMA والتعلم المعزَّز ونظرية الطوابير والمحاكاة الجزيئية — كلها ترتكز على فكرة ماركوف الأصلية: أن الترابط بين المتغيرات لا يُبطل قانون الأعداد الكبيرة.

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

إذا كانت على الأريكة فالأرجح أنها تبقى هناك، لكنها قد تنتقل أحياناً إلى حافة النافذة. ومن حافة النافذة كثيراً ما تتجه إلى السرير. أما من السرير فتعود شبه دائماً إلى الأريكة.

الآن لو راقبتها عاماً كاملاً، ستلاحظ شيئاً لافتاً: النسب التي تقضيها في كل مكان تستقر عند قيم ثابتة تقريباً — مثلاً 50% أريكة، 30% نافذة، 20% سرير — بغض النظر عن المكان الذي بدأت منه. هذا النمط الثابت هو ما يُعرف بـ****، وما أثبته ماركوف هو أن هذا الاستقرار يظهر حتماً متى كانت الانتقالات بين الأماكن مترابطة بالشكل الصحيح.

المشكلة: شرط الاستقلال لم يكن واقعياً

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

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

الفكرة المحورية: ذاكرة بطول واحد

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

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

P(Xn+1=jXn=i,Xn1,,X0)=P(Xn+1=jXn=i)P(X_{n+1} = j \mid X_n = i, X_{n-1}, \ldots, X_0) = P(X_{n+1} = j \mid X_n = i)
خاصية ماركوف — المستقبل يعتمد فقط على الحاضراحتمال الانتقال إلى الحالة j في الخطوة التالية يتوقف على الحالة الحالية i فقط، بغض النظر عن كل الحالات التي مرّ بها النظام سابقاً. هذه هي البديهية المؤسِّسة لسلسلة ماركوف.
افتح في المختبر
انقر على أي حالة لتحديد موضع البداية. لاحظ أن احتمالات الخطوة التالية تعتمد فقط على مكانك الحالي، لا على المسار الذي سلكته.
تستيقظ التجربة عند وصولك…

مصفوفة الانتقال: خارطة كل الاحتمالات

إذا كانت سلسلة ماركوف تتكون من nn حالة، فيمكن وصف سلوكها بالكامل عبر مصفوفة واحدة بحجم n×nn \times n تُسمّى مصفوفة الانتقال PP. العنصر PijP_{ij} يمثّل احتمال أن ينتقل النظام من الحالة ii إلى الحالة jj في خطوة واحدة. ولأن النظام لا بد أن ينتهي في حالةٍ ما، فإن مجموع كل صف يساوي 1 بالضرورة.

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

P=(P11P12P1nP21P22P2nPn1Pn2Pnn),j=1nPij=1    iP = \begin{pmatrix} P_{11} & P_{12} & \cdots & P_{1n} \\ P_{21} & P_{22} & \cdots & P_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ P_{n1} & P_{n2} & \cdots & P_{nn} \end{pmatrix}, \quad \sum_{j=1}^{n} P_{ij} = 1 \;\;\forall\, i
مصفوفة الانتقال — كل صف هو توزيع احتمالي على الحالات التاليةالعنصر P_ij يعبّر عن احتمال الانتقال من الحالة i إلى الحالة j. كل صف مجموعه 1 لأن النظام لا بد أن ينتهي في حالة ما — حتى لو عاد إلى الحالة نفسها.
افتح في المختبر
عدّل أي خلية في المصفوفة وشاهد مخطط الحالات يتحدّث تلقائياً. تذكّر أن مجموع كل صف يجب أن يساوي 1.
تستيقظ التجربة عند وصولك…

الانتقالات متعددة الخطوات ومعادلة تشابمان–كولموغوروف

السؤال الطبيعي هو: إذا كان النظام في الحالة ii الآن، فما احتمال أن يصل إلى الحالة jj بعد mm خطوة؟ والإجابة أنيقة: ارفع مصفوفة الانتقال إلى الأس mm ببساطة. العنصر (Pm)ij(P^m)_{ij} يعطيك بالضبط هذا الاحتمال.

السبب في نجاح ذلك هو معادلة تشابمان–كولموغوروف: للانتقال من ii إلى jj في m+nm + n خطوة، فكّر في الأمر كرحلة من مرحلتين — أولاً تصل إلى حالة وسيطة kk في mm خطوة، ثم تكمل من kk إلى jj في nn خطوة. تجمع الاحتمالات على جميع الحالات الوسيطة الممكنة. بلغة المصفوفات هذا يعني ببساطة أن Pm+n=PmPnP^{m+n} = P^m \cdot P^n — أي أن الضرب المصفوفي يُنجز تلقائياً عملية الجمع على كل المسارات الممكنة.

(Pm+n)ij=k(Pm)ik(Pn)kj(P^{m+n})_{ij} = \sum_{k} (P^m)_{ik} \cdot (P^n)_{kj}
معادلة تشابمان–كولموغوروف — الاحتمالات متعددة الخطوات تتحلّلللوصول من الحالة i إلى الحالة j في m+n خطوة، نجمع على جميع الحالات الوسيطة الممكنة k: احتمال الوصول من i إلى k في m خطوة مضروباً في احتمال الانتقال من k إلى j في n خطوة.
افتح في المختبر
تابع قوى المصفوفة خطوة بخطوة. لاحظ كيف تصبح صفوف P^m متشابهة أكثر فأكثر — السلسلة تنسى حالتها الابتدائية تدريجياً.
تستيقظ التجربة عند وصولك…

التوزيع المستقر: أين تستقر السلسلة

أجمل نتيجة في سلاسل ماركوف الإرجودية هي أنها تتقارب حتماً. مهما كانت نقطة البداية، فإن الاحتمالي على الحالات يقترب مع الزمن من ثابت π\pi يُعرف بـالتوزيع المستقر. وهذا المتجه يتميز بخاصية مهمة: إذا ضربته في مصفوفة الانتقال تحصل عليه نفسه، أي π=πP\pi = \pi P. بعبارة أخرى، هو نقطة ثابتة — حين يصل النظام إليها لا يتغير بعدها.

لتقريب الفكرة: تخيّل دلتا نهر تتفرع فيها المياه إلى عدة قنوات. في البداية قد يسلك الماء مساراً غير متوازن، لكن بعد فترة كافية من التدفق تستقر نسبة المياه في كل قناة عند قيمة ثابتة. هذه النسبة الثابتة هي بالضبط ما يمثله التوزيع المستقر: النسبة الزمنية التي تقضيها السلسلة في كل حالة على المدى الطويل.

π=πP,iπi=1,πi0\pi = \pi P, \quad \sum_{i} \pi_i = 1, \quad \pi_i \geq 0
التوزيع المستقر — النقطة الثابتة لمصفوفة الانتقالحين تضرب المتجه الصفي π في المصفوفة P تحصل على π نفسه — لا يتغير. مكوّناته جميعها غير سالبة ومجموعها يساوي 1. والقيمة π_i تعني النسبة من الوقت التي تقضيها السلسلة في الحالة i على المدى البعيد.
افتح في المختبر
اختر أي توزيع ابتدائي وشاهده يتقارب نحو التوزيع المستقر الوحيد كلما زاد عدد الخطوات.
تستيقظ التجربة عند وصولك…

الإرجودية: متى يحصل التقارب؟

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

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

  • اللادورية — أي ألّا تقع السلسلة في نمط دوري مُتكرر. إذا كانت حالة ما لا يُعاد زيارتها إلا كل d>1d > 1 خطوة بالضبط، فالسلسلة دورية واحتمالاتها تتأرجح دون أن تستقر أبداً.

حين يتحقق الشرطان معاً تكون السلسلة إرجودية: يوجد توزيع مستقر وحيد، والسلسلة تتقارب نحوه مهما كانت نقطة البداية. هذه هي المبرهنة الإرجودية لسلاسل ماركوف — النتيجة المركزية التي أثبتها ماركوف في ورقته عام 1906.

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

استراتيجية إثبات ماركوف

بنى ماركوف برهانه على ربط أنيق بين متراجحة تشيبيشيف وخصائص مصفوفة الانتقال. والخطوات الجوهرية ثلاث:

أولاً، بيّن أن مصفوفة الانتقال حين تُرفع لقوى عالية PmP^m تتقارب صفوفها جميعاً نحو التوزيع المستقر π\pi. الدلالة العملية لهذا أن السلسلة «تنسى» من أين بدأت — بعد عدد كافٍ من الخطوات لا تهم نقطة الانطلاق.

ثانياً، استثمر هذا التقارب لتقدير المتوسط الزمني Xˉn=1nt=1nXt\bar{X}_n = \frac{1}{n}\sum_{t=1}^{n} X_t. صحيح أن القيم المتتالية مترابطة، لكن هذا الترابط يضعف بسرعة كافية (بفضل تقارب PmπP^m \to \pi) بحيث ينكمش تباين المتوسط بمعدل O(1/n)O(1/n) — تماماً كما في الحالة المستقلة.

ثالثاً، استخدم متراجحة تشيبيشيف لترجمة هذا التباين المتناقص إلى ضمان صريح للتقارب: P(Xˉnμ>ϵ)0P(|\bar{X}_n - \mu| > \epsilon) \to 0 عندما nn \to \infty. وبذلك يسري قانون الأعداد الكبيرة على سلاسل ماركوف.

الفكرة ذاتها في شيفرة برمجية

محاكاة سلسلة ماركوف والتحقق من قانون الأعداد الكبيرةpython

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

import numpy as np

# مصفوفة الانتقال: 3 حالات (مشمس، غائم، ماطر)
P = np.array([
    [0.7, 0.2, 0.1],   # مشمس  ← الحالة التالية
    [0.3, 0.4, 0.3],   # غائم  ← الحالة التالية
    [0.2, 0.3, 0.5],   # ماطر  ← الحالة التالية
])

def simulate_chain(P, start, n_steps):
    """شغّل سلسلة ماركوف لعدد n_steps من الخطوات بدءاً من حالة معينة."""
    states = [start]
    for _ in range(n_steps):
        current = states[-1]
        next_state = np.random.choice(len(P), p=P[current])
        states.append(next_state)
    return states

# محاكاة 100,000 خطوة بدءاً من الحالة 0 (مشمس)
chain = simulate_chain(P, start=0, n_steps=100_000)

# النسبة التجريبية للوقت في كل حالة
counts = np.bincount(chain, minlength=3)
empirical = counts / len(chain)

# التوزيع المستقر: حُل π = πP (المتجه الذاتي الأيسر للقيمة الذاتية 1)
eigenvalues, eigenvectors = np.linalg.eig(P.T)
idx = np.argmin(np.abs(eigenvalues - 1.0))
pi = np.real(eigenvectors[:, idx])
pi = pi / pi.sum()  # تسوية

print(f"تجريبي:    {empirical}")      # ≈ [0.44, 0.28, 0.28]
print(f"مستقر:     {pi}")              # القيمة الدقيقة: [0.44, 0.28, 0.28]
# النتيجتان متطابقتان — قانون الأعداد الكبيرة يعمل مع سلاسل ماركوف!

التطبيقات التي شكّلت الذكاء الاصطناعي الحديث

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

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

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

نماذج ARIMA للتنبؤ بالسلاسل الزمنية تعتمد على بنية انحدار ذاتي تنحدر مباشرة من إطار ماركوف، وتُستخدم على نطاق واسع في التحليل الاقتصادي والمالي.

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

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

لماذا كان هذا العمل بالغ الأهمية

  1. 1713

    قانون بيرنولي للأعداد الكبيرة

    قدّم جاكوب بيرنولي أول برهان رسمي لقانون الأعداد الكبيرة، حيث أظهر أن النسب التجريبية في تجارب مستقلة تقترب حتماً من الاحتمالات الحقيقية كلما زاد عدد التجارب.

  2. 1867

    متراجحة تشيبيشيف

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

  3. 1906

    توسيع ماركوف

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

  4. 1913

    تحليل ماركوف للنصوص

    درس ماركوف تناوب الحروف المتحركة والساكنة في رواية «يوجين أونيجين» لبوشكين — في أول تطبيق عملي لسلاسل ماركوف على بيانات حقيقية، ومن أوائل الأمثلة على اللسانيات الحاسوبية.

  5. 1953

    خوارزمية متروبوليس (MCMC)

    طوّر متروبوليس وزملاؤه أول خوارزمية MCMC، حيث وظّفوا سلاسل ماركوف لأخذ عيّنات من توزيعات معقدة في سياق المحاكاة الفيزيائية.

  6. 1966

    خوارزمية باوم–ويلتش لنماذج ماركوف المخفية

    أتاحت خوارزمية الأمام–الخلف تدريب نماذج ماركوف المخفية بكفاءة، وهي النماذج التي شكّلت لاحقاً العمود الفقري لأنظمة التعرف على الكلام والتحليل الحيوي.

  7. 1998

    PageRank

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

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

المرجعMarkov, A. A.. Extension of the Law of Large Numbers to Dependent Quantities. Bulletin of the Society of Physics‑Mathematics, Kazan, 1906.

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