التعلم الآلي بلغة Go: نظرة عامة على المكتبات والأطر (Golang)

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

التعلم الآلي بلغة Go (Golang): نظرة عامة على المكتبات والأدوات



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



لماذا Go للتعلم الآلي؟

  • الأداء: يتم تجميع Go إلى كود أصلي، مما يوفر زيادة في السرعة مقارنة باللغات المفسرة.
  • سهولة النشر: ملف ثنائي واحد - لا توجد تبعيات على الجهاز الهدف.
  • التوازي المدمج: الـ Goroutines والقنوات مثالية للمعالجة المتوازية للبيانات وتدريب النماذج.
  • النظام البيئي: على الرغم من أن مكتبات ML أقل من Python، إلا أنها تتطور بنشاط وتغطي معظم المهام الأساسية.


1. Gorgonia - إطار عمل للتعلم العميق

Gorgonia هي نظير لـ TensorFlow و PyTorch بلغة Go. توفر واجهة برمجة تطبيقات منخفضة المستوى لإنشاء وتدريب الشبكات العصبية، وتدعم التفاضل التلقائي والعمل مع GPU عبر CUDA.

الإمكانيات الرئيسية:

  • بناء الرسوم البيانية الحسابية.
  • الحساب التلقائي للتدرجات (الانتشار العكسي).
  • دعم الطبقات التلافيفية والمتكررة والمتصلة بالكامل.
  • التكامل مع CUDA للتسريع على GPU.

مثال على الانحدار الخطي البسيط:

package main

import ( "fmt" "gorgonia.org/gorgonia" "gorgonia.org/tensor")

func main() { g := gorgonia.NewGraph() // بيانات الإدخال: x و y x := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(3, 1), gorgonia.WithName("x")) y := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(3, 1), gorgonia.WithName("y")) // معلمات النموذج: الوزن w والانحياز b w := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(1, 1), gorgonia.WithName("w"), gorgonia.WithInit(gorgonia.GlorotN(1.0))) b := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(1, 1), gorgonia.WithName("b"), gorgonia.WithInit(gorgonia.Zeroes())) // الانتشار الأمامي: y_pred = x * w + b pred := gorgonia.Must(gorgonia.Add(gorgonia.Must(gorgonia.Mul(x, w)), b)) // دالة الخسارة: MSE loss := gorgonia.Must(gorgonia.Mean(gorgonia.Must(gorgonia.Square(gorgonia.Must(gorgonia.Sub(pred, y)))))) // إنشاء VM والتدريب vm := gorgonia.NewTapeMachine(g) // ... كود التدريب مع نزول التدرج fmt.Println("تم إنشاء النموذج، الخسارة:", loss)}

متى تستخدم: لإنشاء شبكات عصبية مخصصة، مشاريع بحثية حيث تحتاج إلى تحكم كامل في الرسم البياني الحسابي.



2. GoLearn - مكتبة التعلم الآلي الكلاسيكي

GoLearn (golearn) هي نظير لـ scikit-learn بلغة Go. توفر تطبيقات جاهزة للخوارزميات: أقرب الجيران (KNN)، مصنف بايز البسيط، أشجار القرار، الانحدار الخطي، آلة المتجهات الداعمة (SVM) وغيرها.

المزايا:

  • واجهة برمجة تطبيقات مريحة، مشابهة لـ sklearn.
  • مقاييس تقييم مدمجة (الدقة، الضبط، الاستدعاء، F1).
  • دعم التحقق المتقاطع وخطوط الأنابيب (pipelines).

مثال على التصنيف باستخدام KNN:

package main

import ( "fmt" "github.com/sjwhitworth/golearn/base" "github.com/sjwhitworth/golearn/knn" "github.com/sjwhitworth/golearn/evaluation")

func main() { // تحميل البيانات (CSV) data, er

توصيات