برنامج تعلم الآلة Python



يوجد اليوم عدد كبير من أدوات البرامج لإنشاء نماذج التعلم الآلي. تم تشكيل أول هذه الأدوات بين العلماء والإحصائيين ، حيث تحظى اللغات R و Python بشعبية ، وأنظمة بيئية تم تطويرها تاريخيًا لمعالجة البيانات وتحليلها وتصورها في هذه اللغات ، على الرغم من وجود مكتبات معينة للتعلم الآلي لـ Java و Lua و C ++. في الوقت نفسه ، تعد لغات البرمجة المفسرة أبطأ بكثير من اللغات المجمعة ؛ وبالتالي ، يتم وصف إعداد البيانات وهيكل النموذج بلغة مترجمة ، ويتم إجراء الحسابات الأساسية بلغة مترجمة.

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

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

مكتبات الأغراض العامة في بيثون


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

Numpy


مكتبة مفتوحة المصدر لإجراء عمليات الجبر الخطي والتحولات العددية. كقاعدة ، تكون هذه العمليات ضرورية لتحويل مجموعات البيانات ، والتي يمكن تمثيلها كمصفوفة. نفذت المكتبة عددًا كبيرًا من العمليات للعمل مع المصفوفات متعددة الأبعاد وتحويلات فورييه ومولدات الأرقام العشوائية. تنسيقات التخزين Numpy هي المعيار الفعلي لتخزين البيانات الرقمية في العديد من المكتبات الأخرى (مثل Pandas و Scikit-learn و SciPy).

الموقع الإلكتروني : www.numpy.org

الباندا


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

موقع الويب : pandas.pydata.org

Scikit- تعلم


تحتوي مكتبة البرامج التي لها أكثر من عقد من التاريخ على تطبيقات لجميع التحولات الممكنة تقريبًا ، وغالبًا ما تكون وحدها كافية لتنفيذ النموذج بالكامل. كقاعدة ، عند برمجة أي نموذج تقريبًا في Python ، توجد دائمًا بعض التحويلات التي تستخدم هذه المكتبة.
يحتوي Scikit-learn على طرق لتقسيم مجموعة البيانات إلى اختبار وتدريب ، وحساب المقاييس الأساسية عبر مجموعات البيانات ، وإجراء التحقق المتقاطع. تحتوي المكتبة أيضًا على الخوارزميات الأساسية لتعلم الآلة: الانحدار الخطي (وتعديلاته على لاسو ، انحدار التلال) ، ودعم المتجهات ، وأشجار القرار والغابات ، وما إلى ذلك. هناك أيضًا تطبيقات لطرق التجميع الرئيسية. بالإضافة إلى ذلك ، تحتوي المكتبة على طرق يستخدمها الباحثون باستمرار للعمل مع المعلمات (الميزات): على سبيل المثال ، تقليل البعد باستخدام طريقة المكون الرئيسي. تعد مكتبة imblearn جزءًا من الحزمة ، مما يسمح لك بالعمل مع عينات غير متوازنة وإنشاء قيم جديدة.

الموقع الإلكتروني : www.scikit-learn.org

Scipy


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

الموقع الإلكتروني : www.scipy.org

مكتبات محددة


في هذا القسم ، يتم النظر في المكتبات ذات مجال معين للتطبيق أو شائعة لدى عدد محدود من المستخدمين.

Tensorflow


يتم استخدام مكتبة تم تطويرها بواسطة Google للعمل مع الموترات لبناء شبكات عصبية. يحتوي دعم الحوسبة على بطاقات الرسومات على إصدار للغة C ++. بناءً على هذه المكتبة ، يتم إنشاء مكتبات عالية المستوى للعمل مع الشبكات العصبية على مستوى الطبقات بأكملها. لذا ، منذ بعض الوقت ، بدأت مكتبة Keras الشهيرة في استخدام Tensorflow كواجهة خلفية رئيسية للحسابات بدلاً من مكتبة Theano المماثلة. يتم استخدام مكتبة cuDNN للعمل على بطاقات رسومات NVIDIA. إذا كنت تعمل مع الصور (مع الشبكات العصبية التلافيفية) ، فمن المحتمل أن تضطر إلى استخدام هذه المكتبة.

الموقع الإلكتروني : www.tensorflow.org

Keras


مكتبة لبناء الشبكات العصبية التي تدعم الأنواع الرئيسية من الطبقات والعناصر الهيكلية. وهو يدعم كل من الشبكات العصبية المتكررة والتلافيفية ، ويدمج تنفيذ بنيات الشبكات العصبية المعروفة (على سبيل المثال ، VGG16). منذ فترة ، أصبحت طبقات هذه المكتبة متاحة داخل مكتبة Tensorflow. هناك وظائف جاهزة للعمل مع الصور والنصوص (تضمين الكلمات ، إلخ.). مدمج في Apache Spark باستخدام توزيع dist-keras.

الموقع : www.keras.io

كافيه


إطار عمل لتدريب الشبكات العصبية من جامعة بيركلي. مثل TensorFlow ، يستخدم cuDNN للعمل مع بطاقات رسومات NVIDIA. يحتوي على تنفيذ شبكات عصبية أكثر شهرة ، وهي واحدة من أولى الأطر المدمجة في Apache Spark (CaffeOnSpark).

الموقع : cafee.berkeleyvision.org

pyTorch


يتيح لك نقل مكتبة Torch للغة Lua إلى لغة Python. أنه يحتوي على تطبيقات الخوارزميات للعمل مع الصور والعمليات الإحصائية وأدوات للعمل مع الشبكات العصبية. بشكل منفصل ، يمكنك إنشاء مجموعة من الأدوات لخوارزميات التحسين (على وجه الخصوص نزول التدرج العشوائي).

الموقع : www.torch.ch

تطبيقات تعزيز التدرج على أشجار القرار


تسبب هذه الخوارزميات دائمًا اهتمامًا متزايدًا ، نظرًا لأنها غالبًا ما تظهر نتائج أفضل من الشبكات العصبية. هذا صحيح بشكل خاص إذا لم يكن لديك مجموعات بيانات كبيرة جدًا (تقدير تقريبي جدًا: الآلاف وعشرات الآلاف ، ولكن ليس عشرات الملايين). من بين النماذج الفائزة على منصة kaggle التنافسية ، تعد خوارزميات تعزيز التدرج على أشجار القرار شائعة جدًا.
كقاعدة عامة ، يتم تنفيذ هذه الخوارزميات في مكتبات التعلم الآلي ذات القاعدة العريضة (على سبيل المثال ، في Scikit-learn). ومع ذلك ، هناك تطبيقات خاصة لهذه الخوارزمية ، والتي يمكن العثور عليها غالبًا بين الفائزين في المسابقات المختلفة. يجدر تسليط الضوء على ما يلي.

Xgboost


التنفيذ الأكثر شيوعًا لزيادة التدرج. بعد أن ظهرت في عام 2014 ، بحلول عام 2016 ، اكتسبت بالفعل شعبية كبيرة. يتم استخدام الفرز والنماذج بناءً على تحليل الرسم البياني لتحديد القسم.

الموقع الإلكتروني : github.com/dmlc/xgboost

Lightgbm


خيار تعزيز التدرج من Microsoft ، الذي صدر في عام 2017. يتم استخدام أخذ العينات من جانب واحد (GOSS) القائم على التدرج لتحديد معيار التقسيم. هناك طرق للعمل مع السمات الفئوية ، أي مع علامات لا يعبر عنها صراحة برقم (على سبيل المثال ، اسم المؤلف أو العلامة التجارية للسيارة). إنه جزء من مشروع Microsoft DMTK المخصص لتنفيذ مناهج التعلم الآلي لـ .Net.

الموقع الإلكتروني : www.dmtk.io

كاتبووست


تطوير Yandex ، الذي تم إصداره ، مثل LightGBM ، في عام 2017 ، يطبق نهجًا خاصًا لمعالجة الميزات الفئوية (استنادًا إلى التشفير المستهدف ، أي استبدال الميزات الفئوية بإحصاءات تستند إلى القيمة المتوقعة). بالإضافة إلى ذلك ، تحتوي الخوارزمية على نهج خاص لبناء الشجرة ، والذي أظهر أفضل النتائج. أظهرت المقارنة أن هذه الخوارزمية تعمل بشكل أفضل من غيرها مباشرة خارج الصندوق ، أي بدون تحديد أي معلمات.

الموقع الإلكتروني : catboost.yandex

مجموعة أدوات Microsoft المعرفية (CNTK)


يحتوي الإطار من Microsoft Corporation على واجهة C ++. يوفر تنفيذ مختلف بنى الشبكات العصبية. يمكن أن يكون تكاملًا مثيرًا للاهتمام مع .Net.

الموقع الإلكتروني : www.microsoft.com/en-us/cognitive-toolkit

موارد التنمية الأخرى


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

Azure ML


خدمة التعلم الآلي على نظام Microsoft Azure الأساسي ، حيث يمكنك بناء معالجة البيانات في شكل رسوم بيانية وإجراء العمليات الحسابية على الخوادم البعيدة ، مع القدرة على تضمين كود Python وغيرها.

الموقع الإلكتروني: azure.microsoft.com/ru-ru/services/machine-learning-studio

تجربة IBM DataScience (IBM DSX)


خدمة للعمل في بيئة Jupyter Notebook مع القدرة على إجراء العمليات الحسابية في Python وغيرها. يدعم التكامل مع مجموعات البيانات المعروفة و Spark ، مشروع IBM Watson.

الموقع الشبكي : ibm.com/cloud/watson-studio

حزم العلوم الاجتماعية


من بينها حزمة IBM الإحصائية للعلوم الاجتماعية (SPSS) ، وهو منتج برنامج IBM لمعالجة الإحصاءات في العلوم الاجتماعية ، والذي يدعم واجهة رسومية لإعداد عملية معالجة البيانات. منذ بعض الوقت ، أصبح من الممكن تضمين خوارزميات التعلم الآلي في هيكل التنفيذ الشامل. بشكل عام ، أصبح الدعم المحدود لخوارزميات التعلم الآلي شائعًا بين الحزم الإحصائية التي تتضمن بالفعل الوظائف الإحصائية وطرق التصور (مثل Tableau و SAS).

الخلاصة


عادة ما يتم تحديد اختيار حزمة البرامج التي سيتم على أساسها حل المهمة بالشروط التالية.

  1. البيئة التي سيتم استخدام النموذج فيها: ما إذا كان هناك حاجة إلى دعم Spark ، وما هي الخدمات التي يجب دمجها.
  2. ميزات البيانات. ما هي البيانات: صورة ، نص ، أم أنها مجموعة من الأرقام ، ما نوع المعالجة التي يحتاجونها؟
  3. الاستعداد للنماذج لهذا النوع من المهام. تتم معالجة البيانات من الصور عادة عن طريق الشبكات العصبية التلافيفية ، وتستخدم الخوارزميات القائمة على أشجار القرار لمجموعات البيانات الصغيرة.
  4. قيود على القدرة الحاسوبية سواء في التدريب أو في الاستخدام.

كقاعدة عامة ، عند التطوير في Python ، لا يمكن تجنب استخدام مكتبات الأغراض العامة (Pandas ، Scikit-learn ، numPy). أدى هذا إلى حقيقة أن واجهتهم تدعم معظم المكتبات المتخصصة ، ولكن إذا لم يكن الأمر كذلك ، فأنت بحاجة إلى فهم أنه سيتعين عليك كتابة الروابط بنفسك أو اختيار مكتبة أخرى.

يمكنك بناء النموذج الأول باستخدام عدد صغير نسبيًا من المكتبات ، وبعد ذلك سيتعين عليك تحديد ما تقضيه من وقت: تطوير المعلمات (هندسة الميزات) أو اختيار المكتبة والخوارزمية المثلى ، أو تنفيذ هذه المهام بالتوازي.

الآن القليل عن التوصيات للاختيار. إذا كنت بحاجة إلى خوارزمية تعمل بشكل أفضل من خارج الصندوق ، فهذا هو Catboost. إذا كنت تنوي العمل مع الصور ، يمكنك استخدام Keras و Tensorflow أو Caffe. عند العمل مع النص ، تحتاج إلى تحديد ما إذا كنت تنوي بناء شبكة عصبية ومراعاة السياق. إذا كانت الإجابة بنعم ، فإن نفس الرغبات بالنسبة للصور ، إذا كانت "حقيبة كلمات" (خصائص تكرار حدوث كل كلمة) كافية ، فإن خوارزميات تعزيز التدرج مناسبة. باستخدام مجموعات البيانات الصغيرة ، يمكنك استخدام الخوارزميات لتوليد بيانات جديدة من طرق التعلم Scikit والأساليب الخطية التي يتم تنفيذها في نفس المكتبة.

كقاعدة ، المكتبات الموصوفة كافية لحل معظم المشاكل ، حتى للفوز بالمسابقات. يتطور مجال التعلم الآلي بسرعة كبيرة - نحن على يقين من أن أطر العمل الجديدة ظهرت بالفعل في وقت كتابة هذا المنشور.

نيكولاي كنيازيف ، رئيس مجموعة تعلُم الآلة Jet Infosystems

Source: https://habr.com/ru/post/ar415997/


All Articles