Սիամական նեյրոնային ցանցեր

**Սիամական նեյրոնային ցանց** (կամ **երկվորյակ նեյրոնային ցանց**) արհեստական նեյրոնային ցանց է, որն օգտագործում է նույն կշիռները(պարամետրերը) `զուգահեռաբար աշխատելով երկու տարբեր մուտքային վեկտորների վրա` ելքային համադրելի վեկտորները հաշվարկելու համար։ Հաճախ ելքային վեկտորներից մեկը նախապես հաշվարկվում է, ձևավորելով ելակետային բազա, որի հետ համեմատվում է ելքային մյուս վեկտորները։ Սիամական նեյրոնային ցանցերում թարմացած բազային պարամետրերի արժեքները նույնանման արտացոլվում են նաև մյուս ենթահամակարգերում(ցանցերում)։ Սա նման է մատնահետքերի համեմատությանը, բայց, ավելի ընդլայնված մեկնաբանելով, ելակետային վեկտորներից մեկի համեմատությունը մյուս ելակետային վեկտորի (բազայի) հետ բնութագրվում է որպես հեռավորության չափման գործառույթ տեղայնորեն զգայուն հաշ ֆունկցիաների (*[https://ru.wikipedia.org/wiki/Locality-sensitive_hashing locality-sensitive hashing]*) մեթոդի համար։

Սիամական նեյրոնային ցանցերի միջոցով լուծվում են այնպիսի խնդիրներ, ինչպիսիք են ձեռագիր փաստաթղթերի նույնականացումը, տեսախցիկի պատկերներում դեմքերի ինքնաբերաբար հայտնաբերումը և ինդեքսավորված փաստաթղթերին համապատասխան հարցումների(անգլերեն՝ *query*) վերագրումը։ Երկվորյակ ցանցերի թերևս ամենահայտնի կիրառությունը դեմքի ճանաչումն(անգլերեն՝ *face recognition*) է, որտեղ ցանցը մարդկանց դեմքի պատկերները նախապես "սովորում" է,  և այդ պատկերները համեմատվում են նմանատիպ նոր պատկերների հետ։ Սակայն ասյտեղ ի հայտ են գալիս որոշակի խնդիրներ, որոնցից առաջինը կապված է կոնկրետ մարդուն տարբերել բազմաթիվ մարդկանց մեջ, մյուսը ՝ արդյոք ներկայացված նոր պատկերը համապատասխանում է "սովորած" պատկերի հետ։

## Ցանցի ուսուցում
Սիամական նեյրոնային ցանցերից յուրաքանչյուրն ունակ է սովորել մուտքային վեկտորի ներքին կապերը(անգլերեն՝ *hidden representations*): Այդ երկու նեյրոնային ցանցերը զուգահեռաբար աշխատում են տանդեմում և վերջում համեմատում են իրենց արդյունքները, սովորաբար կոսինուսային հեռավորության միջով։

Ուսուցումը երկվորյակ ցանցերում իրականացվում է թրիփլետ(անգլերեն՝ *[[:en:Triplet loss|triplet loss]]*) կամ հակադրողական(անգլերեն՝ ''contrastive loss'') կորստի ֆունկցիաների միջոցով։ Թրիփլետ կորստի ֆունկցիայի միջոցով սովորելուց բազային վեկտորը("սովորած" պատկեր) համեմատվում է դրական վեկտորի(ճշմարիտ պատկեր) և բացասական վեկտորի(սխալ պատկեր) հետ։ Բացասական վեկտորների շնորհիվ ցանցը կշարունակի սովորել, իսկ դրական վեկտորները կհանդիսանան որպես կարգավորիչներ(անգլերեն՝ *regularizer*). Հակադրողական կորուստի ֆունկցիայի դեպքում անհրաժեշտ է որպեսզի կշիռները գնալով նվազեն(նորմավորվեն)։

Կորստի ֆունկցիան պետք է ունենա հետևյալ հատկությունները․

* Ոչ բացասական․ \delta(x,y)\geqslant0
* Սիմետրիկ․ \delta(x,y)=0 \Longleftrightarrow x=y
* Տարբերակվող․ \delta(x,y)=\delta(y,x)
* Բավարարի եռանկյունաչափական անհավասարմանը․ \delta(x,z)\leqslant\delta(x,y)+\delta(y,z)

Մասնավորապես, թրիփլետ ալգորիթմը հաճախ որպես գնահատված և իրական փոփոխականների միչև հեռավորության չափման միավոր օգտագործում է քառակուսային Էվկլիդյան հեռավորությունը, որը չի բավարարում եռանկյունաչափական անհավասարության պայմանին։

## Առավելություններ

* Ի տարբերություն սովորական նեյրոնային ցանցերի, սիամական նեյրոնային ցանցերը ավելի քիչ մուտքային տվյալների կարիք ունեն ուսուցման պրոցեսում։
* Արդյունավետ են տարատեսակ պատկերների նույնականացման կամ ճանաչման խնդիրներում։

## Ծանոթագրություններ

Կատեգորիա:Ցանցերի ուսուցում