تعلم المقاييس1993تأسيسي10 دقيقة قراءة

التحقّق من التوقيعات بشبكة عصبية سيامية ذات تأخير زمني

Signature Verification Using a "Siamese" Time Delay Neural Network

Bromley, J. · Bentz, J. W. · Bottou, L. · Guyon, I. · LeCun, Y. · Moore, C. · Säckinger, E. · Shah, R. — NIPS

المشكلة

في مطلع التسعينيات، كانت أنظمة التحقق من التوقيعات على الأجهزة اللوحية تعمل بواحدة من طريقتين: إما استخلاص سمات يدوية كعدّ الخطوط وقياس الزوايا، أو حفظ صورة التوقيع كاملة ومقارنتها حرفياً. المشكلة أن الإنسان لا يوقّع بالطريقة نفسها تماماً في كل مرة، فالمقارنة الحرفية تفشل بسهولة. وفوق ذلك، الشريط المغناطيسي في بطاقة الائتمان لا يتسع إلا لـ 80 بايت، فكيف تضغط توقيعاً كاملاً في هذه المساحة الضيقة مع الحفاظ على القدرة على كشف التزوير؟

الإسهام

الفكرة الأساسية هي بناء شبكتين عصبيتين متطابقتين تماماً من نوع TDNN تتشاركان الأوزان نفسها. كل شبكة تستقبل توقيعاً خاماً — موضع القلم وسرعته وتسارعه على مدار الزمن — وتحوّله إلى متجه سمات مضغوط. ثم تُقاس درجة التشابه بحساب جيب تمام الزاوية بين المتجهين. في أثناء ، يُدفع جيب التمام نحو 1 للتوقيعات الحقيقية ونحو −1 للتزوير. والجميل أنه عند الاستخدام الفعلي لا نحتاج إلا شبكة واحدة — مخرجها متجه سمات يُقارَن بقالب مخزّن لا يتجاوز 38 بايت.

الأثر

هذه الورقة هي التي أعطت العالم مصطلح «» وأسّست لفكرة محورية: أن نُعلّم شبكة عصبية بناء فضاء تمثيل تعبّر فيه المسافة عن درجة التشابه، وهذا ما صار يُعرف لاحقاً . تأثيرها المباشر يظهر في دالة الخسارة الثلاثية التي استخدمها FaceNet، وفي تضمينات الجمل التي قدّمها Sentence-BERT، وفي إطار في SimCLR، وفي التعلم الذاتي الإشراف المبسّط في SimSiam. عملياً، كل نظام حديث للتحقق من الوجوه أو البحث في الصور أو مقارنة الجمل يرجع في أصوله إلى هذه الورقة.

تخيّل توأمَين متطابقَين يعملان في قسم الأمن ببنك. كل واحد منهما يجلس أمام نافذة مستقلة ويفحص توقيعاً — الأول يفحص التوقيع المحفوظ في السجلات، والثاني يفحص التوقيع الجديد على الشيك. ولأنهما توأمان، فإنهما ينتبهان بالضبط لنفس التفاصيل: قوة ضغط القلم، إيقاع الحركة، تلك الزخرفة الصغيرة في آخر الاسم.

بعد الفحص، يكتب كل واحد ملخّصاً قصيراً على بطاقة. المدير يأخذ البطاقتين ويقارنهما: إن تشابه الملخّصان يُوافَق على الشيك، وإن اختلفا يُشتبه بالتزوير.

الشبكة السيامية هي بالضبط هذا التوأم — شبكتان عصبيتان متطابقتان، كل واحدة تفحص مدخلاً وتُخرج ملخصاً رقمياً. التدريب يضبطهما بحيث تتقارب ملخصات التوقيعات الحقيقية وتتباعد ملخصات التوقيعات المزوّرة.

المشكلة: كيف تُعلِّم آلةً أن تقارن؟

نماذج التقليدية تتعلم أن تقول «هذا من الفئة أ» أو «هذا من الفئة ب». لكن مسألة التحقق من التوقيعات مختلفة جذرياً — ليست تصنيفاً وإنما هي مقارنة. السؤال هنا: «هل هذا التوقيع الجديد يشبه التوقيع المحفوظ في الملف؟» والأصعب أن النظام لم يرَ توقيع هذا الشخص بالذات أثناء التدريب.

هذا بالضبط هو جوهر ما يُعرف بالتعلّم المتري: بناء تتقارب فيه الأشياء المتشابهة وتتباعد فيه المختلفة، حتى لو كانت الفئات جديدة تماماً على . والتحدي نفسه يتكرّر في تطبيقات كثيرة — التحقق من الوجوه («هل هذا الشخص نفسه؟»)، والتعرّف على المتحدث («هل هذا الصوت ذاته؟»)، ومطابقة المستندات («هل هذان النصّان عن الموضوع نفسه؟»).

البنية: شبكتان توأم بأوزان مشتركة

الشبكة السيامية مبنية من شبكتين فرعيتين متطابقتين تماماً. ومعنى «متطابقتين» هنا أن كل وكل وكل اتصال مشترك بينهما حرفياً — حين تُعدَّل قيمة في إحداهما تتغيّر تلقائياً في الأخرى. هذا ما نسمّيه .

لكن لماذا نشترط مشاركة الأوزان؟ السبب بسيط: المقارنة يجب أن تكون تبادلية. إن قلنا إن التوقيع «أ» يطابق «ب»، فمن البديهي أن «ب» يجب أن يطابق «أ». مشاركة الأوزان تضمن ذلك لأن كلا المدخلَين يُعالَجان بالطريقة نفسها بالضبط.

كل شبكة فرعية هي في جوهرها شبكة ذات تأخير زمني (TDNN) — يمكنك تخيّلها كشبكة أحادية تمرّر مُتعلَّمة على البُعد الزمني للتوقيع. المدخل عبارة عن سلسلة زمنية مؤلفة من 200 خطوة، وفي كل خطوة ثماني (موضع القلم، سرعته، تسارعه، اتجاهه، انحناء المسار، وحالة رفع القلم أو خفضه). الشبكة تلتقط أنماطاً زمنية محلية — كالحلقات أو التوقفات المفاجئة — ثم تضغطها تدريجياً حتى تحصل على ثابت الطول.

افتح في المختبر
الشبكتان تتشاركان الأوزان نفسها. كل واحدة تحوّل توقيعاً خاماً إلى متجه سمات، ثم يُحسب التشابه الجيب‌تماميّ بين المتجهين لتحديد ما إذا كان التوقيعان متطابقين.
تستيقظ التجربة عند وصولك…

فكّر في كل شبكة فرعية على أنها خط تجميع للضغط: تدخل إشارة زمنية خام ← تُكتشف أنماط محلية ← تُلخَّص تدريجياً ← يخرج متجه سمات مضغوط. الشبكة تتعلم بنفسها ما الذي يهم فعلاً — أنماط ضغط القلم، شكل تغيّر السرعة، تسلسل الانحناءات — وتتجاهل كالموضع الدقيق على اللوحة أو الفروق الطفيفة في حجم التوقيع.

المعالجة المسبقة: جعل التوقيعات قابلة للمقارنة

قبل أن يصل التوقيع إلى الشبكة، يمر بعدة خطوات هدفها إزالة الاختلافات التي لا تحمل معلومات مفيدة، مع الحفاظ على ما يميّز كل شخص:

  • تسوية الموضع: يُطرح الاتجاه الخطي من إحداثيات x(t) و y(t)، بحيث لا يؤثر المكان الذي بدأ فيه الشخص التوقيع على اللوحة.
  • تسوية الحجم: تُقسم القيم على الانحراف المعياري لـ y، وبهذا يبدو التوقيع الصغير والكبير لنفس الشخص متشابهَين.
  • إعادة التعيين الزمني: تُعاد عيّنة كل التوقيعات إلى 200 خطوة زمنية بالضبط بالاستيفاء الخطي، لأن الشبكة تحتاج مدخلات بطول ثابت. الفائدة هنا أن التوزيع الزمني يبقى محفوظاً — فالمزوّر الذي يكتب ببطء شديد أو بسرعة مبالغ فيها سيُكشف.
  • : تُحسب 8 سمات عند كل خطوة زمنية — حالة القلم (مرفوع أم لا)، الإحداثيات x وy، السرعة، التسارع الجاذب والمماسي، جيب تمام الاتجاه وجيبه. هذه السمات تجمع بين معلومات الشكل (لمنع من يقلّد الإيقاع فقط) والمعلومات الديناميكية (لكشف من ينسخ الشكل دون تقليد الحركة).
افتح في المختبر
بدّل بين العرض الخام والمعالَج لترى كيف تزيل التسوية التفاوتات غير المهمة.
تستيقظ التجربة عند وصولك…

قياس التشابه: زاوية جيب التمام

بعد أن تُخرج كل شبكة فرعية متجه سمات، تأتي خطوة المقارنة: تحسب الشبكة — أي جيب تمام الزاوية بين المتجهين. الناتج رقم واحد بين −1 و+1.

لماذا نستخدم جيب التمام بدلاً من ؟ لأن جيب التمام يهتم بـالاتجاه فقط ويتجاهل الطول. تخيّل أن شخصاً وقّع مرتين: مرة بضغط قلم خفيف ومرة بضغط قوي. متجها السمات سيختلفان في الطول لكنهما يشيران في الاتجاه ذاته، لأن نمط الكتابة واحد. هذا يجعل المقارنة متينة أمام اختلافات المقياس.

cos(θ)=abab=iaibiiai2  ibi2\cos(\theta) = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \, \|\mathbf{b}\|} = \frac{\sum_i a_i b_i}{\sqrt{\sum_i a_i^2}\;\sqrt{\sum_i b_i^2}}
التشابه الجيب‌تماميّ — مقياس المسافة المبني على الاتجاهa وb هما متجها السمات الناتجان عن الشبكتين · cos(θ) = 1 يعني أنهما يشيران في الاتجاه ذاته (توقيع حقيقي) · cos(θ) = −1 يعني اتجاهين متعاكسين (تزوير) · لاحظ أن المقدار ‖a‖ يُختصر، فلا يؤثر طول المتجه على النتيجة — الاتجاه وحده هو المهم
افتح في المختبر
اسحب المتجهين لترى كيف يتغير التشابه الجيب‌تماميّ مع الاتجاه. لاحظ أن الطول لا يؤثر.
تستيقظ التجربة عند وصولك…

التدريب: تعلُّم قياس التشابه

تدريب الشبكة السيامية يعتمد على تقديم أزواج من المدخلات مع تسمية لكل زوج: «متماثل» إن كان التوقيعان لنفس الشخص، أو «مختلف» إن كان أحدهما مزوّراً. الشبكة ترى الزوج كاملاً وتعدّل أوزانها المشتركة بحيث تُنتج الأزواج الحقيقية متجهات سمات بتشابه جيب‌تماميّ قريب من 1، وأزواج التزوير متجهات بتشابه قريب من −1.

المستخدمة في التدريب شملت 982 توقيعاً حقيقياً من 108 أشخاص، إضافة إلى 402 توقيعاً مزوّراً. ومن هذه التوقيعات بُنيت حتى 7,701 زوجاً: نصفها أزواج حقيقي–حقيقي، و40% أزواج حقيقي–مزوّر، والـ10% المتبقية أزواج حقيقي–عشوائي (أي توقيعات أشخاص آخرين تُستخدم لمحاكاة محاولات تزوير بدون جهد).

التدريب استخدم نسخة معدّلة من . القيد الجوهري هنا أن الشبكتين الفرعيتين يجب أن تُحدَّثا معاً بشكل متطابق لأنهما تتشاركان الأوزان نفسها. عملياً، هذا يعني حساب من كلا الفرعين ثم أخذ متوسّطها قبل تطبيق التحديث.

افتح في المختبر
شاهد كيف تدفع الشبكة الأزواج الحقيقية نحو بعضها وتبعد أزواج التزوير في فضاء التضمين.
تستيقظ التجربة عند وصولك…

التحقق: شبكة واحدة ومقارنة واحدة

عند الاستخدام الفعلي تتبسّط الأمور كثيراً: نحتاج شبكة فرعية واحدة فقط. في مرحلة التسجيل، يوقّع الشخص ست مرات، وكل توقيع يمر عبر الشبكة ليُنتج متجه سمات. هذه المتجهات الستة تُستخدم لبناء نموذج إحصائي يمثّل توقيع هذا الشخص — تحديداً طبيعي متعدد المتغيرات.

حين يأتي توقيع جديد، تحوّله الشبكة الفرعية إلى متجه سمات، ثم يُقارن هذا المتجه بالنموذج المخزّن. إن كان انتمائه إلى التوزيع الأصلي أعلى من عتبة معيّنة يُقبل التوقيع، وإلا يُرفض.

اللافت أن النموذج المخزّن بأكمله لا يتجاوز 38 بايت — بايت واحد لكل بُعد في متجه السمات. هذا أقل بكثير من سعة الـ80 بايت في الشريط المغناطيسي لبطاقة الائتمان، ويتبقى مساحة كافية لتحديث النموذج مع كل عملية تحقق ناجحة.

افتح في المختبر
تتبّع رحلة توقيع عبر مراحل التحقق الكاملة: معالجة مسبقة ← استخلاص السمات ← مقارنة بالقالب المخزّن ← قبول أو رفض.
تستيقظ التجربة عند وصولك…

الفكرة ذاتها في شيفرة برمجية

الشبكة السيامية مع التشابه الجيب‌تماميّ، تطبيق مبسّطpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import numpy as np

def cosine_similarity(a, b):
    """جيب تمام الزاوية بين متجهين."""
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

class SiameseNetwork:
    """شبكتان فرعيتان متطابقتان بأوزان مشتركة."""

    def __init__(self, sub_network):
        self.network = sub_network  # مجموعة أوزان واحدة تُستخدم مرتين

    def forward(self, sig_a, sig_b):
        """عالج كلا التوقيعين بالشبكة ذاتها."""
        feat_a = self.network(sig_a)  # متجه سمات التوقيع أ
        feat_b = self.network(sig_b)  # متجه سمات التوقيع ب
        return cosine_similarity(feat_a, feat_b)

    def verify(self, new_sig, stored_template):
        """عند التحقق: شغّل شبكة فرعية واحدة وقارن بالنموذج المخزّن."""
        feat = self.network(new_sig)
        return cosine_similarity(feat, stored_template)

# التدريب: الأزواج الحقيقية ← ادفع جيب التمام نحو +1
#         أزواج التزوير  ← ادفع جيب التمام نحو -1
# التحديث التراجعي يعدّل مجموعة أوزان مشتركة واحدة.
# عند النشر، تعمل التمريرة الأمامية لشبكة فرعية واحدة فقط.

النتائج والأداء العملي

أفضل بنية (البنية 1 مع بيانات منقّحة) حققت قبولاً صحيحاً بنسبة 95.5% من التوقيعات الحقيقية، مع كشف 80% من التزويرات. وحين استُبعدت التوقيعات الأولى — لأن المشاركين احتاجوا بضع محاولات للتأقلم مع اللوحة — ارتفعت النسبة إلى 97.0%.

متجه السمات ذو الـ38 بُعداً أمكن تخزينه في 38 بايت فقط (بايت لكل قيمة) دون أي تراجع في الأداء، وهذا يقع ضمن حد الـ80 بايت للشريط المغناطيسي مع بقاء مساحة فائضة. بل إن النموذج كان قابلاً للتحديث مع كل استخدام ناجح، فيزداد دقةً بمرور الوقت.

أغلب الأخطاء جاءت من موقّعين غير منتظمين — يحذفون حروفاً أحياناً أو يضيفون خطوطاً — ومن مسارات رفع القلم (حركة القلم وهو في الهواء فوق اللوحة)، التي ثبت أنها صعبة التقليد وصعبة التكرار في آنٍ واحد.

لماذا غيَّرت كل شيء: ولادة التعلم المتري

هذه الورقة أسّست لثلاث أفكار أصبحت ركائز دائمة في :

  • مشاركة الأوزان بين الشبكتين التوأم — وهي الضمانة التي تجعل عملية استخلاص السمات متناظرة ومتّسقة. هذا المبدأ نجده اليوم في كل إطار تعلّم تبايُني.
  • تعلّم بدلاً من التسميات — تدريب الشبكة على إنتاج تمثيلات تكون فيها المسافة ذات معنى، بدلاً من إخراج احتمالات الفئات. هذا هو الأساس الذي تقوم عليه كل نماذج التضمين الحديثة.
  • التشابه الجيب‌تماميّ كمقياس قابل للتدريب — استخدام المسافة الزاوية كهدف قابل للاشتقاق يستطيع التحديث التراجعي تحسينه. لاحقاً عُمِّمت الفكرة إلى المسافة الإقليدية (عبر ) ثم إلى خسارة الثلاثيّات.
  1. 1993

    الشبكات السيامية (هذه الورقة)

    أول من قدّم بنية سيامية بأوزان مشتركة واستخدم التشابه الجيب‌تماميّ للتحقق من التوقيعات. أسّست لمبدأ «تعلّم كيف تقارن» في الشبكات العصبية.

  2. 2005

    الخسارة التبايُنية (Chopra, Hadsell, LeCun)

    صاغت دالة الخسارة التبايُنية رسمياً وأضافت لها معامل هامش، ووسّعت نطاق الشبكات السيامية لتعمل بالمسافة الإقليدية وتتيح اختزال الأبعاد.

  3. 2015

    FaceNet — خسارة الثلاثيّات

    انتقلت من المقارنة بين زوجين إلى ثلاثيّات (مرساة، مثال إيجابي، مثال سلبي)، وحقّقت دقة تضاهي الإنسان في التحقق من الوجوه. امتداد مباشر للفكرة السيامية.

  4. 2019

    Sentence-BERT

    استخدمت مرمِّزات BERT سيامية لإنتاج تضمينات جمل مُحسَّنة للتشابه الدلالي — الفكرة السيامية تنتقل من الرؤية إلى اللغة.

  5. 2020

    SimCLR — التعلم البصري التبايُني

    بسّط التعلم التبايُني في مجال الرؤية: أنشئ نسختين معدّلتين من الصورة نفسها، قرّبهما في فضاء التمثيل، وأبعد الصور المختلفة. الفكرة السيامية على نطاق واسع.

  6. 2021

    SimSiam — بلا أزواج سلبية

    أثبتت أن الشبكات السيامية قادرة على التعلّم بدون أزواج سلبية على الإطلاق، بفضل حيلة إيقاف التدرّج. اختزلت التعلّم الذاتي الإشراف إلى أبسط صوره.

من خطوط قلم على لوحة رقمية عام 1993 إلى نماذج بمليارات تتحقق من الوجوه وتقارن الجمل وتبني تمثيلات بصرية — الفكرة الجوهرية واحدة لم تتغيّر: مرّر مدخلَين عبر شبكتين متطابقتين، قِس المسافة بين مخرجاتهما، ودع التحديث التراجعي يتعلّم بنفسه ما يعنيه «التشابه».

المرجعBromley, Bentz, Bottou, Guyon, LeCun, Moore, Säckinger, Shah. Signature Verification Using a "Siamese" Time Delay Neural Network. NIPS, 1993.

مصطلحات هذه الورقة