CBIR: Content Based Image Retrieval

بازیابی تصویر محتوا محور

CBIR: Content Based Image Retrieval

بازیابی تصویر محتوا محور

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

ما بعضا در مورد مفهوم ادراک فکر کرده ایم یعنی اینکه چگونه مغز ما اشیایی را که می بینیم درک می کند؟ چگونه تفاوت بین گربه و سگ را می داند؟ چگونه می توانیم مردم را از یکدیگر جدا و شناسایی کنیم؟ مطلب شگفت انگیز این است که چگونه مغز انسان پس از سالها که از دیدن یک شخص که سالیان متمادی از آخرین دیدار با او گذشته، مجددا او را شناسایی می کند؟ اما امروزه فناوری هایی وجود دارد که می تواند این کار را همانند یک انسان برای درک اشیا انجام دهد. به عنوان مثال، آیا سیستم قفل کردن تشخیص چهره آیفون X. شگفت انگیز نیست؟ برنامه های کاربردی زیادی وجود دارد که از این تکنولوژی استفاده می کنند. هنگامی که ما عمیقتر به این برنامه ها نگاه می کنیم متوجه می شویم که از شبکه های عصبی استفاده می نمایند به طور خاص، مردم از تکنیک مبتنی بر شبکه عصبی که یادگیری عمیق نامیده می شود برای این منظور استفاده می نمایند.

هدف از ارائه این مطلب، ارائه یک نظریه مفهومی اساسی برای تکنیک یادگیری عمیق است که از یک شبکه عصبی آغاز می شود، چه شرایطی با آن همراه است، چگونه ما یک مدل ساده شبکه عصبی را بسازیم و چه تکنیک هایی عموما در یک شبکه عصبی عمیق برای بهینه سازی مدل های پیش بینی استفاده می شود. در اینجا همه شرایطی که می تواند در هنگام کار در فضای آموزشی برای  یادگیری عمیق توسط ماشین انجام شود بیان شده است.

 

آموزش عمیق چیست؟

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

فرآیند شناسایی چهره انسان در یک تصویر را در نظر بگیرید. DNN با شناسایی بخش ها شروع می شود، اغلب لبه هایی مانند نوار افقی تیره، نوارهای طولانی عمودی و شکل های دور تاریک. در لایه بعدی، شبکه سعی می کند ارتباط بین این لبه ها را از لایه قبلی پیدا کند و الگوهای بیشتری مانند ابرو، چشم، بینی و غیره را نشان می دهد. در نهایت، لایه نهایی شبکه قادر خواهد بود چهره ای از یک تصویر را با استفاده از تمام این ویژگی های شناسایی شده در لایه های قبلی شناسایی کند. این در تصویر زیر نشان داده شده است. بنابراین، همانطور که ما در یک شبکه عصبی به جلو حرکت می کنیم، اندازه الگوهای مشخص شده افزایش می یابد و در نهایت می توانیم اشیا را شناسایی کنیم.

 

 

 

 

 

 

برنامه های اصلی برای یادگیری عمیق عبارتند از:

1- طبقه بندی تصویر (شبکه عصبی مصنوعی (CNN) به طور کلی استفاده می شود)

2- طبقه بندی متن (شبکه عصبی مجدد (RNN) به طور کلی استفاده می شود)

3- پردازش گفتار (معمولا از LSTM استفاده می شود)

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

 

چرا آموزش عمیق؟


اگر ما به این روش دقیق نگاه کنیم، ممکن است متوجه شویم که این ممکن است روشی باشد که مغز ما قادر به شناسایی اشیاء اطراف ما می باشد. ممکن است این مفهوم اصلی ادراک باشد و این انگیزه شبکه های عصبی عمیق است. ایده کلی این است که بفهمیم که نورونها در مغز ما چگونه الگوها را شناسایی می کنند و کار آنها را تقلید کنیم. نورون ها گره نامیده می شوند و اطلاعات را از یک به دیگری انتقال می دهند. اما تمایز بین یک شبکه عصبی ساده و یک شبکه عصبی عمیق چیست؟ پاسخ آن واضح نیست چون اگر ما معماری، انعطاف پذیری و دقت پیش بینی بین یک شبکه عصبی و یک مدل آموزش عمیق را در نظر بگیریم، مشاهده می کنیم که تفاوت هایی وجود دارد. در مورد شبکه های عصبی متعارف، اغلب هر گره زمانی که ما از یک لایه به سمت دیگر حرکت می کنیم گره ها به هر گره دیگر متصل می شود. در مورد یک شبکه عصبی عمیق، ما می توانیم تعداد گره های شرکت کننده در فرایند تصمیم گیری را محدود کنیم، که مغز ما هم در بیشتر موارد همین کار را انجام می دهد. همچنین، یک شبکه عصبی متعارف بیشتر از روش feed forward برای پیش بینی استفاده می کند. یک شبکه عمیق عصبی از مفهوم انتشاربه عقب (back propagation) در بالای تکنیک feed forward استفاده می کند که از طریق آن می توان خطا را در هر مرحله با به روز رسانی وزن ها در شبکه کاهش داد.

 

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

معماری:
ساده ترین معماری یک شبکه عمیق عصبی شامل یک لایه ورودی، یک یا چند لایه پنهان و یک لایه خروجی است. هر لایه می تواند حاوی هر تعداد گره باشد. هر گره می تواند به هر گره دیگر در لایه بعدی با وزن مرتبط با آن متصل شود. لایه ورودی چیزی جز لیست گره ها نیست که نشان دهنده مقادیر ویژگی هایی است که برای پیش بینی استفاده می شود. تعداد سطوح در خروجی که برای طبقه بندی استفاده می شود، تعداد گره در لایه خروجی را تعیین می کند. به عنوان مثال، در مورد شناسایی رقوم، خروجی می تواند مقادیر بین 0 تا 9 داشته باشد و بنابراین 10 نود در لایه خروجی وجود دارد.
لایه پنهان می تواند هر تعداد گره داشته باشد و تعداد گره در لایه مخفی بستگی به مقدار ورودی به گره ها و وزن مربوط به آنها دارد. که محاسبات آن نیز نسبتا ساده است

 

 

تابع فعال سازی:

مغز ما به گونه ای کار می کند که وقتی تصور می کنیم یک تصویر وجود دارد، نورون های مشخصی فعال می شوند و نورون های مشخصی فعال نمی شوند. این مکانیسمی است که به انسان کمک می کند گربه ها را به عنوان گربه ها و سگ ها را به عنوان سگ ها شناسایی کند. گرچه آنها بسیاری از ویژگی های مشترک را دارا هستند. این مکانیسم با استفاده از مفهوم تابع فعال سازی در یادگیری عمیق اجرا می شود. یک تابع فعال سازی تعیین می کند که آیا یک گره برای ایجاد پیش بینی باید باشد و یا نباشد. در مراحل اولیه، تابع فعال سازی مورد استفاده معمولا تابع s-shaped tanh بوده است. اما در حال حاضر،  تابع فعال سازی مورد استفاده اغلب reLu(rectified linear unit) است. چندین تابع فعال سازی دیگر هم وجود دارد که می تواند مورد استفاده قرار گیرد.

 

اندازه گیری خطا:

همانطور که در مورد هر الگوریتم یادگیری ماشین، زمانی که معماری یا چارچوب مدل ساخته شد، مدل با استفاده از داده های ورودی آموزش دیده و هدف مدل کاهش هزینه ها یا خطا است. شایع ترین روش اندازه گیری خطا در مدل های آموزشی عمیق MSE(Mean squared error) برای پیش بینی یک متغیر پیوسته و یا اندازه گیری CrossEntropy برای پیش بینی یک متغیر قطعی است.


تکنیک های بهینه سازی:

مسئله اصلی در الگوریتم یادگیری عمیق در شناسایی مقادیر مناسب برای پارامترها (وزن بین لایه ها) برای پیش بینی دقیق است. برای به دست آوردن مقادیر برای پارامترها، شبکه عصبی عمیق با استفاده از داده های آموزشی آموزش داده می شود به طوری که اندازه گیری کلی خطای آن به حداقل مقدار آن نزدیک شود. تکنیک های بهینه سازی چندگانه وجود دارد که می تواند مورد استفاده قرار گیرد که از جمله آن ها شایع ترین شیوه شبیه سازی، شبیه ساز (sgd) و بهینه ساز ADAM می باشد. پس از اتمام آموزش، شبکه عصبی مجموعه ای از مقادیر نهایی برای وزن برای گره ها خواهد داشت. سپس از این وزن ها برای پیش بینی اطلاعات ورودی ناشناخته آینده استفاده می شود.

 

منبع

https://www.linkedin.com/pulse/introduction-deep-learning-renganathan-lalgudi-venkatesan/

 

نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.