أساسيات تعلم الآلة1989متوسط13 دقيقة قراءة
دليل تعليمي في نماذج ماركوف المخفية وتطبيقاتها في التعرّف على الكلام
A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition
Rabiner, L. R. — Proceedings of the IEEE
المشكلة
كثير من الإشارات التي نتعامل معها — موجات الكلام، التسلسلات البيولوجية، البيانات المالية — تُولِّدها أنظمة لا نرى حالاتها الداخلية، وكل ما يصلنا هو المُخرَجات فقط. سلاسل ماركوف العادية تستطيع نمذجة تعاقب الحالات، لكنها تفترض أننا نرى الحالات مباشرةً. المشكلة تظهر حين تكون الحالات مخفية ولا نملك إلا مُشاهَدات مُشوَّشة: نحتاج عندها إلى إطار رياضي يُمكّننا من (1) قياس مدى توافق تسلسل مُشاهَدات مع نموذج مُعيَّن، (2) استنتاج أفضل تسلسل حالات مخفية، (3) تعلّم معاملات من البيانات — وكل ذلك بكفاءة حسابية مقبولة.
الإسهام
دليل تعليمي شامل يجمع بين النظرية والتطبيق العملي لنماذج ماركوف المخفية في مرجع واحد. يطرح رابينر ثلاث مسائل جوهرية مع حلولها: لحساب المُشاهَدات، لاستخراج أرجح تسلسل حالات مخفية، (وهي خاصة من تعظيم التوقع) لتعلّم معاملات النموذج. ثم يُطبِّق هذه الأدوات على ثلاثة مستويات من : الكلمات المعزولة، والكلمات المتصلة، والكلام المستمر — فأصبحت هذه النماذج المنهج السائد في التعرّف على الكلام طوال العقدين التاليين.
الأثر
أصبح هذا الدليل المرجع الأكثر اقتباساً في مجال نماذج ماركوف المخفية ضمن الهندسة وعلوم الحاسوب، بأكثر من 30,000 استشهاد. تعلّم على يديه جيلٌ كامل من الباحثين والمهندسين أسس نمذجة التسلسلات الاحتمالية. الأنظمة التجارية للتعرّف على الكلام مثل Dragon وAT&T وNuance بُنيت على هذا الإطار واستمرت حتى حلّ محلها التعلّم العميق نحو عام 2012. والأدوات الرياضية التي وحّدها رابينر — ، وتعظيم التوقع، ونماذج المتغيرات الكامنة — لا تزال ركائز أساسية في نماذج التسلسلات الحديثة كالحقول الشرطية العشوائية وآليات الانتباه.
تخيّل أن صديقك يطبخ خلف باب مطبخ مُغلق. لا تراه — لكنك تسمع قرقعة الأواني، وجريان الماء، وصفير الفرن، وأزيز الزيت. من الأصوات وحده تحاول أن تُعيد بناء خطوات الوصفة: تقطيع ← سلق ← قلي ← خَبز.
هذا تماماً ما يفعله . خطوات الوصفة تمثّل لا تراها بعينك. أصوات المطبخ هي المُشاهَدات — أدلّة غير مباشرة ومُشوَّشة. وأنت تعرف من خبرتك أن التقطيع يقود غالباً إلى السلق وليس إلى الخَبز مباشرةً، أي أن هناك احتمالات انتقال تحكم التنقل بين الحالات. يُتيح لك هذا الإطار ثلاثة أشياء: تقييم مدى معقولية تسلسل أصوات مُعيَّن، واستنتاج الوصفة الأرجح، وتعلّم أنماط الطبخ من تجارب كثيرة.
من سلاسل ماركوف إلى الحالات المخفية
نظام ينتقل بين مجموعة محدودة من الحالات، وقاعدته الأساسية أن الحالة التالية تعتمد فقط على الحالة الحالية ولا علاقة لها بما سبق. هذه الخاصية — التي نسمّيها «انعدام الذاكرة» — هي ما يجعل التحليل الرياضي ممكناً وسهل التتبّع.
لنأخذ مثالاً بسيطاً: نموذج طقس. طقس اليوم (مُشمس أو ماطر) يتحكّم في طقس الغد. إذا كان اليوم مُشمساً فاحتمال أن يكون الغد مُشمساً 70% وأن يكون ماطراً 30%. هذه الاحتمالات نُنظّمها في الانتقال ، حيث يُعبّر العنصر عن من الحالة إلى الحالة .
السؤال الآن: ماذا لو لم نستطع رؤية الطقس مباشرةً، وكل ما نلاحظه هو أن زميلنا يحمل مظلة أو لا يحملها؟ هنا يصبح الطقس حالة مخفية، والمظلة تصبح المُشاهَدة. هذه هي الفكرة المحورية في نماذج ماركوف المخفية: الحالات لا تُرى، وعلينا أن نستنتجها من إشارات غير مباشرة ومُشوَّشة.
العناصر الخمسة لنموذج ماركوف المخفي
يتحدّد نموذج ماركوف المخفي بالكامل من خلال خمسة مكوّنات، نختصرها بالرمز :
- — عدد الحالات المخفية. في تطبيقات الكلام مثلاً، كل حالة قد تمثّل مقطعاً صوتياً معيّناً. نرمز للحالات بـ .
- — عدد رموز المُشاهَدة الممكنة. لو كمّمنا إشارة الكلام إلى دفتر ترميز من 256 مُدخلاً، يصبح .
- — مصفوفة احتمالات الانتقال بين الحالات. العنصر يُعبّر عن احتمال أن ينتقل النظام من الحالة إلى الحالة .
- — احتمالات المُشاهَدة (الإصدار). العنصر يُحدّد احتمال أن تُصدِر الحالة الرمز . تخيّل أن لكل حالة «بصمة» مميّزة تُحدّد أي المُشاهَدات تميل لإنتاجها.
- — التوزيع الابتدائي. هو احتمال أن يبدأ النظام من الحالة .
المسائل الأساسية الثلاث
بنى رابينر أدوات نماذج ماركوف المخفية كلها حول ثلاثة أسئلة محورية. أي تطبيق — سواء في التعرّف على الكلام أو اكتشاف الجينات — يرتبط بواحدة أو أكثر من هذه المسائل:
المسألة الأولى — التقييم: إذا كان لدينا نموذج وتسلسل مُشاهَدات ، فما قيمة ؟ ببساطة: ما مدى توافق هذا النموذج مع هذه المُشاهَدات؟ نستخدم هذا لمقارنة عدة نماذج واختيار الأنسب.
المسألة الثانية — فكّ الترميز: إذا عرفنا و، فما أرجح تسلسل حالات مخفية؟ أي: ماذا كان يجري خلف الكواليس على الأرجح؟ هذه مسألة — الكشف عن القصة المخفية وراء المُشاهَدات.
المسألة الثالثة — : إذا كانت لدينا تسلسلات مُشاهَدات فقط، فكيف نضبط بحيث نُعظِّم ؟ أي: كيف ندرّب النموذج من البيانات؟ هذه مسألة .
المسألة الأولى: خوارزمية الأمام-الخلف
لو أردنا حساب بطريقة القوة الغاشمة، سنحتاج إلى المرور على جميع تسلسلات الحالات الممكنة — وعددها حيث عدد الخطوات الزمنية و عدد الحالات. لو و، فالنتيجة مسار: رقم فلكي لا يمكن حسابه.
الأمام تحلّ هذه المسألة بزمن بفضل البرمجة الديناميكية. الفكرة بسيطة وأنيقة: نُعرِّف متغير الأمام ، وهو احتمال أن نرى أول مُشاهَدة وأن نكون في الحالة عند اللحظة . ثم نبنيه تدريجياً:
- التهيئة: — نضرب احتمال البدء في احتمال الإصدار.
- التكرار: — نجمع كل المسارات التي تصل إلى الحالة ، ثم نضرب الناتج في احتمال الإصدار.
- الإنهاء: .
تخيّل الأمر كشبكة أنابيب يتدفق فيها ماء: عند كل خطوة زمنية، كمية الماء التي تصل إلى الحالة هي مجموع ما يأتي من كل الأنابيب المُغذية، مضروباً في مدى احتمالية أن تُصدِر الصوت الذي لاحظناه.
خوارزمية الخلف هي المرآة المقابلة: نُعرِّف ، أي احتمال المُشاهَدات المستقبلية إذا علمنا أننا في الحالة الآن. هذا المتغيّر يُحسب بشكل عكسي من الزمن رجوعاً إلى الزمن 1. وحده لا يكفي لحل مسألة التقييم، لكن حين ندمجه مع نحصل على الاحتمال للتواجد في أي حالة عند أي لحظة: . هذا الاحتمال اللاحق هو الأداة الأساسية التي تحتاجها خوارزمية التعلّم (المسألة الثالثة).
المسألة الثانية: خوارزمية فيتربي
خوارزمية الأمام تجمع جميع المسارات — وهذا ممتاز للتقييم، لكنه لا يُخبرنا أي مسار بالتحديد هو الأرجح. خوارزمية فيتربي تُشبهها في البنية تماماً، لكنها تستبدل الجمع بعملية الأقصى (max):
بدلاً من جمع كل المسارات الواردة، نحتفظ فقط بـالأفضل — ونُسجّل مؤشراً مرجعياً حتى نتمكن من تتبّع المسار الفائز عند الوصول إلى النهاية.
تخيّل الأمر كسباق تتابع: عند كل نقطة تسليم، كل عدّاء (حالة) يحفظ فقط مَن سلّمه العصا بأسرع وقت. حين نصل إلى خط النهاية، نرجع للخلف عبر سلسلة التسليمات لنعرف الفريق الأسرع.
المسألة الثالثة: التعلّم بخوارزمية باوم-وِلش (تعظيم التوقع)
كيف نجد أفضل وليس لدينا سوى تسلسلات مُشاهَدات دون أي تسميات للحالات؟ هذه مسألة كلاسيكية تُعرف بمسألة البيانات الناقصة، وخوارزمية باوم-وِلش — وهي حالة خاصة من خوارزمية تعظيم التوقع (EM) — تحلّها بأسلوب تكراري:
خطوة التوقع (E-step): نأخذ النموذج الحالي ونحسب العدد المُتوقَّع لمرات استخدام كل انتقال ، وكذلك العدد المُتوقَّع لمرات إصدار كل رمز من الحالة . هذه القيم المُتوقَّعة نستخرجها من الاحتمالات اللاحقة و، وكلتاهما تعتمد على متغيّري الأمام () والخلف ().
خطوة التعظيم (M-step): نُعيد تقدير و و بتطبيع تلك الأعداد المُتوقَّعة وتحويلها إلى احتمالات.
نُكرّر خطوتَي E وM حتى تتقارب قيمة . وقد أثبت باوم وزملاؤه ضماناً مهماً: — أي أن كل دورة إما تُحسّن الاحتمالية أو تُبقيها كما هي. بمعنى آخر، النموذج يصعد سطح الاحتمالية بشكل رتيب حتى يصل إلى .
نماذج ماركوف المخفية في الكلام: النماذج يسارية-يمينية
الكلام بطبيعته يسير في اتجاه واحد عبر الزمن — لا نقفز من نهاية الكلمة إلى بدايتها. هذا القيد الزمني يقودنا إلى النماذج اليسارية-اليمينية (أو نماذج باكِس)، حيث لا يُسمح لمؤشر الحالة إلا بالبقاء في مكانه أو التقدّم: حين . يستطيع النظام أن يمكث في حالة معيّنة (لنمذجة المدّة الزمنية للصوت) أو أن يتقدّم للأمام، لكنه لا يرجع أبداً.
عملياً، نُخصّص لكل كلمة في نموذج ماركوف مخفي يساري-يميني خاصاً بها، يتكوّن عادةً من 5 إلى 10 حالات. هذه الحالات تتوافق تقريباً مع المقاطع الصوتية للكلمة: الصامت الأول، ثم الصائت، ثم الصامت الأخير. توزيع الإصدار في كل حالة يصف الخصائص الطيفية لذلك المقطع.
آلية التعرّف بسيطة: نُشغّل مسألة التقييم (المسألة الأولى) على كل نموذج كلمة، ونختار الكلمة التي يمنحها نموذجها أعلى درجة: . أما تسلسل المُشاهَدات فنستخرجه من تحليل إشارة الكلام — غالباً باستخلاص مثل معاملات LPC الطيفية كل 10 ميلي ثانية ثم تكميمها متجهياً.
ثلاثة مستويات من التعرف على الكلام
يستعرض رابينر تطبيق نماذج ماركوف المخفية في ثلاث مهام تتصاعد في الصعوبة:
التعرّف على الكلمات المعزولة — وهو الأبسط. المتحدث ينطق كلمة واحدة كل مرة مع فواصل صمت بين الكلمات. ندرّب نموذجاً لكل كلمة في القاموس، ونحسب درجة كل نموذج مقابل المُدخل، ونختار صاحب الدرجة الأعلى. حُقّقت بهذا الأسلوب معدلات خطأ أقل من 1% في التعرّف على الأرقام.
التعرّف على الكلمات المتصلة — هنا ينطق المتحدث سلسلة كلمات دون فواصل، لكن من قاموس صغير معروف (كسلاسل الأرقام مثل «واحد خمسة سبعة»). النظام يربط نماذج الكلمات ببعضها في شبكة ويبحث عن أفضل مسار عبرها باستخدام نسخة مُعدَّلة من خوارزمية فيتربي.
التعرّف على الكلام المستمر — كلام طبيعي مفتوح بقاموس كبير وقواعد لغوية معقدة. يحتاج هذا المستوى إلى وحدات أصغر من الكلمة (فونيمات أو ثلاثيات فونيمية)، و لتضييق مساحة البحث، واستراتيجيات فكّ ترميز متقدّمة. ما يُميّز إطار نماذج ماركوف المخفية أن الخوارزميات ذاتها (الأمام، فيتربي، باوم-وِلش) تصلح للمستويات الثلاثة دون تعديل جوهري.
الخوارزميات في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def forward(A, B, pi, O):
"""خوارزمية الأمام: احسب P(O | lambda).
A: مصفوفة الانتقال (N, N)
B: مصفوفة الإصدار (N, M)
pi: التوزيع الابتدائي (N,)
O: مؤشرات المُشاهَدات (T,)
"""
N = A.shape[0]
T = len(O)
alpha = np.zeros((T, N))
# التهيئة
alpha[0] = pi * B[:, O[0]]
# التكرار
for t in range(T - 1):
for j in range(N):
alpha[t+1, j] = np.sum(alpha[t] * A[:, j]) * B[j, O[t+1]]
# الإنهاء: P(O | lambda)
return np.sum(alpha[-1]), alpha
def viterbi(A, B, pi, O):
"""فيتربي: جد أرجح تسلسل حالات.
يُرجع: أفضل_مسار، أعلى_احتمال
"""
N = A.shape[0]
T = len(O)
delta = np.zeros((T, N))
psi = np.zeros((T, N), dtype=int) # مؤشرات مرجعية
# التهيئة
delta[0] = pi * B[:, O[0]]
# التكرار: الأقصى بدل الجمع
for t in range(1, T):
for j in range(N):
scores = delta[t-1] * A[:, j]
psi[t, j] = np.argmax(scores) # مَن سلّم العصا بأسرع وقت
delta[t, j] = scores[psi[t, j]] * B[j, O[t]]
# التتبع للخلف
path = np.zeros(T, dtype=int)
path[-1] = np.argmax(delta[-1])
for t in range(T - 2, -1, -1):
path[t] = psi[t + 1, path[t + 1]]
return path, np.max(delta[-1])اعتبارات عملية: التقييس والمُشاهَدات المستمرة
عند التطبيق العملي لنماذج ماركوف المخفية تبرز مسألتان مهمتان:
الطفح السفلي العددي (Underflow). كلما طال التسلسل ، يصبح متغير الأمام صغيراً جداً لأنه حاصل ضرب احتمالات كثيرة. الحل المعتاد هو (تطبيع) عند كل خطوة زمنية بالقسمة على . بعدها نحسب لوغاريتم الاحتمالية من العلاقة . هذه الحيلة تُبقي الأرقام في نطاق عملي دون أن تُغيّر النتيجة النهائية.
المُشاهَدات المستمرة. نموذج المُشاهَدات المنفصلة (الذي يعتمد على رمز من دفتر ترميز) محدود الدقة. للحصول على تمثيل أغنى، نستبدل مصفوفة الإصدار المنفصلة بـنماذج مزيج غاوسي (GMM): . هنا كل حالة تُصدِر متجهات سمات مستمرة مسحوبة من مزيج توزيعات غاوسية. وصِيَغ إعادة تقدير باوم-وِلش تمتدّ طبيعياً لتشمل تحديث المتوسطات و وأوزان المزيج.
لماذا كانت هذه الورقة مفصلية
1966
باوم وبيتري
أسّسا الإطار الرياضي لنماذج ماركوف المخفية عبر العمل على التقدير الإحصائي للدوال الاحتمالية المرتبطة بسلاسل ماركوف.
1967
خوارزمية فيتربي
نشر أندرو فيتربي خوارزميته لفكّ ترميز الشفرات الالتفافية، ثم اعتُمدت لاحقاً الطريقة المعيارية لفكّ ترميز نماذج ماركوف المخفية.
1975
بيكر وجيلينك (CMU وIBM)
أول من طبّق نماذج ماركوف المخفية في التعرّف على الكلام، وأظهرا إمكانية التعرّف على الكلام المستمر بالاستعانة بنماذج لغوية إحصائية.
1989
دليل رابينر التعليمي
جمع النظرية والتطبيق في مرجع واحد شامل. تجاوزت اقتباساته 30,000 وتعلّم منه جيلٌ كامل من باحثي الكلام والتعلّم الآلي.
2001
الحقول الشرطية العشوائية (لافرتي وآخرون)
جاءت الحقول الشرطية العشوائية لتتجاوز قيود نماذج ماركوف المخفية، بتوفير تدريب تمييزي دون الحاجة لافتراض استقلالية المُشاهَدات.
2012
التعلم العميق يحلّ محل نماذج ماركوف المخفية
تفوّقت الشبكات العصبية العميقة مع تقنيتَي CTC والانتباه على أنظمة نماذج ماركوف المخفية في التعرّف على الكلام، لتُنهي هيمنةً استمرت نحو عقدين.
الأسس الرياضية التي أرستها نماذج ماركوف المخفية لا تزال حاضرة بقوة. الحقول الشرطية العشوائية مثلاً هي نموذج تمييزي تخلّص من افتراض استقلالية المُشاهَدات الذي كان يُقيّد نماذج ماركوف المخفية. وDeepSpeech 2 استبدل خط المعالجة بأكمله بـ شاملة من طرف إلى طرف. لكن الإطار المفاهيمي — متغيرات كامنة، ديناميكيات انتقال، نماذج مُشاهَدة، وثلاثية التقييم/فكّ الترميز/التعلّم — لا يزال يُشكّل لغة نمذجة التسلسلات حتى اليوم.
المرجعRabiner, L. R.. A Tutorial on Hidden Markov Models and Selected Applications in Speech Recognition. Proceedings of the IEEE, 1989.
مصطلحات هذه الورقة
- نموذج ماركوف المخفيHidden Markov Model
- سلسلة ماركوف الاحتماليةMarkov Chain
- خوارزمية الأمام-الخلفForward-Backward Algorithm
- خوارزمية فيتربيViterbi Algorithm
- خوارزمية باوم-وِلشBaum-Welch Algorithm
- خوارزمية التوقع والتعظيمEM Algorithm
- احتمال الانتقالTransition Probability
- ملاحظةObservation
- المتغير الكامنLatent Variable
- التعرّف على الكلامSpeech Recognition
- المتتاليةSequence
- البرمجة الديناميكيةDynamic Programming