Chollet ML نشر 16 أغسطس 2021 أرسل تقرير نشر 16 أغسطس 2021 ما هو الفرق بين val_acc و acc، فأثناء قراءتي لإحدى النماذج رأيتهم لكن لم أفهم سبب وجود val_acc؟ Epoch 5/200 727722/727722 [==============================] - 50s - loss: 0.3167 - acc: 0.9557 - val_loss: 0.5473 - val_acc: 0.7455 Epoch 6/200 727722/727722 [==============================] - 50s - loss: 0.3152 - acc: 0.9573 - val_loss: 0.5497 - val_acc: 0.7404 Epoch 6/200 727722/727722 [==============================] - 60s - loss: 0.3136 - acc: 0.9581 - val_loss: 0.6518 - val_acc: 0.7001 اقتباس
3 Ali Haidar Ahmad نشر 16 أغسطس 2021 أرسل تقرير نشر 16 أغسطس 2021 كما هو معروف فإن البيانات تقسم إلى ٣ أقسام . بيانات تدريب training set وبيانات نقيس عليها تقدمنا خلال عملية التدريب validation set وبيانات نختبر عليها النموذج النهائي test set. وكما نعلم فإن بيانات التدريب هي بيانات مرئية أي أن النموذج يتدرب عليها ويعرف نتيجة كل عينة من البيانات. أما بيانات التحقق وبيانات الاختبار فلايعرف النموذج نتائجها أي أنها بيانات غير مرئية. والهدف من كونها غير مرئية هو قياس كفاءة النموذج الحقيقية. الآن دعنا نعود إلى بيانات ال Validation ... عندما نقوم بتدريب نموذج في التعلم الآلي (مثلاً نموذج لتصنيف الصور) فإن أهم شيئ نحتاجه هو تحديد بروتوكول لقياس عملية التقدم خلال عملية التدربب (تحديد طريقة تمكننا من معرفة سلوك عملية التدريب بغية تجنب ال overfitting وبغية ضبط معاملات النموذج العليا مثل عدد الطبقات أو الخلايا أو نوع الطبقات أو حجم الباتش ..الخ). وهناك عدة بروتوكولات أشهرها ال Cross Validation وتعتمد على أخذ عينة جزئية من بيانات التدريب وقياس دقة النموذج accuracy عليها بعد كل فترة (epoch) من عملية التدريب وهذه القيمة هي مايشار لها ب val_acc أما ال acc فهي دقة النموذج على بيانات التدريب. نحن بحاجة دوما لمراقبة هاتين القيمتين خلال تدريب النموذج ؟ لماذا؟ كما قلت لكي نقيس سلامة التقدم.. فخلال التدريب فإن الشيئ المؤكد دوماً هو أن ال acc ستزداد وتتحسن وهذا يكون إشارة إلى أن النموذج يتعلم من البيانات. لكن هذا قد يجعل النموذج يقع في ال OF وهذا ما لانريده بالطبع ..حسناً إذن كيف سنعرف متى يحدث ال OF منأجل أن نوقف علية التدريب؟ الجواب هو من خلال ال val_acc فطالما أنها تزداد مع ازدياد ال acc فهذا يعني أن النموذج مازال يتعلم ويسلك سلوك صحيح أي أن النموذج قادر على تعميم Generlaization ماتعلمه على بيانات جيدة لم يراها من قبل. أما عندما يستمر ال acc بالتحسن وتبدأ ال val_acc بالانهيار (بالانخفاض) فهذا يعني أن نموذجك لم يعد قادراً على التعلم أكثر من البيانات وبدأ يحفظها (حالة OF ) وهنا ينبغي أن نوقف عملية التدريب لأن النموذج لن يكون قادرا على تعميم مايتعلمه. ولهذا السبب نحن بحاجة لها. أما بابنسبة لل loss فهي قيمة التكلفة على بيانات التدربب و المحسوبة من دالة التكلفة التي حددتها للنموذج. أما val_loss فهي الخاصة ببيانات ال validation. 3 اقتباس
1 Ahmed Sharshar نشر 16 أغسطس 2021 أرسل تقرير نشر 16 أغسطس 2021 (معدل) في التعلم العميق ، ال loss هي القيمة التي تحاول الشبكة العصبية تقليلها: حيث تمثل الفرق بين القيم الحقيقية والتنبؤات. لتقليل هذا الفرق، تتعلم الشبكة العصبية عن طريق ضبط الأوزان بطريقة تقلل من الخسارة. الدقة accuracy هي عكس ال loss، حيث تمثل مقدار التنبؤات الصحيحية التي حصلنا عليها مقارنة بالقيم الحقيقية، ومع تقليل ال loss نقوم بزيادة ال accuracy. هناك ثلاثة من البيانات، بيانات للتدريب training set واخري لقياس مدي التقدم الذي نحرزه validation set واخيرا واحدة للاختبار test set. اما الاولى فهي لتقوم الشبكة بالتعلم عليها، وتكون اكبر حزمة بيانات بين الثلاث انواع، وهنا نستخدم acc لقياس مدي التقدم الذي نحرزه في التعلم بناءا على تلك البيانات، وبالطبيعي فان قيمه acc ستزداد مع الوقت، اذا لم يحدث هذا فان النموذج الذي بنيته بالتاكيد به خطأ ما. اما الثانية validation set فهي حزمه اخرى لقياس مدي اداء النموذج الخاص بنا حتي نستطيع تحسينه مع الوقت، تكون اصغر من ال training set وقريبه في ححجمها من test set، وفيها نستخدم val_acc لقياس مدى التقدم الذي نحرزه فيها، من الطبيعي كذلك انها ستزداد مع الوقت، لكن مراقبتها مهمة، لانه يجب ان نوقف التعلم اذا توقفت val_acc عن الزيادة حتى لا يحدث over fitting.. تم التعديل في 16 أغسطس 2021 بواسطة Ahmed Sharshar اقتباس
السؤال
Chollet ML
ما هو الفرق بين val_acc و acc، فأثناء قراءتي لإحدى النماذج رأيتهم لكن لم أفهم سبب وجود val_acc؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.