الالتفاف بلغة PHP الخالصة: أربع حلقات تكتشف الحدود في صورة
تبدو الشبكات الالتفافية صندوقاً أسود إلى أن تكتب عملية الالتفاف بيدك. يأخذ كاتب الجزء الثامن من سلسلة مطوري PHP صورة 5×5 ونواة 3×3 وأربع حلقات متداخلة. ينزلق المرشح فوق البكسلات ويضرب القيم في الأوزان ثم يجمعها: فينتج 0 في المنطقة المظلمة و570 عند الحدّ.
معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
سمع معظم المطورين عن الشبكات العصبية الالتفافية، لكن قلّة تفهم ما يجري داخل الطبقة. يزيل الجزء الثامن من سلسلة «الذكاء الاصطناعي لمطوري PHP» هذا الغموض: ينفّذ الكاتب الالتفاف بلغة PHP 8.1+ الخالصة، دون مكتبات ولا خوارزميات تعلّم آلي جاهزة.
كيف يرى الحاسوب الصورة
الصورة بالنسبة للآلة مصفوفة من الأعداد. في الصورة بالأبيض والأسود يأخذ كل بكسل قيمة من 0 (أسود) إلى 255 (أبيض). يستخدم المثال صورة 5×5: الأعمدة الثلاثة اليسرى قيمتها 10 والعمودان الأيمنان قيمتهما 200. بين العمودين الثالث والرابع يمرّ حدّ عمودي، وهو ما يجب العثور عليه.
لهذا تُستخدم نواة الالتفاف (kernel)، وهي مصفوفة أوزان صغيرة بحجم 3×3. على اليسار -1، وفي الوسط 0، وعلى اليمين 1. تقارن النواة سطوع الجزأين الأيسر والأيمن من المنطقة: إن تشابها ألغى كل حدٍّ الآخر، وإن اختلفا كانت النتيجة كبيرة بالقيمة المطلقة.
كيف يعمل ذلك في الشيفرة
تستقبل الدالة convolve() مصفوفة الإدخال والنواة. يُحسب حجم الناتج ببساطة: عرض الإدخال ناقص عرض النواة زائد واحد، والأمر نفسه للارتفاع. وبالنسبة إلى 5×5 و3×3 نحصل على خريطة سمات بحجم 3×3. تحرّك الحلقتان الخارجيتان النافذة فوق الصورة، وتضرب الحلقتان الداخليتان البكسلات في الأوزان وتجمعان الناتج.
في هذا التنفيذ تساوي الخطوة (stride) القيمة 1، والحشو (padding) يساوي 0، ولا تُقلب النواة. بالدقة، هذه عملية cross-correlation وليست التفافاً رياضياً، لكن في التعلم العميق جرت العادة على تسميتها التفافاً. لا تُقتطع قيم الناتج إلى المدى 0–255: يمكن أن تحتوي خريطة السمات على أعداد سالبة وقيم أكبر من 255.
والناتج مصفوفة عمودها الأول أصفار، وقيمة العمودين الآخرين 570. في المنطقة المظلمة المتجانسة لا يرى المرشح أي تغيّر فتكون النتيجة صفراً. وعندما تشمل النافذة بكسلات مظلمة وفاتحة معاً، يعطي كل صف 190، وتجمع الصفوف الثلاثة 570.
لماذا استجابتان لحدّ واحد
لا تعني القيمتان 570 وجود حدّين. فالنافذة بعرض 3 بكسلات، عند إزاحتها بمقدار واحد، تلتقط الانتقال من الداكن إلى الفاتح مرتين، ولذلك تستمر الاستجابة في موضعين متجاورين. هذا سلوك طبيعي للنواة وليس خللاً.
لاحقاً في المقال يغيّر الكاتب الأوزان ويبحث عن الحدود الأفقية، موضحاً أن تغيير المرشح يغيّر ما تستجيب له الطبقة.
ما الذي نفعله بهذا
الاستنتاج العملي متواضع لكنه صريح. هذه الشيفرة لا تصلح للإنتاج: أربع حلقات متداخلة في PHP ستكون بطيئة على الصور الحقيقية، والعمل الجاد يحتاج إلى مكتبات محسّنة أو استدعاء نماذج خارجية. لكن إن كنت تعمل مع الرؤية الحاسوبية عبر واجهات API أو امتدادات، فإن فهم الالتفاف يساعدك على قراءة التوثيق وتصحيح النتائج غير المتوقعة وفهم ما تتعلمه الشبكة فعلاً: في CNN لا تُحدَّد أوزان النوى يدوياً، بل تُضبط أثناء التدريب.
المقال مفيد كمادة تعليمية لفرق PHP التي تريد فهم أساس CNN دون الانتقال إلى Python.
- 23 أكتوبر 2026مفارقة التطوير بالذكاء الاصطناعي: لماذا ترتفع السرعة بنسبة 55% على صفحة فارغة، لكنها تنخفض بنسبة 19% في الشيفرة الناضجة؟
- 3 يوليو 2026شبكة عصبية للتنبؤ بالناتج المحلي الإجمالي بلغة C++ دون TensorFlow: تعمل على Arduino بسعر 400 روبل
- 9 أكتوبر 2026SLVR على Qwen2.5-VL-7B يرفع نتيجة BLINK Relation بمقدار 14,2 نقطة دون CoT نصي
- 22 أكتوبر 2026AgentVQA يختبر 22 نموذج VLM في المهام الوكيلية: أفضلها لم يتجاوز 58.5%
أسئلة وأجوبة حول الخبر
ما أبرز التفاصيل حول كيف يرى الحاسوب الصورة؟
الصورة بالنسبة للآلة مصفوفة من الأعداد. في الصورة بالأبيض والأسود يأخذ كل بكسل قيمة من 0 (أسود) إلى 255 (أبيض). يستخدم المثال صورة 5×5: الأعمدة الثلاثة اليسرى قيمتها 10 والعمودان الأيمنان قيمتهما 200. بين العمودين الثالث والرابع يمرّ حدّ عمودي، وهو ما يجب العثور عليه. لهذا تُستخدم نواة الالتفاف (kernel)، وهي مصفوفة أوزان صغيرة بحجم 3×3. على اليسار -1، وفي الوسط 0، وعلى اليمين 1. تقارن النواة سطوع الجزأين الأيسر والأيمن من المنطقة: إن تشابها ألغى كل حدٍّ الآخر، وإن اختلفا كانت النتيجة كبيرة بالقيمة المطلقة.
ما أبرز التفاصيل حول كيف يعمل ذلك في الشيفرة؟
تستقبل الدالة convolve() مصفوفة الإدخال والنواة. يُحسب حجم الناتج ببساطة: عرض الإدخال ناقص عرض النواة زائد واحد، والأمر نفسه للارتفاع. وبالنسبة إلى 5×5 و3×3 نحصل على خريطة سمات بحجم 3×3. تحرّك الحلقتان الخارجيتان النافذة فوق الصورة، وتضرب الحلقتان الداخليتان البكسلات في الأوزان وتجمعان الناتج. في هذا التنفيذ تساوي الخطوة (stride) القيمة 1، والحشو (padding) يساوي 0، ولا تُقلب النواة. بالدقة، هذه عملية cross-correlation وليست التفافاً رياضياً، لكن في التعلم العميق جرت العادة على تسميتها التفافاً.
ما أبرز التفاصيل حول لماذا استجابتان لحدّ واحد؟
لا تعني القيمتان 570 وجود حدّين. فالنافذة بعرض 3 بكسلات، عند إزاحتها بمقدار واحد، تلتقط الانتقال من الداكن إلى الفاتح مرتين، ولذلك تستمر الاستجابة في موضعين متجاورين. هذا سلوك طبيعي للنواة وليس خللاً. لاحقاً في المقال يغيّر الكاتب الأوزان ويبحث عن الحدود الأفقية، موضحاً أن تغيير المرشح يغيّر ما تستجيب له الطبقة.
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
أهم ما في عالم الذكاء الاصطناعي — مرة كل أسبوع
سبع قصص مهمة فعلاً هذا الأسبوع، مختارة بعناية. بلا ضجيج ولا بيانات صحفية.
تم! تحقق من بريدك للتأكيد.