شبکههای عصبی موضوع داغ هوش مصنوعی این روزای دنیای تکنولوژیه.
کامپیوترها چندهستهای شدن. کارت گرافیک که زمانی ۱۶مگابایت از رم سیستم رو میگرفت برای پردازش تصویری که قراره توی مانیتور نشون بده (و ۱۶ملیون رنگ هم نداشت)، الآن خودش ۸گیگ رم داره. (یه نگاه به معماری کارتگرافیک بندازیم میبینیم که میتونه به عنوان یه مادربورد اعلام استقلال کنه) و یاد گرفتیم پردازشهای سنگین رو بندازیم گردنش.
لایبرریهای زیادی به وجود اومدن که توی ۱۰-۲۰ خط کد میتونیم یه هوش مصنوعی بسازیم (شبکههای عصبی تعلیم بدیم) بدون اینکه حتی دانش برنامهنویسی بالایی داشته باشیم. (شبکهی عصبی با پایتون بدون لایبرری در ۱۱خط کد)
سیستم کار شبکههای عصبی (اگه بخوام خیلی ساده توضیح بدم) به این صورته که:
- یه دیتاست (دیتا + لیبل) میسازیم.
- یه شبکهی عصبی تعریف میکنیم توی برناممون (مثلا) به این شکل که ۱۰۰۰تا نود لایهی اول، ۵۰۰ نود لایهی دوم، ۸۰۰ نود لایهی سوم، ۱۰نود لایهی چهارم.
- دیتاها رو یکی یکی وارد لایهی اول میکنیم (مثلا هر پیکسل از تصویر به یکی از نودهای لایهی اول داده میشه) و به برنامه میگیم این دیتا برابر با این لیبل است (لیبل رو به نود آخر میدیم)
- برنامهی ما خودش چندین بار وزن و ارزش هرکدوم از نودهای لایههای میانی رو کم و زیاد میکنه با توجه به مقادیری که توی لایهی اول گرفته، تا یه مسیر مطمئن از مقادیر لایهی اول تا لیبل لایهی آخر ساخته بشه. که این اساسا شامل یک عالمه if و else هست که کامپیوتر برای خودش میسازه.
- بعد از اینکه سیستم ما، همهی دیتاستها رو با همین روش مضحک تبدیل به یه سری رشتهی طولانی از if و else کرد، تستش میکنیم. مثلا هدف ما تشخیص این بود که عکسی که بهش میدیم، چه عددیه. یه سری تست انجام میدیم و اگه با اطمینان بیشتر از ۹۹درصد تشخیص داد، پس سیستم درست کار میکنه. وگرنه یه مقدار تغییر توی تعداد نودها میدیم و دوباره از اول همهچیز رو ران میکنیم تا یه شبکهی عصبی جدید بسازه.
- یه نفر پیدا میشه یه سری random-art (مثل تصاویر پایین) میده به نرمافزارمون و میبینیم چقدر سیستم اشتباه میکرده. (کامپیوتر فکر میکنه این عکسها، اسکن شدهی اعداد ۰ تا ۹ هستن)
هوش مصنوعی دنیای امروزی، در حقیقت مخلوطیه از «حماقت مصنوعی» و «تنبلی طبیعی». یه روش اشتباه برای هوشمند کردن کامپیوترها، که ابر بزرگی از توهم اطرافش رو گرفته و همه (چه برنامه نویسها و چه انسانهای معمولی) اونرو به عنوان پلی به زندگی بهتر میبینن. (بعضیها هم تحت تاثیر هالیوود، از تهاجم رباتها علیه انسان میترسن)
مقالهای که لینکش رو اینجا میذارم، مربوط (و نه محدود) به عکس بالاست. مربوط به روش فعلی ساخت هوش مصنوعیه. نتیجهی درست کردن یه چیزی که خودمون هم نمیدونیم دقیقا چیه و تست کردنش در مقابل دیتاهای محدود.
تصور کنید همین الآن neural network توی مکانهای امنیتی استفاده میشه، توی بیمارستانها کمک میکنه به تشخیص اینکه این بیمار به بخش مراقبتهای ویژه فرستاده بشه یا نه. توی دادگاهها کمک میکنه به تشخیص ارتکاب جرم.
یه زمانی (دههی ۷۰ و ۸۰ میلادی) ساخت هوش مصنوعی نیاز به هوش طبیعی (انسانی) بالایی داشت.
کدهایی مینوشتن که با توجه به شرایط، کدهای پیچیدهتر بنویسه. (macro های lisp)
ریاضیدانها دیتاهای ورودی رو آنالیز میکردن و پترنهای موجود رو شناسایی میکردن و ارگوریتم حل مساله مینوشتن.
یه زمانی هوش مصنوعی «خودآگاه» بود. سخت بود. کند بود. ولی مطمئن بود.
الآن هوش مصنوعی «ناخودآگاه» شده. نه تنها خودش نمیدونه چیکار میکنه، برنامه نویسش هم نمیدونه چیکار میکنه.
حرف من این نیست که «نمیدونیم ماشین تسلا چطوری تصمیم میگیره پس نمیشه بهش اعتماد کرد» چون من وقتی سوار تاکسی میشم هم نمیدونم راننده چرا فرمون رو پیچوند. از طرفی شاید اعتماد کردن به هوش مصنوعی، کار منطقیتری باشه. چون هوش مصنوعی هیچوقت درگیر این مساله نیست که «این فروشگاهه حراج گذاشته. شب دست زن و بچمو بگیرم بریم خرید» و تمام چیزی که بهش فکر میکنه خیابون و ماشینهای اطرافش هستن. پس احتمالا کمتر از یه انسان اشتباه کنه.
حرف من اینه که ما داریم هوش مصنوعی میسازیم که خودمون نمیدونیم چطور کار میکنه. حتی نمیتونیم دیباگش کنیم (تقریبا غیر ممکنه که یه شبکهی عصبی رو دیباگ کنیم. همونطور که تقریبا غیر ممکنه یه فایل باینری رو دیکامپایل کنیم به سورس کد) و این هوش مصنوعی رو فقط درمقابل دیتاهایی میسنجیم که محدود به ذهنیت خودمون هستن. مثلا اگه یه ماشین که به بدنهی خودش یه تصویر random art چسبونده نزدیک ماشینهای تسلا بشه، هوش مصنوعی ما، اون ماشین رو نادیده بگیره و شاخ به شاخ بشن. (کسی چه میدونه!؟)
از همهی اینها گذشته، مسائل دیگهای هم درگیر هستن. دیتاهایی که به شبکهی عصبی میدیم، تابعی از دیتاهاییه که اطراف خودمونه.
- اگه توی اون دادگاه، دیتاهایی که به هوش مصنوعی داده شده برای یادگیری ماشینی، ساختهی قاضیهایی باشن که فکر میکنن «بچه های پایین شهر خلاف هستن» پس هوش مصنوعی ما هم توی پردازش دیتای مجرمها، کد پستیهای جنوب تهران رو خیلی راحتتر میندازه زندان.
- اگه سیستم تشخیص چهرهی ما فقط روی صورت خوانندهها و بازیگرها تعلیم دیده باشه، نتیجش این میشه که (مثلا) کچلها رو تشخیص نمیده! یا یه نمونهی دیگه که زیاد ربطی به هوش مصنوعی نداره ولی ویدیویی دیدم که دستگاه «مایع دستشویی» توی سرویس بهداشتی عمومی، وقتی یک سیاهپوست دستش رو زیر دستگاه میگرفت، مایع دستشویی نمیریخت و وقتی یک دستمال کاغذی روی دستش میگذاشت، دستگاه سرویسدهی میکرد. مسلما سازندگان اون دستگاه همشون سفید پوست بودن و صدهزاربار دستگاه رو با دستهای خودشون تست کرده بودن. تصور کنید اون سیاهپوست بدبخت چه حالی پیدا میکنه.
- تصور کنید (همونطور که توی ویدیوی لینک بالا نشون داده شد) یک نفر گوشی موبایلشو نگهداره جلوی دوربین تشخیص چهره و ویدیویی پخش کنه که توی هر فریم، پیکسلهای رندوم نشون داده بشه.
به نظر من هوش مصنوعی، چیز بدی نیست. به شرطی که با روش «خودآگاه» ساخته بشه. هوش مصنوعی دنیای امروزی «ناخودآگاه» عمل میکنه و ما تاوانش رو میدیم.
برای مطالعهی بیشتر، این تاپیکیه که قبلا درمورد هوش مصنوعی زده شده بود و من هم با دانش کمتر از امروزم توش مطالبی نوشتم: