البرمجة الاحتمالية

البرمجة الاحتمالية ( PP ) هي نموذج برمجي قائم على التحديد التصريحي للنماذج الاحتمالية ، حيث يتم الاستدلال تلقائيًا. [ 1 ] تسعى البرمجة الاحتمالية إلى توحيد النمذجة الاحتمالية والبرمجة العامة التقليدية لتسهيل الأولى وتوسيع نطاق تطبيقها. [ 2 ] [ 3 ] يمكن استخدامها لإنشاء أنظمة تساعد في اتخاذ القرارات في ظل عدم اليقين. تُعرف لغات البرمجة التي تتبع نموذج البرمجة الاحتمالية باسم "لغات البرمجة الاحتمالية" (PPLs).

التطبيقات

استُخدم الاستدلال الاحتمالي في مجموعة واسعة من المهام، مثل التنبؤ بأسعار الأسهم، والتوصية بالأفلام، وتشخيص أعطال الحواسيب، والكشف عن الاختراقات الإلكترونية، والتعرف على الصور. [ 4 ] ومع ذلك، وحتى وقت قريب (بسبب محدودية القدرة الحاسوبية جزئيًا)، كان نطاق البرمجة الاحتمالية محدودًا، وكان لا بد من كتابة معظم خوارزميات الاستدلال يدويًا لكل مهمة.

مع ذلك، في عام ٢٠١٥، استُخدم برنامج رؤية حاسوبية احتمالية مؤلف من ٥٠ سطرًا لإنشاء نماذج ثلاثية الأبعاد لوجوه بشرية استنادًا إلى صور ثنائية الأبعاد لتلك الوجوه. اعتمد البرنامج على الرسومات العكسية كأساس لطريقة الاستدلال، وبُني باستخدام حزمة Picture في لغة جوليا . [ ٤ ] وقد مكّن هذا من إنجاز ما كان يتطلب آلاف الأسطر من التعليمات البرمجية في ٥٠ سطرًا فقط. [ ٥ ] [ ٦ ]

تم تطبيق مكتبة البرمجة الاحتمالية Gen ( المكتوبة أيضًا بلغة جوليا) على مهام الرؤية والروبوتات. [ 7 ]

في الآونة الأخيرة، تم تطبيق نظام البرمجة الاحتمالية Turing.jl في العديد من التطبيقات الصيدلانية [ 8 ] والاقتصادية. [ 9 ]

تم أيضًا دمج البرمجة الاحتمالية في جوليا مع البرمجة التفاضلية من خلال دمج حزمة جوليا Zygote.jl مع Turing.jl. [ 10 ]

تُستخدم لغات البرمجة الاحتمالية أيضًا بشكل شائع في علم الإدراك البايزي لتطوير وتقييم نماذج الإدراك. [ 11 ]

لغات البرمجة الاحتمالية

غالبًا ما تتفرع لغات البرمجة الخاصة (PPLs) من لغة أساسية. على سبيل المثال، تعتمد Turing.jl [ 12 ] على لغة Julia ، وتعتمد Infer.NET على .NET Framework [ 13 ] ، بينما تتفرع PRISM من لغة Prolog [ 14 ] . مع ذلك، توفر بعض لغات البرمجة الخاصة، مثل WinBUGS ، لغة مستقلة بذاتها تتوافق بشكل وثيق مع التمثيل الرياضي للنماذج الإحصائية، دون أن يكون لها أصل واضح في لغة برمجة أخرى [ 15 ] [ 16 ] .

طُوِّرت لغة WinBUGS لإجراء حسابات بايزية باستخدام أخذ عينات جيبس ​​والخوارزميات ذات الصلة. على الرغم من أنها مُطبَّقة بلغة برمجة غير معروفة نسبيًا (Component Pascal)، إلا أن هذه اللغة تُتيح الاستدلال البايزي لمجموعة واسعة من النماذج الإحصائية باستخدام منهج حسابي مرن. يمكن استخدام لغة BUGS نفسها لتحديد نماذج بايزية للاستدلال عبر خيارات حسابية مختلفة ("عينات") واتفاقيات أو إعدادات افتراضية، باستخدام برنامج WinBUGS المستقل (أو حزم R ذات الصلة، rbugs و r2winbugs) و JAGS (Just Another Gibbs Sampler، وهو برنامج مستقل آخر مع حزم R ذات صلة تشمل rjags و R2jags و runjags). في الآونة الأخيرة، ظهرت لغات أخرى تدعم تحديد النماذج البايزية والاستدلال، مما يسمح بخيارات مختلفة أو أكثر كفاءة للحسابات البايزية الأساسية، ويمكن الوصول إليها من بيئة تحليل البيانات والبرمجة R، مثل: Stan و NIMBLE و NUTS. ويتضح تأثير لغة BUGS في هذه اللغات اللاحقة، والتي تستخدم نفس الصيغة لبعض جوانب تحديد النموذج.

يجري تطوير العديد من مكتبات البرمجة الخاصة بالطرفيات (PPLs) بشكل نشط، بما في ذلك بعضها في مرحلة الاختبار التجريبي. ومن الأدوات الشائعة Stan و PyMC . [ 17 ] [ 18 ]

العلاقات

لغة البرمجة العلائقية الاحتمالية (PRPL) هي لغة برمجة علائقية احتمالية مصممة خصيصًا لوصف واستنتاج النماذج العلائقية الاحتمالية (PRMs).

عادة ما يتم تطوير نموذج PRM مع مجموعة من الخوارزميات لتقليل الاستدلال حول واكتشاف التوزيعات المعنية، والتي يتم تضمينها في PRPL المقابل.

البرمجة المنطقية الاحتمالية

البرمجة المنطقية الاحتمالية هي نموذج برمجي يوسع نطاق البرمجة المنطقية ليشمل الاحتمالات.

تعتمد معظم مناهج البرمجة المنطقية الاحتمالية على دلالات التوزيع، التي تقسم البرنامج إلى مجموعة من الحقائق الاحتمالية وبرنامج منطقي. وتحدد هذه الدلالات توزيعًا احتماليًا لتفسيرات عالم هيربراند الخاص بالبرنامج. [ 19 ]

قائمة لغات البرمجة الاحتمالية

تلخص هذه القائمة مجموعة متنوعة من شهادات PPL المتاحة حاليًا، وتوضح أصولها.

اسميمتد منلغة المضيف
أناليتيكا [ 20 ]لغة سي++
bayesloop [ 21 ] [ 22 ]بايثونبايثون
آلة الفاصوليا [ 23 ]بايتورشبايثون
مشروع [ 24 ]مخططلغة سي++
BayesDB [ 25 ]SQLite ، بايثون
بريزم [ 14 ]مقدمة ب
Infer.NET [ 13 ]إطار عمل .NETإطار عمل .NET
diff-SAT [ 26 ]برمجة مجموعات الإجابات ، اختبار SAT (DIMACS CNF)
PSQL [ 27 ]SQL
الأخطاء [ 15 ]مكون باسكال
دينا [ 28 ]مقدمة
فيجارو [ 29 ]سكالاسكالا
ProbLog [ 30 ]مقدمةبايثون
ProBT [ 31 ]لغة C++، لغة بايثون
ستان [ 16 ]الأخطاءلغة سي++
هاكارو [ 32 ]هاسكلهاسكل
BAli-Phy (برنامج) [ 33 ]هاسكللغة سي++
ProbCog [ 34 ]جافا، بايثون
PyMC [ 35 ]بايثونبايثون
رينييه [ 36 ] [ 37 ]سكالاسكالا
غريتا [ 38 ]TensorFlowR
الرمان [ 39 ]بايثونبايثون
ليا [ 40 ]بايثونبايثون
WebPPL [ 41 ]جافا سكريبتجافا سكريبت
الصورة [ 4 ]جولياجوليا
Turing.jl [ 12 ]جولياجوليا
Gen [ 42 ]جولياجوليا
إدوارد [ 43 ]TensorFlowبايثون
احتمالية TensorFlow [ 44 ]TensorFlowبايثون
إدوارد2 [ 45 ]احتمالية TensorFlowبايثون
بايرو [ 46 ]بايتورشبايثون
NumPyro [ 47 ]جاكسبايثون
البتولا [ 48 ]لغة سي++
PSI [ 49 ]د
بلانغ [ 50 ]
الأكوان المتعددة [ 51 ]بايثونبايثون
الأنجليكانية [ 52 ]كلوجركلوجر
خشب الرمل [ 53 ]جافاجافا

صعوبة

  • يُسبب التفكير في المتغيرات كتوزيعات احتمالية صعوبات للمبرمجين المبتدئين، ولكن يمكن معالجة هذه الصعوبات من خلال استخدام تصورات الشبكة البايزية ورسوم بيانية لتوزيعات المتغيرات المضمنة داخل محرر شفرة المصدر. [ 54 ]
  • بما أن العديد من نماذج الانحدار الخطي الاحتمالي تعتمد على تحديد التوزيعات الاحتمالية المسبقة للمتغيرات محل الاهتمام، فإن تحديد هذه التوزيعات المسبقة المستنيرة غالباً ما يكون صعباً على المبتدئين. في بعض الحالات، توفر مكتبات مثل PyMC طرقاً آلية لإيجاد معلمات التوزيعات المسبقة المستنيرة. [ 55 ]

انظر أيضاً

ملحوظات

  1. "البرمجة الاحتمالية تُنجز في 50 سطرًا من التعليمات البرمجية ما كان يتطلب آلاف الأسطر" . phys.org . 13 أبريل 2015. تم الاطلاع عليه في 13 أبريل 2015 .
  2. "البرمجة الاحتمالية" . probabilistic-programming.org . مؤرشف من الأصل في 10 يناير 2016. تم الاطلاع عليه في 24 ديسمبر 2013 .
  3. بففر، أفروم (2014)، البرمجة الاحتمالية العملية ، منشورات مانينغ. ص 28. ISBN 978-1 6172-9233-0
  4. 1 2 3 "يحل كود التعلم الآلي الاحتمالي القصير محل البرامج المعقدة في مهام رؤية الحاسوب" . KurzweilAI . 13 أبريل 2015. تم الاطلاع عليه بتاريخ 27 نوفمبر 2017 .
  5. هارديستي، لاري (13 أبريل 2015). "الرسومات بالعكس" .
  6. "معهد ماساتشوستس للتكنولوجيا يستعرض برنامجًا للتعلم الآلي لصنع رؤوس مخيفة" . ذا ريجستر .
  7. "نظام برمجة Gen التابع لمعهد ماساتشوستس للتكنولوجيا يُسهّل عملية تعلم مشاريع الذكاء الاصطناعي" . VentureBeat . 27 يونيو 2019. تم الاطلاع عليه بتاريخ 27 يونيو 2019 .
  8. سيمينوفا، إليزافيتا؛ ويليامز، دومينيك ب.؛ أفزال، أفيد م.؛ لازيتش، ستانلي إي. (1 نوفمبر 2020). "شبكة عصبية بايزية للتنبؤ بالسمية" . علم السموم الحاسوبي . 16 100133. doi : 10.1016/j.comtox.2020.100133 . ISSN 2468-1113 . S2CID 225362130 .  
  9. ويليامز، دومينيك ب.؛ لازيتش، ستانلي إي.؛ فوستر، أليسون ج.؛ سيمينوفا، إليزافيتا؛ مورغان، بول (2020)، "التنبؤ بإصابة الكبد الناجمة عن الأدوية باستخدام التعلم الآلي البايزي" ، البحوث الكيميائية في علم السموم ، 33 (1): 239-248 ، doi : 10.1021/acs.chemrestox.9b00264 ، PMID 31535850 ، S2CID 202689667  
  10. إينيس، مايك؛ إيدلمان، آلان؛ فيشر، كينو؛ راكاوكاس، كريس؛ سابا، إليوت؛ فيرال ب. شاه؛ تيبوت، ويل (2019). "∂P: نظام برمجة تفاضلية لربط التعلم الآلي والحوسبة العلمية". arXiv : 1907.07587 [ cs.PL ].
  11. غودمان، نوح د؛ تيننباوم، جوشوا ب؛ بوكسباوم، دافنا؛ هارتشورن، جوشوا؛ هوكينز، روبرت؛ أودونيل، تيموثي ج؛ تيسلر، مايكل هنري. "النماذج الاحتمالية للإدراك" . النماذج الاحتمالية للإدراك - الطبعة الثانية . تم الاطلاع عليه بتاريخ 27 مايو 2023 .
  12. 1 2 "لغة تورينج للبرمجة الاحتمالية" . جيت هاب . 28 ديسمبر 2021.
  13. 1 2 "Infer.NET" . microsoft.com . Microsoft.
  14. 1 2 "PRISM: البرمجة في النمذجة الإحصائية" . rjida.meijo-u.ac.jp . مؤرشف من الأصل في 1 مارس 2015. تم الاطلاع عليه في 8 يوليو 2015 .
  15. 1 2 "مشروع BUGS - وحدة الإحصاء الحيوي التابعة لمجلس البحوث الطبية" . cam.ac.uk. مؤرشف من الأصل في 14 مارس 2014. تم الاطلاع عليه في 12 يناير 2011 .
  16. 1 2 "ستان" . mc-stan.org . مؤرشف من الأصل في 3 سبتمبر 2012.
  17. Abril-Pla O، Andreani V، Carroll C، Dong L، Fonnesbeck CJ، Kochurov M، Kumar R، Lao J، Luhmann CC، Martin OA، Osthege M، Vieira R، Wiecki T، Zinkov R. (2023) PyMC: إطار برمجة احتمالي حديث وشامل في بايثون. حساب بيرج. الخيال العلمي. 9:e1516 دوى : 10.7717/peerj-cs.1516
  18. "الخوارزميات الكامنة وراء البرمجة الاحتمالية" . تم الاطلاع عليه بتاريخ 10 مارس 2017 .
  19. دي رايدت، لوك؛ كيميج، أنجليكا (1 يوليو 2015). "مفاهيم البرمجة الاحتمالية (المنطقية)" . تعلم الآلة . 100 (1): 5-47 . doi : 10.1007/s10994-015-5494-z . ISSN 1573-0565 . 
  20. "Analytica - لغة نمذجة احتمالية" . lumina.com .
  21. "bayesloop - إطار عمل البرمجة الاحتمالية" . bayesloop.com .
  22. "GitHub -- bayesloop" . GitHub . 7 ديسمبر 2021.
  23. "Bean Machine - لغة برمجة احتمالية عالمية لتمكين التحليل البايزي السريع والدقيق" . beanmachine.org .
  24. "Venture - منصة برمجة احتمالية للأغراض العامة" . mit.edu . مؤرشف من الأصل في 25 يناير 2016. تم الاطلاع عليه في 20 سبتمبر 2014 .
  25. "BayesDB على SQLite. جدول قاعدة بيانات بايزي للاستعلام عن الآثار المحتملة للبيانات بسهولة كما تستعلم قواعد بيانات SQL عن البيانات نفسها" . GitHub . 26 ديسمبر 2021.
  26. "diff-SAT (probabilistic SAT/ASP)" . GitHub . 8 أكتوبر 2021.
  27. دي، ديبابراتا؛ ساركار، سوميت (1998). "PSQL: لغة استعلام للبيانات العلائقية الاحتمالية". هندسة البيانات والمعرفة . 28 : 107-120 . doi : 10.1016/S0169-023X(98)00015-9 .
  28. "داينا" . www.dyna.org . مؤرشف من الأصل في 17 يناير 2016. تم الاطلاع عليه في 12 يناير 2011 .
  29. "خدمات النمذجة الاحتمالية من تشارلز ريفر أناليتكس" . cra.com . 9 فبراير 2017.
  30. "ProbLog: البرمجة الاحتمالية" . dtai.cs.kuleuven.be .
  31. بروبا نعم. "ProbaYes - Ensemble، nous valorisations vos données" . probayes.com . أرشفة من الإصدار الأصلي في 5 آذار (مارس) 2016 . تم الاسترجاع 26 نوفمبر، 2013 .
  32. ^ "صفحة هاكارو الرئيسية" . hakaru-dev.github.io/ .
  33. "الصفحة الرئيسية لـ BAli-Phy" . bali-phy.org .
  34. "ProbCog" . GitHub .
  35. مطورو PyMC. "PyMC" . pymc-devs.github.io .
  36. سترايب/رينييه ، سترايب، 19 أغسطس 2020 ، تم الاطلاع عليه في 26 أغسطس 2020
  37. "Rainier · الاستدلال البايزي لـ Scala" . samplerainier.com . تم الاطلاع عليه بتاريخ 26 أغسطس 2020 .
  38. "greta: نمذجة إحصائية بسيطة وقابلة للتوسع في لغة R" . GitHub . تم الاطلاع عليه في 2 أكتوبر 2018 .
  39. "الصفحة الرئيسية - وثائق pomegranate 0.10.0" . pomegranate.readthedocs.io . تم ​​الاطلاع عليه في 2 أكتوبر 2018 .
  40. "الصفحة الرئيسية لـ Lea" . bitbucket.org .
  41. "الصفحة الرئيسية لـ WebPPL" . github.com/probmods/webppl .
  42. "Gen: لغة برمجة احتمالية للأغراض العامة مع استدلال قابل للبرمجة" . تم الاطلاع عليه في 11 يونيو 2024 .
  43. "إدوارد - الصفحة الرئيسية" . edwardlib.org . تم الاطلاع عليه بتاريخ 17 يناير 2017 .
  44. TensorFlow (11 أبريل 2018). "مقدمة إلى احتمالية TensorFlow" . TensorFlow . تم الاطلاع عليه في 2 أكتوبر 2018 .
  45. "وحدة الاحتمالات "Edward2" في TensorFlow . GitHub . تم الاطلاع عليه بتاريخ 11 يونيو 2024 .
  46. "Pyro" . pyro.ai. تم الاطلاع عليه في 9 فبراير 2018 .
  47. "NumPyro" . pyro.ai. تم الاطلاع عليه بتاريخ 23 يوليو 2021 .
  48. "البرمجة الاحتمالية في لغة بيرش" . birch-lang.org . تم الاطلاع عليه بتاريخ 20 أبريل 2018 .
  49. "مُحلِّل PSI - استدلال دقيق للبرامج الاحتمالية" . psisolver.org . تم الاطلاع عليه بتاريخ 18 أغسطس 2019 .
  50. " الصفحة الرئيسية" . www.stat.ubc.ca.
  51. بيروف، يورا؛ غراهام، لوغان؛ غورغولياس، كوستيس؛ ريتشينز، جوناثان جي.؛ لي، سياران إم.؛ بيكر، آدم؛ جوهري، سوراب (28 يناير 2020)، MultiVerse: الاستدلال السببي باستخدام أخذ العينات المهمة في البرمجة الاحتمالية ، arXiv : 1910.08091
  52. "نظام البرمجة الاحتمالية الأنجليكاني" . probprog.github.io . تم ​​الاطلاع عليه في 7 أكتوبر 2024 .
  53. أوراكل/ساندوود ، أوراكل، 28 مايو 2026 ، تم الاطلاع عليه في 16 يونيو 2026
  54. غورينوفا، ماريا إي؛ ساركار، أدفايت؛ بلاكويل، آلان إف؛ سايم، دون (1 يناير 2016). "بيئة برمجة احتمالية حية متعددة التمثيل للمبتدئين". وقائع مؤتمر CHI لعام 2016 حول العوامل البشرية في أنظمة الحوسبة . CHI '16. نيويورك، نيويورك، الولايات المتحدة الأمريكية: ACM. الصفحات 2533-2537 . doi : 10.1145/2858036.2858221 . ISBN  9781450333627. S2CID 3201542 . 
  55. "pymc.find_constrained_prior — وثائق مطوري PyMC" . www.pymc.io. تم ​​الاطلاع عليه بتاريخ 23 أكتوبر 2024 .