التعلم الآلي بلغة Go: مكتبات لـ Golang (ML، الشبكات العصبية، NLP)

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

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

ابدأ الدورة

التعلم الآلي بلغة Go: مراجعة لمكتبات Golang



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



لماذا Go لـ ML؟

لا تحاول Go استبدال Python في العمل البحثي. نقاط قوتها هي التكامل مع البنية التحتية، وانخفاض استهلاك الذاكرة، والدعم المدمج للتوازي (goroutines)، والتجميع في ملف ثنائي واحد. هذا هو الخيار المثالي لـ:

  • خدمات التنبؤ (inference) بناءً على النماذج المدربة
  • معالجة البيانات المتدفقة في الوقت الفعلي
  • بناء خطوط أنابيب بيانات عالية الإنتاجية


1. Gorgonia — إطار عمل للشبكات العصبية

Gorgonia هو نظير TensorFlow و PyTorch بلغة Go. يسمح بإنشاء وتدريب الشبكات العصبية مع التفاضل التلقائي.



التثبيت:

go get gorgonia.org/gorgonia


مثال: انحدار لوجستي بسيط

package main

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

func main() { g := gorgonia.NewGraph()

// بيانات الإدخال (مصفوفة 4x2) x := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(4, 2), gorgonia.WithName("x")) // الأوزان w := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(2, 1), gorgonia.WithName("w")) // الانحياز b := gorgonia.NewScalar(g, tensor.Float64, gorgonia.WithName("b"))

// طبقة خطية: y = x*w + b xw, _ := gorgonia.Mul(x, w) y, _ := gorgonia.Add(xw, b)

// دالة التنشيط (سغمودية) activated, _ := gorgonia.Sigmoid(y)

machine := gorgonia.NewTapeMachine(g) // تعبئة البيانات gorgonia.Let(x, tensor.New(tensor.WithBacking([]float64{1,2,3,4,5,6,7,8}), tensor.WithShape(4,2))) gorgonia.Let(w, tensor.New(tensor.WithBacking([]float64{0.5, -0.2}), tensor.WithShape(2,1))) gorgonia.Let(b, 0.1)

if err := machine.RunAll(); err != nil { fmt.Println(err) }

fmt.Printf("النتيجة: %v", activated.Value())}


2. GoLearn — خوارزميات ML الكلاسيكية

GoLearn (golearn) هي مكتبة تحتوي على تطبيقات لـ KNN، أشجار القرار، الغابة العشوائية، الانحدار الخطي والتجميع. واجهة API تشبه sklearn.



التثبيت:

go get -u github.com/sjwhitworth/golearn


مثال: أقرب الجيران (KNN)

package main

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

func main() { // تحميل البيانات (CSV) rawData, err := base.ParseCSVToInstances("iris.csv", true) if err != nil { panic(err) }

// إنشاء KNN مع k=3 ومقياس إقليدي cls := knn.NewKnnClassifier("euclidean", 3)

// تقسيم إلى تدريب/اختبار trainData, testData := base.InstancesTrainTestSplit(rawData, 0.67)

// التدريب cls.Fit(trainData)

// التنبؤ predictions, err := cls.Predict(testData) if err != nil { panic(err) }

// تقييم الدقة accuracy, err := evaluation.GetAccuracy(testData, predictions) fmt.Printf("الدقة: %.2f%%", accuracy*100)}


3. Goml — نماذج خفيفة للتكامل السريع

Goml يوفر تطبيقات بسيطة للانحدار الخطي واللوجستي، و naive Bayes، والشبكات العصبية بأقل قدر من الكود.



package main

import ( "fmt" "github.com/cdipaolo/goml/base" "github.com/cdipaolo/goml/text")

func main() { // بيانات لتصنيف النص

توصيات