شبکه سه قلو (Triplet Network)، در ریاضیات (Mathematics)
انواع شبکه های عصبی (Neural Networks) را در آموزش زیر شرح دادیم :
شبکه سه قلو (Triplet Network) :
شبکه سه قلو (Triplet Network) یک تعمیم از شبکه سیامی است که با سه ورودی (anchor، positive، negative) کار می کند. هدف این است که فاصله بین anchor و positive (نمونه مشابه) کم شود و فاصله بین anchor و negative (نمونه نامشابه) زیاد شود. این روش در FaceNet (توسط شاف و همکاران) برای یادگیری embeddings چهره بسیار موفق بود.
تابع هزینه triplet loss به صورت زیر تعریف می شود:
\[ \mathcal{L} = \max(0, \|f(A) - f(P)\|^2 - \|f(A) - f(N)\|^2 + \alpha) \]که
\[ \alpha \]حاشیه (margin) است،
\[ A \]نمونه anchor،
\[ P \]نمونه مثبت (هم کلاس با anchor)،
\[ N \]نمونه منفی (کلاس متفاوت). هدف این است که فاصله های مثبت حداقل به اندازه
\[ \alpha \]از فاصله های منفی کوچکتر باشند.
انتخاب سه تایی های مناسب (hard triplet mining) برای آموزش مؤثر حیاتی است: سه تایی هایی انتخاب می شوند که
\[ f(N) \]به anchor نزدیک است (negative سخت) یا
\[ f(P) \]دور است (positive سخت). این باعث می شود شبکه مرزهای بهتری یاد بگیرد.
کاربردها: بازشناسی چهره، بازشناسی اشیاء، یادگیری معیار شباهت، سیستم های توصیه گر. Triplet loss به طور گسترده در مسائلی که نیاز به embeddings با کیفیت بالا دارند، استفاده می شود.