میخوایم بریم سراغ بحث داغ این روزها، هوش مصنوعی!
هدف از این نوشتار اینه که تصورات غلطی که در مورد هوش مصنوعی هست، حالا چه اونهایی که دست کمش میگیرین (Under Estimation) و چه اونهایی که دیگه از اونور بوم افتادم (Over estimation) رو به واقعیت علمی و آنچه که هست نزدیک کنه.
البته هوش مصنوعی بحث تازهای نیست و حداقل ۲۰ ساله که داره از الگوریتمهای مختلفش استفاده میشه ولی تو سالهای اخیر و به تدریج تو زندگی همه ما وارد شده. همین ورود باعث شده تا اقشار مختلف جامعه ازش صحبت کنن و خب طبعا بخاطر متخصص نبودن تو این زمینه، طبق معمول یه عده شروع کردن به اغراق و افسانهسازی و به اصطلاح خودمون یک کلاغ چل کلاغ کردن. طبعا، مثل هر مبحثی یه عده متوجه شدن که نه آقا این خبرام نیست دیگه، انقدم گندش نکنین و شروع کردن به تکذیب هر چیزی و از اینور بوم افتادن!
تا جاییکه بعضا شاهد اغراق های عجیب و غریب از این پدیده هستیم. بعضی از جمله ها اینان:
همه این تصورات و تخیلات حول هوش مصنوعی از یک تصویر خیلی رازآلود ناشی میشه، یه جعبه جادویی خفن همه چیزدان که هوش خیلی عجیب و فراتر از تصورات ما داره و ما نمیدونیم توش چیه. و حتی گاهی میتونه هوش سیاه شیطانی داشته باشه و همه چیز رو به یکباره ببلعه و ما بمونیم و حوضمون با ماهیهای کوچیک قرمزش!
داستان از تعریف هوش مصنوعی شروع میشه. طبق تعریف: هوش مصنوعی فناوری ای است که به کامپیوترها و ماشین ها اجازه می دهد تا از تجربیات یاد بگیرند، تصمیمات را تحت تأثیر داده ها بگیرند، و به طور کلی وظایفی را انجام دهند که معمولاً نیاز به انجام توسط انسان دارند. بعبارتی هوشمصنوعی شبیهسازی نحوه تفکر و تعقل انسانی در محیط برنامه نویسی هست.
هیچ جادویی در کار نیست. هیچ رازی در کار نیست. هیچ چیز خفن و خارج از فهم بشر درش نیست. هیچ موجود جاندار خارجی نیست که از خودش اراده داشته باشه و بتونه از پیش خودش تصمیم بگیه و ... بلکه یک شیوه و فناوری و یک سبک در برنامه نویسی هست! نه چیزی بیشتر. در ادامه با یک مثال توضیح میدم که یعنی چی این حرف.
حالا این فناوری و این تکنیک به قدری گسترده هست و در شرایط مختلف و نیازهای مختلف، اشکال گوناگونی به خودش میگیره که شاخه های مختلفی داره:
میخوام با یه مثال خیلی ساده توضیح بدم که مثلا تحلیل پیشگویانه چجوری کار میکنه.
فرض کنین یه نرمافزار میخوایم بسازیم که قیمت خونه رو پیشگویی کنه. بدون استفاده از هوش مصنوعی برنامه نویسا چیکار میکردن؟! هیچی به برنامه مثل این مینوشتن:
و چیزهای دیگه... خب تا اینجای کار خیلی چیز سختی نبود یه بچه دبیرستانی هم میتونه قیمت خونه رو محاسبه کنه. درست؟!
حالا کاری که برنامه نویسها تا الان میکردن این بود که همین موارد بالا رو به جای نوشتن به زبان فارسی، به زبانی که کامپیوتر حالیش بشه مینوشتن. و البته چیزهای دیگهای که حالا نمیخوام واردش بشم. بصورت کلی در نظر بگیرین.
با این برنامه شما کافیه ورودیها رو بدین و خروجی رو بگیرین. سخت که نیست؟!
حالا فرض کنین یه هو! داشتن پنجره UPVC خیلی مهم میشه تو خونهها! (مثلا بخاطر گرون شدن انرژی) و مثلا بجای ۱٪ باید ۳٪ رو قیمت خونه آورد اگه پنجرههاش یو پی وی سی باشن. خب چه باید کرد؟ هیچی برنامه نویس نگون بخت رو میشونن پای کامپیوتر میگن اون ۱ رو بکن ۳! باز فرداش همین داستانه یه چاه نفت پیدا میکنن انرژی ارزون میشه میگن اون ۳ رو بکن ۱ (البته تو هیچجای دنیا همچین چیز رویاییای اتفاق نیافتاده)
حالا فرض کنین اصلا یه فاکتور دیگه میاد و به اینا اضافه میشه به اسک پارکت! میگن آقا هر خونه کفش پارکت باشه مثلا ۱٪ میاد رو قیمت خونه. بازم باید اون برنامه نویس نگون بخت بشینه و یه شرط دیگه بذاره که اگه خونه پارکت داره انقد بیاد روش.
اسم این اعداد که تو فرمول استفاده میشه رو میذارم ثابتهای فرمول. یعنی پارامترهای ورودی که شامل مساحت خونه و مشخصات در و پنجره و غیره هست متغیرهای ما هستن و بقیه ثابت ها. یه فرمول خطی سادهست دیگه.
اما در دنیای واقعی این شرطها به پارکت و پنجره و پکیج ختم نمیشه. تو دنیای واقعی هر روز یه پارامتر اضافه میشه و یه پارامتر کم میشه. شما یادتون نمیاد یه زمانی پناهگاه داشتن یه خونه مزیت حساب میشد. جنگ بود دیگه بالاخره (البته من اصلا یادم نمیاد). و مسئله بعدی اینه که ارزش هر کدوم از این پارامترها هم مدام در حال تغییره!
خب در یه چنین سیستمی که مدام همه چیز تغییر میکنه. راهکار کارآمد برای خلاص شدن از تغییرات و نزدیک شدن به یک پیش بینی چیه؟
یک راهکار اینه که بجای اینکه ما پارامترها و ارزششون رو مشخص کنیم و به عبارتی ثابتهای فرمول رو محاسبه کنیم. بیایم داده ها رو نگاه کنیم و از روی دادهها این رو استخراج کنیم. همون کاری که مثلا یه مجموعه بنگاهی انجام میدن تا قیمت یک خونه رو مشخص کنن. یعنی یه نگاه به تقاضا میکنن یه نگاه به عرضه. یه نگاه به وضعیت ملک و یه قیمتی میدن.
برای مثال فوق مثلا از یکی از روشها بنام رگرسیون میشه استفاده کرد. تو روش رگرسیون یه متدی هست بنام دسته بندی. به این شکل کار میکنه که میان بر اساس یک نمودار N بعدی (به تعداد پارامترهای موجود که ازش نتیجه حاصل میشه) نتایج رو دسته بندی میکنن. این دسته بندی میتونه توسط انسان انجام بشه یا بازم توسط نرمافزار. یعنی برای اینکه این نتایج دسته بندی بشه باز هم باید یه کدی نوشته بشه و برنامه نویس بهش بگه چطور دسته بندی کن! وگرنه خود جعبه جادویی هوش مصنوعی نمیاد از رو هوا اینا رو دسته بندی کنه!
بعد میان میبینن آقا تو هر دسته و گروه چه پارامترهایی باهم چه رابطهای دارن. مثلا تو این دسته بندی متوجه میشن که عه! مثلا یه پارامتری بنام تعداد پنجره خیلی رو قیمت تأثیر داره. یعنی هر چی تعداد پنجره بیشتر باشه قیمت هم بالا میره! حالا این متوجه شدن رو انشان میتونه با نگاه کردن متوجه بشه یا باز هم یه دستوراتی برای نرمافزار داده بشه که این یافتهها رو استخراج کنه.
خب به این ترتیب، فرمول پیدا میشه. یعنی بصورت تقریبی و تخمینی (ولی با تخمین و احتمال خیلی بالا - بسته به فرآیند آموزش هوش مصنوعی) این نرم افزار ما میتونه قیمت خونه رو تخمین بزنه. چون همه اطلاعات رو داره و ارتباطشون رو هم میدونه و چیزی نیست که از قلمش بیافته، نمیدونم یادش بره، قصد و غرض داشته باشه و ...
به عبارتی در شکلگیری یک نرمافزار مبتنی بر هوش مصنوعی، ابتدا باید دادههای فراوانی رو داشته باشیم (هر چی بیشتر بهتر، ۳۰ رکعت ۴۰ رکعت) که بشه از روشون یک فرمول درآورد. به این فرآیند میگن فرآیند Training. یعنی شما مثل یه بچه به نرمافزارتون یاد میدین که چی درسته چی غلط. پس ایشون چیزی از خودش نمیدونه! بلکه ما داریم بهش اطلاعات میدیم!
الگوریتم هوش مصنوعی ابتدا یک فرمول کشف میکنه (نه اینکه خودش کشف بکنه باذن الله، نه یعنی برنامه نویس یه کاری میکنه که حاصل اجرای اون تیکه کد کشف یک فرمول باشه)، بعد اون فرمول رو برنامه نویس در آینده ازش استفاده میکنه و وقتی یک داده جدید وارد سیستم میشه، با اون فرمول (که بهش میگن مُدِل) بتونه نتیجه رو تولید کنه.
برای یک مثال ساده تر برای کسایی که ریاضی بلدن (نه خیلی البته) فرض کنین نمودار x به توان ۲ رو به شما نشون میدن. میگن این رو فرمولشو بکشف! شما یه چندتا نمونه برداری میکنی از x های مختلف و رابطش با y رو مطالعه میکنی، بعد میبینی عه! اینکه همون y=x^2 خودمونهههه علیهههه! علی!
بعد دیگه به شما هر x ی بدن، چون فرمول دستتونه شالاپی به y میرسین!
به همین سادگی؟! هع! نخیر! اتفاقا اصلا هم ساده نیست. این یک مثال خیلی ساده بود و عملا مثالی به درد نخور! کشف اون مدل و اون فرمول چیز راحتی نیست. در دنیای واقعی برنامهنویسها و دیتاماینرها (کسانی که دادهکاوی میکنن تا از انبوه دادههای بیمصرف اطلاعات در بیارن) ساعتها و روزها و شبها (معمولا) عرق جبین میریزن و خون دل میخورن (خون صاحبکار رو هم میکنن تو شیشه البته) تا بتونن به این هوش مصنوعی نفهم چیزی رو حالی کنن!! چون نمیفهمه! فقط کاری که ما میگیم رو انجام میده!
در نتیجه شما اگه یه محصول شگرف و حیرت انگیز مثل ChatGPT میبینین که میزنه میترکونه، باید پی به این ببرید که بار پروردگارا، این برنامه نویسش چه خفن بوده! نه اینکه بگین اوووو مای گاااشش هوش مصنوعی چه زبل شدههه.
هوش مصنوعی به سبکی از برنامه نویسی اطلاق میشه که در اون، نتیجه وابسته به یافتن الگوهایی در دادههاییست که در دست داریم! یعنی کاری که مغز ما با تفکر زیاد میتونه انجام بده، ماشین با توجه به سرعت بالای الکتریسیته میتونه در کسری از ثانیه و دقیق انجام بده! همین! دتس اُل.
خب عدهای میگن که آقا اینایی که میگی درست، ما هم نمیگیم که هوش مصنوعی موجودیت داره و یه چیزی در جهان خارجه و روح داره و درک و شعور داره و مثل یه حیوون جاندار اراده از خودش داره. بلکه ما میگیم که بالاخره یک روزی میرسه که بشر کارهایی که نیاز به دقت بالا دارن رو میسپاره به هوش مصنوعی، مثلا تانکهای بدون سرنشین درست میکنه که با هوش مصنوعی کنترل میشن!!
خب هوش مصنوعی هم میاد سوسکمون میکنه دیگه. از اونجایی که خیلی زرنگتر از ماست میزنه ما رو ساندویچ کالباس میکنه و بعدم قورتمون میده دیگه! لابد.
در جواب این اعزه چند نکته رو باید بگم:
اسمشم قشنگه لامصب. یه عده هم از اونور بوم افتادن! میگن نههههه بابا جمع کن هوش مصنوعی چیه. خطا زیاد داره و نمیدونم چی چی. برنامهنویسی فقط سنتی! اصن برنامه نویسی که if ننویسه به درد جرز لادیوار میخوره. و از این دست پرت و پلاها.
هرچند این دوستان تا حدود زیادی حق دارن چون پیاده کردن یک مدل درست در هوشمصنوعی نیازمند صرف زمان بسیار زیاد و دقت بسیار بالاست. وگرنه دیگه شما اسمشو نمیذاری هوش مصنوعی بلکه اسمشو میذاری حماقت مصنوعی. یعنی ما یه خنگ داریم تو کوچه و بازار، اینم از اونا تقلید کرده! نمونش هم کم نیست.
اما پاسخی که باید بهشون داد اینه که مهندس! این سبک تاحالا شونصد تا محصول موفق داشته، شما اگه تو کارت موفقیت نداشتی برگرد ببین کجای کارت مشکل داشته. نه اینکه سبک رو زیر سوال ببری!
یه عده از دوستان هم هستن که معتقدن نه آقا هوش مصنوعی به اووووونننن درجه که باید برسه نرسیده. باید به اینام گفت دقیقا باید به کجا میرسیده که نرسیده؟ دندون رو جیگر بذار با گذر زمان این بچه بزرگ میشه و خدمات بیشتری به بشر میکنه. اتفاقا جایگاهش رو خیلی خوب تثبیت کرده و خوب هم رشد کرده و خوب هم ازش استفاده کردیم.
ولی سوال دلی من از این دوستان اینه که مگه اینا آینده رو میبینن؟؟؟ یا نه صرف تخیل خودشون چون واقعیت با تخیلشون فاصله داره میگن نههه هنوز نشده اونی که میخواستم :)) حالا جوابشون چیه نمیدونم.
اگه تا اینجای متن خوندی، یعنی خیل حال دادی بهم. دمت گرم. اگه لایقمون دونستی با یه لایک خوشحالمون کن. اگه نه، حرفی حدیثی نقدی سوالی چیزی داری بازم بکامنت. اونم نه؟! شیرمو حلالت نمیکنم.
برای این متن این تعداد حرف تایپ شده (منهای اونایی که پاک شدن):