الأخبار التكنولوجية والاستعراضات والنصائح!

قم بتصحيح ملصقات البيانات الخاصة بك تلقائيًا وبسرعة – نحو الذكاء الاصطناعي

ستساعدك المقالة التالية: قم بتصحيح ملصقات البيانات الخاصة بك تلقائيًا وبسرعة – نحو الذكاء الاصطناعي

نُشر في الأصل في Towards AI.

الذكاء الاصطناعي المرتكز على البيانات دون إعادة تسمية بياناتك يدويًا

يبدو تحسين جودة البيانات سهلاً بدرجة كافية. إنه في الأساس تحديد وتصحيح التسميات الخاطئة. لكن عبء العمل المتعلق بفحص جودة البيانات يدويًا يمكن أن يصبح سريعًا غير قابل للتغلب عليه مع توسع مجموعة البيانات.

ماذا لو تمكنا من أتمتة هذه العملية؟ لم أكن أعلم أن هذا كان ممكنًا حتى واجهت Cleanlab. كانت هذه هي المكتبة التي حددت أخطاء التسمية في مجموعات بيانات الصور الكبيرة مثل ImageNet.

ما هو Cleanlab؟

Cleanlab عبارة عن مكتبة مفتوحة المصدر تبحث عن الأخطاء وتصلحها في أي مجموعة بيانات ML. تعمل حزمة الذكاء الاصطناعي المرتكزة على البيانات هذه على تسهيل التعلم الآلي ببيانات العالم الواقعية الفوضوية من خلال توفير تسميات نظيفة أثناء التدريب.

في هذا المنشور ، سأستعرض مثالاً على كيفية استخدامي cleanlab لتحسين أداء نموذج في مسابقة الذكاء الاصطناعي المرتكزة على البيانات والتي عقدها Andrew Ng. سوف أتناول ما يلي:

  • تنزيل مجموعة البيانات
  • التدريب على النموذج الأساسي (Resnet50 المدربة مسبقًا)
  • تركيب المنظفات
  • تحديد مشكلات جودة البيانات باستخدام Cleanlab
  • حل مشاكل جودة البيانات
  • صقل نفس طراز Resnet50 المدرب مسبقًا ببيانات نظيفة
  • قارن بين أداء النموذج الأساسي والنموذج الجديد المدرب على البيانات النظيفة

جميع الرموز في هذا المنشور موجودة في هذا المفكرة. اتبع على طول!

(Note: سأقوم فقط بنشر مقتطفات التعليمات البرمجية التي لا تعمل بمفردها. الرجاء استخدام دفتر الملاحظات إذا كنت ترغب في تكرار النتائج.)

هيا بنا نبدأ.

تنزيل مجموعة البيانات

تتكون مجموعة البيانات الخاصة بمسابقة الذكاء الاصطناعي المتمحورة حول البيانات من صور مكتوبة بخط اليد للأرقام الرومانية من “I” إلى “X”. يحتوي على 2880 صورة من 10 فئات ، مقسمة إلى مجموعات بيانات القطار والتحقق من الصحة.

هنا مجموعة فرعية عشوائية من الصور. على الفور ، يمكننا أن نرى أن أحد التصنيفات غير صحيح. على وجه الخصوص ، تحتوي الصورة الموجودة في العمود الموجود في أقصى اليمين في الصف الثاني على تسمية غير صحيحة لـ IX عندما تكون IV.

تدريب النموذج الأساسي (Resnet50)

باستخدام مجموعة البيانات الأصلية ، سنقوم بتدريب نموذج Resnet50 الأساسي. انطلاقاً من روح المنافسة التي تتمحور حول البيانات ، فإن جميع المشاركات في المسابقة لها نفس النموذج. وبالتالي ، سوف نستخدم هذا النموذج للتدريب الأساسي.

def get_net ():

base_model = tf.keras.applications.ResNet50 (
شكل_المدخلات = (32 ، 32 ، 3) ،
include_top = خطأ ،
الأوزان = لا شيء ،
)
base_model = tf.keras.Model (
المدخلات ، النواتج =[base_model.get_layer(“conv2_block3_out”).output]
)

المدخلات = tf.keras.Input (الشكل = (32 ، 32 ، 3))
x = tf.keras.applications.resnet.preprocess_input (المدخلات)
س = نموذج القاعدة (س)
س = tf.keras.layers.GlobalAveragePooling2D () (x)
س = tf.keras.layers. كثيفة (10) (س)
النموذج = tf.keras.Model (المدخلات ، x)

model.compile (
محسن = tf.keras.optimizers.Adam (lr = 0.0001) ،
الخسارة = tf.keras.losses.CategoricalCrossentropy (from_logits = True) ،
المقاييس =[“accuracy”]و
)

بعد التدريب لمدة 100 حقبة ، ارتفعت دقة مجموعة التدريب إلى 100٪ ، وانخفضت خسارة التدريب إلى ما يقرب من 0. وقد تذبذب فقدان التحقق بشكل كبير ، على الرغم من ذلك. هذه حالة نقص في الملاءمة ، حيث لا توجد بيانات كافية للنموذج لتعميمه على مجموعة التحقق من الصحة.

لم يعمل النموذج جيدًا في مجموعة الاختبار أيضًا. بشكل عام ، تبلغ دقتها 59٪.

على وجه الخصوص ، نرى أنه أداؤه ضعيف على الملصق “II” ، وغالبًا ما يربكه مع “I” و “III”. يمكننا أن نقول الشيء نفسه عن “VIII” ، والتي غالبًا ما يتم تصنيفها بشكل خاطئ على أنها “VII”.

نظرًا لأدائه الضعيف ، ماذا يمكننا أن نفعل حيال النموذج؟

قد تتضمن الاقتراحات النموذجية “تغيير البنية” أو “ضبط المعلمة الفائقة”. بالرغم من صحتها ، إلا أن هذه الاقتراحات تتجاهل حقيقة أن لدينا القليل جدًا من البيانات الجيدة للعمل معها. أي تحسين في النموذج له تأثير ضئيل أو معدوم على الأداء العام.

بدلاً من التكرار على النموذج ، فلنقم بتحسين مجموعة البيانات بدلاً من ذلك.

عادة ما تكون هذه عملية طويلة. يحتاج الممارسون إلى استكشاف مجموعة البيانات وتحديد التسميات السيئة يدويًا. هذه ليست فقط عملية بطيئة ولكنها أيضًا عملية عرضة للخطأ.

حسنًا ، هذا إذا لم يكن لديك Cleanlab. يقوم Cleanlab تلقائيًا بالبحث عن مشكلات التسمية وإصلاحها في مجموعات بيانات ML الخاصة بك.

دعنا نجربها في مجموعة البيانات هذه ونرى كيف تعمل على تحسين نموذجنا.

تركيب Cleanlab

نقطة تثبيت scikeras نظيفة

تحضير

نظرًا لأن ميزات cleanlab تتطلب توافقًا مع scikit-Learn ، فسنحتاج إلى تكييف شبكة Keras العصبية وفقًا لذلك. لحسن الحظ ، يمكن للخيال التعامل مع ذلك لنا دون عناء.

من scikeras.wrappers استيراد KerasClassifier
mdl = KerasClassifier (النموذج = get_net ، العهود = عدد_الخطوات ، حجم الدُفعة = 8 ، مطول = 0)

بعد ذلك ، نستخدم الدالة cross_val_predict لإجراء التحقق من صحة 5 أضعاف. ينتج عن ذلك احتمالات متوقعة خارج العينة لكل نقطة بيانات في مجموعة البيانات.

من sklearn.model_selection استيراد cross_val_predict
num_crossval_folds = 5 # للكفاءة ؛ ستعمل القيم مثل 5 أو 10 بشكل أفضل بشكل عام
pred_probs = cross_val_predict (
mdl ،
الصور
تسميات،
cv = num_crossval_folds ،
طريقة = “توقع_بروبا” ،
)

تحديد مشكلات جودة البيانات باستخدام Cleanlab

الآن يأتي الجزء المثير. يمكننا تحديد العينات ذات الملصقات الرديئة باستخدام معمل نظيف.

من cleanlab.filter استيراد find_label_issues

تم تصنيف_العلامة_المرتبة = find_label_issues (
labels = full_labels ، pred_probs = pred_prob ، return_indices_ranked_by = “self_confidence”
)
print (“عثر Cleanlab على {len (Rated_label_issues)} مشكلة في التسمية.”)
>>> عثر Cleanlab على 1282 مشكلة في التسمية.

حدد Cleanlab أكثر من 1000 مشكلة في التسمية في مجموعة بيانات (التدريب والتحقق من الصحة) الخاصة بنا والتي تضم أقل من 3000 نقطة بيانات. هذا رقم كبير. دعونا نرى ما إذا كان Cleanlab على حق.

يمكننا بالفعل رؤية بعض البيانات السيئة هنا ، خاصة تلك التي أبرزتها أعلاه. يمكن أن تلوث نقاط البيانات هذه مجموعة البيانات الخاصة بنا بشكل كبير.

يمكننا أيضًا الحصول على ملخص صحي من Cleanlab.

من cleanlab.dataset استيراد health_summary
الملخص الصحي (التصنيفات الكاملة ، الاختبار المسبق)

دعونا نرى ما يتضمنه التقرير الصحي.

يقسم هذا التقرير الصحي جودة الملصق حسب الفصل ، مما يمنح الممارسين فكرة عن الحلقة الأضعف في مجموعة البيانات.

في حالتنا ، نرى أن الفئة ذات أعلى مستوى ضوضاء في التسمية هي الفئات 3 و 7 و 5. هذه هي “IV” و “VIII” و “VI” (الفئة 0 تقابل “I”).

تذكر أن نموذجنا كان أسوأ أداء في هذه الفئات. قدمت نتائج cleanlab تفسيرًا – لم يتمكن النموذج من تعلم تصنيف هذه الفئات بشكل فعال لأن بيانات هذه الفئات صاخبة.

يخمن ceanlab أيضًا ما إذا كان هناك تداخلات في فصولنا الدراسية. يمكن أن تحدث التداخلات عندما لا تكون تعريفات الملصق متعارضة. يمكن أن يحدث أيضًا عندما يتم تسمية فئتين بشكل خاطئ مع بعضهما البعض.

في حالتنا ، نرى أن cleanlab تخبرنا أن هناك 125 مثالًا متداخلاً في الفئة “VII” و “VIII” (من الصف 0). من خلال هذه النتيجة ، يمكننا استكشاف تسميات الفئتين “VII” و “VIII” وتحديد أي تسميات خاطئة.

حساب نقاط جودة التسمية

يمكننا أيضًا الحصول على نقاط الجودة لكل ملصق. تزداد احتمالية تصنيف نقطة البيانات ذات نقاط الجودة الأقل بشكل غير صحيح. وبالتالي يمكننا بثقة أكبر في إزالة نقاط البيانات ذات الدرجات المنخفضة الجودة من مجموعة البيانات الخاصة بنا.

# احصل على نقاط الجودة
من cleanlab.rank استيراد get_label_quality_scores
quality_scores = get_label_quality_scores (full_labels، pred_prob)

إصلاح مشكلة البيانات

لدينا الآن فكرة أفضل عن سبب ضعف أداء نموذجنا.

هناك عدة طرق يمكننا المتابعة من هنا:

  1. إزالة جميع البيانات التي يعتبرها cleanlab مشكلة.
  2. قم بإزالة البيانات ذات نقاط الجودة التي تقل عن الحد الأدنى. نحدد أو نزيل عددًا محددًا من نقاط البيانات.
  3. ضع علامة يدويًا على البيانات المراد إزالتها بدءًا من أقل نقاط جودة.

المقاربة 3 هي الأفضل. الإيجابيات الكاذبة أمر لا مفر منه ، لذلك من الأفضل الاحتفاظ بالإيجابيات الخاطئة (البيانات الجيدة في الواقع معلمة على أنها منخفضة الجودة) في مجموعة التدريب.

هنا ، نستخدم الأسلوب 2. على وجه الخصوص ، نقوم بإزالة 10٪ من نقاط البيانات التي تعتبرها Cleanlab مشكلة من مجموعة التدريب. تبين أن هذا هو 142 عينة.

نموذج إعادة التدريب

الآن ، دعنا نعيد تدريب النموذج بنفس بنية النموذج ، باستثناء مجموعة تدريب وتحقق مختلفة. سنقوم بتقييم النموذج على نفس مجموعة الاختبار غير المعدلة.

أداء نموذج جديد

عند التدريب على البيانات التي تم تنظيفها ، تكون دقة النموذج في مجموعة الاختبار 67٪. هذا تحسن كبير عن السابق 59٪ عندما يتم تدريب النموذج على بيانات قذرة وتقييمه على نفس مجموعة الاختبار.

ساعدت إزالة نقاط البيانات النموذج على أن يصبح أكثر دقة في جميع الفئات باستثناء فئتين. نرى صورة مماثلة عند مقارنة مصفوفات الارتباك.

إغلاق

“في العديد من الصناعات التي لا توجد فيها مجموعات بيانات عملاقة ، يجب أن يتحول التركيز من البيانات الضخمة إلى البيانات الجيدة.” – أندرو نج

شهدت السنوات الأخيرة اكتساب حركة الذكاء الاصطناعي المتمحورة حول البيانات زخمًا. خروجًا ملحوظًا عن النهج المتمحور حول النموذج ، يسعى الذكاء الاصطناعي المرتكز على البيانات إلى تحسين جودة البيانات مع الحفاظ على النموذج ثابتًا.

تجربتي كعالم بيانات تؤكد ملاحظته. من المؤكد أن اختيار نموذج أو خوارزمية مناسبة أمر بالغ الأهمية في بداية دورة علم البيانات. ومع ذلك ، فإن المكاسب الهامشية من تحسين المعلمات الفائقة للنموذج تتضاءل بسرعة نحو النهاية. هذا عندما يساعد تحسين جودة مجموعات البيانات بشكل كبير.

هذا هو سبب قيمة Cleanlab. ثق بي. قضيت أسبوعًا مؤلمًا أتحقق بدقة من الملصقات في محاولة للبقاء مستيقظًا. أنت لا تريد أن تفعل ذلك.

تحقق من وثائق cleanlab هنا.

أنا ترافيس تانج. أشارك محتوى ونصائح علوم البيانات على مكتبات مفتوحة المصدر مثل هذه. تابعني هنا على Medium وعلى LinkedIn للمزيد.


Cleanlab: تم نشر تصحيح تسميات البيانات تلقائيًا وبسرعة في الأصل في Towards AI on Medium ، حيث يواصل الأشخاص المحادثة من خلال تسليط الضوء على هذه القصة والرد عليها.

تم النشر عبر نحو الذكاء الاصطناعي