خوارزمية التقديم والتراجع
خوارزمية التقديم والتراجع هي خوارزمية استدلال لنماذج ماركوف المخفية، تقوم بحساب التوزيعات الهامشية اللاحقة لجميع متغيرات الحالة المخفية بالنظر إلى سلسلة من الملاحظات/الانبعاثات.أي أنه يحسب، لجميع متغيرات الحالة المخفية، التوزيعتُعرف مهمة الاستدلال هذه عادةً باسم التنعيم . تستخدم الخوارزمية مبدأ البرمجة الديناميكية لحساب القيم المطلوبة بكفاءة للحصول على التوزيعات الهامشية اللاحقة في مرحلتين. المرحلة الأولى تتقدم زمنيًا بينما الثانية تتراجع زمنيًا؛ ومن هنا جاء اسم خوارزمية التقدم والتراجع .
يُستخدم مصطلح "الخوارزمية الأمامية-الخلفية" أيضًا للإشارة إلى أي خوارزمية تنتمي إلى فئة الخوارزميات العامة التي تعمل على نماذج التسلسل بطريقة أمامية-خلفية. وبهذا المعنى، فإن الأوصاف الواردة في بقية هذه المقالة لا تُشير إلا إلى حالة محددة من هذه الفئة.
ملخص
في المرحلة الأولى، تحسب خوارزمية التمرير الأمامي-الخلفي مجموعة من الاحتمالات الأمامية التي توفر، لجميع، احتمال الوصول إلى أي حالة معينة بالنظر إلى الحالة الأولىالملاحظات في التسلسل، أيفي المرحلة الثانية، تحسب الخوارزمية مجموعة من الاحتمالات العكسية التي توفر احتمالية رصد المشاهدات المتبقية بالنظر إلى أي نقطة بداية.، أيويمكن بعد ذلك دمج مجموعتي التوزيعات الاحتمالية هاتين للحصول على التوزيع على الحالات في أي نقطة زمنية محددة بالنظر إلى سلسلة الملاحظات الكاملة:
وتنتج الخطوة الأخيرة عن تطبيق قاعدة بايز والاستقلال الشرطي لـومنح.
كما هو موضح أعلاه، تتضمن الخوارزمية ثلاث خطوات:
- حساب الاحتمالات الأمامية
- حساب الاحتمالات العكسية
- حساب القيم المُعدّلة.
يمكن تسمية خطوتي التمرير الأمامي والخلفي أيضًا بـ "تمرير الرسالة الأمامي" و"تمرير الرسالة الخلفي" - وتعود هذه المصطلحات إلى آلية تمرير الرسائل المستخدمة في مناهج نشر المعتقدات العامة . عند كل ملاحظة في التسلسل، تُحسب الاحتمالات المستخدمة في الحسابات عند الملاحظة التالية. ويمكن حساب خطوة التنعيم بالتزامن مع التمرير الخلفي. تُمكّن هذه الخطوة الخوارزمية من مراعاة أي ملاحظات سابقة للمخرجات للحصول على نتائج أكثر دقة.
يمكن استخدام خوارزمية التقديم والتراجع لإيجاد الحالة الأكثر احتمالاً لأي نقطة زمنية. ومع ذلك، لا يمكن استخدامها لإيجاد التسلسل الأكثر احتمالاً للحالات (انظر خوارزمية فيتربي ).
الاحتمالات المستقبلية
سيستخدم الوصف التالي مصفوفات قيم الاحتمالات بدلاً من توزيعات الاحتمالات. ومع ذلك، يمكن تطبيق خوارزمية التقديم والتراجع بشكل عام على نماذج الاحتمالات المستمرة والمتقطعة.
نقوم بتحويل التوزيعات الاحتمالية المتعلقة بنموذج ماركوف المخفي المعطى إلى ترميز المصفوفات كما يلي. احتمالات الانتقاللمتغير عشوائي معينسيتم تمثيل جميع الحالات الممكنة في نموذج ماركوف المخفي بواسطة المصفوفةحيث فهرس العمودسيمثل الحالة المستهدفة وفهرس الصفيمثل حالة البداية. انتقال من حالة متجه الصفإلى حالة متجه الصف المتزايدةتُكتب على النحو التالي:يمثل المثال أدناه نظامًا تبلغ فيه احتمالية البقاء في الحالة نفسها بعد كل خطوة 70%، بينما تبلغ احتمالية الانتقال إلى الحالة الأخرى 30%. وبالتالي، تكون مصفوفة الانتقال كما يلي:
في نموذج ماركوف التقليدي، نضرب متجه الحالة بهذه المصفوفة للحصول على احتمالات الحالة اللاحقة. أما في نموذج ماركوف المخفي، فتكون الحالة غير معروفة، ونراقب بدلاً من ذلك الأحداث المرتبطة بالحالات الممكنة. مصفوفة الأحداث على الشكل التالي:
يُحدد هذا الاحتمال احتمالات رصد الأحداث في حالة معينة. في المثال أعلاه، سيتم رصد الحدث 1 بنسبة 90% إذا كنا في الحالة 1، بينما تبلغ احتمالية وقوع الحدث 2 في هذه الحالة 10%. في المقابل، سيتم رصد الحدث 1 بنسبة 20% فقط إذا كنا في الحالة 2، وتبلغ احتمالية وقوع الحدث 2 في هذه الحالة 80%. بافتراض وجود متجه صفّي عشوائي يصف حالة النظام ()، وبالتالي فإن احتمال رصد الحدث j هو:
يمكن تمثيل احتمالية أن تؤدي حالة معينة إلى الحدث المرصود j في شكل مصفوفة عن طريق ضرب متجه صف الحالة () مع مصفوفة الملاحظة () تحتوي على عناصر قطرية فقط. وبالاستمرار في المثال السابق، ستكون مصفوفة الملاحظات للحدث 1 كما يلي:
وهذا يسمح لنا بحساب متجه الحالة الجديد للاحتمالات غير المعياريةمن خلال قاعدة بايز، يتم ترجيح كل عنصر من عناصرالحدث المُنشأ رقم 1 كالتالي:
يمكننا الآن جعل هذا الإجراء العام خاصًا بسلسلة ملاحظاتنا. بافتراض متجه حالة ابتدائي، (والتي يمكن تحسينها كمعامل من خلال تكرار إجراء التقديم والتراجع)، نبدأ بـثم تحديث توزيع الحالة وترجيحها بناءً على احتمالية الملاحظة الأولى:
يمكن مواصلة هذه العملية بإجراء ملاحظات إضافية باستخدام:
هذه القيمة هي متجه الاحتمالية غير المعياري الأمامي . العنصر رقم i من هذا المتجه يُعطي ما يلي:
عادةً، نقوم بتطبيع متجه الاحتمالية في كل خطوة بحيث يكون مجموع عناصره مساوياً لـ 1. وبالتالي، يتم إدخال عامل قياس في كل خطوة بحيث:
أينيمثل المتجه المُقاس من الخطوة السابقة ويمثل عامل القياس الذي يجعل مجموع عناصر المتجه الناتج يساوي 1. حاصل ضرب عوامل القياس هو الاحتمال الكلي لملاحظة الأحداث المعطاة بغض النظر عن الحالات النهائية:
وهذا يسمح لنا بتفسير متجه الاحتمالية المُقاس على النحو التالي:
وبالتالي نجد أن حاصل ضرب عوامل القياس يوفر لنا الاحتمال الكلي لملاحظة التسلسل المعطى حتى الوقت t وأن متجه الاحتمال المقاس يوفر لنا احتمال التواجد في كل حالة في هذا الوقت.
الاحتمالات العكسية
يمكن اتباع إجراء مماثل لإيجاد الاحتمالات العكسية. وتهدف هذه الإجراءات إلى توفير الاحتمالات التالية:
أي أننا نريد الآن أن نفترض أننا نبدأ في حالة معينة (ونحن الآن مهتمون باحتمالية رصد جميع الأحداث المستقبلية من هذه الحالة. وبما أن الحالة الابتدائية مفترضة كمعطى (أي أن الاحتمالية المسبقة لهذه الحالة = 100%)، فإننا نبدأ بما يلي:
لاحظ أننا نستخدم الآن متجه عمودي بينما كانت الاحتمالات الأمامية تستخدم متجهات صفية. يمكننا بعد ذلك العمل عكسيًا باستخدام:
على الرغم من إمكانية تطبيع هذا المتجه بحيث يكون مجموع عناصره واحدًا، إلا أن هذا لا يُفعل عادةً. مع ملاحظة أن كل عنصر يحتوي على احتمالية تسلسل الأحداث المستقبلية بالنظر إلى حالة ابتدائية معينة، فإن تطبيع هذا المتجه يُعادل تطبيق نظرية بايز لإيجاد احتمالية كل حالة ابتدائية بالنظر إلى الأحداث المستقبلية (بافتراض توزيعات احتمالية أولية منتظمة لمتجه الحالة النهائية). ومع ذلك، من الشائع أكثر قياس هذا المتجه باستخدام نفسالثوابت المستخدمة في حسابات الاحتمالية الأمامية. لا يتم توسيع نطاقها، ولكن العمليات اللاحقة تستخدم:
أينيمثل المتجه السابق بعد تعديله. ونتيجة لذلك، يرتبط متجه الاحتمالية المعدل بالاحتمالات العكسية بالعلاقة التالية:
هذا مفيد لأنه يسمح لنا بإيجاد الاحتمالية الإجمالية للتواجد في كل حالة في وقت معين، t، عن طريق ضرب هذه القيم:
ولفهم ذلك، نلاحظ أنيُحدد هذا الاحتمال احتمالية رصد الأحداث المعطاة بطريقة تمر عبر الحالةعند الزمن t. يشمل هذا الاحتمال الاحتمالات الأمامية التي تغطي جميع الأحداث حتى الزمن t، بالإضافة إلى الاحتمالات الخلفية التي تشمل جميع الأحداث المستقبلية. هذا هو البسط الذي نبحث عنه في معادلتنا، ونقسمه على الاحتمال الكلي لتسلسل الملاحظات لتطبيع هذه القيمة واستخراج الاحتمال فقط.تُسمى هذه القيم أحيانًا "القيم المُنعّمة" لأنها تجمع بين الاحتمالات الأمامية والخلفية لحساب الاحتمال النهائي.
القيموبالتالي، توفر هذه الاحتمالات احتمالية التواجد في كل حالة عند الزمن t. ولذلك، فهي مفيدة لتحديد الحالة الأكثر احتمالاً في أي وقت. مصطلح "الحالة الأكثر احتمالاً" غامض إلى حد ما. فبينما تكون الحالة الأكثر احتمالاً هي الحالة التي يُرجح أن تكون صحيحة عند نقطة معينة، فإن تسلسل الحالات المحتملة بشكل فردي ليس بالضرورة أن يكون التسلسل الأكثر احتمالاً. هذا لأن احتمالات كل نقطة تُحسب بشكل مستقل عن بعضها البعض. فهي لا تأخذ في الاعتبار احتمالات الانتقال بين الحالات، وبالتالي من الممكن الحصول على حالات عند لحظتين (t و t+1) تكون كلتاهما الأكثر احتمالاً عند هاتين النقطتين الزمنيتين، ولكن احتمالية حدوثهما معًا ضئيلة للغاية.يمكن إيجاد التسلسل الأكثر احتمالاً للحالات التي أنتجت تسلسل الملاحظات باستخدام خوارزمية فيتربي .
مثال
يستند هذا المثال إلى مفهوم "عالم المظلات" الوارد في كتاب راسل ونورفيج (2010)، الفصل 15، صفحة 567، حيث نرغب في استنتاج حالة الطقس من خلال ملاحظة شخص آخر يحمل مظلة أو لا يحملها. نفترض حالتين محتملتين للطقس: الحالة 1 = مطر، الحالة 2 = لا مطر. نفترض أن احتمالية بقاء حالة الطقس على حالها يوميًا هي 70%، واحتمالية تغيرها هي 30%. وبالتالي، تكون احتمالات الانتقال كما يلي:
نفترض أيضاً أن كل حالة تُنتج أحد حدثين محتملين: الحدث 1 = مظلة، الحدث 2 = لا مظلة. وتُعطى الاحتمالات الشرطية لحدوث هذين الحدثين في كل حالة بواسطة مصفوفة الاحتمالات التالية:
ثم نلاحظ التسلسل التالي للأحداث: {مظلة، مظلة، لا مظلة، مظلة، مظلة} والذي سنمثله في حساباتنا على النحو التالي:
لاحظ أنيختلف عن الآخرين بسبب ملاحظة "عدم وجود مظلة".
في حساب الاحتمالات المستقبلية، نبدأ بما يلي:
وهو متجه الحالة المسبقة الذي يشير إلى أننا لا نعرف حالة الطقس قبل إجراء عمليات الرصد. مع أن متجه الحالة يُفترض أن يُعطى كمتجه صف، سنستخدم منقولة المصفوفة لتسهيل قراءة الحسابات أدناه. تُكتب حساباتنا على النحو التالي:
بدلاً من:
لاحظ أن مصفوفة التحويل تُنقل أيضًا، ولكن في مثالنا، تكون المصفوفة المنقولة مساوية للمصفوفة الأصلية. بإجراء هذه الحسابات وتطبيع النتائج، نحصل على:
بالنسبة للاحتمالات العكسية، نبدأ بما يلي:
وبذلك نتمكن من الحساب (باستخدام الملاحظات بترتيب عكسي وتطبيعها بثوابت مختلفة):
وأخيرًا، سنحسب قيم الاحتمالية المُعدّلة. يجب أيضًا تعديل هذه النتائج بحيث يكون مجموع عناصرها مساويًا لـ 1، لأننا لم نقم بتعديل احتمالات التراجع باستخدامتم العثور على ذلك سابقًا. وبالتالي، فإن متجهات الاحتمال العكسي المذكورة أعلاه تمثل في الواقع احتمالية كل حالة عند الزمن t بالنظر إلى الملاحظات المستقبلية. ولأن هذه المتجهات تتناسب مع الاحتمالات العكسية الفعلية، يجب تعديل النتيجة مرة إضافية.
لاحظ أن قيمةيساويوذلكيساويوهذا أمر طبيعي لأن كليهماوابدأ بتوزيعات احتمالية أولية منتظمة على متجهات الحالة الابتدائية والنهائية (على التوالي) وخذ في الاعتبار جميع الملاحظات. ومع ذلك،لن يكون مساوياً إلا لـعندما يمثل متجه الحالة الأولية لدينا توزيعًا احتماليًا منتظمًا (أي أن جميع المدخلات متساوية). عندما لا يكون الأمر كذلكيجب دمج هذه البيانات مع متجه الحالة الابتدائية لإيجاد الحالة الابتدائية الأكثر احتمالاً. وبذلك، نجد أن احتمالات التقدم وحدها كافية لحساب الحالة النهائية الأكثر احتمالاً. وبالمثل، يمكن دمج احتمالات التراجع مع متجه الحالة الابتدائية لتوفير الحالة الابتدائية الأكثر احتمالاً بالنظر إلى الملاحظات. يكفي دمج احتمالات التقدم والتراجع لاستنتاج الحالات الأكثر احتمالاً بين النقطتين الابتدائية والنهائية.
تُظهر الحسابات أعلاه أن حالة الطقس الأكثر احتمالاً في كل يوم باستثناء اليوم الثالث كانت "المطر". لكنها تُخبرنا بأكثر من ذلك، إذ تُتيح لنا الآن طريقةً لتحديد احتمالات كل حالة في أوقات مختلفة. ولعل الأهم من ذلك، هو قيمتنا عنديُحدد هذا المقياس معرفتنا بمتجه الحالة في نهاية سلسلة الملاحظات. ويمكننا بعد ذلك استخدام هذه المعرفة للتنبؤ باحتمالية حدوث مختلف حالات الطقس غدًا، بالإضافة إلى احتمالية رؤية مظلة.
أداء
تعمل خوارزمية التقديم والترجيع بتعقيد زمنيفي الفضاء، أينيمثل طول التسلسل الزمني ويمثل عدد الرموز في أبجدية الحالة. [ 1 ] يمكن أيضًا تشغيل الخوارزمية في مساحة ثابتة مع تعقيد زمنيعن طريق إعادة حساب القيم في كل خطوة. [ 2 ] للمقارنة، فإن إجراء البحث الشامل سيولد جميع القيم الممكنةتسلسل الحالات وحساب الاحتمالية المشتركة لكل تسلسل حالة مع سلسلة الأحداث المرصودة، وهو ما سيكون له تعقيد زمني. إن استخدام القوة الغاشمة أمر غير قابل للتطبيق في المشاكل الواقعية، حيث أن عدد تسلسلات العقد المخفية المحتملة عادة ما يكون مرتفعًا للغاية.
يُعدّ تحسين خوارزمية التقديم والتراجع العامة، والتي تُسمى خوارزمية الجزيرة ، بديلاً عن تقليل استخدام الذاكرة وزيادة وقت التشغيل، حيث تأخذالوقت والذاكرة. علاوة على ذلك، من الممكن عكس نموذج العملية للحصول علىفضاء،خوارزمية الوقت، على الرغم من أن العملية المعكوسة قد لا تكون موجودة أو قد تكون سيئة التكييف . [ 3 ]
بالإضافة إلى ذلك، تم تطوير خوارزميات لحساببكفاءة من خلال التنعيم عبر الإنترنت مثل خوارزمية التنعيم ذات التأخير الثابت (FLS). [ 4 ]
الشفرة الزائفة
خوارزمية التقديم والترجيع هي المدخل: guessState int sequenceIndex output: resultإذا تجاوز مؤشر التسلسل نهاية التسلسل ، فأرجع 1. إذا سبق رؤية ( guessState ، sequenceIndex ) ، فأرجع النتيجة المحفوظة .النتيجة := 0 لكل حالة مجاورة n: النتيجة := النتيجة + (احتمالية الانتقال من حالة التخمين إلى (n عنصر الملاحظة المعطاة في فهرس التسلسل ) × Backward(n, sequenceIndex + 1) حفظ النتيجة لـ ( guessState ، sequenceIndex ) إرجاع النتيجة
مثال بايثون
بافتراض وجود نموذج ماركوف المخفي (كما هو الحال في خوارزمية فيتربي ) ممثلاً بلغة برمجة بايثون :
states = ( "صحي" , "حمى" ) end_state = "E"الملاحظات = ( "طبيعي" ، "بارد" ، "دوار" )احتمالية_البداية = { "صحي" : 0.6 , "حمى" : 0.4 }احتمالية_الانتقال = { "صحي" : { "صحي" : 0.69 , "حمى" : 0.3 , "E" : 0.01 }, "حمى" : { "صحي" : 0.4 , "حمى" : 0.59 , "E" : 0.01 }, }احتمالية_الانبعاث = { "صحي" : { "طبيعي" : 0.5 , "زكام" : 0.4 , "دوار" : 0.1 }, "حمى" : { "طبيعي" : 0.1 , "زكام" : 0.3 , "دوار" : 0.6 }, }يمكننا كتابة تطبيق خوارزمية التقديم والترجيع على النحو التالي:
دالة fwd_bkw ( الملاحظات ، الحالات ، احتمال_البداية ، احتمال_التحول ، احتمال_الانحراف_المتوسط ، حالة_النهاية ): """خوارزمية التقديم والتراجع.""" # الجزء الأمامي من الخوارزمية fwd = [] for i , observation_i in enumerate ( الملاحظات ): f_curr = {} for st in الحالات : if i == 0 : # الحالة الأساسية للجزء الأمامي prev_f_sum = احتمال_البداية [ st ] else : prev_f_sum = مجموع ( f_prev [ k ] * احتمال_التحول [ k ][ st ] for k in الحالات )f_curr [ st ] = emm_prob [ st ][ observation_i ] * prev_f_sumfwd.append ( f_curr ) f_prev = f_currp_fwd = sum ( f_curr [ k ] * trans_prob [ k ][ end_st ] for k in states )# الجزء العكسي من الخوارزمية bkw = [] for i , observation_i_plus in enumerate ( reversed ( observations [ 1 :] + ( None ,))): b_curr = {} for st in states : if i == 0 : # الحالة الأساسية للجزء العكسي b_curr [ st ] = trans_prob [ st ][ end_st ] else : b_curr [ st ] = sum ( trans_prob [ st ][ l ] * emm_prob [ l ][ observation_i_plus ] * b_prev [ l ] for l in states )bkw.insert ( 0 , b_curr ) b_prev = b_currp_bkw = sum ( start_prob [ l ] * emm_prob [ l ][ observations [ 0 ]] * b_curr [ l ] for l in states )# دمج الجزأين posterior = [] for i in range ( len ( observations )): posterior . append ({ st : fwd [ i ][ st ] * bkw [ i ][ st ] / p_fwd for st in states })تحقق من أن p_fwd يساوي p_bkw ، ثم أرجع fwd و bkw و posteriorتأخذ الدالة fwd_bkwالوسائط التالية: xهي سلسلة الملاحظات، على سبيل المثال ['normal', 'cold', 'dizzy']؛ statesهي مجموعة الحالات المخفية ؛ a_0هي احتمالية البداية ؛ aهي احتمالات الانتقال ؛ و eهي احتمالات الانبعاث.
لتبسيط الكود، نفترض أن سلسلة الملاحظات xغير فارغة وأن a[i][j]و e[i][j]معرفة لجميع الحالات i و j.
في المثال العملي، يتم استخدام خوارزمية التقديم والترجيع على النحو التالي:
def example (): return fwd_bkw ( observations , states , start_probability , transition_probability , emission_probability , end_state , )>>> for line in example (): ... print ( * line ) ... {'Healthy': 0.3, 'Fever': 0.04000000000000001} {'Healthy': 0.0892, 'Fever': 0.03408} {'Healthy': 0.007518, 'Fever': 0.028120319999999997} {'Healthy': 0.0010418399999999998, 'Fever': 0.00109578} {'Healthy': 0.00249, 'Fever': 0.00394} {'Healthy': 0.01, 'Fever': 0.01} {'Healthy': {'صحي': 0.8770110375573259، 'حمى': 0.1229889624426741} {'صحي': 0.623228030950954، 'حمى': 0.3767719690490461} {'صحي': 0.2109527048413057، 'حمى': 0.7890472951586943}انظر أيضاً
مراجع
- ↑ راسل ونورفيج 2010، ص 579
- ↑ راسل ونورفيج 2010، ص 575
- ↑ بايندر، جون؛ مورفي، كيفن؛ راسل، ستيوارت (1997). "الاستدلال الفعال من حيث المساحة في الشبكات الاحتمالية الديناميكية" (ملف PDF) . المؤتمر الدولي المشترك حول الذكاء الاصطناعي . تم الاطلاع عليه بتاريخ 8 يوليو 2020 .
- ↑ راسل ونورفيج 2010 الشكل 15.6 صفحة 580
- لورانس ر. رابينر ، دليل تعليمي حول نماذج ماركوف المخفية وتطبيقات مختارة في التعرف على الكلام. وقائع معهد مهندسي الكهرباء والإلكترونيات ، 77 (2)، ص 257-286، فبراير 1989. 10.1109/5.18626
- لورانس ر. رابينر، بي إتش جوانج (يناير 1986). “مقدمة لنماذج ماركوف المخفية”. مجلة IEEE ASSP : 4-15 .
- يوجين شارنياك (1993). التعلم الإحصائي للغة . كامبريدج، ماساتشوستس: مطبعة معهد ماساتشوستس للتكنولوجيا. ISBN 978-0-262-53141-2.
- ستيوارت راسل وبيتر نورفيج (2010). الذكاء الاصطناعي: منهج حديث، الطبعة الثالثة . أبر سادل ريفر، نيو جيرسي: بيرسون إديوكيشن/برنتيس هول. ISBN 978-0-13-604259-4.
روابط خارجية
- جدول بيانات تفاعلي لتعليم خوارزمية التقديم والترجيع (جدول بيانات ومقال مع شرح تفصيلي خطوة بخطوة)
- شرح نماذج ماركوف المخفية بما في ذلك خوارزمية التقديم والتراجع
- مجموعة من خوارزميات الذكاء الاصطناعي المطبقة بلغة جافا (بما في ذلك نموذج ماركوف المخفي وخوارزمية التقديم والتراجع).
- البرمجة الديناميكية
- اكتشاف الأخطاء وتصحيحها
- خوارزميات التعلم الآلي
- نماذج ماركوف
