البرمجة التفاضلية

البرمجة التفاضلية هي نموذج برمجة يمكن من خلاله التمييز بين برنامج كمبيوتر رقمي من خلال التفاضل التلقائي . [1] [2] [3] [4] [5] وهذا يسمح بتحسين المعلمات في البرنامج على أساس التدرج ، غالبًا عبر الانحدار التدرجي ، بالإضافة إلى طرق التعلم الأخرى القائمة على معلومات المشتقات ذات الدرجة الأعلى. وجدت البرمجة التفاضلية استخدامًا في مجموعة واسعة من المجالات، وخاصة الحوسبة العلمية والتعلم الآلي . [5] قدم فريق المفاهيم المتقدمة في وكالة الفضاء الأوروبية أحد المقترحات المبكرة لتبني مثل هذا الإطار بطريقة منهجية لتحسين خوارزميات التعلم في أوائل عام 2016. [6]

النهج

تعمل معظم أطر البرمجة القابلة للتفاضل من خلال إنشاء رسم بياني يحتوي على تدفق التحكم وهياكل البيانات في البرنامج. [7] تنقسم المحاولات عمومًا إلى مجموعتين:

  • الأساليب الثابتة القائمة على الرسوم البيانية المجمعة مثل TensorFlow و [ملاحظة 1] و Theano و MXNet . تميل هذه الأساليب إلى السماح بتحسين جيد للمترجم وتوسيع نطاق أسهل للأنظمة الكبيرة، ولكن طبيعتها الثابتة تحد من التفاعل وأنواع البرامج التي يمكن إنشاؤها بسهولة (على سبيل المثال تلك التي تنطوي على حلقات أو تكرار )، فضلاً عن جعل من الصعب على المستخدمين التفكير بشكل فعال في برامجهم. [7] تستخدم سلسلة أدوات المترجم لإثبات المفهوم والتي تسمى Myia مجموعة فرعية من Python كواجهة أمامية وتدعم الوظائف ذات الترتيب الأعلى والتكرار والمشتقات ذات الترتيب الأعلى. [8] [9] [10]

لقد ظهر مؤخرًا استخدام التجميع في الوقت المناسب كحل محتمل للتغلب على بعض الاختناقات في اللغات المفسرة. تستخدم حزمة heyoka.py و C++ heyoka هذه التقنية بشكل كبير لتقديم إمكانيات برمجة متقدمة قابلة للتفاضل (أيضًا عند الطلبات العالية). تعمل حزمة لغة برمجة Julia - Zygote - مباشرة على التمثيل الوسيط لـ Julia . [7] [11] [5]

أحد القيود التي تفرضها الأساليب السابقة هو أنها لا تستطيع التمييز إلا بين الكود المكتوب بطريقة مناسبة للإطار، مما يحد من قابلية التشغيل المتبادل مع البرامج الأخرى. تحل الأساليب الأحدث هذه المشكلة من خلال إنشاء الرسم البياني من بناء الجملة أو IR للغة، مما يسمح بالتمييز بين الكود التعسفي. [7] [9]

التطبيقات

تم تطبيق البرمجة القابلة للتفاضل في مجالات مثل الجمع بين التعلم العميق ومحركات الفيزياء في الروبوتات ، [12] وحل مشاكل البنية الإلكترونية باستخدام نظرية الكثافة الوظيفية القابلة للتفاضل ، [13] وتتبع الأشعة القابلة للتفاضل ، [14] ومعالجة الصور ، [15] والبرمجة الاحتمالية . [5]

تطبيق متعدد التخصصات

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

انظر أيضا

ملحوظات

  1. ^ يستخدم TensorFlow 1 نهج الرسم البياني الثابت، بينما يستخدم TensorFlow 2 نهج الرسم البياني الديناميكي بشكل افتراضي.

مراجع

  1. ^ إيزو، داريو؛ بيسكاني، فرانشيسكو؛ ميريتا، أليسيو (2017). "البرمجة الوراثية القابلة للتفاضل". البرمجة الوراثية . محاضرات في علوم الكمبيوتر. المجلد 10196. ص 35-51. arXiv : 1611.04766 . doi :10.1007/978-3-319-55696-3_3. ISBN 978-3-319-55695-6. S2CID  17786263.
  2. ^ بايدن، أتيليم جونيس؛ بيرلموتر، باراك أ؛ رادول، أليكسي أندرييفيتش؛ سيسكيند، جيفري مارك (2018). "التمايز التلقائي في التعلم الآلي: دراسة استقصائية". مجلة أبحاث التعلم في مارشين . 18 (153): 1-43.
  3. ^ وانج، في؛ ديكر، جيمس؛ وو، زيلون؛ إيسيرتيل، جريجوري؛ رومبف، تيارك (2018). "الانتشار العكسي مع الاستدعاءات العكسية: أسس البرمجة التفاضلية الفعّالة والمعبرة" (PDF) . في بينجيو، س.؛ والاش، هـ.؛ لاروشيل، هـ.؛ غرومان، ك (المحررون). NIPS'18: وقائع المؤتمر الدولي الثاني والثلاثين حول أنظمة معالجة المعلومات العصبية . كوران أسوشيتس. ص 10201-10212.
  4. ^ Innes, Mike (2018). "On Machine Learning and Programming Languages" (PDF) . SysML Conference 2018. مؤرشف من الأصل (PDF) في 2019-07-17 . تم الاسترجاع 2019-07-04 .
  5. ^ abcd Innes, Mike; Edelman, Alan; Fischer, Keno; Rackauckas, Chris; Saba, Elliot; Viral B Shah; Tebbutt, Will (2019). "نظام برمجة قابل للتفاضل لربط التعلم الآلي والحوسبة العلمية". arXiv : 1907.07587 .
  6. ^ "الذكاء التفاضلي". أكتوبر 2016. تم استرجاعه في 2022-10-19 .
  7. ^ اي بي سي دي اينيس مايكل. سابا إليوت. فيشر، كينو؛ غاندي، ظاهرية؛ ماركو كونسيتو روديلوسو؛ نيثو ماريا جوي؛ كرملي، تيجان؛ بال، أفيك؛ شاه، فيروسي (2018). “النمذجة العصرية مع التدفق”. أرخايف : 1811.01457 .
  8. ^ Merriënboer, Bart van; Breuleux, Olivier; Bergeron, Arnaud; Lamblin, Pascal (3 ديسمبر 2018). "التمايز التلقائي في التعلم الآلي: أين نحن وإلى أين يجب أن نتجه". NIPS'18 . المجلد 31. ص 8771-81.
  9. ^ abc Breuleux, O.; van Merriënboer, B. (2017). "Automatic Differentiation in Myia" (PDF) . مؤرشف من الأصل (PDF) في 2019-06-24 . تم الاسترجاع في 2019-06-24 .
  10. ^ ab "TensorFlow: Static Graphs". دروس تعليمية: تعلم PyTorch . PyTorch.org . تم الاسترجاع في 2019-03-04 .
  11. ^ Innes, Michael (2018). "Don't Unroll Adjoint: Differentiating SSA-Form Programs". arXiv : 1810.07951 .
  12. ^ Degrave, Jonas; Hermans, Michiel; Dambre, Joni; Wyffels, Francis (2016). "محرك فيزياء قابل للتفاضل للتعلم العميق في الروبوتات". arXiv : 1611.01652 .
  13. ^ لي، لي؛ هوير، ستيفان؛ بيدرسون، ريان؛ صن، روكسي؛ كوبوك، إيكين د؛ رايلي، باتريك؛ بيرك، كيرون (2021). "معادلات كوهن-شام كمنظم: بناء المعرفة المسبقة في الفيزياء المتعلمة آليًا". رسائل المراجعة الفيزيائية . 126 (3): 036401. arXiv : 2009.08551 . رمز Bibcode : 2021PhRvL.126c6401L. doi : 10.1103/PhysRevLett.126.036401 . PMID  33543980.
  14. ^ لي، تزو ماو؛ أيتالا، ميكا؛ دوراند، فريدو؛ ليهتينن، جاكو (2018). “تتبع أشعة مونت كارلو التفاضلية من خلال أخذ عينات الحافة”. معاملات ACM على الرسومات . 37 (6): 222: 1-11. دوى : 10.1145/3272127.3275109 . S2CID  52839714.
  15. ^ لي، تزو-ماو؛ غاربي، مايكل؛ آدامز، أندرو؛ دوراند، فريدو؛ راجان-كيلي، جوناثان (أغسطس 2018). "البرمجة التفاضلية لمعالجة الصور والتعلم العميق في الهاليدات". معاملات ACM للرسومات . 37 (4): 139: 1-13. doi : 10.1145/3197517.3201383 . S2CID  46927588.
  16. ^ AlQuraishi, Mohammed; Sorger, Peter K. (أكتوبر 2021). "Differentiable biology: using deep learning for biophysics-based and data-driven modeling of molecular mechanisms". Nature Methods . 18 (10): 1169–1180. doi :10.1038/s41592-021-01283-4. PMC 8793939. PMID  34608321 . 
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=البرمجة_التفاضلية&oldid=1246211366"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate