امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5

یادگیری عمیق یا Deep Learning چیست؟

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

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

— شبکه عصبی کانولوشن
— شبکه باور عمیق
— شبکه عصبی feed-forward
بسیاری از مدلهای یادگیری عمیق, الهام گرفته از فرآیند های بیولوژیکی اند.

یادگیری عمیق را میتوان هم در یادگیری با نظارت(supervised) و هم بدون نظارت(unsupervised) مورد استفاده قرار داد.

یادگیری عمیق چگونه کار میکند؟
الگوریتم BackPropagation (پس انتشار [خطا] ) الگوریتم محبوبی است که یادگیری را در یادگیری عمیق در بسیاری از مدلها پیاده میکند. ایده این الگوریتم در دهه ۷۰ میلادی مطرح و در سال ۱۹۸۶ در مقاله ای توسط Rumelhart, Hinton, و Williams (5)به شهرت رسید.

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

یادگیری عمیق یا Deep Learning چیست؟ 1

معماری های مختلفی از این نوع امروزه وجود داره. معروف ترین و موفق ترین اونها شبکه های کانولوشنی هستن .اخیرا LSTM‌ها که نوعی از شبکه های عصبی recurrent هستن هم رو بورس افتادن به اضافه اینکه  deep boltzman machine‌ها و DBN‌ها و(و یه دوجین معماری دیگه) هم هست که از اونا استفاده میشه.(البته DBN ها و DBM ها که روشهای بدون سرپرست هستن بعد از ظهور شبکه های کانولوشن عمیق و RNN ها استفاده ازشون خیلی کمتر شده خصوصا بخاطر وجود و در دسترس بودن دیتاست های لیبل گذاری شده (مثلا ایمیج نت بیش از یک میلیون تصویر برچسب گذاری شده داره که حجمش بیش از ۱۵۰ گیگابایت هست. دیتاست ها تو بخش های مختلف دیگه هم همینطور خیلی زیاد شدن (بخش دیتاستها و یا پست بهشت دیتاست ها رو ببینید خوبه). البته نمونه های ترکیبی هم از این معماری ها بوجود اومده که فعلا جای بحثش نیست) (اینجا روخواستید یه نگاه بندازید) ولی در حال حاضر اکثر مقاله ها و کارهایی که من دیدم تو حوزه کامپیوتر ویژن بوده(البته حوزه های دیگه هم بشدت داره کار میشه.تصویر زیر رو ببینید)  شاید بالای ۹۰ درصد دارن (چیزی که من دیدم) روی شبکه های کانولوشنی کار میکنن تو حوزه یادگیری عمیق(بینایی کامپیوتر).(معماری های دیگه هم هست ولی خب کاربردهای خاص خودشونو دارن مثل همون rnnها که تو پردازش زبان طبیعی و شناسایی فعالیت و…. خیلی عالی کار میکنن.

در مقابل یادگیری عمیق یادگیری کم عمق یا اصطلاحا  shallow learning‌ وچود داره که قدیما (و البته الان هم) و قبل از دیپ لرنینگ ازش استفاده میشد . اونم چیزی نیست جز استفاده از همون support vector machine‌ها و شبکه های عصبی معمولیو…
اون بحث یادگیری هم که میاد اشاره به ماهیت training‌این نوع سیستم ها داره . یعنی شما اگه ماشین لرنینگ بخونید (توضیح دادم یکم تو سایت) میبینید ما یه دیتاست داریم بعد میایم داده ها رو آموزش میدیم . تو یادگیری کم عمق ما از شبکه عصبی (کم عمق) یا support vector machine‌ها و… استفاده میکنیم برای دسته بندی و تمایز قاپل شدن بین کلاسهای مختلفی که در داده هامون وجود داره (مثلا این عکس سرطان هست و فلان عکس سرطان نیست یا مثلا تو پیش گویی ها مثل اینکه قیمت مسکن تو ده سال اخیر داده میشه بعد میگه اگه زیربنا انقدر باشه قیمت چقدر میشه و …) همه اینا یادگیری هستن اما چون از روشهای غیرعمیق استفاده میکردن میگن روش کم عمق. معمولا تا قبل از یادگیری عمیق رسم بر این بود که تو این روشها ما خودمون باید میومدیم مهندسی ویژگی میکردیم و یکسری الگوها و یا معادلات برای کشف ارتباط تو دادها پیدا میکردیم و بعد با استفاده از چیزایی که گفتم مدلمون رو آموزش میدادیم.
تو یادگیری عمیق خود سیستم میاد مهندسی ویژگی رو انجام میده ما دخالتی نداریم . برای همین هم خیلی خیلی مورد توجه قرار گرفته و نتایج بسیار عالی ای رو سبب شده .تو یادگیری عمیق ما از یه سلسله مراتب از ویژگی ها استفاده میکنیم (سیستم استفاده میکنه ) تا به نتیجه مورد نظر برسه و وجود این سلسله مراتب حیاتی هست.داشت یادم میرفت! یه نکته بدیهی هم تو اسم این روش هست کم عمق هست مثلا شبکه عصبی هم در یادگیری عمیق کاربرد داره هم در یادگیری کم عمق! فرقشون چیه؟‌ درسته در عمقشون! در اصل یادگیری عمیق الان بوجود نیومده!

تو دهه ۸۹ و ۹۰ هم بوده منتها بخاطر مشکلاتی که بعدا توضیح میدیم(مهمترینش نبود سخت افزار مناسب و الگوریتم های مورد نیاز) نمیشد از یه حد خاصی تعداد لایه های شبکه عصبی رو بیشتر کرد و اونجا متوقف میشد تا اینکه چند سال پیش (تقریبا ۲۰۰۶ به بعد فکر کنم) بود که اون مشکلات برطرف شد و نهایتا از ۲۰۱۰ ۲۰۱۱ و خصوصا خصوصا ۲۰۱۲ با شدت تمام استارتش خورد. (تو سال ۲۰۱۱  اندرو ان جی به اتفاق یکی از کارکنان گوگل یه شبکه عصبی رو اموزش دادن که تونست فقط با دیدن فیلمهای یوتیوب ! بفهمه یه گربه چه شکلیه!؟ البته اونا فکر کنم از ۱۶ هزار کامپیوتر استفاده کرده بودن. سال ۲۰۱۲ بود که در اصل الکس کریژوسکی و جف هینتون معروف (یکی از پایه گذاران یادگیری عمیق دنیا ) تونستن با استفاده از کارت گرافیک یه شبکه کانولوشنی رو اموزش بدن و نتایج حیرت انگیزی رو تا اون موقع بدست بیارن و اینطور بقیه محققا با دیدن این نتیجه به این سمت هجوم اوردن)
شبکه های کانولوشنی هم نوعی از شبکه های عصبی هستن که از شبکه های کاگنیترون تو دهه ۸۰ میلادی الهام گرفته شدن و تو این شبکه سعی شده روش مغز در شناسایی تصاویر رو بنوعی پیاده بشه . (از مغز انسان الهام گرفتن!) . و تقریبا کلیات شبکه  عصبی درموردش صدق میکنه بجز اینکه یکسری تقاوت هایی داره . مثلا در شبکه های عصبی ما اتصالات کامل داشتیم اینجا نداریم. تو شبکه عصبی ما لایه هامون مثل لیست بودن یک بعدی بودن . اما تو شبکه کانلووشن لایه کانولوشن چند بعدی هستن. و یکسری لایه ها و عملیاتهای خاص خودشو داره.

امروزه برای استفاده از دیپ لرنینگ حتما حتما به یه کارت گرافیک انویدیا نیاز دارید اونم از نوع قویش!‌ (کارتهای AMD بصورت غیررسمی فقط در Torch پشتیبانی میشن تا الانی که این متن رو مینویسم.بقیه فریم ورکهای معروف همه از اندویا استفاده میکنن چون کتابخونه عالی ای داره که سرعت اموزش رو بشدت بالا میبره.) ( احتمالا طی یکی دو سال آینده کارتهای AMD‌هم پشتیبانی میشن ولی فعلا بخاطر cuda‌و cudnn انویدیا که شدیدا سرعت رو عالی میکنه همه کتابخونه ها و ابزارهای پدر مادر دار از اون استفاده میکنن . در این مورد بیشتر توضیح میدم بعدا تو بخش پیش نیازهای سخت افزاری دیپ لرنینگ). البته میشه از سی پی یو هم استفاده کرد البته فقط در دو صورت!‌۱. برای تست چند دقیقه ای که ببینید اصلا چطوریه!‌۲. کلا عمر حضرت نوح دارید و میخواید کاری که با کارت گرافیک مثلا ۱ ساعته انجام میش با سی پی یو (اونم از نوع خیلی عالیش )‌۱۰ تا ۲۰ ساعته حداقلش انجام بدید. /از deeplearning.ir
.La mort est le remède
پاسخ
آگهی


[-]
به اشتراک گذاری/بوکمارک (نمایش همه)
google Facebook cloob Twitter
برای ارسال نظر وارد حساب کاربری خود شوید یا ثبت نام کنید
شما جهت ارسال نظر در مطلب نیازمند عضویت در این انجمن هستید
ایجاد حساب کاربری
ساخت یک حساب کاربری شخصی در انجمن ما. این کار بسیار آسان است!
یا
ورود
از قبل حساب کاربری دارید? از اینجا وارد شوید.


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان