۲۰ پروژه یادگیری ماشین برتر — راهنمای کاربردی
ورود به حوزههای «دادهکاوی» (Data Mining)، «هوش مصنوعی» (Artificial Intelligence | AI) و «یادگیری ماشین» (Machine Learning) کار سادهای نیست. بسیار از افراد مشتاق و علاقمند، ایجاد راهی مناسب برای ورود به این زمینه را با وجود حجم زیاد منابع موجود دشوار برشمردهاند. این علوم همواره در حال تکامل هستند و همگام بودن با توسعه سریع آنها مساله بسیار مهمی است. به منظور مواجهه با این رشد فزاینده تکامل و نوآوری، یک راهکار خوب به روز ماندن و آگاه بودن از پیشرفتهای یادگیری ماشین، تعامل با جوامع این حوزه با مشارکت در پروژههای متنباز و ابزارهایی است که همه روزه توسط متخصصین مجرب مورد استفاده قرار میگیرد. این کار به رزومهای قوی برای افراد نیز مبدل میشود که با استناد به آن میتوانند جایگاههای شغلی خوبی را به دست آورند. در ادامه، ۲۰ پروژه یادگیری ماشین برتر بر اساس آمارهای گیتهاب معرفی شدهاند.
«تنسورفلو» (Tensorflow) با رشد سه رقمی تعداد مشارکتکنندگان در جایگاه اول قرار دارد. «سایکیتلِرن» (Scikit-learn) که پیشتر در جایگاه اول قرار داشت، در حال حاضر در جایگاه دوم ایستاده است، هر چند که هنوز هم پایگاه بزرگی از مشارکتکنندگان را دارد. در مقایسه با سال ۲۰۱۶، پروژههایی که تاکنون (۲۰۱۸) رشد سریعی داشتهاند عبارتند از:
- تنسورفلو، رشد ٪۱۶۹، از ۴۹۳ مشارکتکننده به ۱۳۲۴ نفر
- «دیپ» (Deap)، رشد ٪۸۶، از ۲۱ مشارکتکننده به ۳۹ نفر
- «چِینِر» (Chainer)، رشد ٪۸۳، از ۸۴ مشارکتکننده به ۱۵۴ نفر
- «نِئون» (Neon)، رشد ٪۶۶، از ۴۷ مشارکتکننده به ۷۸ نفر
- «نیلِرن» (Nilearn)، رشد ٪۵۰، از ۴۶ مشارکتکننده به ۶۹ نفر
پروژههایی که در سال ۲۰۱۸ جدید هستند:
- «کِرَس» (Keras)، تعداد ۶۲۹ نفر مشارکتکننده
- «پایتورچ» (PyTorch)، تعداد ۳۹۹ نفر مشارکتکننده
در نمودار بالا، سایز متناسب با تعداد مشارکتکنندگان و رنگ نشانگر تغییرات در تعداد مشارکتکنندگان است. بر همین اساس، رنگ قرمز تغییرات بیشتر و آبی میزان کمتری از تغییرات را نشان میدهد. از شکل برفدانه برای پروژههای «یادگیری عمیق» (Deep Learning) و دایره برای دیگر پروژهها استفاده شده است. میتوان مشاهده کرد که پروژههایی مانند «تنسورفلو» (TensorFlow)، «ثینو» (Theano) و «کافه» (Caffe) از محبوبترین پروژهها هستند.
لیست ۲۰ پروژه یادگیری ماشین برتر
لیستی که در ادامه آمده به ترتیب نزولی و بر اساس تعداد مشارکتکنندگان در گیتهاب مرتب شده است. تغییرات در تعداد مشارکتکنندگان در مقایسه با سال ۲۰۱۶ و بر اساس مطلبی که در وبسایت «kdnuggets» (+) نوشته شده بود، محاسبه شده است. علاقمندان میتوانند مستندات هر یک از این پروژهها را در گیتهاب یا وبسایت رسمی آنها مطالعه کرده و در پروژه مورد نظر خودشان مشارکت کنند.
۱. «تنسورفلو» (TensorFlow)
(+) (مشارکتکنندگان: ۱۳۲۴ (٪۱۶۸+)، کامیتها: ۲۸۴۷۶)
تنسورفلو در اصل توسط پژوهشگران و مهندسانی که روی «Google Brain Team» در «سازمان پژوهشهای هوش ماشینی گوگل» (Google’s Machine Intelligence research organization) کار میکردند ساخته و توسعه داده شده است. این سیستم برای تسهیل پژوهش در حوزه یادگیری ماشین و سرعت و سادگی بخشیدن به انتقال از پژوهشهای «پیشنمونه» (Prototype) به «سیستمهای تولیدی» (Production Systems) طراحی شده است.
۲. «سایکیتلِرن» (Scikit-learn)
(+) (مشارکتکنندگان: ۱۰۱۹ (٪۳۹+)، کامیتها: ۲۲۵۷۵)
این کتابخانه، ابزاری ساده و موثر برای تحلیلهای داده و دادهکاوی محسوب میشود که برای همه در دسترس و در زمینههای گوناگونی قابل استفاده مجدد است. سایکیتلِرن بر مبنای SciPy ،NumPy و matplotlib، به صورت متنباز و قابل استفاده برای کارهای تجاری تحت گواهینامه BSD ساخته شده است.
3. «کِرَس» (Keras)
(+) (مشارکتکنندگان: ۶۲۹ نفر (جدید)، کامیتها: ۴۳۷۱)
کِرَس یک کتابخانه سطح بالای «شبکههای عصبی» (Neural Networks) است که به زبان پایتون نوشته شده و قادر به اجرا بر فراز تنسورفلو، CNTK و ثینو است.
۴.«پایتورچ» (PyTorch)
(+) (مشارکتکنندگان: ۳۹۹ نفر (جدید)، کامیتها: ۶۴۵۸)
این کتابخانه امکان کار با تانسورها و شبکههای عصبی پویا را در پایتون با شتابدهی قدرتمند GPU فراهم میکند.
۵. «ثینو» (Theano)
(+) (مشارکتکنندگان: ۳۲۷ (٪۲۴+)، کامیتها: ۲۷۹۳۱)
این کتابخانه پایتون امکان تعریف، بهینهسازی و ارزیابی عبارات ریاضی شامل آرایههای چندبُعدی را به طور موثر فراهم میکند.
۶. «ژِنیسم» (Gensim)
(+) (مشارکتکنندگان: ۲۶۲ نفر (٪۸۱+)، کامیتها: ۳۵۴۹)
یک کتابخانه پایتون متنباز با ویژگیهایی مانند معناهای آماری مقیاسپذیر، تحلیل اسناد متن غنی برای ساختار معنایی و بازیابی اسناد دارای مشابهت معنایی است.
۷. «کافه» (Caffe)
(+) (مشارکتکنندگان: ۲۶۰ (٪۲۱+)، کامیتها: ۴۰۹۹)
کافه یک چارچوب یادگیری عمیق طراحی شده با در نظر داشتن سرعت و ماژولاریتی است. این چارچوب توسط «Berkeley Vision and Learning Center» و مشارکتکنندگان جامعه آن، توسعه داده شده است.
۸. «چِینر» (Chainer)
(+) (مشارکتکنندگان: ۱۵۴ نفر (٪۸۴+)، کامیتها: ۱۲۶۱۳)
چِینِر یک چارچوب متنباز مستقل مبتنی بر پایتون برای مدلهای یادگیری عمیق است. Chainer ابزارهای انعطافپذیر، نوآورانه و دارای کارایی بالا را برای پیادهسازی طیف گستردهای از مدلهای یادگیری عمیق شامل مدلهای جدیدی مانند «شبکههای عصبی بازگشتی» (Recurrent Neural Networks) و «رمزنگارهای خودکار متغیر» (Variational Auto-Encoders) فراهم میکند.
۹. «اِستِیتمُدِلز» (Statsmodels)
(+) (مشارکتکنندگان: ۱۴۴ (٪۳۳+)، کامیتها: ۹۷۲۹)
اِستِیتمُدِلز یک ماژول پایتون است که به کاربران امکان اکتشاف دادهها، تخمین مدلهای آماری و انجام تستهای آماری را میدهد. در کتابخانه Statsmodels یک لیست گسترده از آمار توصیفی، تستهای آماری و توابع ترسیم نمودار برای انواع مختلف دادهها و برآوردگرها وجود دارد.
۱۰. «شوگان» (Shogun)
(+) (مشارکتکنندگان: ۱۳۹ (٪۳۲+)، کامیتها: ۱۶۳۶۲)
شوگان یک جعبه ابزار یادگیری ماشین است که طیف وسیعی از روشهای یادگیری ماشین موثر و یکپارچه را فراهم میکند. این جعبهابزار به طور یکپارچه امکان ترکیب آسان چندین ارائه از دادهها، کلاسهای الگوریتم و ابزارهای همهمنظوره را فراهم میکند.
۱۱. «پایلِرن۲» (Pylearn2)
(+) (مشارکتکنندگان: ۱۱۹ (٪۳.۵+)، کامیتها: ۷۱۱۹)
پایلِرن۲ یک کتابخانه یادگیری ماشین است. بیشتر کارکردهای این کتابخانه بر فراز Theano ساخته شده. این یعنی میتوان پلاگینهای Pylearn2 را با استفاده از عبارات ریاضی نوشت (مدلهای جدید، الگوریتمها و دیگر موارد) و Theano آنها را بهینهسازی، پایدار و متناسب با بکاند منتخب کاربر (CPU یا GPU) کامپایل میکند.
۱۲. نوپیک (NuPIC)
(+) (مشارکتکنندگان: ۸۵ (٪۱۲+)، کامیتها: ۶۵۸۸)
یک پروژه متنباز بر مبنای تئوری «نوقشر» (نئوکورتکس | Neocortex) است که به آن «حافظه موقتی سلسلهمراتبی» (Hierarchical Temporal Memory | HTM) گفته میشود. بخشی از نظریه HTM پیادهسازی و تست شده و در نرمافزارهای کاربردی مورد استفاده قرار گرفته است و دیگر بخشهای نظریه HTM همچنان در حال توسعه هستند.
۱۳. «نِئون» (Neon)
(+) (مشارکتکنندگان: ٪۶۶+، کامیتها: ۱۱۱۲)
نئِون کتابخانه یادگیری عمیق مبتنی بر پایتون «نِروانا» (Nervana) (+) است. این کتابخانه سهولت استفاده را در عین ارائه بالاترین کارایی فراهم میکند.
۱۴. «نیلِرن» (Nilearn)
(+) (مشارکتکنندگان: ۶۹ (٪۵۰+)، کامیتها: ۶۱۹۸)
نیلِرن یک ماژول پایتون برای یادگیری آماری سریع و آسان در دادههای Neuroimaging است. این کتابخانه از جعبهابزار سایکیتلِرن برای آمار چند متغیره با کاربردهایی مانند مدلسازی پیشبین، «دستهبندی» (Classification)، «رمزگشایی» (Decoding) یا تحلیل اتصالات استفاده میکند.
۱۵. اورنج۳ (Orange3)
(+) (مشارکتکنندگان: ۵۳ (٪۳۳+)، کامیتها: ۸۹۱۵)
یک کتابخانه یادگیری ماشین و بصریسازی داده برای تازهکارها و کارشناسان مجرب است. این کتابخانه جریانهای کاری تحلیل داده تعاملی را با یک جعبه ابزار بزرگ فراهم میکند.
۱۶. Pymc
(+) (مشارکتکنندگان: ۳۹ نفر (٪۵.۴+)، کامیتها: ۲۷۲۱)
یک ماژول پایتون است که مدلهای آماری «بیزی» (Bayesian) و الگوریتمهای برازش (Fitting Algorithms) شامل «زنجیره مارکف مونت کارلو» (Markov Chain Monte Carlo) را پیادهسازی میکند. انعطافپذیری و توسعهپذیری این ماژول، آن را برای گستره وسیعی از مسائل مناسب میسازد.
۱۷. «دیپ» (Deap)
(+) (مشارکتکنندگان: ۳۹ (٪۸۶+)، کامیتها: ۱۹۶۰)
یک چارچوب محاسبات تکاملی برای پیشنمونهسازی سریع و ارزیابی ایدهها است. این چارچوب به دنبال آن است که الگوریتمها را صریح و ساختارهای داده را شفاف کند. دیپ با هماهنگی فوقالعادهای با مکانیزمهای موازیسازی مانند چندپردازشی و «عملیات همروند مقیاسپذیر در پایتون» (Scalable Concurrent Operations in Python | SCOOP) کار میکند.
۱۸. «اَنوی» (ANNOY)
(+) (مشارکتکنندگان: ۳۵ (٪۴۶+)، کامیتها: ۵۲۷)
«ANNOY» سرنامی برای «Approximate Nearest Neighbors Oh Yeah» و یک کتابخانه ++C با انقیادهای پایتون جهت جستوجوی نقاطی در فضا است که به نقطه کوئری داده شده نزدیک هستند. این کتابخانه همچنین ساختارهای داده مبتنی بر فایل فقط خواندنی میسازد که در حافظه نگاشت شدهاند، بنابراین پروژههای زیادی ممکن است دادههای مشابهی را به اشتراک بگذارند.
۱۹. «پایبِرِین» (PyBrain)
(+) (مشارکتکنندگان: ۳۲ (٪۳+)، کامیتها: ۹۹۲)
یک کتابخانه یادگیری ماشین ماژولار برای پایتون است. هدف این کتابخانه پیشنهاد دادن الگوریتمهای انعطافپذیر و با استفاده آسان اما در عین حال قدرتمند برای وظایف یادگیری ماشین و گستردهای از محیطهای از پیش تعریف شده برای تست و مقایسه الگوریتمها است.
۲۰. «فیوئل» (Fuel)
(+) (مشارکتکنندگان: ۳۲ (٪۱۰+)، کامیتها: ۱۱۱۶)
یک چارچوب پایپلاین داده است که مدلهای یادگیری ماشین را با دادههایی که نیاز دارند فراهم میکند. چنین برنامهریزی شده که این کتابخانه در کتابخانههای شبکه عصبی Pylearn2 و Blocks مورد استفاده قرار بگیرد.
اگر نوشته بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشود:
- مجموعه آموزش های برنامه نویسی پایتون
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
- مجموعه آموزشهای شبکههای عصبی مصنوعی
- مجموعه آموزشهای هوش محاسباتی
- آموزش برنامهنویسی R و نرمافزار R Studio
- مجموعه آموزشهای برنامه نویسی متلب (MATLAB)
^^