التعلم الآلي باستخدام TypeScript: نظرة عامة على مكتبات ML في 2024
يحتل TypeScript بثقة مكانة ليس فقط في تطوير الويب، بل وأيضًا في علم البيانات (Data Science). بفضل التصنيف الثابت (static typing) والتوافق مع JavaScript، أصبح أداة مريحة لبناء نماذج التعلم الآلي (ML) التي تعمل مباشرة في المتصفح أو على الخادم (Node.js). في هذه المقالة، سنستعرض المكتبات الرئيسية للتعلم الآلي باستخدام TypeScript، وميزاتها، وأمثلة على الكود، وسيناريوهات الاستخدام.
1. TensorFlow.js — الإطار الرئيسي للتعلم الآلي في المتصفح
TensorFlow.js هو نسخة من إطار TensorFlow الشهير بلغة JavaScript/TypeScript. يتيح تشغيل التدريب والاستدلال (inference) للنماذج سواء في المتصفح أو في Node.js. تدعم المكتبة تسريع GPU عبر WebGL وWebGPU، مما يعطي زيادة في الأداء.
الإمكانيات الرئيسية:
- إنشاء الشبكات العصبية باستخدام واجهة برمجة تطبيقات عالية المستوى (tf.sequential، tf.model).
- تحميل النماذج المدربة مسبقًا من TensorFlow Hub.
- تحويل النماذج من نسخة Python من TensorFlow إلى تنسيق .json.
- العمل مع المصفوفات (tensors)، والمحسنات (optimizers)، والطبقات (layers).
مثال: الانحدار الخطي باستخدام TypeScript
import * as tf from '@tensorflow/tfjs';
// البيانات: العلاقة y = 2x - 1const xs = tf.tensor2d([-1, 0, 1, 2, 3, 4], [6, 1]);const ys = tf.tensor2d([-3, -1, 1, 3, 5, 7], [6, 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: 250}).then(() => { model.predict(tf.tensor2d([10], [1, 1])).print(); // الإخراج: ~19 (قريب من 2*10 - 1 = 19)});2. ML5.js — مكتبة للتعلم الآلي الإبداعي
ML5.js مبنية فوق TensorFlow.js وتركز على سهولة الاستخدام. توفر نماذج جاهزة للتعرف على الصور والصوت والنص والإيماءات. مثالية للمشاريع التعليمية والنماذج الأولية.
مثال: تصنيف الصور
import * as ml5 from 'ml5';
// تحميل النموذج المدرب مسبقًا MobileNetconst classifier = ml5.imageClassifier('MobileNet');
// تصنيف الصورةconst img = document.getElementById('myImage') as HTMLImageElement;classifier.classify(img, (err: Error | null, results: any[]) => { if (err) console.error(err); else console.log('النتيجة:', results[0].label);});3. Brain.js — الشبكات العصبية لـ Node.js والمتصفح
Brain.js هي مكتبة خفيفة لبناء الشبكات العصبية بلغة JavaScript/TypeScript. تدعم بنى مختلفة: LSTM، RNN، GRU. مناسبة تمامًا لمهام التنبؤ بالسلاسل الزمنية ومعالجة النصوص.
مثال: شبكة عصبية بسيطة لـ XOR
import brain from 'brain.js';
const net = new brain.NeuralNetwork();
net.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);4. Synaptic — مكتبة مرنة من الناحية المعمارية
Synaptic تسمح بإنشاء شبكات عصبية بأي بنية، بما في ذلك المستقبلات متعددة الطبقات (multilayer perceptrons)، والشبكات ذات التغذية الراجعة (recurrent networks)، وخرائط كوهونين ذاتية التنظيم (self-organizing maps). لا تتطلب تبعيات وتعمل في المتصفح.
مثال: إنشاء مستقبل (Perceptron)
import { Architect, Trainer } from 'synaptic';
const network = new Architect.Perceptron(2, 3, 1);const trainer = new Trainer(network);
trainer.train([ { input: [0, 0], output: [0] }, { input: [0, 1], output: [1] }, { input: [1, 0], output: [1] }, { input: [1, 1], output: [0] }], { iterations: 1000 });
console.log(network.activate([1, 0])); // ~0.98