ممکن است بپرسید که تربیت یک کامپیوتر؟
اول باید با مفهوم یادگیری ماشینی آشنا باشید.
در یک نگاه بسیار ساده که در واقع تعریفی است که یکی از افراد بسیار مطرح این حوزه در تاریخ نوشتهشدن این نوشته که شما میخوانید(سال ۱۳۹۵) به نام Andrew Ng، یادگیری ماشینی علم آموختن کاری به یک کامپیوتر است بدون اینکه به طور مستقیم(explicit) آن را برای کامپیوتر برنامه ریزی کنیم. این تعریف در نگاه اول کمی گنگ است و البته یک مثال قطعا بسیار کارگشا است:
فرض کنید که من میخواهم به شما یاد بدهم که چایی درست کنید. دو روش برای این کار دارم.
روش اول این که تمام مراحل چای درست کردن را برای شما روی یک کاغذ مینویسم مثلا چیزی شبیه این:
۱- کتری را آب کن
۲-روی گاز بگذار و زیر آن را روشن کن و صبر کن تا آب به جوش آید
۳- قوری را از آب جوش پر کن
۴-حال کمی برگ چای در قوری بریز
۵- قوری را روی کتری بگذار
۶- ۵ دقیقه صبر کن تا دم بیاید
در این روش من تمام مراحل را برای شما یکی یکی توضیح دادم و شما آن مراحل را انجام میدهید و چایی درست میشود. این چیزی شبیه نوشتن برنامه برای کامپیوتر به صورت مستقیم(explicit) است.یعنی من تمام مراحل را توضیح میدهم و کلمه به کلمه و گام به گام و به ترتیب شما انجام میدهید. شاید به نظر برسد که این تنها روش یادگیری است. در کتاب های آشپزی هم همینطور بوده و همیشه دستورالعمل داشتهایم اما در واقع یک روش دیگر هست که جالب است که به نظر میرسد حتی ما انسانها به آن روش بهتر هم یاد خواهیم گرفت و آن این است:
روش دوم این است که من به شما میگویم که بیا پهلوی من بایست ببین من چکار میکنم.
من میروم کتری را آب میکنم. روی گاز میگذارم. زیرش را روشن میکنم. صبر میکنم آب جوش بیاید. قوری را با آب جوش نصفه پر میکنم و کمی برگ خشک چای در آن میریزم و سپس میگذارم دم بیاید.
شاید بگویید که این دو روش که هر دوتایشان راحت بود! در مورد مثال بالا شاید تفاوت آنها خیلی خوب مشخص نشد اما شما رانندگی را در نظر بگیرید. قوانین بسیار رانندگی را همه به خاطر داریم که در کتابها نوشته شده بود. اگر میخواستیم ثانیه به ثانیه فکر کنیم و آن ها را اجرا کنیم درست در نمیآمد. از طرفی هر شهر و هر ماشین و هر کشور لم رانندگی خاص خودش را دارد. از طرفی شرایطی در رانندگی به وجود می آید که راهحل آنها در کتاب نوشتهنشده و تنها به تجربه حاصل میشود. به هر حال ما با پشت ماشین نشستن راننده میشویم نه با خواندن دستور العملش. ما با شنا کردن شناگر میشویم. یادگرفتن آشپزی از فیلم آن بسیار سادهتر از یادگرفتن آن از دستور های کتاب های قطور و جلد سخت آشپزی است.
این همه روضه خواندم که بگویم تا تا مدتها برنامه هایی که برای کامپیوتر ها مینوشتند یک سری دستور العمل خاص بود اما حالا متوجه شده ایم که میتوان به کامپیوترها به روش دوم هم چیزهای را یاد داد.
برای مثال به آنها عکس های زیادی از گربهها نشان بدهیم. سپس عکس دلخواهی را به آن ها نشان بدهیم تا تشخیص بدهند عکس یک گربه است یا نه(در واقع ما دقیقا نگفته ایم که آن کامپیوتر چه خصوصیاتی را چک کند تا بفهمد که یک شی گربه هست یا نه او صرفا با مقایسه کردن آن عکس و عکس هایی که میداند گربه هستند دست به تصمیمگیری میزند).
این بخش اول بود و در بخشهای بعدی اگر خدا بخواهد برای شما بیشتر از یادگیری ماشینی خواهم گفت. هدف من در این بخش این بود که شما تفاوت انجام یک کار به روش خط به خط و به روش یادگیری به روش دیدن مثال را درک کرده باشید. این که من اگر بخواهم به یک ربات یاد بدهم که گل بکارد میتوان برایش خط به خط بنویسم که برود گلدان را بیاورد و خاک در آن بریزد و ...(روش خط به خط) یا اینکه جلویش ده تا گل بکارم و آن ربات با دیدن من و حرکات من یادبگیرد که چه کاری را باید انجام دهد(روش یادگیری به طور دیدن مثال).
البته من باید تصریح کنم که این همه یادگیری ماشینی نیست اما به هر حال فکر میکنم نقطه شروع خوبی است.
با من در بخشهای بعدی همراه باشید.
پی نوشت:
اندریو ان جی(Andrew Ng) اگر نگوییم که شناختهشدهترین محقق در زمینهی یادگیری ماشینی(machine learning) است، به جرات میتوانیم بگوییم یکی از شناختهشدهترین افراد در این زمینه است.در مورد او و کارهای او میتوانید در این وبسایت(که به زبان انگلیسی است) که متعلق به خود اوست، اطلاعات کافی را دریافت کنید. در نظر دارم که در مورد او در آینده بنویسم اما لااقل در همین مقدار که در استنفورد استاد علومکامپیوتر است و یکی از افراد اصلی پشت تحقیقات گوگل در زمینه هوشمصنوعی بوده است کافی است. میگویم بوده است چون که در تاریخ نوشتن این نوشته (۸ شهریور سال ۱۳۹۵) او در شرکت چینی baidu که در واقع بهترین شرکتی است که در چین موتور جستوجو ارایه میدهد کار میکند و البته در آنجا هم وظیفه هوشمندسازی خدمات این شرکت به عهده اوست.