هوش مصنوعی، یادگیری ماشین و یادگیری عمیق چه فرقی دارند؟
این چهار اصطلاح زیاد به جای هم به کار میروند، ولی هممعنی نیستند. رابطهشان مثل چند دایرهی تودرتوست: هر دایره زیرمجموعهی دایرهی بیرونی خودش است.
در ادامه از بیرونیترین دایره شروع میکنیم و به یادگیری عمیق میرسیم.
هوش مصنوعی: ساختن رفتار هوشمند، به هر روشی
Section titled “هوش مصنوعی: ساختن رفتار هوشمند، به هر روشی”ایدهی ساختن موجود هوشمند قدمت زیادی دارد، ولی هوش مصنوعی به معنای امروزی بعد از ساخته شدن کامپیوترها شکل گرفت. در سال ۱۹۵۰ آلن تورینگ پرسید آیا میشود کامپیوتر را طوری برنامهریزی کرد که هوشمندانه رفتار کند، و برای سنجیدنش آزمونی پیشنهاد داد که امروز به آزمون تورینگ معروف است: اگر با کسی چت کنید و نتوانید تشخیص دهید طرف مقابل انسان است یا برنامه، آن برنامه به سطح بالایی از هوشمندی رسیده است.
اسم «هوش مصنوعی» (Artificial Intelligence) را جان مککارتی، دانشمند علوم کامپیوتر و سازندهی زبان Lisp، گذاشت؛ در پیشنهادی که سال ۱۹۵۵ برای کارگاه معروف دارتموث (۱۹۵۶) نوشت. در این تعریف مهم نیست هوشمندی چطور ساخته شود. هر برنامهای که رفتاری هوشمندانه نشان دهد، هوش مصنوعی حساب میشود؛ حتی اگر همهی رفتارش را برنامهنویس دستی نوشته باشد:
- برنامهی دوز (tic-tac-toe) که برای هر وضعیت صفحه با چند
ifبهترین حرکت را انتخاب میکند؛ - جاروبرقی رباتیکی که با قانونهای از پیش نوشتهشده در خانه حرکت میکند؛
- Deep Blue، کامپیوتر شطرنجباز IBM که سال ۱۹۹۷ گری کاسپاروف، قهرمان جهان، را شکست داد. Deep Blue قانونهای شطرنج را میدانست و با سختافزاری بسیار قوی، چند حرکت جلوتر را بررسی میکرد و به هر وضعیت امتیاز میداد. یعنی کاملاً مبتنی بر قانون (rule-based) بود.
یادگیری ماشین: به جای قانون، داده بدهید
Section titled “یادگیری ماشین: به جای قانون، داده بدهید”یادگیری ماشین (Machine Learning) زیرشاخهای از هوش مصنوعی است با یک محدودیت مهم: قانونها را ما نمینویسیم؛ داده میدهیم و الگوریتم خودش رابطهی ورودی و خروجی را پیدا میکند.
مثال: تشخیص ایمیل اسپم. یک راه این است که با همکارانمان بنشینیم و قانون بنویسیم: «اگر کلمههایی مثل فرصت ویژه یا تخفیف استثنایی بود، اسپم است.» این کار هوش مصنوعی است، ولی یادگیری ماشین نیست. راه دیگر این است که هزار ایمیل اسپم و هزار ایمیل عادی جمع کنیم، برچسب هر کدام را بگوییم و به یک الگوریتم بدهیم تا خودش بفهمد چه ویژگیهایی با اسپم بودن ارتباط دارد. این یادگیری ماشین است.
آرتور ساموئل در سال ۱۹۵۹ این اصطلاح را رایج کرد و یادگیری ماشین را حوزهای توصیف کرد که به کامپیوتر توانایی یادگیری میدهد، بدون اینکه صراحتاً برنامهریزی شود.
چرا اصلاً به یادگیری ماشین نیاز داریم؟
Section titled “چرا اصلاً به یادگیری ماشین نیاز داریم؟”چون برای خیلی از مسئلهها نمیشود قانون نوشت. فرض کنید بخواهید برنامهای بنویسید که بگوید در یک عکس گربه هست یا نه. کامپیوتر عکس را فقط به شکل جدولی از عددها (پیکسلها) میبیند. چه شرطی برای «گربه بودن» بنویسید؟
- رنگ؟ گربهها رنگهای خیلی متفاوتی دارند و نور محیط هم رنگها را عوض میکند.
- شکل؟ گربه خودش را جمع میکند، کش میآید، از زاویههای مختلف دیده میشود.
- پنهان شدن: گاهی فقط نیمی از گربه پشت یک شیء دیده میشود، و ما باز هم میفهمیم گربه است.
- پسزمینهی شلوغ: گاهی حتی جدا کردن شیء از پسزمینه سخت است.
- تفاوت درون یک دسته: پراید و تسلا هر دو «ماشین» هستند ولی قیافهشان خیلی فرق دارد.
برای همین سراغ رویکرد دادهمحور میرویم: کلی تصویر با برچسب جمع میکنیم، الگوریتم از روی آنها یک مدل میسازد، و بعد از مدل میپرسیم برچسب یک تصویر جدید چیست (به این کار پیشبینی یا predict میگوییم). مدل وقتی خوب است که روی دادههایی که قبلاً ندیده هم درست جواب دهد؛ یعنی تعمیم (generalization) داشته باشد.
هر گروه، با یک نگاه
Section titled “هر گروه، با یک نگاه”وقتی یادگیری ماشین معرفی شد، آدمهایی از رشتههای مختلف با نگاه خودشان واردش شدند. آمارخوانها گفتند هر دسته از دادهها از یک توزیع آماری پیروی میکند؛ کافی است توزیع را پیدا کنیم. ریاضیدانها مسئله را بهینهسازی دیدند. کسانی که هندسهی محاسباتی کار میکردند گفتند دادهها نقطههایی در فضا هستند و باید خط یا صفحهای پیدا کرد که دستهها را از هم جدا کند. و گروهی از زیستشناسها و پزشکها گفتند: مغز پستانداران ما را هوشمند کرده؛ بیایید سازوکار آن را شبیهسازی کنیم.
شبکهی عصبی: الهام گرفته از مغز
Section titled “شبکهی عصبی: الهام گرفته از مغز”گروه آخر به شبکهی عصبی مصنوعی (Artificial Neural Network) رسیدند. مغز پستانداران از تعداد بسیار زیادی نورون ساخته شده که به هم وصلاند و سلسلهمراتب دارند. شبکهی عصبی مصنوعی از این ساختار الهام گرفته است، ولی شبیهسازی دقیق مغز نیست. خود پژوهشگران این حوزه میگویند این مدلها brain-inspired هستند، نه brain-plausible. در عمل شبکهی عصبی هم یک مدل ریاضی است که با بهینهسازی ریاضی آموزش میبیند؛ فقط ایدهی اولیهاش از مغز آمده.
یک نمونه از این سلسلهمراتب در بینایی است. ناحیهای در پشت مغز (V1) فقط لبهها و خطهای ساده را با زاویههای مختلف تشخیص میدهد. لایهی بعدی این خطها را ترکیب میکند و گوشه و تقاطع میسازد؛ لایههای بعدی شکلهای پیچیدهتر مثل چشم و بینی را، و در نهایت در ناحیههایی جلوتر، تشخیص میدهیم که این چهرهی یک آدم آشناست. این ایده که هر لایه روی خروجی لایهی قبل کار کند بعداً قلب یادگیری عمیق شد.
اولین نورون مصنوعی، یعنی پرسپترون، در دههی ۱۹۵۰ معرفی شد (فرانک روزنبلات، ۱۹۵۸). ولی یک نورون بهتنهایی کار زیادی نمیکند؛ کنار هم گذاشتن چند نورون و آموزش دادن آنها به صورت یک شبکهی چندلایه سالها طول کشید.
چرا شبکههای عصبی سالها کمعمق ماندند؟
Section titled “چرا شبکههای عصبی سالها کمعمق ماندند؟”شبکههای عصبی در دانشگاهها معروف شدند، ولی برتری چشمگیری بر روشهای کلاسیک یادگیری ماشین نداشتند. ویژگی جالبشان این بود که همهکاره بودند: با تغییرات کوچک در معماری، هم طبقهبندی میکردند، هم قیمت تخمین میزدند، هم رتبهبندی میکردند. ولی تعداد نورونهایشان کم بود و معمولاً بیشتر از دو سه لایه نداشتند. سه مانع جدی جلوی بزرگتر شدنشان را گرفته بود:
- مشکل ریاضی. با زیاد شدن لایهها، عددهایی که در آموزش در هم ضرب میشوند به صفر نزدیک میشدند و آموزش عملاً متوقف میشد. به این مشکل محو شدن گرادیان (vanishing gradient) میگویند و در درسهای بعدی دقیقتر میبینیمش.
- کمبود داده. هر چه مدل بزرگتر باشد، دادهی بیشتری برای آموزش لازم دارد؛ مثل بچهای که برای یادگرفتن به تجربهی زیاد نیاز دارد. آن زمان اینترنت فراگیر نبود و دادهی کافی وجود نداشت.
- ضعف سختافزار. آموزش شبکهی عصبی میلیونها عمل ریاضی میخواهد. پردازندههای آن زمان در هر لحظه فقط تعداد کمی کار موازی انجام میدادند.
هر سه مانع کمکم برداشته شد. صنعت بازیهای کامپیوتری کارت گرافیک (GPU) را به جایی رساند که دهها هزار عمل را همزمان انجام میداد، و پژوهشگران دیدند همین قدرت را میشود برای آموزش شبکهی عصبی به کار برد. اینترنت و شبکههای اجتماعی پر از تصویر و متن شدند. و ایدههای ریاضی تازه، مثل توابع فعالیت بهتر و روشهای بهتر برای مقداردهی اولیه، مشکل محو شدن گرادیان را تا حد زیادی حل کردند.
یادگیری عمیق: شبکهی عصبیای که عمیق شد
Section titled “یادگیری عمیق: شبکهی عصبیای که عمیق شد”با برداشته شدن این سه مانع، میشد به جای شبکههایی با دهها یا صدها نورون، شبکههایی با میلیونها و میلیاردها پارامتر ساخت. به این شبکهها شبکهی عصبی عمیق (Deep Neural Network) گفتند؛ «عمیق» یعنی مسیری که اطلاعات از ورودی تا خروجی طی میکند از لایههای زیادی میگذرد. بعدها این حوزه را یادگیری عمیق (Deep Learning) نامیدند؛ اسمی که توجه زیادی هم جلب کرد.
نقطهی عطف ماجرا سال ۲۰۱۲ بود. در مسابقهی تشخیص تصویر ImageNet، شبکهای عمیق که روی کارت گرافیک آموزش دیده بود با فاصلهی زیادی از همهی روشهای دیگر جلو افتاد. یادگیری عمیق از تصویر شروع شد و بعد به صوت، متن و دادههای دیگر رسید؛ همین دوره هم برای همین با دادهی تصویری شروع میکند.
فریمورکهای یادگیری عمیق
Section titled “فریمورکهای یادگیری عمیق”تقریباً هر شرکت بزرگی کتابخانهی یادگیری عمیق خودش را ساخته است. سه کتابخانهی محبوب امروز اینها هستند:
- PyTorch (متا): امروز در جامعهی پژوهشی محبوبترین است.
- TensorFlow و رابط سطح بالای آن Keras (گوگل): برای شروع سادهتر است و در صنعت هم زیاد استفاده میشود.
- JAX (گوگل): بیشتر در پژوهشهای خود گوگل استفاده میشود و نمونهکد عمومی کمتری دارد.
این دوره با Keras شروع میکند، چون مفهومها را سادهتر میشود با آن جلو برد. Keras از نسخهی ۳ میتواند روی هر سه کتابخانه (TensorFlow، PyTorch و JAX) اجرا شود. وقتی مفهومهای پایه مثل شبکهی عصبی، کانولوشن، تابع هزینه و پسانتشار خطا را یاد بگیرید، عوض کردن فریمورک کار بزرگی نیست.
- هوش مصنوعی هر روشی برای ساختن رفتار هوشمند است؛ حتی قانونهای دستنوشته.
- یادگیری ماشین هوش مصنوعیای است که از داده یاد میگیرد، نه از قانونهایی که ما مینویسیم.
- شبکهی عصبی یکی از روشهای یادگیری ماشین است که از ساختار مغز الهام گرفته.
- یادگیری عمیق همان شبکهی عصبی است که با رفع سه مانع (ریاضی، داده و سختافزار) توانست بزرگ و عمیق شود.
ادامه: انواع یادگیری ماشین
مقدمهای بر یادگیری عمیق، آموزش رایگان و فارسی یادگیری عمیق.