یادگیری، یادگیری ماشین (Machine Learning)

machine-learning-01

یادگیری ماشین را می توان به این صورت تعریف کرد:

Machine learning is a type of artificial intelligence (AI) that provides computers with the ability to learn without being explicitly programmed. Machine learning focuses on the development of computer programs that can teach themselves to grow and change when exposed to new data.

 

یا

یادگیری ماشین نوعی هوش مصنوعی است که به کامپیوترها این توانایی را می دهد که بدون اینکه صریحا برنامه ریزی شوند یاد بگیرند. یادگیری ماشین (ML) بر روی توسعه ی برنامه هایی تمرکز دارد که می توانند به خود یاد دهند که  هنگام دریافت اطلاعات جدید رشد و تغییر کنند.

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

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

به طور مثال در ویدیو زیر یک هلکوپتر اسباب بازی را می بینید که قابلیت حرکت اتوماتیک را دارد و بدون کمک انسان پرواز می کند و حتی حرکات آکروباتیک هوایی هم انجام می دهد ! و این توانایی پرواز را با استفاده از یادگیری ماشین به دست آورده است، این پروژه مربوط به دانشگاه استنفورد است که در توضیحات فیلم لینک مربوط به آن را گذاشته ام.

 

یادگیری ماشین شامل دسته زیادی از الگوریتم ها و تکنیک ها می شود که کاربرد های مختلفی دارند نمونه ی بالا فقط یک مورد از استفاده ی آن ها بود برای مثال می توان به این موردها هم اشاره کرد:

  • فرض کنید که اطلاعات تعدادی خانه را دارید که شامل مساحت ، تعداد اتاق ها و سرویس های بهداشتی، مساحت حیاط و قیمت آن ها می شود حالا می خواهید برنامه ای بنویسید که بر اساس داده های موجود بتواند قیمت یک خانه ی جدید را که به آن می دهیم را با تقریب خوبی حدس بزند. می توان در این مورد از یادگیری ماشین استفاده کرد و بر اساس داده های موجود یادگرفت و وقتی یک نمونه ی کاملا جدید به سیستم دادیم آنگاه سیستم می تواند قیمت آن را حدس بزند.قرض کنید که یک برنامه برای خواندن دست خط می خواهیم بنویسیم. برای این کار تعدادی نمونه از همه ی کاراکتر ها با دستخط های مختلف جمع آوری می کنیم و آن ها را به یک برنامه یادگیری ماشین متناسب می دهیم. در نتیجه برنامه ما قادر خواهد بود بر اساس دیتا هایی که به آن دادیم کاراکترها مختلف را یاد بگیرد و وقتی که یک کاراکتر جدید با خطی متفاوت به آن دادیم، می تواند تشخیص دهد آن کاراکتر چیست.inkoverlay-screenshot
  • فرض کنید که اطلاعات مربوط به تومورهای تعداد زیادی از بیماران را در طول زمان ثبت کرده ایم اکنون می توانیم با استفاده از یادگیری ماشین از روی مشخصات تومور از روی تصاویر اسکن شده از بیمار با تقریب خوبی بگوییم آیا تومور بدخیم است یا خوش خیم.
  • فرض کنید که تعداد زیاد خبر از یک سری خبرگزاری دارید و می خواهید برنامه ای بنویسید که خبرهای مختلف را در تعدادی گروه مشخص قرار دهدو باز هم الگوریتم های ماشین لرنینگ وجود دارند که دیتا های مختلف را بر اساس ویژگی هایشان به دسته هایی ( کلاستر cluster) گروه بندی می کنند. بعد از گروه بندی اگر نگاه کنید می بینید که به طور مثال شما ۴ دسته متفاوت خواسته اید و برنامه خبرها را برای شما به چهار دسته ی ورزشی، سرگرمی، سیاسی و اقتصادی تقسیم کرده است. همین کاری که بیشتر اپلیکیشن های خبر انجام می دهند. یا سایز لباس ها هم از این روش می آید، سایز تعدادی از افراد مختلف جامعه را بر حسب سانتی متر می گیرند و می گویند چهار دسته سایز بده و این الگوریتم ها سایزهای مختلف گروه بندی می کنند و حاصل می شود گروه Large , small و … .
  • همین طور سیستم های تشخیص اشیا در تصویر هم وجود دارند که بر اساس دیتا های که در مورد اشیا مختلف به آن ها داده ایم توانایی شناسایی آن ها را در تصویر پیدا کرده اند در تصویر زیر یک نمونه از این نوع برنامه ها را می بینید:
    object-recognition
  • یا به برنامه هایی می توان اشاره کرد که با دیدن اثرهای هنری مختلف توانایی خلق آثار هنری جدید را پیدا کرده اند. مانند موسیقی و نقاشی کردن:در تصویر زیر یک نقاشی را می بینید که یک برنامه ی گوگل یک تصویر گرفته است و آن را بر اساس تصاویر هنری که دیده است به این شکل در آورده است:
    magenta-ai-ml
    و یا برنامه هوش مصنوعی گوگل که با استفاده از چند نوت قطعات موسیقی ایجاد می کند:
  • یا می توان به سیستم های پیشنهاد کننده (recommendation systems) اشاره کرد هر روز می بینیم. مثل سایت آمازون که بر اساس محصولی که می بینیم محصولات دیگری معرفی می کند! گاهی اوقات این پیشنهاد ها آنقدر جالب است که فکر می کنم آمازون از خودم بهتر می دونه چه چیزی می خواهم! این سیستم ها بر اساس خرید و رای کاربران به محصولات علایق کاربران را می فهمد و بر اساس علایق کاربران میزان محبوبیت و مقدار ویژگی های کالا های مختلف را می فهمد حتی اگر به آن محصول رای ندهید! و در پایان با استفاده از الگوریتم های clustering که در بالا گفتم محصولات مشابه را دسته بندی می کند و وقتی یک محصول از آن گروه را می بینید محصولات دیگر از آن گروه را به شما نشان می دهد!netflixrec01_616-1
    و بیشمار کاربرد صنعتی ، پزشکی و سلامت، آموزشی ، سرگرمی، اقتصادی ، نظامی، بیولوژی و … که در بالا به چند مورد اشاره کردیم.

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

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

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

منبع شماره ی یک :  دوره آموزشی یادگیری ماشین سایت کورسرا توسط اندرو  ان.جی استاد دانشگاه استنفورد

سایت کورسرا (www.coursera.org) سایتی است که درس های بسیاری را توسط بهترین استادان بهترین دانشگاه های جهان ارایه می دهد که عموما این درس ها رایگان هستند و اگر هم پولی بود و امکان پرداخت نبود می توانید در لینکی که برای هر درس است بروید و بگویید که امکان پرداخت را ندارید و آن ها شما fund می کنند و اجازه ی گرفتن آن درس را به شما می دهند! چون در ایران پرداخت بانکی تا این لحظه بسیار سخت هست، خودم همیشه از این فرصت استفاده کرده ام. البته نگویید از ایران هستید زیرا به خاطر قانون های که در کشورشان هست امکان ارایه بعضی از خدمات را به ایرانیان ندارند!
از این لینک می توانید به صفحه ی درس یادگیری ماشین بروید و در آن ثبت نام کنید: https://www.coursera.org/learn/machine-learning. استادی که این درس را ارایه می دهد  Andrew Ng است که استاد دانشگاه استنفورد است و همین طور سرپرست پروژه های هوش مصنوعی بزرگی در دنیا بوده اند و هستند و درک و تسلط خیلی بالایی از مطلب دارند به طوری که مفهوم مطلب را بسیار خوب یاد می دهند به همین دلیل طی کردن این دوره می تواند شروع خیلی خوبی برای یادگیری باشد و بعد از آن در صورت نیاز بیشتر می توان به کتاب ها و منابع دیگر مراجعه کنید. ولی برای شروع این دوره ی آموزشی را پیشنهاد می کنم.

این دوری آموزشی شامل ۱۱ هفته است که هر هفته به یک موضوع خاص می پردازد و در هر هفته تعدادی ویدیو آموزشی است که مطالب آن هفته را آموزش می دهد و در هر هفته تعدادی آزمون وجود دارد که برای پاس کردن آن آزمون باید ۸۰ درصد  نمره را کسب کنید و علاوه بر آزمون معمولا هر هفته از دوره یک پروژه ی برنامه نویسی دارد که باید الگوریتم و تکنیک یاد داده شده در آن هفته را پیاده سازی کنید. کد شما هم بررسی می شود و درست بودن و نبودن آن را می فهمید.

 

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

 

۱۱ هفته ای این درس هم در زیر مشاهده می کنید:

week 1

Introduction
Linear Regression with One Variable
Linear Regression with One Variable

week2

Linear Regression with Multiple Variables
Octave/Matlab Tutorial

week3

Logistic Regression
Regularization

week4

Neural Networks: Representation

week 5

Neural Networks: Learning

week 6

Advice for Applying Machine Learning
Machine Learning System Design

week 7

Support Vector Machines

week 8

Unsupervised Learning
Dimensionality Reduction

week 9

Anomaly Detection
Recommender Systems

week 10

Large Scale Machine Learning

week 11

Application Example: Photo OCR

 

در پایان دوره هم اگر تمرین ها و امتحان ها را پاس کرده باشید یک Certificate هم به شما می دهند.

 

 

منبع شماره ی دو :  کتاب  Pattern Recognition and Machine Learning نوشته ی Christopher Bishop  :

اگر بعد از طی کردن دوره بخواهید به درک عمیق تر و بهتری از مطلب برسید می توانید از کتاب های موجود استفاده کنید.به راحتی با جست و جو در آمازون و دیدن پرفروش ترین کتاب ها می توانید کتاب های مناسبی پیدا کنید ولی از بین کتاب های مختلف من از این کتاب خوشم آمد:

61fkyoem7kl-_sx368_bo1204203200_

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

 

۶ دیدگاه

نظر خود را بنویسید.

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *