تقنية

تقليم وزن مفرد: هل الصفر يصغر شكل المصفوفة؟

تصفير موضع واحد من ستة في مصفوفة مؤلفة يبقي شكلها صفين وثلاثة أعمدة ويخفض عدد غير الأصفار إلى خمسة
رسم حسابي من إعداد بحر العلوم؛ لا وزن قيس على شبكة.

قناع تقليم الوزن وشكل المصفوفة شيئان نحتاج إلى فحصهما منفصلين. وضع صفر في موضع وزن لا يحذف وحده الموضع من مصفوفة مؤلفة. نشرح ذلك بقناع يدوي ونربطه بآلية التقليم التي يعرضها دليل PyTorch.

الخلاصة السريعة

عد الأوزان غير الصفرية وافحص الأبعاد مستقلين؛ تصفير عنصر بقناع لا يعني أن عدد صفوف الطبقة أو أعمدتها نقص.

  • يحفظ مثال PyTorch الوزن الأصلي في weight_orig والقناع في weight_mask، ويحسب منهما الوزن المقلم. [1] لا نساوي الأصل بالقناع.
  • في مصفوفتنا ذات صفين وثلاثة أعمدة نصفر عنصر الصف الأول والعمود الثاني؛ ينقص عدد غير الأصفار من ستة إلى خمسة، وتبقى الأبعاد نفسها.
  • مع مدخل من ثلاث قيم كلها واحد ودون ثابت مضاف، يتغير الخرج من 6 و 15 إلى 4 و 15؛ اختيار القناع هنا معلن، وليس دليلًا على أن الوزن غير مهم.
  • في المثال الموثق يجعل remove التقليم دائمًا ولا يلغيه. [1] افحص الأثر الفعلي؛ عدد الأصفار لا يحدد وحده زمن التنفيذ أو حجم الملف.

أي دور للأصل والقناع؟

يبقي دليل PyTorch الوزن غير المقلم باسم weight_orig ويحفظ قناع التقليم باسم weight_mask، ثم يجمعهما لحساب weight المقلم. [1]

نستعمل كلمة «قناع» لجدول يحدد أي موضع نتركه وأي موضع نصفره. في تمريننا قيمة واحد تحفظ العنصر، وصفر يصفره بالضرب. ليست هذه تسميات لمدخلات النموذج ولا لصفوف أمثلة التدريب.

ونفصل بين تصفير وزن واختصار تدرج في خطوة محسن، أو إزالة فرع شجرة قرار. سؤال المصفوفة هنا عن اتصال في حساب طبقة خطية، لا عن نوع آخر يحمل اسم تقليم أو قص.

هل تغير عدد الصفوف أو الأعمدة؟

نكتب مصفوفة لها صف أول قيمه 1 و 2 و 3، وصف ثان قيمه 4 و 5 و 6. لها ستة عناصر غير صفرية، وصفان وثلاثة أعمدة. ونختار قناعًا صفه الأول 1 و صفر و 1، وصفه الثاني ثلاث قيم كلها واحد.

بعد الضرب موضعًا بموضع يصبح الصف الأول 1 و صفر و 3، ويبقى الثاني 4 و 5 و 6. عدد العناصر غير الصفرية خمسة، لكن عنصر الصفر ما زال في الصف الأول والعمود الثاني؛ لم نحذف العمود.

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

ماذا تغير في الحساب المختار؟

نختار مدخلًا من ثلاث قيم كلها واحد، ولا نضيف ثابتًا. قبل القناع يكون خرج الصف الأول 1 + 2 + 3 = 6، والثاني 4 + 5 + 6 = 15. بعده يصبح الأول 1 + صفر + 3 = 4، ويبقى الثاني 15.

اختيار تصفير 2 من عندنا لسهولة الفحص. لا ندعي أنه أصغر وزن أو الأقل أهمية في شبكة، ولا أن تغير الخرج من 6 إلى 4 مقبول للمهمة. لم نقدم هدفًا أو حقيقة مرجعية نحسب بها جودة هذا التغير.

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

هل remove يعيد العدد الذي صفرناه؟

يوضح دليل PyTorch أن remove يزيل إعادة تمثيل الوزن بالأصل والقناع ويجعل الوزن المقلم دائمًا؛ لا يعكس التقليم. [1]

لذلك لا نكتب في بطاقة مراجعة فعلية «استعدنا الأوزان» لمجرد ظهور كلمة إزالة في اسم إجراء. نراجع ماذا أزيل وما الأثر الذي بقي. وفي تمريننا لا توجد عملية مكتبة شغلناها أو ملف حفظناه.

يضع الرسم الأصل وقناع الموضع والمصفوفة الناتجة ثم عد غير الأصفار بجانب شكلها. النتيجة المحددة هي تصفير عنصر مع بقاء صفين وثلاثة أعمدة. ادعاء سرعة أو دقة أو حجم ملف يتطلب دليلًا منفصلًا لم نقدمه.

المصادر ومتابعة القراءة

  1. PyTorch: Pruning Tutorial (يفتح في نافذة جديدة)docs.pytorch.org

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