یادگیری ماشین چیست
یادگیری ماشین چیست؟ در اولین جلسه از آموزش یادگیری ماشین رایگان هوسم میخواهم به این سوال پاسخ دهم. علمی که به ماشینها قابلیت یادگیری میدهد. یعنی ماشینها هم مثل انسانها و حیوانات میتوانند یاد بگیرند. در این جلسه خواهید آموخت که ماشین لرنینگ چیست و با مفهوم داده آشنا خواهید شد. با سایت هوش مصنوعی هوسم همراه باشید…
اهمیت یادگیری ماشین
قبل از اینکه به سوال یادگیری ماشین چیست پاسخ بدهم، بهتر است از اهمیت یادگیری ماشین بگوییم. امروزه یادگیری ماشین یا Machine Learning یا ML بخش جداییناپذیر زندگی ماست. شاید روزانه صدها بار بدون اینکه بدانیم، از الگوریتمهای آن استفاده میکنیم! مثلا همین موتور جستجوی گوگل (که زندگی بدون آن قابل تصور نیست)، بر اساس الگوریتمهای ML کار میکند. اگر به سایتهای فروشگاهی مثل دیجیکالا مراجعه کرده باشید، معمولا بخشی وجود دارد که بر اساس علایق شما پیشنهادهایی با تخفیف ارائه میدهد. این بخش را نیز الگوریتمهای ML مدیریت میکنند.
این تکنولوژیها نه تنها برای ما آزاردهنده نیستند، بلکه حتی دلمان میخواهد بسیاری از ابزارهای اطرافمان هوشمند شوند. مثلا از یک نفر شنیدم که میگفت: “تلوزیون باید خودش حواسش باشه که من هر هفته بازی تیم محبوبم رو میبینم. حالا اگه یه هفته حواسم نبود، یه ربع قبل شروع بازی به گوشیم پیام بده که تخمه و پفک رو بردار و بیا که فوتبال داره شروع میشه!” این نشان میدهد که انسان امروز دیگر به تنظیم زمانبندی تلوزیون برای پخش خودکار برنامهها علاقهای ندارد. آن را کاری زمانبر و مشکل میداند. پس انسان امروز میخواهد که ماشینهای اطرافش (مانند کامپیوتر، موبایل، تلویزیون، خودرو و حتی چایساز خانه) بیشتر و بیشتر هوشمند شوند.
تا اینجا متوجه شدیم که یادگیری ماشین به دنبال هوشمند کردن ماشینهاست. یادگیری ماشین این هوشمند کردن را از طریق “آموزش” به ماشینها انجام میدهد. چگونه ماشینها یاد میگیرند؟ در ادامه خواهیم دید! اما بیایید یک تعریف دقیق و علمی از یادگیری ماشین ببینیم. در کتابها تعاریف متنوعی از یادگیری ماشین وجود دارد. یکی از بهترین تعاریف را آقای آرتور ساموئل در سال 1959 مطرح کرده است.
از نظر آرتور ساموئل یادگیری ماشین چیست
به گفته آقای آرتور ساموئل:
یادگیری ماشین حوزهای است که بدون برنامهریزی مستقیم به کامپیوترها قابلیت یادگیری میدهد.
Machine Learning is the field of study that gives computers the ability to learn without being explicitly programmed. —Arthur Samuel, 1959
این تعریف دو ویژگی مهم برای یادگیری ماشین ارائه میدهد:
- یادگیری ماشین قابلیت یادگیری به کامپیوترها میدهد. یعنی با یادگیری ماشین، کامپیوترها مباحث جدیدی یاد میگیرند.
- با استفاده از یادگیری ماشین، کامپیوترها برای یادگیری نیاز به برنامهریزی مستقیم ندارند. یعنی یادگیری ماشین نقطه مقابل برنامهریزی مستقیم است!
میخواهم بیشتر درمورد برنامهریزی مستقیم صحبت کنم. برنامهریزی مستقیم، یعنی دوست ما هر هفته زمانهای بازی تیم محبوبش را پیدا کند و بعد هم تلویزیون را تنظیم کند که سر ساعت روشن شود و روی شبکه ورزش باشد. سخت است! یادگیری ماشین میگوید تو نام تیم محبوبت را به من بگو و بقیه کارها را به من بسپار! اما این مثال بسیار ساده است. برای اینکه بهتر درک کنید، در بخش بعدی تفاوت یادگیری ماشین با برنامهریزی مستقیم را دقیقتر بررسی خواهم کرد. اما تا اینجا انتظار دارم تعریف آقای ساموئل برای یادگیری ماشین چیست را خوب فهمیده باشید.
تفاوت یادگیری ماشین با برنامهریزی مستقیم
در بخش قبل از پست یادگیری ماشین چیست گفتیم که یادگیری ماشین بدون برنامهریزی مستقیم به کامپیوترها قابلیت یادگیری میدهد. در اینجا میخواهم با یک مثال تفاوت میان برنامهریزی مستقیم و یادگیری ماشین را به شما توضیح بدهم. این مثال را به ذهن بسپارید، چون در پستهای بعدی دوباره به این مثال برمیگردیم.
کارخانهای از شما خواسته که برای جداکردن میوههای سیب و موز الگوریتمی طراحی کنید. یک تسمه نقاله به شکل زیر در کارخانه وجود دارد. میوهها را کارگران روی تسمه نقاله میچینند. این میوهها بعد از شستوشو به مرحله جداسازی میرسند. اینجا شما باید به کارخانه کمک کنید. یک الگوریتم طراحی کنید که هر میوه در سبد مخصوص به خود بیفتد. حالا با این مثال برویم دو رویکرد حل مساله “برنامهریزی مستقیم” و “یادگیری ماشین” را بیاموزیم.
شکل 3: جداسازی میوه با استفاده از یادگیری ماشین
برنامهریزی مستقیم
در برنامهریزی مستقیم، تمامی قواعد باید فرموله شوند. یعنی شما باید با استفاده از تکنیکهایی مثل if else در کدنویسی و یک عالمه قوانین علمی، تجربی و خلاقیتی، تمامی قواعدی که منجر به جواب درست میشوند را کدنویسی کنید. بهتر است با مثال این قضیه را روشنتر کنم؛ اگر بخواهیم با برنامهریزی مستقیم مساله سیب و موز حل شود، مثلا میتوانیم بنویسیم که اگر رنگ میوه زرد بود، موز و اگر قرمز بود، سیب است. خوب است، با یک قانون ساده کل مساله را حل کردیم! اما خبردار میشویم که رئیس کارخانه عصبانی شده، چون تمام سیبهای زرد داخل سبد موز رفتهاند!
خب به نظر میرسد که باید قانون جدیدی اضافه کنیم. قانون جدید را اینطور مینویسیم که:
- اگر رنگ میوه زرد و ابعادش مستطیلی بود موز است.
- اگر هم ابعادش مربعی و رنگش قرمز یا زرد بود، سیب است.
حالا اگر سیب یا موز کال را به الگوریتم بدهیم چه میگوید؟ احتمالا جواب درستی نمیدهد. پس بازهم باید یکسری قواعد جدید بگذاریم. اگر موز پوسیده را نشان بدهید چه؟ بازهم به مشکل خوردیم! به همین ترتیب باید آنقدر قوانین تعیین کنیم که همه حالتها پوشش داده شوند.
این همه قانون نوشتیم، اما ممکن است یکسری قواعد اصلا به ذهنتان نرسیده باشد. یا اصلا در مورد آنها دانشی نداشته باشید. این مسائل باعث میشوند که الگوریتم کارایی ضعیفی داشته باشد. همچنین کوچکترین تغییری در دادهها (مثلا تاریک بودن محیط) باعث اضافه شدن قواعد جدیدی به کدها میشود! این روندِ برنامهریزی مستقیم برای حل چنین مسالهای است. در اینجا ما یک مثال بسیار ساده آوردیم ولی همیشه مسائل اینقدر هم ساده نیستند.
بلوکدیاگرام برنامهریزی مستقیم
در برنامهریزی مستقیم در واقع شما یک الگوریتم میسازید. سپس الگوریتم و دادهها را به کامپیوتر میدهید و خروجی مطلوب خود را دریافت میکنید:
در بلوک دیاگرام بالا، داده همان سیب و موز است. الگوریتم همان قوانینی است که ما نوشتهایم (مثلا به زبان پایتون نوشتهایم). کامپیوتر یا هر ماشین دیگری این الگوریتم را اجرا میکند. ورودیها را به الگوریتم میدهد و خروجی را میگیرد. امروزه به این نوع الگوریتمها که با برنامهریزی مستقیم کار میکنند، الگوریتمهای سنتی یا کلاسیک گفته میشود. پس اگر جایی واژه الگوریتمهای سنتی را شنیدید، بدانید که منظور الگوریتمهایی هستند که به صورت مستقیم برنامهریزی میشوند. آیا این الگوریتمها کاربردی هم دارند یا دیگر به قول معروف دمده شدهاند؟ بله، هنوز کاربرد دارند. بعدا به کاربردهایش اشاره میکنم.
اما یک سوال؛ این چه ماشین هوشمندی بود که ما ساختیم؟ ماشین ما که کاری نمیکند، هرچه را که ما به او دیکته کردیم او اجرا میکند. بهتر بگویم، ماشین یا کامپیوتر یک مجری است که تمام متن آن را یک نفر دیگر نوشته است! واقعیت این است که این دیگر هوش مصنوعی نیست، بلکه هوش طبیعی است! 😃 یک انسان همه کار را کرده و ماشین فقط آن را اجرا میکند. بیایید ماشین را یک کودک درنظر بگیریم که فرق بین موز و سیب را نمیداند. کدام سناریو را برای آموزش سیب و موز به کودک انتخاب میکنید؟
- او را با برنامهریزی مستقیم آموزش میدهیم.
- کافی است یک سری نمونه از سیب و موز همراه با نام آنها به کودک نشان دهیم.
نگویید که راه حل اول را انتخاب میکنید! راه حل دوم را انتخاب میکنیم، چون دراینحالت ما به قابلیتهای ویژه مغز او اعتماد داریم. در یادگیری ماشین هم ما به دنبال چنین روشی هستیم. برویم سراغ بخش هیجانانگیز از پست « یادگیری ماشین چیست »…
حالا تعریف دقیق یادگیری ماشین چیست
در این بخش از پست « یادگیری ماشین چیست » میخواهیم از الگوریتم یادگیری ماشین برای حل مثال قبل استفاده کنیم. ابتدا باید یک الگوریتمِ مناسب انتخاب کنیم. بله، دیگر نیازی نیست که ما الگوریتم بنویسیم، کافی است یکی از الگوریتمهای یادگیری ماشین را انتخاب کنیم. بعد از انتخاب الگوریتم، تعدادی تصویر موز و سیب به آن نشان میدهیم و میگوییم که اینها موز و سیب هستند. دقیقا شبیه به همان رفتاری که با کودک داشتیم.
اما الگوریتم یادگیری ماشین چه چیزی دارد که میتواند با دیدن یکسری داده، یاد بگیرد؟ الگوریتم یادگیری ماشین ما یکسری پارامتر دارد. وقتی ما داده را به الگوریتم میدهیم، پارامترهای الگوریتم آنقدر تغییر میکنند تا درنهایت یاد بگیرند. یعنی الگوریتم یادگیری ماشین با دادهها آنقدر تمرین میکند تا اینکه نهایتا یاد بگیرد چطور با دیدن داده (موز/سیب)، جواب درست را حدس بزند.
به شکل زیر نگاه کنید؛ در الگوریتمهای یادگیری ماشین شما وظیفه پیدا کردن و وضع قوانین را بر عهده ندارید. کافی است داده ورودی (تصویر موز/سیب) را همراه با داده خروجی (نام سیب/موز) را به کامپیوتر بدهید تا الگوریتم را برای شما بسازد. الگوریتم که ساخته شد، حالا به راحتی به آن داده ورودی (تصویر سیب/موز) بدهید تا نام آن را حدس بزند.
در این بخش درمورد یادگیری ماشین صحبت کردیم. اما هم در توضیحات و هم در شکل بالا میبینیم که داده ورودی و داده خروجی نقش پررنگی در بدست آمدن الگوریتم یادگیری ماشین دارند. واقعیت این است که داده در یادگیری ماشین از اهمیت بسیار بالایی برخوردار است. پس بیایید پس از پاسخ به سوال یادگیری ماشین چیست درباره داده در یادگیری ماشین صحبت کنیم.
داده در یادگیری ماشین
در این بخش میخواهیم کمی در مورد دادهها در یادگیری ماشین صحبت کنیم. دادهها در یادگیری ماشین میتوانند به شکلهای مختلفی باشند. تصویر، صوت، متن، سیگنال و دادههای عددی از جمله انواع دادهها هستند که بسیار رایجند. این دادهها میتوانند همراه با جواب مطلوب هم باشند (همان داده خروجی).
مثالی که در بخش قبل گفتیم را در نظر بگیرید. دادهها در این مثال تصاویری از سیب و موز هستند. در این مثال گفتیم که ما مشخص کردیم که کدام تصاویر سیب و کدام موز هستند. به عبارتی خروجی مطلوب در این دادهها مشخص شده است. یعنی دادهها چیزی شبیه به تصاویر زیر هستند:
شکل 8: داده در یادگیری ماشین و جواب مطلوب
مشاهده میکنید که یک نفر پای کامپیوتر نشسته و مشخص کرده که کدام تصاویر مربوط به موز و کدام مربوط به سیب هستند. یعنی جواب مطلوب را مشخص کرده است. به این جواب مطلوب، Ground Truth، برچسب یا label گفته میشود. احتمالا خود شما هم تجربه برچسب زدن را دارید، بدون اینکه بدانید! چگونه؟ گوگل گاهی شما را وادار به این کار کرده است:
دادهها در یادگیری ماشین بسیار مهم هستند. زیرا گفتیم که یادگیری از طریق دادهها انجام میشود. بنابراین هرچه دادهها بهتر باشند، احتمالا الگوریتم بهتر یاد میگیرد!
پس یادتان باشد، داده دو مولفه مهم دارد:
- خود داده
- برچسب، لیبل یا ground truth
در اولین جلسه از دوره یادگیری ماشین رایگان هوسم به موضوع « یادگیری ماشین چیست » پرداختیم. معنی یادگیری ماشین را یاد گرفتید. تفاوت یادگیری ماشین با برنامهریزی مستقیم را آموختید. در آخر هم با مفهوم داده در یادگیری ماشین آشنا شدید. امیدوارم که این آموزش مورد توجه شما قرار گرفته باشد. سوالات و نظرهای خود را برایمان کامنت کنید. منتظر جلسات بعدی یادگیری ماشین در هوسم باشید…
مطالب زیر را حتما مطالعه کنید
آموزش یادگیری ماشین رایگان
الگوریتم k means
نرمال سازی داده در یادگیری ماشین
یادگیری گروهی
ماشین بردار پشتیبان
الگوریتم KNN
20 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
خیلی آموزش عالی بود برای تازه واردها
تشکر
موفق باشید
خوشحالیم که آموزش براتون مفید بوده.
سپاس 🙏
موفق باشید ⭐
استخراج ویژگی از تصویر مگه کار CNN که جزو دیپ لرنینگ هست نبود؟!
پس چرا گفتی عکس بدیم به مدلمون! مگه نباید اول خودمون ویژگی استخراج کنیم و به مدل بدیم؟! پس اگه بدون استفاده از دیپ لرنینگ عکس بدیم به مدلمون موفق نخواهد بود بنظرم.
در نهایت بابت زبان ساده آموزش ها تشکر فراوان میکنم 🙂
سلام
به نظر میرسه شما با پیشفرضها و دانش قبلی این آموزش رو مطالعه کردید. برای ملموس بودن آموزش برای مخاطب تازهوارد، از مثال میوهها استفاده شده.
علاوهبراین، به نظر میرسه پیشفرض و دانش قبلی شما به دلایل مختلفی اشتباه هست: 1) استخراج ویژگی از تصویر فقط با CNN یا دیپ لرنینگ انجام نمیشه. دنیای تصویر بعد از دیپ لرنینگ به وجود نیومده. 2) حتی اگر استخراج ویژگی با CNN انجام بشه، بازهم ما استخراج ویژگی نمیکنیم و همه فرآیند استخراج ویژگی و تصمیم گیری در قالب یک مدل انجام میشه. 3) کل مباحث دیپ لرنینگ (از جمله همین CNN) زیرمجموعهای از ماشین لرنینگ هست. پس، نباید این دو (دیپ لرنینگ و ماشین لرنینگ) از هم جدا درنظر گرفته بشن.
موفق باشید 🙏🌹
خیلی عالی وساده بیان شد
سلام، واقعا خسته نباشید
آموزشی ساده، شفاف و حرفه ای
ممنونم ازتون
بسیار عالی
لذت بریدم.💛💛
لپ کلام مقاله:
یادگیری ماشین یعنی :
استنتاج ناشناختهها از شناختهها
شناختهها :
همون دادهها به همراه لیبلهاشون
ناشناختهها:
همون لیبلهایی که باید برای دادههای ورودی جدید حدس زده بشه.
دادههای ورودی جدید:
که لیبل ندارند و باید الگوریتم یادگیری ماشین اونا رو حدس بزند.
تذکر: تمرکز این مقاله روی یادگیری ماشین با نظارت بود.
یادگیری ماشین با نظارت:
پدر همیشه ناظر بر پسر است.
الگوریتم از دادههای قبلی به همراه لیبلشون یاد گرفته و همیشه ناظر بر دادههای ورودی جدید است و میخواهد بهترین پاسخ را براشون تحویل دهد.
بازم دمتونگرم💛💛
آیا مسائلی که شامل برآورد پارامترهای مدلهای رگرسیونی با خطاهای اتورگرسیو هستند ، میتوان با الگوریتم های هوش مصنوعی اجرا کردشان؟ در واقع میخواهم بدانم مدل رگرسیونی که با R اجرا میکنیم را میتوان همان مدل رابا هوش مصنوعی هم اجرا کرد ؟
توضیحاتتون هم خیلی مفید و ساده و قابل درک اند حتی برای افرادی که هیچ پیش زمینه ای ندارند ،عالییییی
سلام
ما با موضوع مدنظر شما آشنایی نداریم. بهتر هست به سوالتون جواب ندیم، چون ممکنه درست نباشه.
وای خدا چقدر خندیدم😂
دمتون گرم. به این میگن آموزش جذاب
خیلی هم عالی 😊
عالیی بود توضیحتون مرسی !
کاش یه پست هم راجب فرق ماشین لرنینگ و دیپ لرنینگ و دیتا ساینس و بینایی کامپیوتر تهیه کنید اگر دوست داشتین
سلام
اتفاقا پیشنهاد خوبی هست. ما همواره دغدغه این رو داریم که افراد به صورت واضح تشابه و تفاوت فیلدهای مختلف رو بدونن. حتما چنین پستی رو در برنامه قرار میدیم.
سپاس 🌹🙏
سلام ممنون میشیم چنین کار باارزشی رو قبول زحمت کنید 🌹🌹 از کامپیوتر پیام میدم گل نداشتم از گل شما کپی کردم 😂
سلام
چشم 😊🙏
توضیحات عالی و به زبان ساده و قابل فهم بود…سپاسگزارم
سلام
سپاس 🌹🙏
سلام
بهترین تعریف از یادگیری ماشین که تا حالا دیدم.
انصافا دمتون گرم.
خدا قوت
سلام
سپاس 🌹🙏
این استاده چقد خوبه
خیلی خوب درس میده قشنگ دارم درک میکنم چی ب چیه با اینکه دانشگاه نرفتم و درسی نخوندم میگیرم مطالبشو
ی تشکر ویژه ازش بکنید