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

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

في رأيي، تعد بايثون واحدة من أفضل اللغات التي يمكنك استخدامها لتعلم (وتنفيذ) تقنيات تعلم الآلة لعدة أسباب:

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

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

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

المكتبات الأكثر شعبية

لقد قمت بإدراج وصف قصير لبعض المكتبات الأكثر شعبية وما هي فوائدها، مع قائمة أكثر اكتمالاً للمشاريع البارزة في القسم التالي.

TensorFlow

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

كُتبت المكتبة في الغالب بلغة C++، والتي تتضمن روابط Python، لذا لا داعي للقلق بشأن التضحية بالأداء. إحدى ميزاتي المفضلة هي بنيته المرنة، التي تتيح لك نشره على وحدة معالجة مركزية (CPU) أو وحدة معالجة رسومية (GPU) واحدة أو أكثر في جهاز كمبيوتر مكتبي أو خادم أو جهاز محمول، جميعها باستخدام واجهة برمجة التطبيقات نفسها. لا يوجد الكثير من المكتبات، إن وُجدت، التي يمكنها ادعاء ذلك.

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

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

scikit-learn

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

بُنيت هذه المكتبة على مكتبات NumPy وSciPy وmatplotlib الشهيرة، لذا ستكون مألوفة للكثيرين ممن يستخدمون هذه المكتبات بالفعل. مع ذلك، بالمقارنة مع العديد من المكتبات الأخرى المذكورة أدناه، تُعتبر هذه المكتبة أقل تطورًا، وتميل إلى أن تكون أساسًا للعديد من تطبيقات تعلم الآلة الأخرى.

Theano

Theano هي مكتبة تعلّم آلي تتيح لك تعريف وتحسين وتقييم التعبيرات الرياضية التي تتضمن مصفوفات متعددة الأبعاد، وهو ما قد يُسبب إحباطًا لبعض المطورين الذين يستخدمون مكتبات أخرى. ومثل scikit-learn، تتكامل Theano بشكل وثيق مع NumPy. يجعل الاستخدام الشفاف لوحدة معالجة الرسومات Theano سريعًا وسهل الإعداد، وهو أمر بالغ الأهمية للمبتدئين. على الرغم من أن البعض وصفها بأنها أداة بحثية أكثر منها للاستخدام الإنتاجي، لذا استخدمها وفقًا لذلك.

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

Pylearn2

في الواقع، تم بناء معظم وظائف Pylearn2 على Theano، لذا فهي تتمتع بقاعدة صلبة إلى حد ما.

تذكّر أن Pylearn2 قد يُغلّف أحيانًا مكتبات أخرى، مثل scikit-learn، عندما يكون ذلك مناسبًا، لذا لن تحصل هنا على شيفرة مكتوبة خصيصًا بنسبة 100%. مع ذلك، هذا رائع، لأن معظم الأخطاء قد تم حلها بالفعل. أدوات التغليف مثل Pylearn2 لها مكانة مهمة جدًا في هذه القائمة.

Pyevolve

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

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

NuPIC

NuPIC هي مكتبة أخرى توفر لك وظائف مختلفة عن خوارزميات تعلم الآلة التقليدية. تعتمد على نظرية في القشرة المخية الحديثة تُسمى الذاكرة الزمنية الهرمية (HTM). يمكن اعتبار HTMs نوعًا من الشبكات العصبية، ولكن بعض نظرياتها مختلفة بعض الشيء.

في الأساس، تُعدّ ذاكرات تعلم الآلة (HTMs) نظام ذاكرة هرميًا قائمًا على الوقت، ويمكن تدريبه على بيانات متنوعة. صُممت لتكون إطارًا حاسوبيًا جديدًا يُحاكي كيفية تشابك الذاكرة والحوسبة في أدمغتنا.

Pattern

هذه المكتبة أشبه بمكتبة “كاملة”، إذ لا توفر فقط بعض خوارزميات تعلم الآلة، بل توفر أيضًا أدوات تساعدك على جمع البيانات وتحليلها. يساعدك قسم استخراج البيانات على جمع البيانات من خدمات الويب مثل جوجل وX وويكيبيديا. كما تحتوي على مُتتبع ويب ومحلل HTML DOM. الميزة الرائعة في تضمين هذه الأدوات هي سهولة جمع البيانات والتدريب عليها في البرنامج نفسه.

فيما يلي مثال رائع من الوثائق يستخدم مجموعة من التغريدات لتدريب المصنف على ما إذا كانت التغريدة “فائزة” أو “فاشلة”:

from pattern.web import Twitter
from pattern.en import tag
from pattern.vector import KNN, count

twitter, knn = Twitter(), KNN()

for i in range(1, 3):
    for tweet in twitter.search('#win OR #fail', start=i, count=100):
        s = tweet.text.lower()
        p = '#win' in s and 'WIN' or 'FAIL'
        v = tag(s)
        v = [word for word, pos in v if pos == 'JJ'] # JJ = adjective
        v = count(v) # {'sweet': 1}
        if v:
            knn.train(v, type=p)

print knn.classify('sweet potato burger')
print knn.classify('stupid autocorrect')

تُجمع التغريدات أولًا باستخدام دالة twitter.search() عبر الوسميْن #win و#fail. ثم يُدرَّب جار k-nearest الأقرب (KNN) باستخدام صفات مُستخلصة من التغريدات. بعد تدريب كافٍ، يُصبح لديك مُصنِّف. ليس سيئًا لخمسة عشر سطرًا فقط من التعليمات البرمجية.

Caffe

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

يُتاح التكامل السلس مع تدريب وحدة معالجة الرسومات (GPU)، وهو أمر يُنصح به بشدة عند التدريب على الصور. مع أن هذه المكتبة تبدو مُخصصة في الغالب للأغراض الأكاديمية والبحثية، إلا أنها ستوفر استخدامات متعددة لنماذج التدريب للاستخدام الإنتاجي أيضًا.


اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading