“أنت زي الكمبيوتر” قد تطلقها على شخص يسهل توقع تصرفاته. و قد تطلق لفظ “البرمجة” لتصف تحكمك بشكل كامل على شخص أو أداة. هذا بسبب انطباعنا أن الحواسيب تتفاعل مع العالم بناء على برمجة مسبقة يمكن من خلالها توقع تصرفاتها بدقة. و إن كان هذا يحمل جزءا من الحقيقة، فإن الحواسيب لا يمكن توقع تصرفاتها في حالات عديدة. في بقية التدوينة أستعرض بعض الأمثلة لحواسيب (أو برمجيات) تسببت بحوادث تصل في بعض الأحيان إلى تعريض حياة إنسان إلى الخطر.
المثال الأول: برمجيات أنظمة معقدة (حادثة طائرة بوينق 737)
الكثير من الأنظمة الإلكترونية و البرمجية معقدة و تتطلب تفاعل عناصر مختلفة قد تكون خارجة عن سيطرة المبرمج. برمجيات الطائرات مثال على ذلك, و التي تتطلب التفاعل مع متغيرات كثيرة و بشكل سريع. و مما يزيد التعقيد أن صناعة الطائرات هي صناعة تنافسية قد تؤدي إلى المضي في أنظمة و تصاميم بدون النظر إلى جميع التداعيات و المشاكل التي قد تسببها. هذه العوامل هي ما أدت إلى الحوادث المحزنة في تحطم طائرات بوينق 737 مؤخرا.
طائرة بوينق تم تصميمها بحيث تكون قريبة من الأرض مما يجعل استخدامها ممكنا في المطارات الصغيرة. هذا على الرغم من أن محركها كبير الحجم بالنسبة لهذا التصميم. القرب من الأرض و حجم المحرك جعلا المحرك يكون قريبا جدا من الأرض, الأمر الذي يجب تجنبه لأن المحرك القريب من الأرض بإمكانه سحب الحطام الملقى على الأرض. الحل كان رفع المحرك للأعلى ليكون أقرب للجناح و بالتالي بعيدا عن الأرض.
هذا التصميم (رفع المحرك قرب الجناح) أدى لمشكلة؛ خلال تحليق الطائرة, قد يرتفع رأس الطائرة إلى أعلى. لعلاج المشكلة, تمت إضافة برمجية لبوينق بحيث تقوم بقراءة إحداثيات موضع رأس الطائرة مقارنة بباقي الطائرة, و في حال كان الرأس أعلى من مستوى معين, تقوم البرمجية بخفض رأس الطائرة تلقائيا. الحل — على الورق — جيد و يحل المشكلة. الذي لم يحسب حسابه هو إن كانت قراءة الإحداثيات غير صحيحة. للأسف أن هذا ما حدث. أجهزة الإستشعار قامت بإرسال بيانات خاطئة أدت إلى أن البرمجية تقوم بخفض مستوى رأس الطائرة حتى و إن كانت بمستوى طبيعي. النتيجة هي ما تصفه الصورة بالأعلى؛ تذبذب الطائرة بين مستوى عال و منخفض لرأس الطائرة بشكل سريع (في خلال دقائق). هذا التذبذب السريع — والذي سببته برمجية لم تحسب حساب القراءات خاطئة — هو ما أدى في نهاية المطاف إلى النهاية المأساوية و تحطم الطائرة.
المثال الثاني: دمج برمجيات قديمة و جديدة (آلة علاج الأشعة ثيراك-25)
الاحتياطات المتخذة عندما تقوم بأخذ صور بالأشعة السينية كافية لتعطيك انطباعا بخطورة هذه الأشعة و بأن المجتمع الطبي يأخذ بجدية موضوع تعريض المرضى لأشعة غير ضرورية. إلى أن هناك ماض سيء لتعريض المرضى لأشعى قاتلة و المتسبب هي، للأسف، البرمجيات.
جهاز ثيراك هو أحد الأجهزة التي تم تطويرها في أوائل السبعينات لعلاج بعض الحالات المرضية عن طريق تعريض المريض لكمية مقننة من الأشعاعات. في البدء، جهاز ثيراك كان يعمل بالشكل المتوقع في العديد من المستشفيات. نظرا لنجاحه، قامت الشركة المصنعة بتطوير الجهاز لنسخ جديدة لتسهيل استخدامه و جعله أصغر حجما. كان هذا التطوير يسير بشكل جيد، إلى أن جاء ثيراك-٢٥.
التطوير ثيراك-٢٥ قام باستبدال أجزاء كبيرة من البرمجيات و دمجها مع برمجيات و مكونات من النسخ السابقة. أحد التغييرات هو استبدال خواص الكشف عن زيادة الإشعاعات من مكونات الجهاز لتصبح جزء من مهام البرمجيات الجديدة. لسوء تقدير المصنعين، هذه الخاصية (الكشف عن زيادة الإشعاعات) لم تعمل بالشكل المطلوب بسبب أخطاء برمجية. النتيجة هي العديد من حالات التعرض لمستويات عالية من الأشعة (وصلت إلى أكثر من ١٠٠ ضعف المستوى المقبول) أدت إلى وفاة بعض المرضى و التسمم الإشعاعي لآخرين.
المثال الثالث: البرامج المبنية على تعلم الآلة (التعرف على الصور و الروبوتات العنصرية)
مجال تعلم الآلة (و ما حولها كالذكاء الصناعي و علم البيانات) يعتمد على بناء نماذج رياضية و برمجية بناء على بيانات تصف المشكلة. على سبيل المثال، لبناء نموذج برمجي يتعرف إن كانت صورة ما هي لقطة أو لا، يتعين عليك تدريب النموذج البرمجي عن طريق توفير صور كثيرة لقطط (ما تريد التعرف عليه) و صور أخرى. الخوارزمية لبناء النموذج البرمجي تقوم بتحليل هذه الصور إلى أن تبني نموذجا برمجيا يمكنك من التعرف على الصورة إن كانت لقطة أو لشيء آخر. أحد النماذج التي تلقى اهتماما كثيرا في الوقت الحالي هي الشبكات العصبونية (neural networks).
الكثير من النماذج البرمجية لتعلم الآلة (و من ضمنها نماذج الشبكات العصبونية) لا يمكن بشكل كامل فهم و دراسة طريقة عملها و إعطائها للنتائج كما تفهم و تدرس الخوارزميات و البرمجيات التقليدية. ذلك يصعب معرفة و توقع تصرف نموذج تعلم الآلة بعيدا عن البيانات التي استخدمت في تدريبه (و يعد هذا أحد المشاكل البحثية الحالية التي تتم دراستها في هذا المجال). على سبيل المثال، إن كانت جميع البيانات المستخدمة في التدريب هي لقطط و كلاب، من الصعب معرفة تعامل النموذج البرمجي مع صورة لفأر.
هذه الفجوة في فهم نماذج تعلم الآلة تؤدي إلى إمكانية حدوث نتائج غير متوقعة سواء بغير قصد أو بسبب طرف خبيث. مثال لاقى انتشارا مؤخرا هو امكانية خداع نماذج تحديد الصور. كما توضح الصورة السابقة، حمل صورة معينة و اظهارها يجعل النموذج البرمجي غير قادرعلى تحديد الشخص الذي يحملها. مثال آخر حدث قريبا هو عندما أطلقت مايكروسوفت روبوت محادثة في تويتر ليتعلم المحادثة من محادثات المغردين في تويتر. قام الكثير من المغردين بالتلاعب بالأقوال المدخلة و اغراقه بأقوال سيئة و عنصرية مما أدى إلى أن النموذج البرمجي أصبح يحاكيهم في أقوالهم و عنصريتهم.
خلاصة
بعكس ما يظن الكثير، البرمجيات قد لا تتصرف كما نريد. استعرضنا بعض الأمثلة لهذه الحالات لكنها ليست الوحيدة. هناك أيضا إمكانية اختراق البرمجيات مما يجعلها تحت تصرف جهة خبيثة و هناك دوما احتمالية أسباب جديدة لا نعلم عنها الآن قد تؤدي إلى برمجيات كاذبة. ذلك يطرح سؤالا مهما: كيف يمكننا كمبرمجين و مختصين تجاوز هذه الحوادث بطرق شاملة للأسباب الحالية و المستقبلية. الإجابة على هذا السؤال في الأجزاء القادمة.
مصادر و للاستزادة
1. “Boeing says faulty sensor contributed to 737 Max crashes”
2. Leveson, Nancy G., and Clark S. Turner. “An investigation of the Therac-25 accidents.” Computer 26.7 (1993): 18-41.
3. “Academics hide humans from surveillance cameras with 2D prints”
4. “Microsoft unveils a new (and hopefully not racist) chat bot”