خانه / بایگانی برچسب: یادگیری ماشین

بایگانی برچسب: یادگیری ماشین

حملات تخاصمی (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) و کاربردهای آن — به زبان ساده و بردار ویژه و مقدار وی..

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

حمله تخاصمی (Adversarial Attack) با مدل FGSM در پایتون — راهنمای کاربردی

بسیاری از افرادی که در حوزه «یادگیری ماشین» (Machine Learning | ML) فعالیت و پژوهش می‌کنند به خوبی آگاه هستند که برخی از مدل‌های یادگیری ماشین چقدر عملکرد تاثیرگذاری دارند. پژوهش‌هایی که در این حوزه انجام می‌شود موجب شده تا مدل‌ها سریع‌تر، صحیح‌تر و موثرتر از قبل بشوند. اگرچه، جنبه‌ای از طراحی و آموزش مدل که اغلب نادیده گرفته می‌شود امنیت و استحکام مدل است. این موضوع به طور خاص هنگامی اهمیت پیدا می‌کند که یک متخاصم سعی در گول زدن مدل داشته باشد. این مساله ممکن است بسیاری از افراد را حیرت زده کند که اضافه کردن برخی اختلالات (آشفتگی‌های) نامحسوس در تصاویر، می‌تواند کارایی مدل را به شدت متفاوت کند. با در نظر گرفتن این موضوع، در این راهنما مثالی پیرامون یک دسته‌بند متنی ارائه خواهد شد. در این مطلب، به طور خاص از یکی از اولین و متداول‌ترین نوع حملات با عنوان «حمله علامت گرادیان سریع» (Fast Gradient Sign Attack | FCSA) برای گول زدن یک «دسته‌بند» (Classifier) از نوع MNIST استفاده خواهد شد. با مطالعه این راهنما و کسب شناخت از حمله تخاصمی (Adversarial Attack) با مدل FGSM در پایتون، آگاهی مخاطبا..

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

یادگیری عمیق با 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..

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

پنج ترفند پایتون که باید حتماً بدانید — به زبان ساده

شما چه یک مهندس هوش مصنوعی ارشد و چه یک دانشجوی سال اول زیست‌شناسی باشید، به هر حال در مقطعی با زبان برنامه‌نویسی پایتون مواجه خواهید شد. پایتون نخستین بار در سال 1991 انتشار یافت و به زبان محبوبی تبدیل یافت که از سوی برنامه‌نویس‌ها و اهالی فناوری مورد استفاده قرار می‌گیرد. بر اساس میزان نمایش سؤال‌های وب‌سایت Stack Overflow، پایتون به سرعت در حال تبدیل به محبوب‌ترین زبان برنامه‌نویس‌ها است. رشد شگفت‌انگیز پایتون پایتون یک زبان سطح بالا و تفسیری با ساختار نسبتاً ساده است و حتی برای افرادی که هیچ تجربه قبلی برنامه‌نویسی ندارند نیز عالی است. کتابخانه‌های محبوب پایتون کاملاً با آن یکپارچه شده‌اند و در رشته‌های مختلفی مانند بیوانفورماتیک (biopython)، علم داده (pandas)، یادگیری ماشین (keras/ tensorflow) و حتی نجوم (astropy) مورد استفاده قرار می‌گیرند. افرادی که زبان‌های جاوا و C را آموخته باشند، احتمالاً می‌توانند پایتون را به صورت خودآموز یاد بگیرند. با این که پایتون بسیار کندتر از جاوا و دیگر زبان‌ها اجرا می‌شود؛ اما در عمل با داشتن امکانات یکپارچه‌ای که به خوبی توسعه یافته‌اند، موجب بهب..

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

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

«یادگیری تقویتی» (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) شکسته می‌شود، و به موجب آن، مدل روی داده‌های آموزش ساخته و صح..

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