بازشناسی چهره (Face Recognition) پیشرفته با استفاده از اکسل — به زبان ساده
در این راهنما 9 گام که برای ساخت یک شبکه عصبی کانولوشنی در اکسل برای افراد معمولی مورد نیاز است را با هم مرور خواهیم کرد. یادگیری ماشین میتواند پیچیده باشد؛ البته وقتی دانستید از کجا باید شروع کنید، ممکن است ترسناک به نظر برسد. از سوی دیگر نرمافزارهای صفحه گسترده بسیار ساده هستند. گرچه نمیتوان آنها را جذاب نامید؛ اما فاقد مسائلی هستند که باعث حواسپرتی میشوند و در بصریسازی آنچه در حال وقوع است به روشی زیبا به ما کمک میکنند.
در این نوشته با استفاده از یک صفحه گسترده به صورت مرحله به مرحله (که میتوانید از لینک زیر دانلود کنید) چگونگی عملکرد شبکههای عصبی کانولوشنی (CNN) در تحقیقات بینایی ماشین را با هم مرور خواهیم کرد. با این که فایلها حاوی اطلاعاتی کمی بیشتر هستند؛ اما میتوانید همه فرمولها را در این فایل صفحه گسترده بیابید.
این مدل صفحه گسترده به یک تصویر نگاه میکند، پیکسلهای آن را تحلیل میکند و تشخیص میدهد که آیا این فرد یکی از سه شخصیت مشهور: الون ماسک، جف بزوس یا جان اسنو است یا نه؟
در این نوشته، 9 گام فوق را معرفی میکنیم و مقایسهای برای هر گام ارائه میدهیم که برای کسب بینشهای جدیدتان راهگشا است.
هدف این است که مسیری ساده برای آغاز یادگیری ماشین داشته باشید و همچنین به ذهنهای کنجکاو با استفاده از نرمافزار صفحه گسترده ساده نشان دهیم که تحقیقات هوش مصنوعی پیشرفته در پس پرده چطور عمل میکنند.
بینایی ماشین جزء اساسی تشکیلدهنده سیستم بازشناسی چهره فیسبوک، پروژه نظارت عمومی Orwellian چین و به زودی بازشناسی خودروی شما است.
مقایسه تصویر بزرگ: CNN شبیه شرلوک هولمز است
در ابتدا تصور میکنیم که درون ذهن ترمیناتور داستان ما یک کارآگاه خاص به نام «شرلوک کانولوشن هولمز» زندگی میکند و کار وی این است که به دقت به دنبال شواهد (تصویر ورودی) بگردد و با استفاده از چشم غیر مسلح و تواناییهای استنباطی (تشخیص ویژگی)، پیشبینی کند که چهره چه کسی در تصویر است و معما را حل کند (تصویر را به درستی طبقهبندی کند).
هر یک از 9 گام که در ادامه ارائه میکنیم، بخشی از این مقایسه تصویر بزرگ هستند:
گام 1: ورودیها – رایانهها چگونه میبینند؟
از نظر مقایسه تصاویر مانند صفحه گستردهای از پیکسلها هستند. مشهور است که میگویند یک تصویر به اندازه هزار کلمه ارزش دارد. در این مورد خاص باید گفت یک تصویر به اندازه هزار عدد ارزش دارد.
وقتی به تصویر فوق مینگریم یک چشمانداز را میبینیم. مردی که در مسیر بهبود این سیاره میکوشد و همزمان مشغول ساخت موشکی برای فرار از آن است. ما برخلاف یک رایانه مقادیر پیکسلها را نمیبینیم و نمیتوانیم بگوییم که یک تصویر تنها ترکیبی از روشناییهای قرمز، سبز و آبی است.
اما یک رایانه کور است و تنها عددها را میبیند. یک تصویر دیجیتال را میتوانیم به صورت 3 صفحه گسترده (1 قرمز، 1 آبی و 1 سبز) بدانیم که بر روی هم قرار گرفتهاند و هر صفحه گسترده ماتریسی از اعداد است. وقتی عکسی میگیرید، دوربین شما مقادیر نورهای قرمز، سبز و آبی هر پیکسل را اندازهگیری میکند. سپس هر پیکسل را بر اساس مقیاسی از 0 تا 255 رتبهبندی میکند و آنها را روی یک صفحه گسترده ثبت میکند.
در تصویر 28×28 فوق، هر پیکسل به وسیله 3 ردیف (1 قرمز، 1 سبز و 1 آبی) نمایش مییابد و مقادیری بین 0 تا 255 دارد. پیکسلها به صورت شرطی بر اساس مقادیرشان قالببندی شدهاند.
اگر هر رنگ را به صورت ماتریس جداگانهای افراز کنیم، 3 ماتریس 28×28 خواهیم داشت و هر ماتریس یک ورودی است که با استفاده از آن شبکه عصبی خود را تمرین میدهیم:
نکته: اگر میخواهید بدانید که چطور میتوانید هر تصویر را در طی 30 ثانیه به یک فایل اکسل با قالببندی شرطی تبدیل کنید، میتوانید از این راهنما استفاده کنید.
مروری بر تمرین – رایانهها شبیه کودکان هستند
آیا زمانی که به دنیا آمدید، میدانستید سگ چیست؟ البته که نمیدانستید. اما در طی زمان والدین شما تصاویری از سگ را در کتابها، کارتونها و زندگی واقعی به شما نشان دادند و در نهایت شما توانستید به آن حیوانات پشمالوی 4 دست و پا اشاره کرده و بگویید «سگ». ارتباطهای بین میلیاردها نورون در مغز شما آن قدر تقویت شدند تا بتوانید سگها را تشخیص دهید.
ترمیناتور نیز به همین روش یاد میگیرد که الون ماسک را ببیند. بدین منظور در روشی که یادگیری نظارتشده نام دارد، هزاران تصویر از الون ماسک، جف بزوس و جان اسنو به او نشان میدهیم. در ابتدا وی شانس 3/1 برای حدس زدن صحیح فرد درون تصویر دارد؛ اما در طی زمان و با مشاهده تصاویر بیشتر در طی تمرین این احتمال بهبود مییابد. اتصالهای «وزن/بایاس» شبکه در طی زمان بهروزرسانی میشوند به طوری که میتواند خروجیهای تصاویر را بر اساس ورودیهای پیکسلی پیشبینی کند.
تفاوت شبکه عصبی کانولوشنی با شبکه عصبی معمولی چیست؟
اگر بخواهیم در دو کلمه پاسخ دهیم باید بگوییم: تغییرناپذیری بازگردانی (translation invariance). شاید شما نیز مانند ما زیاد از این عبارت سر در نیاورده باشید، پس آن را تجزیه میکنیم:
- تغییرناپذیری = ثابت ماندن چیزی.
- بازگردانی = جابجایی چیزی از یک مکان به مکان دیگر
در زمینه بینایی ماشین معنی این عبارت آن است که صرف نظر از این که یک شیء کجای یک تصویر قرار گرفته باشد (بازگردانی)، تغییری در شیء ایجاد نمیکند (تغییرناپذیری).
شبکههای عصبی کانولوشنی باید تمرین داشته باشند تا بتوانند ویژگیهای چهره الون ماسک را صرف نظر از این که در کجای تصویر قرار دارد (بازگردانی) و یا اندازه آن چقدر باشد (تغییرناپذیری مقیاس) تشخیص دهند.
CNN ها در زمینه بازشناسی الگوها در هر بخش از یک تصویر و سپس قرار دادن آن الگوها روی هم برای ساختن الگوهای پیچیدهتر (همانند انسان) مهارت دارند.
در یک شبکه عصبی معمولی، ما میتوانیم با هر پیکسل منفرد به عنوان یک ورودی (نه 3 ماتریس) برای مدل خود برخورد کنیم؛ اما این مسئله با این واقعیت که پیکسلها در کنار هم معنا و ساختار معینی دارند تطابق ندارد. در شبکههای عصبی کانولوشنی وقتی به گروهی از پیکسلها در کنار هم نگاه میکنیم، میتوانیم مدلی بسازیم که الگوهای محلی مانند شکلها، خطوط و موارد دیگر را یاد میگیرد. برای مثال اگر CNN مقادیر زیادی از پیکسلهای سفید را پیرامون یک دایره مشکی ببیند، میتواند تشخیص دهد که این الگوی یک چشم است.
برای این که CNN را واداریم تا تغییرات بازگردانی را اجرا کند، میبایست از سرویسهای تشخیص ویژگی آن استفاده کنیم.
گام 2: تشخیص ویژگی – هر نگاشت ویژگی مانند یک سرنخ است
ما با استفاده از یک ذرهبین بخشهای مختلف تصاویر را در پی یافتن ویژگیهای مهم یا سرنخهای تصویر میکاویم. وقتی این الگوریتم خطوط و شکلهای مختلف را شناسایی میکند، آنها را روی هم قرار میدهد و شروع به شناسایی بخشهای مختلف چهره مانند چشم و بینی میکند.
هر لایه کانولوشنی دارای نگاشتهای ویژگی یا سرنخهایی است که بر روی هم ساخته شدهاند. در نهایت همه این سرنخها کنار هم قرار میگیرند و الگوریتم میتواند سوژه را به درستی شناسایی کند.
هر لایه کانولوشنی از شبکه مجموعهای از نگاشتهای ویژگی دارد که میتواند الگوها/اشکال پیچیده را به روش سلسله مراتبی مانند تصویر زیر شناسایی کند.
CNN از بازشناسی الگوی اعداد برای شناسایی مهمترین عوارض هر تصویر استفاده میکند. وقتی الگوریتم این الگوها را بر روی هم سوار میکند، میتواند نگاشتهای ویژگی بسیار پیچیدهای تولید کند.
آنچه که باعث جذابتر شدن CNN میشود، این است که این الگوریتم خود به تنهایی ویژگیهای مختلف را میآموزد. در واقع هیچ مهندسی کدنویسی نکرده است که این الگوریتم بتواند 2 چشم، 1 بینی و یک دهان را تشخیص دهد.
بدین ترتیب مهندس چنین سیستمی در واقع بیشتر شبیه یک معمار است. این معمار به شرلوک میگوید که «من به تو دو بسته (لایههای کانولوشنی) از نگاشتهای ویژگی خالی میدهم و این وظیفه تو است که تصویر را آنالیز کرده و مهمترین ویژگیها را بیابی. بسته اول شامل 16 نگاشت ویژگی و بسته دوم حاوی 64 نگاشت ویژگی است. اینک برو و از مهارتهای کارآگاهی خود برای حل این مسئله استفاده کن!»
گام 3: ریاضیات کانولوشن
وقتی کارآگاه شرلوک هولمز ما میخواهد سرنخهایی را پیدا کند (یعنی نگاشتهای ویژگی را محاسبه کند) از چند ابزار در جعبه کارآگاهی خود بهره میگیرد که در ادامه معرفی کردهایم:
- فیلترها – ذرهبینهای کارآگاهی ?
- ریاضیات کانولوشن – وزنهای فیلتر ضرب در پیکسلهای تصاویر ورودی
- پیمایش – جابجا کردن فیلتر بر روی نقاط مختلف تصویر ? ➡️ ? ➡️
- تعیین محوطه – همانند نوار زرد رنگ پیرامون صحنه جرم، برای حفاظت از سرنخها استفاده میشود. ?
ذرهبینها یا فیلترهای شرلوک
شرلوک هولمز بی شک بسیار زیرک است و مهارتهای مشاهده دقیق دارد؛ اما بدون استفاده از مجموعهای از ذرهبینهای خاص خود (فیلترها) نمیتواند به درستی ویژگیهای مختلف را تشخیص دهد. وی از ذرهبینهای مختلف کمک میگیرد تا جزییات هر نگاشت ویژگی خالی را پر کند. از این رو اگر وی 16 نگاشت ویژگی خالی داشته باشد، باید 16 ذرهبین نیز داشته باشد.
هر ذرهبین از چندین لایه شیشه تشکیل یافته است و هر لایه شیشه دارای وزنهای مختلف است. تعداد لایههای شیشه یعنی «عمق فیلتر» همواره با عمق لایه ورودی که به آن نگاه میکند برابر است.
در ابتدا شرلوک به تصویر ورودی نگاه میکند که 3 لایه دارد (قرمز، سبز و آبی) بنابراین شیشه ذرهبین وی نیز 3 لایه دارد. هماهنگ با ساخت CNN عمق لایه ما افزایش مییابد و شیشه ذرهبین نیز ضخیمتر میشود.
برای این که شرلوک بتواند یک نگاشت ویژگی ایجاد کند، ابتدا یک ذرهبین برمیدارد و در بخش چپ-بالای تصویر ورودی قرار میدهد. لایه قرمز رنگ ذرهبین تنها میتواند لایه قرمز تصویر ورودی را ببیند، لایه سبز ذرهبین نیز تنها لایه سبز تصویر را میبیند و همین وضعیت در مورد لایه آبی نیز برقرار است.
ریاضیات کانولوشن
هر پیکسل در نگاشت ویژگی ما بخشی از سرنخ است. شرلوک برای محاسبه هر پیکسل باید مقداری دستکاری و جمع ساده انجام دهد.
در نمونه زیر از یک تصویر ورودی 5×5×3 استفاده شده و یک فیلتر 3×3×3 وجود دارد و از این رو 27 حالت مختلف برای 1 پیکسل وجود دارد:
- 3 لایه ضرب در 9 کانولوشن برای هر لایه برابر با 27 خواهد بود.
- هر یک از این 27 عدد با همدیگر جمع میشوند.
- پس از افزودن 27 محاسبه به همدیگر، 1 عدد دیگر نیز به عنوان بایاس اضافه میکنیم.
اجازه بدهید این ریاضیات را عمیقتر بررسی کنیم. هر پیکسل از 27 حاصلضرب تشکیل یافته است (3 لایه ضرب در 9 حاصلضرب برای هر لایه) و تصویر زیر 9 مورد از 27 حاصلضرب را نشان میدهد.
در مورد بایاس میتوانید آن را مانند دستگیره ذرهبین تصور کنید. همانند وزنها، این هم پارامتری دیگری از مدل است که هر دوره اجرای تمرین را طوری دستکاری میکند تا دقت مدل بهبود یابد و جزییات نگاشت ویژگی بهروزرسانی شوند.
وزنهای فیلتر: در مثال فوق وزنها برابر با 1 و 0 حفظ شدند تا محاسبات ریاضی آسانتر باشند؛ اما در شبکه عصبی معمولی، وزنهای آغازین با مقادیر تصادفی کوچک مثلاً اعدادی بین 0.01 تا 0.1 با رویکرد توزیع منحنی زنگولهای یا نرمال آغاز میشوند. برای یادگیری بیشتر در مورد مقداردهی اولیه وزنها میتوانید از این آموزش مقدماتی استفاده کنید.
پیمایش – جابجا کردن ذرهبین
شرلوک پس از محاسبه نخستین پیکسل در نگاشت ویژگی، ذرهبین خود را باید به کجا ببرد؟
پاسخ سؤال فوق به پارامتر پیمایش (striding) بستگی دارد. ما به عنوان یک مهندس/ معمار باید به شرلوک بگوییم که پیش از محاسبه نگاشت ویژگی پیکسل بعدی، چه تعداد پیکسل میتواند ذرهبین خود را به سمت راست منتقل کند. پیمایش 2 یا 3 در عمل رایجتر است؛ اما ما در این مثال از پیمایش 1 پیکسل استفاده میکنیم تا محاسبات آسانتر باشند. این بدان معنی است که شرلوک ذرهبین خود را 1 پیکسل به سمت راست جابجا میکند و همان محاسبات کانولوشنی قبلی را مجدد اجرا میکند.
زمانی که ذرهبین وی به انتهای سمت راست تصویر ورودی برسد، وی ذرهبینش را 1 پیکسل پایین آورده و مسیر خود را به سمت چپ تصویر طی میکند.
چرا باید پارامتر پیمایش را به بیش از 1 پیکسل تنظیم کنیم؟
- مزایا: باعث میشود که مدل سریعتر شده، محاسبات کاهش یابد و همچنین محاسبات کمتری در حافظه نگهداری شوند.
- معایب: بخشی از اطلاعات در مورد تصویر از دست میرود، زیرا برخی پیکسلها را که ممکن بود شامل الگوی مهمی باشند رد میکنید.
پیمایش 2 یا 3 پیکسلی معمولاً منطقیتر است، زیرا پیکسلهایی که مجاور هم هستند، معمولاً مقادیر یکسانی دارند؛ اما اگر 2 یا 3 پیکسل فاصله بگیریم، احتمال این که تغییراتی در مقادیر پیکسلها ببینیم افزایش مییابد و این مسئله برای تشکیل نگاشت ویژگی /الگو مهم است.
مقابله با از دست رفتن اطلاعات
برای این که شرلوک بتواند راز معما را حل کند میبایست سرنخهای زیادی را جمعآوری کرده باشد. در مثال فوق ما یک تصویر 5×5×3 یا 75 پیکسل از اطلاعات داریم و تنها یک تصویر 3×3×2 یعنی 18 پیکسلی پس از لایه اول کانولوشن به دست آوردهایم. این بدان معنی است که ما شواهدی را از دست دادهایم و این مسئله باعث میشود که دستیار شرلوک، جان واتسون ناراحت شود.
در چند لایه نخست CNN شرلوک میتواند الگوهای کوچک زیادی را مشاهده کند. در لایههای بعدی مرسوم است که نمونه خود را کاهش دهیم و حجم کلی پیکسلها را پایین بیاوریم زیرا سرنخهای کوچک را جمعآوری کردهایم و اینک به دنبال الگوهای بزرگتر هستیم.
اینک سؤال این است که چگونه میتوانیم با از دست رفتن اطلاعات در آغاز CNN مقابله کنیم؟
تعیین محدوده – ما میبایست صحنه جرم را با کشیدن نوارهایی در پیرامون تصویر، درون محوطهای قرار دهیم.
در مثال فوق ما پیش از آن که به انتهای سمت راست برسیم تنها 3 بار میتوانیم ذره بین خود را جابجا کنیم و همین موضوع در مورد حرکت از بالا به پایین نیز صادق است. این بدان معنی است که ارتفاع/عرض خروجی ما به صورت 3×3 است و ما 2 پیکسل از چپ به راست و 2 پیکسل دیگر در حرکت از بالا به پایین از دست دادهایم.
برای مقابله با این از دست رفتن اطلاعات معمولاً از محوطه بندی تصویر اصلی با صفرها استفاده میشود که فرایندی شبیه کشیدن نوار زرد رنگ پیرامون صحنه جرم است.
پس از تعیین محدوده اگر شرلوک دوباره بخواهد از همان ذرهبین استفاده کند، 2 نگاشت ویژگی که دارد باید به جای 3×3 به صورت 5×5 باشد. این به آن معنی است که ما اینک 50 پیکسل اطلاعات داریم، زیرا خروجی جدید ما از این کانولوشن به صورت 5×5×2 = 50 پیکسل است. 50 پیکسل بهتر از 18 پیکسل است؛ اما به خاطر داشته باشید که ما کار خود را با 7 پیکسل آغاز کردیم و از این رو برخی از سرنخها را از دست دادهایم. اکنون سؤال این است که چه کار دیگری میتوان برای خوشحالی شرلوک هولمز و جان واتسون انجام داد؟
فیلترهای بیشتر
با افزودن دست کم 1 نگاشت ویژگی به لایه کانولوشنی خودمان میتوانیم سرنخهای بیشتری در اختیار شرلوک قرار دهیم. محدودیتی برای تعداد نگاشتهای ویژگی یا همان سرنخها در مدل وجود ندارد؛ اما این پارامتری است که باید تحت کنترل باشد.
اگر تعداد نگاشتهای ویژگی را از 2 تا دست کم 3 افزایش دهیم (5x5x2… به …5x5x3) در این صورت پیکسلهای خروجی کلی ما (75) برابر با ورودی (75) خواهد بود و مطمئن میشویم که هیچ اطلاعاتی را از دست ندادهایم. اگر نگاشتها را به 10 افزایش دهیم، اطلاعات بسیار بیشتری در اختیار شرلوک میتوانیم قرار دهیم (5×5×10 = 250 پیکسل).
به طور خلاصه اطلاعات کلی پیکسلها در چند لایه نخست عموماً بالاتر از تصویر ورودی است، زیرا میخواهیم تا حد امکان سرنخهای کوچک زیادی در اختیار شرلوک قرار دهیم. در چند لایه آخر شبکه معمولاً نمونه کاهش مییابد و پیکسلهای کمتری استفاده میشود، زیرا این لایهها برای بازشناسی الگوهای بزرگتر در تصویر استفاده میشوند.
گام 4: الگوریتم بازشناسی الگوهای غیرخطی (ReLUs)
کسب اطلاعات هر چه بیشتر برای شرلوک بسیار مهم است؛ اما اینک نوبت وظایف واقعاً کارآگاهی فرارسیده است: بازشناسی الگوهای غیرخطی، مانند انحنای یک گوش یا فرورفتگی یک بینی.
بدین منظور شرلوک مقادیر کارهای ریاضیاتی برای ساخت نگاشتهای ویژگی خود انجام میدهد؛ اما هر یک از محاسبهها خطی بودهاند (یعنی پیکسلهای ورودی را گرفتهاند و نوعی ضرب/جمع روی هر پیکسل آن انجام دادهاند) و از این رو تنها میتواند الگوهای خطی را شناسایی کند.
برای وارد کردن الگوهای غیرخطی در CNN باید از تابع فعالسازی به نام واحد خطی اصلاحشده (Rectified Linear Unit) که به اختصار ReLU نامیده میشود استفاده کنیم. پس از آن که نگاشتهای ویژگی خود را از کانولوشن نخست محاسبه کردیم، هر یک از این مقادیر را وارد این تابع میکنیم تا ببینیم آیا فعال میشود یا نه.
اگر مقدار ورودی منفی باشد، در این صورت خروجی به صفر تبدیل میشود. اگر ورودی مثبت باشد، در این صورت مقدار خروجی بدون تغییر میماند. ReLU مانند یک سوئیچ روشن/خاموش عمل میکند و پس از این که هر مقدار از نگاشت ویژگی شما از طریق ReLU اجرا شد، میتوانید بازشناسی الگوی غیرخطی را ایجاد کنید.
اگر به مثال اولیه CNN خودمان بازگردیم، میتوانیم درست پس از کانولوشن از ReLU استفاده کنیم:
با این که چند تابع فعالسازی غیرخطی برای استفاده جهت وارد کردن مقادیر غیرخطی در شبکه عصبی وجود دارند (سیگموئید، tanh، leaky ReLU و ...) اما ReLU ها رایجترین توابعی هستند که امروزه در CNN استفاده میشوند، چون از نظر هزینه محاسباتی کارآمد هستند و یادگیری سریعتری را موجب میشوند.
گام 5: Max Pooling – حفظ اطلاعات اندک ولی مهم در انباری ذهن
اینک که شرلوک هولمز ما نگاشتهای ویژگی را در دست دارد، میتوانیم شروع به بررسی کنیم که چگونه میتوانیم بفهمیم کدام جزییات مهم و کدام یک نامرتبط هستند. روش این کار Max Pooling است.
شرلوک مغز انسان را مانند یک انباری خالی تصور میکند. فرد احمق همه این فضا را با انواع اسباب و اثاثیه پر میکند، به طوری که هر گونه اطلاعات مفیدی که وجود داشته باشند در میان این همه شلوغی گم میشوند. فرد عاقل تنها اطلاعات مهم را ذخیره میکند و بدین ترتیب میتواند در زمان ضرورت تصمیمهای سریعتری بگیرد. بدین ترتیب Max Pooling در واقع نسخه شرلوک برای مدیریت انباری مغز است. وی برای این که بتواند تصمیمهای سریعی بگیرد، تنها اطلاعات مهم را نگهداری میکند.
تکنیک Max Pooling به این معنی است که الگوریتم به یک همسایگی از پیکسلها نگاه میکند و تنها مقادیر «بیشینه» یا «مهمترین» قطعههای شواهد را ذخیره میکند.
برای نمونه اگر به یک ناحیه 2×2 (4 پیکسلی) نگاه کند، تنها پیکسلی که بالاترین مقدار را دارد، نگهداری می کند و 3 پیکسل دیگر را کنار میگذارد. این تکنیک به وی امکان میدهد که سریعتر یاد بگیرد و همچنین باعث میشود سرنخها را (به جای خاطرسپاری) تعمیم بدهد و بدین ترتیب میتواند آنها را ذخیره ساخته و در تصاویر آینده به خاطر بیاورد.
در این مورد نیز همانند فیلتر ذرهبین که قبلاً معرفی کردیم، میتوانیم پیمایش Max Pooling را کنترل و اندازه آن را تعیین کنیم. در مثال زیر فرض میکنیم که پیمایش به اندازه 1 است و اندازه pooling برابر با 2×2 است.
پس از Max Pooling در واقع 1 دور از convolution/ReLU/max pooling را کامل کردهایم.
در یک CNN معمولی چند دور از convolution/ReLU/ pooling اجرا میشود تا بتوانیم به الگوریتم طبقهبندی کننده برسیم. در هر دور، ارتفاع/عرض، فشردهتر میشود و بر عمق افزوده میشود، به طوری که در طی مسیر هیچ تکهای از شواهد از دست نرود.
در گامهای 1 تا 5 بر روی گردآوری شواهد متمرکز شده بودیم و اینک زمان آن رسیده است که شرلوک به سرنخهایی که گرداوری کرده نگاه کرده و معما را حل کند.
اینک که شواهد کافی در اختیارداریم آماده هستیم که معنی این شواهد را به دست آوریم.
گام 6: مسطح سازی – کنار هم قرار دادن سرنخها
زمانی که شرلوک به انتهای حلقه تمرین میرسد، کوهی از شواهد در اختیار دارد که به صورت پراکنده هستند و باید به یکباره همه آنها را ملاحظه کند. هر سرنخ یک ماتریس 2 بعدی از مقادیر است؛ اما هزاران مورد از آنها بر روی هم انباشته شدهاند.
شرلوک به عنوان یک کارآگاه خصوصی به این نوع آشفتگیها عادت دارد؛ اما او باید همه این شواهد را بررسی کرده و برای ارائه به هیئت قضایی در یک دادگاه نظم ببخشد.
شرلوک این فرایند را از طریق تکنیک تبدیل ساده که مسطح سازی نامیده میشود انجام میدهد:
- هر ماتریس دوبعدی از پیکسلها، به یک ستون از پیکسلها تبدیل میشود.
- هر یک از ماتریسهای دوبعدی بر روی همدیگر قرار میگیرند.
در تصویر زیر تلاش شده است فرایند تبدیل از منظر چشم انسان به تصویر کشیده شود.
اگر به مثال خود بازگردیم، فرایندی که رایانه میبیند به صورت زیر است:
اینک که شرلوک شواهد خود را سازماندهی کرده است زمان آن فرارسیده که هیئت قضایی دادگاه را در مورد این که شواهد به یک سوژه خاص اشاره میکنند، قانع سازد.
گام 7: کاملاً متصل – اتصال دادن بین نقاط
در یک سطح کاملاً متصل، ما شواهد را به هر یک از متهمین وصل میکنیم. درواقع ما نقاط مختلف را با نشان دادن پیوندهای بین شواهد به تصویر می کشیم و در مورد هر متهم به جای قاضی دادگاه «نقاط را به هم متصل میسازیم».
در تصویر زیر فرایندی که رایانه در مثال عددی ما میبیند را نشان دادهایم:
بین هر دو قطعه از شواهد در لایه مسطح و 3 خروجی، یک دسته از وزنها و بایاسها قرار دارند. مانند دیگر وزنها در این شبکه، این وزنها نیز در هنگام آغاز تمرین دادن CNN در طی زمان به صورت مقادیر تصادفی، مقداردهی اولیه میشوند و CNN یاد میگیرد که چگونه این وزن/بایاسها را تنظیم کند تا دقت پیشبینیها را افزایش دهد.
اینک زمان آن رسیده است که شرلوک معما را حل کند!
گام 8: Logit + Softmax - حل کردن معما
در مرحله طبقهبندی تصویر از سوی CNN، پیشبینی مدل، خروجی دارای بالاترین امتیاز است. هدف آن است که بالاترین امتیاز را برای خروجی صحیح داشته باشیم و برای خروجیهای نادرست نیز کمترین امتیاز به دست آید.
این تابع امتیازدهی دو بخش دارد:
- امتیاز منطقی – امتیاز خام
- Softmax - احتمال هر خروجی بین 0 تا 1. مجموع احتمالها برابر با 1 است.
بخش اول: لگاریتمها – امتیازهای منطقی
امتیاز لگاریتمی برای هر خروجی یک تابع خطی ساده است:
امتیاز لگاریتمی= (شواهد × وزنها) + بایاس
هر قطعه از شواهد در وزنهایی که شواهد را به خروجی ربط میدهند، ضرب میشود. همه این ضربها به همدیگر اضافه میشوند و جمله بایاس نیز در انتها به آن افزوده میشود و بدین ترتیب بالاترین امتیاز همان حدس مدل خواهد بود.
همه چیز کامل به نظر میرسد و از این رو سؤال این است که چرا باید به چیز دیگری نیاز داشته باشیم؟ دو دلیل شهودی وجود دارد:
- سطح اعتماد شرلوک – ما میخواهیم بدانیم که شرلوک تا چه حد مطمئن است و از این رو میتوانیم وقتی که وی سطح بالایی از اعتماد دارد و پاسخ صحیحی ارائه کرده است به وی پاداش بدهیم و زمانی که سطح بالایی از اعتماد دارد و پاسخ نادرستی ارائه کرده است او را جریمه کنیم. این رویه پاداش/تنبیه زمانی که ضرر («دقت شرلوک») را در انتها محاسبه کردیم اجرا میشود.
- احتمال اعتماد وزندار شرلوک – ما میخواهیم روش سادهای برای تفسیر این وضعیت به صورت احتمالهایی بین 0 تا 1 داشته باشیم و میخواهیم امتیازهای پیشبینیشدهمان در همان مقیاسی باشد که خروجی واقعی (0 یا 1) قرار دارد. تصویر صحیح واقعی (الون) مقدار 1 دارد و دیگر تصاویر نادرست (جف بزوس و جان اسنو) مقدار 0 دارند. فرایند تبدیل خروجیهای صحیح به 1 ها و خروجیهای نادرست به 0 ها به نام انکودینگ One-hot نامیده میشود.
هدف شرلوک این است که تا جای ممکن پیشبینی خود را برای تصویر صحیح به 1 نزدیک کند.
بخش دوم: Softmax – امتیازهای احتمال اعتماد وزندار شرلوک
2.1 سطح اعتماد شرلوک
برای یافتن سطح اعتماد شرلوک عدد e (با مقدار 2.71828...) را انتخاب کرده و آن را به توان امتیاز منطقی میرسانیم. در نتیجه امتیاز بالاتر به معنی اعتماد واقعاً بالا و امتیاز پایینتر به معنی اعتماد واقعاً پایین است.
این محاسبه نمایی همچنین تضمین میکند که امتیاز منفی نخواهیم داشت. چون امتیازهای منطقی ما میتوانند منفی نیز باشند، اتفاقی که برای امتیازهای منطقی فرضی ما میافتند در تصویر زیر به نمایش در آمدهاند:
2.2 احتمال اعتماد وزندار شرلوک
برای یافتن احتمال اعتماد وزندار هر یک از اعتمادهای خروجی را بر اساس مجموع همه امتیازهای اعتماد محاسبه میکنیم و به هر یک از تصاویر خروجی احتمالی میدهیم که مجموع آنها برابر 1 است. در مثال اکسل ما وضعیت به صورت زیر است:
این الگوریتم طبقهبندی کننده Softmax به صورت شهودی است. شرلوک فکر میکند احتمال 97 درصد (اعتماد وزندار) وجود دارد که تصویری که ترمیناتور به آن نگاه میکند تصویر الون ماسک باشد.
گام نهایی در مدل ما این است که ضرر خود را محاسبه کنیم. این مقدار ضرر به ما میگوید که در عمل شرلوک چه قدر خوب یا بد است.
گام 9: ضرر آنتروپی متقاطع- درستی یا نادرستی شرلوک
هر شبکه عصبی یک تابع ضرر دارد که در آن پیشبینیها با واقعیت مقایسه میشوند. همچنان که CNN را تمرین میدهیم، پیشبینیهای ما بهبود مییابند (یعنی مهارتهای کارآگاهی شرلوک بهتر میشوند) و وزنها/ بایاسهای شبکه را تعدیل میکنیم.
رایجترین تابع ضرری که برای CNN استفاده میشود، تابع ضرر آنتروپی متقاطع است. جستجوی گوگل در مورد آنتروپی متقاطع چند تفسیر به همراه کلی حروف یونانی به همراه دارد و از این رو به راحتی میتواند باعث سردرگمی مخاطب شود. اما علیرغم این توضیحهای متناقض، همه آنها در چارچوب یادگیری ماشین به معنی یکسانی اشاره میکنند. از این رو 3 توضیح رایجتر را در ادامه خلاصه کردهایم:
پیش از آن که تفاوت فرمولها را بررسی کنید، توضیح آنها چنین است:
- مقایسه احتمال طبقه صحیح (آلون، 1.00) در برابر احتمال CNN برای الون (امتیاز softmax وی، 0.97).
- پاداش به شرلوک هر زمان که پیشبینی وی از طبقه صحیح، به 1 = هزینه کم، نزدیک باشد.
- جریمه کردن شرلوک هر زمان که پیشبینی وی برای طبقه صحیح به 0= هزینه بالا، نزدیک باشد.
تفسیر اول – یک معیار برای فاصله بین احتمال واقعی و احتمال پیشبینیشده
فاصله بین احتمال واقعی و احتمال تقریب زدهشده مشخص میکند که اگر پیشبینی ما نزدیک به 1 باشد به برچسب صحیح نزدیک بوده است و هزینه ما نزدیک به 0 است. اگر پیشبینی ما برای برچسب صحیح نزدیک به 0 باشد در این صورت جریمه سنگینی خواهیم شد. هدف این است که فاصله بین پیشبینی طبقه صحیح (الون، 0.97) و احتمال واقعی برچسب صحیح (1.00) کاسته شود.
واقعیت شهودی که پشت فرمول پاداش/جریمه فوق وجود دارد در تفسیر دوم در ادامه بررسی شده است.
تفسیر دوم – بیشینهسازی احتمال log یا کمینهسازی احتمال log منفی
در CNN منظور از log در واقع لگاریتم طبیعی (ln) است و معکوس «نماییسازی/ اعتماد» است که در گام 1 softmax انجام دادیم.
در اینجا به جای این که احتمال واقعی (1.00) را انتخاب و احتمال پیشبینیشده (0.97) را برای محاسبه هزینه جایگزین آن کنیم، از محاسبات لگاریتمی برای جریمه نمایی شرلوک به هر مقدار که از 1.00 دور شده باشد بهره میگیریم.
تفسیر سوم – واگرایی KL
واگرایی KL (Kullback-Leibler) میزان واگرایی احتمال پیشبینیشده ما (امتیاز softmax) از احتمال واقعی را اندازهگیری میکند.
این فرمول به دو بخش تقسیم میشود:
- مقدار عدم قطعیت در احتمال عملی ما. در زمینه تمرین نظارتشده در یادگیری ماشین این مقدار همواره صفر است. ما 100% مطمئن هستیم که تصویر تمرینی ما همان الون ماسک است.
- اگر از احتمال پیشبینیشده خود استفاده کنیم، چه مقدار از بیتهای اطلاعاتی را از دست میدهیم.
در این راهنما به کمک روش شبکههای عصبی کانولوشنی توانستیم الگوریتمی توسعه بدهیم که بتواند تصویر الون ماسک را از دو تصویر دیگر یعنی چهره جف بزوس و جان اسنو بازشناسی کند.
اگر این نوشته مورد توجه شما قرار گفته است، احتمالاً به موارد زیر نیز علاقهمند خواهید بود:
- مجموعه آموزشهای داده کاوی و یادگیری ماشین
- آموزش پروژه محور پردازش تصویر با OpenCV در ++C – تشخیص چهره
- مجموعه آموزشهای شبکههای عصبی مصنوعی
- مجموعه آموزشهای هوش محاسباتی
- آموزش طبقه بندی و بازشناسی الگو با شبکه های عصبی LVQ در متلب
- مجموعه آموزشهای پردازش تصویر و پردازش الگو
- توصیف الگوهای ساختار یافته در دادهکاوی — تشریح مفهوم با یک مثال ساده
- API تنسورفلو (Tensorflow) – آشنایی با پلتفرم شناسایی اشیای گوگل
==
سپاس از شما ،،،،، عالیییییی و کامل بود