بیگ دیتا؟ یادگیری ماشین؟ هوش مصنوعی؟

برای شروع به نظرم خوبه مفاهیم رو از هم تفکیک کنیم و اصلا بفهمیم این تکنولوژی ها دقیقا چی هستن.

از بیگ دیتا شروع کنیم. به شکل واضحی بیگ دیتا به حجم زیادی از اطلاعات مشخص گفته میشه که میتونه از منابع مختلفی دریافت شده باشه و بیشتر کاربردش اینه که از حجم خیلی زیادی اطلاعات به ظاهر بی ارزش، نتایج ارزشمندی استخراج کنیم (مثل استخراج طلا از معدن خاکی). مثلا از اطلاعات رفتار هزاران مشتری یک سایت فروش آنلاین استفاده کنیم تا بفهمیم به کدوم مشتری چه محصولی رو پیشنهاد بدیم یا بتونیم پیشبینی کنیم در ماه آینده کدوم محصولات بیشتر متقاضی دارن. رابطه بین بیگ دیتا، یادگیری ماشین (Machine Learning یا ML) و هوش مصنوعی (Artificial Intelligence یا AI) چیه؟ یه جورایی بیگ دیتا حکم سوخت رو داره برای اکثر مسائل AI و ML، این الگوریتم ها با دریافت حجم زیاد دیتا آموزش داده میشن (درموردش جلوتر بیشتر توضیح میدم). هرچی هم حجم اطلاعات بیشتر باشه، نتایج بهتر و دقیقتری میگیریم (البته بعضی از الگوریتم های ML مثل یادگیری تقویتی (Reinforcement Learning یا RL) به صورت مستقیم از دیتا استفاده نمیکنن و تقریبا از این قاعده مستثنی هستن).

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

مسائل ML به صورت کلاسیک به سه بخش تقسیم میشن (البته واقعا میشه دسته بندی های بیشتری رو در کاربرد های نوین تعریف کرد):

  • یادگیری با نظارت یا supervised: مسائلی که هر ورودی یا دیتای آموزش یک label هم داشته باشه. مثلا تعداد زیادی عکس گربه داشته باشید با label گربه و تعداد دیگری عکس سگ با همین label و ... . حالا توقع ما اینه که سیستم ML بتونه با دیدن عکس جدید بتونه labelشو به درستی حدس بزنه که این گربه اس یا سگ و این کار رو با دریافت اطلاعات و label مربوطه انجام میده.
  • یادگیری بدون نظارت یا unsupervised: برعکس حالت قبل اینجا برای اطلاعات label در دسترس نیست. مثلا تعداد خیلی زیادی عکس سگ و گربه داریم و این ها با هم قاطی شدن و چون تعدادشون زیاده نمیشه تک تک از هم جداشون کرد و label گذاشت. در این مسائل الگوریتم ML با گرفتن خود اطلاعات، برحسب شباهت و الگو های داخل اطلاعات اون ها رو جدا میکنن. البته این مبحث خیلی گسترده تر از این مثال هست و در آینده بیشتر درموردش توضیح میدم.
  • یادگیری تقویتی یا RL: تو این مسائل، الگوریتم یادگیری ماشین با انجام عمل در محیط تعریف شده و آزمایش و خطا، یاد میگیره چجوری در محیط عمل کنه تا بیشترین امتیاز رو در بلندمدت کسب کنه. مثلا یک سیستم ML میتونه با خودش شروع کنه به شطرنج بازی کردن و استراتژی های مختلف رو کشف کنه یا یادگیره به صورت ایمن رانندگی کنه و ... . خود این الگوریتم ها دو دسته اصلی value iteration و policy iteration تقسیم میشن که در آینده بیشتر درموردشون صحبت میکنیم.

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

در آخر بریم سراغ هوش مصنوعی. حقیقتش اینه که من تعریف مشخصی براش پیدا نکردم و برای اینکه بتونیم دقیقتر و علمی تر صحبت کنیم، من شبکه های عصبی مصنوعی رو توضیح میدم. شبکه های عصبی مصنوعی یا Artificial Neural Network یا به اختصار ANN، الگوریتمی از انواع ML هست که با الهام گرفتن از روند پردازش اطلاعات در مغز موجودات زنده طراحی شده اند: نورون ها و سیناپس ها به صورت ریاضی مدلسازی شده و بعدش با اطلاعات ورودی آموزش داده میشن. فرق این الگوریتم با بقیه الگوریتم های ML چی هست که اینقدر مورد توجه قرار گرفته اند؟ ANN در مقایسه با سایر الگوریتم ها در شرایطی که اطلاعات زیاد در دسترس باشه، خیلیییییی بازده بالاتری داره و عملا متد های دیگه رو بلااستفاده کرده. همچنین مسائلی توسط ANN قابل پیاده سازی شدن هستند که توسط الگوریتم های دیگه ممکن نبودند و حتی خارج از حیطه ML هست: الگوریتم های مولد (اینکه بتونه آهنگ بسازه یا نقاشی کنه) و یا پردازش زبان طبیعی (که خارج از حیطه یادگیری ماشین کلاسیک هست) و ... . در شکل زیر، یک مدل از شبکه های عصبی رو مشاهده میکنید:

در شکل زیر مقایسه بازده شبکه های عصبی و متد های کلاسیک رو مشاهده میکنید:

ممکنه اسم یادگیری عمیق یا deep learning رو هم شنیده باشید. این اصطلاح هم برای ANN به کار میره، در شرایطی که تعداد hidden layer ها (در شکل اول) زیاد باشه. با افزایش تعداد لایه ها، به صورت عمومی بازده شبکه های عصبی میتونه بیشتر بشه. درمورد نورون ها و سیناپس ها و لایه ها و ... خیلی صحبت خواهیم کرد و درواقع بحث اصلی ما هستند.

برای یادگرفتن این مبحث، باید موضوعات بیشتری رو پوشش بدیم (مثل پیش پردازش اطلاعات، over/under fit و ...) و همچنین کاربرد های دیگری هستند که در این مطلب پوشش داده نشدند (مثل Bayesian neural network و ...) که در آینده روشون تمرکز خواهیم کرد.

خوشحال میشم نظرات، مباحث و سوالاتتونو با من درمیون بذارید تا در قسمت بعد درموردشون صحبت کنیم. آی دی تلگرام: @amir_daaee

منتظر مطالب بعدی من باشید...

قسمت بعدی: Supervised Learning - قسمت اول

قسمت پیشین: هوش مصنوعی برای همه