مسیر حرفهای شدن در دیپ لرنینگ
احتمالا این روزا با واژه دیپ لرنینگ آشنا شده باشید یا به گوشتون رسیده باشه.
تو این مطلب قصد دارم تا یک مسیر خیلی ترتمیز و شفاف برای متخصص و حرفهای شدن در دیپ لرنینگ رو بهتون بگم تا یکبار برای همیشه این موضوع رو یاد بگیرید.
آنچه در این مطلب خواهیم آموخت:
1- دیپ لرنینگ چیست؟
2- پیشنیازهای دیپ لرنینگ؟
3- شبکه عصبی چیست؟
4- انواع معماریهای دیپ لرنینگ؟
5- حالا چطوری حرفهای شیم؟
1- دیپ لرنینگ چیست؟
دیپ لرنینگ یکی از زیرشاخههای ماشین لرنینگ هست که از نظر کانسپت و مفهوم و ایده و … با الگوریتمهای کلاسیک ماشین لرنینگ هیچ تفاوتی نداره. عدهای بین ماشین لرنینگ و دیپ لرنینگ یک مرز بسیار بزرگ و گستردهای کشیدن و این دو مفهوم رو کاملا از هم مجزا میدونند که این طرز فکر شدیدا اشتباه هست!
وقتی حرف از یک پروژه هوش مصنوعی و بحث پیش بینی و بهینه سازی و … میشه، ذهن مهندسین مشغول به این حوزه اول به سمت ماشین لرنینگ میره. بعد از اینکه درمورد دیتای موجود درمورد اون پروژه بیشتر صحبت میشه و دوست عزیزی که قسمت هوش مصنوعی این پروژه رو قراره بزنه، متوجه میشه که این دیتاست نیاز به الگوریتمهای دیپ لرنینگ داره، ماشین لرنینگ رو میذاره کنار و به سمت دیپ لرنینگ میره.
دیپ لرنینگ و ماشین لرنینگ جفتشون چنتا طبقه کاملا یکسان دارند:
1- انتخاب صورت مسئله (خب اینکه برای همه چیز موجوده)
2- تهیه دیتاست (هم ماشین لرنینگ و هم دیپ لرنینگ، نیاز به دیتاست دارن)
3- پیش پردازش داده
4- ترینینگ (training) و ایجاد مدل
5- ارزیابی مدل و بدست آوردن خروجی
6- انتخاب بهترین خروجی مدل به عنوان خروجی اصلی
تمام.
تفاوتی که وجود داره، در شاخ و برگهای موارد بالاست. مثل نوع دیتاست، نوع الگوریتم، نوع پیش پردازش و … ولی در مجموع کانسپت هر دو مفهوم و ابزار، یکسانه.
اما کمی بیشتر درمورد خود دیپ لرنینگ صحبت کنیم:
دیپ لرنینگ به عنوان یکی از شاخههای هوش مصنوعی، بر بستر شبکههای عصبی پیاده سازی میشه. عمدتا دیتاستهایی که نیاز به نوعی معماری خاص از شبکه عصبی دارن و به کمک الگوریتمهای کلاسیک ماشین لرنینگ (رگرشن، KNN و سایر الگوریتمهای کلسیفیکیشن) قابلیت پیاده سازی ندارن، با دیپ لرنینگ مدلسازی میشوند. مثل بیگ دیتا (بعدا درمورد بیگ دیتا یک مطلب مفصل واستون مینویسم)، دیتاهای تصویری، متنی، ویدیویی و … .
2- پیشنیازهای دیپ لرنینگ؟
برای شروع کار در دنیای دیپ لرنینگ، لازمه که از قبل با زبان برنامه نویسی پایتون، کمی ریاضیات و تا حد خوبی با ماشین لرنینگ کار کرده باشید. منظور از ماشین لرنینگ اینه که بدونید مفاهیم اصلی یک مدلسازی چیه (مثل دیتاست، پیش پردازش، مدلسازی و ارزیابی و متدهای موجود). دیپ لرنینگ یک پیش نیاز دیگه هم داره به اسم شبکه عصبی. شبکه عصبی ساختمان اصلی دیپ لرنینگ محسوب میشه و خیلی جالبه که این الگوریتم، میتونه به بینهایت فرمت مختلف در بیاد و متناسب با دیتاست شما، بهترین معماری رو از خودش به نمایش بذاره.
3- شبکه عصبی چیست؟
شبکه عصبی مصنوعی یا Artificial Neural Network (ANN) ، الهام گرفته شده از شبکه عصبی انسان، یکی از قدیمیترین، عجیبترین و رو به رشد ترین الگوریتمهای تاریخ محاسبات محسوب میشه. چرا حرف از هوش مصنوعی نشد؟ چون شبکه عصبی قبل از بوجود آمدن هوش مصنوعی وجود داشته و به عنوان یک ابزار موجود، پای در عرصه هوش مصنوعی گذاشته و تا همین لحظه که دارید این مطلب رو میخونید و مطمئنا تا چندین سال بعد، حرفهای بسیار زیادی برای گفتن خواهد داشت.
شبکه عصبی از 3 قسمت اصلی تشکیل شده.
1- ورودی (Input layer)
2- لایه پنهان درونی (Hidden layer)
3- خروجی (Output layer)
بریم سراغ اولی:
ورودی به معنای تزریق اطلاعات موجود یا (فیچرهای مسئله) به سیستم محاسباتی شبکه عصبی محسوب میشه. در این لایه، هر کدام از ورودی ها یک نورون رو به خودشون اختصاص میدن و بعد از ضرب شدن در یک وزن منحصر به فرد، به لایه میانی یا همون Hidden layer منتقل میشن.
اما دومی:
اطلاعاتی که با وزن اولیه و منحصر به فرد خودشون به لایه محاسباتی میانی یا همون Hidden layer منتقل میشن، با همدیگه جمع شده و در یک تابع فعالساز قرار میگیرن. درمورد توابع فعال ساز بعدا مفصلا توضیح میدم اما اگر بخوام در یک جمله کوتاه اونارو تعریف کنم میشه گفت : توابع فعال ساز جهت ایجاد رابطه غیرخطی و متمایز کردن اکتیو بودن یا نبودن نورون ها در شبکه عصبی قرار میگیرند. بعد از اینکه محاسبات این لایه به اتمام رسید، خروجی آن به لایه بعدی منتقل میشه.
یعنی مورد سوم:
لایه خروجی، نقش نمایش دادن خروجی تمامی محاسبات رو به دوش میکشه. معمولا اولین خروجی های بدست آمده از شبکه عصبی نتیجه مطلوبی نداره و باید مجددا متناسب با خطای مجموعه شبکه، یکسری فیدبک به شبکه ارسال کنه و پروسه لرنینگ در شبکه مجددا از ابتدا صورت بگیره (Backpropagation and Feed forward). درمورد این دو موضوع هم مطلب مجزایی مینویسم.
تو شکل بالا، میتونید جایگیری کلی این سه لایه رو ببینید.
4- انواع معماریهای دیپ لرنینگ؟
از اونجایی که خیلی علاقهای به کش و قوس دادن الکی یک مبحث ندارم، میریم سراغ انواع معماریهای دیپ لرنینگ. تا الان متوجه شدید که هروقت حرف از معماری میشه، منظور تایپهای مختلف شبکه عصبی هست.
1- Multilayer Perceptrons (MLP)
2- Convolution Neural Network = CNN
3- Recurrent Neural Network = RNN
4- Generative Adversarial Network = GAN
5- Self Organizing Maps = (SOM)
6- Restricted Boltzmann Machines = (RBM)
7- Autoencoders
و موارد دیگه …
5- حالا چطوری حرفهای شیم؟
همه اینارو گفتیم که برسیم به این قسمت یعنی (اصل مطلب)
دیپ لرنینگ یه پروسه جذاب و البته پشتکار محور داره. شما باید حتما زبان برنامه نویسی پایتون رو به خوبی بلد باشید. بعد از اون حتما حتما قبل از ورود به دیپ لرنینگ چند مدل ماشین لرنینگی (با الگوریتمهای کلاسیکش) پیاده کنید و یه دانش ریاضیاتی منطقی (آشنایی با جبرخطی و آمار احتمالات) داشته باشید.
بعدش شروع کنید به مدلسازی با سادهترین نوع شبکه عصبی یعنی (MLP). قبل از این مورد سه تا فریمورک رو باید با هم بشناسیم.
تنسورفلو (Tensorflow) ، کراس (Keras) و پایتورچ (Pytorch)
هر سه این فریمورکها سایت مخصوص به خودشون و داکیومنتیشن مخصوص به خودشون رو دارن. حتما سعی کنید مطالعشون کنید چون قراره با این سه تا خیلی از کارهای مدلسازیتون رو انجام بدید.
بعد از پیاده سازی چند شبکه عصبی ساده، میرید سراغ انواع دیتاهای مختلف و پیاده سازیشون با معماری مخصوص به خودشون.
مثلا دیتاهای تصویری با CNN، دیتاهای پیوسته یا به صورت کلی Sequential با RNN و LSTMs، ساختن و generate کردن دیتاهای جدید با GAN و الی آخر.
اینجوری به خوبی متوجه میشید که اگر در آینده یسری دیتاست بهتون دادن و از شما خواستن که یک مدل هوش مصنوعی به کمک ماشین لرنینگ یا دیپ لرنینگ واسشون بزنید، باید سراغ کدوم الگوریتم یا معماری شبکه عصبی برید.
یادتون باشه درصد قابل توجهی از مسیر متخصص شدن شما، مرور مثال های زیاد، پیاده سازی مدل با دیتاهای رایگان (مثل سایت Kaggle) و بررسی کدهای گیتهاب هست.
در کل مسیر عجیبی ندارین. کمی تلاش و پشتکار، میتونه شمارو به یک متخصص تبدیل بکنه.
تمام!
امیدوارم که این مطلب هم واستون مفید بوده باشه و به یک متخصص درجه یک هوش مصنوعی تبدیل بشید.
برای دیدن سایر مطالب میتونید روی لینک کلیک کنید.
موفق باشید
نویسنده:
محمدرضا مومنی
واقعا از توضیحات روان و بسیار ساده شما سپاسگزارم استاد جان
نکته مهمی که گفتید پشت کار هست که اگه رعایت کنن
به بهترین نتیجه میرسن چه در یادگیری ماشین و چه در یادگیری عمیق
من هر ویدیو دوره ماشین لرنینگ شما رو دو یا سه بار میدیدم و الان که دارم صحبت می کنم فرصت
شغلی های حیلی خوبی دارم و در حال کارآموزی هستم.
فقط میشه بگید که
1- MLP
3- RNN
5-SOM
6-RBM
Autoencoders
میشه لطفا اینارو شما توضیح بدید چون کش و قوس نمیدید برای این میگم یه توضیح کوتاه بدید.