مقالات

بهترین چارچوب‌های متن‌باز یادگیری ماشینی

قابلیت‌های اصلی این چارچوب نیز عبارتند از: + پشتیبانی از چندین منبع داده درون سیستم + اجازه می‌دهد کاربران مدل‌های داده‌ای خود را از داده‌های ذخیره شده درون RedShift که یک سیستم نگهداری داده‌ها است ایجاد نمایند + به کاربران اجازه می‌دهد اشیاء داده‌ای خود را از داده‌های اختصاصی خود که در MySQL ذخیره شده است ایجاد نمایند + هر سه مدل داده‌ای Binary Classification, Multi-class Classification و Regression را پشتیبانی می‌نماید

اگرچه یادگیری را فرآیند بهبود مستمر توانایی‌های یک شخص برای انجام بهینه امور معنا کرده‌اند، اما یادگیری ماشینی که یکی از زیر شاخه‌های علوم کامپیوتر است، متوجه فرآیند یادگیری در کامپیوترهای مدرن امروزی است که آن‌ها را قادر می‌سازد بدون برنامه‌نویسی مشخصی برای حل یک مساله تعریف شده از قبل قادر به حل آن باشند. یادگیری ماشینی (machine Learning) به طور خلاصه تکامل یافته روش‌های هوش مصنوعی (Artificial Intelligence) مبتنی بر شناسایی الگو (Pattern Recognition) و تئوری یادگیری محاسباتی (Computational Learning Theory) است و تلاشی است برای کاوش محدوده‌ای از الگوریتم‌ها که می‌توانند به صورتی مؤثر اقدام به پیش‌بینی داده‌های نهایی نمایند. در سال‌های اخیر یادگیری ماشینی در محدوده وسیعی از کاربردهای روزمره به کار گرفته شده است، جایی که طراحی الگوریتم‌های کارآمد برای حل یک مساله و تبدیل آن‌ها به برنامه‌های کامپیوتری می‌تواند بسیار مشکل باشد. کاربردهایی نظیر فیلتر کردن هرزنامه‌های پست الکترونیکی، شناسایی تصویری کاراکترها، بهبود موتورهای جستجو در پردازش زبان طبیعی، پردازش تصاویر دیجیتال، داده کاوی و …

تام میچل (Tom M. Mitchell) دانشمند داده و پروفسور دانشگاه کارنیج ملون (Carneige Mellon University) در آمریکا، یادگیری ماشینی را به این صورت تعریف کرده است؛ به یک برنامه کامپیوتری گفته می‌شود از تجربه E یاد گرفته است، با توجه به کلاسی از وظایف که باید انجام دهی T و کارایی مورد انتظار P اگر واقعاً قادر به حل مساله با رسیدن به سطح کارایی مورد انتظار باشد.

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

۱- یادگیری تحت نظارت (Supervised learning) در این سیستم هر داده یادگیری به صورت زوج مرتب ارایه می‌شود، داده ورودی و خروجی مطلوب که نقش سیگنال بازخورد را ایفا می‌کند

۲- یادگیری بدون نظارت (Unsupervised Learning) در این روش داده ورودی با خروجی‌های مورد انتظار برچسب گذاری نشده است، در نتیجه برنامه خود باید قادر به یافتن خروجی مطلوب باشد. این روش بیشتر مناسب محاسبات آماری نظیر تخمین تراکم است.

۳- یادگیری تقویتی (Reinforcement Learning) در این یادگیری کل فرآیند مبتنی بر واکنش ابزارهای نرم‌افزاری (Software Agents) به گونه‌ای است که تأثیر تجمعی آن‌ها بهینه شود. این شاخه از یادگیری در کاربردهای وسیعی نظیر نظریه بازی‌ها (Game theory)، نظریه اطلاعات (Information Theory)، هوش تجمعی (Swarm Intelligence)، آمار و الگوریتم‌های ژنتیک به کار گرفته می‌شود.

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

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

۱- چارچوب Apache Singa

پروژه ایجاد این چارچوب یادگیری ماشینی در گروه سیستم‌های پایگاه داده (DB System Group) دانشگاه ملی سنگاپور (National University of Singapore) در سال ۲۰۱۴ با هدف اولیه تمرکز بر ساختن مدل تقسیم‌بندی (Partitioning Model) و توزیع داده در گره‌ها در یک خوشه (Data on Nodes in Clustering) و یادگیری موازی (Parallelism in Learning) برای رسیدن به یک سیستم توزیع‌شده یادگیری عمیق (Distributed Deep Learning System) آغاز شد.

این چارچوب یک مدل برنامه‌نویسی ساده را ارایه کرده و روی خوشه‌ای از ماشین‌ها می‌تواند اجرا شود. کاربرد اولیه آن در پردازش زبان طبیعی (Natural Language Processing, NLP) و تشخیص تصاویر (Image Processing) بوده است. نسخه اولیه این چارچوب توسط انکوباتور آپاچی در ماه مارچ ۲۰۱۵ پذیرفته شد، در آن زمان می‌توانست یک معماری منعطف مبتنی بر آموزش توزیع‌شده قابل گسترش و قابل کارکرد روی گستره وسیعی از سخت‌افزارها ارایه نماید.

چارچوب Apache Singa از ابتدا مبتنی معماری انتزاعی لایه‌ای طراحی شده بود. یک گستره وسیعی از مدل‌های یادگیری عمیق را نیز پشتیبانی می‌کرد، مدل‌هایی نظیر Feed-Forward یا آموزش پیش‌خورنده به شبکه‌های عصبی مصنوعی، مدل‌های انرژی مانند Restricted Boltzman Machine یا RDM و شبکه‌های عصبی بازخور یا RNN در این چارچوب پشتیبانی می‌شوند. بر پایه این معماری انعطاف‌پذیر این چارچوب می‌تواند تعداد زیادی چارچوب‌های دیگر همزمان، غیر همزمان و ترکیبی را اجرا نماید.

پشته معماری انتزاعی این چارچوب سه لایه اصلی دارد؛ هسته (Core)، ورودی خروجی (IO) و مدل‌ها (Models). لایه هسته در این چارچوب با مدیریت حافظه و مجموعه گسترده‌ای از اعمال ریاضی در ارتباط است. لایه ورودی و خروجی مسئول خواندن و نوشتن اطلاعات روی دیسک‌ها بوده و لایه مدل شامل ساختمان داده‌ها و الگوریتم‌های یادگیری ماشینی نظیر فیلتر کردن (Collaborative Filtering)، خوشه‌بندی (Clustering) و کلاسه‌بندی (Classification)، بازگشتی (Regression)، کاهش ابعاد (Dimensional Reduction) است.

برخی قابلیت‌های عمده این چارچوب عبارتند از:

+ داشتن لایه انتزاعی برای پشتیبانی از تعداد بسیار بیشتری از مدل‌های یادگیری ماشینی

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

+ استفاده کردن از cmake به جای ابزارهای خودکار GNU برای کامپایل کردن که انعطاف بیشتری دارد

+ پشتیبانی از اتصال به ماژول‌های برنامه‌نویسی شده توسط Python و شامل بودن تعداد بیشتری از مدل‌های یادگیری عمیق نظیر VGG و ResNET

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

۲- چارچوب Shogun

این چارچوب توسط Soeren Sonnenburg و Gunnar Raetsch در سال ۱۹۹۹ معرفی شد و در حال حاضر به سرعت توسط تیم بزرگی از دانشمندان داده در حال توسعه است. این جعبه‌ابزار آزاد/متن‌باز با استفاده از زبان برنامه‌نویسی C++ توسعه داده شده و الگوریتم‌ها و ساختمان‌داده‌های ضروری برای یادگیری ماشینی را فراهم می‌آورد. این جعبه‌ابزار قدرتمند می‌تواند قابلیت‌های خود را از طریق رابط های برنامه‌نویسی مبتنی بر C++، Python، Octave، R، Java و Lua روی سکوهای Windows, Mac Os و GUN/Linux به توسعه‌دهندگان ارایه دهد.

این چارچوب تلاش می‌کند که یادگیری در مقیاس بزرگ برای گستره وسیعی از الگوریتم‌های یادگیری ماشینی نظیر فیلتر کردن (Collaborative Filtering)، خوشه‌بندی (Clustering) و کلاسه‌بندی (Classification)، بازگشتی (Regression)، کاهش ابعاد (Dimensional Reduction) و … فراهم آورد. این مجموعه همچنین شامل تعدادی الگوریتم‌های فوق‌العاده منحصر به خود است، مانند ارزش بهره‌وری SVM، یادگیری مبتنی بر چند کرنل، تست تئوری کرن، متدهای Keylov‌ و ….

همچنین این چارچوب قابلیت اتصال به کتابخانه‌های دیگر یادگیری ماشینی نظیر LibSVM, LibLinear, SVMLight, LibOCAS, libqp, VowpalWabbit, takpee, SLEP, GPML و تعداد بسیار زیاد دیگری را نیز دارد.

برخی از مهمترین قابلیت‌های آن شامل موارد زیر می‌شود:

+ One-Time Classification

+ Multi-Class Classification

+ Regression

 Structured Output Learning +

Pre-Processing +

Build-in Model Selection Strategies +

Visualisation and Test Frameworks +

Semi-Supervised Learning +

Multi-Task Learning +

Large-Scale Learning+

۳- چارچوب Apache Mahout

این چارچوب یکی از پروژه‌های آزاد/متن باز بنیاد نرم‌افزارهای آپاچی (Apache Software Foundation) است که با هدف ارایه یک سیستم توزیع‌شده (Distributed) یا قابل گسترش (Scalable) الگوریتم‌های یادگیری ماشینی برای کاربردهای فراگیری چون فیلتر کردن (Collaborative Filtering)، خوشه‌بندی (Clustering) و کلاسه‌بندی (Classification) تعریف شده است. چارچوب Mahout کتابخانه‌های جاوا و مجموعه‌های مبتنی بر آن را برای عملیات متنوع ریاضی فراهم می‌کند. همچنین این چارچوب بر روی Apache Hadoop که از پارادیم MapReduce استفاده می‌کند پیاده‌سازی شده است.

زمانی که داده روی سیستم فایل توزیع‌شده هدوپ (Hadoop Distributed File System, HDFS) ذخیره می‌شود، این چارچوب وارد شده و با فراهم آوردن مجموعه‌ای گسترده از ابزارهای مرتبط با علوم داده، به صورت خودکار اقدام به شناسایی الگوهای معنی‌دار درون مجموعه‌های داده بزرگ (Big Data Set) موجود کرده و خیلی سریع و ساده آن‌ها را به مجموعه اطلاعات بزرگ (Big Information Set) تبدیل می‌کند.

از جمله کاربردهای این چارچوب می‌توان به موارد زیر اشاره کرد:

+ ساخت یک موتور پیشنهاد (Recommendation Engine) توسط Mahout

+ خوشه‌بندی (Clustering) با Mahout

+ دسته‌بندی (Categorising) محتوا با Mahout 

4- چارچوب Apache Spark Mllib

این چارچوب در حقیقت یک کتابخانه یادگیری ماشینی است که هدف اولیه آن فراهم کردن یادگیری ماشینی قابل گسترش و ساده در عمل است. این کتابخانه شامل الگوریتم‌های پایه‌ای مرسوم یادگیری ماشینی نظیر فیلتر کردن (Collaborative Filtering)، خوشه‌بندی (Clustering) و کلاسه‌بندی (Classification)، بازگشتی (Regression)، کاهش ابعاد (Dimensional Reduction) به همراه بهینه‌ سازی‌های سطح پایین و ارایه API مبتنی بر Pipeline‌به لایه‌های بالاتر است.

این چارچوب همواره به عنوان یک چارچوب یادگیری ماشینی توزیع‌شده (Distributed) روی هسته Spark آپاچی شناخته شده است و به واسطه معماری مبتنی بر حافظه توزیع شده Spark تقریباً ۹ برابر سریعتر از پیاده‌سازی‌های مبتنی بر دیسک چارچوب Mahout آپاچی است.

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

+ الگوریتم‌های آماری: Hypothesis Testing, Random Data Generation, Correlations

+ الگوریتم‌های کلاسه‌بندی و بازگشتی: Bayes, Linear Regression, Vector Machines, Logistic Regression

+ الگوریتم‌های فیلترینگ: Alternating Least Squares, ALS

+ الگوریتم‌های خوشه‌بندی: Latent Dirichlet Allocation, LDA

+ الگوریتم‌های بهینه‌سازی: BBGS

5- چارچوب TensorFlow

این چارچوب یک کتابخانه نرم‌افزاری متن‌باز برای یادگیری ماشینی است که توسط تیم Google Brain برای گستره وسیعی از کاربردها به ویژه در حوزه درک زبانی و در پی تحقیقات گسترده روی یادگیری ماشینی و شبکه‌های عصبی یادگیری عمیق توسعه داده شده است. این در حقیقت دومین نسل از سیستم‌های یادگیری ماشینی Google Brain است که قابلیت اجرا روی چندین CPU یا GPU را نیز دارا می‌باشد. از این چارچوب در بسیاری از محصولات گوگل نظیر قابلیتSpeech Recognition، سرویس پست الکترونیکی Gmail، سرویس Google Photos‌ و از همه مهمتر در موتور جستجوی گوگل استفاده شده است.

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

قابلیت‌های اصلی این چارچوب در زیر فهرست شده است:

+ به شدت منعطف است (Highly Flexible): این چارچوب به توسعه‌دهندگان اجازه می‌دهد بتوانند کتابخانه‌های خود را در لایه‌ای بالاتر از این کتابخانه با زبان‌های C++‌و Python‌ توسعه دهند و همچنین پردازش شبکه عصبی مصنوعی را در قالب یک دیاگرام جریان توصیف نمایند.

+ قابل انتقال است (Portable): این چارچوب قابلیت اجرا روی گستره وسیعی از معماری‌های CPU‌ و GPU را دارا می‌باشد، حتی روی دستگاه‌های همراه. همچنین از Docker پشتیبانی می‌کند و می‌تواند در قالب سرویسی ابری ارایه شود.

+ می‌تواند به طور خودکار تمایز قایل شود (Auto-Differentiation): این چارچوب کاربران را قادر می‌سازد تا بتوانند مدل‌های پیش‌بینی خود را منطبق با معماری سیستم مورد نظرشان در ترکیب با توابع سیستم به کار گیرند. در نیتجه توانایی مدیریت کردن محاسبات بسیار پیچیده را نیز دارد.

+ زبان‌های متنوعی را پشتیبانی می‌کند (Diverse Language Options): یک رابط ساده مبتنی بر Python ارایه می‌کند که کاربران را قادر به اجرای کدهای خود به زبان‌های دیگر و همچنین مشاهده گرافیکی گراف‌ها و دیاگرام‌ها می‌نماید.

۶- چارچوب Oryx2

این چارچوب پیاده‌سازی معماری Lambda بر پایه Apache Spark‌ و Apache Kafka برای یادگیری ماشینی زمان‌حقیقی در ابعاد بزرگ است. این چارچوب برای توسعه برنامه‌های کاربردی فراهم شده است و شامل ماژول‌های آماده برای ساختن فیلترها (Filtering)، کلاسه‌بندی‌ها (Classification)، بازگشتی‌ها (Regression) و خوشه‌بندی (Clustring) است.

این چارچوب شامل سه لایه عمده زیر می‌شود:

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

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

+ لایه پیاده‌سازی انتها به انتها: که برنامه‌های کاربردی استاندارد مورد نیاز یادگیری ماشینی نظیر (ALS, درخت تصمیم تصادفی و K-Means) را روی همه لایه‌های دیگر فراهم می‌آورد که توسعه‌دهندگان و کاربران می‌توانند از آن‌ها استفاده نمایند.

همچنین این چارچوب همانند ابزارهای اتصال، لایه‌های زیر را از معماری Lambda نیز شامل می‌شود:

+ لایه دسته‌ای (Batch Layer): برای استخراج جواب از داده‌های قدیمی و جواب‌های قبلی به کار می‌رود

+ لایه سرعت (Speed Layer): برای استفاده از جریانی از داده‌های جدید، یک مدل داده‌ای افزایشی را تولید و ارایه می‌کند که به سرعت به روز می‌شود

+ لایه سرویس (Serving Layer): مدل‌های داده‌ای و به روز رسانی‌های آن‌ها را دریافت کرده و از طریف APIیی که فراهم می‌کند آن را در اختیار تقاضاهای ممکن بر روی نتایج قرار می‌دهد

+ لایه انتقال داده (Data Transport Layer): داده‌ها را بین لایه‌ها جابه‌جا کرده و ورودی را منابع خارجی دریافت می‌نماید.

۷- چارچوب Accord.Net

این چارچوب، یک چارچوب متن‌باز یادگیری ماشینی برای محاسبات علمی است. همچنین شامل کتابخانه‌های گسترده‌ای برای کاربردهای متنوع یادگیری ماشینی مانند پردازش داده‌های آماری (Statistical Data Processing)، شناسایی الگو (Pattern Recognition)، جبر خطی (Linear Algebra)، شبکه‌های عصبی مصنوعی (Artificial Neural Networks)، پردازش تصویر و سیگنال (Image and Signal Processing) و … است. این چارچوب به سه بخش عمده کتابخانه‌های نصب شده توسط برنامه نصب، آرشیو‌های فشرده کتابخانه‌ها و بسته‌های NuGet (که خود شامل Accord.Math, Accord.Statistics, Accord.MachineLearning, Accord.Audio, Accord.Imaging, Accord.Vision, Accord.Neuro, Accord.Controls, Accord.Controls.Imaging, Accord.Controls.Audio, Accord.Controls.Vision‌ و ... است) تقسیم می‌شود.

ویژگی‌های اصلی این چارچوب عبارتند از:

+ کتابخانه ماتریس (Matrix Library) برای افزایش قابلیت استفاده مجدد کدها و ایجاد امکان بهسازی الگوریتم‌های موجود روی ساختمان‌های استاندارد .Net

+ شامل بیش از چهل توزیع متنوع آماری مانند مدل‌های Hidden Markov و مدل‌های تلفیقی و …

+ شامل بیش از سی مدل آزمایشی فرضیه‌ها نظیر ANOVA، دو نمونه‌ای و چند نمونه‌ای و …

+ شامل بیش از ۳۸ تابع کرنل مانند KVM، KPC و KDA ۸- چارچوب Amazon Machine Learning, AML

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

فناوری یادگیری ماشینی به کار گرفته شده توسط دانشمندان آمازون در ساخت سرویس ابری آمازون و اتصال آن به داده‌ّای Amazon S3، RedShift یا RDS استفاده شده است. این چارچوب می‌تواند تقسیم‌بندی‌های باینری (Binary Calssification)، تقسیم‌بندی چندین کلاسه (Multi-Class Categorisation) یا بازگشتی (Regression) را برای ساختن مدل‌های مختلف یادگیری ماشینی اجرا نماید. منابع کلیدی مورد استفاده توسط چارچوب یادگیری ماشینی آمازون را می‌توان به صورت زیر فهرست نمود:

+ منابع داده (Data Sources): شامل داده و متاداده متصل به آن به عنوان ورودی الگوریتم‌های یادگیری ماشینی آمازون است

+ مدل‌های یادگیری ماشینی (Machine Learning Models): پیش‌بینی‌های ممکن را با استفاده از الگوهای استخراج شده از داده‌های ورودی ارایه می‌نماید

+ ارزیابی‌ها (Evaluations): کیفیت مدل یادگیری ماشینی را ارزیابی می‌نماید

+ پیش‌بینی‌های دسته‌ای (Batch Predictions): پیش‌بینی‌هایی را به صورت غیر همزمان برای مشاهده برای داده‌های چندگانه ورودی ارایه می‌نماید

+ پیش‌بینی‌های زمان حقیقی (Real-Time Predictions): یش‌بینی‌هایی را به صورت همزمان برای مشاهده برای داده‌های منحصر به فرد ورودی ارایه می‌نماید

قابلیت‌های اصلی این چارچوب نیز عبارتند از:

+ پشتیبانی از چندین منبع داده درون سیستم

+ اجازه می‌دهد کاربران مدل‌های داده‌ای خود را از داده‌های ذخیره شده درون RedShift که یک سیستم نگهداری داده‌ها است ایجاد نمایند

+ به کاربران اجازه می‌دهد اشیاء داده‌ای خود را از داده‌های اختصاصی خود که در MySQL ذخیره شده است ایجاد نمایند

+ هر سه مدل داده‌ای Binary Classification, Multi-class Classification و Regression را پشتیبانی می‌نماید.

مترجم: علیرضا تیموریان

منبع:

تاریخ انتشار مطلب:
منبع:
بازدیدها: 349 نفر