Normalization
استكشف كيف يعمل التطبيع على تحسين تدريب النموذج ودقته. تعرف على تحجيم Min-Max، وتوحيد Z-score، ودورها في مشاريع Ultralytics YOLO26.
التطبيع هو تقنية أساسية في المعالجة المسبقة للبيانات تتضمن إعادة تحجيم السمات الرقمية إلى نطاق قياسي. في سياق تعلم الآلة (ML)، غالبًا ما تحتوي مجموعات البيانات على ميزات ذات مقاييس متفاوتة، مثل نطاقات العمر (0-100) مقابل مستويات الدخل (0-100,000). إذا تركت دون معالجة، يمكن أن تتسبب هذه التباينات في تحيز خوارزمية التحسين نحو القيم الأكبر، مما يؤدي إلى تقارب أبطأ وأداء دون المستوى الأمثل. من خلال تطبيع البيانات، يضمن المهندسون أن كل ميزة تساهم بشكل متناسب في النتيجة النهائية، مما يسمح للشبكات العصبية بالتعلم بكفاءة أكبر.
Link to this sectionتقنيات التطبيع الشائعة#
هناك العديد من الطرق القياسية لتحويل البيانات، وكل منها مناسب لتوزيعات مختلفة ومتطلبات خوارزمية متنوعة.
- تحجيم Min-Max: هذا هو الشكل الأكثر بديهية للتطبيع. فهو يعيد تحجيم البيانات إلى نطاق ثابت، وعادة ما يكون [0، 1]. يتم تنفيذ هذا التحويل عن طريق طرح الحد الأدنى والقسمة على النطاق (الحد الأقصى ناقص الحد الأدنى). يُستخدم هذا على نطاق واسع في معالجة الصور حيث يُعرف أن كثافة البكسل محصورة بين 0 و255.
- توحيد Z-Score: على الرغم من استخدامه غالبًا بالتبادل مع التطبيع، فإن التوحيد يقوم على وجه التحديد بتحويل البيانات لتكون بمتوسط 0 وانحراف معياري قدره 1. هذا مفيد بشكل خاص عندما تتبع البيانات توزيع غاوسي، وهو ضروري لخوارزميات مثل آلات ناقلات الدعم (SVM) التي تفترض بيانات موزعة بشكل طبيعي.
- التحجيم اللوغاريتمي: بالنسبة للبيانات التي تحتوي على قيم متطرفة أو تتبع قانون القوة، يمكن أن يؤدي تطبيق تحويل لوغاريتمي إلى ضغط نطاق القيم. وهذا يجعل التوزيع أكثر قابلية للإدارة بالنسبة لـ محرك الاستدلال لتفسيره بفعالية دون أن يتأثر بطفرات القيم الهائلة.
Link to this sectionتطبيقات العالم الحقيقي#
يعد التطبيع خطوة قياسية في مسارات عمل أنظمة الذكاء الاصطناعي عالية الأداء عبر مختلف الصناعات.
-
الرؤية الحاسوبية (CV): في مهام مثل اكتشاف الأشياء وتصنيف الصور، تتكون الصور الرقمية من قيم بكسل تتراوح من 0 إلى 255. إن تغذية هذه الأعداد الصحيحة الكبيرة مباشرة إلى شبكة يمكن أن تبطئ الانحدار المتدرج. تتضمن خطوة المعالجة المسبقة القياسية قسمة قيم البكسل على 255.0 لتطبيعها إلى نطاق [0، 1]. تضمن هذه الممارسة مدخلات متسقة لنماذج متقدمة مثل YOLO26، مما يحسن استقرار التدريب على منصة Ultralytics.
-
تحليل الصور الطبية: غالبًا ما تنشأ الفحوصات الطبية، مثل تلك المستخدمة في الذكاء الاصطناعي في الرعاية الصحية، من أجهزة مختلفة ذات مقاييس كثافة متفاوتة. يضمن التطبيع أن تكون كثافة البكسل من تصوير الرنين المغناطيسي (MRI) أو الأشعة المقطعية (CT) قابلة للمقارنة عبر مختلف المرضى والمعدات. هذا الاتساق ضروري لـ اكتشاف الأورام بدقة، مما يسمح للنموذج بالتركيز على الشذوذ الهيكلي بدلاً من تباينات السطوع.
Link to this sectionالتمييز بين المفاهيم ذات الصلة#
من المهم التمييز بين التطبيع والمصطلحات المماثلة للمعالجة المسبقة والمصطلحات المعمارية الموجودة في التعلم العميق.
- مقابل تطبيع الدفعات (Batch Normalization): تطبيع البيانات هو خطوة معالجة مسبقة تُطبق على مجموعة بيانات الإدخال الخام قبل دخولها إلى الشبكة. وعلى العكس من ذلك، يعمل تطبيع الدفعات داخلياً بين الطبقات في جميع أنحاء الشبكة أثناء تدريب النموذج. فهو يقوم بتطبيع مخرجات طبقة التنشيط السابقة لتحقيق استقرار عملية التعلم.
- vs. Image Augmentation: While normalization changes the scale of the pixel values, augmentation changes the content or geometry of the image (e.g., flipping, rotating, or changing colors) to increase dataset diversity. Tools like Albumentations are used for augmentation, whereas normalization is a mathematical scaling operation.
Link to this sectionمثال على التنفيذ#
في الرؤية الحاسوبية، غالباً ما يكون التطبيع هو الخطوة الأولى في مسار العمل. يوضح مثال Python التالي كيفية تطبيع بيانات الصور يدوياً باستخدام مكتبة NumPy، وهي عملية تحدث تلقائياً داخل محمل بيانات Ultralytics YOLO26 أثناء التدريب.
import numpy as np
# Simulate a 2x2 pixel image with values ranging from 0 to 255
raw_image = np.array([[0, 255], [127, 64]], dtype=np.float32)
# Apply Min-Max normalization to scale values to [0, 1]
# This standardizes the input for the neural network
normalized_image = raw_image / 255.0
print(f"Original Range: {raw_image.min()} - {raw_image.max()}")
print(f"Normalized Range: {normalized_image.min()} - {normalized_image.max()}")





