در چند سال گذشته، پایتون زبان ترجیحی و اصلی در یادگیری ماشین و یادگیری عمیق بوده است. اکثر آموزشها در این زمینه فقط پایتون و یا به موازات آن زبان برنامه نویسی R را ارائه میدهند. از دلایل محبوبیت پایتون میشود به داشتن فهرستی کامل از کتابخانههای یادگیری ماشین و یادگیری عمیق، اجرای بهینه عملیات، مقیاسپذیری و ویژگیهای متنوع آن اشاره کرد.
اما آیا پایتون تنها گزینه برای ماشین لرنینگ و برنامهنویسی اپلیکیشنهای یادگیری ماشین است؟
خیر! بسیاری از توسعهدهندگان و متخصصان در این حوزه، در حال حاضر از جاوا اسکریپت استفاده میکنند. چرا؟ به ۴ دلیلی که در این محتوا خواهید خواند.
آنچه در این نوشته خواهیم داشت
یادگیری ماشین با جاوا اسکریپت
جاوا اسکریپت یک زبان برنامهنویسی است که برای ایجاد وبسایتهایی با محتوای داینامیک استفاده میشود. در واقع هرآنچه در صفحات وب حرکت میکند، رفرش میشود و یا بدون نیاز به بارگذاری مجدد صفحه تغییر وضعیت میدهد، به کمک جاوا اسکریپت ایجاد یا کنترل میشود. قابلیتهایی مانند گرافیک متحرک، اسلاید عکس، تکمیل خودکار متن در فیلد و بهروزرسانی خودکار برخی صفحات، مثالهایی از این دست هستند.
در فضای یادگیری ماشین، (تا این لحظه) جاوا اسکریپت جایگزین پایتون نشده است. اما دلایل خوبی هم وجود دارد که میشود از جاوا اسکریپت برای یادگیری ماشین استفاده کرد. پس، میشود با این هدف هم جاوااسکریپت را یاد گرفت. در ادامه به چهار دلیل برای یادگیری جاوا اسکریپت برای ماشین لرنینگ خواهیم پرداخت.
۱. Private Machine Learning
اکثر اپلیکیشنهای یادگیری ماشین به معماریهای کلاینت/سرور متکی هستند. معماری کلاینت/سرور مزایای زیادی دارد. توسعهدهندگان میتوانند مدلهای خود را بر روی سرورها اجرا کنند و از طریق APIهای وب، در دسترس کاربران اپلیکیشنها قرار دهند. و به این شکل شبکههای عصبی بزرگی را که بر روی دستگاههای اپلیکیشن اجرا نمیشود، به کار گیرند.
اما در بسیاری از موارد، ترجیح بر این است که استنتاج یادگیری ماشین بر روی دستگاه کاربر انجام شود. به عنوان مثال، به دلیل حفظ حریم شخصی، ممکن است کاربران نخواهند عکسها، پیامهای خصوصی و ایمیلهای خود را به سروری ارسال کنند که مدل اجرای آن یادگیری ماشین است.
خوشبختانه، همهی اپلیکیشنهای یادگیری ماشین به سرورهای گرانقیمت نیاز ندارند. بسیاری از مدلها را میتوان در دستگاههای کاربر فشرده کرد و سازندگان تلفن همراه هم، دستگاههای خود را به تراشههایی مجهز میکنند که بتوانند از مکانیزم استنتاج یادگیری عمیق محلی پشتیبانی کنند.
مشکل اینجاست که یادگیری ماشین با پایتون در بسیاری از دستگاهها پشتیبانی نمیشود. پایتون بر روی MacOS و اکثر نسخههای لینوکس به صورت پیشفرض نصب است. اما کاربر میبایست کتابخانههای یادگیری ماشین را جداگانه نصب کند. کاربران ویندوز نیز میبایست پایتون را به صورت دستی نصب کنند و سیستم عاملهای موبایل هم پشتیبانی بسیار ضعیفی از مفسران پایتون دارند.
اگر میخواهید بیشتر با زبان برنامهنویسی پایتون آشنا شوید، «معرفی زبان برنامه نویسی پایتون و مقایسه پایتون ۲ و ۳» را بخوانید.
و اما جاوا اسکریپت!
جاوا اسکریپت را تمام مرورگرهای مدرن موبایل و دسکتاپ پشتیبانی میکنند. بدین معنی که اجرای برنامههای یادگیری ماشین با جاوا اسکریپت، بر روی اکثر دستگاههای دسکتاپ و تلفن همراه تضمین شده است. بنابراین، اگر مدل یادگیری ماشین شما با کد جاوا اسکریپت در مرورگر اجرا شود، میتوانید مطمئن باشید که تقریباً برای همه کاربران قابلدسترسی خواهد بود.
در حال حاضر چندین کتابخانه یادگیری ماشین با جاوا اسکریپت وجود دارد. به عنوان مثال TensorFlow.js، نسخه جاوا اسکریپتیِ کتابخانه معروف یادگیری ماشین و یادگیری عمیق TensorFlow در گوگل است. اگر با تلفن هوشمند، تبلت یا رایانه رومیزی خود به صفحه نمایشی TensorFlow.js بروید، نمونههای آماده زیادی را برای استفاده از یادگیری ماشین با جاوا اسکریپت پیدا خواهید کرد. مدلهای یادگیری ماشین که بدون ارسال هیچ دادهای به فضای ابری، در دستگاه شما اجرا میشوند و نیازی به نصب نرمافزار اضافی هم ندارند. از دیگر کتابخانههای قدرتمند یادگیری ماشینی جاوا اسکریپت میتوان به ML5.js، Synaptic و Brain.js اشاره کرد.
۲. مدلهای سریع و سفارشیسازی شدهی ML
حفظ حریم خصوصی تنها مزیت یادگیری ماشین با جاوا اسکریپت نیست. در برخی از اپلیکیشنها، ارسال رفت و برگشتیِ دادهها از دستگاه به سرور میتواند باعث تأخیر شود که تجربه کاربر را منفی میکند. همچنین، کاربران ممکن است بخواهند مدلهای یادگیری ماشین خود را حتی زمانی که اتصال اینترنت ندارند، اجرا کنند. در این موارد، داشتن مدلهای یادگیری ماشین با جاوا اسکریپت که روی دستگاه کاربر اجرا میشوند، بسیار مفید است.
یکی دیگر از کاربردهای مهم یادگیری ماشین با جاوا اسکریپت، سفارشیسازی مدل (Model Customization) است. برای مثال، فرض کنید میخواهید با یادگیری ماشین یک مدلِ تولید متن ایجاد کنید که خود را با زبان مدنظر و ترجیحی کاربر منطبق سازد. یک راهحل میتواند این باشد که به ازای هر کاربر یک مدل بر روی سرور ذخیره شود که صرفا بر اطلاعات او تمرکز میکند. با افزایش تعداد کاربران در این روش، بر روی سرور شما بار اضافی وارد میشود و شما را ملزم میسازد تا دادههای حساستر را در فضای ابری ذخیره کنید.
شیوهی جایگزین این است که یک مدل پایهای را در سرور و کپی آن را در دستگاه کاربر ایجاد کنید و تنظیمات دقیقتر مدل، منطبق با دادههای کاربر با کمک کتابخانههای یادگیری ماشین با جاوا اسکریپت صورت بگیرد.
این کار، از یک سو دادهها را روی دستگاههای کاربران نگه میدارد و نیاز به ارسال آنها به سرور را برطرف میکند. از سوی دیگر با اجتناب از ارسال بار استنتاج و آموزشهای اضافی به حافظه ابری، منابع سرور را آزاد میکند. کاربران هم میتوانند حتی زمانی که ارتباط آنها با سرورهای شما قطع شده باشد، همچنان از امکانات یادگیری ماشین استفاده کنند.
چرا ماشین لرنینگ و یادگیری آن مهم است؟ «چشم انداز شغلی و درآمدی ماشین لرنینگ (۲۰۲۲)» را بخوانید تا از کاربردها و بازارکار یادگیری ماشین مطلع شوید.
۳. یکپارچگی یادگیری ماشین در اپلیکیشنهای وب و موبایل
یکی دیگر از مزایای یادگیری ماشین با جاوا اسکریپت انطباق آن با اپلیکیشنهای موبایل است. پشتیبانی پایتون در سیستم عاملهای موبایل هنوز در مراحل اولیه است. اما در حال حاضر مجموعهای غنی از ابزارهای چندسکوییِ توسعه اپلیکیشن با جاوا اسکریپت مانند کوردوا (Cordova) و آیونیک (Ionic) وجود دارد. این ابزارها بسیار محبوب شدهاند زیرا به شما این امکان را میدهند که فقط یک بار کد خود را بنویسید و سپس آن را هم برای iOS و هم برای Android به کار بگیرید.
برای سازگار کردن کد با سیستم عاملهای مختلف، ابزارهای توسعه چندسکویی، webview را عرضه میکنند: شیء مرورگری که میتواند کدهای جاوا اسکریپت را اجرا کند و میتواند از سیستم عامل مد نظر، در یک برنامه بومی embed (جاسازی) شود. این اشیاء مرورگر از کتابخانههای یادگیری ماشین با جاوا اسکریپت پشتیبانی میکنند.
اگر برنامه تلفن همراه خود را با کد اصلی یا کد بومی نوشتهاید و میخواهید کد یادگیری ماشین جاوا اسکریپت خود را یکپارچه کنید، میتوانید شیء مرورگر امبدشدهی خود (مانند WKWebView در iOS) را به برنامهتان اضافه کنید.
تعداد دیگری از کتابخانههای یادگیری ماشین با جاوا اسکریپت
کتابخانههای یادگیری ماشین دیگری نیز برای اپلیکیشنهای موبایل وجود دارند: مانند TensorFlow Lite و Core ML. البته، آنها نیاز به کدنویسی اصلی در پلتفرم موبایلی دارند که اپلیکیشن خود را برای آن توسعه میدهید. این امکان هم وجود دارد که اگر قبلاً نسخهای از اپلیکیشن یادگیری ماشین خود را برای مرورگر پیادهسازی کردهاید، میتوانید به راحتی آن را با تغییرات کم یا بدون تغییر به برنامه تلفن همراه خود منتقل کنید.
۴. یادگیری ماشین با جاوا اسکریپت بر روی سرور
یکی از چالشهای اصلی یادگیری ماشین آموزش دادن مدلهاست. به خصوص در یادگیری عمیق، که یادگیری به محاسبات زیادی نیاز دارد. میشود مدلهای یادگیری عمیق را روی دستگاههای کاربر آموزش داد. البته، اگر شبکه عصبی بزرگ باشد، ممکن است این فرآیند هفتهها یا ماهها طول بکشد.
یادگیری ماشین با جاوا اسکریپتِ سمت سرور نیز در حال رشد است. شما میتوانید کتابخانههای یادگیری ماشین با جاوا اسکریپت را در Node.js (موتور سرور اپلیکیشن جاوا اسکریپت) اجرا کنید. TensorFlow.js یک نسخه ویژه دارد که برای سرورهایی که Node.js را اجرا میکنند مناسب است. کد جاوا اسکریپتی که برای تعامل با TensorFlow.js استفاده میکنید، همان کدی است که برای برنامههای در حال اجرا در مرورگر به کار میبندید.
اما در پشت صحنه، کتابخانه از سختافزار ویژهی سرور شما برای سرعت بخشیدن به آموزش و استنتاج استفاده میکند. یادگیری ماشین با Node.js نسبتاً جدید، اما به سرعت در حال پیشرفت است. چون علاقه فزآیندهای برای افزودن قابلیتهای یادگیری ماشین به برنامههای وب و موبایل وجود دارد.
جمعبندی و نتیجهگیری
پایتون زبان اصلی برای ماشین لرنینگ است. اما جاوا اسکریپت با ایجاد جذابیتهای جدیدی همچون حفظ حریم شخصی کاربران، ایجاد مدلهای سریع و سفارشیسازیشده، یکپارچگی کدهای آن در اپلیکیشنهای وب و موبایل و امکان آموزش مدلها بر روی سرور توانسته است تا حد زیادی توجه برنامهنویسان را به خود جلب و با پایتون رقابت کند.
اگر علاقهمند به یادگیری ماشین هستید، بهتر است خودتان را برای مواجههبا دنیایی پویا آماده کنید. همواره منتظر اتفاقات جدید و نوآورانه در این حوزه باشید. دیگر فقط یادگرفتن ماشین لرنینگ با پایتون کافی نیست. بهتر است به آموزش جاوااسکریپت هم فکر کنید.