یادگیری ماشین با تنسرفلو | TensorFlow

یادگیری ماشین یکی از مباحث سنگین و پیچیده دنیای هوش مصنوعی است، اما به لطف چهارچوبهای غنی و قدرتمندی که تولید شده پیادهسازی مدلهای یادگیری ماشین به مراتب سادهتر از گذشته شدهاند. چهارچوبهایی شبیه به تنسورفلو (TensorFlow) روند دستیابی به دادهها، مدلهای آموزشی، ارائه پیشبینیها و پالایش نتایج را سهولت بخشیدهاند.
سایت رسمی تنسورفلو: TensorFlow
«تنسورفلو» (TensorFlow)، یک کتابخانه رایگان و «متنباز» (Open Source) برای «برنامهنویسی جریان داده» ( Dataflow Programming) و «برنامهنویسی متمایزگر» (Differentiable Programming)، جهت انجام طیف وسیعی از وظایف است. تنسورفلو، کتابخانهای برای «ریاضیات نمادین» (Symbolic Math) محسوب میشود و کاربردهای گوناگونی در «یادگیری ماشین» (Machine Learning) دارد که از آن جمله میتوان به پیادهسازی «شبکههای عصبی» (Neural Networks) اشاره کرد. این کتابخانه توسط تیم «گوگل برین» (Google Brain)، برای مصارف داخلی گوگل توسعه داده شده بود؛ ولی در نهم نوامبر سال ۲۰۱۵ با گواهینامه «آپاچی ۲.۰ متنباز» منتشر شد. در حال حاضر، کتابخانه تنسورفلو، در گوگل هم برای پروژههای تحقیقاتی و هم پروژههای عملیاتی مورد استفاده قرار میگیرد.
نحوه کارکرد TensorFlow
تنسورفلو نسخه 1.0.0
نسخه ۱.۰.۰ تنسورفلو، یازدهم فوریه سال ۲۰۱۷ منتشر شد. با وجود آنکه «پیادهسازی مرجع» (Reference Implementation) این کتابخانه در «دستگاههای مجرد« (Single Devices) اجرا میشد، این نسخه قابل اجرا روی چندین CPU و GPU (با افزونههای اختیاری CUDA و SYCL برای انجام پردازشهای همه منظوره روی واحد پردازنده گرافیکی) بود. کتابخانه تنسورفلو برای سیستمعاملهای ۶۴ بیتی لینوکس، ویندوز، مکاواس و پلتفرمهای موبایل مانند اندروید و iOS موجود است.
این کتابخانه دارای معماری انعطافپذیری است که امکان توسعه آسان آن را برای پلتفرمهای گوناگون (GPU ،CPU و TPU)، و از دسکتاپ گرفته تا خوشهای از سرورها، موبایلها و دستگاههای جدید و لبه علم، فراهم میکند. محاسبات تنسورفلو به صورت «گرافهای جریان داده حالتمند» (Stateful Dataflow Graphs) بیان میشود. نام تنسورفلو از عملیاتی گرفته شده است که شبکههای عصبی روی آرایههای داده چندبعدی که از آنها با عنوان تانسور یاد میشود، انجام میدهند. در کنفرانس گوگل I/O که در ژوئن ۲۰۱۸ برگزار شد، «جف دین» (Jeff Dean) بیان کرد که ۱۵۰۰ مخزن در «گیتهاب» (GitHub)، از تنسورفلو نام بردهاند (آن را منشن کردهاند) که تنها پنج مورد از آنها توسط گوگل بوده است.
تنسورفلو ۲.۰
«تنسورفلو دِو سامیت» (TensorFlow Dev Summit) گردهمایی است که هر سال فعالان حوزه یادگیری ماشین را از سراسر جهان به مدت دو روز گردهم میآورد. در این رویداد، شرکتکنندگان به گفتگوهای فنی سطح بالا، ارائه دموها و گفتگو با تیم و جامعه تنسورفلو میپردازند. در رویداد سال ۲۰۱۹، گوگل نسخه آلفا از تنسورفلو ۲.۰ را معرفی کرد. نسخه جدید با تمرکز بر افزایش بهرهوری توسعهدهندگان، سادگی و سهولت استفاده طراحی شده است. تغییراتی در تنسورفلو ۲.۰ به وقوع پیوسته که موجب افزایش بهرهوری کاربران آن میشود. همچنین، تغییرات متعددی در API آن انجام شده که از آن جمله میتوان به مرتبسازی مجدد آرگومانها، حذف APIهای زائد، تغییر نام سمبلها و تغییر مقادیر پیشفرض برای پارامترها اشاره کرد. در ادامه برخی از مهمترین تغییرات به وقوع پیوسته در تنسورفلو ۲.۰ بیان میشوند.
واحد پردازش تانسور (TPU)
کاربردهای تنسور فلو
ویژگیها و مزایای تنسور فلو
برنامههای کاربردی
برنامههای کاربردی متعددی از تنسورفلو قدرت گرفتهاند که از این میان میتوان به نرمافزارهای توضیحات نویسی خوکار برای تصاویر، مانند «دیپدریم» (DeepDream) اشاره کرد. الگوریتم مبتنی بر یادگیری ماشین موتور جستجو با عنوان رنک برین (RankBrain) نیز مثال دیگری است که تعداد قابل توجهی از کوئریهای جستجو، جایگزینی و تکمیل نتایج جستجوی مبتنی بر الگوریتمهای ایستای سنتی را فراهم میکند.
تنسورفلو در مقابل رقبایش
تنسورفلو با تعداد دیگری از چهارچوبهای یادگیری ماشین در حال رقابت است. PyTorch، CNTK و MXNet سه نمونه از اصلیترین رقبای آن هستند که خدمات تقریبا یکسانی را ارائه میکنند:
- PyTorch: علاوه بر ساخته شدن توسط پایتون، شباهتهای زیادی با تنسورفلو دارد. تجهيزات شتابدهنده سختافزاری، یک مدل توسعه تعاملی که امکان طراحی رابطهای کاربردی را فراهم میکند و امکانات مفید دیگری که این چهارچوب ارائه میکند دست کمی از تنسورفلو ندارند. اساسا PyTorch انتخاب بهتری برای توسعه سریع پروژههایی است که در کوتاه مدت نیاز به پیادهسازی و اجرا دارند، اما تنسورفلو برای پروژههای بزرگتر و پیچیدهتر بهتر عمل میکند.
- CNTK، جعبه ابزار شناختی مایکروسافت نیز مثل تنسورفلو از یک ساختار نمودار برای توصیف جریان داده استفاده میکند، اما بیشتر روی ساخت شبکههای عصبی یادگیری عمیق تمرکز دارد. CNTK خیلی از کارهای شبکه عصبی را با سرعت بیشتری مدیریت میکند و از مجموعه رابطهای کاربردی برنامهنویسی گستردهتری (پایتون، سیپلاسپلاس، سیشارپ و جاوا) پشتیبانی میکند، اما در حال حاضر یادگیری و پیادهسازی CNTK به راحتی TensorFlow نیست.
- Apache MXNet، این چهارچوب که توسط آمازون به عنوان چهارچوب اصلی یادگیری عمیق در AWS ارائه شده، قادر است از چند پردازنده گرافیکی و چند ماشین استفاده کند. همچنین از طیف نسبتا گستردهای از زبانها شبیه به پایتون، سیپلاسپلاس، اسکالا، آر، جاوااسکریپت، جولیا، پرل و گو پشتیبانی میکند. هر چند کار با رابطهای کاربردی برنامهنویسی اصلی آن به راحتی رابطهای کاربردی برنامهنویسی TensorFlow نیست.