بدون هوش مصنوعی و یادگیری ماشین، بسیاری از پلتفرمها و نرمافزارهایی که بهصورت مداوم در زندگی روزانه از آنها استفاده میکنیم، از کار میافتند. مثلا الگوریتمهای توصیهای یوتیوب یا فناوریهایی که شامل تشخیص تصویر یا صدا میشوند، و بسیاری دیگر از سیستمهای خودکار ارائه محصولات و خدمات، بدون یادگیری ماشین غیرقابل استفاده خواهند بود. دامنه کاربردهای ماشین لرنینگ روزبهروز بیشتر و گستردهتر میشود. برای همین هم مشاغل مختلف مربوط به یادگیری ماشین یکی از حوزههای کاری پررونق دستکم تا چند دهه آینده خواهند بود. حتی اگر همین امروز مسیر شغلی یادگیری ماشین را شروع کنید، فرصتهای زیادی برای پیشرفت خواهید داشت.
البته این حوزه کاری یک ماهیت میان رشتهای دارد. یعنی یک مهندس یادگیری ماشین باید مهارتهای پایهای علوم داده مانند درک ساختار دادهها و مدلسازی دادهها، روشهای تحلیل کمی، ایجاد خطوط لوله دادهها و آمار را داشته باشد و با مبانی علوم کامپیوتر و مهارتهای مهندسی نرمافزار مانند درک معماری کامپیوتر، تسلط بر زبانهای برنامهنویسی هم به خوبی آشنا باشد. شاید همه اینها در شروع کار کمی گیجکننده بهنظر برسد. اما نگران نباشید ما در این مقاله به کسانی که میخواهند یاد بگیرند که چگونه مهندس یادگیری ماشین شوند، راه را نشان میدهیم.
مهندس یادگیری ماشین کیست و چه وظایفی دارد؟
یک مهندس یادگیری ماشین کسی است که میداند چگونه دادهها را برای آموزش ماشین جمعآوری کند، الگوریتمهای مختلف ماشین لرنینگ و نحوه پردازش دادهها را میشناسد، میداند که چگونه باید نتایج برنامههایی که با یادگیری ماشینی نوشته میشوند را ارزیابی و تایید کند و… . طبیعتا برای انجام درست و دقیق همه این وظایف و مسئولیتها نیاز به داشتن دانش پایه و تکمیلی درباره کامپیوتر و ریاضیات است. برای همین تقریبا بیشتر استخدامهای یادگیری ماشین به فردی نیاز دارند که حداقل مدرک لیسانس تا فوقلیسانس و دکترا در زمینههای مرتبط مانند علوم کامپیوتر، ریاضیات یا آمار داشته باشند.
البته جدا از مدارک آکادمیک و دورههای آموزش عالی، گواهینامههای تخصصی در بینایی ماشین، شبکههای عصبی، یادگیری عمیق و…، هوش مصنوعی یا علم داده هم میتواند رزومه یک مهندس یا کارآموز ماشین لرنینگ را قویتر کند.
استخدام یادگیری ماشین در چه پوزیشنهای شغلی انجام میشود؟
اگر ماشین لرنینگ را بهشکل حرفهای دنبال میکنید، در آینده میتوانید یکی از عناوین و مشاغل زیر را داشته باشید:
- مهندس یادگیری ماشین (Machine Learning Engineer)
- مهندس داده (Data Engineer)
- دانشمند داده یا دیتا ساینتیست (Data Scientist)
- مهندس نرمافزار (Software Engineer)
- محقق یادگیری ماشین (Machine Learning Researcher)
- دانشمند پردازش زبان طبیعی (Scientist NLP)
- توسعهدهنده هوش تجاری (Business Intelligence Developer)
مهندسان یادگیری ماشین آزمایشهای مختلف ماشین لرنینگ را با استفاده از زبانهای برنامهنویسی مانند پایتون، اسکالا و جاوا با کتابخانههای یادگیری ماشین مناسب اجرا میکنند.
دانشمندان و مهندسان داده نیز دادهها را تحلیل میکنند تا بینشهای عملی برای ماشین لرنینگ تولید کنند. برای این کار از فناوریهای تحلیلی پیشرفته، از جمله یادگیری ماشین و مدلسازی پیشبینی برای جمعآوری، تجزیه و تحلیل و تفسیر مقادیر زیادی داده استفاده میشود.
بسیاری از مردم دانشمندان داده و مهندسان یادگیری ماشین را اشتباه میگیرند. به بیان ساده: یک دانشمند داده خروجیهای مورد نیاز را برای انسان ایجاد میکند، اما یک مهندس یادگیری ماشین این خروجیها را برای ماشینها ایجاد میکند.
کار دانشمندان NLP (یا دانشمندان پردازش زبان طبیعی) هم این است که به ماشینها توانایی درک زبان انسان را بدهند. یعنی کاری کنند تا ماشینها در نهایت بتوانند با انسانها به زبان خود ما صحبت کنند. مثلا یک دانشمند NLP روی طراحی ماشینی کار میکند که میتواند الگوهای گفتار را یاد بگیرد و همچنین کلمات گفتاری را به زبانهای دیگر ترجمه کند.
توسعهدهندگان هوش تجاری از تجزیهوتحلیل دادهها و یادگیری ماشین برای جمعآوری، تحلیل و تفسیر مقادیر زیادی از دادهها و تولید بینشهای عملیای استفاده میکنند که میتواند برای تصمیمگیریهای تجاری توسط مدیران شرکتها استفاده شود. به عبارت سادهتر این دانشمندان روی استفاده از دادهها برای اتخاذ تصمیمات تجاری بهتر کار میکنند.
مهارتهای فنی لازم برای تبدیل شدن به یک مهندس یادگیری ماشین
همانطور که گفتیم یک مهندس ماشین لرنینگ اصول مهندسی نرمافزار را با دانش تحلیلی و علم داده ترکیب میکند تا یک مدل یادگیری ماشین را برای یک نرمافزار یا شخص طراحی و اجرا کند. بنابراین متخصصان و مهندسان باید حتما روی مجموعهای از مهارتهای مربوط به علم داده و مهندسی نرمافزار و آمار تسلط داشته باشند. بیایید با هم نگاهی به مهمترین مهارتهای مورد نیاز یک مهندس ماشین لرنینگ در هرکدام از این حوزهها بیندازیم:
مهارتهای مهندسی نرمافزار
برخی از اصول علوم کامپیوتری که مهندسین ماشین لرنینگ بر آنها تکیه دارند عبارتند از نوشتن الگوریتمهایی که میتوانند جستجو، مرتبسازی و بهینهسازی را انجام دهند. بنابراین آشنایی با الگوریتمهای تقریبی درک ساختارهای داده مانند پشته (Stack)، صف (Queue)، نمودارها، درختان (Trees) و آرایههای چند بعدی (Multi-dimensional Arrays)؛ درک قابلیت محاسبه و پیچیدگی؛ و داشتن دانش معماری کامپیوتر مانند درک مفاهیمی مثل حافظه، خوشهها (Cluster)، پهنای باند، بنبستها و کش برای مهندس اِم اِل مهم است.
مهارتهای علم داده
برخی از مهمترین مهارتهای علم داده که مهندسین بر آن تکیه میکنند، آشنایی با زبانهای برنامهنویسی مانند پایتون، SQL و جاوا است. آزمایش فرضیه، مدلسازی دادهها، مهارت در ریاضیات، احتمالات و آمار (از جمله آشنایی با طبقهبندیکنندههای ساده بیز، احتمالات شرطی، احتمالات، قانون بیز و شبکههای بیز، مدلهای پنهان مارکوف و غیره)، و همچنین توانایی ایجاد یک استراتژی ارزیابی برای مدلها و الگوریتمهای پیشبینیکننده از مهمترین مهارتهای مربوط به علم داده در حوزه کاری ماشین لرنینگ محسوب میشوند.
مهارتهای تکمیلی یادگیری ماشین لرنینگ
بسیاری از مهندسین در زمینههای تخصصی دیگری مثل یادگیری عمیق، برنامهنویسی پویا، معماری شبکههای عصبی، پردازش زبان طبیعی، پردازش صوتی و تصویری، یادگیری تقویتی، تکنیکهای پیشرفته پردازش سیگنال و بهینهسازی الگوریتمهای ML هم بهصورت تخصصی آموزش میبینند. در ضمن یک دانشمند خوب NLP علاوه بر یادگیری ماشین باید به نحو، املا و دستور زبان حداقل یک زبان هم مسلط باشد تا ماشین هم بتواند همان مهارتها را کسب کند.
یک مهندس ماشین لرنینگ باید چه ویژگیهایی داشته باشد؟
درست مثل هر شغل و حرفه دیگری، کار در حوزه ماشین لرنینگ هم ویژگیهای شخصیتی و فردی خودش را نیاز دارد. درست است که مهندسی یادگیری ماشین در اصل یک شغل فنی است اما داشتن مهارتهای نرمی مانند توانایی برقراری ارتباط واضح، حل مشکل، مدیریت زمان و همکاری با دیگران عاملی است که منجر به تکمیل و تحویل موفقیتآمیز یک پروژه ماشین لرنینگ میشود.
بهطور کلی مهمترین مهارتهای نرم ضروری برای مهندسان ماشین لرنینگ (ML) عبارتند از:
- مهارتهای ارتباطی: کار کردن با دانشمندان و تحلیلگران داده، مهندسان نرمافزار، دانشمندان تحقیقاتی، تیمهای بازاریابی و تیمهای محصول یکی از وظایف اصلی مهندسان یادگیری ماشین است. بنابراین توانایی برقراری ارتباط شفاف با ذینفعان در مورد اهداف پروژه، همگامی دقیق با جدول زمانی و انتظارات سایر تیمها، بخش مهمی از تواناییهای یک مهندس ماشین لرنینگ محسوب میشود.
- توانایی حل مسئله: توانایی حل مسئله برای دانشمندان داده و مهندسان نرمافزار مهم است و برای مهندسان یادگیری ماشین ضروری محسوب میشود. ماشین لرنینگ بر حل چالشهای بلادرنگ تمرکز دارد، بنابراین توانایی تفکر انتقادی و خلاقانه در مورد مسائلی که به وجود میآیند و ایجاد راهحلها یک مهارت اساسی است.
- دانش و اطلاعات عمومی درباره کسبوکارهای مختلف: برای طراحی کاربردی نرمافزار خودگردان (اتوماتیک) و بهینهسازی راهحلهای مورد استفاده کسبوکارها و مشتریان، مهندسان ماشین لرنینگ باید نیازهای کسبوکار و انواع مشکلاتی را که طرحهایشان حل میکند را بهخوبی درک کنند. بدون دانش و اطاعات کافی درباره کسبوکاری که برایش برنامه مینویسند، نتیجه کار مهندس ماشین لرنینگ ممکن است فاقد دقت کافی و غیرکاربردی باشد.
- توانایی مدیریت زمان: مهندسان ماشین لرنینگ معمولا خواستههای ذینفعان (سفارشدهندههای) مختلفی را حل میکنند و همچنین باید برای انجام تحقیقات، سازماندهی و برنامهریزی پروژهها، طراحی نرمافزار و آزمایش دقیق آن با سایر تیمهای کاری هماهنگ باشند. بنابراین توانایی مدیریت زمان برای کمکهای ارزشمند به تیم برایشان کلیدی است.
- مهارت کار گروهی: مهندسان یادگیری ماشین معمولا برای انجام پروژهها باید با دانشمندان داده، مهندسان نرمافزار، بازاریابان، طراحان و مدیران محصول و آزمایشکنندگان کار کنند. پس توانایی همکاری با دیگران و کمک به یک محیط کاری حمایتی، مهارتی است که بسیاری از مدیران هنگام استخدام بهدنبال آن هستند.
- همیشه آماده یادگیری: زمینههای کاری هوش مصنوعی، یادگیری عمیق، یادگیری ماشین و علم داده به سرعت در حال پیشرفت هستند. حتی کسانی که مدرک تحصیلات تکمیلی گرفتهاند و بهعنوان مهندس ماشین لرنینگ کار میکنند هم باید مدام از طریق شرکت در دورههای مختلف، کارگاههای آموزشی و… خودشان را درباره جدیدترین زبانهای برنامهنویسی، تسلط بر ابزارها یا برنامههای جدید یا آخرین تکنیکها و فنآوریهای پیشرفته، بهروز نگه دارند.
این مهارتهای نرم دقیقا همان ویژگیهای مثبتی هستند که یک مهندس موفق را از دیگر متخصصان این حوزه حتی با مدارک دانشگاهی بالاتر متمایز میکند.
ابزارها و برنامههای ضروری برای تسلط بر یادگیری ماشین کدامند؟
علاوهبر درک کامل زبانهای برنامهنویسی و تسلط بر برنامهنویسی به زبانهای Python، SQL، Java و C++، بسیاری از مهندسان ماشین لرنینگ برای کار با برنامهها و ابزارهای زیر هم مهارت دارند:
- TensorFlow
- Spark and Hadoop
- R Programming
- Apache Kafka
- Weka
- MATLAB
- Google Cloud ML Engine
- Amazon Machine Learning
- PytorchJupyter Notebook
- IBM Watson
علاوهبر مهارت استفاده از این نرمافزارها برای پیشبرد یک پروژه و حل مشکلات واقعی یک کسبوکار خاص، تجربه کار با پلتفرمهای ابری مانند AWS، تجربه کار با چارچوبهای یادگیری ماشینی مانند Scikit-Learn و نرمافزارهای پردازش دادهها هم برای مهندسان یادگیری ماشین مهم است. البته انتظارات از یک مهندس ماشین لرنینگ بسته به سازمان و تیمی که به آن ملحق میشود متفاوت است. اما بهطور کلی مهم است که یک مهندس ماشین لرنینگ مهارت و تجربه کافی برای کار با این پلتفرمها و نرمافزارهای اساسی را داشته باشد.
چگونه مهندس ماشین لرنینگ شویم؟
حالا که با تعریف شغلهای مختلف حوزه ML و همینطور انواع مهارتهای لازم برای تبدیل شدن به یک مهندس ماشین لرنینگ آشنا شدید، احتمالا میپرسید از کجا و چگونه باید یادگیری ماشین لرنینگ را شروع کنید؟ احتمالا نقشه راه حرفهای شدن در حوزه کاری ماشین لرنینگ برای هرکسی با توجه به پیشینه اطلاعات و دانش کامپیوتر و ریاضیاش متفاوت خواهد بود. اما اگر تازهکار هستید و مدرک دانشگاهی مربوط به کامپیوتر و نرمافزار هم ندارید میتوانید مراحل یادگیری را طبق موارد زیر دنبال کنید:
۱-زبانهای برنامهنویسی مناسب را یاد بگیرید
پایتون، کارآمدترین زبان برنامهنویسی مورد استفاده برای ماشین لرنینگ است. پس حتما این زبان را یاد بگیرید. برای حرفهایتر شدن هم برای آموزش برنامهنویسی با زبانهای R، Java، Julia، JavaScript و Lisp برنامهریزی کنید.
۲-گردش کار یادگیری ماشین را بیاموزید و درک کنید
با مطالعه تئوریها و چارچوبها میتوانید گردش کار یادگیری ماشین را بیاموزید. بهزبان ساده گردش کار شامل جمعآوری و وارد کردن دادهها، پردازش دادهها، تجسم، مدلسازی و ارزیابی میشود. در واقع شما باید بتوانید درک کاملی از نحوه کار الگوریتمهای ماشین لرنینگ داشته باشید و حتی بهصورت تجربی با این الگوریتمها و مجموعه دادههای مختلف کار کنید.
۳-کار با فناوریهای یادگیری عمیق را شروع کنید
همانطور که میدانید یادگیری عمیق زیرمجموعه مهمی از یادگیری ماشین محسوب میشود. پیشرفتهترین چارچوب یادگیری عمیق هم در صنعت TensorFlow است. TensorFlow در اصل یک کتابخانه منبع باز است و فرآیند یادگیری را سرعت میبخشد. مثلا برنامههای پایتون از TensorFlow برای محاسبات عددی استفاده میکنند.
۴-دادههای بزرگ را تجزیهوتحلیل کنید
اگر مراحل یک تا سه را دقیق و درست پشت سر بگذارید، مرحله چهار برایتان آسان خواهد بود. تا جایی که میتوانید، مجموعه دادههای بزرگ را جمعآوری، تجزیهوتحلیل و پردازش کنید. نرمافزارهای Hadoop و Spark دو ابزار عالی برای این کار هستند. همچنین باید یاد بگیرید که از پایگاه دادههای رابطهای مانند SQL، MySQL و SQLite استفاده کنید.
۵-یک پروژه یادگیری ماشین شخصی را امتحان کنید
در نهایت بد نیست برای امتحان خودتان هم که شده یک پروژه شخصی را از صفر تا صد طراحی و اجرا کنید. پروژهای را انجام دهید که به آن علاقه دارید و چندان هم پیچیده نیست. یعنی به یک الگوریتم ساده هوش مصنوعی نیاز دارد و شما باید آن الگوریتم را از ابتدا بسازید.
مثلا میتوانید برای شروع یادگیری ماشین لرنینگ، پروژههای اساسی ارائهشده توسط Scikit-learn، PredictionIO، Awesome Machine Learning و منابع مشابه را مرور و بازآفرینی کنید. همچنین میتوانید از مجموعه دادههای در دسترس عموم مانند مخزن یادگیری ماشین UCI و Quandl استفاده کنید.
سعی کنید پروژههایی را ارائه دهید که بعدا بتوانید آنها را به صورت آنلاین به اشتراک بگذارید و در رزومهتان فهرست کنید.
چگونه برای مصاحبه شغلی استخدام یادگیری ماشین آماده شوید؟
در گام نهایی برای اینکه بهعنوان یک مهندس یادگیری ماشین استخدام شوید، باید با آمادگی مناسب در مصاحبه استخدامی خود حاضر شوید. فرقی نمیکند که سوابق تحصیلیتان چیست یا تجربه شما در کار با نرمافزارها و زبانهای برنامهنویسی چقدر است، برای کنار زدن رقبا باید حتما در بخش مصاحبه فرآیند درخواست شغل، موفق عمل کنید.
احتمالا در طول مصاحبه شغلی مهندسی ML از شما سوالات زیر پرسیده میشود:
- تفاوتهای اساسی بین یادگیری ماشین تحت نظارت و بدون نظارت را همراه با مثال بگویید.
- قضیه بیز چه نقشی در ماشین لرنینگ دارد؟
- نقش یادگیری عمیق در ماشین لرنینگ چیست و چرا انقدر مهم است؟
- آیا عملکرد مدل ماشین لرنینگ مهمتر از دقت مدل یادگیری ماشین است؟ دلیل پاسخ خود را بگویید.
جمعبندی
به معنای واقعی کلمه هرکسی میتواند با گذراندن یک دوره آموزشی ماشین لرنینگ بهخوبی در این زمینه حرفهای شود. حتی اگر یک مدرک دانشگاهی غیرمرتبط با مهندسی نرمافزار و… داشته باشید، در دورههای آموزشی یادگیری ماشین مهارتهای اساسی این حوزه به شما آموزش داده میشود تا درک جامعی از نحوه عملکرد ماشین لرنینگ و هوش مصنوعی داشته باشید. همچنین یاد میگیرید که چگونه این دیدگاه فنی را در عمل اجرا کنید. یعنی از ماشین لرنینگ برای حل مشکلات واقعی کسبوکارهای مختلف و از دادههای واقعی برای کمک به تصمیمگیری در حل این مشکلات استفاده کنید.
شما هم اگر به حوزه کاری جذاب و البته آیندهدار یادگیری ماشین علاقهمند هستید میتوانید در بوت کمپ آموزش یادگیری ماشین رهنما کالج شرکت کنید تا بهصورت علمی با الگوریتمهای مختلف ماشین لرنینگ و یادگیری عمیق آشنا شوید.