در مقاله روش های یادگیری جمعی آخرین الگوریتم یادگیری ماشین را بررسی کردیم. پس از بررسی زیربنای آماری تعداد زیادی از الگوریتمها، زمان آن رسیده که یک مدل یادگیری ماشین با پایتون بسازیم. اما قبل از آن باید زبان های برنامه نویسی یادگیری ماشین را بشناسیم و یکی از آن ها را انتخاب کنیم. در این مقاله ابتدا بهترین زبان های برنامه نویسی یادگیری ماشین را معرفی می کنیم و سپس وارد دنیای GPU می شویم و از کاربرد آن در هوش مصنوعی می گوییم.
. . . .
پیش پردازش در یادگیری ماشین چیست؟
برای پردازش داده در یادگیری ماشین، به یک IDE برای نوشتن کدها نیاز دارید که احتمالاً از یک وب اپلیکیشن (Web application) (مثل Jupyter Notebook) و یک زبان برنامهنویسی مثل پایتون استفاده میکنید. پس از آن مجموعهای از کتابخانههای یادگیری ماشین از جمله Numpy ،Pandas و Scikit-learn که با پایتون سازگار هستند، استفاده میشود. کتابخانههای یادگیری ماشین مجموعهای از برنامههای از قبل کامپایل شدهای هستند که بسیار پرکاربرد هستند.
همچنین برای کار با دادهها نیازمند یک ماشین هستید که میتواند یک کامپیوتر یا یک سرور مجازی باشد.
علاوهبرآن، برای بصریسازی (Visualization) دادهها نیازمند کتابخانههای خاصی مثل Seaborn و Matplotlib هستید، یا یک نرمافزار مستقل مثل Tableau که طیفی از انواع تکنیکهای بصریسازی از جمله نمودارها، گرافها، نقشهها را شامل میشود.
با تهیه زیرساخت اولیه، ساخت اولین مدل یادگیری ماشین آغاز میشود. قدم اول این است که کامپیوتر خود را آماده کنید. لپتاپ یا کامپیوترهای رومیزی هر دو برای کار با مجموعهدادههای کوچک مناسب هستند. بعد از آن باید یک محیط برنامهنویسی مثل Notebook Jupyter را نصب کنید و یک زبان برنامهنویسی انتخاب کنید. در ادامه با زبان های برنامه نویسی یادگیری ماشین مختلف آشنا می شویم.
معرفی زبان های برنامه نویسی یادگیری ماشین
پایتون به دلیل کتابخانه های قدرتمندی که دارد، بهترین زبان بین زبان های برنامه نویسی یادگیری ماشین است. برای افرادی که به دنبال زبان برنامه نویسی ماشین لرنینگ دیگری (فرای پایتون) باشند، علاوه بر C و ++C زبانهای Matlab، R و Octave پیشنهاد میشود. در ادامه هر یک از این زبان ها بررسی می شوند.
زبان برنامه نویسی پایتون (Python) چیست ؟
پایتون از پراستفادهترین زبان های برنامه نویسی یادگیری ماشین است چرا که:
الف) یادگیری و کار با آن آسان است.
ب) با طیف بزرگی از کتابخانههای یادگیری ماشین سازگار است و
ج) برای کارهای مرتبط قابل استفاده است، از جمله جمعآوری داده (وب اسکرپینگ، Web scraping) و ایجاد جریان داده (Data piping) (Hadoop و Sparks)
دوره آموزشی: میخواهید دادههایتان را خودتان جمع آوری کنید و یک دیتاست برای خودتان بسازید؟ پس دوره آموزش پروژه محور وب اسکرپینگ را در کانال یوتیوب دیتاهاب ببینید.
مهمترین کتابخانههای یادگیری ماشین پایتون
کاربران پایتون معمولاً این کتابخانهها را نصب میکنند: Numpy، Pandas و Scikit-learn.
-
کتابخانه Numpy
یک کتابخانه رایگان و متنباز (Open-source) است که امکان بارگذاری بهینه مجموعهدادههای بزرگ و انجام کارهایی از جمله مدیریت ماتریسها را میدهد.
-
کتابخانه Scikit-learn یا Sklearn
دسترسی به طیف گستردهای از الگوریتمهای معروف، از جمله رگرسیون خطی، دستهبند بیز (Bayes’ classifier) و ماشین بردار پشتیبان (SVM: Support Vector Machine) را فراهم میکند.
-
کتابخانه Pandas
امکان نمایش مجموعهدادهها در قالب یک صفحه گسترده (Speared sheet) مجازی را فراهم میکند و با کدنویسی، جنبههای مختلف آن قابل کنترل است. Pandas ویژگیهای مشترک زیادی با مایکروسافت اکسل دارد از جمله امکان ویرایش داده و انجام محاسبات روی آن. Pandas از عبارت Panel data (تابلوی داده) به معنای توانایی تولید مجموعهای از تابلوها، برگرفته شده است – منظور از تابلو چیزی شبیه به برگها (Sheets) در اکسل است. Pandas همینطور برای کار با دادههای موجود در فایلهای CSV مناسب است.
شکل زیر پیشنمایش یک جدول در Notebook Jupyter با استفاده از Pandas را نشان می دهد.
به طور خلاصه، کاربر میتواند بر روی این سه کتابخانه کار کند تا:
- با استفاده از NumPy مجموعهدادهها را بارگذاری و با آنها کار کند.
- با استفاده از Pandas از فایلهای CSV، داده را استخراج کند، آن را تمیز کند و روی آن محاسبات انجام بدهد.
- با استفاده از Scikit-learn الگوریتمها را پیادهسازی کند.
دوره آموزشی: تا اینجا مشخص شد که پایتون از بهترین زبان های برنامه نویسی یادگیری ماشین است. اگه هنوز پایتون یاد نگرفتی دوره آموزش پایتون ویژه هوش مصنوعی را در کانال یوتیوب دیتاهاب ببینید.
برنامه نویسی هوش مصنوعی با C++
اگر در کار با C و ++C ماهر هستید پس عاقلانهتر این است که از همین زبانهایی که در آنها متبحر هستید استفاده کنید. C و ++C زبان های برنامه نویسی یادگیری ماشین پیشرفته هستند چون مستقیماً روی یک GPU (واحد پردازش گرافیکی، Graphical Processing Unit) قابلاجرا هستند. ولی پایتون باید قبل از اجرا بر روی GPU، تبدیل بشود. در این باره و اینکه GPU چیست در ادامه مقاله صحبت خواهیم کرد.
آموزش یادگیری ماشین به زبان آر R
R از زبان های برنامه نویسی یادگیری ماشین رایگان و متنباز است که برای انجام اعمال ریاضی بهینهسازیشده و برای ساخت ماتریسها و توابع آماری مناسب است – این موارد در R پیادهسازی شدهاند. اگرچه زبان برنامه نویسی ماشین لرنینگ R عموماً برای تحلیل داده (Data analytics) و دادهکاوی (Data mining) مورداستفاده قرار میگیرد، ولی از یادگیری ماشین نیز پشتیبانی میکند.
آشنایی با زبان زبان های برنامه نویسی MATLAB و Octave
MATLAB و Octave رقبای جدی R هستند. زبان برنامه نویسی ماشین لرنینگ متلب، یک زبان تجاری و اختصاصی در زمینه حل معادلات جبری قوی است که یادگیری آن آسان است. متلب به طور گستردهای در مهندسی برق، مهندسی شیمی، مهندسی عمران و مهندسی هوافضا مورداستفاده قرار میگیرد. بااینحال، دانشمندان کامپیوتر و مهندسین کامپیوتر، خصوصاً در سالهای اخیر، استقبال آنچنانی نسبت به متلب نشان ندادهاند. از قابلیتهای متلب در یادگیری ماشین در کارهای آموزشی استفاده بیشتری نسبت به کارهای صنعتی شده است. در نتیجه، حتی اگر برخی از کلاسهای آنلاین آموزشی زبان برنامه نویسی ماشین لرنینگ متلب را تدریس کنند، بهخصوص در Coursera، به این معنی نیست که در صنعت معمولاً از متلب استفاده میکنند. بااینحال، اگر در یکی از رشتههای مهندسی پیشزمینه دارید، متلب میتواند یک انتخاب منطقی برایتان باشد. در آخر، زبان برنامه نویسی ماشین لرنینگ Octave در واقع یک ورژن رایگان شده از متلب است که توسط انجمن متنباز ارائه شده است.
حال که زبان های برنامه نویسی یادگیری ماشین را شناختیم، بهتر است با زیرساخت های هوش مصنوعی و GPU نیز آشنا شویم.
دوره آموزشی: برای ورود به دنیای پروژههای یادگیری ماشین، دوره آموزش یادگیری ماشین به زبان ساده با پایتون را در کانال یوتیوب دیتاهاب ببینید.
زیرساختهای هوش مصنوعی؛ نقش GPU چیست؟
باتوجهبه اینکه یادگیرندههای پیشرفته با دادههای در حد پتابایت سروکار دارند، نیازمند زیرساخت قدرتمند هستند. بهجای استفاده از CPU یک کامپیوتر شخصی، در پروژه های پیشرفته معمولاً از محاسبات توزیع شده (Distributed computing) و سرویسهای ابری (Cloud provider) مثل وبسرویس آمازون (AWS: Amazon Web Services) برای پردازش دادهها استفاده میشود. این سرویسها از واحد پردازش گرافیکی (GPU: Graphical Processing Unit) بهجای CPU استفاده میکنند.
چیپهای GPU در ابتدا بر روی مادربورد (Motherboard) کامپیوترهای شخصی و کنسولهای بازیهای ویدئویی مثل PlayStation 2 و Xbox اضافه شدند. این چیپها برای افزایش سرعت تولید تصاویر خروجی (در زمانی کمتر از یک ثانیه) ارائه شدند. هرکدام از این تصاویر شامل میلیونها پیکسل بوده و هر فریم از آنها باید بهصورت مداوم بازمحاسبه بشوند. تا سال 2005 تعداد زیادی چیپ GPU تولید شد که کاهش شدید قیمت آنها را به همراه داشت و عملاً به یک کالای تجاری تبدیل شدند. با اینکه در صنعت بازیهای ویدئویی این چیپها بسیار معروف بودند، ولی تا سالهای اخیر کاربردشان در فضای یادگیری ماشین بهدرستی فهمیده و درک نشده بود.
زیرساختهای مورد نیاز هوش مصنوعی و اهمیت GPU در آنها
کلوین کلی (Kevin Kelly)، سردبیر اجرایی مجله Wired، در رمانش (The Inevitable: Understanding the 12 Technological Forces That Will Shape Our Future) که در سال 2016 منتشر شد، توضیح میدهد که در سال 2009، اندرو انگ (Andrew Ng) و یک تیم در دانشگاه استنفورد متوجه شدند که چطور از اتصال خوشههای ارزان GPU برای اجرای شبکههای عصبی تشکیل شده از چند صد میلیون اتصال بین گرهها (Node) استفاده کنند.«پردازندههای سنتی برای محاسبه تمام ترکیبهای احتمالات در یک شبکه عصبی با صد میلیون پارامتر چندین هفته زمان لازم داشتند. اندرو دریافت که همین کار را خوشهای از GPUها در یک روز انجام میدهند.»
بهعنوان یک چیپ محاسباتی موازی مخصوص، واحدهای GPU در مقایسه با CPU، تعداد بسیار بیشتری عملیات اعشاری را در یک ثانیه انجام میدهند که باعث انجام سریعتر عملیاتهای جبر خطی و آمار میشود.
نکته مهم این است که C و ++C زبانهای مناسبتری برای ویرایش و انجام عملیات ریاضی بر روی GPU هستند. البته از پایتون هم میتوان استفاده کرد و سپس آن را به C تبدیل کرد (استفاده از کتابخانه Tensorflow گوگل).
آیا هوش مصنوعی به GPU نیاز دارد؟
اگرچه امکان اجرای Tensorflow بر روی CPU وجود دارد، ولی با استفاده از GPU میتوان سرعت را تا حدود 1000 برابر افزایش داد. متأسفانه برای محور y ، TensorFlow فقط با GPU Nvidia card سازگار است و محور y OS X در دسترس نیست. کاربران Mac هنوز میتوانند TensorFlow را روی CPU اجرا کنند اما برای انجام کارهای خود در بسترهای ابری و استفاده از GPU باید به سراغ طراحی درایور patch/external بروند.
بهترین پلتفرم های ابری هوش مصنوعی
Amazon Web Services، Microsoft Azure، Alibaba Cloud، Google Cloud Platform و دیگر ارائهدهندگان خدمات ابری، منابع GPU را در قالب سرویس ارائه میدهند. این سرویسها بهصورت مدل هزینهای “فقط برای آن چیزی که واقعاً استفاده شده است، هزینه میپردازید. (pay-as-you go)” است که گاهی برای شروع کار، دسترسی محدود و رایگان (Free Trial)، داده میشود. بر اساس عملکرد و قیمت منابع GPU موجود، Google Cloud Platform از رقبای خود یک سروگردن بالاتر است. در سال 2016 گوگل اعلام کرد که یک Tensor Processing Unit را به شکل عمومی عرضه خواهد کرد که مخصوص اجرای Tensorflow است.
. . . .
و در انتها…
در این آموزش با مفاهیم مهم و پایه ای در یادگیری ماشین آشنا شدیم. ابتدا زبان های برنامه نویسی یادگیری ماشین را بررسی کردیم تا بتوانیم زبان مناسب را انتخاب کنیم. در ادامه درباره GPU و تاثیر آن بر افزایش سرعت آموزش مدل هوش مصنوعی صحبت کردیم.
تمام پیش نیازهایی که برای ساخت یک مدل یادگیری ماشین لازم داریم را بلد هستیم. پس منتظر چه هستید، برویم یک مدل واقعی بسازیم. در مقاله یادگیری ماشین با پایتون سیستم ارزشگذاری قیمت خانه با استفاده از gradient boosting را با پایتون مدلسازی می کنیم.