با سؤالات مصاحبه شغلی حوزه های خاص یادگیری ماشین چقدر آشنایی دارید؟ اکثر مشاغل یادگیری ماشین که در LinkedIn، Glassdoor و Indeed ارائه می‌شوند، به‌طور خاص بر یک حوزه خاص و نقش شغلی مشخصی تمرکز می‌کنند. به‌این ترتیب، در طول مصاحبه آنان روی سؤالات آن نقش خاص تمرکز خواهند کرد؛ مثلاً برای نقش مهندس بینایی ماشین (Computer vision engineer)، مدیر استخدام روی سؤالات پردازش تصویر تمرکز خواهد کرد. در این مطلب به سؤالات مصاحبه برای نقش‌های شغلی متفاوت در حوزه یادگیری ماشین و به‌طور کلی، دیتا ساینس نگاهی خواهیم انداخت. اگر به دنبال شغلی در این حوزه هستید، لازم است با سؤالات مصاحبه شغلی حوزه های خاص یادگیری ماشین و سؤالاتی که احتمالاً در حین مصاحبه با آن‌ها مواجه می‌شوید آشنا شوید؛ پس تا انتهای این مطلب همراه ما باشید.

فهرست مطالب پنهان‌کردن فهرست
  1. 1. سؤالات مصاحبه مهندس بینایی ماشین
    1. 1.1. ۱.چرا ورودی‌ها در مسائل بینایی ماشین می‌توانند بزرگ شوند؟ با مثال توضیح دهید.
    2. 1.2. ۲. برای یک مجموعه داده کوچک راهی برای آموزش یک شبکه عصبی کانولوشن (CNN) پیشنهاد دهید.
    3. 1.3. ۳. درمورد یکی از پیشرفته‌ترین الگوریتم‌های تشخیص اشیا یعنی YOLO توضیح دهید؟
  2. 2. سؤالات مصاحبه مهندسی NLP
    1. 2.1. ۱. تحلیل نحوی (Syntactic Analysis) چیست؟
    2. 2.2. ۲. چگونه زمان استنتاج یک مدل ترنسفورمر آموزش‌دیده (Pre-trained Transformer) را کاهش می‌دهید؟
    3. 2.3. ۳. منظور از تکنیک افزایش داده یا Data Augmentation چیست؟ برخی از راه‌هایی که در پروژه‌های NLP می‌توان استفاده کرد چیست؟
  3. 3. سؤالات مهندس یادگیری ماشین
    1. 3.1. ۱. روش‌های کاهش ابعاد (Dimensionality Reduction) چیست؟
    2. 3.2. ۲. چگونه حد آستانه‌ی یک طبقه‌بندی‌کننده را پیدا می‌کنید؟
    3. 3.3. ۳. تابع فعال‌ساز در ماشین‌لرنینگ چیست؟
    4. 3.4. ۴. یادگیری گروهی یا Ensemble Learning چیست؟
  4. 4. جمع‌بندی مطالب درباره‌ی سؤالات مصاحبه شغلی حوزه های خاص یادگیری ماشین

سؤالات مصاحبه مهندس بینایی ماشین

۱.چرا ورودی‌ها در مسائل بینایی ماشین می‌توانند بزرگ شوند؟ با مثال توضیح دهید.

تصویری با ابعاد ۲۵۰ در ۲۵۰ و یک لایه پنهان کاملاً متصل (Fully connected Hidden Layer) با ۱۰۰۰ نود را تصور کنید. برای این تصویر فیچرهای ورودی   ۳ در ۲۵۰  در ۲۵۰  یعنی برابر با ۱۸۷۵۰۰ است و ماتریس وزن در اولین لایه پنهان ماتریسی با ابعاد ۱۸۷۵۰۰ در ۱۰۰۰ خواهد بود. این اعداد برای ذخیره‌سازی و محاسبات بسیار زیاد هستند و برای مقابله با این مشکل از عملیات کانولوشن (Convolution) استفاده می‌کنیم.

۲. برای یک مجموعه داده کوچک راهی برای آموزش یک شبکه عصبی کانولوشن (CNN) پیشنهاد دهید.

اگر داده‌های کافی برای آموزش شبکه عصبی کانولوشن ندارید، می‌توانید از یادگیری انتقالی (Transfer Learning) برای آموزش مدل خود و دریافت نتیجه‌های بهتر استفاده کنید. برای این کار شما به یک مدل از پیش آموزش‌دیده (Pre-trained) نیاز دارید که روی یک مجموعه داده بزرگتر آموزش داده شده باشد.

پس از آن، با آموزش آخرین لایه‌های آن مدل‌، آن را روی داده‌های جدید خود تنظیم (Fine-tune) می‌کنید. یادگیری انتقالی به دانشمندان داده اجازه می‌دهد تا با استفاده از منابع، محاسبات و ذخیره‌سازی کمتر، مدل‌هایی را روی داده‌های کوچک‌تر آموزش دهند.

اگر علاقه‌مند به مطالعه بیشتر درباره‌ی یادگیری انتقالی هستید، این مطلب را مطالعه کنید:‌
یادگیری انتقالی (Transfer Learning) چیست و چطور کار می‌کند؟

‎⁨سؤالات پرتکرار مصاحبه شغلی یادگیری ماشین⁩

۳. درمورد یکی از پیشرفته‌ترین الگوریتم‌های تشخیص اشیا یعنی YOLO توضیح دهید؟

YOLO یک الگوریتم تشخیص اشیا (Object Detection) مبتنی بر شبکه‌های عصبی کانولوشنی (CNN) است و می‌تواند نتیجه‌های بلادرنگ را ارائه کند. الگوریتم YOLO به یک بار Forward pass  در شبکه‌ی CNN برای تشخیص شیء نیاز دارد که می‌تواند هم احتمالات کلاس‌های مختلف و هم کادرهای محدودکننده را پیش‌بینی کند.

این مدل برای شناسایی اشیای مختلف آموزش دیده است و شرکت‌ها از یادگیری انتقالی برای تنظیم دقیق (Fine-tune) آن روی داده‌های جدید برای کاربردهای مدرن، مانند خودروهای خودران، حفاظت از حیات‌وحش و امنیت، استفاده می‌کنند.

ما YOLO  را به طور مفصل در این مقاله معرفی کرده‌ایم:‌

الگوریتم YOLO چیست؟ چه کاربردی در تشخیص اشیا دارد؟

سؤالات مصاحبه مهندسی NLP

۱. تحلیل نحوی (Syntactic Analysis) چیست؟

تجزیه‌وتحلیل نحوی که به‌عنوان Syntax analysis یا Parsing نیز شناخته می‌شود یک تحلیل متنی است که معنای منطقی پشت جمله یا بخشی از جمله را به ما می‌گوید و بر رابطه میان کلمه‌ها و ساختار گرامری جملات تمرکز می‌کند؛ همچنین می‌توان گفت که درواقع تحلیل نحوی همان پردازش زبان طبیعی با استفاده از قواعد گرامری است.

۲. چگونه زمان استنتاج یک مدل ترنسفورمر آموزش‌دیده (Pre-trained Transformer) را کاهش می‌دهید؟

با وجود مدل‌های زبانی بزرگ، مدل‌ها پارامترهای زیادی دارند و حجم زیادی از داده را برای آموزش احتیاج دارند؛ بنابراین به‌کارگیری مدل‌ها در تولید و کاهش زمان استنتاج به میکروثانیه دشوارتر شده است. با‌این‌حال برای بهبود زمان استنتاج می‌توانیم این موارد را در نظر بگیریم:

  • استفاده از GPU ،TPU یا FPGA برای سرعت بیشتر
  • تکنیک هرس (Pruning) برای کاهش پارامترها
  • استفاده از تکنیک Knowledge distillation
  • استفاده از سافت‌مکس سلسله‌مراتبی (Hierarchical softmax) یا سافت‌مکس تطبیقی (adaptive softmax)
  • به‌کارگیری محاسبات موازی یا دسته‌ای  (parallel/ batch computing)
  • کاهش سایز مدل

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

مدل ترنسفورمر (Transformer Model) یا مدل انتقالی چیست؟

۳. منظور از تکنیک افزایش داده یا Data Augmentation چیست؟ برخی از راه‌هایی که در پروژه‌های NLP می‌توان استفاده کرد چیست؟

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

برخی از روش‌هایی که در پروژه‌های NLP می‌توان افزایش داده را انجام داد به‌این شرح است:

  • جایگزینی موجودیت‌ها (Replacing Entities)
  • جایگزینی کلمه‌های مبتنی بر TF-IDF
  • اضافه‌کردن نویز به داده
  • ترجمه برگشتی (Back Translation)
  • جایگزینی مترادف‌ها
  • Bigram Flipping

سؤالات مهندس یادگیری ماشین

۱. روش‌های کاهش ابعاد (Dimensionality Reduction) چیست؟

برای کاهش ابعاد می‌توانیم از روش‌های انتخاب فیچر یا استخراج فیچر استفاده کنیم.

انتخاب فیچر فرایند انتخاب فیچرهای بهینه و حذف فیچرهای نامربوط است. ما از روش‌های Filter، Wrapper و Embedded برای تحلیل اهمیت فیچر و حذف فیچرهای کم‌اهمیت‌تر برای بهبود عملکرد مدل استفاده می‌کنیم.

استخراج فیچر، فضای چند بعدی را به ابعاد کمتر تبدیل می‌کند. در طول این فرایند هیچ اطلاعاتی از میان نمی‌رود و فقط از منابع کمتری برای پردازش داده‌ها استفاده می‌کند. رایج‌ترین تکنیک‌های استخراج فیچر عبارت‌اند از: آنالیز تفکیک خطی (LDA)، Kernel PCA و تجزیه‌وتحلیل تمایز درجه دوم (Quadratic discriminant analysis).

۲. چگونه حد آستانه‌ی یک طبقه‌بندی‌کننده را پیدا می‌کنید؟

معمولاً آستانه‌ی یک طبقه‌بندی‌کننده ۰.۵ است، اما در برخی موارد برای بهبود دقت نیاز به تنظیم دقیق (fine-tune) آن داریم؛ مثلاً درمورد یک طبقه‌بندی‌کننده هرزنامه، مدل رگرسیون لجستیک (Logistic Regression) یک احتمال را برمی‌گرداند. ما یا از مقدار احتمال استفاده می‌کنیم یا با استفاده از یک حد آستانه آن مقدار را به کلاس Spam/Not Spam تبدیل می‌کنیم.

مثلاً اگر آستانه را طبق معمول ۰.۵ در نظر بگیریم، به‌این معنی است که اگر احتمال برابر یا بالاتر از ۰.۵ باشد، اسپم (spam) است و اگر کمتر باشد، اسپم نیست.

برای یافتن حد آستانه، می‌توانیم از منحنی‌های Precision-Recall و منحنی‌های ROC و  grid search استفاده کنیم یا با تغییر دستی مقدار آستانه، نتیجه‌های بهتری به دست آوریم.

۳. تابع فعال‌ساز در ماشین‌لرنینگ چیست؟

تابع فعال‌ساز یا activation function یک تبدیل غیرخطی در شبکه‌های عصبی (Neural Networks) است. به اینکه ورودی را قبل از انتقال به لایه بعدی در شبکه، از تابع فعال‌ساز عبور می‌دهیم. مقدار خالص ورودی می تواند چیزی میان inf- تا inf+ باشد و نورون نمی‌داند چگونه این مقادیر را محدود کند؛ بنابراین تابع فعال‌ساز در این‌جا تصمیم می‌گیرد که یک نورون باید فعال شود یا نه که درنهایت بتواند مقادیر ورودی را محدود کند.

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

  • تابع مرحله‌ای یا Step Function
  • تابع سیگموید (Sigmoid Function)
  • تابع ReLU
  • تابع ReLU Leaky

برای مطالعه بیشتر درباره‌ی توابع فعال‌ساز و نقش آن‌ها در شبکه عصبی و همچنین انواع آن، این مطلب را مطالعه کنید:‌

توابع فعال‌ساز (Activation Functions) چیست و چه کاربردهایی دارد؟

۴. یادگیری گروهی یا Ensemble Learning چیست؟

Learning Ensemble به‌منظور ترکیب بینش چندین مدل یادگیری ماشین برای بهبود معیارهای دقت (Accuracy) و عملکرد مدل استفاده می‌شود.

روش‌های ساده Ensemble این موارد را دربرمی‌گیرد:

  • Mean/Average: پیش‌بینی‌های چند مدل با عملکرد بالا را میانگین می‌گیریم.
  • میانگین وزنی (Weighted Average): وزن‌های مختلفی را براساس عملکرد به مدل‌های یادگیری ماشین اختصاص می‌دهیم و سپس آن‌ها را ترکیب می‌کنیم.

روش‌های پیشرفته Ensemble عبارت‌اند از:

  • Bagging که برای به‌حداقل‌رساندن خطاهای واریانس استفاده می‌شود. در این تکنیک به‌صورت تصادفی زیرمجموعه‌ای از داده‌های آموزشی را ایجاد می‌کنیم و آن را روی مدل‌ها آموزش می‌دهیم. ترکیب مدل‌ها واریانس را کاهش می‌دهد و آن را در مقایسه با یک مدل تنها قابل اعتمادتر می‌کند.
  • Boosting برای کاهش خطاهای بایاس و تولید مدل‌های پیش‌بینی برتر استفاده می‌شود. Boosting یک تکنیک ensemble تکرارشونده (iterative) است. الگوریتم‌های boosting وزن بیشتری را به مشاهداتی که مدل قبلی به‌طور نادرست آن‌ها را پیش‌بینی کرده بود می‌دهند.

جمع‌بندی مطالب درباره‌ی سؤالات مصاحبه شغلی حوزه های خاص یادگیری ماشین

در این مطلب به چندین مورد از سؤالات پرتکرار مصاحبه شغلی یادگیری ماشین و سؤالاتی را که معمولاً در مصاحبه برای نقش‌های شغلی خاص در حوزه یادگیری ماشین، مانند مهندس بینایی ماشین، مهندس NLP و مهندس یادگیری ماشین، مطرح می شوند و پاسخ‌های آن‌ها پرداختیم. در نظر داشته باشید که بررسی سؤالات احتمالی در مصاحبه و آمادگی برای پاسخ به آن‌ها می‌تواند نتیجه‌ی مصاحبه را تا حد زیادی به‌نفع شما تغییر دهد؛ بنابراین پیشنهاد می‌کنیم با توجه به نقش شغلی که در نظر دارید، پاسخ سؤالات مرتبط با آن را بادقت بررسی کنید.