یادگیری ماشینی
یادگیری ماشینی (به انگلیسی: Machine learning) مطالعهی علمی الگوریتمها و مدلهای آماری مورد استفادهی سیستمهای کامپیوتری است که بهجای استفاده از دستورالعملهای واضح، از الگوها و استنباط برای انجام وظایف سود میبرند.[1] یادگیری ماشینی علمی است که باعث میشود رایانهها بدون نیاز به یک برنامه صریح در مورد یک موضوع خاص یاد بگیرند. به عنوان زیر مجموعهای از هوش مصنوعی، الگوریتمهای یادگیری ماشینی یک مدل ریاضی بر اساس دادههای نمونه یا "دادههای آموزش" به منظور پیشبینی یا تصمیمگیری بدون برنامهریزی آشکار، ایجاد میکنند.
یادگیری ماشین و دادهکاوی |
---|
![]() |
یادگیری ماشینی در بسیاری زمینهها از جمله مهندسی، کسب و کار، زبانشناسی و پزشکی کاربرد دارد.[2][3] یادگیری ماشینی در بسیاری جنبههای زندگی روزمره وارد شده است. برای نمونه، موتورهای جستجوی اینترنتی در گوگل یا بینگ از یادگیری ماشینی استفاده میکنند، چرا که نرمافزار یادگیری ماشینی آنها چگونگی رتبهبندی برای یک صفحه وب را درک کردهاست. همینطور فیسبوک یا برنامه عکس اپل که تصاویر افراد را شناسایی میکند نوعی از یادگیری ماشینی است. فیلتر هرزنامهها (یا اسپم) در ایمیل از هم از کاربردهای یادگیری ماشینی است.
اهداف و انگیزهها
هدف یادگیری ماشینی این است که رایانهها و سامانهها بتوانند به تدریج و با افزایش دادهها کارایی بهتری در انجام وظیفهٔ مورد نظر پیدا کند. گسترهٔ این وظیفه میتواند از تشخیص خودکار چهره با دیدن چند نمونه از چهرهٔ مورد نظر تا فراگیری شیوهٔ گامبرداری روباتهای دوپا با دریافت سیگنال پاداش و تنبیه باشد.
طیف پژوهشهایی که در یادگیری ماشینی میشود گستردهاست. به لحاظ نظری پژوهشگران بر آناند که روشهای یادگیری تازهای به وجود بیاورند و امکانپذیری و کیفیت یادگیری را برای روشهایشان مطالعه کنند و در سوی دیگر عدهای از پژوهشگران سعی میکنند روشهای یادگیری ماشینی را بر مسایل تازهای اعمال کنند. البته این طیف گسسته نیست و پژوهشهای انجامشده دارای مؤلفههایی از هر دو رویکرد هستند.
یادگیری ماشینی کمک فراوانی به صرفه جویی در هزینههای عملیاتی و بهبود سرعت عمل تجزیه و تحلیل دادهها میکند. به عنوان مثال در صنعت نفت و پتروشیمی با استفاده از یادگیری ماشین، دادههای عملیاتی تمام حفاریها اندازهگیری شده و با تجزیه و تحلیل دادهها، الگوریتمهایی تنظیم میشود که در حفاریهای بعدی استخراج پربازده و بهینهتری داشته باشیم.
تقسیمبندی مسایل
یکی از تقسیمبندیهای متداول در یادگیری ماشینی، تقسیمبندی بر اساس نوع دادههای در اختیار کارگزار هوشمند است. به سناریوی زیر توجه کنید:
فرض کنید به تازگی رباتی سگنما خریدهاید که میتواند توسط دوربینی دنیای خارج را مشاهده کند، به کمک میکروفنهایش صداها را بشنود، با بلندگوهایی با شما سخن بگوید (گیریم محدود) و چهارپایهاش را حرکت دهد. همچنین در جعبهٔ این ربات دستگاه کنترل از راه دوری وجود دارد که میتوانید انواع مختلف دستورها را به ربات بدهید. در پاراگرافهای آینده با بعضی از نمونههای این دستورها آشنا خواهید شد.
اولین کاری که میخواهید بکنید این است که اگر ربات شما را دید خرناسه بکشد اما اگر غریبهای را مشاهده کرد با صدای بلند عوعو کند. فعلاً فرض میکنیم که ربات توانایی تولید آن صداها را دارد اما هنوز چهرهٔ شما را یادنگرفتهاست. پس کاری که میکنید این است که جلوی چشمهایاش قرار میگیرید و به کمک کنترل از راه دورتان به او دستور میدهید که چهرهای که جلویاش میبیند را با خرناسهکشیدن مربوط کند. اینکار را برای چند زاویهٔ مختلف از صورتتان انجام میدهید تا مطمئن باشید که ربات در صورتی که شما را از مثلاً نیمرخ ببیند بهتان عوعو نکند. همچنین شما چند چهرهٔ غریبه نیز به او نشان میدهید و چهرهٔ غریبه را با دستور عوعوکردن مشخص میکنید. در این حالت شما به کامپیوتر ربات گفتهاید که چه ورودی را به چه خروجی مربوط کند. دقت کنید که هم ورودی و هم خروجی مشخص است و در اصطلاح خروجی برچسبدار[4] است. به این شیوهٔ یادگیری، یادگیری با نظارت[5] میگویند.
اینک حالت دیگری را فرض کنید. برخلاف دفعهٔ پیشین که به رباتتان میگفتید چه محرکهای را به چه خروجی ربط دهد، اینبار میخواهید ربات خودش چنین چیزی را یاد بگیرد. به این صورت که اگر شما را دید و خرناسه کشید به نحوی به او پاداش دهید (مثلاً به کمک همان کنترل از راه دورتان) و اگر به اشتباه به شما عوعو کرد، او را تنبیه کنید (باز هم با همان کنترل از راه دورتان). در این حالت به ربات نمیگویید به ازای هر شرایطی چه کاری مناسب است، بلکه اجازه میدهید ربات خود کاوش کند و تنها شما نتیجهٔ نهایی را تشویق یا تنبیه میکنید. به این شیوهٔ یادگیری، یادگیری تقویتی[6] میگویند.
در دو حالت پیش قرار بود ربات ورودی را به خروجی مرتبط کند. اما گاهی وقتها تنها میخواهیم ربات بتواند تشخیص دهد که آنچه میبیند (یا میشنود و…) را به نوعی به آنچه پیشتر دیدهاست ربط دهد بدون اینکه بهطور مشخص بداند آنچیزی که دیده شدهاست چه چیزی است یا اینکه چه کاری در موقع دیدنش باید انجام دهد. ربات هوشمند شما باید بتواند بین صندلی و انسان تفاوت قایل شود بیآنکه به او بگوییم این نمونهها صندلیاند و آن نمونههای دیگر انسان. در اینجا برخلاف یادگیری با نظارت هدف ارتباط ورودی و خروجی نیست، بلکه تنها دستهبندیی آنها است. این نوع یادگیری که به آن یادگیری بی نظارت[7] میگویند بسیار مهم است چون دنیای ربات پر از ورودیهایی است که کسی برچسبی به آنها اختصاص نداده اما به وضوح جزئی از یک دسته هستند.
یادگیری بینظارت را میتوان به صورت عمل کاهش بعد[8] در نظر گرفت.
از آنجا که شما سرتان شلوغ است، در نتیجه در روز فقط میتوانید مدت محدودی با رباتتان بازی کنید و به او چیزها را نشان دهید و نامشان را بگویید (برچسبگذاری کنید). اما ربات در طول روز روشن است و دادههای بسیاری را دریافت میکند. در اینجا ربات میتواند هم به خودی خود و بدون نظارت یاد بگیرد و هم اینکه هنگامی که شما او را راهنمایی میکنید، سعی کند از آن تجارب شخصیاش استفاده کند و از آموزش شما بهرهٔ بیشتری ببرد. ترکیبی که عامل هوشمند هم از دادههای بدون برچسب و هم از دادههای با برچسب استفاده میکند به یادگیری نیمه نظارتی[9] میگویند.
یادگیری با نظارت
یادگیری تحت نظارت، یک روش عمومی در یادگیری ماشینی است که در آن به یک سیستم، مجموعهای از جفتهای ورودی – خروجی ارائه شده و سیستم تلاش میکند تا تابعی از ورودی به خروجی را فرا گیرد. یادگیری تحت نظارت نیازمند تعدادی داده ورودی به منظور آموزش سیستم است. یادگیری تحت نظارت خود به دو دسته تقسیم میشود: رگرسیون و طبقهبندی. رگرسیون آن دسته از مسائل هستند که خروجی یک عدد پیوسته یا یک سری اعداد پیوسته هستند مانند پیشبینی قیمت خانه بر اساس اطلاعاتی مانند مساحت، تعداد اتاق خوابها، و غیره و دسته طبقهبندی به آن دسته از مسائل گفته میشود که خروجی یک عضو از یک مجموعه باشد مانند پیشبینی اینکه یک ایمیل هرزنامه هست یا خیر یا پیشبینی نوع بیماری یک فرد از میان ۱۰ بیماری. با این حال ردهای از مسائل وجود دارند که خروجی مناسب که یک سیستم یادگیری تحت نظارت نیازمند آن است، برای آنها موجود نیست. این نوع از مسائل چندان قابل جوابگویی با استفاده از یادگیری تحت نظارت نیستند. یادگیری تقویتی مدلی برای مسائلی از این قبیل فراهم میآورد. در یادگیری تقویتی،[6] سیستم تلاش میکند تا تقابلات خود با یک محیط پویا را از طریق آزمون و خطا بهینه نماید. یادگیری تقویتی مسئلهای است که یک عامل که میبایست رفتار خود را از طریق تعاملات آزمون و خطا با یک محیط پویا فرا گیرد، با آن مواجه است. در یادگیری تقویتی هیچ نوع زوج ورودی- خروجی ارائه نمیشود. به جای آن، پس از اتخاذ یک عمل، حالت بعدی و پاداش بلافصل به عامل ارائه میشود. هدف اولیه برنامهریزی عاملها با استفاده از تنبیه و تشویق است بدون آنکه ذکری از چگونگی انجام وظیفه آنها شود.
یادگیری با نظارت آماری
در آماری احتمال خروجی بر حسب ورودی محاسبه میشود. اگر ورودی باشد و خروجی ، از دادهها یادگرفته میشود، به عبارت دیگر یادگیری در واقع پیدا کردن تابع است. دو روش کلی برای پیدا کردن تابع وجود دارد: روش تولیدی (Generative) و روش تشخیصی (Discriminative). در روش تشخیصی مستقیماً یادگرفته میشود ولی در روش تولیدی ابتدا و از دادهها برآورد میشوند و بعد با استفاده از قانون بیز (Bayes) محاسبه میشود.[10]
تعریف ریاضی یادگیری با نظارت
در یادگیری با نظارت، مثالهای آموزشی به صورت جفتهای () که در آن هر نمونه به همراه بر چسب آن داده شدهاند و اندیس هر مثال در مجموعه مثالهای آموزشی است. هدف در این یادگیری بدست آوردن تابع است که بتواند برای نمونههای ورودی دیده نشده بر چسب مناسب را برگرداند یعنی را. نمونه و بر چسب هر دو میتوانند یک بردار باشند. اگر بر چسب یک عدد حقیقی باشد مسئله پیش روی ما «رگرسیون» (Regression) نامیده میشود. اگر بر چسب یک عدد صحیح باشد به مسئله «طبقهبندی» (Classification) گفته میشود.
یادگیری بی نظارت
یادگیری بی نظارت یا یادگیری بدون نظارت (انگلیسی: Unsupervised machine learning، در مقابل یادگیری بانظارت)، یکی از انواع یادگیری در یادگیری ماشینی است. اگر یادگیری بر روی دادههای بدون برچسب و برای یافتن الگوهای پنهان در این دادهها انجام شود، یادگیری، بدون نظارت خواهد بود.[1] از انواع یادگیری بدون نظارت میتوان به الگوریتمهای خوشهبندی (Clustering)، تخصیص پنهان دیریکله (LDA) و جاسازی لغات (Word Embedding) اشاره کرد.
مثالی از یادگیری بی نظارت
از یادگیری نظارت نشده در دنیای امروز میتوان مثالهای متعددی زد. یکی از پرکاربردترین آنها پیشنهادهایی است که به کاربران در شبکههای اجتماعی داده میشود. بعنوان مثال در اینستاگرام دادههای فوقالعاده زیادی از هر فرد در مورد علایق، کسانی که دنبال میکند، دنبالکنندگان او و ... وجود دارد. اینستاگرام براساس دادههایی که از کاربر بدست میآورد، ویژگیهای او را تعیین کرده و با خوشهبندی میکند. در نهایت با توجه به خوشهای که کاربر درون آن قرار گرفته است، پیشنهادهای متعددی به وی در جهت درگیر کردن بیشتر او با این شبکه اجتماعی میدهد.[11]
یادگیری تقویتی
هدف یادگیری تقویتی بخشی که از یادگیری ماشینی است این است که چگونه عاملهای نرمافزاری، باید یک عمل را مناسب محیط انتخاب کنند تا پاداش بهینه بیشینه شود. این رشته به دلیل کلی بودن ، در بسیاری از رشته های دیگر از جمله نظریه بازی ، تئوری کنترل ، تحقیق در عملیات ، تئوری اطلاعات ، بهینه سازی مبتنی بر شبیه سازی ، سیستم های چند عامل ، هوشمند جمعی، آمار و الگوریتم های ژنتیکی مورد مطالعه قرار می گیرد. در یادگیری ماشینی ، محیط به طور معمول به عنوان یک فرایند تصمیم گیری مارکوف (MDP) معرفی می شود. بسیاری از الگوریتم های یادگیری تقویتی از تکنیک های برنامه نویسی پویا استفاده می کنند. در الگوریتم های یادگیری تقویتی ، فرضیه مبتنی بر دانش یک مدل دقیق ریاضی از MDP نیست ، و هنگامی که مدل های دقیق غیرقابل دسترسی هستند مورد استفاده قرار می گیرد. الگوریتم های یادگیری تقویتی در وسایل نقلیه خودران یا در یادگیری بازی در برابر حریف انسانی استفاده می شود.
یادگیری دیکشنری پراکنده
یادگیری دیکشنری پراکنده یا فرهنگ لغت پراکنده یک روش یادگیری ویژگی است که در آن یک مثال آموزشی به عنوان ترکیبی خطی از توابع پایه ارائه می شود ، و فرض بر این است که یک ماتریس پراکنده است. این مساله از نوع به شدت سخت NP-hard است و حل تقریبی آن دشوار است. الگوریتم K-SVD یک روش اکتشافی معمول برای یادگیری دیکشنری پراکنده است. یادگیری دیکشنری پراکنده در چندین زمینه استفاده شده است. در دسته بندی ، مسئله مشخص کردن کلاسهایی است که قبلاً دیده نشده اند متعلق به نمونه آموزشی اند. برای دیکشنری که در آن هر کلاس از قبل ساخته شده است ، یک مثال آموزشی جدید با کلاس همراه است که به بهترین شکل توسط دیکشنری مربوطه نمایش داده می شود. مثلاً یادگیری دیکشنری پراکنده در تشخیص و جداسازی نویز تصویر استفاده شده است. ایده اصلی این است که تکه های تصویر تمیز و بدون نویز می تواند جداگانه توسط یک دیکشنری تصویری نشان داده شود ، اما قسمت نویز نمیتواند.
روش های جدید یادگیری ماشینی
ماشین سازنده متغیر همبسته بالا (HCVCM)
این الگوریتم یک مدل ترکیبی جدید برای بهبود مدلهای رگرسیون و مدلهای شبکه عصبی مصنوعی برای پیش بینی پدیده ها و عملکرد مواد است. ماشین سازنده متغیر همبسته بالا (HCVCM) سعی دارد متغیرهای جدیدی را به جای متغیرهای اولیه ایجاد کند که در بهبود دقت مدل ها موثرتر هستند. این متغیرها از متغیرهای اولیه با استفاده از توابع ریاضی متغیرهای جدیدی ایجاد می کند، به گونه ای که ارتباط بیشتری با خروجی و همبستگی کمتری با ورودی های دیگر دارند. در HCVCM سه مرحله وجود دارد. اول، با استفاده از چندین توابع ریاضی متغیرهای جدیدی ایجاد می کنند. سپس متغیرهای جدید انتخاب می شوند، که در مقایسه با متغیرهای اولیه ضریب همبستگی بیشتری با خروجی دارند. در مرحله سوم فقط متغیر های جدیدی انتخاب می شوند که همبستگی آنها کمتر از همبستگی بین متغیرهای اولیه است. این روش در سال 2020 توسط آیدین شیشه گران ارائه شد.[12]
بهترین زبانهای برنامهنویسی برای یادگیری ماشینی
امروزه با توجه به گستردگی زبانهای برنامه نویسی، علاقهمندان به این بخش از هوش مصنوعی از زبانهای مختلفی استفاده میکنند. پر استفادهترین این زبانها عبارتند از:
- پایتون
- متلب
- جاوا
- R
- جاوا اسکریپت
- #c
- اسکالا
بهترین زبان برنامهنویسی برای یادگیری ماشینی کدام است؟
نکتهای که باید در نظر داشت این است که بهترین زبان برنامهنویسی برای هوش مصنوعی و یادگیری ماشینی وجود ندارد. چرا که این مسئله کاملاً وابسته به موردی است که برنامهنویس میخواهد برای آن موضوع کدنویسی کند. بعنوان مثال فردی تنها میخواهد مفاهیم اولیه یادگیری ماشینی را فراگیرد. برای چنین شخصی استفاده از یک زبان برنامهنویسی با محیط قابل فهم و آسان کفایت میکند.
ممکن است فرد دیگری در فرایند یادگیری ماشینی نیاز به پردازش تصویر داشته باشد. در چنین حالتی زبانهای متلب و پایتون بهترین گزینه هستند. چرا که کتابخانههای قوی برای پردازش تصویر دارند. در حالتی که افراد بخواهند در تئوریهای مربوط به یادگیری ماشینی عمیق شده و از روشهای آماری خاص استفاده کنند گزینه مناسب R خواهد بود. البته سی شارپ که به تازگی با ارائه عمومی model builder وارد این مبحث شده (قبل از این هم از model builder در برخی تکنولوژی های خود مانند bing استفاده کرده بود) قطعاً حرف های زیادی در این زمینه خواهد داشت. همچنین با توجه به سادگی استفاده از آن و تنها با تسلط به زبان #C و حتی با دانش اندک ریاضی محبوبیت خود را به دست میآورد.
پانوشتهها

- Hastie, Trevor; Tibshirani, Robert (2009). The Elements of Statistical Learning: Data mining, Inference, and Prediction (به English). New York: Springer. pp. 485–586. ISBN 978-0-387-84857-0.
- Piryonesi, S. M.; El-Diraby, T. E. (2020) [Published online: December 21, 2019]. "Data Analytics in Asset Management: Cost-Effective Prediction of the Pavement Condition Index". Journal of Infrastructure Systems. 26 (1). doi:10.1061/(ASCE)IS.1943-555X.0000512.
- Provost, F., & Fawcett, T. (2013). Data Science for Business: What you need to know about data mining and data-analytic thinking. " O'Reilly Media, Inc.".
- Labelled
- Supervised Learning
- Reinforcement Learning
- Unsupervised Learning
- Dimension Reduction
- Semi-Supervised Learning
- "On discriminative vs. generative classifiers: a comparison of logistic regression and naive Bayes". NIPS'01 Proceedings of the 14th International Conference on Neural Information Processing Systems: Natural and Synthetic (به English). MIT Press Cambridge. December 03 - 08, 2001. Check date values in:
|تاریخ=
(help) - اندور ان جی - ترجمه سید محمد امین موسوی. «یادگیری بی نظارت - دوره یادگیری ماشینی دانشگاه استنفورد».
- {{|نویسنده1 =آیدین شیشه گران |نویسنده2=حسام ورعی |نویسنده3=تیمون رابزویک |نویسنده4=غلامرضا شیشه گران|عنوان=High correlated variables creator machine: Prediction of the compressive strength of concreteوبگاه=|نشانی=https://arxiv.org/abs/2009.06421/%7Cعنوان=روش های جدید یادگیری ماشینی - دانشگاه کرونل}}
جستارهای وابسته
- آمار
- علم دادهها
- دادهکاوی
- استقراء (استدلال استقرائی)
- استدلال استنتاجی
- استنباط (استدلال استنباطی)
- تابع سیگموئید
- منطق فازی
- الگوریتم تکاملی (Evolutionary algorithm)
- الگوریتم ژنتیک (Genetic algorithm)
- بینایی کامپیوتر (Computer Vision)
- تشخیص گفتار (Speech_recognition)
- هوش جمعی (Swarm Intelligence)
- خلاقیت ماشین (Artificial creativity)
- تصور مصنوعی (Artificial imagination)
- یادگیری عمیق (deep learning)
- یادگیری تقویتی (Reinforcement learning)
- شبکه عصبی (neural network)
- شبکه عصبی مصنوعی (artificial neural network)
- Gödel machine (برنامه کامپیوتر خود بهبود یابنده)
- Artificial General Intelligence
نرمافزارهایی که عموماً در یادگیری ماشینی کاربردی هستند.
TensorFlow , Keras , CNTK ، FANN، openNN , Theano , BVLC/cafe, scikit-learn, pybrain, pylearn
منابع
- نگاهی آماری به یادگیری ماشینی و بهطور خاص یادگیری ماشینی با نظارت.
- , R., Ebrahimie, E., Niazi, A., Afsharifar, A. (2021). Integration of meta-analysis and supervised machine learning for pattern recognition in breast cancer using epigenetic data. Informatics in Medicine Unlocked, 100629.
- Trevor Hastie, Robert Tibshirani, and Jerome Friedman, The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Springer, 2003 (ISBN 0-387-95284-5)
- Machine Learning Thomas G. Diet Erich – Department of Computer Science – Oregon State University
- مرجعی ساده و روان برای یادگیری تقویتی؛ مناسب برای یادگیری اصول اولیه:
Richard S. Sutton and Andrew G. Barto, Reinforcement Learning: An Introduction, MIT Press, 1998 (online version).
آکادمی دادهکاوی
- این کتاب کم حجم یکی از عمدهترین مراجع کلاسیک در زمینهٔ یادگیری ماشینی است:
Tom M. Mitchell, Machine Learning, McGraw-Hill Companies, Inc. , 1997. ISBN 0-07-042807-7