أساسيات تعلم الآلة2003متوسط12 دقيقة قراءة
تخصيص ديريكليه الكامن
Latent Dirichlet Allocation
Blei, D. M. · Ng, A. Y. · Jordan, M. I. — JMLR
المشكلة
مع بداية الألفية، تضخّمت مجموعات النصوص بشكل هائل — مكتبات رقمية، ومحتوى ويب لا نهائي، وأرشيفات بريد إلكتروني — لكنّ الأدوات المتاحة لتنظيمها كانت سطحية. نماذج مثل TF-IDF كانت تتعامل مع كل كلمة على حدة، دون أن تُدرك أنّ كلمات مثل «بنك» و«قرض» و«فائدة» تظهر معاً لأنها تدور حول موضوع واحد مشترك. أسلوب التحليل الدلالي الكامن الاحتمالي (pLSA) كان قادراً على اكتشاف مواضيع مخفية، لكنه لم يكن نموذجاً توليدياً حقيقياً، وكان يعاني من فرط الملاءمة مع المجموعات النصية الصغيرة، ولا يملك آلية لحساب احتمال مستند جديد لم يُعرض عليه من قبل.
الإسهام
قدّم الباحثون LDA بوصفه نموذجاً بايزياً توليدياً متكاملاً للنصوص. الفكرة أنّ كل مستند يسحب مزيجاً من المواضيع وفق مسبق، ثم كل كلمة تُوَلَّد من التوزيع المفرداتي للموضوع الذي اختارته. ولأنّ كل شيء ينبثق من توزيعات مسبقة، يستطيع على مستندات جديدة، ويقاوم فرط الملاءمة، ويعطي احتمالاً رياضياً منضبطاً لأي مستند. الدقيق مستعصٍ حسابياً، فقدّم المؤلفون خوارزمية تعظيم التوقع المتغيّرة التي تتوسّع بكفاءة لمجموعات نصية ضخمة. حقّق LDA نتائج أفضل من pLSA وTF-IDF في معايير تصنيف المستندات واسترجاع المعلومات.
الأثر
أصبح LDA النموذج المرجعي في نمذجة المواضيع، وواحداً من أكثر أوراق التعلّم الآلي استشهاداً في التاريخ. أرسى نموذجاً فكرياً للنمذجة التوليدية البايزية على بيانات منفصلة، وألهم مئات الامتدادات — من نماذج المواضيع الديناميكية والمترابطة إلى LDA المُوجَّه ونماذج المؤلف-الموضوع. وخارج معالجة اللغة الطبيعية، وجد تطبيقات في المعلوماتية الحيوية والرؤية الحاسوبية وأنظمة التوصية. أمّا إطاره في الاستدلال المتغيّر فقد أثّر في جيل كامل من أساليب التقريب البايزي، ومهّد الطريق لاحقاً نحو المُرمِّز التلقائي المتغيّر وأساليب الاستدلال المُعجَّل الحديثة.
تخيّل مطبخاً كل طبق فيه يُحضَّر بمزج بضع وصفات أساسية — كاري تايلندي، وراغو إيطالي، ورو فرنسي — بنِسب مختلفة. الباد تاي مثلاً معظمه كاري تايلندي مع لمسة راغو تضيف له عمقاً، أمّا الريزوتو المُدمج فقد يكون مناصفةً بين الراغو والرو.
والآن تخيّل أنك لا ترى إلّا الأطباق الجاهزة، دون أن يُريك أحد الوصفات الأصلية. LDA هو ذلك الناقد الذي يتذوّق أطباقاً كافية حتى يستنتج الوصفات المخفية ويُحدّد مزيج كل طبق.
«الأطباق» هنا هي المستندات، و«الوصفات الأساسية» هي المواضيع، و«المكوّنات» هي الكلمات. ما يفعله LDA هو اكتشاف وصفات لم يدوّنها أحد من قبل.
المشكلة: العدّ المسطّح للكلمات يُغفل البنية الخفية
أبسط طريقة لتمثيل مستند هي ما يُعرف : عُدّ كم مرة ظهرت كل كلمة وتجاهل ترتيبها بالكامل. أسلوب TF-IDF طوّر هذه الفكرة بتقليل وزن الكلمات الشائعة، لكنّ المشكلة الأساسية بقيت: كل كلمة تُعامَل بمعزل عن سياقها. لا يستطيع هذا الأسلوب أن يُدرك أنّ كلمات مثل «عصبون» و«مشبك عصبي» و«قشرة دماغية» تتجمّع معاً لأنها تنتمي إلى موضوع واحد كامن تحت السطح.
Word2Vec جاء لاحقاً وتعلّم أوجه التشابه بين الكلمات، لكنه يعمل على مستوى الكلمة المفردة فقط. ما كان ينقص الميدان هو نموذج يعمل على مستوى المستند بأكمله — نموذج يستطيع أن يقول: «هذه الورقة 60% علم أعصاب و40% إحصاء» — أي يلتقط مزيج المواضيع الذي يمنح كل مستند شخصيته المميّزة.
التحليل الدلالي الكامن الاحتمالي (pLSA) الذي طرحه هوفمان عام 1999 كان خطوة في هذا الاتجاه، إذ نمذج المستندات بوصفها مزائج من مواضيع. لكنّ المشكلة الجوهرية فيه أنّ نِسب المواضيع كانت حرّة لكل مستند، فينمو عدد المعاملات خطياً مع حجم . هذا جعل pLSA عرضةً لـ، ولم تكن هناك طريقة منضبطة لحساب مستند لم يره النموذج من قبل.
المحرّك: توزيع ديريكليه
قبل أن نستعرض القصة التوليدية لـ LDA، نحتاج أن نفهم محرّكه الأساسي: توزيع ديريكليه. الفكرة ببساطة أنّ توزيع ديريكليه هو يُنتج توزيعات احتمالية أخرى. تخيّله كآلة تصنع مخططات دائرية: تعطيها معاملات ، فتُخرج لك متجه احتمالات عشوائياً مجموع عناصره يساوي 1.
المعامل هو ما يتحكّم في شكل هذه المخططات. حين تكون جميع قيم كبيرة (لنقل 10)، تخرج معظم المخططات متوازنة تقريباً — كل شريحة تأخذ نصيباً مقارباً للبقية. وحين تكون قيمها صغيرة (لنقل 0.1)، تخرج المخططات متفرّقة — شريحة واحدة أو اثنتان تستحوذان على الحصة الكبرى والباقي قريب من الصفر. وإذا اختلفت قيم عن بعضها، تميل الآلة إلى تفضيل شرائح معيّنة على حساب غيرها.
في LDA، يؤدّي توزيع ديريكليه دورين محوريين: أولاً يُنتج متجه مزيج المواضيع لكل مستند (أي كم يستخدم هذا المستند من كل موضوع)، وثانياً يُنتج متجه التوزيع المفرداتي لكل موضوع (أي ما احتمال ظهور كل كلمة في تحت هذا الموضوع).
القصة التوليدية: كيف يتصوّر LDA أنّ المستند كُتب
يبني LDA قصة تخيّلية تصف كيف وُلد كل مستند في المجموعة النصية. بطبيعة الحال لا أحد يعتقد أنّ المستندات تُكتب فعلاً بهذه الطريقة، لكنّ القصة هي افتراض نمذجي يلتقط الجوهر الإحصائي الذي يهمّنا: المستندات تتناول مواضيع متعددة، والكلمات فيها تأتي من تلك المواضيع.
إليك العملية التوليدية كاملة. لكل مستند في المجموعة النصية:
الخطوة 1. اسحب متجه مزيج المواضيع . هذا المتجه يقع على بسيطة الاحتمالات ويحدّد مقدار ما سيستخدمه هذا المستند من كل موضوع.
الخطوة 2. لكل موضع كلمة في المستند:
2أ. اسحب تعيين موضوع . هذه الخطوة تحدّد أيّ موضوع سيولّد هذه الكلمة تحديداً.
2ب. اسحب الكلمة . هذه الخطوة تختار كلمة من التوزيع المفرداتي للموضوع الذي وقع عليه الاختيار.
توزيعات المواضيع-الكلمات تُسحب هي أيضاً من : لكل موضوع .
لاحظ الآن ما هو مرصود وما هو مخفي. الشيء الوحيد الذي نراه هو الكلمات . أمّا كل شيء آخر — مزائج المواضيع وتعيينات المواضيع والتوزيعات المفرداتية — فكلّها . التحدي الأساسي في LDA هو استدلال هذه المتغيّرات المخفية انطلاقاً من الكلمات المرصودة فقط.
النموذج البياني: كيف نقرأ مخطط الصفائح
النماذج البايزية تُرسم عادةً على شكل نماذج بيانية — مخططات تمثّل فيها العُقد متغيّرات عشوائية، بينما تُظهر الأسهم والحواف علاقات التبعية بينها. مخطط الصفائح في LDA يبدو مضغوطاً لكنه يختزل القصة التوليدية بأكملها:
- الصفيحة الخارجية (المستطيل) تتكرر مرة — واحدة لكل مستند.
- بداخلها صفيحة أصغر تتكرر مرة — واحدة لكل كلمة في المستند .
- يقع خارج جميع الصفائح: واحد تتشاركه المجموعة النصية كلها.
- داخل صفيحة المستند: لكل مستند مزيج مواضيع خاص به.
- و داخل صفيحة الكلمة: لكل كلمة تعيين موضوع مستقل.
- و في صفيحة مستقلة تتكرر مرة — واحدة لكل موضوع.
- العقدة الوحيدة المظلّلة (أي المرصودة) هي . كل ما عداها متغيّرات كامنة.
هذه الصورة المضغوطة تحدّد التوزيع المشترك بالكامل. التحدي الحقيقي هو حساب التوزيع اللاحق لجميع المتغيّرات الكامنة بمعلومية الكلمات التي نرصدها.
الرياضيات: من القصة إلى المعادلات
القصة التوليدية التي سردناها يمكن ترجمتها مباشرةً إلى صيغة رياضية. لمستند واحد يحتوي كلمة، يكون التوزيع المشترك على مزيج المواضيع وتعيينات المواضيع والكلمات كالتالي:
للحصول على احتمال الكلمات المرصودة وحدها، نحتاج إلى إزالة بالتكامل والجمع على جميع تعيينات المواضيع الممكنة . ما ينتج هو الهامشية للمستند:
الاستدلال المتغيّر: الاختصار القابل للحل
بما أنّ الاستدلال الدقيق مستحيل، اقترح بلاي ونغ وجوردان تقريباً متغيّراً. الفكرة الأساسية هي: اختر عائلة أبسط من التوزيعات نسمّيها ، تتميّز بأنها تفكّك الاقترانات بين المتغيّرات، ثم ابحث عن العضو الأقرب في هذه العائلة إلى التوزيع اللاحق الحقيقي.
العائلة المتغيّرة المستخدمة في LDA تفترض أنّ مزيج المواضيع وكل تعيين موضوع مستقلان عن بعضهما — وهو ما يُعرف بافتراض «المجال المتوسط». هذا الافتراض يكسر بالضبط الاقتران الذي جعل الاستدلال الدقيق مستعصياً:
«الأقرب» هنا يُقاس بـ بين والتوزيع اللاحق الحقيقي . والجميل أنّ تصغير هذا التباعد يكافئ رياضياً تعظيم كمّية تُسمّى الحد الأدنى للدليل ():
نعظّم ELBO عبر الصعود الإحداثي: نُحدّث وكل بالتناوب مع تثبيت الآخر. ما يميّز هذه العملية أنّ معادلات التحديث لها صيغ مغلقة أنيقة بفضل اقتران ديريكليه مع التوزيع متعدد الحدود:
البديل: اعتيان غيبس المُنهار
بعد عامين من نشر LDA، جاء غريفيثس وستيفرز (2004) بأسلوب استدلال أبسط: . الفكرة هنا أنه بدلاً من تقريب التوزيع اللاحق الكامل، نتخلّص من و بالتكامل التحليلي (بفضل اقتران ديريكليه) ولا نعتيّن إلا تعيينات المواضيع وحدها.
الاعتيان المُنهار يمشي كلمةً بكلمة: لكل كلمة ، أزِل تعيينها الحالي ثم أعِد سحب موضوع بما يتناسب مع عاملين: (1) كم مرة ظهر الموضوع في المستند (بعد طرح هذه الكلمة)، و(2) كم مرة ظهرت الكلمة تحت الموضوع (بعد طرح هذه الكلمة). بعد تكرارات كافية تتقارب العيّنات نحو التوزيع اللاحق.
في الممارسة العملية، أصبح اعتيان غيبس المُنهار الأسلوب الأكثر شيوعاً لـاستدلال LDA لأنه سهل التنفيذ برمجياً، ويعطي نتائج جيدة، ومعادلته بديهية:
LDA مقابل pLSA: لماذا تُحدث الطبقة البايزية فرقاً
من الخارج يبدو pLSA وLDA متشابهين — كلاهما يمثّل المستندات بوصفها مزائج من مواضيع. لكنّ الفارق الحاسم يكمن في التوزيع المسبق من ديريكليه. في pLSA، مزيج المواضيع لكل مستند هو معامل حر يُقدَّر مباشرة. أمّا في LDA، فإنّ متغيّر كامن يُسحب من توزيع مسبق. هذا الفرق البسيط يترتب عليه ثلاث نتائج جوهرية:
- التعميم. يستطيع LDA حساب احتمال أي مستند جديد عبر تكامل . أما pLSA فلا يملك هذه القدرة — لا يعرف سوى المستندات التي تدرّب عليها.
- مقاومة فرط الملاءمة. التوزيع المسبق من ديريكليه يعمل عمل . حين يكون صغيراً، يميل النموذج إلى مزائج مواضيع متفرّقة، وهذا يعكس الواقع — أغلب المستندات تتناول بضعة مواضيع فقط وليس جميعها.
- عدد المعاملات. تعقيد نموذج LDA ثابت ويتحدد بـ و بصرف النظر عن عدد المستندات . أمّا pLSA فينمو عدد معاملاته خطياً مع المستندات حتى يغرق في فرط الملاءمة.
الفكرة ذاتها في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def lda_gibbs(docs, V, K, alpha, beta, n_iter=1000):
"""اعتيان غيبس المُنهار لنموذج LDA.
docs: قائمة من قوائم فهارس الكلمات
V: حجم القاموس، K: عدد المواضيع
alpha: مُسبَق ديريكليه على مستند-موضوع، beta: مُسبَق على موضوع-كلمة
"""
# التهيئة: تعيين موضوع عشوائي لكل كلمة
z = [[np.random.randint(K) for _ in doc] for doc in docs]
# مصفوفات العدّ
n_dk = np.zeros((len(docs), K)) # المستند d، الموضوع k
n_kv = np.zeros((K, V)) # الموضوع k، الكلمة v
n_k = np.zeros(K) # إجمالي كلمات الموضوع k
for d, doc in enumerate(docs):
for n, w in enumerate(doc):
k = z[d][n]
n_dk[d, k] += 1
n_kv[k, w] += 1
n_k[k] += 1
# تكرارات غيبس
for it in range(n_iter):
for d, doc in enumerate(docs):
for n, w in enumerate(doc):
k_old = z[d][n]
# أزل التعيين الحالي
n_dk[d, k_old] -= 1
n_kv[k_old, w] -= 1
n_k[k_old] -= 1
# احسب الشرطي: مستند-موضوع × موضوع-كلمة
prob = (n_dk[d] + alpha) * (n_kv[:, w] + beta) / (n_k + V * beta)
prob /= prob.sum()
# أعد اعتيان الموضوع
k_new = np.random.choice(K, p=prob)
z[d][n] = k_new
n_dk[d, k_new] += 1
n_kv[k_new, w] += 1
n_k[k_new] += 1
# استخرج توزيعات الموضوع-الكلمة
phi = (n_kv + beta) / (n_k[:, None] + V * beta)
# استخرج توزيعات المستند-الموضوع
theta = (n_dk + alpha) / (n_dk.sum(axis=1, keepdims=True) + K * alpha)
return phi, thetaالأثر: ماذا أطلق LDA
2003
نشر LDA
قدّم بلاي ونغ وجوردان نموذج تخصيص ديريكليه الكامن في مجلة JMLR. أول نموذج موضوعي بايزي توليدي متكامل يعتمد على الاستدلال المتغيّر.
2004
اعتيان غيبس المُنهار لـ LDA
طرح غريفيثس وستيفرز اعتيان غيبس المُنهار — أسلوب أبسط وانتشر بسرعة كبيرة. نُشر في PNAS تحت عنوان «اكتشاف المواضيع العلمية».
2006
نماذج المواضيع الديناميكية والمترابطة
وسّع بلاي ولافرتي نموذج LDA ليتتبّع تطور المواضيع عبر الزمن ويلتقط الترابطات بينها، فتولّدت عائلة غنية من النماذج المشتقة.
2010
LDA الفوري
قدّم هوفمان وبلاي وباخ الاستدلال المتغيّر العشوائي لنموذج LDA، ممّا أتاح التعامل مع ملايين المستندات عبر معالجة دفعات صغيرة بدلاً من المجموعة كاملة.
2013
Word2Vec — مسار مختلف
تعلّم Word2Vec لميكولوف تضمينات الكلمات عبر التنبؤ بدلاً من النمذجة التوليدية. لاحقاً سيتلاقى المساران — نماذج المواضيع والتضمينات — في نماذج المواضيع العصبية.
2014
LDA في المعلوماتية الحيوية
طبّق الباحثون LDA على بيانات التعبير الجيني بمعاملة الجينات كـ«كلمات» وعيّنات الخلايا كـ«مستندات»، فاكتشف النموذج تلقائياً بصمات أنواع الخلايا.
2017
نماذج المواضيع العصبية (ProdLDA)
استبدل سريفاستافا وسوتون الاستدلال المتغيّر بمُرمِّز على نمط المُرمِّز التلقائي المتغيّر، فانتقل LDA إلى عصر التعلّم العميق.
تأثير LDA يتجاوز نمذجة المواضيع بكثير. إطاره في تحوّل إلى قالب تتبعه أساليب التقريب البايزي عموماً. وفكرة العضوية المختلطة — أنّ المستند ينتمي لعدة مجموعات في آنٍ واحد — ألهمت نماذج مشابهة في علم الوراثة وتحليل الشبكات الاجتماعية و. أمّا جوهر الفكرة — أنّ الأنماط التي نرصدها تنشأ من اختيارات فئوية كامنة تحكمها توزيعات مسبقة مستمرة — فهو المبدأ نفسه الذي يقوم عليه المُرمِّز التلقائي المتغيّر و الحديثة.
المرجعBlei, Ng, Jordan. Latent Dirichlet Allocation. JMLR, 2003.
مصطلحات هذه الورقة
- نموذج المواضيعTopic Model
- توزيع ديريكليهDirichlet Distribution
- المتغير الكامنLatent Variable
- الاستدلال الاحتمالي المتغيِّرVariational Inference
- النموذج التوليديGenerative Model
- حقيبة الكلماتBag of Words
- المستند الرقميDocument
- المدونة النصيةCorpus
- الاحتمال البعدي الـمُحدثPosterior
- الاحتمال القبلي المبدئيPrior
- الأرجحيةLikelihood
- الحد الأدنى الاختلافيELBO
- تقدير الأرجحية القصوىMaximum Likelihood Estimation
- تباعد KLKL Divergence
- عيّنة غيبسGibbs Sampling