مجله هوش مصنوعی

آخرین اخبار و تکنولوژی های هوش مصنوعی را در اینجا بخوانید.

مجله هوش مصنوعی

آخرین اخبار و تکنولوژی های هوش مصنوعی را در اینجا بخوانید.

10 واقعیت درباره یادگیری ماشین


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

واقعیت ۱: دانشمندان داده و مهندسان یادگیری ماشین ۶۰ الی ۷۰ درصد زمان‌شان را صرف رفع مسائل کیفیت داده می‌کنند.

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

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

واقعیت ۲: مهندسان یادگیری ماشین زمانی برای تنظیم هایپرپارامترها اختصاص نمی‌دهند.

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

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

واقعیت ۳: ساخت مدل کاری نیست که در یک دوره عملیات انجام گیرد و فرایندی تکراری به شمار می‌رود.

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

واقعیت ۴: تنظیم هایپرپارامتر چالش بزرگی در یادگیری بدون نظارت است.

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

واقعیت ۵: یادگیری ماشین خودکار نمی‌تواند جایگزین دانشمندان داده شود.

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

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

واقعیت ۶: مدل‌های یادگیری ماشین Scikit-learn مثل تنسورفلو در صنعت کاربرد گسترده‌ای ندارند.

نکته دیگر درباره یادگیری ماشین این است که اگرچه ابزارهای ارزیابی Scikit-learn از سازگاری بسیار بالایی برخوردارند، اما کاربرد گسترده‌ای در صنعت ندارند. شبکه های عصبی به خوبی در Scikit-learn اجرا نمی‌شوند. Scikit-learn از GPU پشتیبانی نمی‌کند. سایر الگوریتم‌های موجود در عملکرد ضعیف‌تری نسبت به کتابخانه‌هایی مثل XGBoost دارند. همچنین، Scikit-learn عملکرد کُندی در دیتاست‌های بزرگ از خود نشان داده است. در مقابل، تنسورفلو گزینه‌های مناسبی برای شبکه‌های عصبی ارائه می‌کند.

نکته کلیدی: اگر تازه با یادگیری ماشین آشنا شده‌اید، توصیه می‌کنم در ابتدا Scikit-learn را یاد بگیرید تا دانش پایه‌ای خوبی برای ادامه مسیر یادگیری‌تان کسب کرده باشید. سپس، یادگیری کتابخانه تنسورفلو را در اولویت کاری‌تان قرار دهید.

واقعیت ۷: نیازی نیست دانشمندان داده از مسائل ریاضی الگوریتم‌های یادگیری ماشین آگاهی داشته باشند.

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

واقعیت ۸: در یادگیری ماشین، هیچ برنده‌ی مشخصی بین R و پایتون وجود ندارد.

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

واقعیت ۹: SQL مهارت اصلی مهندس یادگیری ماشین است.

چون %۷۰ یادگیری ماشین به کار با داده مربوط می‌شود، زبان پرسمان ساخت‌یافته (SQL) مهارت اصلی مهندس یادگیری ماشین است. شما می‌توانید اسکریپت‌های پایتون و R را در سرورهای SQL اجرا کنید. اگر به دنبال شغلی مرتبط با مهندسی یادگیری ماشین باشید، خواهید دید که SQL یکی از الزامات اصلی است.

واقعیت ۱۰: مدل‌های یادگیری ماشین دنیای واقعی در لپ‌تاپ ساخته نمی‌شوند.

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

منبع: هوشیو

دفترچه راهنمای کتابخانه Matplotlib در پایتون؛ آموزش کامل مصور‌سازی داده‌ها


کتابخانه Matplotlib  پرکاربردترین ابزار پایتون در حوزه مصور‌سازی داده ها است. این کتابخانه در محیط‌های مختلف از جمله سرورهای کاربردی، ‌ابزارهای رابط کاربری گرافیکی، Jupyter notebook، iPython و iPython shell پشتیبانی می‌شود.

معماری کتابخانه Matplotlib

کتابخانه Matplotlib دارای ۳ لایه است که عبارتند از: لایه backend ، لایه artist  و لایه scripting. لایه سمت سرور سه کلاس رابط دارد: ۱. figure canvas که فضایی که نمودار در آن رسم خواهد شد را تعریف می‌کند، ۲. renderer که مسئول رسم نمودار در figure canvas است و ۳. event که با ورودی‌های کاربر مثل کلیک‌ها سروکار دارد. لایهartist  برای رسم نمودار روی صفحه از renderer استفاده می‌کند. بنابراین، هر چیزی که در نمودار رسم‌شده توسط کتابخانه Matplotlib  مشاهده می‌کنید، در حقیقت، مصداقی از یک لایهartist  است. یعنی هر عنوان، برچسب، علامت و حتی خود نمودار یک لایهartist  مجزا هستند. لایه scripting یک رابط سبک‌تر است که برای استفاده روزانه مناسب می‌باشد. در این مقاله، همه مثال‌ها با استفاده از لایه scripting به شما نشان داده می‌شوند و همچنین از محیط Jupyter notebook استفاده خواهم کرد.

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

آماده‌سازی داده‌ها

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

import numpy as np

import pandas as pd

df = pd.read_excel('https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/Canada.xlsx',

sheet_name='Canada by Citizenship',

skiprows=range(۲۰),

skipfooter=۲)

df.head()

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

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

df.columns

#Output:

Index([ 'Type', 'Coverage', 'OdName', 'AREA', 'AreaName', 'REG',

'RegName', 'DEV', 'DevName', ۱۹۸۰, ۱۹۸۱, ۱۹۸۲,

۱۹۸۳, ۱۹۸۴, ۱۹۸۵, ۱۹۸۶, ۱۹۸۷, ۱۹۸۸,

۱۹۸۹, ۱۹۹۰, ۱۹۹۱, ۱۹۹۲, ۱۹۹۳, ۱۹۹۴,

۱۹۹۵, ۱۹۹۶, ۱۹۹۷, ۱۹۹۸, ۱۹۹۹, ۲۰۰۰,

۲۰۰۱, ۲۰۰۲, ۲۰۰۳, ۲۰۰۴, ۲۰۰۵, ۲۰۰۶,

۲۰۰۷, ۲۰۰۸, ۲۰۰۹, ۲۰۱۰, ۲۰۱۱, ۲۰۱۲,

۲۰۱۳],

dtype='object')


df.drop(['AREA','REG','DEV','Type','Coverage'], axis=۱, inplace=True)

df.head()

به نام ستون‌ها دقت کنید، ستون OdName حاوی نام کشورها، AreaName نام قاره‌ای که کشور مذکور در آن قرار دارد و RegName نیز نام منطقه‌ای که کشور مربوطه در آن واقع شده، می‌باشند. اما من می‌خواهم نام ستون‌ها را تغییر دهم تا گویاتر و قابل‌فهم باشند.

df.rename(columns={'OdName':'Country', 'AreaName':'Continent', 'RegName':'Region'}, inplace=True)

df.columns

#Output:

Index([ 'Country', 'Continent', 'Region', 'DevName', ۱۹۸۰,

۱۹۸۱, ۱۹۸۲, ۱۹۸۳, ۱۹۸۴, ۱۹۸۵,

۱۹۸۶, ۱۹۸۷, ۱۹۸۸, ۱۹۸۹, ۱۹۹۰,

۱۹۹۱, ۱۹۹۲, ۱۹۹۳, ۱۹۹۴, ۱۹۹۵,

۱۹۹۶, ۱۹۹۷, ۱۹۹۸, ۱۹۹۹, ۲۰۰۰,

۲۰۰۱, ۲۰۰۲, ۲۰۰۳, ۲۰۰۴, ۲۰۰۵,

۲۰۰۶, ۲۰۰۷, ۲۰۰۸, ۲۰۰۹, ۲۰۱۰,

۲۰۱۱, ۲۰۱۲, ۲۰۱۳],

dtype='object')

به این ترتیب، نام ستون‌های دیتاست به Country به معنی کشور، Continent به معنی قاره، Region به معنی منطقه و DevName که بیان‌گر توسعه‌یافته یا درحال‌توسعه بودن کشور است، تغییر پیدا کردند. ستون‌هایی که نام آن‌ها نشان‌دهنده یک سال خاص است، حاوی شمار مهاجرانی که هستند که در آن سال وارد کانادا شده‌اند. حالا می‌خواهم یک ستون جدید به نام total اضافه کنم که به ما بگوید چه تعداد مهاجر بین سال ۱۹۸۰ تا ۲۰۱۳ به کانادا آمده‌اند.

df['Total'] = df.sum(axis=۱)

همان‌طور که مشاهده می‌کنید، یک ستون جدید به نام Total به انتهای دیتاست افزوده شده است.

حالا باید بررسی کنیم و ببینیم آیا سلول خالی یا سلولی حاوی مقدار null در ستون‌ها وجود دارد؟

df.isnull().sum()

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

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

df = df.set_index('Country')

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

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

df = df.set_index('Country')

تمرین‌های رسم نمودار در کتابخانه Matplotlib

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

%matplotlib inline

import matplotlib.pyplot as plt

import matplotlib as mpl

اگر از همان ابتدا سبک نمودار خود را انتخاب کنید، دیگر لازم نخواهد بود روی جنبه‌های هنری آن زمان زیادی بگذارید. در زیر لیست گزینه‌های موجود را مشاهده می‌فرمایید:

plt.style.available

#Output:

mpl.style.use(['ggplot'])

'classic',

'dark_background',

'fast',

'fivethirtyeight',

'ggplot',

'grayscale',

'seaborn-bright',

'seaborn-colorblind',

'seaborn-dark-palette',

'seaborn-dark',

'seaborn-darkgrid',

'seaborn-deep',

'seaborn-muted',

'seaborn-notebook',

'seaborn-paper',

'seaborn-pastel',

'seaborn-poster',

'seaborn-talk',

'seaborn-ticks',

'seaborn-white',

'seaborn-whitegrid',

'seaborn',

'Solarize_Light2',

'tableau-colorblind10',

'_classic_test']

من در این‌جا گزینه ggplot را برای نمودارم انتخاب می‌کنم. شما می‌توانید گزینه‌های دیگر را نیز امتحان کرده و سبک موردعلاقه خود را برگزینید.

نمودار خطی

به نظر من به تصویر کشیدن تمایل کشورهای مختلف به مهاجرت به کانادا جالب خواهد بود. به این منظور، ابتدا یک لیست از سال‌هایی که در دیتاست داریم (یعنی۱۹۸۰ تا ۲۰۱۴) ایجاد می‌کنم.

years = list(map(int, range(۱۹۸۰, ۲۰۱۴)))

برای این نمودار کشور سوئیس را انتخاب کردم و می‌خواهم داده‌های مربوط به آن را روی نمودار نمایش دهم. پس باید داده‌های مهاجرت مردم سوئیس به کانادا را در هر سال تهیه کنم.

df.loc['Switzerland', years]

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

df.loc['Switzerland', years].plot()

plt.title('Immigration from Switzerland')

plt.ylabel('Number of immigrants')

plt.xlabel('Years')

plt.show()

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

ind_pak_ban = df.loc[['India', 'Pakistan', 'Bangladesh'], years]

ind_pak_ban.head()

فرمت داده‌ها در این‌جا با مثال قبلی متفاوت است. اگر تابع plot را روی همین دیتافریم اعمال کنیم، روی محور xها تعداد مهاجران هر کشور و روی محور yها، سال را خواهیم داشت. پس باید فرمت دیتاست را تغییر دهیم:

ind_pak_ban.T

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

در این مثال لازم نبود نام نمودار را ذکر کنیم، زیرا پیش‌فرض این تابع، نمودار خطی است.

ind_pak_ban.T.plot()

نمودار دایره‌ای

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

cont = df.groupby('Continent', axis=۰).sum()

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

cont['Total'].plot(kind='pie', figsize=(۷,۷),

autopct='%۱.۱f%%',

shadow=True)

#plt.title('Immigration By Continenets')

plt.axis('equal')

plt.show()

اگر به این کد دقت کنید، می‌بینید که تابع ما دارای پارامتری به نام «kind» است. غیر از نمودار خطی، باید نوع سایر نمودارها را با این پارامتر تعیین کنید. همچنین پارامتر جدیدی به نام «figsize» در تابع تعریف کرده‌ام که ابعاد نمودار را تعیین می‌کند.

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

colors = ['lightgreen', 'lightblue', 'pink', 'purple', 'grey', 'gold']

explode=[۰.۱, ۰, ۰, ۰, ۰.۱, ۰.۱]

cont['Total'].plot(kind='pie', figsize=(۱۷, ۱۰),

autopct = '%۱.۱f%%', startangle=۹۰,

shadow=True, labels=None, pctdistance=۱.۱۲, colors=colors, explode = explode)

plt.axis('equal')

plt.legend(labels=cont.index, loc='upper right', fontsize=۱۴)

plt.show()

نمودار جعبه‌ای

در این مثال ابتدا نمودار جعبه‌ای برای شمار مهاجران چینی رسم می‌کنیم.

china = df.loc[['China'], years].T

این از داده‌های موردنیاز‌مان؛ حالا برویم سراغ رسم نمودار جعبه‌ای:

china.plot(kind='box', figsize=(۸, ۶))

plt.title('Box plot of Chinese Immigratns')

plt.ylabel('Number of Immigrnts')

plt.show()

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

امکان رسم چندین نمودار جعبه‌ای در یک نمودار هم وجود دارد. در این‌جا با استفاده از دیتافریم قبلی یعنی «ind_pak_ban»، نمودار جعبه‌ای هر سه کشور هند، پاکستان و بنگلادش را روی یک نمودار رسم می‌کنم.

ind_pak_ban.T.plot(kind='box', figsize=(۸, ۷))

plt.title('Box plots of India, Pakistan and Bangladesh Immigrants')

plt.ylabel('Number of Immigrants')

نمودار پراکنش

رسم یک نمودار پراکنش بهترین راه برای شناسایی رابطه میان متغیرهاست. نمودار پراکنش را رسم کنید تا روند مهاجرت به کانادا طی سال‌های ۱۹۸۰ تا ۲۰۱۳ را مشاهده کنید.

برای رسم این نمودار یک دیتافریم جدید ایجاد می‌کنم که حاوی تعداد کل مهاجرانی است که در هر سال به کانادا مهاجرت کرده‌اند و متغیر years در آن به عنوان شاخص درنظر گرفته شده است.

totalPerYear = pd.DataFrame(df[years].sum(axis=۰))

totalPerYear.head()

ما باید نوع متغیر years را به عدد صحیح یا int تبدیل کنیم. در ادامه قصد دارم اندکی دیتاست را دستکاری کنم تا درک آن آسان‌تر شود.

totalPerYear.index = map(int, totalPerYear.index)

totalPerYear.reset_index(inplace=True)

totalPerYear.head()

در نمودار پراکنش باید محور xها و yها را مشخص کنیم.

totalPerYear.plot(kind='scatter', x = 'year', y='total', figsize=(۱۰, ۶), color='darkred')

plt.title('Total Immigration from 1980 - 2013')

plt.xlabel('Year')

plt.ylabel('Number of Immigrants')

plt.show()

به نظر می‌رسد بین دو متغیر سال و تعداد مهاجران یک رابطه خطی وجود دارد و روند مهاجرت از سال ۱۹۸۰ تا ۲۰۱۳ روندی صعودی داشته است.

نمودار ناحیه‌ای

نمودار ناحیه‌ای در حقیقت سطح زیر منحنی خطی را نمایش می‌دهد. برای رسم این نمودار می‌خوام از دیتافریمی استفاده کنم که حاوی داده‌های مربوط به ۴ کشور هند، چین، پاکستان و فرانسه است.

top = df.loc[['India', 'China', 'Pakistan', 'France'], years]

top = top.T

دیتاست ما آماده است، حالا نوبت رسم نمودار است.

colors = ['black', 'green', 'blue', 'red']

top.plot(kind='area', stacked=False,

figsize=(۲۰, ۱۰), colors=colors)

plt.title('Immigration trend from Europe')

plt.ylabel('Number of Immigrants')

plt.xlabel('Years')

plt.show()

در کتابخانه Matplotlib اگر می‌خواهید نمودار هر کشور به صورت جداگانه رسم شود، یادتان باشد که مقدار پارامتر «stacked» را حتماً برابر False قرار دهید، در غیر این صورت نمودار شما به شکل زیر خواهد شد:

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

هیستوگرام

نمودار هیستوگرام توزیع یک متغیر را نشان می‌دهد. به مثال زیر توجه کنید:

df[۲۰۰۵].plot(kind='hist', figsize=(۸,۵))

plt.title('Histogram of Immigration from 195 Countries in 2010')

# add a title to the histogram

plt.ylabel('Number of Countries')

# add y-label

plt.xlabel('Number of Immigrants')

# add x-label

plt.show()

روی این نمودار هیستوگرام ۲۰۰۵ داده را به تصویر کشیده‌ام. از این نمودار پیداست که کانادا از اکثر کشورها بین ۰ تا ۵۰۰۰ مهاجر داشته است. و تنها تعداد محدودی کشور بوده‌اند که ۲۰۰۰۰ یا ۴۰۰۰۰ هزار مهاجر به کانادا داشته‌اند.

حالا بیایید با استفاده از دیتافریم top که برای نمودار پراکنش تعریف کرده بودیم، توزیع مهاجران هر کشور را نیز رسم کنیم.

top.plot.hist()

plt.title('Histogram of Immigration from Some Populous Countries')

plt.ylabel('Number of Years')

plt.xlabel('Number of Immigrants')

plt.show()

در نمودار هیستوگرام قبلی دیدیم که کشورهای کمی بودند که ۲۰۰۰۰ یا ۴۰۰۰۰ هزار مهاجر به کانادا داشتند. به‌نظر می‌رسد که چین و هند در میان این کشورها قرار دارند. در این نمودار، حاشیه میان «ستون‌ها» واضح نیست. پس بیایید نمودار بهتری رسم کنیم.

تعیین تعداد ستون‌ها و مشخص کردن حاشیه ستون‌ها در کتابخانه Matplotlib

در این نمودار ۱۵ ستون رسم خواهم کرد. همچنین، یک پارامتر جدید به نام alpha به مدل اضافه می‌کنم که شفافیت رنگ‌ها را تعیین می‌کند. در نمودارهایی مثل این نمودار که ستون‌ها روی هم قرار می‌گیرند، با تغییر میزان شفافیت می‌توان شکل همه توزیع‌ها را مشاهده کرد.

count, bin_edges = np.histogram(top, ۱۵)

top.plot(kind = 'hist', figsize=(۱۴, ۶), bins=۱۵, alpha=۰.۶,

xticks=bin_edges, color=colors)

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

همان‌طور که در نمودار ناحیه‌ای دیدید، با تعریف مقدار True پارامتر stacked  می‌توان از روی هم قرار گرفتن نمودارها جلوگیری کرد.

top.plot(kind='hist',

figsize=(۱۲, ۶),

bins=۱۵,

xticks=bin_edges,

color=colors,

stacked=True,

)

plt.title('Histogram of Immigration from Some Populous Countries')

plt.ylabel('Number of Years')

plt.xlabel('Number of Immigrants')

plt.show()

نمودار میله‌ای

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

france = df.loc['France', years]

france.plot(kind='bar', figsize = (۱۰, ۶))

plt.xlabel('Year')

plt.ylabel('Number of immigrants')

plt.title('Immigrants From France')

plt.show()

می‌توانید اطلاعات بیشتری نیز به نمودار اضافه کنید. در این نمودار از سال ۱۹۹۷ به بعد و برای یک دهه کامل، شاهد روند صعودی هستیم که ذکر کردن آن خالی از لطف نخواهد بود. این کار را می‌توان به کمک تابع annotate انجام داد.

france.plot(kind='bar', figsize = (۱۰, ۶))

plt.xlabel('Year')

plt.ylabel('Number of immigrants')

plt.title('Immigrants From France')

plt.annotate('Increasing Trend',

xy = (۱۹, ۴۵۰۰),

rotation= ۲۳,

va = 'bottom',

ha = 'left')

plt.annotate('',

xy=(۲۹, ۵۵۰۰),

xytext=(۱۷, ۳۸۰۰),

xycoords='data',

arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='black', lw=۱.۵))

plt.show()

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

france.plot(kind='barh', figsize=(۱۲, ۱۶), color='steelblue')

plt.xlabel('Year') # add to x-label to the plot

plt.ylabel('Number of immigrants') # add y-label to the plot

plt.title('Immigrants From France') # add title to the plot

for index, value in enumerate(france):

label = format(int(value), ',')

plt.annotate(label, xy=(value-۳۰۰, index-۰.۱), color='white')

plt.show()

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


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

منبع: هوشیو

خلاقیت افزوده : چگونه هوش مصنوعی می‌تواند ابتکار و خلاقیت انسان را سرعت ببخشد؟


در سال ۲۰۱۲، اقتصاددانی به نام رابرت گوردون یک مقاله جنجالی منتشر کرد که در آن استدلال کرد رشد اقتصادی تقریبا به پایان رسیده است و دلیل عمده این مساله این است که ما در دهه‌های اخیر نتوانسته‌ایم موتورهای نوآوری را حفظ کنیم. مطالعه‌ای که در انستیتوی تحقیقات سیاست اقتصادی استنفورد انجام شد نظریه عمومی وی را تأیید کرد. در این مقاله آمده است با وجود اینکه در سال‌های اخیر هزینه بیشتری صرف خلاقیت افزوده و نوآوری شده است اما بازده ما کاملاً ثابت بوده و تغییر چندانی نکرده است. این سرمایه‌گذاری تنها مادی نیست، زیرا تحقیقات نشان می‌دهد تعداد افرادی که امروز در بخش تحقیق و توسعه مشغول به کار هستند نسبت به سال ۱۹۳۰ تقریباً ۲۰ برابر شده است.

موضوع چیست؟ چرا خلق بسیاری چیزهای جدید تا این اندازه سخت شده است؟ محققان دانشگاه نورث وسترن تلاش کردند در مقاله‌ای به این مسئله پاسخ دهند. آن‌ها می‌گویند بسیاری از ساخته‌های امروز همان چیزی است که به عنوان ترکیب مجدد شناخته می‌شود. در واقع، ۴۰٪ از کل حق ثبت اختراعات موجود در اداره ثبت اختراعات و علائم تجاری آمریکا کارهای جدیدی نیستند، بلکه بیشتر ایده‌های موجود است که با یکدیگر ترکیب شده‌اند.

کمک مصنوعی

یافتن راه‌های موثر برای تلفیق ایده‌های موجود، به هیچ وجه آسان نیست. مهم‌ترین دلیل این موضوع افزایش حجم تولید موضوعات منتشر شده است. به عنوان مثال در چند ماه اول بیماری کووید ۱۹ حدود ۲۳۰۰۰ مقاله در مورد این ویروس منتشر شده است که هر ۲۰ روز این تعداد دو برابر می‌شود.

در این میان جامعه علم داده در کاگل دور هم جمع شدند تا برای تهیه یک مقاله مروری مبتنی بر هوش مصنوعی که می‌تواند حجم عظیمی از مطالب جدید را درک و پردازش کند تلاش کنند. برای این منظور نقاط داده از مقالات جمع آوری شد و در ۱۷ دسته گروه‌بندی شد و مقالات هر گروه لیست شدند. این ممکن است بهترین رویکرد نباشد اما به دلیل محدودیت زمانی است که توسط کووید ۱۹ ایجاد شده قابل قبول است.

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

خلاقیت تقویت شده

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

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

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

شبیه‌سازی دقیق‌تر

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

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

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

عبور از دره مرگ

تخمین زده می‌شود که ۹۵٪ از اختراعات ثبت شده مجوز ندارند یا به نوعی تجاری‌سازی نمی‌شوند، حتی در صنایع مختلف مانند تلویزیون و داروسازی، شکست به جای اینکه استثنا باشد یک قاعده است و بهترین پروژه‌ها اغلب راه به جایی نمی‌برند.

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

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

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

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

شرکای ایده آل

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

وینستون چرچیل اظهار نظر مشهوری دارد که می‌گوید هرگز نباید فرصت استفاده از یک بحران را هدر داد. این در حالی است که اتفاق نظر وجود دارد که ما نتوانستیم از بحران مالی ۲۰۰۸ آنطور که باید و شاید استفاده کنیم اما در مورد کووید ۱۹ یک انگیزه اجتماعی در حال رشد وجود دارد که پس از عبور از این بحران جهان به جای بهتری تبدیل شود. مایکل همر ۳۰ سال پیش به تندی این موضوع را به ما گوشزد کرد که فناوری وقتی بهترین نتیجه را به همراه خواهد داشت که همه کارهای ما را انجام ندهد و به جای آن به ما اجازه دهد تا به طور اساسی در مورد این موضوع فکر کنیم که دنیای اطراف ما چگونه ممکن است باشد و یا تبدیل به چه شود؟

برخلاف بحران سال ۲۰۰۸ اکنون در عصری به سر می‌بریم که هوش مصنوعی می‌تواند کمک قابل‌توجهی به ما بکند. بیماری کووید ۱۹ سختی‌های بسیاری را به وجود آورده است، اما اگر از این اتحاد جمعی که به وجود آمده بهره ببریم و از هوش مصنوعی برای ساخت جامعه بهتر برای همه استفاده کنیم، ادامه راه راحت‌تر خواهد شد.

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

منبع: hooshio.com

سگ های رباتیک برای یادگیری از کودک انسان تقلید می‌کنند


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

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

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

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

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

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

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

منبع: hooshio.com

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


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

به نظر می‌رسد این توانایی‌های رباتیک بدون زیر سوال بردن مهارت‌های انسانی می‌توانند به عنوان مکملی برای شهود انسانی ما باشند و منبع الهام هنرمندان در روند خلاقیت و ایده‌های خود باشد.

در اینجا با ۴ ربات برجسته آشنا می‌شوید که به خلاقیت و آنچه که آن‌ها به هنرمندان می‌آموزند شناخته می‌شوند:

کاربرد هوش مصنوعی در هنر با ربات نقاش

مجموعه هنری پاریسی Obvious در تلاش است تا با به کارگیری هوش مصنوعی در هنر و نقاشی، مرزهای بین هنر انسانی و هنر رباتیک و هوش مصنوعی را درنوردد. فناوری این کار ساده است: ابتدا با بیش از ۱۵۰۰۰ پرتره نقاشی که از قرن ۱۴ تا امروز کشیده شده‌اند، الگوریتم‌ها تغدیه می‌شوند. سپس الگوریتم عصبی اول، یاد می‌گیرد که نسخه‌های متعددی از این نقاشی‌ها ایجاد کند بعد از آن الگوریتم عصبی دوم تفاوت بین تصویر تولیدشده و تصویر اولیه را ارزیابی می‌کند.

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

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

نتیجه این کار، چندین اثر فریبنده بود که درک و خلاقیت انسان را زیر سوال برد. به حدی که یکی از فروشندگان آثار هنری توانست یک اثر جذاب را به نام «Edmund de Belamy» به قیمت بیش از ۴۳۲.۵۰۰ دلار بفروشد.

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

آلفاگو پیروز بازی Go

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

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

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

لی سدول می‌گوید: من فکر کردم آلفاگو بر اساس محاسبات احتمال است و این فقط یک ماشین است. اما وقتی این حرکت را دیدم، نظرم عوض شد. مطمئنا آلفاگو بسیار خلاق است.

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

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

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

او یک الگوریتم را به نام Experiments in Intelligence آموزش داد تا کارهای آهنگسازان بزرگی مانند باخ، موتزارت و شوپن را به دقت بررسی کند. دیوید کوپ از این الگوریتم خواست تا بر اساس الگوی موجود در آثار و ترتیب منطقی نت‌ها که به طور منظم در آثار آهنگسازان دیده می‌شود یک قطعه بسازد.

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

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

با کمال تعجب، قطعه ساخته شده توسط امی به عنوان اثر باخ مشخص شد، در حالی که دیگری به عنوان یک کپی «غیر احساسی» شناخته شد. با انتشار این خبر، حضار شوکه شدند. سوال این است چگونه یک ماشین می‌تواند این همه احساسات و صدای تا این حد جدید را ایجاد کند؟

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

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

وقتی هوش مصنوعی رمان می‌نویسد

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

در این مسابقه، الگوریتم رمان‌نویس نه صرفا به دلیل خلاقیت عالی و سبک نوشتن، بلکه به خاطر دادن فرصتی به ماشین‌ها برای رساندن صدای خود به همه‌گان برجسته شد.
نام یکی از رمان‌های نوشته شده به وسیله ماشین‌ها The Seeker بود. قرار بود یک کامپیوتر سعی کند از سایت WikiHow در مورد انسان‌ها اطلاعاتی کسب کند و سپس در این مورد بنویسد.
فرایند اینگونه بود که ماشین در مرحله اول مقاله‌های WikiHow را به صورت تصادفی انتخاب و تجزیه وتحلیل می‌کرد و در مراحل و دوم و سوم سعی در دادن معنا به این متون داشت. هربار که ماشین اطلاعاتی را استخراج می‌کرد، با معانی مختلفی از واژه و متونی که با آن‌ها سروکار داشت آشنا می‌شد. این فرایند آگاه شدن تقریباً شبیه رفتار انسان است زمانی که تلاش می‌کند زبانی را که با آن سروکار دارد تعریف و توضیح دهد.
نتایج بسیار شگفت‌انگیز بود. این نشان می‌دهد که از طریق دیدگاه ماشینی دریچه‌های نوینی بر روی نویسندگان باز می‌شود. ادبیات آینده می‌تواند بیش از پیش از «آگاهی‌های رباتیک» الهام بگیرد. اگرچه هوش مصنوعی به خلاقیت انسانی شبیه نیست اما شمه‌هایی از آن را تاکنون دیده‌ایم. این کارها مطمئناً می‌تواند درک هنری ما را عمق بخشد. همین کافی است که در این مورد مشتاق باشیم.

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

منبع: hooshio.com