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

shabake-mag.jpg

این مطلب یکی از مجموعه مقالات پرونده ویژه «یادگیری ماشینی» شماره ۱۸۱ ماهنامه شبکه است. علاقه‌مندان می‌توانند کل این پرونده ویژه را از روی سایت شبکه دانلود کنند. 

 Google TensorFlow
شبیه به پروژه DMTK، پروژه تانسورفلو گوگل یک چارچوب یادگیری ماشینی است که در مقیاس گره‌های چندگانه طراحی شده است. (شکل 7) آنچنان ‌که Google’s Kubernetes برای حل مشکلات داخلی گوگل طراحی شده بود، TensorFlow در قالب محصولی منبع‌باز ویژه کاربران عادی دنیای فناوری عرضه شده است.


  شکل 7:  نمایی از دیارگرام کارکردی TensorFlow

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

مطلب پیشنهادی

۱۳ چارچوب منبع‌باز برای کسب مهارت در یادگیری ماشینی (بخش اول)

Microsoft Computational Network Toolkit
اگر بر این باور هستید که DMTK پروژه جالب توجهی از سوی مایکروسافت به شمار می‌رود، باید بگوییم ابزار محاسباتی شبکه مایکروسافت در نوع خود جالب توجه است. CNTK یکی دیگر از ابزارهای یادگیری ماشینی است که از سوی مایکروسافت ارائه شده است. (شکل 8) CNTK شبیه به TensorFlow گوگل است. از این‌رو به کاربران اجازه می‌دهد شبکه‌های عصبی خود را از طریق گراف‌ها ایجاد کنند. اگر CNTK را با چارچوب‌هایی نظیر Caffe، Theano و Torch مقایسه کنیم، مشاهده خواهیم کرد که CNTK در بعضی جهات نسبت به چارچوب‌های یادشده برتری‌هایی دارد. از جمله این برتری‌ها می‌توان به سرعت و توانایی استفاده موازی از پردازنده‌های چندگانه مرکزی و گرافیکی آن اشاره کرد.


  شکل 8:  CNTK راهکار پیشنهادی مایکروسافت در خصوص ساخت شبکه‌های عصبی توسط کاربران

مایکروسافت ادعا کرده است که برای آموزش کورتانا در زمینه تشخیص سریع صدا از CNTK همراه با کلاسترهای GPU بر مبنای بستر آژر استفاده کرده است. CNTK در اصل پروژه‌ای توسعه‌یافته است؛ پروژه‌ای که در واحد تحقیقات مایکروسافت برای تشخیص گفتار طراحی شده است. CNTK اولین بار در آوریل 2015 در قالب پروژه‌ای منبع‌باز در اختیار کاربران قرار گرفت، اما در گیت‌هاب تحت مجوز MIT بازنشر شد.

(Veles (Samsung
Veles پلتفرم توزیع‌شده‌ای برای برنامه‌های یادگیری عمیق است. (شکل 9) شبیه به TensorFlow و DMTK این چارچوب نیز به زبان سی‌پلاس‌پلاس نوشته شده است. اما از پایتون برای فرایندهای اتوماسیون و هماهنگی بین گره‌ها و برای انجام محاسبات از کودا یا OpenCL استفاده می‌کند. مجموعه‌ داده‌ها قبل از آنکه به عنوان خوراکی برای تغذیه کلاسترها ارسال شوند، ابتدا تجزیه و تحلیل شده، به طور خودکار عادی سازی شده و برای کلاسترها ارسال می‌شوند.


  شکل 9:  Veles پلتفرم توزیع‌شده ویژه یادگیری عمیق

طراحی Veles به گونه‌ای است که به کاربران اجازه می‌دهد با استفاده از توابع REST مدل آموزش‌دیده‌شده را بی‌درنگ در یک محصول استفاده کنند؛ با این فرض ‌که سخت‌افزار خوبی در اختیار داشته باشند. در دنیای محاسبات، REST سرنام representational state transfer، سبکی از معماری نرم‌افزاری در محیط وب است. معماری REST سعی در القای کارایی، گسترش‌پذیری، سادگی، قابلیت حمل، قابلیت اطمینان و قابلیت دید دارد.  به طور دقیق‌تر REST سبکی از معماری بوده که شامل مجموعه‌ای هماهنگ از اجزا، اتصال‌دهنده‌ها  و عناصر داده‌ای است که درون یک سیستم توزیع‌شده ابری قرار دارند، جایی که بر نقش‌ مؤلفه‌ها و مجموعه خاصی از تعامل میان عناصر داده‌ای به جای تمرکز بر جزئیات پیاده‌سازی، تأکید دارد. Veles از پایتون تنها برای کدهای ادغامی _ متصل کردن مؤلفه‌های غیرسازگار نرم‌افزاری _ استفاده نمی‌کند. آی‌پایتون _ در حال حاضر ژوپیتر _ ابزار مصورسازی داده‌ها (Data Visualization) و تحلیل می‌تواند برای مصورسازی و انتشار نتایج از یک کلاستر Velse استفاده شود. سامسونگ امیدوار است با عرضه این پروژه در قالب محصولی منبع‌باز تحرک بیشتری در توسعه آن به وجود آورد؛ به گونه‌ای که تعامل خوبی با پلتفرم‌های ویندوز و Mac OS X داشته باشد. 

Brainstorm
Brainstorm پروژه‌ای است که بر مبنای تز پایان‌نامه دانشجویان مقطع دکترا، «کلاوس گرف» و «روپشف استیوستاوا» در مؤسسه هوش مصنوعی «Dalle Molle» واقع در لوگانو سوییس در سال 2015 طراحی شد. (شکل 10) هدف از طراحی این پروژه پیاده‌سازی شبکه‌های عصبی عمیقی بود که بر پایه عوامل سرعت، انعطاف‌پذیری و سرگرم‌کننده‌ای اجرا شوند. BrainStorm با استفاده از زبان پایتون نوشته شده است. برایان‌استورم می‌تواند روی پلتفرم‌های مختلف اجرا و همچنین برای انجام محاسبات مختلف استفاده شود.


  شکل 10:  BrainStorm  راهکاری جدید ویژه محاسبات و پلتفرم‌ها مختلف

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

mlpack 2
mlpack 2 کتابخانه یادگیری ماشینی گسترش‌پذیری است که با زبان سی‌پلاس‌پلاس در سال 2011 نوشته شده است. (شکل 11) هدف از طراحی این کتابخانه سهولت استفاده و گسترش‌پذیری اعلام شده است. mlpack دسترسی به الگوریتم‌های موجود را از طریق برنامه‌های ساده و اجرایی خط فرمان و کلاس‌های سی‌پلاس‌پلاس امکان‌پذیر می‌سازد. این مکانیزم می‌تواند با راه‌حل‌های یادگیری ماشینی عظیم‌تر ادغام شود. همچنین محققان و کاربران حرفه‌ای می‌توانند با استفاده از ماژول‌های زبان سی‌پلاس‌پلاس به‌راحتی تغییرات مورد نیاز خود را به‌ طور داخلی در الگوریتم‌ها پیاده‌سازی کنند. این رویکرد با هدف رقابت در برابر کتابخانه‌های یادگیری ماشینی بزرگ‌تر در نظر گرفته شده است.


  شکل 11:  نمایی از یک برنامه mlpack2

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

Marvin
استیو جوروستون گفته است: «کلان داده‌ها دردسر بزرگی هستند و یادگیری عمیق کلید حل این دردسر بزرگ است.» اگر به تحولات دنیای صنعت و فناوری نگاهی بیندازیم، آنگاه به این حقیقت آگاه می‌شویم که هر ده سال یک‌بار تحولی عظیم در این زمینه رخ داده است. اگر دهه 90 میلادی تا ابتدای سال 2000 میلادی دوران حکم‌فرمایی اینترنت بود، از سال 2000 تا سال 2010 امپراطوری تلفن‌های هوشمند بر همه جا سیطره گسترانیده بود، از این سال به بعد دوران حکمرانی یادگیری ماشینی آغاز شده است. دورانی که تا سال 2020 ادامه خواهد داشت و زندگی مدرن ما را دستخوش تغییرات اساسی خواهد کرد. (شکل 12)  Marvin یکی دیگر از محصولات نسبتاً جدید این حوزه است. چارچوب شبکه عصبی ماروین، محصولی است که Princeton Vision Group آن را طراحی کرده است.


  شکل 12:  سیر تحول فناوری‌های از سال 1910 تا سال 2020

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


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

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

Neon
Nervana شرکتی است که پلتفرم سخت‌افزاری و نرم‌افزاری خود را برای با یادگیری عمیق طراحی می‌کند. بر همین اساس این شرکت موفق شده است چارچوب یادگیری عمیقی به نام Neon را تولید کند. (شکل 14) چارچوبی که در قالب یک پروژه منبع‌باز در اختیار کاربران قرار دارد. این چارچوب از ماژول‌های ویژه‌ای استفاده می‌کند که توانایی کار کردن با پردازشگر مرکزی، پردازشگر گرافیکی یا سخت‌افزارهای سفارشی خاص این شرکت را دارد. بخش عمده‌ای از طراحی Neon با زبان پایتون انجام شده و تعداد دیگری از مؤلفه‌های آن با زبان‌های سی‌پلاس‌پلاس و اسمبلی نوشته شده‌اند. این زبان‌ها به دو دلیل انتخاب شده‌اند. اول آنکه سرعت محاسبات را افزایش دهند و دوم آنکه کاربران در به‌کارگیری این چارچوب در زبان‌های دیگری همچون پایتون مشکل خاصی نداشته باشند.


  شکل 14:  نمایی از پلتفرم ارائه‌شده از سوی nervana درخصوص یادگیری عمیق

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

==============================

شاید به این مقالات هم علاقمند باشید:

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

ایسوس

نظر شما چیست؟