البرمجة الإحصائية في التعلم الآلي: التباين بين Pyro و TFP

نشرت: 2021-01-29

في التعلم الآلي ، تتم البرمجة الإحصائية أو الاحتمالية باستخدام لغتي برمجة كما هو موضح أدناه. إعطاء مقدمة موجزة ، بكلمات بسيطة ، البرمجة الاحتمالية هي أداة للنمذجة الإحصائية. إنه يعني في الأساس حل المشكلات باستخدام لغة يمكننا من خلالها إنشاء وتصميم نماذج إحصائية كحل.

يتعلق الأمر بتطبيق مفاهيم الإحصاء باستخدام لغات برمجة الكمبيوتر. باستخدام النماذج الاحتمالية ، يمكن للمرء أن يستنتج كيف يمكن لمعتقداتنا حول المعلمات الفائقة للنموذج أن تغير الناتج.

جدول المحتويات

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

1. Pyro

Pyro هي لغة برمجة احتمالية (PPL) مكتوبة بلغة Python وتدعمها Pytorch على الواجهة الخلفية. مع Pyro ، يمكننا الوصول إلى النمذجة الاحتمالية العميقة ، ونمذجة Bayesian ، والجمع بين أفضل خوارزميات التعلم العميق الحديثة. يمكن تثبيته على النحو التالي:

pip3 قم بتثبيت Pyro-ppl

أو لتثبيته من المصدر استخدم الأوامر التالية:

استنساخ بوابة https://github.com/pyro-ppl/pyro.git

قرص مضغوط بايرو

تثبيت نقطة. [إضافات]

استيراد Pyro باستخدام سطر بسيط من التعليمات البرمجية:

استيراد بايرو

2. احتمالية تدفق الموتر (TFP)

TFP هي مكتبة Python مبنية على TensorFlow والتي تتيح الجمع بين النماذج الاحتمالية ونماذج التعلم العميق على GPU و TPU. يمكن استخدامه من قبل أي شخص يرغب في دمج معرفة المجال لفهم وإجراء التنبؤات ذات الصلة. لتثبيت TFP ، اكتب الأمر التالي في الأمر أو موجه الأناكوندا.

تثبيت النقطة - ترقية احتمالية تدفق التوتر

يمكن استخدام TFP في التعليمات البرمجية باستخدام سطر الأوامر التالي:

استيراد tensorflow_probability كـ tfp

انضم إلى دورة الذكاء الاصطناعي عبر الإنترنت من أفضل الجامعات في العالم - الماجستير ، وبرامج الدراسات العليا التنفيذية ، وبرنامج الشهادات المتقدمة في ML & AI لتسريع مسار حياتك المهنية.

التباين بين Pyro و TFP

1. التوثيق

يعد توثيق Pyro و TFP ممتازًا ووفيرًا بينما يكون أقل في شرح TFP من احتمال الشبكات العصبية. في pyro ، تقدم الوحدة النمطية pyro.nn تطبيقات وحدات الشبكة العصبية المفيدة في سياق البرمجة الاحتمالية العميقة. في TFP ، تمثل طبقات tfp. طبقات الشبكة العصبية مع عدم اليقين بشأن الوظائف التي تمثلها ، مما يؤدي إلى توسيع طبقات TensorFlow.

2. اللغة

يكتب مستخدمو كل من TFP و Pyro بلغة بيثون. ومع ذلك ، فإن واجهة برمجة التطبيقات المتضمنة في حالة TFP مطولة للغاية. أعني بذلك ، يتعين علينا أحيانًا كتابة المزيد من سطور التعليمات البرمجية للوصول إلى حل. يمكن أن يكون ذلك جيدًا في بعض الأحيان لأن لدينا المزيد من التحكم في البرنامج بأكمله وسيئًا عندما يكون متاحًا في شكل أقصر داخل Pyro.

3. زيادة الوقت

مع Pyro ، يتم تنفيذ الكود بشكل أسرع وفعال ، ولن تحتاج إلى مفاهيم جديدة لتتعلمها. من ناحية أخرى ، تتطلب TFP مفاهيم مثل العناصر النائبة والنطاق المتغير بالإضافة إلى الجلسات ، وبالتالي يستغرق وقتًا أطول للتنفيذ.

4. الانتشار

يمكن نشر كل من TFP و Pyro بسهولة على نطاق صغير من جانب الخادم. بالنسبة لعمليات النشر المحمولة وأجهزة الكمبيوتر الصغيرة أو المضمنة ، يعمل TensorFlow بكفاءة ، على عكس Pytorch. مطلوب جهد أقل لنشر TensorFlow في Android و IOS ، مقارنة بـ Pytorch.

5. الرسوم البيانية

يحتوي Tensorflow على تصورات رسوم بيانية حسابية أفضل ، والتي تكون أصلية عند مقارنتها بالمكتبات الأخرى مثل Torch و Theano. تم بناء إدوارد على TensorFlow ويتيح ميزات مثل الرسوم البيانية الحسابية ، والتدريب الموزع ، وتكامل وحدة المعالجة المركزية / وحدة معالجة الرسومات ، والتمايز التلقائي ، والتصور باستخدام TensorBoard. ومع ذلك ، لا توفر Pyro أي وظائف توضيحية أو مرئية.

تدخل إدوارد مع TensorBoard ، المصدر: إدوارد

6. ماركوف تشين مونتي كارلو

تنفذ TFP عددًا كبيرًا من خوارزميات مونت كارلو (MCMC) لسلسلة ماركوف (مثل Metropolis و Gibbs و Hamiltonian) والتي يتم استخدامها في عينة توزيع احتمالي وعدد قليل من خوارزميات تكرار القيمة في TensorFlow. حتى عام 2018 ، لم يقم Pyro بأداء سلسلة ماركوف مونتي كارلو. تم تحديثه ولديه دعم كامل لـ MCMC و HMC و NUTS.

7. Optimizers

تمامًا مثل برنامج TFP الذي ينفذ العديد من أدوات تحسين TensorFlow ، بما في ذلك Nelder-Mead و BFGS و L-BFGS (لتحديد مشكلات التحسين غير الخطية غير المقيدة) ، يقوم Pyro بتنفيذ المُحسِنات الموجودة في PyTorch. توفر الوحدة pyro.optim دعمًا للتحسين في Pyro . يمكن القول أن الاثنين يعتمدان على وحداتهما الأساسية (TensorFlow و PyTorch).

مصدر

8. الباقون

في TFP ، تتضمن عوامل bijectors تغيير المتغيرات لكثافة الاحتمال. عندما نرسم خريطة من مساحة إلى أخرى ، فإننا نؤثر أيضًا على الخريطة من كثافات الاحتمالية في المساحة الأولية إلى الكثافات على المساحة المستهدفة.

ولكن نظرًا لأننا نرسم الخرائط إلى مساحة مختلفة ، فإننا بحاجة إلى تتبع حسابات التعيين هذه في حساب كثافة الاحتمال في الفضاء الأخير. لذلك يتم استخدام Bijectors لرسم الخرائط السلس. في Pyro ، لا تذكر الوثائق أي شيء عن bijectors ، لذلك أفترض أنهم لا يملكونها.

9. السلاسل الزمنية

توفر الوحدة النمطية pyro.contrib.timeseries مجموعة من نماذج السلاسل الزمنية Bayesian المفيدة للتنبؤ بالتطبيقات. يمكن تحقيق ذلك من خلال الاستفادة من كائن Forecaster الموجود في Pyro. بعد أن نعطي بيانات الإدخال للنموذج ، نخبر النموذج فقط بكيفية عمل تنبؤ مستنير.

إنها بهذه السهولة ، مجرد بيانات وإطار احتمالي. ومع ذلك ، تستخدم TFP نماذج السلاسل الزمنية لـ Tensorflow مثل CNN و RNN جنبًا إلى جنب مع إطارها لنماذج السلاسل الزمنية الهيكلية Bayesian (tfp.sts). السلاسل الزمنية الهيكلية Bayesian هي واجهة عالية المستوى لملاءمة نماذج السلاسل الزمنية التي لم يتم إصدارها بعد.

مصدر

10. التوزيعات

إنها فئة أساسية لبناء وتنظيم الخصائص (على سبيل المثال ، المتوسط ​​، التباين) للمتغيرات العشوائية (على سبيل المثال ، Bernoulli ، Gaussian). يمكن أن يكون أحد الأمثلة التوزيع الطبيعي. معظم التوزيعات في Pyro عبارة عن أغلفة رفيعة حول توزيعات PyTorch. للحصول على تفاصيل حول واجهة توزيع PyTorch ، يمكنك التحقق من torch.distributions.distribution.Distribution. ومع ذلك ، يحتوي TFP على الوحدة النمطية الخاصة به tfp.dist Distribution.

مصدر

مصدر

11. النماذج الخطية المعممة (GLM)

في الإحصاء ، النموذج الخطي المعمم هو تعميم مرن للانحدار الخطي العادي الذي يسمح بمتغيرات الاستجابة التي لها نماذج توزيع خطأ غير التوزيع الطبيعي. في TFP ، تحتوي الوحدة النمطية tfp.glm على واجهة عالية المستوى لتلائم نماذج الانحدار ذات التأثيرات المختلطة. ومع ذلك ، لا يحتوي Pyro على مثل هذه الوحدة لـ GLM.

مصدر

خاتمة

باستخدام هذه العوامل ، من الآمن استنتاج أن Pyro لا يختلف كثيرًا عن TFP. كلاهما يعتمد على لغة برمجة بايثون. تم توثيق واجهات برمجة تطبيقات Python جيدًا. ومع ذلك ، فإن Pytorch لديها وقت تكثيف جيد ، وبالتالي فهي أسرع بكثير من TensorFlow. سيعتمد الاختيار بين هذين الإطارين على مدى سهولة الوصول إلى طريقة التعلم لكل منهما. سيعتمد اختيارك أيضًا على متطلبات مؤسستك.

إذا كنت مهتمًا بمعرفة المزيد عن التعلم الآلي ، فراجع برنامج IIIT-B & upGrad's Executive PG في التعلم الآلي والذكاء الاصطناعي المصمم للمهنيين العاملين ويقدم أكثر من 450 ساعة من التدريب الصارم ، وأكثر من 30 دراسة حالة ومهمة ، IIIT -ب حالة الخريجين ، 5+ مشاريع التخرج العملية العملية والمساعدة في العمل مع الشركات الكبرى.

مراجع

الشروع في العمل - وثائق Pyro

الوحدة: tfp | احتمالية تدفق TensorFlow

كيف يرتبط التعلم الآلي بالإحصاءات والعكس صحيح؟

يتم استخدام الإحصاء لبناء نموذج إحصائي من أجل تمثيل البيانات واستخلاص النتائج أو الاستنتاجات منها. بينما يستخدم التعلم الآلي هذا النموذج الإحصائي لفهم البيانات وإجراء تنبؤات دقيقة. وبالتالي ، يتم استخدام الإحصائيات في بناء النماذج الإحصائية للمساعدة في تنفيذ التعلم الآلي بشكل صحيح وسهل.

هل يمكنني معرفة التعلم الآلي دون معرفة الإحصائيات؟

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

هل من السهل تعلم TensorFlow للمبتدئين؟

TensorFlow عبارة عن منصة مفتوحة المصدر للتعلم الآلي تعمل من البداية إلى النهاية. يجعل TensorFlow إنشاء نماذج التعلم الآلي أمرًا بسيطًا لكل من المبتدئين والمحترفين. ستحتاج إلى قضاء ما بين ستة إلى اثني عشر شهرًا في دراسة قدرات TensorFlow وإتقانها إذا كنت ترغب في العمل في التعلم الآلي. ومع ذلك ، إذا كنت تعرف أساسيات لغات البرمجة مثل R و Python ، فلن تواجه مشكلة كبيرة.