وبگاه شخصی حمیدرضا حسین خانی

در این وبگاه تجربیات شخصی حمیدرضا حسین‌خانی در رابطه با هوش مصنوعی و روباتیک، علم داده، مهندسی نرم‌افزار و علوم کامپیوتر قرار میگیرد

وبگاه شخصی حمیدرضا حسین خانی

در این وبگاه تجربیات شخصی حمیدرضا حسین‌خانی در رابطه با هوش مصنوعی و روباتیک، علم داده، مهندسی نرم‌افزار و علوم کامپیوتر قرار میگیرد

وبگاه شخصی حمیدرضا حسین خانی

حمیدرضا حسین‌خانی، دانش آموخته مهندسی نرم‌افزار از دانشگاه آزاد واحد تهران مرکزی و کارشناسی ارشد هوش مصنوعی و رباتیک از دانشگاه آزاد واحد علوم و تحقیقات است.
او از سال ۹۲ به عنوان مهندس نرم‌افزار وارد صنعت شد و همکاری با استارتاپ‌های خوش‌نام و در حال رشدی مثل ایران‌اپس، دیجی‌کالا، دیجی استایل، اسنپ و بامیلو، در سمت‌های مختلف مهندسی، مدیریت و مشاوره را در کارنامه‌ی خود دارد.
وی بیش از ۱۰ سال از سوابق حرفه‌ای خود را مشغول تدریس در کارگاه‌های مختلف برنامه‌نویسی، رباتیک و هوش مصنوعی در مدارس، پژوهش‌سرا‌ها، دانشگاه‌ها و همین‌طور آموزشگاه‌هایی چون لایتک دانشگاه صنعتی شریف، هواپیمایی هما و شبکه ملی مدارس ایران (رشد) بوده و همین‌طور منتور تعداد زیادی از تیم‌های شرکت‌کننده در مسابقات مختلف برنامه‌نویسی، رباتیک و روبوکاپ و همچنین داور و برگزار‌کننده اولین دوره‌ی مسابقات دانش‌آموزی برنامه‌نویسی موبایل در دانشگاه صنعتی شریف (Nadcup 2016) است.

او در حال حاضر استاد درس کارگاه کامپیوتر در دانشگاه صنعتی شریف و از نمایندگان بنیاد جهانی School of AI در ایران است که در زمینه ترویج و آموزش هوش مصنوعی به دانشجویان و استارتاپ‌ها فعالیت می‌کند.

آخرین نظرات

۴ مطلب با کلمه‌ی کلیدی «یادگیری ماشین» ثبت شده است

۱۰آذر

تا به حال شده رییستان از شما بخواهد میزان فروش این ماه (و البته ماه های قبل) شرکت را برایش آماده کرده و شرح دهید؟!

در این صورت شما دو راه دارید، یا یک جدولِ بزرگِ پر از اعداد، شامل درآمد در ماه های مختلف را تقدیم حضور رییستان کنید، که نه به درد ایشان می‌خورد و نه به درد شما، و یا اینکه، پس از بررسی دقیق آن جدول، مفهومی که قرار است از طریق آن جدول منتقل شود را در قالب چند شکل و نمودارِ ساده اما جذاب، به ایشان ارایه دهید.

حتما شنیده اید که:

گاهی یک تصویر، گویا تر از هزاران واژه است.

واقعا هم همینطور است، ساختار ذهنی انسان طوری شکل گرفته که یک تصویر ساده را بسیار سریع تر و راحت تر از هر چیز دیگری درک می‌کند.

یک مدیر ارشد اجرایی (CEO) وظایف سنگینی دارد که زمانی را برای سر و کله زدن با داده ها و جدول های عددی و یافتن مفهوم درون آن ها باقی نمیگذارند. بنابراین، این شخص برای انجام وظایف خود و گرفتن تصمیم های سازمانی درست، نیاز به درک سریع و دقیقِ مفهومِ نهفته در این جدول های عددی دارد. از همین رو امروزه مدیران شرکت های بزرگ، از دانشمندان داده‌ها (Data Scientist ها) و مهندسان هوشمندی در کسب و کار (BI Engineer ها) برای تحلیل داده ها، به تصویر کشیدنِ آنها و تصمیم گیری بر اساس داده ها (Data-driven strategy) بهره می‌برند.

یک Data Scientist داده های خامِ سازمان را پس از پالایش و تمیز کردن، تحلیل کرده و به نمودار های آماری قابل فهم تبدیل می‌کند.
یک Data Scientist داده های خامِ سازمان را پس از پالایش و تمیز کردن، تحلیل کرده و به نمودار های آماری قابل فهم تبدیل می‌کند.

به تصویر کشیدن داده ها (Data Visualization) یکی از اصلی ترین و مهم ترین موضوعات در Data Science است که با نمودار های آماری، گراف ها، پلات ها و اشکال سر و کار دارد. با این وجود، هدف از این پُست، مطالعه ی کاملِ متد های Data Visualization نیست بلکه آشنایی با مهم‌ترین نمودار‌های آماریِ مورد استفاده در Data Science است. ازین رو مطالعه این پست را به تمامی دانشجویان، پژوهشگران، مهندسان، اهالی کسب و کار و مدیران (فارغ از رشته تحصیلی و کاری) پیشنهاد می‌‌دهیم.


در اینجا فرض می‌شود که شما یک مجموعه داده‌ها (Dataset) شامل چندین سطر (Observation یا Experience یا Data Point) و چندین ستون (Feature یا Variable یا Attribute) دارید و می‌خواهید با رسم نمودار های آماری مرتبط (که در زیر معرفی خواهند شد)، به یک بینش در رابطه با مجموعه داده‌ها دست پیدا کنید.

۱. نمودار Histogram

از این نمودار برای بررسی و مطالعه ی توزیعِ آماریِ یک متغیر عددی (Numerical Variable) استفاده می‌شود. معمولا اولین کاری که در مواجهه با یک Dataset می‌کنیم، بررسی توزیع آماریِ تک‌تکِ متغیر ها (Feature ها) ی آن است. درکِ توزیعِ آماریِ متغیر ها به ما کمک می‌کند تا اشتباهات موجود در داده ها (مانند نویز ها و خطا های اندازه گیری) را کشف کنیم. برای رسم نمودار Histogram، بازه (Range) مقادیرِ مشاهده شده برای متغیر را به تعدادی فاصله ی هم اندازه (bin) تقسیم کرده و فراوانی (تعداد) مشاهدات در هر فاصله را به صورتِ ارتفاعِ یک میله نمایش می‌دهیم.

۶ توزیعِ آماری مرسوم در تحلیل متغیر ها
۶ توزیعِ آماری مرسوم در تحلیل متغیر ها

ممکن است هیستوگرامِ مربوط به چند متغیر، برای مقایسه، در یک نمودار و با رنگ های مختلف نشان داده شوند، اما معمولا برای مطالعه ی همزمانِ توزیعِ آماریِ چند متغیر، از نمودار های دیگر (مثل نمودار Boxplot، نمودار Violin Plot و یا نمودار Ridgeline Plot) استفاده می‌شود.

برای کسب اطلاعات بیشتر در رابطه با Histogram اینجا کلیک کنید.
برای آشنایی با روشِ رسم Histogram در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۲. نمودار Density Plot

این نمودار در واقع شکل صیقل داده شده ی نمودار Histogram است و تابعی به نام Probability Density Function را برای یک متغیرِ عددی به تصویر می‌کشد.

۶ توزیعِ آماری مرسوم در تحلیل متغیر ها
۶ توزیعِ آماری مرسوم در تحلیل متغیر ها

برای کسب اطلاعات بیشتر در رابطه با Density Plot اینجا کلیک کنید.
برای آشنایی با روشِ رسم Density Plot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۳. نمودار های 2D Histogram و 2D Density Plot

این دو نمودار برای مطالعه ی توزیعِ آماریِ دو متغیرِ کمّی (عددی) در ترکیب با هم، استفاده می‌شوند. برای رسم نمودار 2D Histogram، یکی از متغیر ها را روی محور X و دیگری را روی محور Y در نظر گرفته و با استفاده از bin ها صفحه مختصات دوبعدی را به یک جدول (Grid) تبدیل می‌کنیم. سپس تعداد مشاهدات در هر قسمت از Grid را توسط طیف رنگ ها نمایش می‌دهیم (مثلا برای مقادیر کم از بنفش و برای مقادیر زیاد از قرمز استفاده می‌کنیم)

نمودار 2D Histogram
نمودار 2D Histogram

نمودار 2D Density Plot هم صیقل داده شده ی 2D Histogram است.

نمودار 2D Density Plot شامل خطوط کانتور
نمودار 2D Density Plot شامل خطوط کانتور

این دو نمودار، زمانی که تعداد مشاهدات زیاد است کارایی دارند و برای تعداد مشاهدات کم، نمودار های دیگر (مثل Scatter Plot) اطلاعات دقیق تری را منتقل می‌کنند.

برای کسب اطلاعات بیشتر در رابطه با 2D Histogram و 2D Density Plot اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ 2D Histogram و 2D Density Plot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۴. نمودار Ridgeline Plot یا Joyplot

این نمودار شامل چند Histogram یا 2D Density Plot با مقیاس یکسان است که معمولا برای مقایسه ی توزیعِ آماریِ یک متغیرِ عددی برای چندین گروهِ مختلف استفاده می‌شود. Ridgeline Plot معمولاً وقتی کارایی خود را نشان می‌دهد که الگوی مشخصی بین مقادیرِ گروه ها وجود داشته باشد. به عنوان مثال در شکل میبینید که این مقادیر از پایین به بالا زیاد شده اند و نمودار ها روی هم نیفتاده اند.

نمودار Ridgeline Plot با استفاده از Histogram
نمودار Ridgeline Plot با استفاده از Histogram

نمودار Ridgeline Plot با استفاده از Density Plot
نمودار Ridgeline Plot با استفاده از Density Plot


در این نوع نمودار، ترتیب درست گروه ها، تاثیر بسزایی در خوانایی نمودار دارد.

برای کسب اطلاعات بیشتر در رابطه با Ridgeline Plot اینجا کلیک کنید.
برای آشنایی با روشِ رسم Ridgeline Plot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۵. نمودار Box Plot

این نمودار، خلاصه ای از اطلاعاتِ آماریِ مربوط یک متغیر کمّی، برای چندین گروه مختلف را به تصویر می‌کشد. به عبارت دیگر، خطی که box ها را به دو نیم تقسیم می‌کند، نشان دهنده ی میانه (Median) داده های مشاهده شده برای متغیر، و ابتدا و انتهای box ها نشان دهنده ی چارک اول (Lower Quartile) و چارک سوم (Upper Quartile) آنها اند. خطوط انتهایی نیز نمایانگر کوچکترین و بزرگترین داده ی مشاهده شده (صرف نظر از داده های پَرت یا Outlier ها) اند. Outlier ها (به عنوان نمونه، نویز ها یا داده های ناشی از خطای اندازه گیری) نیز با نقطه در نمودار زیر نشان داده شده اند.

نمودار Box Plot برای متغیر sepal_length در دیتاست IRIS
نمودار Box Plot برای متغیر sepal_length در دیتاست IRIS


گاهی می‌خواهیم توزیع آماری داده های مشاهده شده را نیز در Box Plot نمایش دهیم. اگر تعداد مشاهدات کم است، می‌توانیم آن مشاهدات را با نقطه روی نمودار نشان دهیم تا نحوه توزیع آنها مشخص شود. اما اگر تعداد مشاهدات زیاد است، این روش کارایی ندارد و به جای آن از نمودار های دیگر (مثل Violin Plot) استفاده می‌شود.

نمایش مشاهدات در نمودار Box Plot جهت بررسی توزیع آماری داده ها
نمایش مشاهدات در نمودار Box Plot جهت بررسی توزیع آماری داده ها

برای کسب اطلاعات بیشتر در رابطه با Box Plot اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Box Plot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۶. نمودار Violin Plot

این نمودار زمانی استفاده می‌شود که می‌خواهیم توزیع آماری تعداد زیادی داده را در Box Plot داشته باشیم، اما نمایش همه داده ها روی نمودار از خوانایی آن می‌کاهد. Violin Plot با ترکیب نمودار های Box Plot و Ridgeline Plot این کار را به راحتی انجام می‌دهد.

نمودار Violin Plot از نمایش تابع چگالی احتمال کنار Box Plot تشکیل می‌شود.
نمودار Violin Plot از نمایش تابع چگالی احتمال کنار Box Plot تشکیل می‌شود.

برای کسب اطلاعات بیشتر در رابطه با Violin Plot اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Violin Plot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۷. نمودار Scatter Plot

از این نمودار برای نمایشِ رابطه و همبستگیِ میانِ دو متغیرِ کمّی استفاده می‌شود. متغیر ها را توسط محور های مختصات دکارتی به تصویر کشیده و به ازای هر داده ی مشاهده شده در Datset یک نقطه از فضای مختصات را با دایره پُر می‌کنیم. اگر بین متغیر ها، رابطه و همبستگی وجود داشته باشد، در نمودار Scatter Plot، قابل تشخیص است. به عنوان مثال،‌ نمودار بالا سمت راست در تصویر زیر، نشان دهنده ی یک رابطه خطی بین دو متغیر است چون به نظر می‌رسد نقاط، روی یک خط پراکنده شده اند. رابطه خطی به این معنی است که اگر مقدار یکی از متغیر ها n برابر شود، مقدار متغیر دیگر نیز n برابر می‌شود. یا نمودار پایین سمت راست، معرف یک رابطه سینوسی بین دو متغیر است.

تعدادی از الگو های قابل تشخیص توسط Scatter Plot
تعدادی از الگو های قابل تشخیص توسط Scatter Plot

بسیاری از اوقات در حل مسایل Data Science، بررسی همه متغیر ها (Feature ها) امکان پذیر نیست و مایلیم متغیر های مهم تر را انتخاب و بررسی کنیم. یافتن همبستگی بین متغیر ها به ما کمک می‌کند متغیر هایی که قابل پیش بینی از روی سایر متغیر ها هستند را برای سادگی بیشتر حذف کنیم. به این کار اصطلاحا Feature Selection گفته می شود.

همبستگی بین دو متغیر در Scatter Plot را می‌توان توسط یک منحنی فیت شده روی مشاهدات به نام Trend Curve نشان داد.

یافتن بهترین منحنی قابل فیت شدن روی مشاهدات، Regression Analysis نام دارد.
یافتن بهترین منحنی قابل فیت شدن روی مشاهدات، Regression Analysis نام دارد.


وقتی تعداد مشاهدات زیاد نیست، نحوه ی توزیعِ آماری داده ها در Scatter Plot مشخص است. اما زمانی که تعداد مشاهدات زیاد باشد، پدیده ی Overplotting روی نمودار رخ داده و خوانایی آن را از بین می‌برد. در این صورت برای مشخص شدن توزیع آماری، یا از نقطه های Transparent در Scatter Plot استفاده می‌کنیم یا از نمودار 2D Density Plot.

استفاده از نقاط Transparent برای مشخص تر شدن توزیع آماری
استفاده از نقاط Transparent برای مشخص تر شدن توزیع آماری

استفاده از 2D Density Plot به جای Overplot کردن روی Scatter Plot
استفاده از 2D Density Plot به جای Overplot کردن روی Scatter Plot

ضمناً گاهی برای مشخص نمودن توزیع آماریِ مشاهدات، از Histogram یا Density Plot در حاشیه ی Scatter Plot استفاده می‌شود.

استفاده از Histogram در حاشیه ی Scatter Plot
استفاده از Histogram در حاشیه ی Scatter Plot

گاهی برای دسته بندی مشاهدات در Scatter Plot (افزودن یک متغیر غیر عددی یا Categorical به نام دسته) از رنگ های مختلف برای نمایش نقاط استفاده می‌شود. در این صورت حتما باید از یک راهنما (Legend) در نمودار استفاده کرد.

در این نمودار از سه رنگ برای دسته بندی مشاهدات استفاده شده است.
در این نمودار از سه رنگ برای دسته بندی مشاهدات استفاده شده است.

اگر بخواهیم یک متغیر عددی (غیر Categorical) را به عنوان متغیر سوم به Scatter Plot اضافه کنیم، به جای رنگ می‌توان سایز نقطه ها را تغییر داد (نمودار Bubble Plot).

برای کسب اطلاعات بیشتر در رابطه با Scatter Plot اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Scatter Plot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۸. نمودار Bubble Plot

این نمودار، در واقع همان Scatter Plot است که یک متغیر عددی سوم توسط اندازه دایره ها (حباب ها) در آن نشان داده شده است.

ازبین سه متغیر عددی، متغیری که اهمیت کمتری دارد (در اینجا جمعیت کشور ها) توسط اندازه حباب و دو متغیر مهم تر (در اینجا میزان درآمد ناخالص و میزان امید به زندگی) توسط محور های مختصات نشان داده می‌شوند.
ازبین سه متغیر عددی، متغیری که اهمیت کمتری دارد (در اینجا جمعیت کشور ها) توسط اندازه حباب و دو متغیر مهم تر (در اینجا میزان درآمد ناخالص و میزان امید به زندگی) توسط محور های مختصات نشان داده می‌شوند.

برای کسب اطلاعات بیشتر در رابطه با Bubble Plot اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Bubble Plot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۹. نمودار Correlogram

وقتی با یک Dataset شامل چند متغیر عددی روبه‌رو می‌شویم، مطالعه ی توزیع آماری تک تک متغیر ها با استفاده از Density Plot و همینطور مطالعه ی همبستگی بین هر دو متغیر عددی با استفاده از Scatter Plot اولین کاری است که انجام می‌دهیم. نمودار Correlogram یا Correlation Matrix خلاصه ی نتایج این فعالیت ها را در قالب یک نمودار نمایش می‌دهد.

این نمودار، به شکل یک ماتریس است که متغیر ها در سطر و ستون آن تکرار شده اند. قطر اصلی این ماتریس شامل Histogram و یا Density Plot هایی برای بررسی توزیع آماری متغیر ها و سایر درایه های آن شامل Scatter Plot هایی برای بررسی رابطه بین متغیر ها هستند.

در این Correlogram رابطه خطی بین petal_lenght و petal_width به وضوح مشاهده می‌شود.
در این Correlogram رابطه خطی بین petal_lenght و petal_width به وضوح مشاهده می‌شود.

در صورت وجود متغیر Categorical می‌توان از رنگ ها به این شکل استفاده کرد.
در صورت وجود متغیر Categorical می‌توان از رنگ ها به این شکل استفاده کرد.

برای کسب اطلاعات بیشتر در رابطه با Correlogram اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Correlogram در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۱۰. نمودار Connected Scatterplot

برای نمایش رَوَندِ تکاملِ یک متغیرِ کمّی و یا برای نمایش Trend در دیتا طی بازه های زمانی مختلف (سریِ زمانی یا Time Series) مانند نوسانات قیمت ‌Bitcoin در یک بازه زمانی و یا دنباله ی سیگنال های الکتریکی اندازه گیری شده در یک دستگاه، می‌توان از نمودار Connected Scatterplot استفاده کرد. در این نمودار، دنباله مشاهدات به صورت نقاطی که با خط صاف به هم متصل شده اند نمایش داده می شود.

نوسانات قیمت Bitcoin در ماه آپریل سال ۲۰۱۸ (۱۰ روز)
نوسانات قیمت Bitcoin در ماه آپریل سال ۲۰۱۸ (۱۰ روز)

اگر تعداد مشاهدات زیاد باشد (مثلا مطالعه قیمت Bitcoin طی ۵ سال متوالی)، دایره ها باعث ناخوانا شدن نمودار می‌شوند. بنابراین در چنین شرایطی، با حذف دایره ها نموداری به نام Line Chart رسم می‌کنیم.

برای کسب اطلاعات بیشتر در رابطه با Connected Scatterplot اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Connected Scatterplot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۱۱. نمودار Line Chart

با حذف دایره ها از Connected Scatterplot نموداری متشکل از فقط خطوط متصل کننده نقاط به نام Line Chart پدید می‌آید که برای نمایش نوسانات طولانی مدت (مشاهدات زیاد)، خوانا تر است.

اگر تعداد مشاهدات، محدود است، Connected Scatterplot اطلاعات بیشتری را منتقل می‌کند.

نوسانات قیمت Bitcoin از آپریل ۲۰۱۳ تا آپریل ۲۰۱۸ (۵ سال)
نوسانات قیمت Bitcoin از آپریل ۲۰۱۳ تا آپریل ۲۰۱۸ (۵ سال)

از Line Chart می‌توان برای نمایش نوسانات و تکامل چندین متغیر عددی به طور همزمان استفاده کرد. با این حال باید توجه شود که اگر تعداد متغیر های مورد بررسی زیاد باشد، این نمودار خوانایی خود را از دست داده و به چیزی به نام Spaghetti Chart تبدیل می‌شود.

نمایش تعداد زیادی متغیر در یک Line Chart نمودار را به یک Spaghetti Chart تبدیل می‌کند.
نمایش تعداد زیادی متغیر در یک Line Chart نمودار را به یک Spaghetti Chart تبدیل می‌کند.

معمولا هدف از نمایش همزمان چند متغیر در یک Line Chart مقایسه یکی از آنها با بقیه است. در چنین حالتی می‌توانید با برجسته کردن نمودار آن متغیر و کمرنگ کردن بقیه از تبدیل شدن نمودار به Spaghetti Chart جلوگیری کنید.

برجسته کردن خطوط مربوط به یک متغیر و کمرنگ کردن بقیه خطوط راه حلی برای مقابله با spaghetti Chart است.
برجسته کردن خطوط مربوط به یک متغیر و کمرنگ کردن بقیه خطوط راه حلی برای مقابله با spaghetti Chart است.

نکته دیگری که در رابطه با Line Chart مهم است، این است که نیازی نیست محور Y در این نمودار حتما از صفر شروع شود. گاهی نمایش آن از جایی بالاتر از صفر (زوم کردن روی نمودار)، الگوی تغییرات را بسیار بهتر نشان می‌دهد.

شروع محور Y از صفر در مقایسه با بریدن آن
شروع محور Y از صفر در مقایسه با بریدن آن

برای کسب اطلاعات بیشتر در رابطه با Line Chart اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Line Chart در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۱۲. نمودار Area Chart

گاهی با رنگ زدنِ فضای زیرِ منحنیِ Line Chart و بررسیِ حجمِ رنگ‌آمیزی شده در طول زمان، نوسانات و الگوی تکاملیِ متغیر، واضح تر می‌شود. معمولا از همان رنگِ استفاده شده برای منحنی با کمی Transparency برای رنگ زدن زیر منحنی استفاده می‌شود.

تکامل قیمت Bitcoin از آپریل ۲۰۱۳ تا آپریل ۲۰۱۸
تکامل قیمت Bitcoin از آپریل ۲۰۱۳ تا آپریل ۲۰۱۸

برای بررسی نوسانات چند متغیر به طور همزمان در یک Area Chart، مانند Line Chart عمل نمی‌کنیم. بلکه از نمودار های دیگر مثل Stacked Area Plot استفاده می‌شود.

برای کسب اطلاعات بیشتر در رابطه با Area Chart اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Area Chart در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۱۳. نمودار Stacked Area Plot

برای نمایشِ روندِ تکاملِ چند متغیرِ عددی و یا نمایشِ روندِ تکاملِ یک متغیرِ عددی برای چندین گروه مختلف و مقایسه اهمیتِ نسبیِ آنها در یک نمودار، از Stacked Area Plot استفاده می‌شود. در این نمودار مقدار هر متغیر (یا گروه) در هر زمان، بر بالای منحنیِ مربوط به متغیرِ (گروه) قبلی، به صورت تجمعی رسم می‌شود. بنابراین بالاترین منحنی، معادلِ نمودار Area Plot برای مجموع همه متغیر ها (گروه ها) است.

نمودار Stacked Area Plot و بررسی الگوی تکاملِ یک متغیر برای قاره های مختلف. بالاترین منحنی، نشان دهنده الگوی تکاملِ متغیر برای کل جهان است. همانطور که در شکل مشخص است، در اواخر نمودار، سهم اروپا از متغیر مربوطه چشمگیر تر از بقیه قاره ها بوده است.
نمودار Stacked Area Plot و بررسی الگوی تکاملِ یک متغیر برای قاره های مختلف. بالاترین منحنی، نشان دهنده الگوی تکاملِ متغیر برای کل جهان است. همانطور که در شکل مشخص است، در اواخر نمودار، سهم اروپا از متغیر مربوطه چشمگیر تر از بقیه قاره ها بوده است.

برای کسب اطلاعات بیشتر در رابطه با Stacked Area Plot اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Stacked Area Plot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۱۴. نمودار Stream Graph

گاهی تنها چیزی که از یک Stacked Area Plot می‌خواهیم، نمایشِ نسبیِ سهمِ هر گروه (هر متغیر) از کل گروه ها طی یک بازه زمانی است. در چنین شرایطی می‌توان از یک نوع خاص از Stacked Area Plot به نام Stream Graph استفاده کرد. در Stream Graph تیزی لبه ها گرفته شده و منحنی ها حول یک محور افقی رسم می‌شوند.

واضح است که چنین نموداری فقط منتقل کننده ی نسبتِ سهمِ هر گروه از کل است و برای بررسی الگوی تکاملی یک گروه خاص مناسب نیست.

نمودار Stream Graph
نمودار Stream Graph

برای کسب اطلاعات بیشتر در رابطه با Stream Graph اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Stream Graph در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۱۵. نمودار Barplot

این نمودار برای نمایش رابطه ی بین یک متغیر دسته ای (Categorical) و یک متغیر عددی (Numerical) بکار می‌رود. طول Bar ها نشان دهنده اندازه متغیر عددی به ازای هر متغیر دسته ای است. توجه کنید که این نمودار را با Histogram اشتباه نگیرید. در Histogram همیشه یک متغیر عددی داریم که می‌خواهیم توزیع آماری آن را نمایش دهیم اما در Barplot یک متغیر دسته ای و یک متغیر عددی داریم و می‌خواهیم رابطه بین آنها را به تصویر بکشیم. اگر ترتیب مقادیر متغیر دسته ای اهمیتی ندارد، بهتر است آنها را به ترتیب مقدار عددی مرتب کنید تا نمودار خواناتری داشته باشید. زیرا در این صورت نمودار Barplot نه تنها نمایشگر مقدار عددی هر دسته است، بلکه ترتیب و رتبه ی هر دسته را نیز نشان می‌دهد.

نمودار Barplot که ترتیب مقادیر متغیر دسته ای در آن مهم بوده (مثلا ماه های سال) و به همین دلیل بر اساس مقدار عددی مرتب نشده
نمودار Barplot که ترتیب مقادیر متغیر دسته ای در آن مهم بوده (مثلا ماه های سال) و به همین دلیل بر اساس مقدار عددی مرتب نشده

اگر دو متغیر دسته ای موجود باشند می‌توان از انواع زیر استفاده کرد:
- نمودار Grouped Barplot: مقادیر مربوط به متغیر دسته ای دوم کنار هم قرار میگیرند.
- نمودار Stacked Barplot: مقادیر مربوط به متغیر دسته ای دوم به صورت تجمعی روی هم قرار میگیرند.
- نمودار Percent-stacked Barplot: مقادیر مربوط به متغیر دسته ای دوم به صورت نسبی (درصدی) روی هم قرار میگیرند. به این معنی که مجموع آنها باید ۱۰۰ شود.

برای کسب اطلاعات بیشتر در رابطه با Barplot اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Barplot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۱۶. نمودار Lollipop Plot

همانطور که در شکل زیر مشخص است،‌ زمانی که طول تعدادی از Bar های کنار هم در Barplot هم اندازه است، شکل ناهنجاری شبیه به کرکره ایجاد می‌شود. در این حالت، برای زیبایی بیشتر می‌توان از Lollipop Plot استفاده کرد.

استفاده از Lollipop Plot به جای Barplot
استفاده از Lollipop Plot به جای Barplot

برای کسب اطلاعات بیشتر در رابطه با Lollipop Plot اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Lollipop Plot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۱۷. نمودار Pie Plot

برای نمایش دادنِ سهم مقادیر یک متغیر دسته ای از کل مقادیر، می‌توان از Pie Plot استفاده کرد. در این نمودار به ازای هر متغیر دسته ای، یک برش از دایره در نظر گرفته می‌شود که زاویه ی آن بر اساس درصد سهم آن گروه از کل گروه ها تعیین می‌شود.

از آنجا که ذهن انسان در تشخیص و مقایسه سریع مفهوم زاویه خیلی خوب عمل نمی‌کند، بیشتر وقت ها، استفاده از این نمودار بدترین انتخاب ممکن است و بهتر است به جای آن از Barplot استفاده شود. برای نمونه سعی کنید در Pie Plot های زیر، برش ها را از کوچکترین به بزرگترین پیدا و مرتب کنید.

حال نتیجه را با تصویر زیر مقایسه کنید!

برای کسب اطلاعات بیشتر در رابطه با Pie Plot اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Pie Plot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۱۸. نمودار Radar Chart

زمانی که تعدادی متغیر کمّی وجود دارد و می‌خواهیم تعداد اندکی از مشاهدات مربوط به این متغیر ها را نشان دهیم، می‌توانیم از Radar Chart (نام‌های دیگر: Spider Chart و Web Chart) استفاده کنیم. در این نمودار، هر مشاهده شکل ظاهری مختص به خود را دارد.

در حالت کلی عملکرد Shirly بهتر از Sonia بوده، اما در درس های sports و english و R-coding نمره ی Sonia بهتر است.
در حالت کلی عملکرد Shirly بهتر از Sonia بوده، اما در درس های sports و english و R-coding نمره ی Sonia بهتر است.

برای کسب اطلاعات بیشتر در رابطه با Radar Chart اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Radar Chart در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۱۹. نمودار Parallel Plot

زمانی که تعدادی متغیر کمّی وجود دارد و می‌خواهیم تعداد زیادی از مشاهدات مربوط به این متغیر ها را در یک شکل، نشان دهیم، می‌توانیم از Parallel Plot (نام کاملتر: Parallel Coordinates Plot) استفاده کنیم. در این نمودار،‌ هر محورِ عمودی، معرف یک Feature (متغیر) است که می‌تواند واحد خود را داشته باشد و مشاهدات توسط خطوطی که نقاطِ روی محور های عمودی را قطع می‌کنند نشان داده می‌شوند. همانطور که در شکل دیده می‌شود، می‌توان از خطوط رنگی برای دسته بندی مشاهدات استفاده کرد.

همانطور که در شکل مشخص است، مشاهدات دسته ی setosa دارای Petal های کوچکتر و Sepal های عریض تر هستند.
همانطور که در شکل مشخص است، مشاهدات دسته ی setosa دارای Petal های کوچکتر و Sepal های عریض تر هستند.

برای کسب اطلاعات بیشتر در رابطه با Parallel Plot اینجا کلیک کنید.
برای آشنایی با روشِ رسمِ Parallel Plot در زبان برنامه‌نویسی Python اینجا کلیک کنید.

۲۰. سایر نمودار ها

تا اینجا با ۱۹ عدد از پرکاربردترین نمودار ها در Data Visualization آشنا شدید، اما همانطور که قبلا هم اشاره شد، اینها فقط تعدادی از نمودار های آماری موجود برای به تصویر کشیدن داده ها اند و می‌توانید با مراجعه به سایت data-to-viz.com با سایر نمودار ها نیز آشنا شوید.

این پوستر انواع نمودار های قابل استفاده برای به تصویر کشیدن داده‌ها بر اساس نوع داده ها را نشان می‌دهد.
این پوستر انواع نمودار های قابل استفاده برای به تصویر کشیدن داده‌ها بر اساس نوع داده ها را نشان می‌دهد.


حال که با مهم‌ترین نمودار های آماریِ مورد استفاده در Data Visualization و کاربردهای آنها آشنا شدید، اکیداً توصیه می‌کنیم برای جمع‌بندی مطالب، لینک های زیر را به ترتیب مطالعه کنید. در این لینک ها، Dataset هایی (به ترتیب از موارد ساده تر تا پیچیده تر) معرفی شده و با استفاده از نمودار های معرفی شده در این پست مورد مطالعه و تحلیل قرار گرفته اند.

https://www.data-to-viz.com/story/OneNum.htm
https://www.data-to-viz.com/story/TwoNum.html
https://www.data-to-viz.com/story/TwoNumOrdered.html
https://www.data-to-viz.com/story/ThreeNum.html
https://www.data-to-viz.com/story/OneCatSevOrderedNum.html
https://www.data-to-viz.com/story/SeveralNum.html
https://www.data-to-viz.com/story/SevCatOneNumNestedOneObsPerGroup.html
https://www.data-to-viz.com/story/OneNumOneCat.html
https://www.data-to-viz.com/story/OneNumOneCatSeveralObs.html

همینطور برای آشنایی با روش پیاده‌سازی و رسم نمودار های بالا با استفاده از کتابخانه Matplotlib در زبان برنامه‌نویسی Python پیشنهاد می‌شود ویدیوی آموزش Matplotlib در مکتب‌خونه را تماشا کنید.

منبع: https://vrgl.ir/iqWnF

حمیدرضا حسین خانی
۱۰آذر

همانطور که می‌دانید این روز‌ها، هوش مصنوعی، به ویژه یادگیری ژرف (Deep Learning)، حرف اول را در خیلی از زمینه‌های پژوهشی و البته صنعتی می‌زند و نتایج و محصولات حاصل از آن طی سال‌های اخیر، بسیار شگفت انگیز بوده اند. برای آشنایی بیشتر با هوش مصنوعی می‌توانید به این پست مراجعه کنید.

تقریبا پارسال بود که ساندار پیچای، مدیر عامل شرکت گوگل، طی پُستی در وبلاگ این شرکت اعلام کرد که جهان در حال گذر از حالت Mobile-first به حالت AI-first است و شرکت گوگل تمام محصولاتش را با این محوریت توسعه می‌دهد. بنابراین واضح است که در این جهانِ AI-first استفاده از هوش مصنوعی برای تولید محصولات و آموزش مفاهیم و کاربرد‌های آن برای کارآفرینان و مهندسان بسیار حا‌یز اهمیت است.

یادگیری ژرف و شبکه‌های عصبی مصنوعی، شاخه ای از یادگیری ماشین اند که از ساختار لایه ای مغز انسان و سلول های عصبی متصل به هم الگو گرفته اند.

سلول عصبی (Neuron) و مدل مصنوعی آن (Artificial Neuron)
سلول عصبی (Neuron) و مدل مصنوعی آن (Artificial Neuron)

شبکه عصبی ژرف (Deep Neural Network) متشکل از چند لایه از Artificial Neuron های متصل به هم
شبکه عصبی ژرف (Deep Neural Network) متشکل از چند لایه از Artificial Neuron های متصل به هم

طی این پست، با ۳۰ نمونه از جدیدترین و هیجان‌انگیزترین کاربرد‌های یادگیری ژرف (Deep Learning) آشنا خواهیم شد. واضح است که کاربردهای امروزیِ این علم،‌بسیار فراتر از این تعداد اندک اند.

۱. برچسب گذاری خودکار تصاویر

زمانی که تصاویر خود را در Google Photos ذخیره می‌کنید، این تصاویر به صورت خودکار، برچسب گذاری و دسته بندی می‌شوند. به عنوان مثال تصاویر مربوط به یک شخص خاص در یک دسته و تصاویر مربوط به مناظر طبیعی در دسته ای دیگر قرار می‌گیرند و برای جستجو کافی است یک عکس جدید از یک نفر بگیرید و آن عکس را در آلبوم تصاویر جستجو کنید. خواهید دید که تمام عکس‌هایی که فرد مورد نظر در آنها حضور داشته ظاهر خواهند شد.

استفاده از یک شبکه عصبی ژرف از نوع CNN برای برچسب گذاری خودکار در Google Photos
استفاده از یک شبکه عصبی ژرف از نوع CNN برای برچسب گذاری خودکار در Google Photos

۲. تبدیل گفتار به نوشتار

تبدیل گفتار به نوشتار، یکی از جالب‌ترین کاربرد های یادگیری ماشین است که این روزها در بسیاری از اپلیکیشن‌های موبایل (برای مثال کیبور گوگل) استفاده شده و شاهد دقت بسیاربالای آن حتی برای زبان فارسی هستیم.

استفاده از شبکه عصبی بازگشتی ژرف در سیستم بازشناسی گفتار شرکت گوگل باعث بهبود ۳۰ درصدی عملکرد آن گردیده است
استفاده از شبکه عصبی بازگشتی ژرف در سیستم بازشناسی گفتار شرکت گوگل باعث بهبود ۳۰ درصدی عملکرد آن گردیده است

۳. رتبه بندی صفحات وب

زمانی که عبارتی را در موتور جستجوی گوگل جستجو می‌کنید، نتایج حاصل، بر اساس حدوداً ۱۰۰ معیار مختلف (Ranking Signals) برای شما مرتب می‌شوند که بسیاری از این ۱۰۰ معیار راز‌هایی اند که کسی خارج از گوگل از آنها اطلاعی ندارد. با این حال طبق اعلام این شرکت، سومین سیگنال مهم و تاثیر گذار در بین این صد سیگنال، یک شبکه عصبی ژرف به نام RankBrain است که در سال ۲۰۱۵ در آزمایشگاه Google Brain ساخته شده است.

شبکه عصبی RankBrain، سومین سیگنال تاثیر گذار در رتبه بندی موتور جستجوی گوگل
شبکه عصبی RankBrain، سومین سیگنال تاثیر گذار در رتبه بندی موتور جستجوی گوگل

۴. پاسخ دهی خودکار در نرم‌افزار های پیام‌رسان

اگر با Google Allo کار کرده باشید، حتما دقت فوق‌العاده بالای آن در پاسخ های پیشنهاد شده به ازای پیام‌ها، شما را شگفت‌زده کرده است. این سیستم که برای اولین بار در نرم‌افزار Gmail مورد استفاده قرار گرفت، در ابتدا توسط یک شبکه عصبی مصنوعی ساده، پیام را بررسی می‌کند تا بتواند تشخیص دهد که آیا می‌تواند به آن پاسخ خوبی بدهد یا خیر. درصورتی که پاسخِ این شبکه مثبت بود، با استفاده از یک شبکه عصبی بازگشتی ژرف پاسخ مناسب تولید می‌شود.

استفاده از شبکه عصبی بازگشتی برای تولید پاسخ مناسب در اپلیکیشن Gmail
استفاده از شبکه عصبی بازگشتی برای تولید پاسخ مناسب در اپلیکیشن Gmail

۵. توصیف تصاویر

توصیف یک تصویر (یا یک ویدیو) در یک یا چند جمله، یکی از جالب ترین و هیجان‌انگیز ترین کاربرد‌های هوش مصنوعی در بینایی ماشین است و به ما کمک می‌کند ماشین‌هایی بسازیم که اشیاء دیده شده را واقعاً درک کنند. همینطور در روش معکوس می‌توان از روی توصیفات متنی، یک تصویر نسبتا واقعی تولید کرد. با این تفاسیر، تصور تولید یک فیلم از روی فیلمنامه، موضوع دور از انتظاری نیست!

در این تصویر، توصیف دو ماشین مختلف از یک عکس با انسان مقایسه شده است
در این تصویر، توصیف دو ماشین مختلف از یک عکس با انسان مقایسه شده است

۶. تخمین میزان صرفه‌جویی در مصرف انرژی در صورت استفاده از سلول‌های خورشیدی

با توجه به هزینه های بالای تولید انرژی، تاثیرات آن بر زیست بوم و مشکلات مربوط به استفاده از انرژی های تجدید ناپذیر، بهینه‌سازی مصرف انرژی یکی از اصلی ترین و مهم‌ترین چالش هایی است که هوش مصنوعی به دنبال حل آن است. برای مثال، خیلی از استارتاپ‌ها در کشور‌های پیشرفته به دنبال استفاده از هوش مصنوعی در کنتور‌های برق و آب و مدیریت الگوی مصرف انرژی از این طریق هستند.

پروژه Google Sunroof با تحلیل عکس‌های ماهواره ای از پشت بام خانه و میزان آفتاب در ساعات مختلف شبنه‌روز، به شما می‌گوید اگر از سلول خورشیدی برای تولید انرژی استفاده کنید، چقدر در هزینه مصرف انرژی صرفه‌جویی خواهید کرد.
پروژه Google Sunroof با تحلیل عکس‌های ماهواره ای از پشت بام خانه و میزان آفتاب در ساعات مختلف شبنه‌روز، به شما می‌گوید اگر از سلول خورشیدی برای تولید انرژی استفاده کنید، چقدر در هزینه مصرف انرژی صرفه‌جویی خواهید کرد.

۷. تبدیل طرح اولیه (Mockup) به کد HTML

با ظهور کامپیوتر ها، برنامه‌نویس ها، نرم‌افزار‌هایشان را جایگزین بسیاری از افراد خبره و مشاغل کردند، اما به نظر می‌رسد این بار نوبت خودشان است. محققان با استفاده از یادگیری ژرف توانسته اند Mockup های طراحی شده توسط UX Designer ها را به کد HTML تبدیل کنند. با این تفاسیر انتظار برنامه‌نویسی از کامپیوتر ها نیز انتظار دور از ذهنی نیست!

تبدیل طرح اولیه وبسایت به کد قابل پیاده‌سازی توسط شبکه عصبی ژرف
تبدیل طرح اولیه وبسایت به کد قابل پیاده‌سازی توسط شبکه عصبی ژرف

۸. اتوموبیل خودران

یکی از جذاب‌ترین و پردرآمدترین شغل ها در سال ۲۰۱۸ طراحی اتوموبیل‌های خودران است که تماما بر اساس هوش مصنوعی و یادگیری ژرف بنا نهاده شده است. با اینکه هنوز تا قابل استفاده شدن این سیستم ها در زندگی روزمره فاصله داریم اما شرکت هایی مثل Waymo و Tesla به صورت خیلی جدی در حال کار و پژوهش در این حوزه هستند و به زودی شاهد فراگیر شدن این سیستم ها و همینطور پهباد‌های خودمختار خواهیم بود.

استفاده از اتوموبیل های خودران می‌تواند باعث افزایش ایمنی و کاهش خطرات ناشی از رانندگی شود
استفاده از اتوموبیل های خودران می‌تواند باعث افزایش ایمنی و کاهش خطرات ناشی از رانندگی شود

۹. تولید خودکار مراحل جدید در بازی‌ها

در تولید سناریوها، داستان‌ها و مراحل بازی که توسط هوش مصنوعی ساخته می‌شوند، گاهاً شاهد خلاقیت‌های امیدوار کننده ای هستیم...

تولید مراحل جدید بازی با استفاده از هوش مصنوعی و یادگیری ژرف
تولید مراحل جدید بازی با استفاده از هوش مصنوعی و یادگیری ژرف

۱۰. تشخیص چهره از پشت دیوار

دانشگاه MIT طی یک تحقیق، سیستمی ساخته که با استفاده از امواج RF قادر است موقعیت و حرکت انسان‌ها در پشت دیوار را تشخیص دهد.

اما این کافی نیست...

معمولا بیشترین سرمایه‌گزاری ای که بر روی هوش مصنوعی می‌شود برای تحقیقات نظامی است. چند ماه پیش بود که ارتش آمریکا خبر ساخت سیستمی بر اساس یادگیری ژرف را داد که قادر است چهره فرد را از پشت دیوار و در تاریکی تشخیص دهد.

۱۱. تنظیم هارمونی رنگ‌ها در تصویر

اگر با نرم‌افزار های ویرایش تصاویر مانند Adobe Photoshop کار کرده باشید، احتمالا ابزارهای تنظیم هارمونی رنگ را دیده اید. هوش مصنوعی و شبکه‌های عصبی ژرف یکی از بهترین روش ها برای انجام این کار اند.

در سمت راست ترین تصویر، هارمونی رنگ‌ها جوری توسط هوش مصنوعی تنظیم شده که انگار نقاشی از ابتدا متعلق به مستربین بوده
در سمت راست ترین تصویر، هارمونی رنگ‌ها جوری توسط هوش مصنوعی تنظیم شده که انگار نقاشی از ابتدا متعلق به مستربین بوده

۱۲. یادگیری و استخراج سبک

هوش مصنوعی قادر است با نگاه کردن به یک تصویر، موسیقی، فیلم یا ...، سبک (Style) آن را یادگرفته و استخراج کند. سپس این سبک را روی تصویر، موسیقی یا ... دیگر اعمال کند.

اعمال سبک تصویر شماره ۲ بر روی تصویر شماره ۱
اعمال سبک تصویر شماره ۲ بر روی تصویر شماره ۱

اعمال سبک تابلوی جیغ بر روی تصویر ما در دفتر کارمون :)
اعمال سبک تابلوی جیغ بر روی تصویر ما در دفتر کارمون :)

اعمال سبک یک نقاشی بر روی تصویر واقعی
اعمال سبک یک نقاشی بر روی تصویر واقعی

۱۳. طراحی لباس بر اساس سلیقه کاربر

این روز ها بیشتر سایت‌های خرده‌فروشی آنلاین، از سامانه‌های پیشنهاد دهنده (Recommender Systems) برای پیشنهاد محصولات به کاربران خود و افزایش Conversion Rate بهره می‌برند، با این حال محققان پا را فرا تر گذاشته و اقدام به ساخت الگوریتم هوشمندی برای طراحی و تولید یک لباس جدید بر اساس سلیقه کاربر کرده اند.

استفاده از هوش مصنوعی برای طراحی مد و پوشاک
استفاده از هوش مصنوعی برای طراحی مد و پوشاک

۱۴. انجام بازی‌ های ویدیویی

هوش مصنوعی ساخت شرکت Google DeepMind موسوم به DQN می‌تواند بازی‌های آتاری را حتی بهتر از انسان بازی کند.

۱۵. انجام بازی های صفحه ای مانند شطرنج و GO

هوش مصنوعی ساخت شرکت Google DeepMind موسوم به AlphaGo توانست لی سدول، قهرمان جهان در بازی Go را شکست دهد. لازم به ذکر است بازی Go به مراتب پیچیده‌تر و سخت تر از بازی شطرنج است. برای آشنایی بیشتر با تاریخچه مسابقات و بازی ها بین انسان و هوش مصنوعی می‌توانید به پست مربوط به نبرد انسان و هوش مصنوعی مراجعه کنید.

هوش مصنوعی AlphaGo برای بازی از شبکه عصبی ژرف استفاده می‌کند
هوش مصنوعی AlphaGo برای بازی از شبکه عصبی ژرف استفاده می‌کند

۱۶. تبدیل تصویر به تصویر

یکی از کاربرد های جالب هوش مصنوعی تبدیل تصویر به تصویر است. برای مثال تبدیل یک نقاشی به شی واقعی آن، تبدیل یک تصویر سیاه و سفید به معادل رنگی آن، تبدیل یک اسب به گورخر، تبدیل عکس ماهواره ای به نقشه متناظر و ...

نمونه هایی از تبدیل تصویر به تصویر با استفاده از هوش مصنوعی
نمونه هایی از تبدیل تصویر به تصویر با استفاده از هوش مصنوعی

۱۷. آهنگسازی

هوش مصنوعی می‌تواند به تعدادی موسیقی (مثلا موسیقی های ساخته شده توسط بتهوون) گوش کرده و یک موسیقی جدید از همان توزیع (با همان سبک) بسازد.

استفاده از هوش مصنوعی در تولید موسیقی
استفاده از هوش مصنوعی در تولید موسیقی

۱۸. نقاشی

هوش مصنوعی میتواند با مشاهده تعدادی نقاشی، نقاشی هایی شبیه به نقاشی های یاد گرفته شده را بکشد و یا نقاشی های شما را با استفاده از مفاهیمی که یاد گرفته تکمیل کند. به عنوان نمونه می‌توانید به وبسایت https://www.autodraw.com مراجعه کنید.

نمونه نقاشی های کشیده شده توسط هوش مصنوعی
نمونه نقاشی های کشیده شده توسط هوش مصنوعی

۱۹. تشخیص چهره

یکی از کاربردی ترین ایده های هوش مصنوعی، تشخیص چهره است. از این سیستم ها برای مقاصد امنیتی مانند قفل درب ها یا گوشی های موبایل، سیستم های حضور و غیاب و البته برای یافتن و تعقیب مجرمان یا کهنسالان در معابر استفاده می‌شود.

طبق اعلام دولت چین، طی دو سال گذشته، ۲۰۰۰ مجرم در این کشور توسط سیستم تشخیص چهره Skynet در معابر دستگیر شده اند.

تشخیص چهره با استفاده از هوش مصنوعی
تشخیص چهره با استفاده از هوش مصنوعی

۲۰. دستیار های هوشمند

همه سیستم‌عامل های امروزی، یک دستیار هوشمند دارند که می‌تواند با فرامین صوتی، انجام بعضی از کار‌ها را ساده تر کند. مانند Google Assistant در اندروید، Siri در iOS و Cortana در Windows . با این حال چند ماه پیش در کنفرانس Google IO 2018، ساندار پیچای، مدیر عامل شرکت گوگل به معرفی نسخه جدید دستیار هوشمند گوگل پرداخت که موجب شگفتی جهانیان شد. قلم ما از توصیف دقیق آن قاصر است و پیشنهاد می‌دهیم برای آشنایی، ویدیوی زیر را مشاهده کنید اما به نظر می‌رسد تخیل پشت فیلم Her در حال نزدیک شدن به واقعیت است.

۲۱. ترمیم تصویر (Image In-painting)

همانطور که در تصویر زیر مشاهده می‌کنید، بخش هایی از عکس به دلایلی از بین رفته! هوش مصنوعی، به سادگی و با دقت بالا قادر به ترمیم بخش های از بین رفته است.

ترمیم تصاویر با استفاده از هوش مصنوعی
ترمیم تصاویر با استفاده از هوش مصنوعی

۲۲. توسعه تصویر (Image Out-painting)

همانطور که در تصویر زیر مشاهده می‌کنید، هوش مصنوعی قادر است یک عکس را توسعه داده و بخش هایی را به آن بیافزاید.

توسعه تصاویر با استفاده از هوش مصنوعی
توسعه تصاویر با استفاده از هوش مصنوعی

۲۳. باز کردن چشم های بسته در عکس

با استفاده از هوش مصنوعی در دوربین های دیجیتال، دیگر نگران بسته شدن چشم‌های خود هنگام عکاسی نباشید. هوش مصنوعی قادر است چشم‌های شما را باز کند!

باز کردن چشم های بسته در تصویر توسط هوش مصنوعی
باز کردن چشم های بسته در تصویر توسط هوش مصنوعی

۲۴. حذف قطرات باران از تصویر

همانطور که در شکل زیر مشخص است، هوش مصنوعی قادر است قطرات باران در تصویر ثبت شده از دوربین را حذف کرده و به تصویر واضح تری دست یابد.

حذف قطرات باران در تصویر ثبت شده توسط دوربین با استفاده از هوش مصنوعی
حذف قطرات باران در تصویر ثبت شده توسط دوربین با استفاده از هوش مصنوعی

۲۵. طراحی روکش دندان

هوش مصنوعی حتی قادر است روکش دندان را با دقتی بسیار بهتر از دندانپزشک طراحی کند.

طراحی روکش دندان توسط هوش مصنوعی و یادگیری ژرف
طراحی روکش دندان توسط هوش مصنوعی و یادگیری ژرف

۲۶. همگام‌سازی لب ها در ویدیو با صدا هایی غیر از صدای اصلی

بعد از مشاهده ویدیوی زیر، دیگر حتی به چشم های خود نیز اعتماد نخواهید کرد. این ویدیو نشان می‌دهد که چگونه می‌توان به کمک هوش مصنوعی صدایی که متعلق به یک ویدیوی دیگر است (یا حتی به صورت fake از صدای فرد ساخته شده است) را روی تصویر گذاشت به‌طوری که حرکت لب های گوینده در تصویر کاملا بر صدا و گفتار منطبق شود.

۲۷. جستجوی تصاویر با انجام حرکات مرتبط

پروژه Move Mirror یک پروژه سرگرم کننده است که با استفاده از آن می‌توانید جلوی دوربین حرکت هایی را ضبط کرده و تصاویر مرتبط با آن حرکت را جستجو کنید...

۲۸. شما هم رقاص شوید

پروژه Everybody dance now به شما اجازه می‌دهد یک فیلم از رقص ناشیانه خود گرفته و آن را با یک ویدیوی رقص حرفه ای ترکیب کنید. نتیجه حیرت آور خواهد شد!

۲۹. رقابت در محیط های چند عامله

چند هفته پیش خبر مسابقه بین قهرمان های بازی Dota 2 و هوش مصنوعی OpenAI Five تیتر اول خیلی از خبرگزاری ها شد. OpenAI Five یک هوش مصنوعی بسیار پیشرفته است که می‌تواند همانند یک انسان Dota 2 بازی کرده و تصمیمات استراتژیک بگیرد. در واقع این مسابقه نشان داد که هوش مصنوعی می‌تواند در بسیاری از تصمیمات استراتژیک همچون حمل و نقل شهری موفق باشد.

۳۰. شما چی فکر می‌کنید؟!

همانطور که پیشتر ذکر شد، کاربرد های هوش مصنوعی به موارد بالا ختم نمی‌شوند و روز به روز شاهد استفاده از هوش مصنوعی در تولید محصولات، صنایع نظامی، علوم پزشکی، کسب و کار، صنعت و ... هستیم. از این رو، کاربرد ۳۰ را باز گذاشتیم تا شما آن را در کامنت ها بنویسید. این کاربرد می‌تواند موضوع پایان‌نامه شما، محصول تولیدی و یا فقط یک ایده خام در ذهن شما باشد...

منبع: https://vrgl.ir/EMfo4

حمیدرضا حسین خانی
۱۰آذر

در این نوشتار سعی داریم تا شما را با مفاهیم اولیه هوش مصنوعی و انواع آن آشنا کنیم. اگر به دنبال راه ساده و صحیح برای ورود به این علم هستید و یا هنوز تصمیم خود را نگرفته اید، مطالعه پست مربوط به آشنایی با مدرسه هوش مصنوعی را به شما پیشنهاد می‌دهیم.

قبل از هر چیز می‌خواهیم به تعریف هوش مصنوعی بپردازیم. لازمه بدونید هیچ تعریف دقیق و مشخصی که مورد پذیرش همه اهل فن باشه در رابطه با هوش طبیعی و در نتیجه هوش مصنوعی وجود نداره. در واقع هر کس بسته به زمینه فعالیت و دانش خود، از زاویه دید متفاوتی به این علم نگاه می‌کند.

به همین خاطر، در طول تاریخ چهار نگرش کلی در مورد هوش مصنوعی به وجود آمده است.

  1. اولین افرادی که از واژه هوش مصنوعی استفاده کردند (مثل John McCarthy و Marvin Minsky) به دنبال شبیه‌سازی دقیق مغز انسان و پیاده‌سازی مدل مصنوعی آن بودند تا از این طریق بتوانند ساختار مغز و در نتیجه انسان را بهتر بشناسند به همین خاطر امروزه به افراد با این نگرش، متخصص علوم شناختی (Cognitive Scientist) می‌گویند. متخصصین با این نگرش در واقع به دنبال ساخت سیستم هایی اند که دقیقا همانند انسان فکر کنند.
ماروین مینسکی و جان مک‌کارتی، از بزرگترین دانشمندان علوم شناختی
ماروین مینسکی و جان مک‌کارتی، از بزرگترین دانشمندان علوم شناختی

۲. عده ای از محققان به ویژه افرادی که از علومی همچون روانشناسی وارد این حوزه شده اند، خیلی به دنبال درک دقیق ساختار داخلی مغز و شبیه‌سازی عینی آن نیستند، بلکه به دنبال ساخت سیستم هایی اند که فارق از ساختار داخلی، عملکردی شبیه به عملکرد انسان داشته باشند. Alan Turing از برجسته ترین دانشمندان این حوزه در سال ۱۹۵۰ آزمونی را برای سنجش هوشمندی این سیستم ها پیشنهاد داد که به آزمون تورینگ مشهور است. در این آزمون، سیستم هوشمند مصنوعی باید بتواند یک داور انسانی را در چت طوری فریب دهد که او نتواند تشخیص دهد که در حال صحبت با یک کامپیوتر است! این آزمون در سال ۲۰۱۴ توسط یک چت بات به نام Eugene Goostman پاس شد.

Alan Turing
Alan Turing

۳. دسته دیگری از محققین به ویژه مهندسان قدیمی تر کامپیوتر و ریاضی‌دان ها هستند که معتقد اند اگر ساختار دقیق مغز انسان و یا رفتار او در ماشین‌ها شبیه‌سازی شود، آنگاه ماشین‌ها نیز دچار خطاهایی خواهند بود که از انسان‌ها سر می‌زند. آنها معتقد اند با استفاده از کامپیوتر ها باید نقایص موجود در انسانها را رفع کرد و سیستم‌هایی ساخت که عقلانی و منطقی (به عبارت دیگر، صحیح) فکر می‌کنند. محققین این حوزه در تلاش اند تا اشیا و روابط موجود بین آنها در دنیای واقعی را تماماً و بدون ابهام به صورت ریاضی و منطقی مدل کرده و آنها را به کمک کامپیوتر ها پیاده‌سازی کنند. سیستم‌های خبره (Expert Systems) حاصل تلاش این محققین بوده است.

لطفی زاده، مبدع منطق فازی و استاد دانشگاه برکلی
لطفی زاده، مبدع منطق فازی و استاد دانشگاه برکلی

۴. اما بسیاری از محققین هوش مصنوعی، نگرش سوم را غیر واقع بینانه می‌دانند و معتقد اند بسیاری از پدیده ها و روابط دنیای واقعی با روش های موجود در ریاضیات و منطق قابل مدلسازی نیستند و یا بدتر از آن، حتی خود انسان‌ها نسبت به خیلی از این پدیده‌ها بینش کافی ندارند و قطعا نمی‌توانند مدلسازی کامل و قابل استنادی از آنها داشته باشند. برای مثال شاید بتوانیم دانش یک فرد خبره در یک حوزه خاص (مثلا یک پزشک) را استخراج کرده و آن را به زبان ریاضی و منطق مدل کنیم، سپس یک سیستم خبره جهت تشخیص اولیه بیماری از روی علایم بسازیم، اما آیا می‌توانیم سیستمی بسازیم که همچون انسان بتواند ببیند و افراد آشنا را از افراد غریبه متمایز کند؟! آیا روش عملکرد سیستم بینایی انسان برای ما آشکار است؟! آیا اگر عملکرد این سیستم برای ما آشکار بود می‌توانستیم آن را به صورت یک الگوریتم مشخص کامپیوتری پیاده‌سازی کنیم؟!

بنابراین بسیاری از دانشمندان در حال حاضر مشغول کار بر روی سیستم هایی اند که فارق از ساختار داخلی، بتوانند عملکرد صحیح و عقلانی به ویژه برای حل یک مساله خاص (مثلا بینایی ماشین) داشته باشند.

Yann LeCun, Jeoffery Hinton, Yoshua Bengio, Andrew Ng
Yann LeCun, Jeoffery Hinton, Yoshua Bengio, Andrew Ng

مدلسازی مسایل هوش مصنوعی با استفاده از مفهومی به نام عامل هوشمند:

در هوش مصنوعی، برای مدلسازی و حل مسایل، معمولا به دنبال طراحی و ساخت یک عامل هوشمند (Intelligent Agent) هستیم. عامل هوشمند در یک محیط (Environment) قرار دارد و با آن در تعامل است. در محیط اطراف عامل، رویداد هایی اتفاق می‌افتد که این رویدا‌د‌ها می‌توانند قطعی و قابل پیش‌بینی و یا غیرقطعی و تصادفی باشند. رخ دادن این رویداد ها، تاثیراتی (سیگنال هایی) در محیط دارد که عامل می‌تواند با استفاده از حسگر (Sensor) های خود آنها را مشاهده کند (Perception). البته با توجه به قدرت و قابلیت Sensor های عامل ممکن است بعضی از این سیگنال ها از دید عامل مخفی و برخی دیگر برای آن آشکار باشند. به مجموعه این سیگنال‌ها که عامل از طریق حسگر های خود از محیط دریافت می‌کند State می‌گوییم. عامل برای رسیدن به هدف یا اهداف خود، پس از Perception و با توجه به State دریافت شده از محیط، تصمیم به اجرای یک عمل (Action) خاص گرفته و آن عمل را به کمک عملگر (Actuator) های خود بر روی محیط انجام می‌دهد. انجام این عمل در محیط، خود یک رویداد است که می‌تواند State را تغییر دهد. به بخشی از عامل که با دریافت State در هر لحظه، تصمیم به اجرای یک Action خاص می‌گیرد، Agent Function یا Policy گفته می‌شود.

اجزای مختلف یک عامل هوشمند در این شکل قابل مشاهده اند. Policy با علامت سوال در شکل نشان داده شده است.
اجزای مختلف یک عامل هوشمند در این شکل قابل مشاهده اند. Policy با علامت سوال در شکل نشان داده شده است.

برای مثال انسان را به عنوان یک عامل هوشمند طبیعی تصور کنید. این عامل رویداد های موجود در محیط اطراف خود را توسط حسگر هایش (چشم‌ها، گوش‌ها، لامسه و ...) مشاهده کرده و متوجه وضعیت (State) محیط می‌شود. سپس این وضعیت را در مغز (Agent Function) خود بررسی کرده و تصمیم به انجام یک عمل (Action) خاص در محیط برای رسیدن به هدفش می‌گیرد و این عمل را توسط Actuator های خود (دست و پا، زبان و ...) در محیط به اجرا می‌رساند...

به عنوان مثالی از عامل هوشمند مصنوعی، می‌توان اتوموبیل‌های خودران (Self-driving Cars) را بررسی کرد.

اتوموبیل خودران به عنوان یک عامل هوشمند مصنوعی در حال Perception
اتوموبیل خودران به عنوان یک عامل هوشمند مصنوعی در حال Perception

عامل هوشمند: اتوموبیل خودران
محیط: خیابان، سایر اتوموبیل‌ها، عابرین پیاده، چراغ راهنمایی و ...
حسگر ها: دوربین ها، سرعت‌سنج، Radar ها، LiDAR ها و ...
عملگر‌ها -> فرمان، ترمز، چرخ‌ها و ...
عمل‌ها: گاز دادن، ترمز گرفتن، تغییر دنده، چرخاندن فرمان، بوق زدن و ...
پالیسی: نرم‌افزار موجود بر روی کامپیوتر مرکزی اتوموبیل

سنسور‌های موجود در اتوموبیل خودران Waymo
سنسور‌های موجود در اتوموبیل خودران Waymo

همانطور که احتمالا متوجه شده اید مهمترین وظیفه یک متخصص هوش مصنوعی، طراحی Agent Function در یک عامل هوشمند است.

اولین و ساده‌ترین ایده ای که به برای طراحی Agent Function به ذهن می رسد، این است که در ابتدا دانش لازم برای حل مساله را استخراج کرده و سپس آن را به صورت یک الگوریتم منطقی مشخص، بیان و پیاده‌سازی کنیم. این روش اگرچه به صورت گسترده در سیستم های خبره (Expert System ها) مورد استفاده قرار گرفت اما این روز ها خیلی مورد توجه نیست و از آن با عنوان Good Old-Fashioned Artificial Intelligence یاد می‌شود زیرا همه مسایل مانند مسیله مرتب‌سازی چند عدد نیستند که روش مشخص و قابل بیانی برای آنها وجود داشته باشد. در مقابل، روش دیگر، معروف به یادگیری ماشین (Machine Learning)، ساخت یک عامل یادگیرنده است که به جای دریافت کردن کامل دانش در ابتدای کار، آن را طی تجربه در محیط و به مرور زمان یاد بگیرد. در واقع عامل یادگیرنده، دانش لازم برای حل مساله را به صورت ضمنی و از روی تجربه یاد می‌گیرد. این تجربه معمولا به صورت یک مجموعه داده (Dataset) برای یادگیری به عامل داده می‌شود، از این رو، این روش به Data-driven Approach نیز مشهور است.

همانطور که گفته شد، تجربه عامل معمولا به شکل یک Dataset در اختیار آن قرار می‌گیرد. بنابراین واضح است که نقش این Data در کارایی هرچه بیشتر عامل یادگیرنده بسیار پررنگ است و در واقع برای به انجام رساندن بسیاری از پروژه های امروزی AI نیاز به داده‌های بسیار زیاد (Massive Dataset) داریم. معمولا هرچه داده بیشتری در اختیار داشته باشیم، عامل یادگیرنده تجربه بیشتری خواهد داشت و محصول تولید شده کیفیت بالاتری دارد، بنابراین کاربران بیشتری را جذب کرده و به نسبت،‌ دیتای بیشتری تولید می‌کند... و این چرخه ادامه دارد. دلیل موفقیت بسیاری از محصولات شرکتی مثل Google هم دقیقا همین است!

هر که دیتایش بیش، دیتایش بیشتر!
هر که دیتایش بیش، دیتایش بیشتر!

حال ممکن است برایتان سوال پیش بیاید که:

ما که محصولی نداریم چی؟ دیتای خوب از کجا بیاریم؟!

پاسخ اینه که، شرکت گوگل به تازگی موتور جستجوی خود برای Dataset ها را معرفی کرده که می‌تونید از اون استفاده کنید و هر مجموعه دیتایی که لازم دارید رو در اینترنت پیدا کنید!

http://toolbox.google.com/datasetsearch
http://toolbox.google.com/datasetsearch

خوب، حالا که با یادگیری ماشین آشنا شدیم و فهمیدیم که بسیار وابسته به Dataset موجود است، لازمه که بدونیم مسایل و الگوریتم‌های یادگیری ماشین با توجه به شکل و نوع Dataset به چهار دسته کلی تقسیم می‌شوند.

. یادگیری با نظارت (Supervised Learning)
. یادگیری بدون نظارت (Unsupervised Learning)
. یادگیری نیمه نظارتی (Semi-supervised Learning)
. یادگیری تقویتی (Reinforcement Learning)

انواع task ها در یادگیری ماشین بر اساس شکل و نوع Dataset موجود
انواع task ها در یادگیری ماشین بر اساس شکل و نوع Dataset موجود

یادگیری با نظارت (Supervised Learning)

زمانی که Dataset موجود شامل State (مجموعه سیگنال ها) و Action مطلوب متناظر با هر State بود، از روش های Supervised Learning برای آموزش عامل هوشمند استفاده می‌شود.

شکل کلی دیتاست در روش های یادگیری با نظارت
شکل کلی دیتاست در روش های یادگیری با نظارت

الگوریتم های یادگیری با نظارت، به صورت ضمنی، دانش موجود در مجموعه داده به شکل فوق را استخراج کرده و یک مدل قابل تعمیم به داده‌های جدید و دیده نشده می‌سازند.

در اینجا، عامل هوشمند (دسته‌بندی کننده تصاویر)، که به صورت Supervised آموزش دیده، یک تصویر جدید را به عنوان State از محیط دریافت کرده و باید آن را در یکی از دو دسته سگ یا گربه قرار دهد.
در اینجا، عامل هوشمند (دسته‌بندی کننده تصاویر)، که به صورت Supervised آموزش دیده، یک تصویر جدید را به عنوان State از محیط دریافت کرده و باید آن را در یکی از دو دسته سگ یا گربه قرار دهد.

یادگیری بدون نظارت (Unsupervised Learning)

زمانی که Dataset موجود تنها شامل State (مجموعه سیگنال‌ها) است و هیچ Action متناظر با State وجود ندارد از روش های Unsupervised Learning برای آموزش عامل هوشمند استفاده می‌شود.

شکل کلی دیتاست در روش های یادگیری بدون نظارت
شکل کلی دیتاست در روش های یادگیری بدون نظارت

الگوریتم های یادگیری بدون نظارت، روابط معنادار موجود بین داده‌ها را کشف و آن‌ها را مدل می‌کنند. به عنوان مثال این الگوریتم‌ها می‌توانند کاربران با علاقه‌مندی های مشابه را در شبکه‌های اجتماعی خوشه‌بندی کنند.

در اینجا، عامل هوشمند، با تعدادی نقاشی به صورت Unsupervised آموزش دیده و با کشف روابط معنی دار بین اجزای نقاشی، می‌تواند نقاشی شما را کامل کند.
در اینجا، عامل هوشمند، با تعدادی نقاشی به صورت Unsupervised آموزش دیده و با کشف روابط معنی دار بین اجزای نقاشی، می‌تواند نقاشی شما را کامل کند.

یادگیری نیمه نظارتی (Semi-supervised Learning)

از این نوع یادگیری زمانی استفاده می شود که Action مطلوب متناظر با تعداد کمی از State ها در Dataset مشخص باشد، اما به ازای بسیاری از State ها Action مطلوب را نداشته باشیم. این نوع یادگیری نسبت به سه نوع دیگر کاربرد کمتری دارد و بیش از این به آن نمی‌پردازیم.

یادگیری تقویتی (Reinforcement Learning)

زمانی که Dataset شامل State هایی است که Action مطلوب در آن State ها را به صورت دقیق و قطعی نمی‌دانیم (مثلا وقتی که Action مطلوب ممکن است در طول زمان تغییر کند) اما به ازای همه Action های ممکن در آن State یک میزان مطلوبیت و مقبولیت برای Action (موسوم به پاداش محیط به عامل به خاطر انجام آن عمل) داریم، می‌توانیم از روش‌های یادگیری تقویتی برای آموزش عامل هوشمند استفاده کنیم.

شکل کلی دیتاست در روش‌های یادگیری تقویتی
شکل کلی دیتاست در روش‌های یادگیری تقویتی

عامل یادگیرنده برای آموزش دیدن تحت روش‌های یادگیری تقویتی، ممکن است به صورت Real-time و به تعداد دفعات زیاد، با محیط تعامل کرده، با مشاهده State محیط یک Action خاص را روی محیط انجام دهد و به ازای انجام آن عمل، از محیط پاداش (Reward) دریافت کند. سپس استراتژی خود را جوری اصلاح کند که مجموع پاداش‌های دریافتی اش در طول زمان بیشتر شود.

در اینجا، عامل هوشمند که به یکی از روش های Reinforcement Learning آموزش دیده، در هر لحظه، با مشاهده صفحه بازی آتاری به عنوان State می‌تواند یکی از دکمه های دسته بازی را به عنوان Action مناسب انتخاب کند.
در اینجا، عامل هوشمند که به یکی از روش های Reinforcement Learning آموزش دیده، در هر لحظه، با مشاهده صفحه بازی آتاری به عنوان State می‌تواند یکی از دکمه های دسته بازی را به عنوان Action مناسب انتخاب کند.

روش‌های یادگیری تقویتی، این روز ها بسیار مورد توجه محققان هوش مصنوعی قرار گرفته، به‌طوری که شرکت Google به تازگی یک فریم‌ورک اختصاصی به نام Dopamine برای پیاده‌سازی و ارزیابی این نوع از الگوریتم‌های یادگیری ماشین ارایه کرده است.

حمیدرضا حسین خانی
۱۰آذر

قصه از جایی شروع شد که سوپرکامپیوتر Deep Blue ساخت شرکت IBM در سال ۱۹۹۷ توانست گری کاسپاروف، قهرمان شطرنج جهان را در رقابتی تنگاتنگ طی ۱۹ حرکت شکست دهد!

این شکست آنقدر برای گری کاسپاروف سنگین بود که او رقیب خود را به تقلب متهم کرد و خواستار تکرار بازی شد.

گری کاسپاروف، بازنده رقابت تاریخی با سوپر کامپیوتر Deep Blue
گری کاسپاروف، بازنده رقابت تاریخی با سوپر کامپیوتر Deep Blue

سوپر کامپیوتر Deep Blue برای بازی شطرنج یک درخت بازی (Game Tree) تشکیل می‌داد و به روش هرس آلفا-بتا (Alpha-Beta Pruning) آن را کوچک می‌کرد. سپس به کمک تراشه های VLSI به صورت همزمان، تمام مسیر های بازی که احتمال می‌داد کاسپاروف آنها را انتخاب کند روی این درخت بررسی می‌کرد تا بهترین حرکت را پیدا کند.

بخش کوچکی از درخت بازی شطرنج
بخش کوچکی از درخت بازی شطرنج

این روش اگر‌چه در آن زمان توانست قدرت سیستم های کامپیوتری را به عموم مردم نشان دهد، اما در واقع فاقد هرگونه یادگیری، تفکر و تصمیم گیری هوشمند بود و صرفا با سرعت بالایی به دنبال مسیر منتهی به برد در مقابل کاسپاروف می‌گشت و فقط برای بازی با او تنظیم شده بود و البته که کاسپاروف این موضوع را فهمیده بود :))

اما با پیشرفت های اخیر هوش مصنوعی به ویژه یادگیری تقویتی (Reinforcement Learning) و یادگیری ژرف (Deep Learning) افق جدیدی به روی متخصصین هوش مصنوعی باز شد. آنها توانستند سیستم های هوشمندی بسازند که در مقابل خود بازی کرده و قوانین بازی را یاد بگیرند. سپس دقیقا مانند یک موجود هوشمند در مقابل حریف ظاهر شوند و با اخذ بهترین تصمیم در هر لحظه، مخاطبین خود را متحیر کنند.

به عنوان مثال الگوریتم DQN که در سال ۲۰۱۵ توسط Google DeepMind ارایه شد، با ترکیب روش Q-Learning و شبکه های عصبی کانوولوشنال (Convolutional Neural Networks) توانست همچون یک انسان، بازی های Atari 2000 و حتی حقه های آن را به خوبی یاد گرفته و بازی کند.

در سال ۲۰۱۶ دیگر بازی شطرنج برای کامپیوتر ها چالش پیچیده ای نبود و هر گوشی موبایلی به راحتی از پس آن بر می‌آمد، اما بازی Go به مراتب سخت تر و پیچیده تر از بازی شطرنج بود چون حالت ها و انتخاب های بسیار بیشتری را در اختیار بازیکن ها قرار می‌داد. پس وقت آن رسیده بود که یک بار دیگر قدرت کامپیوتر ها، این بار کامپیوتر های هوشمند را به رخ انسان ها کشید.

بنابراین در ۱۵ مارچ ۲۰۱۶ شرکت Google DeepMind با هوش مصنوعی خود موسوم به AlphaGo در مقابل لی سدول، قهرمان ۱۸ دوره مسابقات جهانی Go ظاهر شد و توانست او را شکست دهد

لی سدول، بازنده رقابت تاریخی با هوش مصنوعی AlphaGo
لی سدول، بازنده رقابت تاریخی با هوش مصنوعی AlphaGo

این سیستم در سال ۲۰۱۷ تحت نام AlphaGo Zero هوشمند تر و تقریبا شکست ناپذیر شد. AlphaGo Zero با استفاده از روش های یادگیری تقویتی ژرف (Deep Reinforcement Learning) و روی ۶۴ عدد GPU و ۱۹ عدد CPU بدون هیچگونه دخالت انسانی بازی Go را فقط با ۵ میلیون بار بازی با خودش طی ۳ روز یاد گرفت. این الگوریتم برای اجرا به یک کامپیوتر شخصی معمولی مجهز به چهار عدد TPU نیاز داشت.

و اما امروز…

با دستاوردی که AlphaGo Zero در سال گذشته برای هوش مصنوعی داشت، قطعا سال ۲۰۱۸ نوبت بازی های چند نفره است. از این رو شرکت OpenAI که در سال ۲۰۱۵ توسط Elon Musk پایه گذاری شد، پیش قدم شده و یک هوش مصنوعی بسیار پیشرفته به نام OpenAI Five را برای بازی Dota 2 خلق کرده است. Dota 2 یک بازی ویدیویی چندنفره آنلاین در ژانر استراتژیک است که در آن هر تیم با پنج بازیکن (قهرمان) که هر کدام می‌توانند یکی از ۱۱۷ نوع قهرمان موجود در بازی باشند در مقابل تیم حریف بازی کرده و سعی در تخریب ساختمان های باستانی حریف را دارد.

بازی ویدیویی Dota 2
بازی ویدیویی Dota 2

هوش مصنوعی OpenAI Five از روش یادگیری تقویتی ژرف (Deep Reinforcement Learning) و الگوریتم Proximal Policy Optimization استفاده کرده و به ازای هر کدام از قهرمان های بازی، یک شبکه عصبی بازگشتی از نوع LSTM را آموزش می‌دهد. این سیستم روزانه به اندازه ۱۸۰ سال با خودش بازی می‌کند و طی دو هفته آموزش روی ۲۵۶ عدد GPU و ۱۲۸۰۰۰ هسته CPU قادر خواهد بود که بازیکنان حرفه ای را مغلوب خود کند.

مسابقات جهانی Dota 2 سال ۲۰۱۸
مسابقات جهانی Dota 2 سال ۲۰۱۸

اگرچه OpenAI Five در مسابقات جهانی ۲۰۱۸ نهایتا بازی را واگذار کرد اما سبک بازی و سطح هوشمندی آن موفقیت بزرگی برای محققان هوش مصنوعی به حساب می‌آید زیرا نشان داد که در شرایط پیچیده و دشواری که حتی انسان‌ها نیز در آن دچار سردرگمی می‌شوند، قادر خواهد بود با اتخاذ تصمیم درست به اهداف از پیش تعیین شده دست پیدا کند.

در واقع هدف از طراحی این سیستم، پیروزی در مسابقات نیست، بلکه نمایش قدرت هوش مصنوعی و کارایی آن در حل مسایل و چالش های دشوار در دنیای واقعی نظیر مدیریت زیرساخت حمل و نقل شهری است.

برای آشنایی بیشتر با نحوه کار هوش مصنوعی OpenAI Five تماشای ویدیوی Siraj Raval را به شما پیشنهاد می‌کنیم.

منبع: https://vrgl.ir/3YWuP

حمیدرضا حسین خانی