روش S2SD برای بهبود عملکرد deep metric learning (DML) توسعه داده شده است.
روش DML چیست و چه کاربردی دارد؟ برای فهم بهتر مثال زیر را در نظر بگیرید. کاربرد معمولی که از شبکههای عصبی می شناسیم مسئله classification است. مثلاً وقتی در خیابان قدم میزنیم تشخیص می دهیم که این شی درخت است، این شی خودرو هست، این شی پرنده هست و ... . و این توانایی طی آموزش طولانی (داده برداری زیاد) برای ما به وجود آمده است.
اما گاه فردی را می بینیم که او را نمی شناسیم(کلاسی مشخصی برای او نداریم) اما می دانیم این فرد را در مکانی دیگر دیده بودیم. در مسئله دوم آموزش زیادی (داده برداری زیاد) برای چهره فرد برای ما انجام نشده، اما شناسایی انجام شده است. در واقع ما آموزش دیده ایم که ویژگیهای چهره افراد را در ذهن بسپاریم و اگر آن ویژگیها را مجدد ببینیم این تشخیص برای ما اتفاق میافتد که این همان فرد قبلی است.
DML روشی است که میتواند برای شبکه های عصبی عملکرد مشابه را ایجاد کند. یعنی شبکهبتواند تشخیص دهد آیا دو چهره مربوط به یک نفر هستند یا خیر. مدل کردن ویژگی ها عموما با یک بردار انجام می شود و Metric تابعیست که نزدیکی دو بردار ویژگی را مدل می کند. وظیفه شبکهی عصبی نیز استخراج آن ویژگیهاست.
loss شبکه نیز تابعی از Metric بردارهاست. برای مثال طبق تعریف تابع متریک، متریک دو بردار مشابه صفر است. به همین دلیل اگر دو چهره از فرد یکسانی باشند و در عین حال شبکه متریک غیر صفری برگرداند خطایی برای شبکه در نظر گرفته میشود.
در عمل چه نکاتی باید رعایت شود تا شبکه عملکرد خوبی در DML داشته باشد؟ در تحقیقات دیده شده که هرچه ابعاد خروجی شبکه گسترش پیدا می کند قدرت تعمیم DML نیز افزایش پیدا میکند. قدرت تعمیم به چه معناست؟ یعنی شبکهای که بر روی تعداد محدودی چهره آموزش دیده چقدر میتواند چهره های جدید را بهتر تطبیق (یا معادلا تفکیک) دهد.
قدرت تعمیم یکی از مهمترین شاخصهاییست که از شبکه انتظار داریم. گفته شد که مطالعات نشان دادهاند که افزایش بعد منجر به افزایش قدرت تعمیم نیز می شود. اما در کاربرد های DML در بسیاری از مواقع ما نیاز به ایجاد پایگاه دادههایی بزرگ داریم و همزمان لازم است تطبیق تصویر دو چهره با سرعت کافی انجام پذیرد. در نتیجه اگر ابعاد شبکه یا خروجی نهایی بزرگ باشد سرعت کارکرد کاهش پیدا میکند. راه حل چیست؟ روشهای مبتنی بر knowledge distillation روشیهاییند که می توانند اطلاعات یک شبکه بزرگتر به یک شبکه کوچکتر را بفهمانند به طوری که شبکه کوچکتر رفتاری مشابه با شبکه بزرگتر از خود نشان دهد.
ایده اصلی S2SD اینست این است که برای مسئله DML با استفاده از knowledge distillation پیشنهادی خود، شبکهای طراحی کند که در این حالی که به قدر کافی کوچک است، رفتاری مشابه شبکههای بزرگتر را تقلید کند تا بتواند قدرت تعمیم بیشتری از خود نشان دهد. حال به جزئیات این ایده می پردازیم.
معرفی metric و loss:
فضای ویژگی را تصور کنید که توسط شبکههای بزرگ استخراج میشوند، شبکههایی نظیر resnet و یا inception. این فضای ویژگی Φ نامیده شده و این فضای ویژگی متناسب با مسئله classification به دست آمده است. هدف اینست که تابع fی را پیدا کنیم که این ویژگیها را برای تطبیق دو چهره بهینه کند. این تابع همان شبکه عصبیای است که نیاز داریم آموزش دهیم. خروجی این شبکه (تابع) را Ψ نامیده شده است. متریک به صورت زیر را تعریف شده است.
یعنی نزدیکی دو چهره معادل است با فاصلهای اقلدیسی دو بردار ویژگی به دست آمده از شبکه f. حال loss شبکه را نیز از جنس triplet تعریف شده است. triplet loss تلاش میکند بین متریک دو تصویر یکسان تفاوتی با متریک دو تصویر غیر کسان ایجاد کند بدون اینکه اندازهای دلخواهی برای این متریک قائل باشد. یعنی هدف اصلی آن تفاوتگذاریست.
در معادله بالا i و j به معنای تصویر مختلف از یک فرد، i و k نیز به معنای دو تصویر مختلف از دو فرد هستند. مقدار m نیز عددی مثبت است یک آستانهی حداقلی برای این تفاوت ایجاد کند.
روش knowledge distillation:
گفته شد که برای knowledge distillation باید از شبکه های بزرگتر برای آموزش شبکه کوچکتر استفاده کرد. شبکه بزرگتر با تابع g را در نظر بگیرید که همزمان با f بر روی مجموعه Φ عمل می کند. و خروجی آن Ψg نامیده شده و مشابه با f آموزش می بیند. در این حالت شبکه fهم تلاش میکند که Ltriplet را کمینه سازد و هم سعی می کند رفتار شبکه g را نیز تقلید کند. تقلید گفته شده با مشابهسازی cosine similarity matrix (CSM) انجام میشود.
ابتدا را بردارها Ψ نرمال می کنیم. CSM برای ست Ψ را Dمینامیم (Dij=ψiTψj). در این صورت هر درایه اندازه کسینوس زاویه بین هر دو بردار را نمایش می دهد. در طول آموزش تلاش میشود که f CSM مشابهی با g برای هر batch از داده ها را به وجود آورد. اما معیار شباهت بین دو CSM چیست؟ آیا باید اندازه درایه های آن مشابه اندازه درایه دومی شود. مثال فرضی زیر را در نظر بگیرید اولین سطر مرجع بوده و میخواهیم دومی و سومی را از نظر رفتاری با آن مقایسه کنیم.
در سطح اول (D1) میبینیم که بین داده اول بیشترین شباهت با داده چهارم وجود دارد. برای مجموعه داده دوم (D2) بیشترین شباهت داده اول با داده های سوم و پنجم بوده همچنین در سطر سوم (D3) نیز شباهت داده اول و چهارم بیشتر است. پس میبینیم اگرچه اندازهی درایه های سطر دوم با سطر اول مشابهتر است، اما از لحاظ رفتاری سطر سوم و اول سنخیت بیشتری با یکدیگر دارند. برای کمی کردن این تشابه میتوان از معیار پراکندگی Kullback-Leibler استفاده کرد در واقع KL میزان شباهت دو توزیع را نشان می دهد و با رابطهی زیر به دست می آید.
در اینجا نیز از همین منطق برای ایجاد خطا استفاده شد یعنی هرچه ماتریس CSM تابع f، از نظر پراکندگی KL، تفاوت بیشتری با g داشته باشد، خطای بیشتری برای آن در نظر گرفته می شود. مدل ریاضی آن به شرح زیر است.
در اینجا σ تابع softmax بوده و T متغیر میزان temperature است (یعنی اگر به سمت بی نهایت برود خروجی softmax برای همه یکسان می شود). دقت شود خطای distillationتنها برای آموزش f استفاده خواهد شد و مفروض این است که رفتار g نیازی به تقلید ندارد. علامت † نشان دهنده همین است که g با این خطا آموزش نخواهد یافت. با تعریف این خطا، خطای کلی برای شبکه را به صورت زیر در نظر گرفته میشود.
در اینجا L_DML همان Ltriplet است. نمودار بلوک این ساختار در زیر آمده است.
باز هم Knowledge distillation!
در مرحله قبل این احتمال داده شد که اگر اطلاعات از یک شبکه بزرگتر به شبکه کوچکتر انتقال یابد قدرت تعمیم شبکه کوچک بالا می رود. محتمل است که شبکه های دیگری نیز وجود داشته باشند که برای مجموعه ای از داده ها قدرت تعمیم بهتری را فراهم آورد. و به این دلیل شاید بهتر باشد به جای استفاده تنها از gاز مجموعه ای از شبکه ها با ابعاد مختلف استفاده شود و هر کدام از آنها اطلاعات خود را به f بفرستند. به این صورت که مجموعه ای از شبکه ها از g1 تا gm که ابعاد g_(i+1)>g_i است همزمان بر روی داده ها عمل می کنند و اطلاعات خود را به f بفرستند. تابع هزینه در این حالت به شکل زیر خواهد شد.
مسئله بعدی این است که هنگامی که ابعاد در میانه شبکه کاهش پیدا میکند شبکه دچار dimensionality bottleneck میشود. در اینجا نیز از φ به f یک bottleneck ایجاد می شود که ممکن است باعث شود قدرت تعمیم f کاهش یابد. همچنین دیده شده φ به دلیل ابعاد بالا میتواند برای مسئله DML مورد استفاده قرار گیرد به همین دلیل knowledge distillation از φ به fنیز انجام شده تا اگر اطلاعاتی از دست رفت بازیابی شود. در نتیجه loss نهایی پیشنهادی S2SD به فرم زیر خواهد بود.
نمودار بلوکی کل شبکه به صورت زیر شده است.
با این تغییرات نویسندگان مقاله S2SD ادعا کردهاند که توانستند ۷ درصد بهبود در معیار Recal@1 بگیرند. در فرمولها loss متغیر γ که واضحا میزان تاثیر knowledge distillationرا در کل فرایند یادگیری کنترل میکرد. شکل زیر نشان دهنده ی تغییرات معیار Recall@1 بر حسب این متغیر برای سه دیتاست مختلف از داده هست.
واضحا دیده میشود که معیار با knowledge distillationبهبود یافته اما در عین حال مقدار بهینه نیز برای آن وجود دارد.
همچنین اثر توسعه lossهایی که در مراحل مختلف بیان شد بررسی شده و گزارش شده که آخرین lossپیشنهادی در کل بهترین عملکرد را از خود نشان داده است. همچنین اثر افزایش بعد بر Recall@1 نشان داده شده است.
همچینین در مقاله بیان شده بهتر است که شبکه مورد استفاده برای f و giها یک MLP دو لایه باشد. شکل زیر اثر شبکههایی مختلف را در معیار سنجش نشان میدهد.
مرجع:
[1] Roth, Karsten, et al. "Simultaneous Similarity-based Self-Distillation for Deep Metric Learning." International Conference on Machine Learning. PMLR, 2021.