Direct naar inhoud
Alle termenNeurale netwerken & deep learning

Wat is Siamese Network?

Een neuraal netwerk dat twee dingen met elkaar vergelijkt door ze door hetzelfde 'filter' te halen — handig om te bepalen of twee foto's van dezelfde persoon zijn, of twee handtekeningen overeenkomen.

Wat is Siamese Network

Wat is een Siamese Network?

Stel je voor dat je een tweelingbroer of -zus hebt, en jullie dragen precies dezelfde bril. Alles wat jij door die bril ziet, ziet je tweeling door exact dezelfde lenzen. Een Siamese Network werkt op precies die manier: het bestaat uit twee identieke neurale netwerken die precies dezelfde 'bril' delen — dezelfde gewichten, dezelfde filters, dezelfde manier van kijken.

De truc? Je stopt in elk netwerk een ander plaatje (of stukje tekst, of geluidsfragment), en aan het einde vergelijk je: zijn de twee outputs van die netwerken dicht bij elkaar, of juist ver uit elkaar? Als ze dichtbij zijn, concludeert het systeem: "Deze twee dingen lijken op elkaar." Als ze ver uit elkaar liggen: "Dit zijn twee verschillende dingen."

De naam komt van Siamese twins — Siamese tweelingen — omdat de twee netwerken aan elkaar vastzitten en alles samen delen.

Hoe werkt het eigenlijk?

Het netwerk leert niet direct om een foto te labelen ("dit is een hond"), maar om afstand te meten. Het zet elke input om in een soort coördinaat in een abstracte ruimte — een 'embedding'. Dingen die op elkaar lijken, krijgen coördinaten dicht bij elkaar. Dingen die verschillen, krijgen coördinaten ver van elkaar.

Bij training geef je het netwerk paartjes: soms twee foto's van dezelfde persoon, soms twee foto's van verschillende mensen. Het netwerk leert: "Deze twee horen bij elkaar, dus hun embeddings moeten dichtbij komen. Die twee horen niet bij elkaar, dus hun embeddings moeten uit elkaar."

Dat doe je met een speciale loss function — een soort straf-beloningsysteem. De bekendste heet contrastive loss of triplet loss. Die laatste werkt zo: je geeft drie plaatjes — een anker, een positief voorbeeld (lijkt op het anker) en een negatief voorbeeld (lijkt er niet op). Het netwerk moet leren het positieve dichter bij het anker te trekken dan het negatieve.

Waar kom je het tegen?

Gezichtsherkenning is het klassieke voorbeeld. Je iPhone gebruikt dit principe om je gezicht te herkennen: het systeem vergelijkt de foto die de camera nu maakt met de referentie-foto's die je bij het instellen hebt gemaakt. Het hoeft niet exact hetzelfde plaatje te zijn — zolang de embeddings maar dicht genoeg bij elkaar liggen.

Handtekeningverificatie bij banken: is deze handtekening van dezelfde persoon als die we eerder zagen?

Plagiaat-detectie en duplicate detection bij zoekmachines: zijn deze twee teksten bijna hetzelfde?

Product-matching in e-commerce: is dit product op verschillende websites hetzelfde artikel?

Biometrische beveiliging: vingerafdrukken, irisscanners, stemherkenning — overal waar je moet vaststellen of twee signalen van dezelfde bron komen.

Een voorbeeld uit de praktijk

Stel: je bouwt een app waarmee mensen een foto van een schilderij maken, en de app zegt welk kunstwerk het is. Je hebt duizenden schilderijen in je database, maar van elk schilderij maar één of twee foto's. Te weinig om een klassiek neuraal netwerk te trainen dat alle schilderijen uit het hoofd leert.

Met een Siamese Network train je het systeem om gelijkenis te herkennen. Je geeft het voorbeelden: "Deze twee foto's zijn van hetzelfde schilderij (maar andere hoek), deze twee zijn van verschillende schilderijen." Het netwerk leert: wat maakt twee foto's 'hetzelfde schilderij'? Daarna kun je een nieuwe foto vergelijken met alle foto's in je database, en kijken welke embedding het dichtst bij komt.

Waarom zou jij hier iets aan hebben?

Als je werkt met weinig voorbeelden per categorie — bijvoorbeeld gezichtsherkenning waar je van elke persoon maar een paar foto's hebt — zijn Siamese Networks vaak effectiever dan klassieke classificatie-netwerken. Ze leren niet "dit is Jan", maar "dit lijkt op Jan".

Ook handig als je nieuwe categorieën wilt toevoegen zonder opnieuw te trainen. Je hoeft alleen de nieuwe foto's door het netwerk te halen en hun embeddings op te slaan. Het vergelijken gebeurt daarna automatisch.

Denk aan: productherkenning in je webshop, fraudedetectie ("lijkt deze transactie op eerdere verdachte transacties?"), of content-moderatie ("lijkt deze nieuwe foto op eerder geblokkeerde content?").

Ga ermee aan de slag

Wil je hier zelf mee experimenteren? Kijk naar de Keras- of PyTorch-tutorials over Siamese Networks — vaak met een simpel MNIST-voorbeeld om mee te beginnen. Of onderzoek hoe moderne gezichtsherkenning werkt (zoals FaceNet of DeepFace): die zijn allemaal gebaseerd op dit principe. De kracht zit 'm in het feit dat je niet duizenden voorbeelden per persoon nodig hebt — een paar goede foto's zijn genoeg om iemands 'gezichts-embedding' vast te leggen.

FAQ

Veelgestelde vragen over Siamese Network

De drie meest gestelde vragen over dit onderwerp, kort beantwoord.

Wat is Siamese Network?

Een neuraal netwerk dat twee dingen met elkaar vergelijkt door ze door hetzelfde 'filter' te halen — handig om te bepalen of twee foto's van dezelfde persoon zijn, of twee handtekeningen overeenkomen.

Waarom is Siamese Network belangrijk?

Stel je voor dat je een tweelingbroer of -zus hebt, en jullie dragen precies dezelfde bril. Alles wat jij door die bril ziet, ziet je tweeling door exact dezelfde lenzen. Een Siamese Network werkt op precies die manier: het bestaat uit twee identieke neurale netwerken die precies dezelfde 'bril' delen — dezelfde gewichten, dezelfde filters, dezelfde manier van kijken.

Hoe wordt Siamese Network toegepast?

De truc? Je stopt in elk netwerk een ander plaatje (of stukje tekst, of geluidsfragment), en aan het einde vergelijk je: zijn de twee outputs van die netwerken dicht bij elkaar, of juist ver uit elkaar? Als ze dichtbij zijn, concludeert het systeem: "Deze twee dingen lijken op elkaar." Als ze ver uit elkaar liggen: "Dit zijn twee verschillende dingen."

Deel: