خانه / بایگانی برچسب: هوش مصنوعی

بایگانی برچسب: هوش مصنوعی

آشنایی با کتابخانه Jenetics در جاوا — راهنمای کاربردی

در این مقاله یک کتابخانه بسیار قدرتمند جاوا به نام Jenetics را توصیف می‌کنیم که برای حل کردن مسائل مختلف بهینه‌سازی مورد استفاده قرار می‌گیرد. اگر می‌خواهید با مبانی ابتدایی الگوریتم‌های ژنتیک در جاوا آشنا شوید، پیشنهاد می‌کنیم به مقاله زیر رجوع کنید: طراحی الگوریتم ژنتیک در جاوا — به زبان ساده 1. طرز کار کتابخانه Jenetics چگونه است؟ بر اساس مستندات رسمی (+) کتابخانه Jenetics بر مبنای الگوریتم‌های تکاملی نوشته شده در جاوا عمل می‌کند. الگوریتم‌های تکاملی ریشه در علم زیست‌شناسی دارند، چون سازوکارهای آن‌ها از موضوع تکامل یا فرگشت زیست‌شناختی مانند تولیدمثل، جهش، بازترکیب و انتخاب، الهام گرفته است. Jenetics با استفاده از رابط Stream جاوا پیاده‌سازی شده است و از این رو با بقیه بخش‌های API Stream جاوا به خوبی کار می‌کند. ویژگی‌های اصلی آن به صورت زیر هستند: کمینه‌سازی بی اصطکاک در «کمینه‌سازی بی اصطکاک» (frictionless minimization) نیازی به تغییر دادن یا دستکاری تابع‌های برازش وجود ندارد و می‌توان صرفاً به پیکربندی کلاس Engine پرداخت و بدین ترتیب آماده آغاز نخستین اپلیکیشن شد. بدون وابستگ..

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

ساخت سیستم توصیه گر در پایتون — به زبان ساده

در این مطلب، ابتدا مفهوم سیستم توصیه گر (Recommendation System) بیان می‌شود و سپس در یک راهنمای گام به گام، روش ساخت یک «سیستم پالایش» برای پیشنهاد فیلم به کاربران، مورد بررسی قرار می‌گیرد. سیستم‌های توصیه‌گر یکی از برجسته‌ترین مثال‌های یادگیری ماشین در زندگی انسان‌ها هستند. آن‌ها تعیین می‌کنند که چه مطالبی در «خوراک خبری» حساب کاربری فیس‌بوک افراد نمایش داده شوند، محصولات با چه ترتیبی در آمازون به نمایش دربیایند، چه ویدئوهایی در نتفلیکس به افراد پیشنهاد شوند و مثال‌های بیشمار دیگر. اما، سیستم‌های توصیه‌گر واقعا چه هستند و چگونه کار می‌کنند؟ در این مطلب، ضمن ارائه مفاهیم اولیه، روش ساخت یک سیستم توصیه‌گر فیلم به همراه کدهای پیاده‌سازی آن ارائه شده است. سیستم توصیه گر چیست؟ یک سیستم توصیه‌گر، یک مدل پالایش اطلاعات است که آیتم‌ها را برای کاربر، امتیازدهی یا رتبه‌دهی می‌کند. این سیستم‌ها غالبا از دو روش رتبه‌بندی استفاده می‌کنند که هر یک در ادامه بیان شده است. پالایش مبتنی بر محتوا (Content-Based Filtering): در روش رتبه‌بندی پالایش مبتنی بر محتوا، آیتم‌های توصیه شده بر مبنای مشابهت آیتم..

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

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

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

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

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

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

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

مهارت های مورد نیاز شرکت ها در سال ۱۳۹۸ — به همراه منابع یادگیری

بسیاری از افراد، با آغاز سال نو به دنبال تغییر زندگی فردی و حرفه‌ای خود هستند. از سوی دیگر، افراد حرفه‌ای اغلب علاقمند به یادگیری مهارت‌های جدید هستند. یادگیری دانش و مهارت‌های جدید، علاوه بر مزایای گوناگون، نقش قابل توجهی نیز در شاد بودن افراد دارد. یکی از بهترین زمان‌ها برای یادگیری مهارت‌های جدید، اولین ماه سال است. زیرا، افراد معمولا از آغاز سال نو شروع به ساخت عادت‌های جدید برای خود می‌کنند. انسان‌ها معمولا مهارت‌آموزی را نه صرفا با هدف دنبال کردن علاقمندی‌های شخصی که با هدف ارتقا سطح شغلی و درآمدی خود انجام می‌دهند. در این میان، یک چالش اساسی در راستای یادگیری مهارت‌های جدید وجود دارد و آن، انتخاب مهارت های مورد نیاز شرکت ها است. مطابق با آمارهای ارائه شده توسط «لینکدین» (LinkedIn)، دستکم ۵۰۰۰۰ مهارت در دنیا وجود دارد. حقیقتا شگفت‌آور است، ۵۰۰۰۰ مهارت! وجود این تعداد مهارت، انتخاب گزینه صحیح را شاید کمی دشوار کند. مهارت های مورد نیاز شرکت ها برای مشخص کردن اینکه یادگیری چه مهارت‌هایی در سال جدید مفیدتر خواهد بود، بررسی روی داده‌های لینکدین انجام شده است. مواردی که در ادامه بیان ..

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

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

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

تطبیق رشته فازی در پایتون — راهنمای کاربردی

در این مطلب، روش تطبیق رشته تقریبی و تشخیص رشته‌های مشابه با بهره‌گیری از مثال‌های گوناگون، آموزش داده خواهد شد. تمرکز این نوشته بر روش «تطبیق رشته فازی» (Fuzzy String Matching) در پایتون است. تطبیق رشته فازی در پایتون تاکنون، برای افراد زیادی پیش آمده که نیاز به مقایسه کردن رشته‌هایی پیدا می‌کنند که به چیز مشابهی ارجاع دارند، ولی به شیوه‌ای تقریبا متفاوت نوشته شده‌اند. این تفاوت، ممکن است ناشی از اشکال تایپی یا نگارشی باشد. مساله بیان شده، چالشی است که افراد ممکن است در شرایط گوناگون، از نرم‌افزارهای بررسی نگارش گرفته تا نگاشت «پایگاه‌داده‌ها» (Databases) که فاقد یک کلید مشترک هستند (مثلا در شرایطی که فرد سعی دارد دو جدول را بر اساس نام شرکت به یکدیگر متصل کند، اما به نظر می‌رسد این مورد در دو جدول متفاوت است)، با آن مواجه شوند. در این راهنما، یک بررسی موردی انجام می‌شود که طی آن، مساله موجود در پایگاه داده‌ای که در بالا بیان شد، مورد تحلیل قرار می‌گیرد. اگرچه، پیش از آغاز بررسی موردی، نحوه انجام تطبیق رشته فازی بیان می‌شود. به طور معمول، برای مقایسه دو رشته در پایتون، از کد زیر است..

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

انواع شبکه های عصبی و کاربردهای آن ها — پادکست پرسش و پاسخ

«شبکه‌های عصبی» (Neural Networks) از جمله الگوریتم‌های یادگیری ماشین محبوب محسوب می‌شوند که در مسائل گوناگون دارای کاربرد هستند. این دسته از الگوریتم‌ها، انواع گوناگونی دارند. پرسشی که برای اغلب افراد پیش می‌آید، این است که کدام الگوریتم شبکه عصبی برای حل یک مساله مشخص، مناسب‌تر است و آیا نیاز به آشنایی با همه الگوریتم‌های شبکه عصبی وجود دارد یا تسلط بر یک مورد کافی است. دکتر «سید مصطفی کلامی هریس»، در پادکستی که در ادامه آمده، به این پرسش به طور مشروح پاسخ داده و به موضوع انواع شبکه‌های عصبی و کاربردهای آن‌ها پرداخته است. نسخه متنی این پادکست نیز در همین مطلب قرار دارد. البته، منبع اصلی همچنان فایل صوتی محسوب می‌شود. پادکست پیرامون انواع شبکه‌ های عصبی و کاربردهای آن‌ ها ذخیره کردن این فایل صوتی: لینک دانلود نسخه نوشتاری یکی از دوستان در مورد کاربرد انواع «شبکه‌های عصبی» (Neural Networks) سوال کردند و پرسیده‌اند «شبکه عصبی MLP» (سرنام Multilayer Perceptron) برای چه نوع کاربردهایی می‌تواند مورد استفاده قرار بگیرد و آیا اساسا می‌توانیم فقط با MLP نیازهایمان را برآورده کنیم و از دیگر ا..

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

آموزش پردازش زبان طبیعی پروژه محور — راهنمای کاربردی

«پردازش زبان طبیعی» (Natural Language Processing) از جمله مباحثی محسوب می‌شود که این روزها توجهات زیادی را به خود جلب کرده است. یکی از دلایل اصلی این امر، کاربردهای زیاد و متنوعی است که پردازش زبان طبیعی دارد. در آموزش مباحثی مانند «داده‌کاوی» (Data Mining)، پردازش زبان طبیعی و برنامه‌نویسی، استفاده از پروژه‌های عملی، به افزایش ضریب یادگیری کمک شایان توجهی می‌کند. به همین دلیل، در این مطلب با بهره‌گیری از یک پروژه جذاب و کاربردی، آموزش پردازش زبان طبیعی ارائه شده است. آموزش پردازش زبان طبیعی با یک پروژه ساخت رزومه، نیازمند دقت و هوشمندی کافی است. برخی از چالش‌ها و پرسش‌هایی که افراد ضمن ساختن رزومه خود با آن‌ها مواجه می‌شود عبارتند از: آیا پیرامون پروژه‌هایی که پیش از این انجام داده‌ام به صورت تفضیلی اطلاعات ارائه کنم و یا به صورت مختصر و تیتروار به آن‌ها اشاره داشته باشم؟ مهارت‌های متعددی را در رزومه بنویسم و یا صرفا مهارت‌های کلیدی خودم را بیان کنم؟ آیا از زبان‌های برنامه‌نویسی متعدد در رزومه خود نام ببرم و یا فقط به چند مورد اشاره کنم؟ رزومه را در یک صفحه تنظیم کنم و یا تعداد بیشت..

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