یادگیری عمیق از زیر شاخه های یادگیری ماشین است.این روش ویژگی را به صورت سلسله مراتبی از لایه های مختلف از طریق توابع غیر خطی استخراج می کند ورودی هر لایه خروجی لایه قبلی است و آموزش آن می تواند به صورت با ناظر یا بدون ناظر باشد.در واقع تک لایه مخفی در شبکه عصبی با تعدادی زیادی(deep) لایه جایگزین شده است.
در پروژه های یادگیری ماشین اساس کار استخراج ویژگی از از داده های خام می باشد مثلا در پروژه های پردازش تصویر ما از تصویر های ذخیره شده از دوربین ویژگی هایی استخراج می کنیم که از طریق آنها می توانیم تصاویر را از یکدیگر متمایز کنیم ویژگی اغلب دارای حجم کم تری نسبت به تصاویر خام هستند و در انتها از طریق کلاسیفایر ویژگی های مختلف را از هم تمایز می دهیم .
تعداد کلاس ها در پروژه های یادگیری عمیق اندازه لایه خروجی را تعیین می کنه فرض کنید اندازه لایه خروجی 2 است لایه ورودی هم توسط معماری شبکه مشخص میشه فرض کنید معماری VGG19 انتخاب کنیم تصاویر با ابعاد 224*224 به شبکه اعمال می شود اغلب شبکه های از تصاویر رنگی استفاده می کنند که این تصاویر دارای 3 کانال هستند که ابعاد نهایی به صورت 224*224*3 می باشد. تا اینجا لایه ورودی و خروجی مشخص شد کاری که قرار یادگیری عمیق برای ما انجام بده استخراج ویژگی از تصویر است باید به گونه ای این ویژگی ها استخراج بشن که کلاسیفایر بتونه با بالاترین دقت نمونه ها رو از هم جدا کنه. علت اسم گذاری شبکه عمیق از آنجاست که همین بخش استخراج ویژگی از تعداد زیادی لایه استفاده می کنه تا بتونه ویژگی مطلوب ما را استخراج کنه لایه های دارای انواع متفاوتی هستند که از چیدمان ترکیب این لایه ها به حالات مختلف شبکه های مختلف بوجود آمده اند.
یک دور که همه تصاویر آموزشی را استفاده کنیم بهش میگیم یک epoch برای آموزش شبکه ممکنه به صد ها epoch نیاز داشته باشیم و در هر epoch دقت مدل ما بهتر میشه دقت شبکه را با مقداری به نام loss ارزیابی می کنن چون کلاسیفایر ممکن در حین عملیات آموزش تعدادی از نمونه ها را اشتباه تشخیص بده برای برآورد میزان اشتباه شبکه از تابعی استفاده می کنیم تحت عنوان loss function .این تابع هر چقدر مقدارش کوچک باشه یعنی اینکه اختلاف کمی بین جواب مدل و جواب مطلوب وجود داره پس دقت مدل بالاتر و برعکس هر چی بالا باشه یعنی دقت مدل ما پایینه و باید به آموزش ادامه بدیم.ما در دو حال به آموزش شبکه خاتمه میدم یا مقدار loss اینقدر کوچک بشه که از نظر ما مناسب باشه یا شبکه را مقید کنیم تعداد n-epoch عملیات آموزش را انجام بده.
همانطور که در بالا مشاهده کردید باید روشی بهینه سازی وجود داشته باشه تا طریق مشاهده میزان loss در هر مرحله وزن ها را اصلاح کنه در روش های قدیمی عملیات اصلاح در انتهای هر epoch انجام می شد که در این روش عملیات اصلاح وزن ها به کندی صورت می گرفت یعنی خیلی طول می کشید تا loss مدل ما کم بشه به همین خاطر جهت افزایش سرعت آموزش امدن بعد از تعداد نمونه کمتری عملیات اصلاح انجام میشه به این تعداد batch_size گفته میشه که به طور فرض کنید داده های آموزشی 2000 نمونه باشه با در نظر گرفتن batch_size=30 یعنی بعد از اعمال 30 نمونه به شبکه عملیات را اصلاح را انجام بدیم در روش های قدیمی بعد اعمال کل داده(2000 نمونه) عمیلات اصلاح انجام می شد.یکی از روش های رایج روش SGD برای بروز رسانی وزن ها استفاده میشه .