قص التدرج يغير مشتقات الخسارة قبل استعمالها في التحديث. يميز تنفيذ PyTorch بين تقييد معيار التدرجات مجتمعة وتقييد قيمة كل عنصر. [1]
الخلاصة السريعة
حد معيار التدرج وحد قيمة العنصر مختلفان: الأول يصغر المتجه بمعامل مشترك، والثاني يحصر كل عنصر بين حدين. [1]
- نتعامل مع مشتقات الخسارة بالنسبة إلى المعاملات، لا مع قص قيم خصائص البيانات أو المعاملات نفسها.
- لتدرج مفترض (6، 8) معياره الإقليدي 10، يعطي القص المثالي عند معيار 5 المتجه (3، 4)، مع تجاهل إضافة التثبيت الصغيرة في التنفيذ.
- قص كل عنصر عند موجب أو سالب 5 يعطي (5، 5)، ومعياره جذر 50، أكبر من 5؛ لم نضع حدًا للمعيار بهذه القاعدة.
- مع نزول بسيط ومعدل 0.2، يقابل معيار تدرج لا يتجاوز 5 معيار حركة لا يتجاوز 1؛ لا نعمم ذلك على كل محسن أو صحة التدريب.
أي أرقام نقُص؟
الأرقام في المثال هي مشتقات خسارة بالنسبة إلى معاملين. سنغير التدرج الذي يدخل قاعدة التحديث، لا قيم الأمثلة التي دخلت النموذج. كذلك لا نطلب أن تبقى المعاملات بين موجب 5 وسالب 5؛ تلك مهمة مختلفة عن تقييد مشتقاتها.
يمثل تنفيذ معيار القص تدرجات المعاملات مجتمعة كأنها متجه واحد عند حساب المعيار، ثم يضربها بمعامل قص مشترك. أما قص القيم فيعمل عنصرًا عنصرًا بين الحدين. [1] قبل المقارنة، سجل نوع الحد والمعيار المستخدم، فلا يكفي اسم «قص» وحده.
احسب قص المعيار المثالي
اختر التدرج المفترض g = (6، 8). معياره الإقليدي يساوي جذر (36 + 64)، أي 10. نضع حدًا مقداره 5، فيكون عامل التصغير المثالي 5 ÷ 10 = 0.5. بضرب العنصرين نحصل على (3، 4)، ومعياره 5.
النسبة بين العنصرين بقيت 6 ÷ 8 = 3 ÷ 4، لذلك بقي الاتجاه في هذا الحساب. التدرج الأصغر من الحد لا يحتاج إلى تكبير للوصول إليه؛ الحد سقف لا معيار مطلوب لكل حالة.
يضيف الكود المقروء مقدارًا 1e−6 إلى مقام عامل القص، ويقيد العامل بألا يتجاوز 1. [1] حسابنا المثالي يتجاهل هذه الإضافة صراحة؛ لا نقدمه بوصفه أرقام خرج دقيقة من تشغيل الدالة. العامل الفعلي لهذا المثال قريب من 0.5 وليس مساويًا له حرفيًا.
قارن ذلك بقص العنصر
نطبق قاعدة أخرى: أي عنصر أكبر من 5 يصبح 5، وأي عنصر أصغر من سالب 5 يصبح سالب 5، وما بينهما يبقى كما هو. يتحول (6، 8) إلى (5، 5). لم نستخدم عاملًا واحدًا يحافظ على النسبة؛ أصبحت النسبة 1.
المعيار الجديد يساوي جذر (25 + 25)، أي نحو 7.071. كِبره على 5 لا يخالف قاعدة قص العناصر؛ القاعدة لم تعد بحد كلي للمتجه. عند فحص سجل تدريب، لا تقرأ حد العنصر كما لو كان حدًا للمعيار.
ما الذي يحده القص في الحركة؟
في نزول بسيط بلا حالة أخرى، تساوي الحركة سالب معدل التعلم مضروبًا في التدرج. لو كان المعدل 0.2 ومعيار التدرج بعد القص لا يتجاوز 5، فإن معيار الحركة لا يتجاوز 1. نستنتج ذلك من ضرب المتجه في عدد ثابت فقط.
أما المحسن الذي يجمع تاريخًا أو يعيد وزن المكونات، فيحتاج حساب قاعدته قبل وصف حد الحركة. ولا يثبت تقييد التدرج أن اتجاهه مناسب أو أن الخسارة ستنقص. مثالنا يقارن تحويلين معلومين؛ لم نشغل شبكة، ولم نقس علاجًا لانفجار التدرجات.
المصادر ومتابعة القراءة
- PyTorch v2.9.0: clip_grad.py (يفتح في نافذة جديدة)raw.githubusercontent.com
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
