وقتی ماشین خودران تسلا ماشین آتش‌نشانی را تشخیص نمی‌دهد

من اخیرا مطالعاتی در زمینه‌ آزمون انجام دادم که می‌خوام در مقالاتی این اطلاعات رو با شما هم به اشتراک بگذارم. عمده‌ی این مقالات در واقع برداشت من از مقالاتی بوده که در این حوزه (خصوصا [1]) خوندم. خوش‌حال می‌شم اگر بتونیم این بحث‌ها را در کامنت‌ها ادامه بدیم و در موردش صحبت کنیم.داستان آزمون الگوریتم‌ها و مدل‌های یادگیری ماشین تقریبا همزمان به مطرح شدن کاربردهای هوش مصنوعی خصوصا در جاهایی که با جان آدم‌ها سر و کار داره شروع میشه. بخش‌هایی از این دغدغه‌ها را کسانی دارن که ممکنه در مواجهه با تکنولوژی‌های جدید نگران بشن؛ اما از طرف دیگه سپردن جان انسان‌ها به چیزهایی که خودمون هم دقیقا نمی‌دونم چه شکلی کار می‌کنن (شبکه‌های عصبی) کار ترسناکی هست. این نگرانی‌ها با اولین حادثه‌های ناشی از ماشین‌های خودران بیشتر هم شد و به جامعه کشیده شد. در فوریه‌ی ۲۰۱۴ ماشین خودران گوگل اولین تصادف خودش را داشت اما در ادامه تصادف‌های دیگه‌ای هم از ماشین‌های خودران دیگه مثل تسلا گزارش شد.تصادف خودروی تسلا با ماشین آتش‌نشانی در حالت خودران در سال ۲۰۱۸خطرات مالی و خصوصا جانی ناشی از سو رفتار مدل‌های یادگیری ماشین باعث شد تا پژوهشگران متعددی در دنیا تلاش کنند تجربیات مربوط به آزمون نرم‌افزارهای دیگه (مثلا خلبان‌ خودکارها، ماهواره‌ها و ...) را اینجا هم به کار بگیرن و تلاش کنند مکانیزم‌های برای اطمینان پیدا کردن از صحت رفتار این الگوریتم‌ها و مدل‌ها و همین‌طور افزایش استحکام آن‌ها (Robustness) ارائه کنن.تلاش‌های اولیه از خطاهای مرسوم ماشین‌های خودران و الگوریتم‌های هوش مصنوعی الهام گرفتن که اتفاقا نتایج جذابی هم به دنبال داشتند. در این تلاش‌ها پژوهشگران تلاش می‌کنند اتفاقاتی که ممکنه باعث بشه هوش مصنوعی یک ماشین خودران اشتباه کنه را در نظر می‌گیرن و تلاش می‌کنن تصاویری را تولید کنند به ماشین‌های خودران را به اشتباه می‌اندازه. مثلا تغییر یک پیکسل در تصویر سمت چپ باعث میشه که ماشین خودران تابلو را کاملا برعکس و «مستقیم یا چپ برو» تشخیص بده. همین الگو را میشه باز تکرار کرد و تصاویر را به نحوی تغییر بدیم که شبیه عکس‌های بارانی، برفی، با لنز کثیف، در نور زیاد، در نور کم، چرخیده و ... بشن و همین الگوریتم‌های ما را به اشتباه بندازه.تغییر یک پیکسل که ماشین‌های خودران را به خطا می‌اندازه [2]این مشکلات فقط محدود به ماشین‌های خودران نیست و هوش‌ مصنوعی‌های مختلفی هستند که اونقدر‌ها هم که ما فکر می‌کنیم باهوش نیستند و خطاهایی دارن که ممکنه ما رو به خطر بندازه. مثلا تغییراتی در عکس X-Ray از قفسه‌ی سینه که با چشم انسان حتی قابل تشخیص هم نیست، ممکنه باعث بشه هوش مصنوعی دقیقا تشخیص برعکس داشته باشه.اشتباه در تشخیص توسط هوش مصنوعی با تغییراتی که حتی با چشم انسان قابل تشخیص نیست [3]. تصاویر بالا، تصاویر اصلی هستند و تصاویر پایین تغییر یافته‌اند.اما بررسی الگوریتم‌ها و مدل‌های هوش مصنوعی در همه‌ موارد به این سادگی نیست، در واقع، در شبکه‌های عصبی که در آن‌ها از در مورد تصاویر صحبت نمی‌کنیم، امکان تغییر داده‌های قبلی برای ساخت داده‌های آزمون جدیدی که نتیجه‌‌ی مورد انتظار را در مورد آن‌ها بدانیم لزوما وجود ندارد یا بسیار پیچیده و هزینه‌بر است. مثلا، برای تست کردن Google Translate به راحتی می‌توانیم انواع جملات به زبان اول را تولید کنیم اما بررسی کردن این که ترجمه‌ی گوگل درست است یا خیر، به سادگی ممکن نیست (مسئله‌ی اوراکل). اما استفاده از روابط متامورفیک می‌تواند به ما کمک کند؛ روابط متامورفیک در واقع به جای این که جواب دقیق خروجی مورد انتظار را بدهند، به ما کمک می‌کنند بتوانیم خروجی را با خروجی‌ دیگری از نرم‌افزار (مدل یادگیری) مقایسه کنیم. مثلا، صرف نظر از این که خروجی sin(x) چیست می‌دانیم یک نرم‌افزار نمی‌تواند خروجی آن را متفاوت از sin(π - x) بداند. در مورد سرویس ترجمه‌ی گوگل هم شرایط مشابهی داریم و این سرویس نمی‌تواند برای جملات انگلیسی که تنها برخی حروف آن کوچک یا بزرگ شده‌است، ترجمه‌های متفاوت ارائه کند.ترجمه‌ی متفاوت گوگل برای یک جمله [4]می‌توان مثال‌های عمیق‌تری هم (مشابه شکل زیر) برای تست سرویس ترجمه‌ی گوگل و بر اساس اصول متامورفیک زیر داشت:اگر گوگل موفق شده‌است در جمله‌ی دیگری یک کلمه را ترجمه کند، در جملات دیگر هم باید بتواند همان کلمه را ترجمه کند.نام‌های خاص با تغییر کردن نباید تغییری در ساختار جمله ایجاد کنند. مثلا، Emma و Victoria هر دو نام افراد هستند و جملات Emma likes Mini و Victoria likes Mini نباید به جز نام همان افراد در ترجمه تفاوت دیگری داشته باشند.ناموفق بودن گوگل در ترجمه‌ی کلمات یکسان در جایگاه یکسان در جملات با تفاوت کم [5]در این مقاله تلاش کردیم مروری داشتی باشیم بر بعضی از مهم‌ترین تلاش‌های صورت گرفته برای افزایش استحکام الگوریتم‌ها و مدل‌های هوش مصنوعی که به تدریج در حال نقش آفرینی در مهم‌ترین بخش‌های زندگی ما انسان‌ها هستند. شاید، یکی از پر تکرارترین مثال‌های این روزها Chat GPTست و خطاهایی که در برخی از پاسخ‌های آن وایرال شده و برای آن که اطلاعات حاصل از این هوش‌های مصنوعی با اطمینان بیشتری قابل استفاده باشند، نیاز است بتوانیم تا حدود بالایی از صحت کارکرد آن‌ها اطمینان حاصل کنیم. بنابراین، اگر علاقه‌مند به آزمون و صحت‌سنجی الگوریتم‌های یادگیری ماشین هستند شاید شروع از مقالات مطرح‌شده در این متن شروع خوبی باشد و اگر مهندس هوش‌مصنوعی هستید، به ابعاد صحت یا عدم صحت کارکرد مدل هوش مصنوعی خود کمی بیشتر فکر کنید.مراجع[1] Huang, X., Kroening, D., Ruan, W., Sharp, J., Sun, Y., Thamo, E., Wu, M., & Yi, X. (2020). A survey of safety and trustworthiness of deep neural networks: Verification, testing, adversarial attack and defence, and interpretability. Computer Science Review, 37, 100270. https://doi.org/10.1016/j.cosrev.2020.100270[2] Wu, M., Wicker, M., Ruan, W., Huang, X., & Kwiatkowska, M. (2020). A game-based approximate verification of deep neural networks with provable guarantees. Theoretical Computer Science, 807, 298-329.[3] Finlayson, S. G., Chung, H. W., Kohane, I. S., & Beam, A. L. (2018). Adversarial attacks against medical deep learning systems. arXiv preprint arXiv:1804.05296.[4] Lee, D. T., Zhou, Z. Q., & Tse, T. H. (2020, June). Metamorphic robustness testing of Google Translate. In Proceedings of the IEEE/ACM 42nd International Conference on Software Engineering Workshops (pp. 388-395).[5] Sun, L., & Zhou, Z. Q. (2018, November). Metamorphic testing for machine translations: MT4MT. In 2018 25th Australasian Software Engineering Conference (ASWEC) (pp. 96-100). IEEE.