TensorFlow.js: یک لایبرری جاوااسکریپتی مبتنی بر مرورگر برای اجرای مدل‌های یادگیری ماشینی

TensorFlow.js: یک لایبرری جاوااسکریپتی مبتنی بر مرورگر برای اجرای مدل‌های یادگیری ماشینی

اگر یک دولوپر جاوااسکریپت هستید که به‌ تازگی وارد حوزۀ یادگیری ماشینی شده‌اید یا اگر یک دولوپر در حوزۀ یادگیری ماشینی هستید که قصد ورود به حوزۀ جاوااسکریپت را دارید، TensorFlow.js می‌تواند یک گزینۀ عالی برای شروع یادگیری شما باشد (جهت آشنایی بیشتر با مفهوم یادگیری ماشینی،‌ به مقالهٔ یادگیری ماشینی چیست؟ مراجعه نمایید). برای کسب اطلاعات بیشتر در مورد نحوۀ اجرای مدل‌های یادگیری ماشینی با استفاده از مرورگرها، در ادامه با سکان آکادمی همراه باشید.

TensorFlow.js یک لایبرری اپن‌سورس است که این امکان را برای دولوپرها فراهم می‌کند تا بتوانند با استفاده از آن، تمام مراحلِ تعریف، آموزش و اجرای مدل‌های یادگیری ماشینی را در مرورگرها انجام دهد؛ لازم به ذکر است که این فرآیند با استفاده از زبان برنامه‌نویسی جاوااسکریپت و یکسری API سطح بالا و در داخل مرورگر انجام می‌شود (جهت آشنایی بیشتر با فریمورک یادگیری ماشینی گوگل تحت عنوان تنسورفلو، به مقالهٔ TensorFlow: فریمورک اپن‌سورس یادگیری ماشینی گوگل مراجعه نمایید).

آشنایی با مزیت‌های استفاده از مرورگر برای ساخت مدل‌های ML
برای اجرای یک برنامۀ یادگیری ماشینی (ML) در مرورگر، دیگر نیاز نیست تا تمام لایبرری‌‌ها و درایورهای مورد نیاز آن را در مرورگر نصب کنید بلکه فقط کافی است مرورگر خود را باز کرده و مدل را در آن اجرا کنید. همچنین سرعت اجرای برنامه در مرورگرها به‌ اندازۀ سرعت اجرای آن‌ها روی سیستم‌‌های مجهز به GPU است. علاوه بر این، TensorFlow.js از WebGL نیز پشتیبانی می‌کند (WebGL یک API جاوااسکریپتی است که برای رِندِر کردن گرافیک‌های دوبُعدی و سه‌بُعدی در مرورگرها استفاده می‌شود).

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

ورک‌فلوهای استفاده از TensorFlow.js
سه ورک‌‌فلوی کلی برای دولوپرها به‌ منظور استفاده از لایبرری TensorFlow.js وجود دارد که در ادامه به بررسی تک‌تک آن‌ها خواهیم پرداخت.

- می‌توانید یک مدل موجود و از قبل آموزش داده شده را در مرورگر لود کنید؛ اگر مدلی دارید که قبلاً آن را به‌ صورت آفلاین و با استفاده از لایبرری Keras یا Tensor آموزش داده‌اید، اکنون می‌توانید آن را به فرمت لایبرری TensorFlow.js تبدیل کرده و در مرورگر لود کنید تا از آن‌ها در فاز Inference استفاده کنید (فاز Inference در مدل‌های یادگیری ماشینی پس از فاز Training آغاز می‌‌شود. هدف اصلی در این فاز، انجام کاری است که یک شبکۀ عصبی آن را یاد گرفته است. صرف‌‌نظر از اینکه چگونه شبکۀ عصبی آموزش دیده و چگونه یاد گرفته تا تصاویر، متن یا مثلاً سلول‌های سرطانی را تشخیص دهد؛ در فاز Inference، دادۀ دنیای واقعی به شبکۀ عصبی داده می‌‌شود و شبکۀ عصبی به‌ عنوان خروجی یک پیش‌بینی برای تشخیص تصویر، متن یا وجود سلول سرطانی و غیره انجام خواهد داد).

- همچنین می‌توانید مدل‌های موجود را برای ترِین (آموزش) مجدد و به‌ منظور تقویت آن مدل، در مرورگر لود کنید. برای این منظور، از Transfer Learning استفاده می‌شود (Transfer Learning یک متد یادگیری ماشینی است که در آن یک مدل توسعه‌یافته برای یک تَسک، به‌ عنوان نقطۀ شروعی برای مدل در تَسک دوم مورد استفاده قرار می‌گیرد که این رویکرد در یادگیری ژرف بسیار رایج است (برای آشنایی بیشتر با مفهوم یادگیری ژرف، به مقالهٔ یادگیری ژرف چیست و چگونه کار می‌کند؟ مراجعه نمایید). توسعۀ مدل‌های شبکهٔ عصبی نیاز به زمان و محاسبات وسیعی دارند؛ در همین راستا، مدل‌هایی که از پیش ترِین شده‌اند، به‌ عنوان نقطۀ شروعی در تَسک‌های بینایی ماشین و پردازش زبان طبیعی مورد استفاده قرار می‌گیرند. این متد بر ذخیرۀ دانش در هنگام حل یک مسئله و استفاده از آن در حل یک مسئلۀ متفاوت اما مرتبط با مسئلۀ قبلی تمرکز دارد. به عنوان مثال، دانش آموخته شده در فرآیند یادگیری برای تشخیص یک اتومبیل می‌تواند برای تشخیص یک کامیون نیز به کار گرفته شود). همچنین برای ترِین مجدد، مقدار دادۀ کمتری مورد نیاز خواهد بود. این داده‌ها با استفاده از سنسورِ دیوایسی که به مرورگر متصل شده است یا سایر داده‌‌های مربوط به سمت کلاینت و با استفاده از تکنیکی تحت عنوان Image Retraining در مرورگر جمع‌آوری می‌شوند؛ بنابراین این روش منجر به افزایش سرعت فرآیند ترِین دقیقِ یک مدل با به‌کارگیری مقدار دادۀ کمتر می‌‌شود.

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