یادگیری ماشین

به عنوان یکی از شاخه‌های وسیع و پرکاربرد هوش مصنوعی، یادگیری ماشین (Machine learning) به تنظیم و اکتشاف شیوه‌ها و الگوریتم‌هایی می‌پردازد که بر اساس آن‌ها رایانه‌ها و سامانه‌ها توانایی تعلم و یادگیری پیدا می‌کنند.
شما احتمالا چندین بار در روز از یادگیری ماشین استفاده می‌کنید، حتی بدون آنکه بدانید. هر بار که شما یک جستجوی اینترنتی در گوگل یا بینگ انجام می‌دهید، یادگیری ماشینی انجام می‌شود چراکه نرم‌افزار یادگیری ماشینی آن‌ها چگونگی رتبه‌بندی صفحات وب را درک کرده‌است. هنگامی که فیس‌بوک یا برنامه عکس اپل دوستان و تصاویر شما را می‌شناسد، این نیز یادگیری ماشین است. هر بار که ایمیل خود را چک می‌کنید و فیلتر هرزنامه شما را از داشتن مجدد هزاران هرزنامه خلاص می‌کند نیز به همین دلیل است که کامپیوتر شما آموخته‌است که هرزنامه‌ها را از ایمیل غیراسپم تشخیص دهد. این همان یادگیری ماشین است. این علمی است که باعث می‌شود کامپیوترها بدون نیاز به یک برنامه صریح در مورد یک موضوع خاص یاد بگیرند.
اهداف و انگیزه‌ها
هدف یادگیری ماشین این است که کامپیوتر (در کلی‌ترین مفهوم آن) بتواند به تدریج و با افزایش داده‌ها کارایی بهتری در انجام وظیفه مورد نظر پیدا کند.
گستره این وظیفه می‌تواند از تشخیص خودکار چهره با دیدن چند نمونه از چهره مورد نظر تا فراگیری شیوه گام‌برداری روبات‌های دوپا با دریافت سیگنال پاداش و تنبیه باشد.
طیف پژوهش‌هایی که در یادگیری ماشینی می‌شود گسترده‌است.
در سوی نظری‌ی آن پژوهش‌گران بر آن‌اند که روش‌های یادگیری تازه‌ای به وجود بیاورند و امکان‌پذیری و کیفیت یادگیری را برای روش‌های‌شان مطالعه کنند و در سوی دیگر عده‌ای از پژوهش‌گران سعی می‌کنند روش‌های یادگیری ماشینی را بر مسایل تازه‌ای اعمال کنند. البته این طیف گسسته نیست و پژوهش‌های انجام‌شده دارای مولفه‌هایی از هر دو روی‌کرد هستند.
یادگیری ماشین کمک فراوانی به صرفه جویی در هزینه‌های عملیاتی و بهبود سرعت عمل تجزیه و تحلیل داده‌ها می‌کند. به عنوان مثال در صنعت نفت و پتروشیمی با استفاده از یادگیری ماشین، داده‌های عملیاتی تمام حفاری‌ها اندازه‌گیری شده و با تجزیه و تحلیل داده‌ها، الگوریتم‌هایی تنظیم می‌شود که در حفاری‌های بعدی بیشترین نتیجه و استخراج بهینه‌ای را داشته باشیم.
تقسیم‌بندی مسایل
یکی از تقسیم‌بندی‌های متداول در یادگیری ماشینی، تقسیم‌بندی بر اساس نوع داده‌های در اختیار عامل هوش‌مند است. به سناریوی زیر توجه کنید:
فرض کنید به تازگی رباتی سگ‌نما خریده‌اید که می‌تواند توسط دوربینی دنیای خارج را مشاهده کند، به کمک میکروفن‌هایش صداها را بشنود، با بلندگوهایی با شما سخن بگوید (گیریم محدود) و چهارپایش را حرکت دهد. هم‌چنین در جعبه این ربات دستگاه کنترل از راه دوری وجود دارد که می‌توانید انواع مختلف دستورها را به ربات بدهید. در پاراگراف‌های آینده با بعضی از نمونه‌های این دستورها آشنا خواهید شد.
اولین کاری که می‌خواهید بکنید این است که اگر ربات شما را دید خرناسه بکشد اما اگر غریبه‌ای را مشاهده کرد با صدای بلند عوعو کند. فعلا فرض می‌کنیم که ربات توانایی تولید آن صداها را دارد اما هنوز چهره شما را یادنگرفته‌است. پس کاری که می‌کنید این است که جلوی چشم‌های‌اش قرار می‌گیرید و به کمک کنترل از راه دورتان به او دستور می‌دهید که چهره‌ای که جلوی‌اش می‌بیند را با خرناسه‌کشیدن مربوط کند. این‌کار را برای چند زاویه مختلف از صورت‌تان انجام می‌دهید تا مطمئن باشید که ربات در صورتی که شما را از مثلا نیم‌رخ ببیند بهتان عوعو نکند. هم‌چنین شما چند چهره غریبه نیز به او نشان می‌دهید و چهره غریبه را با دستور عوعوکردن مشخص می‌کنید.
در این حالت شما به کامپیوتر ربات گفته‌اید که چه ورودی را به چه خروجی مربوط کند. دقت کنید که هم ورودی و هم خروجی مشخص است و در اصطلاح خروجی برچسب‌دار است. به این شیوه یادگیری، یادگیری با نظارت می‌گویند.
اینک حالت دیگری را فرض کنید. برخلاف دفعه پیشین که به ربات‌تان می‌گفتید چه محرکه‌ای را به چه خروجی ربط دهد، این‌بار می‌خواهید ربات خودش چنین چیزی را یاد بگیرد. به این صورت که اگر شما را دید و خرناسه کشید به نحوی به او پاداش دهید (مثلا به کمک همان کنترل از راه دورتان) و اگر به اشتباه به شما عوعو کرد، او را تنبیه کنید (باز هم با همان کنترل از راه دورتان). در این حالت به ربات نمی‌گویید به ازای هر شرایطی چه کاری مناسب است، بلکه اجازه می‌دهید ربات خود کاوش کند و تنها شما نتیجه نهایی را تشویق یا تنبیه می‌کنید. به این شیوه یادگیری، یادگیری تقویتی می‌گویند.
در دو حالت پیش قرار بود ربات ورودی را به خروجی مرتبط کند. اما گاهی وقت‌ها تنها می‌خواهیم ربات بتواند تشخیص دهد که آنچه می‌بیند (یا می‌شنود و…) را به نوعی به آنچه پیش‌تر دیده‌است ربط دهد بدون این‌که به‌طور مشخص بداند آن‌چیزی که دیده شده‌است چه چیزی است یا این‌که چه کاری در موقع دیدنش باید انجام دهد. ربات هوش‌مند شما باید بتواند بین صندلی و انسان تفاوت قایل شود بی‌آنکه به او بگوییم این نمونه‌ها صندلی‌اند و آن نمونه‌های دیگر انسان. در این‌جا برخلاف یادگیری با نظارت هدف ارتباط ورودی و خروجی نیست، بلکه تنها دسته‌بندی‌ی آن‌ها است. این نوع یادگیری که به آن یادگیری بی‌نظارت می‌گویند بسیار مهم است چون دنیای ربات پر از ورودی‌هایی است که کسی برچسبی به آن‌ها اختصاص نداده اما به وضوح جزئی از یک دسته هستند.
یادگیری بی‌نظارت را می‌توان به صورت عمل کاهش بعد در نظر گرفت.
از آن‌جا که شما سرتان شلوغ است، در نتیجه در روز فقط می‌توانید مدت محدودی با رباتتان بازی کنید و به او چیزها را نشان دهید و نام‌شان را بگویید (برچسب‌گذاری کنید). اما ربات در طول روز روشن است و داده‌های بسیاری را دریافت می‌کند. در این‌جا ربات می‌تواند هم به خودی خود و بدون نظارت یاد بگیرد و هم این‌که هنگامی که شما او را راه‌نمایی می‌کنید، سعی کند از آن تجارب شخصی‌اش استفاده کند و از آموزش شما بهره بیش‌تری ببرد. ترکیبی که عامل هوش‌مند هم از داده‌های بدون برچسب و هم از داده‌های با برچسب استفاده می‌کند به یادگیری نیمه نظارتی می‌گویند.
یادگیری با نظارت
یادگیری تحت نظارت، یک روش عمومی در یادگیری ماشین است که در آن به یک سیستم، مجموعه‌ای از جفت‌های ورودی – خروجی ارائه شده و سیستم تلاش می‌کند تا تابعی از ورودی به خروجی را فرا گیرد. یادگیری تحت نظارت نیازمند تعدادی داده ورودی به منظور آموزش سیستم است. یادگیری تحت نظارت خود به دو دسته تقسیم می‌شود: رگرسیون و طبقه‌بندی. رگرسیون آن دسته از مسائل هستند که خروجی یک عدد پیوسته یا یک سری اعدا پیوسته هستند مانند پیش‌بینی قیمت خانه بر اساس اطلاعاتی مانند مساحت، تعداد اتاق خوابها، و غیره و دسته طبقه‌بندی به آن دسته از مسائل گفته می‌شود که خروجی یک عضو از یک مجموعه باشد مانند پیش‌بینی اینکه یک ایمیل هرزنامه هست یا خیر یا پیش‌بینی نوع بیماری یک فرد از میان ۱۰ بیماری. با این حال رده‌ای از مسائل وجود دارند که خروجی مناسب که یک سیستم یادگیری تحت نظارت نیازمند آن است، برای آن‌ها موجود نیست. این نوع از مسائل چندان قابل جوابگویی با استفاده از یادگیری تحت نظارت نیستند. یادگیری تقویتی مدلی برای مسائلی از این قبیل فراهم می‌آورد. در یادگیری تقویتی، سیستم تلاش می‌کند تا تقابلات خود با یک محیط پویا را از طریق آزمون و خطا بهینه نماید. یادگیری تقویتی مسئله‌ای است که یک عامل که می‌بایست رفتار خود را از طریق تعاملات آزمون و خطا با یک محیط پویا فرا گیرد، با آن مواجه است. در یادگیری تقویتی هیچ نوع زوج ورودی- خروجی ارائه نمی‌شود. به جای آن، پس از اتخاذ یک عمل، حالت بعدی و پاداش بلافصل به عامل ارائه می‌شود. هدف اولیه برنامه‌ریزی عامل‌ها با استفاده از تنبیه و تشویق است بدون آنکه ذکری از چگونگی انجام وظیفه آن‌ها شود.
یادگیری با نظارت آماری
در یادگیری آماری احتمال خروجی بر حسب ورودی محاسبه می‌شود. اگر ورودی باشد و خروجی ، از داده‌ها یادگرفته می‌شود، به عبارت دیگر یادگیری در واقع پیدا کردن تابع است. دو روش کلی برای پیدا کردن تابع وجود دارد: روش تولیدی (Generative) و روش تشخیصی (Discriminative). در روش تشخیصی مستقیما یادگرفته می‌شود ولی در روش تولیدی ابتدا و از داده‌ها برآورد می‌شوند و بعد با استفاده از قانون بیز (Bayes) محاسبه می‌شود.
تعریف ریاضی یادگیری با نظارت
در یادگیری با نظارت، مثال‌های آموزشی به صورت جفت‌های ( ) که در آن هر نمونه به همراه بر چسب آن داده شده‌اند و اندیس هر مثال در مجموعه مثال‌های آموزشی است. هدف در این یادگیری بدست آوردن تابع است که بتواند برای نمونه‌های ورودی دیده نشده بر چسب مناسب را برگرداند یعنی را. نمونه و بر چسب هر دو می‌توانند یک بردار باشند. اگر بر چسب یک عدد حقیقی باشد مسئله پیش روی ما «رگرسیون» (Regression) نامیده می‌شود. اگر بر چسب یک عدد صحیح باشد به مسئله «طبقه‌بندی» (Classification) گفته می‌شود.
یادگیری بی‌نظارت
یادگیری بی‌نظارت یا یادگیری بدون نظارت (انگلیسی: Unsupervised machine learning، در مقابل یادگیری بانظارت)، یکی از انواع یادگیری در یادگیری ماشینی است. اگر یادگیری بر روی داده‌های بدون برچسب و برای یافتن الگوهای پنهان در این داده‌ها انجام شود، یادگیری، بدون نظارت خواهد بود. از انواع یادگیری بدون نظارت می‌توان به الگوریتمهای خوشه‌بندی (Clustering)، تخصیص پنهان دیریکله (LDA) و جاسازی لغات (Word Embedding) اشاره کرد.
پانوشته‌ها
یکی از انواع یادگیری از داده‌ها
آمار
علم داده‌ها
داده‌کاوی
استقراء (استدلال استقرائی)
استدلال استنتاجی
استنباط (استدلال استنباطی)
تابع سیگموئید
منطق فازی
الگوریتم تکاملی (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