التعلم الآلي باستخدام JavaScript: مكتبات لـ Node.js
على الرغم من أن Python لا يزال اللغة المهيمنة في مجال التعلم الآلي، إلا أن نظام JavaScript البيئي (خاصة Node.js) يتطور بنشاط ويقدم أدوات قوية للتعلم الآلي. يتيح استخدام JavaScript إنشاء حلول تعلم آلي تتكامل بسهولة مع تطبيقات الويب، وتعمل في الوقت الفعلي على الخادم أو حتى في المتصفح. إذا كان مشروعك يستخدم Node.js بالفعل، فقد يكون دمج مكتبات التعلم الآلي أكثر طبيعية من التحول إلى Python.
في هذه المقالة، سنستعرض المكتبات الرئيسية للتعلم الآلي باستخدام JavaScript (Node.js)، وميزاتها، وأمثلة على استخدامها.
1. TensorFlow.js
TensorFlow.js هي المكتبة الأكثر قوة وشعبية للتعلم الآلي باستخدام JavaScript، وهي منقولة من TensorFlow الأصلي. تدعم تشغيل النماذج في كل من المتصفح و Node.js، باستخدام تسريع الأجهزة عبر CUDA أو WebGL.
الميزات الرئيسية:
- تشغيل النماذج المدربة مسبقًا (MobileNet، BERT، YOLO).
- تدريب الشبكات العصبية من الصفر.
- التعلم بالنقل (إعادة تدريب النماذج الموجودة).
- دعم GPU عبر CUDA على Node.js.
- تحويل النماذج من Python TensorFlow (تنسيق TFJS).
مثال: الانحدار الخطي باستخدام TensorFlow.js
const tf = require('@tensorflow/tfjs-node');
// البيانات: x -> y (y = 2x - 1)const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);
// إنشاء النموذجconst model = tf.sequential();model.add(tf.layers.dense({units: 1, inputShape: [1]}));model.compile({optimizer: 'sgd', loss: 'meanSquaredError'});
// التدريبmodel.fit(xs, ys, {epochs: 200}).then(() => { // التنبؤ لـ x = 5 model.predict(tf.tensor2d([5], [1, 1])).print();});2. Brain.js
Brain.js هي مكتبة بسيطة وبديهية للشبكات العصبية. مناسبة تمامًا للمبتدئين والمشاريع الصغيرة. تدعم الإدراكات متعددة الطبقات (MLP)، والشبكات المتكررة (RNN)، وشبكات الذاكرة طويلة قصيرة المدى (LSTM).
الميزات الرئيسية:
- حد أدنى للدخول - واجهة برمجة تطبيقات ببضعة أسطر.
- دعم التدريب غير المتزامن لتجنب الحظر.
- حفظ وتحميل النماذج المدربة بصيغة JSON.
- العمل في كل من Node.js والمتصفح.
مثال: XOR باستخدام Brain.js
const brain = require('brain.js');
const net = new brain.NeuralNetwork();
// بيانات التدريب لـ XORnet.train([ {input: [0, 0], output: [0]}, {input: [0, 1], output: [1]}, {input: [1, 0], output: [1]}, {input: [1, 1], output: [0]}]);
// الاختبارconst output = net.run([1, 0]); // ~0.99console.log(output);3. Synaptic
Synaptic هي مكتبة مستقلة عن البنية للشبكات العصبية. تتيح بناء أي نوع تقريبًا من الشبكات: الإدراكات، الشبكات متعددة الطبقات، الشبكات ذات الذاكرة (LSTM)، شبكات هوبفيلد، وغيرها. المكتبة ليس لها تبعيات خارجية.
الميزات الرئيسية:
- مرونة في بناء البنى.
- دعم خوارزميات التعلم المختلفة (SGD، Momentum، Nesterov).
- أداة تصور الشبكة (في المتصفح).
- دعم حفظ/تحميل النماذج.
مثال: شبكة عصبية بسيطة باستخدام Synaptic
const synaptic = require('synaptic');const {Layer, Network, Trainer} = synaptic;
const inputLayer = new Layer(2);const hiddenLayer = new Layer(3);const outputLayer = new Layer(1);
inputLayer.connect(hiddenLayer);hiddenLayer.connect(outputLayer);
const myNetwork = new Network({input: inputLayer, hidden: [hid