1. هوش مصنوعی به زبان خیلی ساده: یادگیری ماشین

پیش گفتار

قراره از تجربیاتم در زمینه هوش مصنوعی، به صورت خلاصه‌ و به زبان خیلی ساده بنویسم.

شما که این مقاله رو میخونید، اگر یک مهندس هوافضا در ناسا هستید یا در سوپر مارکت احمد آقا کار می کنید. یا اگر استاد تمام در دانشگاه MIT هستید و یا چون شرایط طوری بود که نتونستید دیپلمتون رو به اتمام برسونید، ولی علاقمندید راجع به هوش مصنوعی بدونید، لطفا طوری بخونید که قراره کلمه به کلمشو متوجه بشید. اگر غیر این بود، لطفا به من اطلاع بدید. (این متن تا ابد در حال ویرایش هست)

موضوعاتی که قراره مطرح کنم از قبل مشخص نیست. ولی به صورت کلی میشه گفت: ابتدا با تعاریف و اصطلاحات هوش مصنوعی و یادگیری ماشین شروع می کنیم. در ادامه وارد دنیای داغ شبکه عصبی و همچنین یادگیری عمیق خواهیم شد. خلاصه قراره بدونیم اپلیکیشن های هوشمند مثل تشخیص و شناسایی چهره چطوری کار می کنند. یا حتی از نحوه عمل‌کرد اپ هایی که تصویر چهره یک فرد جوان رو تبدیل به یک فرد سالخورده می کنه، که این روز ها اشک همه مون رو تو استوری ها در اینستاگرام در آورده، سر در بیاریم.

Generative Adversarial Network :D
Generative Adversarial Network :D

نکته‌: من ادعایی در زمینه هوش مصنوعی ندارم. و تنها یک دانشجوی ساده هوش مصنوعی هستم. حرفه‌ای ها منو ببخشن. (جمله آخر رو با لحن مداح ها بخونید که میگن: سادات منو ببخشن :D )


هوش مصنوعی

در تعریف هوش مصنوعی، به اولین جمله موجود در ویکی پدیا بسنده میکنم.

به هوشی که یک ماشین در شرایط مختلف از خود نشان می‌دهد، هوش مصنوعی گفته می‌شود.


یادگیری ماشین

موضوع اصلی که قراره راجع بش صحبت کنیم، یادگیری ماشین هست. که میشه گفت یکی از شاخه‌های کاربردی و شیرین در هوش مصنوعی محسوب میشه.

در تعریف یادگیری ماشین، باز از تعاریف رسمی در کتاب‌های مرجع اجتناب کرده و به زبان ساده:

یادگیری ماشین، شاخه ای از هوش مصنوعی هست که با استفاده از الگوریتم های آماری و داده‌ها به کامپیوتر قابلیت یادگیری میدیم. بدون اینکه به صورت مستقیم برنامه بنویسیم.

یک مساله

میخوایم وضعیت جوی رو پیشبینی کنیم. مساله اینه که آیا فردا بارون میباره یا نه. برای حل این مساله دو راه حل وجود داره.

  • برنامه نویسی مستقیم
  • هوش مصنوعی (یادگیری ماشین)


روش برنامه نویسی مستقیم

در این روش ممکنه لازم باشه، یک متخصص هواشناسی رو پیدا کنیم و ببندیمش به درخت و ازش بپرسیم علت بارش بارون رو میگی یا برم یک هفته دیگه بیام بپرسم ازت؟

ایشونم احتمالا میگه: «خوب چرا منو بستی به درخت؟ متمددانه می پرسیدی بهت می گفتم!»

در ادامه اضافه می کنند که «اگر روزی هوا ابری، دمای هوا خنک، رطوبت بالا و باد با شدت می وزید، به احتمال خیلی زیاد فرداش بارون میباره.»

بعد از اینکه آزادش کردیم میریم کدش رو به صورت زیر می نویسیم.

اگر متغیر Outlook برابر با Overcast و همچنین متغیر Temperature برابر با Cool و همچنین متغیر Humidity برابر با High و در نهایت اگر متغیر Wind برابر با Strong بود، لطفاً جمله زیر رو چاپ کن: Tomorrow is beautiful rainy day :)

برنامه پیشبینی وضعیت جوی به زبان پایتون
برنامه پیشبینی وضعیت جوی به زبان پایتون
زبان برنامه نویسی پایتون، یک زبان سطح بالا، به این معنی که به زبان آدمیزاد نزدیک می باشد، هست. که برای شروع برنامه نویسی، پیشنهاد میشه. :)

این برنامه همیشه درست کار میکنه ولی ما روز های زیادی رو دیدم که هوا ابری و دمای هوا خنک بود ولی بارون نبارید!

برای اینکه بتونیم وضعیت هوا رو پیشبینی کنیم به اطلاعات بیشتر و دقیق تری نیاز داریم. مثلاً لازمه که بدونیم سنسور دماسنج، دقیقاً به چه عددی اشاره می کنه. مقدار دقیق رطوبت، سرعت وزش باد و بسیاری از اطلاعات دیگه که من تخصصی توش ندارم، هم همینطور. شاید نوع ابر و یا جهت وزش باد هم مؤثر باشند.

اینجاست که استفاده از دستورات شرطی و برنامه نویسی به صورت مستقیم، به کاری طاقت فرسا و تقریباً نشدنی تبدیل میشه.


روش هوش مصنوعی (یادگیری ماشین)

در حل مساله مون با روش‌های یادگیری ماشین، ما نه تنها از بالا رفتن تعداد متغیر ها و ویژگی‌ها (دما، رطوبت، فشار، نوع ابر، سرعت و جهت وزش باد، روز و فصل سال و…) ناراحت نمیشیم، بلکه خوشحال هم میشیم. چراکه دیگه قرار نیست یک انسان با حافظه و سرعت پردازش محدود، درگیر جزئیات بشه. بلکه هوش مصنوعی قراره این کارو بکنه. :)
در تعریف یادگیری ماشین، عرض کردم ما به کامپیوتر قابلیت یادگیری میدیم. بدون اینکه به صورت مستقیم کد بنویسیم. درواقع ما مفهوم بارون رو با استفاده از روش‌ها و داده‌های بارش بارون به کامپیوتر می آموزیم.

الگوریتم های مختلفی در یادگیری ماشین وجود داره. تصویر زیر، به مراحل مشترک در بین همه ی روش‌های یادگیری ماشین اشاره می کنه.

Machine Learning Pipeline
Machine Learning Pipeline
  • مرحله آموزش

در حل مساله مون، طبق تصویر زیر ابتدا داده‌های وضعیت جوی روز ها و سالهای گذشته (که به اصطلاح بهش میگن داده‌های آموزشی) رو به الگوریتم یادگیری ماشین میدیم. الگوریتم یادگیری ماشین بعد از اینکه از داده‌ها، الگوهای بارش بارون رو یاد گرفت و آموزش دید، یک مدل پیشبینی کننده تحویلمون میده.

مرحله آموزش از داده های آموزشی (دیتاست)
مرحله آموزش از داده های آموزشی (دیتاست)
  • مرحله پیشبینی

حالا کافیه ویژگی های جوی امروز رو به مدل آموزش دیده مون بدیم. و در مرحله سوم از عکس زیر مدل بهمون میگه فردا چه خبره (اگر قرار بود بارون بباره (1) چاپ میکنه و اگر قرار نیست بارون بباره (0) )

مرحله پیشبینی
مرحله پیشبینی



درواقع علت اصلی اینکه کشور های پیشرفته دیگه بهتر از سازمان هواشناسی ایران وضعیت جوی ایران پیشبینی می‌کنند همان داده‌های آموزشی هست. به عنوان مثال ما داده‌های جوی پنجاه سال گذشته رو داریم. و کشور های پیشرفته دیگه داده‌های صد سال پیش رو دارند. و مدلهای یادگیری ماشین اون‌ها با داده های آموزشی بیشتری، آموزش دیده اند.

حالا الگوریتم های یادگیری ماشین چطوری داده‌ها رو یاد میگیرند در مقاله های آینده در موردش صحبت خواهیم کرد. :)

« قسمت بعد هوش مصنوعی به زبان خیلی ساده »


امیدوارم موضوعاتی که مطرح کردم براتون جالب بوده باشه. و بهم در اصلاح کاستی ها در نظرات کمک کنید.

آخرین ویرایش: 5 / 8 / 1398