أساسيات تعلم الآلة1953متوسط11 دقيقة قراءة

حسابات معادلة الحالة باستخدام الحواسيب السريعة

Equation of State Calculations by Fast Computing Machines

Metropolis, N. · Rosenbluth, A. W. · Rosenbluth, M. N. · Teller, A. H. · Teller, E. — The Journal of Chemical Physics

المشكلة

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

الإسهام

أسلوب «مونت كارلو مُعدَّل» لا يختار العيّنات بشكل منتظم، بل يوزّعها وفق exp(−E/kT). الفكرة بسيطة: بدلاً من محاولة حساب جميع الحالات، ابنِ مسيرة عشوائية عبر فضاء التشكيلات. في كل خطوة اقترح تحريكاً عشوائياً — إن خفّض الطاقة اقبله فوراً، وإن رفعها اقبله باحتمال exp(−ΔE/kT). هذه المسيرة تُشكّل سلسلة ماركوف تتقارب نحو توزيع التوازن، فيُصبح المتوسط الزمني على طول المسيرة مكافئاً للمتوسطات الثرموديناميكية المطلوبة. طُبِّق الأسلوب على حاسوب MANIAC في لوس ألاموس لنظام من 224 قرصاً صلباً.

الأثر

أسّست هذه الورقة لأسلوب مونت كارلو بسلاسل ماركوف (MCMC)، الذي يُعدّ من أكثر الخوارزميات الحوسبية تأثيراً في القرن العشرين. في عام 1970 عمَّم هيستنغز قاعدة القبول لتشمل اقتراحات غير متماثلة، وفي 1984 ظهر أخذ عيّنات غيبس كحالة خاصة منه. أما التلدين المحاكى (1983) فاستعار الفكرة نفسها لحل مسائل الأمثلة. اليوم يقوم MCMC بدور محوري في الإحصاء البايزي والفيزياء الحوسبية والتعلم الآلي والبيولوجيا الحوسبية والمالية — في كل مجال تحتاج فيه إلى عيّنات من توزيع معقّد لا يمكن حسابه بصيغة مغلقة.

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

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

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

المشكلة: جمع عدد مستحيل من الحالات

لنبدأ بالمسألة الأساسية: لديك غاز فيه N جسيم تتفاعل مع بعضها عند درجة T. الخواص الثرموديناميكية لهذا الغاز — كالضغط والطاقة — تتحدّد بدالة تُسمّى ، وهي عبارة عن مجموع يشمل كل ترتيب ممكن للجسيمات الـ N. كل ترتيب له طاقة E، ويُسهم في المجموع بوزن يتناسب مع عامل بولتزمان exp(E/kT)\exp(-E / kT).

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

A=statesA(r)eE(r)/kTstateseE(r)/kT\langle A \rangle = \frac{\sum_{\text{states}} A(\mathbf{r}) \, e^{-E(\mathbf{r})/kT}} {\sum_{\text{states}} e^{-E(\mathbf{r})/kT}}
المتوسط الثرموديناميكي — ما نريد حسابهمتوسط أي خاصية A هو مجموع مُرجَّح على جميع التشكيلات r، حيث الوزن هو عامل بولتزمان. أما المقام — دالة التقسيم — فهو نفسه مجموع لا يمكن حسابه مباشرةً.
افتح في المختبر
قارن بين أخذ العيّنات العشوائي المنتظم (يسار) والمرجّح ببولتزمان (يمين). لاحظ كيف يُهدر الأسلوب المنتظم معظم جهده في مناطق الطاقة العالية.
تستيقظ التجربة عند وصولك…

البصيرة: دَع العيّنات تجد المناطق المهمة بنفسها

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

لكن السؤال الطبيعي: كيف تولّد عيّنات من توزيع بولتزمان وأنت لا تستطيع حتى حساب دالة التقسيم؟ هنا يأتي ذكاء أسلوب متروبوليس: لا تحتاج إلى معرفة أصلاً — يكفيك نِسَب الاحتمالات فقط، وهذه النِّسب تتبسّط إلى exp(ΔE/kT)\exp(-\Delta E / kT).

الخوارزمية: اقترح، قيِّم، اقبل أو ارفض

متروبوليس بسيطة بشكل مدهش. ابدأ من أي تشكيل تريده، ثم كرِّر الخطوات التالية:

  1. اقترح — اختر جسيماً عشوائياً وحرِّكه إزاحة عشوائية صغيرة.
  2. قيِّم — احسب مقدار التغيُّر في الطاقة ΔE الناتج عن هذه الحركة.
  3. قرِّر — إذا انخفضت الطاقة أو بقيت ثابتة (ΔE ≤ 0)، اقبل الحركة مباشرةً. أما إذا ارتفعت (ΔE > 0)، فاقبلها باحتمال exp(ΔE/kT)\exp(-\Delta E / kT): اسحب عدداً عشوائياً منتظماً u ∈ [0, 1] واقبل الحركة إن كان u<exp(ΔE/kT)u < \exp(-\Delta E / kT).

هذا كل ما في الأمر. التشكيلات المقبولة تُشكّل توزيعها المستقر هو توزيع بولتزمان. بعد فترة إحماء أولية، يُصبح كل تشكيل تمرّ به السلسلة عيّنةً صالحة من التوزيع المستهدف.

α=min ⁣(1,  eΔE/kT)\alpha = \min\!\Big(1,\; e^{-\Delta E / kT}\Big)
احتمال القبول في خوارزمية متروبوليسإن خفّضت الحركة الطاقة (ΔE < 0) يصير الأُسّ موجباً فيكون α = 1، أي نقبل دائماً. أما إن رفعتها فإن احتمال القبول يتناقص أُسِّياً مع مقدار الزيادة في الطاقة، ويتأثّر بدرجة الحرارة.
افتح في المختبر
انقر على كل خطوة لترى ما يحدث في تلك المرحلة من الخوارزمية.
تستيقظ التجربة عند وصولك…

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

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

لماذا تعمل: التوازن التفصيلي

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

التوازن التفصيلي يُطبّق المبدأ نفسه على سلسلة ماركوف: لأي حالتين i وj، تدفّق الاحتمال من i إلى j يجب أن يساوي التدفّق العكسي. بصيغة رياضية:

π(i)T(ij)=π(j)T(ji)\pi(i) \, T(i \to j) = \pi(j) \, T(j \to i)

حيث π هو التوزيع المستهدف وT هو . حين يتحقّق هذا الشرط يكون π هو للسلسلة. وقاعدة القبول في متروبوليس مُصمَّمة تحديداً لتُحقّق هذه المعادلة حين يكون π هو توزيع بولتزمان. يمكنك التحقّق بنفسك: النسبة T(ij)/T(ji)T(i \to j) / T(j \to i) تساوي π(j)/π(i)\pi(j)/\pi(i) بحكم التصميم.

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

درجة الحرارة: مقبض الاستكشاف

درجة الحرارة T هي ما يتحكّم بالتوازن بين و:

  • عند درجة حرارة عالية: تقترب exp(ΔE/kT)\exp(-\Delta E / kT) من 1 لمعظم الحركات، فيُقبل تقريباً كل شيء. المسيرة تجوب الفضاء بحرّية لكنها لا تتركّز في منطقة بعينها — تماماً كغاز ساخن جسيماته تتطاير في كل اتجاه.
  • عند درجة حرارة منخفضة: تقترب exp(ΔE/kT)\exp(-\Delta E / kT) من 0 للحركات الصاعدة، فلا تُقبل إلا الحركات النازلة. المسيرة تنحصر في أقرب — كمادة صلبة متجمّدة جسيماتها بالكاد تهتز.
  • عند درجة حرارة مناسبة: تستكشف المسيرة ما يكفي لإيجاد الوديان العميقة، وتمكث فيها وقتاً كافياً لأخذ عيّنات جيدة منها.

هذه الفكرة — التحكّم بمستوى العشوائية عبر درجة الحرارة — هي ما ألهم التلدين المحاكى (Simulated Annealing, Kirkpatrick et al., 1983): ابدأ بدرجة حرارة مرتفعة للاستكشاف الواسع، ثم بَرِّد تدريجياً حتى تتركّز المسيرة حول — محاكاةً للتلدين الفيزيائي الذي يُستخدم في تقسية المعادن.

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

تعميم هيستنغز (1970): الاقتراحات غير المتماثلة

خوارزمية متروبوليس الأصلية افترضت أن توزيع الاقتراح متماثل، بمعنى أن احتمال اقتراح الانتقال من الحالة i إلى j يساوي احتمال اقتراح العكس. في عام 1970 طوَّر و. ك. هيستنغز الفكرة وعمَّم ليتعامل مع اقتراحات غير متماثلة:

α(ij)=min ⁣(1,  π(j)q(ij)π(i)q(ji))\alpha(i \to j) = \min\!\left(1,\; \frac{\pi(j)\, q(i \mid j)}{\pi(i)\, q(j \mid i)} \right)

حيث q(ji)q(j \mid i) هو احتمال الاقتراح. في الحالة المتماثلة — أي حين يكون q(ji)=q(ij)q(j \mid i) = q(i \mid j) — تختصر حدود q ونعود إلى قاعدة متروبوليس الأصلية. هذا التعميم فتح الباب أمام طيف واسع من استراتيجيات الاقتراح، وجعل أسلوب MCMC قابلاً للتطبيق في مجالات أبعد بكثير من الفيزياء.

αMH(ij)=min ⁣(1,  π(j)  q(ij)π(i)  q(ji))\alpha_{\text{MH}}(i \to j) = \min\!\left(1,\; \frac{\pi(j)\; q(i \mid j)}{\pi(i)\; q(j \mid i)}\right)
احتمال القبول في متروبوليس-هيستنغز — الصيغة العامةالنسبة π(j)/π(i) تقيس مدى تفضيل التوزيع المستهدف للحالة الجديدة. أما النسبة q(i|j)/q(j|i) فتُعوِّض عن أي عدم تماثل في طريقة توليد الاقتراحات. معاً تضمن هاتان النسبتان التوازن التفصيلي مهما كان شكل الاقتراح.

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

عيّنة متروبوليس-هيستنغز، كاملةpython

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

import numpy as np

def metropolis_hastings(log_prob, x0, proposal_std, n_samples, burn_in=1000):
    """
    أخذ عيّنات من توزيع معروف حتى ثابت مجهول.
    log_prob: دالة تعيد log π(x) (غير مسوّاة لا بأس)
    x0: نقطة البداية
    proposal_std: الانحراف المعياري لاقتراح غاوسي
    """
    x = x0
    samples = []
    log_p = log_prob(x)

    for i in range(n_samples + burn_in):
        # 1. اقترح: خطوة غاوسية متماثلة
        x_new = x + np.random.randn() * proposal_std

        # 2. قيّم: احسب لوغاريتم نسبة القبول
        log_p_new = log_prob(x_new)
        log_alpha = log_p_new - log_p          # log(π(جديد)/π(قديم))

        # 3. قرّر: اقبل أو ارفض
        if np.log(np.random.rand()) < log_alpha:
            x = x_new                          # اقبل: انتقل للحالة الجديدة
            log_p = log_p_new
        # وإلا: ارفض — ابقَ في x (ضمنياً، لا تغيير)

        if i >= burn_in:
            samples.append(x)

    return np.array(samples)

# مثال: أخذ عيّنات من توزيع ثنائي النمط
def bimodal_log_prob(x):
    """لوغاريتم مزيج من غاوسيّتين."""
    return np.log(0.3 * np.exp(-0.5*(x+3)**2)
                + 0.7 * np.exp(-0.5*(x-2)**2) + 1e-300)

samples = metropolis_hastings(bimodal_log_prob, x0=0.0,
                               proposal_std=1.5, n_samples=10000)
# samples الآن ~10,000 عيّنة من التوزيع ثنائي النمط

التقارب: متى يمكنك الوثوق بالعيّنات؟

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

هناك تحدّيان عمليان أساسيان:

  • فترة الإحماء — العيّنات الأولى تعكس نقطة البداية لا التوزيع المستهدف. لذلك نتخلّص من أول N عيّنة لإزالة هذا التحيّز.
  • جودة الخلط — إن كانت خطوات السلسلة صغيرة جداً تُصبح العيّنات المتتالية مترابطة بشدة، وتحتاج السلسلة وقتاً طويلاً لتستكشف التوزيع كاملاً. وإن كانت الخطوات كبيرة جداً تُرفض أغلب الاقتراحات وتتجمّد السلسلة في مكانها. يجب إذن ضبط مقياس الاقتراح بعناية: القاعدة التجريبية الشائعة تستهدف معدّل قبول يتراوح بين 23–44% في الأبعاد العالية.
افتح في المختبر
اضبط مقياس الاقتراح وراقب تأثيره على معدّل القبول وسرعة التقارب. صغير جداً = خلط بطيء. كبير جداً = رفض مرتفع.
تستيقظ التجربة عند وصولك…

التجربة الأصلية: 224 قرصاً صلباً على حاسوب MANIAC

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

شغّلوا السلسلة مئات الدورات (الدورة الواحدة = 224 محاولة حركة، واحدة لكل جسيم)، وحسبوا معادلة الحالة — أي العلاقة بين الضغط والكثافة. نتائجهم توافقت مع التمديد النظري لمعاملات الفيريال الأربعة عند الكثافات المنخفضة، وكشفت عن سلوك عند الكثافات العالية عجزت كل الأساليب التحليلية عن التنبّؤ به.

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

لماذا غيَّرت كل شيء

  1. 1953

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

    الورقة الأصلية. اقتراحات مسيرة عشوائية متماثلة لأخذ عيّنات من توزيع بولتزمان. طُبِّقت على أقراص صلبة على حاسوب MANIAC.

  2. 1970

    تعميم هيستنغز

    وسَّع هيستنغز قاعدة القبول لتشمل توزيعات الاقتراح غير المتماثلة، فأنشأ الإطار العام لمتروبوليس-هيستنغز المستخدم حتى اليوم.

  3. 1983

    التلدين المحاكى

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

  4. 1984

    أخذ عيّنات غيبس

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

  5. 1990

    MCMC يدخل الإحصاء

    أدخلت ورقة جيلفاند وسميث أسلوب MCMC إلى تيار الإحصاء البايزي الرئيسي، وأظهرت قدرته على الاستدلال البَعدي في النماذج الهرمية المعقّدة.

  6. 2003

    "أهم 10 خوارزميات في القرن العشرين"

    صنّفت مجلة Computing in Science & Engineering خوارزمية متروبوليس ضمن أهم 10 خوارزميات في القرن العشرين — إلى جانب تحويل فورييه السريع وأسلاف PageRank وطريقة السمبلكس.

  7. 2011

    عيّنة بلا-التفاف (NUTS)

    قدَّم هوفمان وجيلمان نسخة تكيّفية من مونت كارلو الهاملتوني تُضبط تلقائياً، وتُشغّل أُطُر البرمجة الاحتمالية الحديثة مثل Stan وPyMC.

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

المرجعMetropolis, N., Rosenbluth, A. W., Rosenbluth, M. N., Teller, A. H., Teller, E.. Equation of State Calculations by Fast Computing Machines. The Journal of Chemical Physics, 1953.

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