دالة التكلفة في الانحدار الخطي البسيط: الشرح والمعادلة بمثال عملي



رسم منحنى دالة التكلفة J على شكل حرف U مقابل المعامل w، مع الإشارة إلى المعامل b والمعادلة الكاملة لدالة التكلفة J(w,b) في الانحدار الخطي.

تعرفنا سابقًا على مفهوم الانحدار الخطي البسيط، وكيف يقوم النموذج برسم الخط الذي يساعده في التنبؤ بالمخرجات y اعتمادًا على المدخلات x. كما عرفنا دور معاملي الخط w و b، وهو تحديد ميل الخط ونقطة تقاطعه مع محور y، وأن تغيير أحد المعاملين أو الاثنين معًا يغير تنبؤات النموذج.

 لكن السؤال المهم هو: كيف نقيس مقدار الخطأ بين تنبؤ النموذج والقيمة الحقيقية، حتى نعرف هل تغييرw و b جعل النموذج أفضل أم أسوأ؟ فكلما قل هذا الخطأ، اقترب النموذج أكثر من التنبؤ الصحيح. 

هذا المقياس يسمى دالة التكلفة (Cost Function)، وسأشرحها في هذا المقال خطوة خطوة، وأبيّن الهدف منها وكيف تفيدنا.

لماذا نحتاج مقياساً للخطأ؟

عرفنا في المقال السابق أن الوصول إلى القيم المناسبة  للمعاملين w و b أمر مهم للحصول على تنبؤات دقيقة، لكن النموذج لا يعرف هذه القيم مسبقاً، لذلك يبدأ بقيم مبدئية، ثم يقيس مقدار خطئها ليعرف هل هي مناسبة أم لا.

الخطأ هو الفرق بين القيمة الحقيقية والقيمة المتنبأ بها. فالنموذج لا يكتفي بالتنبؤ الذي ينتجه ليحكم على مناسبة المعاملين، بل يقارنه بالقيمة الحقيقية ليحسب مقدار الخطأ.

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

معادلة دالة التكلفة (Cost Function Formula)

نبدأ بخطأ كل نقطة. نأخذ النقطة الأولى، فنحسب تنبؤ النموذج لها من قيمة x باستخدام معادلة التنبؤ:
F(x) = w * x + b
ثم نطرح منه القيمة الحقيقية y الخاصة بالنقطة نفسها، فنحصل على خطئها. ونكرر ذلك مع كل نقطة في البيانات.

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

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

أما القسمة على عدد النقاط فهدفها ألا يزداد الرقم لمجرد كثرة البيانات.وأما العدد 2 فأُضيف لتسهيل الحسابات لاحقاً عندما نبحث عن أفضل قيم w وb، إذ يلغي العدد 2 الذي سيظهر عندها، ولا يؤثر في اختيار أفضل قيمتين لهما. 
النتيجة النهائية رقم واحد يعبّر عن مقدار خطأ النموذج على كل البيانات. 

يمكن تلخيص هذه الخطوات كلها في معادلة واحدة:

معادلة دالة التكلفة: J(w, b) تساوي 1 على 2m مضروباً في مجموع مربعات الفروق بين F(xᵢ) وyᵢ، من i = 1 إلى m

هذه المعادلة تسمى دالة التكلفة (Cost Function)، وهي التي نقيس بها مدى خطأ النموذج.
هي الخطوات نفسها التي شرحناها سابقًا، مكتوبة برموز سهلة الفهم، حيث:
  • J(w,b): رمز دالة التكلفة (Cost Function)، وتعتمد قيمتها على w وb.
  • 1/2m: هو كسر نقسم من خلاله المجموع على ضعف عدد النقاط (حيث m هو عدد النقاط، والـ 2 أُضيفت للسبب الذي شرحناه سابقاً)
  • Σ (مجموع): تعني أن نجمع نتائج ما بعدها لكل النقاط، ويدل الرمز i=1 تحتها وm فوقها على أن الجمع يبدأ من النقطة الأولى وينتهي عند الأخيرة، حيث i هو رقم النقطة التي وصل إليها الجمع حاليًا.
  • F(xᵢ): تنبؤ النموذج للنقطة رقم i، أي قيمة x لهذه النقطة بعد تطبيق معادلة التنبؤ عليها.
  • yᵢ: القيمة الحقيقية للنقطة رقم i.
  • (F(xᵢ) − yᵢ)²: مربع الخطأ للنقطة رقم i، وهو الفرق بين التنبؤ والقيمة الحقيقية مرفوعًا إلى القوة 2.

مثال رقمي على حساب دالة التكلفة

في هذا المثال، نأخذ ثلاث نقاط ونحسب دالة التكلفة مرتين، بقيم مختلفة للمعاملين w وb:

النقطةالمدخل xالمخرج y (القيمة الحقيقية)
118
222
335

نبدأ بالنموذج الأول: w = 0 وb = 5.
 نستعمل معادلة التنبؤ لحساب تنبؤ النموذج لكل نقطة:
  • النقطة 1:  F(1) = 0 × 1 + 5 = 5
  • النقطة 2:  F(2) = 0 × 2 + 5 = 5
  • النقطة 3:  F(3) = 0 × 3 + 5 = 5
نحسب الآن الخطأ لكل نقطة، بطرح القيمة الحقيقية y من التنبؤ:
  • النقطة 1:   3- = 8 - 5
  • النقطة 2:   3 = 2 - 5
  • النقطة 3:   0 = 5 - 5
نجمع هذه الأخطاء أولًا بلا تربيع لنرى النتيجة:  0 = 0 + 3 + (3-)
المجموع يساوي صفرًا، مع أن التنبؤ يبتعد عن القيمة الحقيقية في النقطتين الأولى والثانية.

نربّع الآن كل خطأ على حدة:
  • النقطة 1:  9 = (−3)²
  • النقطة 2:  9 = 3²
  • النقطة 3:  0 = 0² 
  • نجمع المربعات: 18 = 0 + 9 + 9
نقسم المجموع على 2m و عدد النقاط  m = 3 أي:
6 = 3*2 = 2m
 3 = 18/6 = J

رسم بياني يبيّن النقاط الثلاث للبيانات وخط النموذج الأول F(x) = 5، مع خطوط متقطعة تمثّل الفرق بين كل تنبؤ والقيمة الحقيقية.
النموذج الأول (w = 0، b = 5): J = 3 — تنبؤات قريبة من القيم الحقيقية

نكرر الخطوات نفسها بقيم جديدة للمعاملين: w = 3 وb = −1.
نحسب التنبؤ لكل نقطة:
  • النقطة 1: F(1) = 3 × 1 − 1 = 2
  • النقطة 2: F(2) = 3 × 2 − 1 = 5
  • النقطة 3: F(3) = 3 × 3 − 1 = 8
نحسب الخطأ لكل نقطة:
  • النقطة 1: 6- = 8 - 2
  • النقطة 2: 3 = 2 - 5
  • النقطة 3: 3 = 5 - 8
مجموع الأخطاء بلا تربيع: 
0 = 6 - 3 + 3  
نربّع كل خطأ:
  • النقطة 1:  36 = (−6)² 
  • النقطة 2:  9 = 3² 
  • النقطة 3:  9 = 3² 
  • مجموع المربعات:  54 = 9 + 9 + 36
نقسم المجموع على 2m، وهنا m = 3:
2m = 3 × 2 = 6
J = 54 ÷ 6 = 9

رسم بياني يبيّن النقاط الثلاث للبيانات وخط النموذج الثاني F(x) = 3x − 1، مع خطوط متقطعة تمثّل الفرق بين كل تنبؤ والقيمة الحقيقية.
النموذج الثاني (w = 3، b = −1): J = 9 — تنبؤات أبعد عن القيم الحقيقية

من هذا المثال نستنتج أن:
  1.  تغيّر قيمتي w وb يغيّر قيمة دالة التكلفة على البيانات نفسها: J = 3 مع النموذج الأول، وJ = 9 مع الثاني.
  2. النموذج الأول أفضل لأن قيمة دالة التكلفة له أقل، فالقيمتان w وb فيه أنسب لهذه البيانات.
  3. نستنتج كذلك أن مجموع الأخطاء بلا تربيع لا يعطي مقياسًا للخطأ، لأن الأخطاء الموجبة والسالبة قد تلغي بعضها..

كيف تبدو دالة التكلفة؟ (Convex Cost Function)

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

لنجيب عن ذلك نجرّب عدة قيم للمعامل w ونرى كيف تتغير J. تعتمد J على w وb معًا، فنثبّت b = 0 لتبسيط الرسم، ونغيّر w وحدها.
نحسب J على بياناتنا بالخطوات نفسها، تنبؤ ثم خطأ ثم تربيع ثم جمع ثم قسمة:

w01234
J15.58.836.839.516.83

نلاحظ أن J تبدأ كبيرة، ثم تصغر، ثم تكبر من جديد. نرسم هذه القيم لنرى الشكل:

منحنى على شكل حرف U يبيّن قيمة دالة التكلفة J مقابل المعامل w عند b = 0، وقاعه قرب w = 2.

يشبه المنحنى الحرف U. أسفل نقطة فيه هي القاع، وهي أصغر قيمة لدالة التكلفة. كلما اقتربنا من القاع قلّ خطأ النموذج.
هذا الشكل خاص بـ b = 0. لو ثبّتنا b على قيمة أخرى لحصلنا على منحنى U آخر.

أسئلة أخرى

  1. لماذا نربّع بدل أن نأخذ القيمة المطلقة، مع أن كليهما يزيل الإشارة؟(Mean Squared Error_MSE)
القيمة المطلقة تحل مشكلة الإشارة السالبة، وهي خيار صحيح أيضًا. لكننا لا نكتفي بذلك، فالتربيع يؤدي مهمة أخرى:
في المثال الثاني السابق، حسبنا الأخطاء فكانت النتيجة [−6، 3، 3]. لو استعملنا القيمة المطلقة فالنتيجة ستكون [6، 3، 3]. تبقى الأعداد كما هي، ولدينا خطآن متشابهان وخطأ يساوي ضعفهما.

عند استخدام التربيع يحدث شيء آخر، فالأعداد لا تبقى كما هي، بل نضربها في نفسها. نتيجة هذه الأخطاء بعد التربيع ستكون [36، 9، 9]. نلاحظ أن الخطأ الأكبر أصبح أربعة أضعاف الخطأ الأصغر، لا ضعفين فقط كما كان بالقيمة المطلقة.

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

     2. هل دالة التكلفة دائمًا على شكل حرف U؟
 
ليس دائمًا، هذا الشكل يظهر حين نثبّت أحد المعاملين ونغيّر الآخر، فيكون الرسم ثنائي الأبعاد.
أما حين نغيّر كلا المعاملين معًا، فيصبح الرسم ثلاثي الأبعاد، على شكل وعاء. سنرى هذا الشكل في الدروس القادمة.



تعرّفنا في هذا المقال على دالة التكلفة، وكيف تساعدنا على قياس مقدار خطأ النموذج على البيانات كلها. رأينا أيضًا أن المعاملين w وb هما اللذان يتحكمان في قيمتها، فتغيّر أحدهما يغيّر دالة التكلفة.

لكن كيف نصل إلى أفضل قيمة لهذين المعاملين، أي التي تعطي أصغر قيمة ممكنة لدالة التكلفة على بياناتنا؟
هذا ما سنتعرف عليه في المقال القادم.

مرجع

اعتمدنا في تبسيط هذا المقال على شرح دالة التكلفة في دورة Machine Learning Specialization للمعلم أندرو نج، من DeepLearning.AI وStanford Online. وما عدا ذلك فهو فهمنا الشخصي وصياغتنا.
Amar bedrane
Amar bedrane
أهلاً بك في SmartDay AI. أنا مؤسس الموقع، وأهتم بتعلم الذكاء الاصطناعي وفهم تقنياته وتطبيقاته. أنشأت هذا الموقع لأشارك المعرفة التي أتعلمها بطريقة بسيطة وواضحة، وأساعد القارئ على فهم الذكاء الاصطناعي واستخدامه بشكل أفضل. أؤمن بأن فهم التقنية يبدأ من الأساسيات، لذلك أحرص على تقديم محتوى مفيد للمبتدئين مع التعمق في الأفكار المهمة دون تعقيد.
تعليقات