لكن السؤال المهم هو: كيف نقيس مقدار الخطأ بين تنبؤ النموذج والقيمة الحقيقية، حتى نعرف هل تغييرw و b جعل النموذج أفضل أم أسوأ؟ فكلما قل هذا الخطأ، اقترب النموذج أكثر من التنبؤ الصحيح.
هذا المقياس يسمى دالة التكلفة (Cost Function)، وسأشرحها في هذا المقال خطوة خطوة، وأبيّن الهدف منها وكيف تفيدنا.
لماذا نحتاج مقياساً للخطأ؟
عرفنا في المقال السابق أن الوصول إلى القيم المناسبة للمعاملين w و b أمر مهم للحصول على تنبؤات دقيقة، لكن النموذج لا يعرف هذه القيم مسبقاً، لذلك يبدأ بقيم مبدئية، ثم يقيس مقدار خطئها ليعرف هل هي مناسبة أم لا.
الخطأ هو الفرق بين القيمة الحقيقية والقيمة المتنبأ بها. فالنموذج لا يكتفي بالتنبؤ الذي ينتجه ليحكم على مناسبة المعاملين، بل يقارنه بالقيمة الحقيقية ليحسب مقدار الخطأ.
معادلة دالة التكلفة (Cost Function Formula)
نبدأ بخطأ كل نقطة. نأخذ النقطة الأولى، فنحسب تنبؤ النموذج لها من قيمة x باستخدام معادلة التنبؤ:
F(x) = w * x + b
ثم نطرح منه القيمة الحقيقية y الخاصة بالنقطة نفسها، فنحصل على خطئها. ونكرر ذلك مع كل نقطة في البيانات.الخطوة التالية هي جمع جميع الأخطاء معاً. لكن الأخطاء قد تكون موجبة أو سالبة، فإذا جمعناها كما هي فستلغي بعضها بعضاً، وقد يقترب المجموع من الصفر حتى لو كان الخط لا يلائم البيانات، ونحن نريد مقدار الخطأ دون أن تؤثر إشارته.
لذلك نربّع كل خطأ على حدة قبل الجمع، أي نضربه في نفسه، فيصبح موجباً.
بعدها نجمع مربعات الأخطاء معاً لنحصل على قيمة واحدة تمثل أخطاء كل النقاط، ثم نقسم المجموع على ضعف عدد النقاط.
أما القسمة على عدد النقاط فهدفها ألا يزداد الرقم لمجرد كثرة البيانات.وأما العدد 2 فأُضيف لتسهيل الحسابات لاحقاً عندما نبحث عن أفضل قيم w وb، إذ يلغي العدد 2 الذي سيظهر عندها، ولا يؤثر في اختيار أفضل قيمتين لهما.
النتيجة النهائية رقم واحد يعبّر عن مقدار خطأ النموذج على كل البيانات.
يمكن تلخيص هذه الخطوات كلها في معادلة واحدة:
هذه المعادلة تسمى دالة التكلفة (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 (القيمة الحقيقية) |
|---|---|---|
| 1 | 1 | 8 |
| 2 | 2 | 2 |
| 3 | 3 | 5 |
نبدأ بالنموذج الأول: 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
- النقطة 1: 3- = 8 - 5
- النقطة 2: 3 = 2 - 5
- النقطة 3: 0 = 5 - 5
المجموع يساوي صفرًا، مع أن التنبؤ يبتعد عن القيمة الحقيقية في النقطتين الأولى والثانية.
نربّع الآن كل خطأ على حدة:
- النقطة 1: 9 = (−3)²
- النقطة 2: 9 = 3²
- النقطة 3: 0 = 0²
- نجمع المربعات: 18 = 0 + 9 + 9
نقسم المجموع على 2m و عدد النقاط m = 3 أي:
6 = 3*2 = 2m
3 = 18/6 = J
![]() |
| النموذج الأول (w = 0، b = 5): J = 3 — تنبؤات قريبة من القيم الحقيقية |
نحسب التنبؤ لكل نقطة:
- النقطة 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
2m = 3 × 2 = 6
J = 54 ÷ 6 = 9
![]() |
| النموذج الثاني (w = 3، b = −1): J = 9 — تنبؤات أبعد عن القيم الحقيقية |
من هذا المثال نستنتج أن:
- تغيّر قيمتي w وb يغيّر قيمة دالة التكلفة على البيانات نفسها: J = 3 مع النموذج الأول، وJ = 9 مع الثاني.
- النموذج الأول أفضل لأن قيمة دالة التكلفة له أقل، فالقيمتان w وb فيه أنسب لهذه البيانات.
- نستنتج كذلك أن مجموع الأخطاء بلا تربيع لا يعطي مقياسًا للخطأ، لأن الأخطاء الموجبة والسالبة قد تلغي بعضها..
كيف تبدو دالة التكلفة؟ (Convex Cost Function)
في المثال السابق جرّبنا نموذجين، وحصلنا على قيمتين مختلفتين لدالة التكلفة. لكن كيف نعرف أن هناك قيمة أفضل منهما؟
لنجيب عن ذلك نجرّب عدة قيم للمعامل w ونرى كيف تتغير J. تعتمد J على w وb معًا، فنثبّت b = 0 لتبسيط الرسم، ونغيّر w وحدها.
نحسب J على بياناتنا بالخطوات نفسها، تنبؤ ثم خطأ ثم تربيع ثم جمع ثم قسمة:
| w | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| J | 15.5 | 8.83 | 6.83 | 9.5 | 16.83 |
نلاحظ أن J تبدأ كبيرة، ثم تصغر، ثم تكبر من جديد. نرسم هذه القيم لنرى الشكل:
يشبه المنحنى الحرف U. أسفل نقطة فيه هي القاع، وهي أصغر قيمة لدالة التكلفة. كلما اقتربنا من القاع قلّ خطأ النموذج.
هذا الشكل خاص بـ b = 0. لو ثبّتنا b على قيمة أخرى لحصلنا على منحنى U آخر.
أسئلة أخرى
- لماذا نربّع بدل أن نأخذ القيمة المطلقة، مع أن كليهما يزيل الإشارة؟(Mean Squared Error_MSE)
في المثال الثاني السابق، حسبنا الأخطاء فكانت النتيجة [−6، 3، 3]. لو استعملنا القيمة المطلقة فالنتيجة ستكون [6، 3، 3]. تبقى الأعداد كما هي، ولدينا خطآن متشابهان وخطأ يساوي ضعفهما.
عند استخدام التربيع يحدث شيء آخر، فالأعداد لا تبقى كما هي، بل نضربها في نفسها. نتيجة هذه الأخطاء بعد التربيع ستكون [36، 9، 9]. نلاحظ أن الخطأ الأكبر أصبح أربعة أضعاف الخطأ الأصغر، لا ضعفين فقط كما كان بالقيمة المطلقة.
حين يرى النموذج خطأ كبيرًا بهذا الوزن، يركّز عليه ويحاول إصلاحه بأسرع ما يمكن. بهذا يتجنب النموذج ترك أخطاء كبيرة قائمة. هذا هو الهدف الثاني للتربيع، بعد إزالة أثر الإشارة السالبة.
2. هل دالة التكلفة دائمًا على شكل حرف U؟
ليس دائمًا، هذا الشكل يظهر حين نثبّت أحد المعاملين ونغيّر الآخر، فيكون الرسم ثنائي الأبعاد.
أما حين نغيّر كلا المعاملين معًا، فيصبح الرسم ثلاثي الأبعاد، على شكل وعاء. سنرى هذا الشكل في الدروس القادمة.
أما حين نغيّر كلا المعاملين معًا، فيصبح الرسم ثلاثي الأبعاد، على شكل وعاء. سنرى هذا الشكل في الدروس القادمة.
تعرّفنا في هذا المقال على دالة التكلفة، وكيف تساعدنا على قياس مقدار خطأ النموذج على البيانات كلها. رأينا أيضًا أن المعاملين w وb هما اللذان يتحكمان في قيمتها، فتغيّر أحدهما يغيّر دالة التكلفة.
لكن كيف نصل إلى أفضل قيمة لهذين المعاملين، أي التي تعطي أصغر قيمة ممكنة لدالة التكلفة على بياناتنا؟
هذا ما سنتعرف عليه في المقال القادم.





أكتب تعليق لتشجيعنا على العمل أكثر