یادگیری ژرف Deep Learning به زبان ساده

آموزش یادگیری ژرف | شبکه های عصبی

آموزش یادگیری ژرف Deep Learning  |  آشنایی با شبکه های عصبی

برای شروع یادگیری ژرف (Deep Learning) ما نیاز به دانستن و یادگیری یک سری پیشنیاز داریم که به مرور در مورد هرکدام صحبت خواهیم کرد. امروز در مورد شبکه های عصبی صحبت خواهیم که مقدمه ای پایه ای و اساسی برای ورود به یادگیری عمیق ( ژرف )‌ هست.
شبکه های عصبی مصنوعی (Artificial Neural Network – ANN) در واقع یک مدل بسیار ساده شده از شبکه های عصبی درون مغز ما الهام گرفته شده. این شبکه با الهام از شبکه های عصبی بدن ما به صورت ریاضی پیاده سازی شدند. در شکل زیر یک تصویر از یک شبکه عصبی مغز ما قرار گرفته است.

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

ساختار ریاضی شبکه های عصبی

در شکل بالا ما با ساختار ریاضی الهام گرفته شده از شبکه عصبی واقعی مواجه هستیم، در این ساختار ورودی های مختلف ( ماننده x1 وx2 و x3) که از طریق ورودی به داخل شبکه عصبی مصنوعی وارد می شوند.سپس این ورودی ها در وزن هایی ضرب شده به داخل هسته اصلی رفته روی آن یک فعالیت انجام گرفته و در نهایت از خروجی ( y) مقدار نهایی خارج می شود.این ساده ترین حالت ممکن برای یک شبکه عصبی می باشد.
شبکه های عصبی می توانند بسیار پیچیده تر و متفاوت تر باشند به طور مثال تصویر نمایانگر یک شبکه عصبی کمی متفاوت تر است.

شبکه عصبی می توانند بسیار عمیق و یا خیلی ساده باشند. در مطالب بعدی بیشتر در این مورد صحبت خواهیم کرد.

یادگیری ژرف Deep Learning چیست و چگونه عمل می کند؟

برای معرفی یادگیری ژرف ( Deep Learning ) بیایید با یک مثال شروع کنیم، تصور کنید شما مدیر یک بیمارستان بزرگ هستید که تعداد محدود پرستار، دکتر و دارو در اختیار دارید و انبوه بیمارانی که هر کدام دارای شرایط خاصی هستند و نوع بیماری، شرایط حیاتی متفاوت و…دارند. با توجه به محدودیت های دارویی و خدماتی نیاز هست برای رسیدگی به بیماران یک الویت بندی مشخصی ایجاد کنیم که مصرف دارو درست و بهینه باشد و پرستار ها به درستی به هر بیمار رسیدگی کنند، برای این اولویت بندی چند پزشک لازم هست تک تک پرونده ها را بررسی کنند تا بتواند بین بیماران اولویت بندی کرده و دارو ها را به درستی به بیماران برساند.حال ما به جای پرستاران، از یک سیستم کامپیوتری برای این الویت بندی استفاده کنیم می توانیم خیلی سریع و بدون فوت وقت اولویت بندی ها را لحظه ای انجام بدیم که هم به همه بیماران خدمات برسد و هم در مصرف داروهای محدود و یا خدمات خاص برای آن ها مشکلی پیش نیاید. در اینجاست که صبحت از سیستمی بر پایه یادگیری عمیق می کنیم.

در حقیقت عبارت یادگیری عمیق، بررسی روش‌های تازه برای شبکه عصبی مصنوعی است(۱).

یادگیری عمیق زیر مجموعه ای از یادگیری ماشین

یادگیری عمیق به طور کلی تر یک زیر مجموعه از یادگیری ماشین محسوب می شوند که از سال ۲۰۰۵ به طور ابتدایی مطرح شدند و از حدود سال ۲۰۱۲ به طور جدی تر وارد عرصه شده اند، یادگیری عمیق دارای الگوریتم های پردازشی متفاوت و قوی تری نسبت یادگیری ماشین هستند که معمولا از شبکه های عصبی در آن ها استفاده شده است.در یادگیری عمیق ما برای آنکه به کامپیوتر عملی را اصطلاحا آموزش بدهیم از تکرار و ایجاد عمق های بیشتر استفاده کرده و به عمق مسئله رفته و سعی می کنیم یک موضوع را به صورت عمیق تر بررسی کنیم، به طور مثال یادگیری عمیق در مورد پردازش تصویر به روش شبکه عصبی کانولوشون ( ( Convolution Neural Network ( CNN ) به این صورت عمل می کند که ما بصورت لایه به لایه به عمیق تصویر می رویم و سعی می کنیم در هر لایه از آن تصویر ویژگی های مختلف تصویر را استخراج کنیم (feature extraction) که در نهایت به کمک آن بتوانیم عکس را در یک دسته قرار بدهیم (‌به طور مثال با دادن عکس یک خودرو به ورودی برنامه، نام خودرو را از خروجی دریافت کنیم.).

برای درک بهتر این موضوع به ویدئو کوتاهی که در ادامه در مورد نحوه کار این شیوه است توجه کنید. در این تصویر در هر مرحله ما به عمیق بیشتری از تصویر می رویم و ویژگی های آن را استخراج می کنیم.

یادگیری عمیق معمولا در ابعاد کلان داده ( Big Data) کاربرد پیدا می کند و حجم پردازش اولیه برای آن نیاز به سخت افزار های قوی تری دارد،معمولا این پردازش ها که معمولا بسیار سنگین می باشند بر روی GPU های کارت های گرافیک انجام می گیرد در واقع دلیل استفاده از GPU ها در پردازش های مربوط به یادگیری عمیق به علت توانایی بالای GPU در پردازش موازی می باشد زیرا هرGPU شامل از چند صد تا چند هزار هسته ای کوچک پردازشی است که هرکدام می توانند به صورت مستقل بخشی از پردازش های مورد نیاز را انجام دهند. در این زمینه شرکت Nvidia با کارت ها گرافیک خود بسیار پیشتاز عمل می کند و معمولا کتابخانه های مرسوم (‌مانند گوگل تنسورفلو )‌ جهت استفاده GPU از زبان سطح میانی کودا (Cuda) که مربوط به کارت های گرافیک شرکت Nvidia می باشد استفاده می کنند.
به صورت روز افزون استفاده از الگوریتم های یادگیری ژرف در حال گسترش می باشد و سالانه مسابقات علمی زیادی مانند ImageNet در جهت بهبود الگوریتم های آن برگزار می شود.در زمینه دانشگاه های معتبر دنیا نظیر استنفورد، تورنتو، آکسفورد واحد درسی مختلفی برگزار کرده اند.

در یادگیری عمیق به ما یک سری داده های آموزشی جهت انجام عمل یادگیری استفاده می کنیم، این داده آموزشی به طور مثال در مورد یک شبکه عصبی کانولوشون جهت تشیخص وجود گربه در تصویر، شامل مجموعه ای از تصاویری که در آن گربه وجود دارند می باشند، همه این تصاویر باید داری اندازه یکسان و یک برچسب باشند ( که آیا در تصویر گربه وجود دارد یا نه ) به این مجموعه آموزشی اصطلاحا DataSet می گویند، که ممکن از قبل به طور آماده شده وجود داشته باشند مانند مجموعه های آماده ای نظر MNIST یا ImageNet که اولی مجوعه ارقام دست نویس است و دومی مجموعه بزرگ عکس های طبیعی ( مانند درخت، گل و میز و…)‌ که برای شناسایی اشیا در تصویر می باشد. همچنین می توان برای برنامه کاربردی شخصی، خودمان یک دیتا ست آماده کنیم.

در تینگوتیم به دنبال بیان دیپ لرنیگ به زبان ساده گسترش مطالعات و خدمات یادگیری ژرف هستیم.