سه شنبه , مرداد ۲۹ ۱۳۹۸
خانه / datamining / یادگیری عمیق (Deep learning)

یادگیری عمیق (Deep learning)

یادگیری عمیق اشاره به مجموعه ای از الگوریتم های یادگیری ماشین دارد, که معمولا مبتنی بر شبکه های عصبی مصنوعی اند و تلاش دارند تا روابط سطح بالای موجود در داده ها را مدل نمایند. بخودی خود یادگیری عمیق برای سناریوهای خیلی خاصی مفید بوده و نیازمند استفاده از مدلهای یادگیری ماشین و تکنیک های دیگر جهت ایجاد نتایج معنادار بیشتر است. در این یادگیری ویژگی های سطح بالاتر توسط سطوح پایین تر بیان می شود.

یادگیری عمیق

کاربردهای یادگیری عمیق

  • اتومبیل های خود ران
  • آموزش عمیق در بهداشت و درمان(تشخیص بیماری و تومور)
  • سیستم های پیشنهاد دهنده
  • جستجوی صوتی و دستیاران صوتی(chatbots)
  • ساخت انیمیشن اتوماتیک
  • جابجایی شخصیت ها در ویدیو (deepfake)
  • جابجایی و افزودن  صدا در ویدیوها
  • ماشین های ترجمه خودکار
  • ایجاد متن اتوماتیک
  • تشخیص و ایجاد دست خط خودکار
  • تشخیص آبجکت ها در تصاویر
  • تشخیص موضوع و عنوان برای تصاویر
  • رنگ آمیزی اتوماتیک
  • تبلیغات
  • پیش بینی زمین لرزه
  • ایجاد تصاویر پاریدولیا (DeepDream)

 

سه ساختار اصلی یادگیری عمیق

  • پیش خوران (Feed Forward)
  • پس خوران (Feed Back)
  • دو جهتی (Bi Directional)

یادگیری عمیق

یادگیری عمیق را میتوان هم در یادگیری با نظارت (supervised) و هم بدون نظارت(unsupervised) مورد استفاده قرار داد. یکی از مهمترین الگوریتمهای یادگیری عمیق شبکه عصبی است که از شبکه نورون های مغر انسان الهام گرفته است. که متشکل از تعدادی واحد محاسباتی (یک جمع کننده است، که تعدادی ورودی و یک خروجی دارد) متصل به هم است.

یادگیری عمیق

یادگیری عمیق

تابع فعال ساز: تابعی که بر روی نوع وابستگی بین ورودی و خروجی در هر واحد محاسباتی تأثیر میگذارد.

بایاس: ورودی اضافی که به واحد محاسباتی اعمال میشود. مقدار ورودی ان یک است با هدف تنظیم خروجی

یادگیری عمیق

انواع مدل های یادگیری عمیق

  • شبکه های پیش آموزش داده شده بدون نظارت (Unsupervised Pretrained Networks)
  • شبکه های عصبی کانولوشونی (CNN (Convolutional Neural Networks
  • شبکه های عصبی مکرر (Recurrent Neural Networks)
  • شبکه های عصبی بازگشتی (RNN  (Recursive Neural Networks

deep Learning

( انواع یادگیری عمیق و مطرح ترین معماریهای آن )
انتخاب مدل یادگیری در شبکه های عمیق
  • شبکه AE: داده یک بعدی (سیگنال، بردار)
  • شبکه های CNN: داده های چند بعدی(تصویر، تنسور)
  • شبکه های RNN: داده های وابسته به زمان(صوت، ویدیو، متن)

 

شبکه های پیش آموزش داده شده بدون نظارت

برای حالتی که داده های برچسب دار کم هستند. از انواع این شبکه می توان به موارد زیر اشاره کرد.

  • شبکه های خود رمز نگار AE) Autoencoder)
  • شبکه های باور عمیق Deep Belief Networks
  • شبکه عصبی مولد خصمانه GAN) Generative Adversarial Networks) 

الگوریتم های مرسوم این روش عبارتند از:  PCA – LDA – ICA – Kmeans

 

شبکه های خود رمز نگار (AE)
  • (Deep Auto-Encoder (DAE
  • (Stacked Auto-Encoder (SAE

یادگیری عمیق - AE

کاربرد های خود رمزنگار عمیق (AE)

  • حذف نویز
  • فشرده سازی داده ها
  • یادگیری بدون نظارت ویژگی
  • یادگیری فضای داده

 

شبکه عصبی مولد خصمانه GAN

یادگیری عمیق GAN

کاربردهای شبکه GAN

  • تولید داده های جدید
  • اصلاح داده ها
  • تغییر شکل داده ها
  • ایجاد محصولات هنری (گرافیک، فیلم، موسیقی و …)

 

شبکه های عصبی کانولوشنی (CNN)

هدف یادگیری  ویژگی های سطح بالاتر با استفاده  از کانولوشن مناسب برای یادگیری تصاویر، استخراج ویژگی مستقل از انتقال و چرخش است. ، نرونها در CNN ساختار سه بعدی دارند. (طول، عرض و عمق) که متناظر با طول و عرض تصویر و تعداد کانالهای رنگی است.

یادگیری عمیق

به لحاظ زیستی سلولهای عصبی حیوانات به زیرناحیه ها کوچک حساس هستند. این زیرناحیه ها ترکیب می شوند تا ناحیه بزرگ را تشکیل دهند. این دقیقا همان کاری است که شبکه های کانولوشن انجام می دهند. معماری کلی CNN در تصویر زیر نمایش داده شده است.

یادگیری عمیق

لایه ورودی : ورودی سه بعدی را دریافت می کند (تصویر)

یادگیری عمیق

لایه استخراج ویژگی : تشکیل شده از دو لایه Convolution و Pooling که ممکن است چند بار تکرار می شود. در این دو لایه ویژگی های سطح پایین و در ادامه سطوح بالا یادگیری می شوند.

لایه Convolution : جزء پایه ای معماری CNN .در این لایه بخشی از نرونهای کنار هم از لایه قبل پردازش می شوند. این لایه از چهار بخش زیر تشکیل شده است.

1 – فیلترها (Filters): توابعی که طول و عرض آن کوچکتر از طول و عرض ورودی است. فیلترها بر روی ورودی لغزانده می شوند و خروجی را بوجود می آورند

یادگیری عمیق

یادگیری عمیق

2 – نقشه های فعالسازی (Activation maps): خروجی اعمال فیلتر بر روی ناحیه ای از ورودی

یادگیری عمیق

3 -اشتراک پارامتر (Parameter sharing) : برای کاهش تعداد پارامترها (وزنها)، در CNN فرض میشود هر زیر ناحیه در ورودی سه بعدی لایه کانولوشن وزن و بایاس برابر دارند. این مفهوم باعث استقلال ویژگی ها از تبدیل و چرخش می شود. نمایی از 96 فیلتر آموزش دیده (ابعاد 11*11*3) بامفهوم اشتراک پارامتر در تصویر زیر نشان داده شده است.

یادگیری عمیق

4 -ابرپارامترهای لایه (Layer-specific hyperparameters)  این بخش به چهار قسمت کلی تقسیم می شود.

  • اندازه فیلترها (Filter (or kernel) size field size) : اندازه باید کوچکتر تصویر ورودی باشد. ولی عمق آن برابر با تصویر ورودی است
  • عمق خروجی (Output depth): عمق خروجی همان تعداد فیلترها است.
  • گام (Stride): حرکت فیلتر در زمان و کانولو شدن با ورودی سه بعدی
  • لایه گذاری صفر (Zero-padding) : برای کنترل اندازه خروجی لایه کانولوشن

 

لایه Relu در کانولوشن: این لایه یک آستانه گیری بر روی ورودی سهبعدی انجام می دهد. فقط مقادیر پیکسل های ورودی را تغییر می دهد و اندازه ورودی را تغییر نمی دهد.

نرمال سازی در کانولوشن: : عملی که باعث می شود خروجی های ما میانگین صفر و انحراف معیار یک داشته باشند.

لایه Pooling

این لایه بعد از هر لایه کانولوشن می آید و هدف آن کاهش حجم اطلاعات و جلوگیری از یادگیری بیش از حد است. مثلا خروجی لایه کانولوشن 32*32*12 خروجی این لایه 16*16*12 است.

لایه طبقه بندی:

یک یا چند لایه کاملا متصل که در نهایت رتبه یا احتمال کلاسها را به ما می دهد.

یادگیری عمیق

شبکه های عصبی مکرر

در این شبکه وابستگی زمانی بین داده ها قابل مدلسازی مدلسازی است. در ساختار شبکه فیدبک وجود دارد.

شبکه های عصبی بازگشتی (RNN)

این شبکه ها توسعه یافته شبکه های عصبی مکرر هستند به شکلی که قابلیت یادگیری ساختاری داده ها را نیز دارند. مناسب برای داده های دنباله دار و زمان دار

یادگیری عمیق - RNN

شبکه های (LSTM (Long short term memory

نوع خاصی از شبکه های عصبی بازگشتی و برای حل مشکل وابستگی بلند مدت در داده ها استفاده می شود.

کابردهای شبکه های RNN
  • تشخیص صدا و گفتار
  • تشخیص موضوع و مفهوم از متن
  • ترجمه زبان
  • درج خودکار توضیح برای تصویر
  • پردازش ویدیو

 

کتابخانه های یادگیری عمیق

بیشتر بخوانید

  • آیا این مقاله مفید بود؟
  • بله   خیر

با تمام وجود علاقمندم مباحث جدید مربوط به برنامه نویسی رو یاد بگیرم و به دیگران یاد بدم. نیمی از زمان روزانه رو صرف یادگیری میکنم. سعی میکنم مقالات مفید و جدید در حوزه برنامه نویسی و به ویژه جاوا اسکریپت رو برای شما دوستان عزیز در لایو گوگل منتشر کنم.

۲ کامنت ها

  1. با سلام و احترام
    ممنون میشم مراجع مطالب فوق را برای من ارسال کنید
    متشکرم

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد.