محوّلات الرؤية
درس 5 من 7
5محوّلات الرؤية
الصورة الكبيرةمحوّل الرؤية يقطّع الصورة إلى رقع صغيرة، ويعامل كل رقعة ككلمة في جملة، ثم يطبّق نفس آلية الانتباه التي ستتعلّمها في مسار اللغة. بلا افتراضات عن الصور، فيحتاج بيانات أكثر بكثير من الالتفاف، لكنه يتفوّق عندما تتوفّر.
ماذا تشاهد في الرسم: الصورة تصير جملة: كل رقعة 16 × 16 كلمة من 768 رقمًا، والرقم تحتها موضعها. بدون ترميز الموضع لا يعرف الانتباه أي رقعة في الأعلى وأيها في الأسفل.
خارطة هذا الجزء
المفاهيم بالترتيب، اضغط أيًّا منها للقفز إليه:
طريقان إلى نفس الفكرة
محوّل الرؤية يقصّ الصورة إلى مربعات صغيرة مثل قطع الأحجية، ثم يعامل كل قطعة ككلمة في جملة، ويجعل القطع تتشاور فيما بينها. هو قوي جدًا حين تملك صورًا كثيرة جدًا، لكن مع صور قليلة يتفوق عليه الالتفاف غالبًا.
ViT يقسم الصورة إلى رقع 16×16 ويضمّن كل رقعة خطيًا ويضيف ترميز الموضع ورمز [CLS]، ثم كتل محوّل عادية. يفتقد الانحياز المسبق للالتفاف نحو المحلية، فيحتاج بيانات أكثر أو تدريبًا مسبقًا كبيرًا.
قبل أن تبدأ
🔲الالتفاف
تعرف افتراضَي الالتفاف: الأنماط محلية، والنمط نفسه مهم في كل مكان، فستقارن ViT بهما.
🧊الموتر
تتابع reshape و transpose على الأبعاد، فالتقطيع إلى رقع كله إعادة تشكيل.
الفكرة الجوهرية
محوّل الرؤية يقرأ الصورة كأنها جملة. تقطّع هنا الصورة إلى رقع، ثم ترى الانتباه بين الرقع، ثم تفهم لماذا يحتاج بيانات أكثر، ثم ثمن الدقة العالية.
1الرقع كلمات
نقطّع الصورة 224 في 224 إلى رقع 16 في 16، فنحصل على 14 × 14 = 196 رقعة. كل رقعة 16 × 16 × 3 = 768 رقمًا تُسطَّح في متّجه.
انظر إلى الرسم: الصورة صارت جملة من 196 كلمة، ثم نضيف رمز تصنيف خاصًا.
import numpy as np
image = np.arange(3 * 224 * 224, dtype=np.float32).reshape(3, 224, 224)
p = 16
c, h, w = image.shape
patches = image.reshape(c, h // p, p, w // p, p).transpose(1, 3, 0, 2, 4).reshape(-1, c * p * p)
print("patches:", patches.shape)
print("tokens per image:", patches.shape[0], "+ 1 class token =", patches.shape[0] + 1)
print("attention pairs per layer:", (patches.shape[0] + 1) ** 2)
reshape يقسم كل بعد مكاني إلى (عدد الرقع، حجم الرقعة)، وtranspose يجمع أبعاد الرقعة معًا، وreshape الأخير يسطّح كل رقعة. نتيجة 196 متجهًا بطول 768، ثم تضيف النماذج رمزًا خاصًا للتصنيف فيصير العدد 197.
كل متّجه يمرّ بطبقة خطية، ثم يأخذ ترميز موضع. بدونه لا يعرف النموذج أي رقعة في الأعلى وأيها في الأسفل، لأن الانتباه يتجاهل الترتيب.
ورمز التصنيف متّجه إضافي متعلَّم يجمع المعلومات من كل الرقع، ومنه يخرج التوقّع النهائي.
2الانتباه بين الرقع
كل رقعة تقرّر أي الرقع الأخرى تهمّها، حتى البعيدة جدًا، من الطبقة الأولى. الالتفاف يحتاج طبقات كثيرة ليربط طرفي الصورة.
انظر إلى الرسم: كل صف رقعة واحدة، وكل خانة وزن انتباهها لرقعة أخرى. أوزان الصف مجموعها 1.
خمس رقع وهمية بمتجهات عشوائية. هذا هو الحساب الأساسي للانتباه الذي ستفصّله في مسار اللغة: درجة تشابه بين كل زوج، ثم softmax لتصير أوزانًا مجموعها واحد.
import numpy as np
rng = np.random.default_rng(0)
tokens = rng.normal(size=(5, 8))
Wq, Wk = rng.normal(size=(8, 8)), rng.normal(size=(8, 8))
scores = (tokens @ Wq) @ (tokens @ Wk).T / np.sqrt(8)
weights = np.exp(scores - scores.max(axis=1, keepdims=True))
weights /= weights.sum(axis=1, keepdims=True)
print("patch 0 attends to:", weights[0].round(2))
print("rows sum to 1:", np.allclose(weights.sum(axis=1), 1))
الرقعة الأولى وزّعت 89% من انتباهها على الرقعة الثالثة. في نموذج مدرّب، هذه الأوزان تعني شيئًا: رقعة على أذن قطة تنتبه لرقعة على عينها، حتى لو كانت بعيدة. وهنا الأوزان عشوائية لأن المصفوفات Wq وWk لم تتدرّب.
3لماذا يحتاج بيانات أكثر
الالتفاف يعرف مسبقًا أن البكسلات المتجاورة مترابطة، وأن النمط مهم أينما ظهر. المحوّل لا يفترض شيئًا، فيتعلّم ذلك من البيانات.
انظر إلى الرسم: الشكل العام فقط. مع بيانات قليلة يتقدّم الالتفاف، ومع بيانات ضخمة أو نموذج مدرّب مسبقًا يلحق به المحوّل أو يتجاوزه.
4ثمن الدقة العالية
عدد الرقع ينمو مع مربّع حجم الصورة، والانتباه ينمو مع مربّع عدد الرقع. لذلك مضاعفة الحجم تضرب التكلفة في نحو 16.
انظر إلى الرسم: عدد الرموز وحده يقفز بسرعة، والأزواج أسرع منه بكثير.
for size, patch in [(224, 16), (224, 32), (384, 16), (512, 16)]:
tokens = (size // patch) ** 2 + 1
print(f"{size}px / patch {patch:2}: {tokens:5} tokens, {tokens ** 2:>11,} attention pairs")
من 224 إلى 512 بكسل: الرمز من 197 إلى 1025، وأزواج الانتباه من 39 ألفًا إلى أكثر من مليون، أي 27 ضعفًا. لهذا تبدأ أغلب محوّلات الرؤية بدقة منخفضة، وتستخدم حيلًا مثل النوافذ المحلية في Swin عندما تحتاج دقة عالية.
كيف يعمل، خطوة بخطوة: كيف يقرأ محوّل الرؤية صورة
قطّع الصورة 224 × 224 إلى رقع 16 × 16، فتحصل على 14 × 14 = 196 رقعة.
سطّح كل رقعة إلى 768 رقمًا وحوّلها بطبقة خطية إلى متجه، وأضف لها ترميز موضعها.
أضف رمز التصنيف في البداية فيصير التسلسل 197، ومرّره في كتل محوّل عادية.
في كل كتلة تقرّر كل رقعة أي الرقع تهمّها، ثم يخرج التنبّؤ من رمز التصنيف.
مثال محلول
صورة 224 في 224 بقطع 16 في 16 تعطي 14 × 14 = 196 رقعة. كل رقعة 16 في 16 في 3 قنوات، أي 768 رقمًا، تُسطَّح إلى متجه. الصورة صارت «جملة» من 196 «كلمة».
جرّب بلا كود
خرافة مقابل حقيقة
| الخرافة | الحقيقة |
|---|---|
| المحوّلات لا تعمل للرؤية، فالشبكة الالتفافية تفوز عليها. | من الصفر على بضعة آلاف صورة تفوز الشبكة الالتفافية غالبًا. المقارنة العادلة: ViT مدرّب مسبقًا مقابل شبكة مدرّبة مسبقًا، كلاهما مضبوط على بياناتك. |
| رقع أصغر أفضل دائمًا لأنها تلتقط تفاصيل أدقّ. | عدد الرقع ينمو بمربّع نسبة التصغير والانتباه بمربّع عدد الرقع. رقع 16 بدل 32 على صورة 224 تعني 197 رمزًا بدل 50. |
| الانتباه يعرف ترتيب الرقع بنفسه. | الانتباه عملية على مجموعة: رقع مخلوطة تعطي نفس النتائج بترتيب آخر. الموضع يأتي من ترميز الموضع فقط. |
جرّب بنفسك
صورة 256 في 256 بقطع 16 في 16. كم رقعة؟
256 / 16 = 16 في كل اتجاه، فـ16 × 16 = 256 رقعة، وكل رقعة 16 × 16 × 3 = 768 رقمًا.
عندك 3000 صورة منتجات، ولا يوجد نموذج مدرّب مسبقًا مسموح. أي معمارية تبدأ بها؟
افتراضات الالتفاف (المحلية ومشاركة الأوزان) تعوّض قلة البيانات. ViT من الصفر على 3000 صورة سيحفظ أكثر مما يتعلّم. والشبكة الخطية ستحتاج ملايين المعاملات بلا أي فهم للمكان.
بطاقات مراجعة سريعة
تحقق من فهمك
لماذا يحتاج ViT ترميز موضع، بينما الشبكة الالتفافية لا تحتاجه؟
لأن الانتباه عملية على مجموعة: يحسب التشابه بين كل زوج من الرقع، ولو بدّلت ترتيب الرقع لحصلت على نفس النتائج بترتيب مختلف. فبلا ترميز موضع، صورة مقطّعة ومخلوطة تساوي الأصلية. الالتفاف يعرف الموضع ضمنًا لأن المرشّح ينزلق على شبكة البكسلات بترتيبها، فالجار جار دائمًا.
رفعت الدقة من 224 إلى 512 بكسل برقع 16. لماذا زادت التكلفة نحو 27 مرة؟
لأن الرموز صارت 1025 بدل 197، والانتباه يقارن كل زوج، فأزواج الانتباه صارت أكثر من مليون بدل 39 ألفًا تقريبًا.
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
توثيق رسمي1
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.