نمونه‌سازی سریع مدل‌های یادگیری ماشین

مدل‌های یادگیری ماشین در دنیای هوش مصنوعی امروزی به خوبی جای خودشون رو باز کردند و هر روز شاهد محصولات و تکنولوژی‌های جدیدی هستیم که ازشون استفاده می‌کنند. با این وجود بعضی اوقات پیچیدگی‌های مربوط به ساختن یک مدل، اجرای مراحل یادگیری، امتحان کردن و غیره، برای برخی از کارها در ابتدا خیلی پیچیده و وقت‌گیر به نظر میاد. به علاوه، با سرعت رشد علمی فعلی، در مدت زمان کوتاهی مدل‌ها یا داده‌های یادگیری بهتر و جدیدتری وارد بازار خواهند شد و مجبورید تمام این مراحل رو دوباره تکرار کنید (Alexnet، Inception و ResNET در فاصله زمانی سه سال ارائه شدند).یکی از راه‌هایی که میشه این فرایند رو به صورت ساده‌تر وسریع‌تری انجام داد استفاده از ابزارها و محیط‌های توسعه مدل‌های هوش مصنوعی هست. به کمک این محیط‌های توسعه به راحتی می‌توانید به صورت نمونه سازی سریع (prototyping) مدلی رو برای کاری که ‌می‌خواهید درست کنید. محیط‌های توسعه هوش مصنوعی معمولاً شامل صدها مجموعه داده استاندارد (مثلاً MNIST, SQuaD و ...) و مدل‌های پیش ساخته (به عنوان مثال ResNET, BERT و ...) با ضرایب بعد از فرایند یادگیری‌شون هستند. فرض کنید چقدر کارها ساده‌تر میشه اگر صدها داده جمع‌‌آوری شده و مدل آماده رو یکجا داشته باشید و در چند ساعت بتوانید ترکیب‌های مختلفشون رو امتحان کنید.منبع pixabayخوبی‌ها و بدی‌هااین محیط‌های توسعه معمولاً استادندارهایی رو برای داده‌ها، مدل‌ها، و جمع‌آوری اطلاعات از مدل‌ها تعریف می‌کنند که باعث میشه داده یا مدلی که شما برای کار خودتون در نظر دارید مثل یک قطعه کوچک به راحتی در کنار سایر قطعات قرار بگیره. اینطوری وقتی که شما قطعه اختصاصی خودتون رو درست کردید و در کنار سایر قطعات موجود توی این محیط‌های توسعه گذاشتید، به راحتی می‌تونید هر ترکیبی که دوست دارید رو با قطعات موجود و قطعه ساخت خودتون انجام بدید تا به بهترین نتایج دلخواه برسید.ممکن هست که در نگاه اول دردسر اینکه به جای یک کد کوتاه و دورهمی مجبور باشید داده‌های خودتون یا مدل‌های خودتون رو به قالب‌های لازم برای کار با این محیط‌های توسعه دربیارید خیلی سخت به نظر بیاد، ولی این سرمایه‌گذاری هست که اگر به این فکر میکنید که بهترین فرایند یادگیری رو روی داده‌هاتون پیاده کنید، یا اینکه مدل‌تون رو با داده‌های استاندار بسیاری محک بزنید، قطعاً به زحمتش می‌ارزد. در ادامه این متن تعدادی از این محیط‌های توسعه رو معرفی می‌کنم.گلوآن (Gluon)گلوآن یک محیط توسعه یادگیری ماشین است که توسط پژوهشگران در شرکت آمازون ارایه شده است. کتابخانه یادگیری عمیق اصلی آن MXNet می‌باشد ولی از PyTorch نیز پشتیبانی می‌کند. به کمک گلوآن شما می‌توانید به راحتی مجموعه داده‌های (dataset) رایج بینایی ماشین (computer vision) را با چند خط ساده کد دانلود و استفاده کرده، و مدل‌های کاربردی یا پژوهشی خود را روی آنها پیاده کنید. همچنین به راحتی می‌توانید مدل‌های آماده‌ استفاده (pretrained) را برای داده‌های خود وارد کرده و از آنها استفاده کنید.به عنوان مثال، پس از وارد کردن (import) کتابخانه‌های وابسته، تنها با یک خط کد زیر می‌توانید مدل رزنت را که یادگیری آن قبلاً بر روی مجموعه داده سیفار انجام شده است رو وارد کنید: net = get_model('cifar_resnet110_v1', classes=10, pretrained=True)با داشتن این مدل به راحتی می‌توانید از روش‌های انتقال یادگیری استفاده کرده و مدل‌های اختصاصی قدرتمندی برای پروژه خود بسازید و به کار بگیرید.محیط توسعه گلوآن شامل صدها مجموعه داده می‌باشد که همگی آماده استفاده هستند و به دلیل استاندارد همسانشان هزینه آزمایش بر روی مدل‌های جدید پژوهشی و آزمایشی را به شدت کاهش می‌دهند. همچنین باغ‌وحش مدل‌های (Model Zoo) آن شامل صدها مدل آماده استفاده برای نمونه‌سازی و توزیع سریع مدل‌های مختلف یادگیری ماشین می‌باشد.با وجود اینکه تمرکز و قدرت اصلی گلوآن بر روی بینایی ماشین می‌باشد، شاخه دیگری از این محیط توسعه به یاری پژوهشگران در زمینه پردازش زبان نیز می‌آید. GluonNLP گزینه مناسبی برای این افراد می‌باشد.پارلِی (ParlAI)این محیط توسط فیسبوک عرضه شده و پشتیبانی کد باز می‌شود. پارلِی محیط توسعه‌ای مخصوص پردازش زبان و خصوصاً گفت‌وگو می‌باشد. با این وجود قابلیت‌هایی برای گذاره‌های زبانی که به همراه تصویر یا فیلم ارايه می‌شوند دارد. پارلی از مدل جالبی استفاده می‌کند که در آن یادگیری و استفاده از مدل به صورت گفتگو بین دو کارگزار دنبال می‌شود. این کارگزارها می‌توانند بسته به شرایط و هدف سازنده شامل ترکیب‌های مختلفی باشند. مثلاً هر دو کارگزار هوشمند باشند (برای یادگیری تقویتی)، یکی کارگزار هوشمندی که در حال یاگیری است و دیگری یک مجموعه داده (برای پیش بردن یادگیری)، یکی کارگزار هوشمند و دیگری کاربر انسان (به منظور استفاده کاربر از قابلیت‌های مدل استفاده شده در کارگزار هوشمند)، هر دو انسان (برای جمع‌آوری داده)و غیره.همانند گلوآن، این محیط نیز از صدها مجموعه داده پردازش زبان و مدل‌های کوچک و بزرگ آماده استفاده پشیبانی می‌کند که همگی به سادگی و تنها با چند خط کد قابل استفاده هستند. همچنین، سازندگان آن جامعه توسعه‌دهندگانش را به اضافه کردن مجموعه داده‌ها و مدل‌های پژوهشی به روز خود دعوت می‌کنند. به همین دلیل بخش بزرگی از این محیط توسعه توسط موسسات و پژوهشکده‌های ثالث به آن اضافه شده که باعث رشد سریع آن گردیده است.باشگاه اوپن اِی‌آی (OpenAI gym)تمرکز این محیط بر روی یادگیری تقویتی به کمک محیط‌های مجازی است. این مجموعه شامل محیط‌های مجازی و شبیه‌سازی شده‌ی پژوهشی و یا حتی بازی های قدیمی آتاری می‌باشد. از لحاظ ساختار شباهت بسیاری به پارلی دارد و یادگیری در آن بر روی کارگزاران هوشمند انجام می‌شود. تفاوت آن‌ها در این است که پارلی بیشتر بر روی گفتگوی بین دو کارگزار تمرکز دارد ولی باشگاه اوپن اِی‌آی بر روی کنش و واکنش‌های کارگزار و محیط شبیه سازی شده برای آن.سخن پایانیمنبع عکس unsplash بعد از سال‌ها تجربه در محیط‌های پژوهشی مختلف، یکی از چیز‌هایی که دیدم خیلی وقت‌ها کار پژوهشگران رو مشکل‌تر میکنه تعصب بر روی درست کردن همه چیز از صفر و فهمیدن تمامی مراحل اون هست. در حالی که خیلی وقت‌ها تمرکز بر روی بخش خاصی از مساله و عمیق شدن توی اون می‌تواند خیلی مفیدتر و تاثیرگذارتر باشد. استفاده از محیط‌های توسعه که اینجا معرفی شد تحقق این امر رو به سادگی برای خیلی‌ها که تیم خیلی بزرگ و امکانات نامتناهی ندارند ممکن می‌کنه. همچنین انعطاف‌پذیری تمامی این محیط‌ها (به دلیل استفاده از کدباز یا همون open source) به حدی هست که اگر بخشی از اون مزاحم کارتون هست به راحتی عوضش کنید.نکته بالا، یعنی استفاده به‌جا از چیزهای ساخته شده قبلی و تمرکز بر روی بهتر کردن بخش خاص مربوط به کار شما، در محیط های کاری و استارتاپی حتی حیاتی‌تر هم میشه. نگاهی به تعدد بالای چارچوب‌های (Framework) متعدد جاواسکریپ گواهی بر این ادعاست. پس اگر شرکتتون به دنبال استفاده از یادگیری ماشین هست، محیط‌های توسعه می‌تونه دوست خوبی براتون باشه.خوشحال می‌شم نظراتتون رو باهام در میان بگذارید. منتظر شنیدنشون هستم.