خانه / بایگانی برچسب: Machine Learning

بایگانی برچسب: Machine Learning

حملات تخاصمی (Adversarial Attacks) با چارچوب PyTorch — راهنمای کاربردی

در سال‌های اخیر از «هوش مصنوعی» (Artificial Intelligence) و «یادگیری ماشین» (Machine Learning) در زمینه‌های گوناگونی استفاده شده است. برخی از دانشمندان نسبت به رشد بی‌وقفه هوش مصنوعی ابراز نگرانی کرده‌اند و برخی دیگر این نگرانی‌ها را بی‌دلیل می‌دانند. اما جنس دیگری از نگرانی‌ها اخیرا در رابطه با مدل‌های یادگیری ماشین مطرح شده که با آنچه پیش‌تر بیان می‌شد متفاوت است. گمراه کردن مدل‌های یادگیری ماشین و یا به عبارتی هک کردن آن‌ها امکان‌پذیر است و شاید این همان موضوعی باشد که واقعا باید نگران آن بود. در ادامه، به موضوع «حملات تخاصمی» (Adversarial Attacks)، مفهوم و چگونگی پیاده‌سازی آن‌ها با استفاده از «زبان برنامه‌نویسی پایتون» (Python Programming Language) پرداخته شده است. حملات تخاصمی (Adversarial Attacks) با وجود آنکه مدل‌های «یادگیری عمیق» (Deep Learning) در بسیاری از وظایف پیچیده موفقیت‌های قابل توجهی کسب کرده‌اند، اما آنقدرها هم که بشر ممکن است فکر کند، هوشمند نیستند. پژوهش‌ها حاکی از آن است که مدل‌های یادگیری عمیق به چیزی با عنوان «نمونه‌های تخاصمی» (Adversarial Examples) آسیب‌پذیر..

توضیحات بیشتر »

تحلیل تشخیص خطی فیشر (Fisher’s Linear Discriminant) — پیاده سازی در پایتون

در بیشتر موارد به منظور حل مسائل ساده، الگوریتم‌های مختلف «یادگیری ماشین» (Machine Learning) با استفاده از تکنیک‌ها مختلف به جواب واحدی می‌رسند. ولی بوسیله بعضی از تبدیلات، می‌توان سرعت و دقت انجام عملیات یادگیری ماشین را بهبود بخشید. در این نوشتار به بررسی یکی از این تبدیلات به نام «تحلیل تشخیص خطی فیشر» (Fisher’s Linear Discriminant) می‌پردازیم و از آن برای حل مسائل یادگیری ماشین بهره می‌بریم. از آنجایی که آنالیز یا تحلیل تشخیص خطی فیشر، الهام گرفته از یکی دیگر از ابتکارات دیگر این دانشمند آمار یعنی «تحلیل واریانس» (Analysis of Variance) است، با خواندن مطلب تحلیل واریانس (Anova) — مفاهیم و کاربردها پیش‌نیازهای لازم برای این نوشتار را کسب خواهید کرد. همچنین در این نوشتار به مفاهیم احتمال پسین و پیشین برخورد خواهیم کرد. برای آشنایی بیشتر با این مفاهیم بهتر است مطلب احتمال پسین (Posterior Probability) و احتمال پیشین (Prior Probability) — به زبان ساده را از قبل مطالعه کرده باشید. همچنین خواندن متن تابع درستنمایی (Likelihood Function) و کاربردهای آن — به زبان ساده و بردار ویژه و مقدار وی..

توضیحات بیشتر »

یادگیری عمیق با PyTorch — راهنمای کاربردی

«یادگیری عمیق» (Deep Learning)، یکی از مباحث داغ در حوزه «یادگیری ماشین» (Machine Learning) محسوب می‌شود. با توجه به ویژگی‌هایی که «زبان برنامه‌نویسی پایتون» (Python Programming Language) ارائه می‌کند و کتابخانه‌های متعدد و قدرتمند نوشته شده برای آن، استفاده از این زبان در زمینه «یادگیری ماشین» (Machine Learning) و «داده‌کاوی» (Data Mining) روز به روز در حال افزایش است. «پای‌تورچ» (PyTorch)، یکی از «کتابخانه‌های» (Library) «هوش مصنوعی» (Artificial Intelligence) توسعه داده شده برای زبان پایتون است. این کتابخانه توسط «فیس‌بوک» (Facebook) ساخته شده و توسعه داده می‌شود. کد کتابخانه PyTorch در «گیت‌هاب» (GitHub) [+] موجود است و در حال حاضر بیش از 22 هزار ستاره دارد. این کتابخانه از سال 2۰1۷ تاکنون شاهد تغییرات زیادی بوده است و کاربران آن به تدریج در حال افزایش هستند. در این مطلب به پیاده‌سازی یادگیری عمیق با PyTorch پرداخته شده است. اما پیش از ورود به بحث اصلی، برای درک بهتر این چارچوب و چشم‌انداز آن، تصویر زیر که بر اساس داده‌های «گوگل ترندز» (Google Trends) برای جست‌و‌جوی پای‌تورچ (PyTorc..

توضیحات بیشتر »

الگوریتم های خط مبنا (Baseline) در پایتون — راهنمای کاربردی

در این مطلب، الگوریتم «پیش‌بینی تصادفی» (Random Prediction) و «قاعده صفر» (Zero Rule) که هر دو از جمله الگوریتم‌های «خط مبنا» (‌Baseline) هستند، مورد بررسی قرار گرفته‌اند. به منظور آشنایی هر چه بهتر مخاطبان با مفهوم خط مبنا (Baseline) در یادگیری ماشین، ابتدا این مبحث شرح داده می‌شود و سپس دو الگوریتم بیان شده با استفاده از زبان برنامه‌نویسی پایتون، پیاده‌سازی می‌شوند. خط مبنا (Baseline) در یادگیری ماشین خط مبنا «baseline»، به روش‌ها (و در واقع به نوعی سنجه‌هایی) گفته می‌شود که از «اکتشاف» (heuristic)، «آماره‌های ساده» (Simple Summary Statistics)، «تصادفی بودن» (Randomness) و یا «یادگیری ماشین» (Machine Learning) برای انجام پیش‌بینی در مجموعه داده استفاده می‌کنند. کاربر می‌تواند از این پیش‌بینی‌ها برای اندازه‌گیری کارایی مبنا (برای مثال صحت) استفاده کند. این سنجه‌ها به منظور مقایسه الگوریتم با دیگر روش‌های یادگیری ماشین مورد استفاده قرار می‌گیرند. در واقع، یک الگوریتم یادگیری ماشین در تلاش برای یادگیری تابعی است که روابط بین ورودی داده (ویژگی) و «متغیر هدف» (Target Variable) (یا برچسب)..

توضیحات بیشتر »

جست و جوی هیوریستیک (Heuristic Search) در پایتون — راهنمای کاربردی

«جست و جوی هیوریستیک» (Heuristic Search) که به آن «جست و جوی کاشف» یا «جست و جوی ابتکاری» نیر گفته می‌شود، یکی از انواع روش‌های مورد استفاده در علوم کامپیوتر، «هوش مصنوعی» (Artificial Intelligence) و بهینه‌سازی ریاضیاتی است که به حل سریع‌تر مسائل کمک می‌کند. در این مطلب، اصول جست و جوی هیوریستیک که بخش جدایی ناپذیری از هوش مصنوعی هستند مورد بررسی قرار می‌گیرد. در اینجا، به روش‌های گوناگون هیوریستیک، شامل «مسائل ارضای محدودیت» (Constraint Satisfaction Problems)، «تپه نوردی» (Hill Climbing) و «تبرید شبیه‌سازی شده» (Simulated Annealing) پرداخته می‌شود. همچنین، الگوریتم مسائل ارضای محدودیت (CSP) با استفاده از زبان پایتون پیاده‌سازی می‌شود. جست و جوی هیوریستیک چیست؟ جست و جوی ابتکاری، روشی است که در حل مسائل، نسبت به روش‌های کلاسیک سریع‌تر عمل می‌کند. جست و جوی کاشف یا ابتکاری، هنگامی که روش‌های کلاسیک در ارائه پاسخ مساله ناتوان هستند، یک راهکار تخمینی برای مساله می‌یابد. این روش، نوعی میانبر برای حل مسائل است، زیرا کاربران معمولا در تلاش برای ایجاد موازنه‌ای میان سرعت و «بهینگی» (Optimali..

توضیحات بیشتر »

یادگیری تقویتی در پایتون — راهنمای کاربردی

«یادگیری تقویتی» (Reinforcement Learning)، یک شاخه از «یادگیری ماشین» (Machine Learning) است که در آن یک عامل می‌آموزد چگونه با انجام «اعمال» (Actions)، ساخت شهودات و مشاهده نتایج در محیط رفتار کند. در این راهنما، چگونگی درک و طراحی یک مساله یادگیری تقویتی و حل آن با استفاده از «زبان برنامه‌نویسی پایتون» (Python Programming Language) تشریح شده است. اخیرا، بشر شاهد رقابت کردن ماشین‌ها با انسان‌ها در بازی‌های کامپیوتری به عنوان ربات در «بازی‌های چند نفره» (Multiplayer Games) و یا رقیب در بازی‌های «یک به یک» (one-on-one) مانند «دوتا2» (Dota2)، «پابجی» (PUB-G) و «ماریو» (Mario) بوده است. «دیپ‌مایند» (Deepmind) شرکت هوش مصنوعی است که هنگام انتشار خبر پیروزی برنامه AlphaGo که توسط آن‌ها طراحی شده در مقابل قهرمان کره جنوبی تبار بازی Go در سال 2۰1۶ تاریخ‌ساز شد. افرادی که به بازی‌های کامپیوتری علاقمند هستند، احتمالا درباره رقابت OpenAI Five در بازی دوتا2 شنیده‌اند که طی آن ماشین در مقابل انسان بازی کرد و موفق شد طی چندین بازی، بازیکنان برتر Dota2 را شکست دهد. بنابراین، سوال اساسی در این وهل..

توضیحات بیشتر »

درخت تصمیم و جنگل تصادفی در R — راهنمای کاربردی

«درخت تصمیم» (Decision tree) یک راهکار بسیار قدرتمند بصری برای تحلیل یک سری از خروجی‌های پیش‌بینی شده برای یک مدل مشخص است. همچنین، از این الگوریتم اغلب به عنوان مکمل (و یا حتی جایگزین) تحلیل «رگرسیون» (Regression) در تعیین اینکه چگونه یک سری از «متغیرهای توصیفی» (Explanatory Variables) یک متغیر وابسته را تحت تاثیر قرار می‌دهند استفاده می‌شود. در مثال بیان شده در این مطلب، تاثیر متغیرهای توصیفی «سن» (age)، «جنسیت» (gender)، «مایل» (miles)، «اعتبار» (debt) (منظور اعتبار کارت بانکی یا همان کارت اعتباری فرد است) و «درآمد» (income) بر «متغیر وابسته» (dependent variable) «قیمت خودرو» (car sales) با استفاده از درخت تصمیم و «جنگل تصادفی» (Random Forest) تحلیل خواهد شد. مجموعه داده مورد استفاده در این مطلب، از مسیر (+) قابل دانلود است. مساله دسته‌بندی و درخت تصمیم ابتدا، مجموعه داده بارگذاری و متغیر پاسخ ساخته می‌شود (که برای درخت تصمیم مورد استفاده قرار می‌گیرد زیرا نیاز به تبدیل فروش از متغیر عددی به طبقه‌ای وجود دارد): #Set Directory and define response variable setwd("C:/Users/michaeljgro..

توضیحات بیشتر »

درخت تصمیم با پایتون — راهنمای کاربردی

در این مطلب، چگونگی ساخت «درخت تصمیم» (Decision Trees) در «زبان برنامه‌نویسی پایتون» (Python Programming Language) آموزش داده شده است. یک درخت تصمیم، مدلی است که برای حل وظایف «دسته‌بندی» (Classification) و «رگرسیون» (Regression) مورد استفاده قرار می‌گیرد. مدل، امکان تولید خروجی‌های گوناگون را فراهم کرده و امکان انجام تصمیم‌گیری با داده‌ها را فراهم می‌کند. در مثال بیان شده در این مطلب، تاثیر «متغیرهای توصیفی» (explanatory variables) (از جمله سن، جنسیت، صفحات وب بازدید شده در روز، ساعت ویدئوهای بازدید شده در هفته و درآمد فرد) در استفاده از اینترنت (مصرف مگابایت در هفته) تحلیل خواهد شد. شایان توجه است که مجموعه داده مورد استفاده در این مطلب، از این مسیر (+) قابل دانلود است. گام 1: بارگذاری کتابخانه‌ها ابتدا، کتابخانه «نام‌پای» (Numpy) و train_test_split از کتابخانه «سایکیت‌لِرن» (Scikit-Learn) وارد (Import) می‌شود. با استفاده از کلاس فراخوانی شده از کتابخانه sklearn، مجموعه داده به داده‌های «آموزش» (Training) و «آزمون» (Test) شکسته می‌شود، و به موجب آن، مدل روی داده‌های آموزش ساخته و صح..

توضیحات بیشتر »

الگوریتم جنگل تصادفی (Random Forest) — راهنمای جامع و کاربردی

«جنگل تصادفی» (Random Forest)، یک الگوریتم یادگیری ماشین با قابلیت استفاده آسان است که اغلب اوقات نتایج بسیار خوبی را حتی بدون تنظیم فراپارامترهای آن، فراهم می‌کند. این الگوریتم به دلیل سادگی و قابلیت استفاده، هم برای «دسته‌بندی» (Classification) و هم «رگرسیون» (Regression)، یکی از پر کاربردترین الگوریتم‌های یادگیری ماشین محسوب می‌شود. در این مطلب، چگونگی عملکرد جنگل تصادفی و دیگر مباحث مهم پیرامون آن مورد بررسی قرار خواهند گرفت. درخت تصمیم، بلوک سازنده جنگل تصادفی برای درک چگونگی عملکرد جنگل تصادفی، ابتدا باید الگوریتم «درخت تصمیم» (Decision Tree) که بلوک سازنده جنگل تصادفی است را آموخت. انسان‌ها همه روزه از درخت تصمیم برای تصمیم‌گیری‌ها و انتخاب‌های خود استفاده می‌کنند، حتی اگر ندانند آنچه که از آن بهره می‌برند نوعی الگوریتم یادگیری ماشین است. برای شفاف کردن مفهوم الگوریتم درخت تصمیم، از یک مثال روزمره یعنی پیش‌بینی حداکثر درجه حرارت هوای شهر برای روز بعد (فردا) استفاده می‌شود. در اینجا فرض بر آن است که که شهر مورد نظر سیاتل در ایالت واشینگتن واقع شده (این مثال قابل تعمیم به شهرهای..

توضیحات بیشتر »

داده کاوی (Data Mining) — از صفر تا صد

در این مطلب به مباحث «داده کاوی» (Data Mining) از صفر تا صد پرداخته شده است. با پیشرفت سریع «فناوری اطلاعات» (Information Technology)، بشر شاهد یک رشد انفجاری در تولید «داده» (Data) و ظرفیت‌های گردآوری و ذخیره‌سازی آن در دامنه‌های گوناگون بوده است. در جهان کسب‌و‌کار، «پایگاه‌داده‌های» (Databases) بسیار بزرگی برای تراکنش‌های تجاری وجود دارند که توسط خرده‌فروشان و یا در «تجارت الکترونیک» (E-commerce) ساخته شده‌اند. از سوی دیگر، همه روزه حجم عظیمی از داده‌های علمی در زمینه‌های گوناگون تولید می‌شوند. از جمله داده‌های علمی می‌توان به پروژه «ژنوم انسان» (Human Genome) اشاره کرد که چندین گیگابایت داده را از کد ژنتیکی انسان تجمیع کرده است. «وب جهان گستر» (World Wide Web) مثال دیگری از منابع داده است که میلیاردها صفحه وب شامل اطلاعات متنی و چند رسانه‌ای را دربرمی‌گیرد. این صفحات توسط میلیون‌ها نفر بازدید می‌شوند. در چنین شرایطی، تحلیل بدنه بزرگ داده‌ها به شکل قابل درک و کاربردی، یک مساله چالش برانگیز است. «داده‌کاوی» (Data Mining) این مساله را با فراهم کردن روش‌ها و نرم‌افزارهایی برای خودکارس..

توضیحات بیشتر »