شبکه‌های عصبی سیامی

**شبکه عصبی سیامی** (گاهی اوقات **شبکه عصبی دوقلو** نامیده می‌شود) یک شبکه عصبی مصنوعی است که از وزن‌های یکسانی استفاده می‌کند در حالی که روی دو بردار ورودی مختلف کار می‌کند تا بردارهای خروجی قابل مقایسه را محاسبه کند. اغلب یکی از بردارهای خروجی از قبل محاسبه شده‌است، بنابراین یک معیار تشکیل می‌شود که بردار خروجی دیگر با آن مقایسه می‌شود. این شبیه به مقایسه اثر انگشت است، اما می‌تواند از نظر فنی بیشتر به عنوان یک تابع فاصله برای هش کردن حساس به محلی توصیف شود.

می‌توان یک معماری ساخت که از لحاظ عملکردی شبیه به یک شبکه سیامی باشد، اما عملکرد کمی متفاوت را اجرا کند. این شبکه‌ها معمولاً برای مقایسه نمونه‌های مشابه در مجموعه‌های مختلف استفاده می‌شود.

از مثال‌های استفاده شبکه‌های دوقلو برای سنجش شباهت، مواردی مانند تشخیص دست خط، تشخیص خودکار چهره‌ها در تصاویر دوربین و تطبیق اسناد با اسناد نمایه شده‌است. شاید شناخته شده‌ترین کاربرد شبکه‌های دوقلو، تشخیص چهره است، که در آن تصاویر شناخته شده از افراد از قبل محاسبه شده و با تصویری از یک دیتاست مقایسه می‌شوند. در ابتدا مشخص نیست، اما دو مشکل کمی متفاوت وجود دارد. یکی تشخیص یک فرد در میان تعداد زیادی از افراد دیگر است، این مشکل تشخیص چهره است. DeepFace نمونه ای از چنین سیستمی است. در سخت‌ترین شکل آن، شناسایی یک فرد در ایستگاه قطار یا فرودگاه است. مورد دیگر تأیید چهره است، به عنوان مثال یعنی بررسی اینکه آیا عکس موجود در یک پاسپورت همان شخصی است که ادعا می‌کند یا خیر. شبکه دوقلو ممکن است یکسان باشد، اما پیاده‌سازی می‌تواند کاملاً متفاوت باشد.

## یادگیری
یادگیری در شبکه‌های دوقلو را می‌توان با تابع هزینه تریپلت یا از دست دادن کنتراست انجام داد. برای یادگیری با تابع هزینه تریپلت، یک بردار پایه (تصویر لنگر یا ثابت) با یک بردار مثبت (تصویر واقعی) و یک بردار منفی (تصویر نادرست) مقایسه می‌شود. بردار منفی یادگیری را در شبکه جلو می‌برد، در حالی که بردار مثبت مانند یک تنظیم کننده عمل می‌کند. برای یادگیری از طریق کاهش کنتراست باید کاهش وزن وجود داشته باشد تا وزنه‌ها منظم شوند، یا عملیات مشابهی مانند نرمال‌سازی.

یک معیار فاصله برای یک تابع هزینه ممکن است دارای ویژگی‌های زیر باشد:
* غیر منفی بودن: \delta ( x, y ) \ge 0
* همانی قابل تشخیص: \delta ( x, y ) = 0 \iff x=y
* تقارن: \delta ( x, y ) = \delta ( y, x )
* نابرابری مثلث: \delta ( x, z ) \le \delta ( x, y ) + \delta ( y, z )

به‌طور خاص، الگوریتم تابع هزینه تریپلت اغلب با مربع فاصله اقلیدسی (که برخلاف اقلیدسی، نابرابری مثلث ندارد) تعریف می‌شود.

### متریک‌های از پیش تعریف شده، فاصله اقلیدسی
هدف رایج یادگیری، به حداقل رساندن معیار فاصله برای اشیاء مشابه و به حداکثر رساندن برای موارد متمایز است. این یک تابع هزینه مانند زیر است:

: \begin{align}

\delta(x^{(i)}, x^{(j)})=
\begin {cases}
\min \ \| \operatorname{f} \left ( x^{(i)} \right ) - \operatorname{f} \left ( x^{(j)} \right ) \| \,, i = j \\
\max \ \| \operatorname{f} \left ( x^{(i)} \right ) - \operatorname{f} \left ( x^{(j)} \right ) \| \,, i \neq j
\end{cases}
\end{align}
: i,j شاخص‌هایی در مجموعه ای از بردارها هستند
: \operatorname{f}(\cdot) تابع پیاده‌سازی شده توسط شبکه دوقلو

متداول‌ترین معیار فاصله ای که استفاده می‌شود، فاصله اقلیدسی است که در صورت وجود آن، تابع هزینه را می‌توان به صورت ماتریسی بازنویسی کرد.

: \operatorname{\delta} ( \mathbf{x}^{(i)}, \mathbf{x}^{(j)} ) \approx (\mathbf{x}^{(i)} - \mathbf{x}^{(j)})^{T}(\mathbf{x}^{(i)} - \mathbf{x}^{(j)})

### متریک‌های آموخته شده، معیار فاصله غیرخطی
یک مورد کلی تر این است که بردار خروجی از شبکه دوقلو، از لایه هابی اضافی با معیارهای فاصله غیر خطی عبور داده می‌شود.

: \begin{align}
\text{if} \, i = j \, \text{then} & \, \operatorname{\delta} \left [\operatorname{f} \left ( x^{(i)} \right ), \, \operatorname{f} \left ( x^{(j)} \right ) \right] \, \text{is small} \\
\text{otherwise} & \, \operatorname{\delta} \left [\operatorname{f} \left ( x^{(i)} \right ), \, \operatorname{f} \left ( x^{(j)} \right ) \right] \, \text{is large}
\end{align}
: i,j شاخص‌هایی در مجموعه ای از بردارها هستند
: \operatorname{f}(\cdot) تابع پیاده‌سازی شده توسط شبکه دوقلو
: \operatorname{\delta}(\cdot) تابع پیاده‌سازی شده توسط شبکه که خروجی‌های شبکه دوقلو را به هم متصل می‌کند

در یک فرم ماتریسی، فاصله شرح داده شده قبلی اغلب به عنوان فاصله ماهالانوبیس برای یک فضای خطی به صورت زیر تقریب می‌شود.

: \operatorname{\delta} ( \mathbf{x}^{(i)}, \mathbf{x}^{(j)} ) \approx (\mathbf{x}^{(i)} - \mathbf{x}^{(j)})^{T}\mathbf{M}(\mathbf{x}^{(i)} - \mathbf{x}^{(j)})

این حالت را می‌توان بیشتر به یادگیری بدون نظارت و یادگیری تحت نظارت تقسیم کرد.

### معیارهای آموخته شده، شبکه‌های نیمه دوقلو
این معماری همچنین به شبکه دوقلو اجازه می‌دهد تا بیشتر یک‌نیمه دوقلو باشد و عملکردهای متفاوت را اجرا کند:

: \begin{align}
\text{if} \, i = j \, \text{then} & \, \operatorname{\delta} \left [\operatorname{f} \left ( x^{(i)} \right ), \, \operatorname{g} \left ( x^{(j)} \right ) \right] \, \text{is small} \\
\text{otherwise} & \, \operatorname{\delta} \left [\operatorname{f} \left ( x^{(i)} \right ), \, \operatorname{g} \left ( x^{(j)} \right ) \right] \, \text{is large}
\end{align}
: i,j شاخص‌هایی در مجموعه ای از بردارها هستند
: \operatorname{f}(\cdot), \operatorname{g}(\cdot) تابع پیاده‌سازی شده توسط شبکه نیمه دوقلو
: \operatorname{\delta}(\cdot) تابع پیاده‌سازی شده توسط شبکه که خروجی‌های شبکه دوقلو را به هم متصل می‌کند

## شبکه‌های دوقلو برای ردیابی اشیا
شبکه‌های دوقلو به دلیل دو ورودی منحصر به فرد پشت سر هم و اندازه‌گیری شباهت، در ردیابی اشیا استفاده شده‌اند. در ردیابی اشیاء، یک ورودی شبکه دوقلو، تصویری و نمونه از پیش انتخاب شده توسط کاربر است، ورودی دیگر یک تصویر بزرگتر است، که وظیفه شبکه دوقلو، یافتن نمونه در داخل تصویر بزرگتر است. با اندازه‌گیری شباهت بین نمونه و هر قسمت از تصویر جستجو، می‌توان یک نقشه از امتیاز شباهت توسط شبکه دوقلو ارائه داد. علاوه بر این، با استفاده از یک شبکه عصبی پیچشی، فرایند محاسبه امتیاز شباهت هر بخش را می‌توان تنها با یک لایه همبستگی متقابل جایگزین کرد.

پس اولین معرفی این شبکه‌ها در سال ۲۰۱۶، شبکه‌های کاملاً کانولوشن دوقلو در بسیاری از شبکه‌های عصبی برای ردیابی اشیاء با کارایی بالا استفاده شده‌است. مانند:

CFnet, StructSiam, SiamFC-tri, DSiam, SA-Siam, SiamRPN, DaSiamRPN, SiamRPN Cascaded , SiamMask, SiamRPN++, SiamRPN Deeper and Wider.

## جستارهای وابسته
* شبکه‌های عصبی مصنوعی
* تابع هزینه تریپلت

## بیشتر خواندن
* 

## منابع

رده:معماری شبکه‌های عصبی