PHP للتعلم الآلي: خرافة أم حقيقة؟
يرتبط عالم التعلم الآلي (ML) بقوة بلغات Python و R و Julia. ومع ذلك، فإن المطورين الذين يعملون بلغة PHP - إحدى أكثر لغات تطوير الويب شيوعًا - غالبًا ما يتساءلون: "هل يمكن استخدام PHP للتعلم الآلي؟". الإجابة: نعم، يمكن، ولكن مع بعض التحفظات. في هذه المقالة، سنستعرض المكتبات الموجودة، وكيفية كتابة نموذج تعلم آلي بسيط بلغة PHP، وفي أي الحالات يكون ذلك مبررًا حقًا.
المقال موجه للمبتدئين الذين هم على دراية بأساسيات PHP ويريدون تجربة التعلم الآلي دون الانتقال إلى مجموعة تقنيات أخرى.
المكتبات الرئيسية لـ PHP للتعلم الآلي
النظام البيئي لـ PHP للتعلم الآلي ليس غنيًا مثل نظام Python، ولكن توجد بعض المكتبات الناضجة. دعنا نستعرض أشهرها.
PHP-ML (PHP Machine Learning)
PHP-ML هي المكتبة الأكثر شيوعًا والتي تحظى بدعم نشط. توفر مجموعة واسعة من الخوارزميات: التصنيف، الانحدار، التجميع، معالجة البيانات المسبقة، وحتى الشبكات العصبية.
مثال على التثبيت عبر Composer:
composer require php-ai/php-mlمثال على تصنيف بسيط باستخدام آلة المتجهات الداعمة (SVM):
<?phprequire_once __DIR__ . '/vendor/autoload.php';
use Phpml\\Classification\\SVC;use Phpml\\SupportVectorMachine\\Kernel;
// بيانات التدريب: [الوزن، اللون] 0 - أخضر، 1 - أحمر$samples = [[150, 0], [170, 0], [130, 1], [180, 1]];$labels = ['تفاحة', 'تفاحة', 'طماطم', 'طماطم'];
$classifier = new SVC(Kernel::LINEAR, $cost = 1000);$classifier->train($samples, $labels);
// التنبؤecho $classifier->predict([160, 0]); // تفاحةecho $classifier->predict([140, 1]); // طماطم?>TensorFlow PHP
يوجد رابط رسمي لـ TensorFlow - TensorFlow PHP. يسمح بتحميل النماذج المدربة مسبقًا وإجراء الاستدلال (التنبؤات). ومع ذلك، فهو غير مناسب لتدريب النماذج من الصفر - يتم ذلك في Python، بينما يُستخدم PHP فقط للنشر في الإنتاج.
مثال على تحميل نموذج والتنبؤ:
<?phprequire_once 'vendor/autoload.php';
use TensorFlow\\TensorFlow;use TensorFlow\\Session;use TensorFlow\\Graph;
$graph = new Graph();$graph->importGraphDef(file_get_contents('model.pb'));
$session = new Session($graph);$input = $session->input('input_tensor');$output = $session->output('output_tensor');
$result = $session->run([$input => [[1.0, 2.0, 3.0]]]);print_r($result);?>Rubix ML
Rubix ML هي مكتبة حديثة تسعى لتكرار وظائف scikit-learn. تدعم خطوط الأنابيب، التحقق المتقاطع، والعديد من الخوارزميات. مناسبة للمشاريع الأكثر تعقيدًا.
مثال على الانحدار الخطي:
<?phprequire_once 'vendor/autoload.php';
use Rubix\\ML\\Regressors\\Ridge;use Rubix\\ML\\Datasets\\Labeled;
$samples = [[1], [2], [3], [4]];$labels = [2, 4, 6, 8];
$dataset = new Labeled($samples, $labels);$estimator = new Ridge();$estimator->train($dataset);
echo $estimator->predict([[5]]); // ~10?>قيود PHP في التعلم الآلي
على الرغم من وجود المكتبات، فإن PHP لديها بعض القيود الأساسية التي تجعلها ليست الخيار الأفضل للتعلم الآلي.
الأداء والكتابة (Typing)
PHP هي لغة مفسرة ذات كتابة ديناميكية. هذا بطيء بالنسبة للحسابات الرياضية. في Python، يتم حل هذه المشكلة باستخدام مكتبات مكتوبة بلغة C (NumPy, SciPy) تعمل على مستوى منخفض. في PHP، لا توجد تقريبًا حزم رياضية محسنة من هذا القبيل. يتم تنفيذ جميع العمليات في كود PHP، وهو أمر بالغ الأهمية لمجموعات البيانات الكبيرة.
غياب النظام البيئي لعلوم البيانات
في Python، يوجد J