Model Zero
The Null Hypothesis
→ العودة إلى المقالات

الرياضيات

قراءة معمقة في L1

من القيم المطلقة إلى الحلول المتناثرة: هندسة تنظيم L1 وتحسينه ومفاضلاته.

كلمات مفتاحية: تنظيم L1 · Lasso · التحسين المتناثر · الهندسة المحدبة · الاستشعار المضغوط · التغير الكلي

A sparse vector meets the diamond-shaped L1 constraint, with optimization paths converging on its boundary.
في هذا المقال

طائر يحاول بناء عشه

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

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

ما هو L1L_{1}؟

لنفترض أن لدينا ثلاثة أرقام: 3، −4، 2، ولنضعها في متجه ونسميه w. يمكن لهذا المتجه أن يشير هندسيا إلى اتجاه أو إزاحة، وقد تكون أرقامه أوزانا يتعلم منها نموذج، لكن السؤال الآن أبسط: ما حجم هذه الأرقام مجتمعة؟

نحتاج إلى معيار يعبر عن مقدار المتجه، ومعيار L1L_{1} يفعل ذلك بجمع القيمة المطلقة لكل رقم؛ أي نجرده من إشارته ثم نجمع المقادير. الرمز j يحدد موضع الرقم، وd هو عدد الأرقام، ولذلك يكون حجم متجهنا بهذا المعيار 9.

يمكنك تشغيل الأكواد بالترتيب؛ أولها يستورد NumPy، وسنعرّف بقية الأدوات عند الحاجة إليها.

w=(w1,…,wd),∥w∥1=∑j=1d∣wj∣,∥(3,−4,2)∥1=9. w=(w_1,\ldots,w_d),\qquad \|w\|_1=\sum_{j=1}^{d}|w_j|,\qquad \|(3,-4,2)\|_1=9.
كيف نقرأ هذه المعادلة بالتفصيل؟

ماذا تجمع العلامة؟

المتجه w قائمة مرتبة من الأرقام، وwⱼ هو الرقم الموجود في الموضع j. العدد d يخبرنا كم موضعا لدينا، وعلامة Σ\Sigma تقول: كرر العملية من الموضع الأول حتى الأخير، ثم اجمع النتائج.

أما الشرطان حول الرقم في |wⱼ| فيأخذان مقداره دون إشارته. والشرطان المزدوجان في ‖w‖₁ يحيطان بالمتجه كله ليقيسا حجمه بمعيار L1L_{1}، لا ليأخذا القيمة المطلقة لرقم واحد.

نجرد الأرقام من إشاراتها

للمتجه (3,−4,2)(3, -4, 2) نحصل أولا على المقادير (3,4,2)(3, 4, 2)، ثم نجمع 3+4+2=9. لو جمعنا الأرقام الأصلية مباشرة لحصلنا على 1 بسبب الإشارات، وهو سؤال مختلف.

تستطيع تغيير ترتيب الأرقام أو إشاراتها ويبقى L1L_{1} نفسه؛ لكن مضاعفتها جميعا تضاعف هذا المقدار.

القياس لا يختار وحده

هذه المعادلة تصف قياسا لمتجه موجود بالفعل. لا تجعل −4 صفرا، ولا تختار أي عنصر نحذفه.

سيبدأ تأثير التنظيم حين تصبح هذه الكمية تكلفة ندفعها أثناء البحث عن متجه جديد.

python

نادي المعايير

السبب وراء استخدام القيمة المطلقة يظهر إذا أخذنا المتجه (100,−100)(100, -100): الجمع العادي يعطي صفرا، مع أن الرقمين كبيران، بينما L1L_{1} يعطي 200. ودوما يحتاج الرياضيون إلى شروط ليقبلوا أحدا في نادي المعايير: ألا يكون القياس سالبا، وألا يساوي صفرا إلا للمتجه الصفري، وأن يتغير بمقدار |c| عند ضرب المتجه في c، وأن يحقق متباينة المثلث.

هذه الأخيرة تقول إن جمع متجهين لا يجعل المقدار أكبر من مجموع مقداريهما، كما أن الطريق المباشر لا يكون أطول من طريق يمر بنقطة وسيطة إذا قسنا الطريقين بالمعيار نفسه. ولنصحح مثال الضرب: إذا كان w=(3,−2)(3, -2)، فإن 2w=(6,−4)(6, -4) ومعياره 10، وهو ضعف 5.

∥w∥1≥0,∥w∥1=0  ⟺  w=0,∥cw∥1=∣c∣∥w∥1,∥u+v∥1≤∥u∥1+∥v∥1. \|w\|_1\ge0,\quad \|w\|_1=0\iff w=0,\quad \|cw\|_1=|c|\|w\|_1,\quad \|u+v\|_1\le\|u\|_1+\|v\|_1.
كيف نقرأ هذه المعادلة بالتفصيل؟

شروط الدخول إلى النادي

الشروط الأربعة تعني أن المقدار غير سالب، وأن صفرا لا يخفي متجها غير صفري، وأن تغيير الحجم بمعامل c يغير القياس بمعامل |c|، وأن الجمع يحقق متباينة المثلث. الرمز ⇔ يعني أن العبارتين تستلزمان بعضهما: المتجه الصفري معياره صفر، والمعيار الصفري لا يأتي إلا من المتجه الصفري.

لماذا تظهر القيمة المطلقة؟

إذا كان c سالبا فقد تغير اتجاه المتجه، لكن حجمه لا يصبح سالبا؛ لهذا نستعمل |c|. مثلا w=(3,−2)(3, -2) معياره 5، و−2w=(−6,4)(-6, 4) معياره 10.

ويمكن إثبات التجانس لكل عنصر من |cwⱼ|=|c||wⱼ|، ثم إخراج |c| من الجمع.

الطريق المباشر والطريق المركب

من |uⱼ+vⱼ|≤|uⱼ|+|vⱼ| نجمع على المواضع فنحصل على متباينة المثلث للمتجهين. خذ u=(2,−1)(2, -1) وv=(−1,3)(-1, 3): مجموعهما (1,2)(1, 2) معياره 3، بينما مجموع المعيارين 3+4=7.

المتباينة تسمح بالمساواة أيضا؛ لا تقول إن الجمع أصغر دائما.

python

من الشوارع إلى الأشكال

هندسيا، يقيس L1L_{1} مسافة مانهاتن؛ لكي ننتقل من (0,0)(0, 0) إلى (3,2)(3, 2) عبر شوارع أفقية ورأسية نقطع 5 وحدات، بينما الخط المستقيم طوله 13\sqrt{13}. وإذا جمعنا كل النقاط التي لا يتجاوز معيارها الواحد، ظهر شكل معين في L1L_{1}، ودائرة في L2L_{2}، ومربع في L∞L_{\infty}.

هذه الأشكال ليست زخرفة، لأن حدودها ستحدد لاحقا أين يمكن أن يستقر الحل. ومع ذلك، مجرد حساب المعيار لا يغير أي نموذج؛ التنظيم يبدأ حين نجعل لهذا المقدار تكلفة داخل مسألة التحسين.

L1L_1

w₁w₂

∣w1∣+∣w2∣≤t\lvert w_1\rvert + \lvert w_2\rvert \le t

L2L_2

w₁w₂

w12+w22≤t\sqrt{w_1^2 + w_2^2} \le t

L∞L_\infty

w₁w₂

max⁡(∣w1∣,∣w2∣)≤t\max(\lvert w_1\rvert, \lvert w_2\rvert) \le t

الشكل 1: كرات المعايير. عند ميزانية مشتركة t، تأخذ كرات L₁ وL₂ وL∞ أشكال المعين والقرص والمربع، على الترتيب.

python

العائلة وابن عمها البعيد

بطل القصة ينتمي إلى عائلة أوسع؛ عندما p≥1p\ge 1 نجمع القوى p للمقادير ثم نأخذ الجذر من الرتبة نفسها. عند p=1p=1 نحصل على L1L_{1}، وعند p=2p=2 على الطول الإقليدي، وعندما تكبر p بلا حد نحصل على أكبر مقدار منفرد.

أما ابن عمه البعيد L0L_{0} فيعد الأرقام غير الصفرية، ولذلك لا يحقق التجانس المطلوب من معيار حقيقي: مضاعفة الأرقام لا تضاعف عددها. للمتجه (3,4,0)(3, 4, 0) تكون القيم بالترتيب L0=2L_{0}=2 وL1=7L_{1}=7 وL2=5L_{2}=5 وL∞=4L_{\infty}=4.

كل واحد يجيب عن سؤال مختلف؛ ولهذا يمكن أن يكون لمتجهين معيار L1L_{1} نفسه مع اختلاف عدد العناصر المستخدمة تماما.

∥w∥p=(∑j=1d∣wj∣p)1/p,∥w∥∞=max⁡j∣wj∣,∥w∥0=#{j:wj≠0}. \|w\|_p=\left(\sum_{j=1}^{d}|w_j|^p\right)^{1/p},\qquad \|w\|_\infty=\max_j|w_j|,\qquad \|w\|_0=\#\{j:w_j\ne0\}.
كيف نقرأ هذه المعادلة بالتفصيل؟

أي سؤال يجيب عنه p؟

العدد p يحدد كيف نجمع المقادير: نرفع كل مقدار إلى القوة p، ونجمع، ثم نأخذ الجذر p. عند p=1p=1 لا يتغير شيء، وعند p=2p=2 نحصل على الجذر التربيعي لمجموع المربعات.

نشترط p≥1p\ge 1 حتى تكون هذه الصيغة معيارا؛ لا نحصل على L0L_{0} بوضع p=0p=0 في الجذر المكتوب.

من الجمع إلى أكبر عنصر

عندما تكبر p تصبح المقادير الأكبر أكثر سيطرة. ضع m=max⁡∣wj∣m=\max |w_j|؛ عندئذ يقع معيار p بين m وd1/pd^{1/p}m.

ومع اقتراب p من اللانهاية يقترب العامل d1/pd^{1/p} من 1، فيلتقي الحدان عند m. لهذا يقيس L∞L_{\infty} أكبر مقدار منفرد.

ابن العم الذي يعد

العلامة # تعد عناصر المجموعة التي تحقق wj≠0w_{j}\ne 0. للمتجه (3,4,0)(3, 4, 0) تعد عنصرين، بينما L1=7L_{1}=7 وL2=5L_{2}=5 وL∞=4L_{\infty}=4.

ومضاعفة المتجه تحفظ العدد 2 بدلا من مضاعفته، وهذا يفسر لماذا لا يكون L0L_{0} معيارا رغم الاسم المتداول.

python

من أين بدأت القصة؟

ومن هنا قد نسأل: من صنع L1L_{1}؟ ليست للقيمة المطلقة بداية واحدة يمكن إسنادها إلى مخترع، فتاريخ تقدير الانحرافات المطلقة أقدم من تعلم الآلة، وتطور فضاءات LpL_{p} قصة رياضية أخرى.

ما نستطيع نسبته بوضوح هو الطرق المحددة: قدم Hoerl وKennard انحدار Ridge سنة 1970 لمعالجة عدم استقرار المعاملات، ودرس Williams سنة 1995 التنظيم والتقليم بافتراض Laplace في الشبكات العصبية، ثم قدم Tibshirani سنة 1996 Lasso الذي جمع تقليص معاملات الانحدار واختيار المتغيرات. وفي 1998 ظهرت صياغة Basis Pursuit لدى Chen وDonoho وSaunders، ثم Elastic Net سنة 2005 والنتائج الأساسية للاستشعار المضغوط سنة 2006.

كل محطة أضافت سؤالا، ولم تلغ ما قبلها.

كم غصنا نحتاج؟

لنعُد إلى الطائر: الاختيار يتعلق بعدد الأغصان، لا بمجموع أطوالها وحده. نسمي المتجه متناثرا إذا كانت أغلب عناصره صفرا، ونسمي مواضع العناصر الباقية دعمه S(w).

المتجه (0,4,0,−2,0,0)(0, 4, 0, -2, 0, 0) دعمه {2، 4} وعدده L0L_{0} يساوي 2. لو أردنا أن ندفع تكلفة ثابتة لكل عنصر نحتفظ به، أمكننا إضافة λL0\lambda L_{0} إلى خطأ الملاءمة F، لكن البحث بين مجموعات المتغيرات قد يكون صعبا لأن d مواضع تسمح بـ2d2^{d} مجموعات.

وفي المثال العددي ذي العنصر الواحد نقارن تكلفة الصفر a2/2a^{2}/2 بتكلفة إبقاء a وهي λ\lambda؛ نختار الصفر إذا كانت الأولى أصغر، ونبقي a كما هو إذا كانت الثانية أصغر، وعند التساوي يصلح الاثنان. أما وجود عناصر كثيرة صغيرة فلا يعني أن المتجه متناثر فعليا، وإن كان قابلا لتقريب متناثر جيد.

L1L_1

∑i∣wi∣\sum_i |w_i|
0.6

يتغير مع حجم المعامل

L0L_0

# عناصر غير صفرية
1

يتغير عند الصفر فقط

(1,  0,  0,  0)\left(1,\;0,\;0,\;0\right)L0=1L_0 = 1
(0.25,  0.25,  0.25,  0.25)\left(0.25,\;0.25,\;0.25,\;0.25\right)L0=4L_0 = 4

الشكل 2: المقدار والدعم. يتتبع L₁ مقدار المعاملات، بينما يحصي L₀ غير الأصفار؛ وقد يتساوى مجموع L₁ مع اختلاف الدعم.

min⁡wF(w)+λ∥w∥0,min⁡w12(w−a)2+λ1w≠0. \min_w F(w)+\lambda\|w\|_0,\qquad \min_w\frac12(w-a)^2+\lambda\mathbf1_{w\ne0}.
كيف نقرأ هذه المعادلة بالتفصيل؟

تكلفة الملاءمة وتكلفة الإبقاء

الرمز min يعني أننا نبحث عن قيمة w التي تجعل المجموع أصغر ما يمكن. الدالة F تصف خطأ الملاءمة، وλ≥0\lambda\ge 0 سعر كل عنصر غير صفري.

وفي المثال ذي الرقم الواحد يكون F=(w−a)22F=\frac{(w-a)^2}{2}، حيث a القيمة التي تفضلها البيانات. المؤشر 1_{w≠0} يساوي 1 إذا أبقينا قيمة غير صفرية، و0 إذا اخترنا الصفر.

مقارنة خيارين

إذا اخترنا w=0 دفعنا a2/2a^{2}/2 ولم ندفع عقوبة الإبقاء. وإذا أبقينا قيمة غير صفرية وكان a≠0، فأفضلها w=a لأنها تمحو خطأ الملاءمة، وتكون التكلفة λ\lambda.

إذن نقارن a2/2a^{2}/2 مع λ؛ الصفر أفضل إذا كان |a| أصغر من 2λ\sqrt{2\lambda}، والإبقاء أفضل إذا كان أكبر. عند الحد يتعادل الخياران، وعند a=0 يكون الصفر هو الحل.

لماذا لا يتقلص الباقي؟

عند a=0.6 وλ=0.3\lambda=0.3 تكون تكلفة الصفر 0.18 أصغر من 0.3. أما إذا كبر a بما يكفي فنحتفظ به كما هو؛ فالعقوبة هنا ثابتة لكل عنصر مستخدم، لا تزيد مع مقداره.

هذا هو سبب اختلاف العتبة الصلبة عن العتبة اللينة التي سنصل إليها.

python

ما معنى محدب؟

نحتاج الآن إلى فهم كلمة محدب، لأن سهولة البحث ليست وصفا عابرا. إذا وصلنا نقطتين على منحنى دالة محدبة بخط مستقيم، بقي المنحنى تحت هذا الخط أو عليه؛ والمتباينة التالية تكتب ذلك عندما نمزج a وb بنسبة t.

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

أما L0L_{0} فيقفز عند الصفر؛ فمزج 0 و1 بالتساوي يعطي تكلفة 1 عند الوسط، أكبر من متوسط التكلفتين 1/2. وإضافة عقوبة محدبة إلى خسارة شبكة عصبية غير محدبة لا تجعل المسألة كلها محدبة؛ عدم النعومة وعدم التحدب أمران مختلفان.

F(ta+(1−t)b)≤tF(a)+(1−t)F(b),0≤t≤1. F(ta+(1-t)b)\le tF(a)+(1-t)F(b),\qquad 0\le t\le1.
كيف نقرأ هذه المعادلة بالتفصيل؟

نمزج نقطتين

نختار t بين 0 و1، فتكون ta+(1−t)b نقطة بين a وb. الطرف الأيسر يحسب الدالة عند هذه النقطة، والطرف الأيمن يمزج قيمتي الدالة عند الطرفين بالنسب نفسها.

التحدب يقول إن قيمة الداخل لا تعلو ذلك المتوسط. ولا يكفي تحقق المتباينة لمثال واحد؛ يجب أن تصح لكل النقط والنسب في المجال.

مثال يمسك بالفكرة

للقيمة المطلقة، خذ a=−2 وb=3 وt=0.4. نقطة المزج هي 1، وقيمتها المطلقة 1، بينما متوسط القيمتين 0.4×2+0.6×3=2.6.

أما مؤشر عدم الصفر بين 0 و1 عند t=0.5 فيعطي 1 في الوسط مقابل 0.5 في الطرف الأيمن، فيخالف المتباينة.

ما الذي يسمح به التحدب؟

على مجال محدب، لا يكون الحد الأدنى المحلي الصحيح أسوأ من حد أدنى آخر؛ لكن يمكن أن توجد عدة حلول أو ألا يتحقق أصغر مقدار داخل المجال أصلا. والزاوية عند الصفر لا تفسد التحدب: النعومة تتعلق بوجود المشتقات، بينما التحدب يتعلق بهذه المتباينة.

python

بديل يسهل البحث

لهذا نستبدل أحيانا العد الصعب بقياس محدب، ويسمى ذلك إرخاء محدبا؛ لكنه يصنع مسألة جديدة ولا يثبت أن حلها هو الحل القديم. على المجال المحدود [−M، M] تكون |w|/M أكبر دالة محدبة لا تتجاوز مؤشر عدم الصفر، ويسمى هذا الغلاف المحدب.

لنر السبب: بين الصفر وM لا تستطيع أي دالة محدبة تحت المؤشر أن تعلو الخط الذي يصل (0,0)(0, 0) و(M، 1)، والقيمة المطلقة المقسومة على M تحقق هذا الخط، وبالمثل في الجهة السالبة. في صندوق يحد جميع العناصر نحصل على L1L_{1}/M، أما على الفضاء غير المحدود فالغلاف هو الصفر، لا L1L_{1}.

ويمكن أن تختلف الحلول حتى في مثال صغير: عند a=0.6 وλ=0.3\lambda=0.3 يختار L0L_{0} الصفر، بينما يختار L1L_{1} القيمة 0.3؛ فالعلاقة بينهما ليست مساواة.

مؤشر عدم الصفرالغلاف المحدب10−M0Mw = 0.5
∣w∣M=\frac{|w|}{M} = 0.5L0(w)=L_0(w) = 1

الشكل 3: الغلاف المحدب. على المجال [−M، M]، يكون |w|/M الغلاف المحدب لمؤشر عدم الصفر؛ يلامس الصفر عند الأصل ويبلغ الواحد عند الحدين.

conv env⁡[−M,M]d(∥w∥0)=∥w∥1M,M>0. \operatorname{conv\,env}_{[-M,M]^d}(\|w\|_0)=\frac{\|w\|_1}{M},\qquad M>0.
كيف نقرأ هذه المعادلة بالتفصيل؟

الغلاف ليس الدالة الأصلية

الغلاف المحدب هو أكبر دالة محدبة تبقى تحت الدالة التي نريد تقريبها. الصندوق [−M، M]^d يحد مقدار كل عنصر بـM، ونفترض M>0.

النتيجة تقول إن غلاف عدد العناصر غير الصفرية على هذا الصندوق يساوي مجموع المقادير المطلقة مقسوما على M؛ لا تقول إن العدد نفسه يساوي هذا المقدار.

من رقم واحد إلى صندوق

في بعد واحد يصل الخط من (0,0)(0, 0) إلى (M، 1) بالقيمة w/M على الجانب الموجب، ومن (−M، 1) إلى الصفر بالقيمة |w|/M على الجانب السالب. التحدب يمنع أي دالة تحت المؤشر من تجاوز هذين الخطين.

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

أهمية الحد M

عند M=2 وw=0.5 يعطي الغلاف 0.25 مقابل تكلفة العد 1. وإذا سمحنا بالمقادير أن تكبر دون حد أمكن خفض الميل 1/M نحو الصفر؛ يصبح الغلاف على المجال كله صفرا.

لذلك لا توجد مساواة عامة بين L1L_{1} وغلاف L0L_{0} دون تحديد المجال.

python

حين يلامس الحل رأسا

ويمكن رؤية أثر البديل قبل حساب مشتقاته. لنضع ميزانية t على L1L_{1} لمعاملين؛ المنطقة المسموح بها معين رؤوسه على المحورين، والمنحنيات التي لها خطأ ملاءمة واحد تكون أهليجات إذا كانت الخسارة تربيعية موجبة التحديد.

نبحث عن أصغر منحنى خطأ يلامس المنطقة، وقد يلمس رأسا فيجعل أحد المعاملين صفرا. في المثال التالي، الحل غير المقيد (2,0.3)(2, 0.3)، ومع الميزانية 1.2 يعطي قيد L1L_{1} الحل (1.2، 0)، بينما يعطي L2L_{2} تقريبا (1.1792، 0.2225).

لكن للمعين أضلاع أيضا وقد يقع الحل عليها بمعاملين غير صفريين. ويمكن ربط الميزانية بصيغة عقوبة λ\lambda تحت شروط لاغرانج المناسبة، دون تحويل عام ثابت بين t وλ.

قيد L₁

β₁β₂
حل L₁β^=(1.2,0)\hat{\beta} = (1.2, 0)

قيد L₂

β₁β₂
حل L₂β^=(1.1792,0.2225)\hat{\beta} = (1.1792, 0.2225)

الشكل 4: موضع التماس. غيّر t لترى الحلين المحسوبين للخسارة نفسها؛ قد ينتقل حل L1 من رأس إلى ضلع.

F(β)=12[(β1−2)2+2(β2−0.3)2],min⁡∥β∥1≤tF(β). F(\beta)=\frac12[(\beta_1-2)^2+2(\beta_2-0.3)^2],\qquad \min_{\|\beta\|_1\le t}F(\beta).
كيف نقرأ هذه المعادلة بالتفصيل؟

ما الذي تصفه الخسارة؟

المعاملان β₁ وβ₂ يحددان نقطة نبحث عنها. لولا القيد لكان β₁=2 وβ₂=0.3، لأنهما يمحوان المربعين.

معامل 2 أمام المربع الثاني يجعل الانحراف في الاتجاه الثاني أغلى. أما القيد ‖β‖₁≤t فيسمح بالنقاط التي مجموع مقداري معامليها لا يتجاوز الميزانية t.

لماذا يظهر الحل (1.2، 0)؟

مع t=1.2 لا نستطيع الوصول إلى (2,0.3)(2, 0.3)، إذ يحتاج إلى ميزانية 2.3. عند الحل (1.2، 0) يكون تدرج الخسارة (−0.8، −0.6).

سعر قيد مقداره 0.8 يوازن المعامل الأول غير الصفري، ويسمح للثاني بالبقاء صفرا لأن مقدار ضغطه 0.6 لا يتجاوز ذلك السعر. لهذا يكون الرأس حلا في هذا المثال.

للشكل أضلاع أيضا

لو كانت تفضيلات البيانات مختلفة فقد ينتهي التماس على ضلع فيبقى المعاملان غير صفريين. وt يحدد المنطقة المسموح بها، بينما λ\lambda في صيغة العقوبة يحدد سعر المقدار؛ ربطهما يعتمد على الخسارة والحل ولا يأتي بتحويل ثابت صالح لكل مسألة.

python

لماذا يحتاج النموذج إلى التنظيم؟

لكن لماذا نضع ميزانية أو عقوبة أصلا؟ يتعلم النموذج من أمثلة شاهدها، بينما نريده أن ينجح في أمثلة لم يشاهدها؛ وقد يحفظ تفاصيل التدريب وضجيجه فيقع في فرط الملاءمة.

نسمي متوسط الخسارة على الأمثلة المتاحة المخاطرة التجريبية، أما المخاطرة السكانية فهي توقع الخسارة على التوزيع الذي ستأتي منه الأمثلة الجديدة. التنظيم يضيف تفضيلا Ω\Omega إلى جودة الملاءمة، وλ يحدد ثمنه.

لو كان خطأ نموذج A يساوي 0.20 ومقداره 10، وخطأ B يساوي 0.23 ومقداره 2، فعند λ=0.01\lambda=0.01 تصبح التكلفتان 0.30 و0.25 ونفضل B. التضحية ببعض التدريب قد تفيد التعميم، لكنها لا تضمن ذلك؛ فالخسارة والمنتظم والعقوبة الموزونة والهدف الكامل أشياء ينبغي تمييزها.

R^n(θ)=1n∑i=1nℓ(yi,fθ(xi)),R(θ)=E[ℓ(Y,fθ(X))],Jλ=R^n+λΩ. \widehat R_n(\theta)=\frac1n\sum_{i=1}^{n}\ell(y_i,f_\theta(x_i)),\qquad R(\theta)=\mathbb E[\ell(Y,f_\theta(X))],\qquad J_\lambda=\widehat R_n+\lambda\Omega.
كيف نقرأ هذه المعادلة بالتفصيل؟

ما الذي نراه وما الذي نتمناه؟

المعلمات θ\theta تحدد النموذج fθ، وكل زوج (xᵢ، yᵢ) مثال شاهدناه. تقيس ℓ الفرق بين الاستجابة وتنبؤ النموذج، ثم تجمع المخاطرة التجريبية هذه الخسائر وتقسم على n.

في المخاطرة السكانية نأخذ توقع الخسارة على زوج عشوائي جديد (X، Y)، ولذلك لا تكون هذه الكمية متاحة مباشرة من التدريب.

ندفع ثمن التفضيل

نضيف Ω\Omega(θ\theta) التي تعبر عن التفضيل الذي اخترناه، ونوزنها بـλ. لو كانت خسارتا نموذجين 0.20 و0.23 ومقداراهما 10 و2، فعند λ=0.01\lambda=0.01 تصبح التكلفتان 0.30 و0.25.

نختار الثاني وفق الهدف المنظم، مع أنه أسوأ قليلا في الملاءمة وحدها.

اختيار الهدف ليس شهادة على المستقبل

نحن نصغر ما يمكن حسابه من التدريب مع هذا التفضيل، ونأمل أن ينجح على بيانات جديدة. لكن هدفا منظما أصغر لا يضمن مخاطرة سكانية أصغر؛ قد يكون التفضيل غير مناسب أو λ\lambda كبيرة.

لهذا يبقى التقييم المستقل ضروريا.

python

ثمن المقدار: λ\lambda

حين تكون Ω\Omega هي L1L_{1}، ندفع ثمن مجموع مقادير المعاملات التي اخترنا تنظيمها، لا بالضرورة كل معاملات النموذج. قد نستثني الثابت أو بعض الانحيازات، ولذلك لا تعني عقوبة قوية أن النموذج كله يصير صفرا.

وλ ليست معدل التعلم η\eta، ولا عتبة التقليم τ\tau، ولا سماحية توقف الحل؛ الأولى تغير ما نفضل، والثانية مقدار خطوة البحث، والثالثة قرار الحذف اللاحق. ويعتمد ثمن λ\lambda على وحدات المتغيرات وتطبيع الخسارة: ضرب متوسط الخسارة والعقوبة معا في n يحافظ على الحل، أما تحويل المتوسط إلى مجموع دون تعديل العقوبة فيغير قوته.

في Lasso التربيعي مع بيانات متمركزة تكون λmax أكبر ارتباط مطلق بين الأعمدة والاستجابة مقسوما على n، وعندها تصل جميع معاملات الميل إلى الصفر. القيمتان المطبوعتان متساويتان لأننا ضربنا العقوبة أيضا في عدد المشاهدات؛ ترك λ\lambda كما هي عند الانتقال من المتوسط إلى المجموع يغيّر المسألة.

β1\beta_1β2\beta_2β3\beta_3
00.551.11.652.2-1012λβ
λ = 0.4β=(1.6,  −0.6,  0)\boldsymbol{\beta} = (1.6,\; -0.6,\; 0)

الشكل 5: مسار التنظيم. مثال متعامد: المعاملات Sλ(a) تتناقص ثم تختفي؛ مسار المعاملات ليس ترتيب أهمية إحصائية.

Jλ(θ)=F(θ)+λ∑j∈P∣θj∣,λmax⁡=∥XTyn∥∞. J_\lambda(\theta)=F(\theta)+\lambda\sum_{j\in P}|\theta_j|,\qquad \lambda_{\max}=\left\|\frac{X^Ty}{n}\right\|_\infty.
كيف نقرأ هذه المعادلة بالتفصيل؟

من الذي ندفع عنه؟

المجموعة P تحدد المعلمات الخاضعة للعقوبة؛ قد تشمل معاملات الميل وتستثني الثابت. الدالة F هي خسارة الملاءمة، وλ سعر كل وحدة من مجموع المقادير.

إذا نقلنا الخسارة من متوسط إلى مجموع فعلينا ضرب λ\lambda أيضا في n للحفاظ على المسألة نفسها، لأن تغيير جزء واحد يغير التوازن.

من أين تأتي λmax؟

في Lasso بخسارة ‖y−Xβ‖₂²/(2n)، يكون الباقي عند β=0\beta=0 هو y، ويكون تدرج الخسارة −Xᵀy/n. يمكن للصفر موازنة هذا التدرج إذا كان مقدار ارتباط كل عمود بالاستجابة لا يتجاوز λ.

لذلك نأخذ أكبر مقدار من الارتباطات، وهو ما يكتبه معيار اللانهاية في الصيغة.

الصفر الذي نعنيه

إذا تمركزت X وy وعولج الثابت دون عقوبة، فإن λ\lambda≥λmax يجعل معاملات الميل كلها صفرا. قد يبقى تنبؤ النموذج متوسط استجابة التدريب، لا الصفر.

وإذا غيرنا وحدات الأعمدة أو تطبيع الخسارة تغيرت λmax أيضا؛ فهي ليست رقما عاما نوصي به لكل البيانات.

python

بيانات نعيد صنعها

لنر هذه العلاقة في بيانات يمكن إعادة صنعها، وهي المثال الاصطناعي نفسه في البحث: المتغير x2 شديد الارتباط بـx1، أما x3 فضجيج، والاستجابة تعتمد على x1 مع ضجيج إضافي. كل صف في X مشاهدة، وكل عمود متغير، وy هو ما نريد توقعه.

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

python

من المربعات الصغرى إلى Ridge وLasso

الانحدار بالمربعات الصغرى OLS يبحث عن β\beta تجعل Xβ قريبة من y، وتؤدي مشتقته إلى المعادلات الطبيعية؛ إذا كانت الأعمدة مستقلة أمكن كتابة الحل باستخدام معكوس XᵀX، لكن عمليا نستخدم حلا عدديا مستقرا، ومع الاعتماد قد لا تكون المعاملات وحيدة. يضيف Ridge نصف λL2\lambda L_{2} المربع فيقلص الاتجاهات ضعيفة التحديد، ويضيف Lasso مقدار λL1\lambda L_{1} فيمكنه تصفير بعض المعاملات.

في بياناتنا يعطي OLS تقريبا (2.0563، −0.1672، −0.0386)، وRidge عند 0.10 يعطي (1.0626، 0.7356، −0.0325)، وLasso عند 0.07 يعطي (1.8211، 0، 0). أخطاء العينة المرجعية متقاربة: 0.3862 و0.4051 و0.3869؛ اختلاف توزيع المعاملات لا يعني دائما اختلافا كبيرا في التنبؤ.

الكود يترك تفاصيل المحلّل للمكتبة كي نرى المقارنة بوضوح؛ وسنفهم خطوة العتبة بعد قليل. ولكي نرى متى تختفي المعاملات كلها، جرّب مضاعفات λmax؛ عند بلوغها تبقى الاستجابة المتوسطة وحدها في هذا النموذج المتمركز.

Ridge vs OLS

-7.71-7.71007.717.71OLS predictionRidge prediction

Lasso vs OLS

-7.71-7.71007.717.71OLS predictionLasso prediction
β^1\hat{\beta}_1β^2\hat{\beta}_2β^3\hat{\beta}_3خطأ مرجعي
OLS
2.0563
-0.1672
-0.0386
0.3862
Ridge
1.0626
0.7356
-0.0325
0.4051
Lasso
1.8211
0
0
0.3869

الشكل 6: OLS وRidge وLasso. الأرقام تحسب من البيانات والبذور نفسها في الكود؛ خطأ العينة المرجعية للتعليم ولا يستخدم لاختيار λ.

β^OLS∈arg⁡min⁡β∥y−Xβ∥222n,β^R=(XTX+nλI)−1XTy,β^L∈arg⁡min⁡β{∥y−Xβ∥222n+λ∥β∥1}. \widehat\beta_{\rm OLS}\in\arg\min_\beta\frac{\|y-X\beta\|_2^2}{2n},\quad \widehat\beta_R=(X^TX+n\lambda I)^{-1}X^Ty,\quad \widehat\beta_L\in\arg\min_\beta\left\{\frac{\|y-X\beta\|_2^2}{2n}+\lambda\|\beta\|_1\right\}.
كيف نقرأ هذه المعادلة بالتفصيل؟

نقرأ أبعاد المسألة

في X يوجد n صفا للمشاهدات وd أعمدة للمتغيرات، وβ متجه من d معاملات، لذلك Xβ متجه من n تنبؤات نقارنه بـy. مربع معيار L2L_{2} للباقي هو مجموع مربعات الأخطاء، والقسمة على 2n تجعلها خسارة متوسطة تسهل مشتقتها.

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

لماذا يضاف nλ إلى المصفوفة؟

مشتقة خسارة Ridge هي Xᵀ(Xβ−y)/n، ومشتقة العقوبة λ‖β‖₂²/2 هي λβ. بمساواة مجموعهما بالصفر ثم الضرب في n نحصل على (XᵀX+nλI)β=Xᵀy.

عند λ\lambda>0 تكون هذه المصفوفة قابلة للعكس حتى مع أعمدة معتمدة، ونحل النظام عدديا بدلا من حساب معكوسه صراحة.

الفرق عند الصفر

OLS يحاول الملاءمة وحدها، وRidge يزيد سعرا تربيعيا، وLasso يزيد سعرا خطيا في المقدار. زاوية عقوبة Lasso تسمح بأصفار دقيقة، ولهذا لا تكفي خطوة مشتقة عادية عند الصفر.

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

python
python

كيف يصبح الصفر حلا؟

زاوية القيمة المطلقة هي ما يجعل الصفر ممكنا، ولنحل المسألة لرقم واحد كي لا تختبئ الفكرة في المصفوفات. نريد تصغير (w−a)²/2+λ|w|، حيث a هو الرقم الذي تفضله البيانات وحدها.

إذا كان w موجبا فالمشتقة w−a+λ، فيكون الحل a−λ بشرط a>λ؛ وإذا كان سالبا فالمشتقة w−a−λ، فيكون الحل a+λ بشرط a<−λ. عند الصفر لا توجد مشتقة واحدة، لكن توجد مجموعة ميول داعمة [−1، 1] تسمى التفاضل تحت التدرجي؛ فيتحقق شرط الصفر عندما |a|≤λ.

لذلك تمحو العتبة اللينة القيم داخل هذا المجال وتطرح λ\lambda من مقدار القيم الباقية. أما Ridge فيعطي a/(1+λ\lambda)، فيقلص الرقم غير الصفري دون محوه عادة عند λ\lambda منتهية.

-3-1.501.53-3-1.501.53Lasso estimateRidge estimateaŵ
OLSRidgeLasso
Lasso
w^L=Sλ(a)=0.6\hat w_L = S_\lambda(a) = 0.6
Ridge
w^R=a1+λ=0.7778\hat w_R = \frac{a}{1+\lambda} = 0.7778

الشكل 7: العتبة اللينة. تحوّل Lasso مجالا مركزيا إلى الصفر؛ أما Ridge فيقلّص كل معامل غير صفري باستمرار.

∂∣w∣∣w=0=[−1,1],0∈−a+λ[−1,1],Sλ(a)=sign⁡(a)(∣a∣−λ)+,(x)+=max⁡(x,0). \partial|w|\big|_{w=0}=[-1,1],\qquad 0\in-a+\lambda[-1,1],\qquad S_\lambda(a)=\operatorname{sign}(a)(|a|-\lambda)_+,\quad (x)_+=\max(x,0).
كيف نقرأ هذه المعادلة بالتفصيل؟

أكثر من ميل عند الصفر

علامة ∂ هنا تشير إلى التفاضل تحت التدرجي المحدب. عند نقطة w=0، كل ميل g بين −1 و1 يعطي خطا gw يقع تحت |w| ويمر بالصفر، ولهذا تكون المجموعة [−1، 1].

ليست هذه مشتقة عادية متعددة نختارها اعتباطا؛ إنها الميول الداعمة التي تحقق تعريف التحدب.

كيف تحتوي المجموعة الصفر؟

مشتقة خسارة (w−a)²/2 عند الصفر هي −a. يكون الصفر أمثل إذا أمكن اختيار g من [−1، 1] بحيث −a+λg=0.

عند λ>0 يعني ذلك g=a/λ، وهو مسموح بالضبط عندما |a|≤λ. وإذا كانت λ=0\lambda=0 نعود إلى الحل غير المنظم w=a.

نجمع الحالات في صيغة واحدة

عندما a>λ\lambda يكون الحل a−λ\lambda، وعندما a<−λ\lambda يكون a+λ\lambda، وفي المجال الأوسط يكون صفرا. الرمز (x)₊ يأخذ أكبر القيمتين x و0، وsign يعيد الإشارة؛ لذلك تجمعهما الصيغة Sλ.

عند a=2 وλ=0.8\lambda=0.8 نحصل على 1.2، وعند a=0.5 نحصل على صفر. عند الحد |a|=λ يبقى الحل صفرا.

python

الموازنة عند الحل

حين نرجع إلى المتجه لا نقارن المعامل منفردا بالضجيج، بل ننظر إلى علاقته بالباقي r=y−Xβ بعد الملاءمة المشتركة. شروط KKT تقول إن ارتباط عمود بمعامل غير صفري مع الباقي يساوي λ\lambda مضروبا في إشارته، أما إذا كان المعامل صفرا فيكفي أن يقع الارتباط داخل [−λ\lambda، λ\lambda].

هذه موازنة بين ضغط الملاءمة وضغط العقوبة، وهي شهادة أمثلية في المسألة المحدبة. وفي تحديث الإحداثيات نعزل أثر العمود الحالي، فنحسب الباقي الجزئي ثم ارتباطه c_j ومربعه المتوسط q_j، وتصبح الخطوة Sλ(c_j)/q_j.

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

xjTrn=λsign⁡(β^j) (β^j≠0),∣xjTrn∣≤λ (β^j=0),βj←Sλ(cj)qj. \frac{x_j^Tr}{n}=\lambda\operatorname{sign}(\widehat\beta_j)\ (\widehat\beta_j\ne0),\qquad \left|\frac{x_j^Tr}{n}\right|\le\lambda\ (\widehat\beta_j=0),\qquad \beta_j\leftarrow\frac{S_\lambda(c_j)}{q_j}.
كيف نقرأ هذه المعادلة بالتفصيل؟

الضغط الذي يتركه الباقي

بعد الحل يكون r=y−Xβ̂، والعمود xⱼ يحمل مشاهدات المتغير j. نأخذ حاصل الضرب xⱼᵀr ونقسم على n؛ هذه موازنة الارتباط مع الباقي تحت تطبيعنا، وليست معامل ارتباط Pearson المعياري.

لأن مشتقة الخسارة سالبة هذه الكمية، ينبغي أن يوازنها التفاضل تحت التدرجي للعقوبة.

ما يتغير بين النشط والصفر

إذا كان β\betâⱼ غير صفري فللقيمة المطلقة ميل واحد هو إشارته، فتظهر المساواة مع λsign(β\betâⱼ). وإذا كان صفرا تسمح العقوبة بأي ميل بين −1 و1، فيكفي أن يكون مقدار الارتباط ≤λ\lambda.

تحقق هذه الشروط لكل المعاملات يشهد بالأمثلية في Lasso المحدب، ولا يشهد بالأداء على بيانات جديدة.

كيف تحدث إحداثية واحدة؟

أثناء التحديث نضيف أثر العمود الحالي مرة أخرى إلى الباقي، فنحصل على الباقي الجزئي. نسمي ارتباطه cⱼ=xⱼᵀr الجزئي/n، وqⱼ=xⱼᵀxⱼ/n.

المسألة الفردية لها جزء تربيعي qⱼβⱼ²/2−cⱼβⱼ، فينتج الحل Sλ(cⱼ)/qⱼ عند qⱼ>0. مثلا cⱼ=0.2 وλ=0.3\lambda=0.3 يمحوان المعامل مهما كان qⱼ الموجب.

python

خطوة تصل إلى الصفر

وقد يبدو أن استخدام الميل مباشرة يكفي، لكنه قد يقفز عبر الزاوية بدلا من الهبوط عليها؛ فمع |w| ونقطة 0.03 وخطوة 0.1 يمكن أن نتناوب بين 0.03 و−0.07. الطريقة القريبة proximal تفصل الحركة التي تقلل الخسارة الناعمة عن معالجة العقوبة: نأخذ خطوة تدرج، ثم نطبق العتبة ηλ على الناتج.

في المثال التالي تصبح (0.04، −0.20، 0) أولا (0.03، −0.15، 0.06)، ثم (0,−0.11,0.02)(0, -0.11, 0.02). اختفى عنصر، تقلص آخر، وعاد عنصر كان صفرا؛ الصفر ليس حكما دائما إذا تغير تدرج الملاءمة.

ومع خسارة محدبة ذات تدرج L-Lipschitz تكفي عادة خطوة 0<η≤1\eta\le 1/L لضمانات التقارب المناسبة.

w(k+1)=Sηλ(w(k)−η∇F(w(k))). w^{(k+1)}=S_{\eta\lambda}\left(w^{(k)}-\eta\nabla F(w^{(k)})\right).
كيف نقرأ هذه المعادلة بالتفصيل؟

خطوة للملاءمة ثم خطوة للعقوبة

العدد k يعد خطوات الحل، و∇F متجه مشتقات الخسارة الناعمة، وη حجم الخطوة. نحسب أولا v=w⁽ᵏ⁾−η\eta∇F(w⁽ᵏ⁾)، وهي حركة تحاول خفض F.

ثم نحل مسألة قريبة: ابق قرب v مع دفع تكلفة ηλ من مقدار w. لهذه العقوبة يكون حل المسألة القريبة هو العتبة اللينة Sηλ.

لماذا ηλ لا λ\lambda وحدها؟

في صيغة المسألة القريبة نستخدم ‖w−v‖₂²/(2η)+λ‖w‖₁. ضربها في η لا يغير الحل ويجعل عقوبة المقدار ηλ، لذلك تتحرك عتبة المحو مع حجم خطوة البحث.

في المثال η=0.1\eta=0.1 وλ=0.4\lambda=0.4، فتكون العتبة 0.04، والقيم (0.03، −0.15، 0.06) تصبح (0,−0.11,0.02)(0, -0.11, 0.02).

الصفر ليس نهاية التاريخ

إذا تغير تدرج الملاءمة في خطوة لاحقة فقد تخرج قيمة صفرية من مجال العتبة وتعود للنشاط. ولضمانات التقارب نحتاج شروطا على F والخطوة؛ مع خسارة محدبة وتدرج ذي ثابت Lipschitz مقداره L يكون 0<η≤1\eta\le 1/L اختيارا معتادا.

إضافة هذه الخطوة إلى شبكة غير محدبة لا تنقل إليها شهادة الحد الأدنى العالمي.

python

ما مدى دقة الحل؟

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

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

ويمكن استخدام الفجوة أيضا في استبعاد آمن للأعمدة، لكننا نكتفي هنا بالسؤال الذي بدأنا به: هل انتهى البحث العددي؟

0300600900120010⁻¹⁶10⁻¹²10⁻⁸10⁻⁴10⁰Current gapالخطوةفجوة الهدفين الأولي والثنائي
فجوة الهدف
الفجوة الحالية
Pk−Dk=5.82×10−3P_k-D_k=5.82\times10^{-3}
حدود الهدف الأمثل
Dk≤F∗≤PkD_k\leq F^*\leq P_k

الشكل 8: فجوة الأمثلية. الفجوة بين هدف أصلي وقيمة ثنائية صالحة تحد خطأ الهدف؛ المقياس رأسي لوغاريتمي ولا يمثل خطأ التنبؤ.

python

اختيار λ\lambda

حتى الحل الدقيق قد يستخدم λ\lambda غير مناسبة، لذلك نختار قوة التنظيم بالتقييم على بيانات لم تدخل في الملاءمة. في التحقق المتقاطع نقسم التدريب إلى طيات، ونلائم على بعضها ثم نقيم على الباقي؛ ويجب أن يتعلم توحيد المقاييس من داخل كل طية تدريب حتى لا تتسرب معلومات التحقق.

يجمع Pipeline الخطوتين، وGridSearchCV يبحث عن λ\lambda، ويسميها البرنامج alpha في Lasso تحت تطبيعنا نفسه. المثال يختار نحو 0.0297، لكن الرقم ليس توصية عامة.

وإذا استخدمنا نتائج الضبط لتقدير الأداء دون عينة اختبار مستقلة احتجنا إلى تقييم خارجي، كتحقق متداخل؛ والبيانات الزمنية أو المجمعة تحتاج إلى تقسيم يحترم وقتها أو مجموعاتها.

python

بين الانحياز والتباين

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

قد نقبل انحيازا لنخفض التباين، لكن التنظيم الزائد يزيد الخطأ. إذا كان تقدير a متوسطه 2 وتباينه 1، فإن Ridge عند λ=0.25\lambda=0.25 يجعل الانحياز −0.4 والتباين 0.64، فيكون الخطأ 0.8 بدلا من 1؛ وعند λ=3\lambda=3 يرتفع إلى 2.3125.

ومع الأعمدة المترابطة يمكن لمعاملات مختلفة أن تعطي تنبؤات شبه متطابقة. وحتى مرونة Ridge ليست مجرد عدد معاملاته، بل مجموع d_k2k^{2}/(d_k2k^{2}+nλ) لاتجاهاته المفردة في الصيغة المتمركزة.

E[(β^−β⋆)2]=Bias⁡(β^)2+Var⁡(β^),df⁡R=∑kdk2dk2+nλ. \mathbb E[(\widehat\beta-\beta^\star)^2]=\operatorname{Bias}(\widehat\beta)^2+\operatorname{Var}(\widehat\beta),\qquad \operatorname{df}_{R}=\sum_k\frac{d_k^2}{d_k^2+n\lambda}.
كيف نقرأ هذه المعادلة بالتفصيل؟

خطأ التقدير عبر عينات كثيرة

القيمة β\beta★ هي المعامل الحقيقي، وβ̂ تقدير يتغير لو أعدنا جمع بيانات التدريب. نكتب الفرق β\betâ−β\beta★ على هيئة (β\betâ−Eβ̂)+(Eβ̂−β\beta★)، ثم نربع ونأخذ التوقع.

الحد المختلط يختفي لأن E(β\betâ−Eβ̂)=0، فيبقى التباين ومربع الانحياز. هذه مساواة لخطأ تقدير معامل؛ خطأ التنبؤ الكامل قد يشمل ضجيج الاستجابة أيضا.

نتقبل انحيازا إذا كسبنا أكثر

إذا كان تقدير غير منظم متوسطه 2 وتباينه 1، وتقليصه بمعامل 1/(1+0.25) يجعله 0.8 من حجمه، يصبح الانحياز −0.4 والتباين 0.64. مجموع 0.16+0.64=0.8 أصغر من 1.

لكن تقليصا قويا جدا قد يجعل مربع الانحياز أكبر من التباين الذي وفرناه.

مرونة Ridge في الاتجاهات

القيم dₖ هنا هي القيم المفردة لمصفوفة التصميم المتمركزة، وليست عدد المتغيرات. يسهم كل اتجاه بنسبة dk2d_{k}²/(dk2d_{k}²+nλ) بين 0 و1 عند λ\lambda>0، ونجمعها لدرجات حرية الملاءمة دون الثابت.

الاتجاه القوي يحتفظ بمرونة أكبر، والضعيف يتقلص أكثر؛ عند λ=0\lambda=0 نحسب النهاية لكل اتجاه غير صفري بدلا من قسمة 0 على 0.

python

هل اخترنا المتغير الصحيح؟

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

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

قيم المثال حول (1.000، 0.204، 0.188) عبر 250 نصف عينة تبين الفرق بين الإشارة والبديل والضجيج، لكنها ليست احتمالات إدراج بايزية؛ وضمانات stability selection لها شروط إضافية. كما أن فترات الثقة التقليدية بعد اختيار المتغيرات من البيانات نفسها قد تكون مضللة دون معالجة أثر الاختيار.

x₁ · الإشارة250 / 250 100.0%
x₂ · البديل51 / 250 20.4%
x₃ · الضجيج47 / 250 18.8%

الشكل 9: ثبات الاختيار. الاختيار عند λ=0.07؛ غيّر عدد أنصاف العينات من السلسلة المثبتة ببذرة 2026. التواتر ليس احتمال إدراج بايزيا.

python

التناثر في التمثيل

ولا يشترط أن يكون التناثر في الأرقام الأصلية. قد يمتلئ تسجيل صوتي بعينات غير صفرية لكنه يتكون من ترددات قليلة؛ فإذا كتبنا الإشارة x=Da، كانت أعمدة D ذرات قاموس نبني منها الإشارة، وكان التناثر في معاملات a.

وإذا زاد عدد الذرات على أبعاد الإشارة صار القاموس زائدا وقد تتعدد التمثيلات. تبحث Basis Pursuit عن أصغر L1L_{1} بين التمثيلات التي تحقق القياسات، وهذا يختلف عن طلب أقل عدد من الذرات.

الكود يحول كل معامل إلى فرق جزأين غير سالبين، فتتحول القيمة المطلقة إلى برنامج خطي؛ ثم يستعيد (1,0,0)(1, 0, 0) في المثال الجيد، دون أن يكون نجاح هذا المثال ضمانا لكل قاموس.

min⁡a∥a∥1subject toDa=x. \min_a\|a\|_1\quad\text{subject to}\quad Da=x.
كيف نقرأ هذه المعادلة بالتفصيل؟

الإشارة والذرات والمعاملات

الإشارة x لها عدد من العينات، وأعمدة D هي ذرات القاموس، وa يحدد مقدار مشاركة كل ذرة. حاصل الضرب Da يجمع الذرات بهذه المعاملات.

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

الملاءمة هنا قيد دقيق

عبارة subject to تعني «بشرط»: لا يسمح للحل أن يخطئ في إعادة بناء x، ثم نبحث بين الحلول المطابقة عن أقل ‖a‖₁. في القاموس المرفق، a=(1,0,0)(1, 0, 0) يبني (1,0)(1, 0)، وتمثيل بديل مثل (0,−1,1)(0, -1, 1) يبني الإشارة نفسها لكنه يكلف 2 بدلا من 1.

كيف يقرأه البرنامج الخطي؟

نكتب كل معامل aⱼ=aⱼ⁺−aⱼ⁻ بجزأين غير سالبين، ونصغر مجموعهما مع القيد D(a⁺−a⁻)=x. عند الحل الأقل كلفة لا نحتاج إلى جزأين موجبين للعنصر نفسه، فيمثل المجموع القيمة المطلقة.

هذه الصياغة تختار أقل مقدار L1L_{1}، ولا تضمن أقل عدد من الذرات لكل قاموس.

python

ما لا تراه القياسات

في الاستشعار المضغوط نقيس y=Ax بعدد قياسات أقل من المجهولات؛ وأي h تحقق Ah=0 لا تراها القياسات، فتجعل x+h تفسيرا بديلا. تسمى هذه الاتجاهات فضاء العدم.

لكي يستعيد L1L_{1} كل إشارة ذات s عناصر نشطة، تكفي وتلزم خاصية فضاء العدم: لكل h غير صفرية ولكل مجموعة S لا تزيد على s، يكون مقدار h داخل S أصغر من مقداره خارجها. إذا كان دعم x داخل S، تعطينا متباينة المثلث العكسية السلسلة التالية، فيصير كل بديل أغلى من x.

في المثال الجيد البدائل (1−t، −t، t) وأقل تكلفة عند t=0؛ أما A=[1، 2] وy=1 فيفضلان (0,0.5)(0, 0.5) على (1,0)(1, 0) رغم أن الاثنين يستخدمان عنصرا واحدا. التناثر وحده لا يعوض نقص المعلومات أو اختلاف أسعار الأعمدة.

راقب أن القياس لم يتغير، بينما انخفضت تكلفة L1L_{1} من 1 إلى 0.5؛ لهذا اختار المحلّل التفسير البديل.

الإشارة الحقيقيةالمرشح الحاليأصغر معيار L₁

استعادة صحيحة

شرط فضاء العدم متحقق∥hS∥1=1<2=∥hSc∥1\|h_S\|_1=1<2=\|h_{S^c}\|_1
012-0.400.51.1t
المرشح الحاليz(0)=(1,0,0)z(0)=(1,0,0)
القياس الثابتAz=(1,0)=yAz=(1,0)=y
تكلفة L₁1

فشل الاستعادة

شرط فضاء العدم غير متحقق∥hS∥1=2>1=∥hSc∥1\|h_S\|_1=2>1=\|h_{S^c}\|_1
012-0.400.51.1t
المرشح الحاليz(0)=(1,0)z(0)=(1,0)
القياس الثابتAz=(1)=yAz=(1)=y
تكلفة L₁1

الشكل 10: الاستعادة والفشل. كل نقطة على المسار تحقق القياسات؛ أصغر L1 يختار الإشارة الأصلية في الأول وبديلا في الثاني.

∥hS∥1<∥hSc∥1⟹∥x+h∥1≥∥x∥1−∥hS∥1+∥hSc∥1>∥x∥1. \|h_S\|_1<\|h_{S^c}\|_1\quad\Longrightarrow\quad \|x+h\|_1\ge\|x\|_1-\|h_S\|_1+\|h_{S^c}\|_1>\|x\|_1.
كيف نقرأ هذه المعادلة بالتفصيل؟

ما الذي لا تراه القياسات؟

نفترض أن الإشارة x متناثرة ودعمها S، أي مواضع عناصرها غير الصفرية، وأن h≠0 يقع في فضاء العدم: Ah=0. لذلك يعطي x+h القياسات نفسها.

الرمز Sᶜ يعني المواضع خارج الدعم، وhS وhSᶜ يجزئان h بحسب هذين المكانين.

نقرأ المتباينة خطوة خطوة

داخل الدعم تطبق متباينة المثلث العكسية، فيكون ‖xS+hS‖₁≥‖xS‖₁−‖hS‖₁. وخارج الدعم x يساوي صفرا، فتضاف الكمية ‖hSᶜ‖₁ كاملة.

إذا كانت هذه الزيادة أكبر مما يستطيع h إزالته داخل الدعم، تصبح كلفة البديل أكبر من كلفة x، فيفضل البحث x.

الشرط يجب أن يصح لكل بديل

لا يكفي التحقق من h واحد لإثبات الاستعادة. لاستعادة كل إشارة مدعومة على S نطلب ‖hS‖₁<‖hSᶜ‖₁ لكل h غير صفري في فضاء العدم.

وفي مثال A=(1,2)(1, 2)، والإشارة (1,0)(1, 0)، يسمح h=(−1,0.5)(-1, 0.5) ببديل (0,0.5)(0, 0.5)، وتفشل المتباينة لأن 1 ليس أصغر من 0.5.

python

حين يدخل الضجيج

ومع الضجيج لا نطلب مطابقة تامة، بل نسمح لباقي القياس ألا يتجاوز ε، كما في Basis Pursuit Denoising. وتحت شروط مناسبة، مثل خاصية فضاء عدم متينة أو حفظ تقريبي لأطوال المتجهات المتناثرة في restricted isometry، يمكن ضبط خطأ الاستعادة بمقدار الضجيج وذيل أفضل تقريب متناثر.

الرمز σ_s(a)_1 يعني أصغر خطأ L1L_{1} بعد الاحتفاظ بأكبر s مقادير؛ فإذا كان الذيل كبيرا أو القياسات سيئة لم نعد نملك الحجة نفسها. الكود يحسب هذا الذيل، ولا يدعي أنه تحقق من شروط النظرية أو حدد ثوابتها.

min⁡a∥a∥1 subject to ∥Aa−y∥2≤ϵ,∥a^−a∥2≤Cϵ+Dσs(a)1s. \min_a\|a\|_1\ \text{subject to}\ \|Aa-y\|_2\le\epsilon,\qquad \|\widehat a-a\|_2\le C\epsilon+D\frac{\sigma_s(a)_1}{\sqrt{s}}.
كيف نقرأ هذه المعادلة بالتفصيل؟

نفسح مكانا للضجيج

في النموذج y=Aa+e تكون e أخطاء القياس. إذا عرفنا حدا ‖e‖₂≤ε نسمح للحل بباق لا يتجاوز ε، بدلا من إجباره على مطابقة الضجيج.

الحرف a هنا معاملات الإشارة، وâ هو الحل المستعاد، وs عدد العناصر التي نسمح لأفضل تقريب متناثر أن يحتفظ بها.

جزآن لخطأ الاستعادة

الحد Cε يصف أثر الضجيج، والحد Dσs(a)₁/√s يصف العناصر التي حذفها أفضل تقريب ذي s عناصر. نحسب σs(a)₁ بجمع المقادير خارج أكبر s عناصر.

للمتجه (3,−1,0.2,−0.1,0.05)(3, -1, 0.2, -0.1, 0.05)، ومع s=2، يكون الذيل 0.35، وبعد القسمة على 2\sqrt{2} يصبح نحو 0.2475، قبل ضربه في ثابت الحد.

من أين تأتي الضمانات؟

C وD ثابتان موجبان يعتمد وجودهما وقيمهما على شروط نظرية تخص A، مثل خاصية تقييد متساوي القياس بقوة مناسبة. لا نختارهما اعتباطا لإثبات الاستعادة لكل مصفوفة.

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

python

أين نضع القيمة المطلقة؟

وفي الصور يغير موضع القيمة المطلقة معنى الحكاية. إذا عاقبنا الباقي Hu−y فنحن نغير طريقة التعامل مع أخطاء القياس، وإذا عاقبنا معاملات a في u=Da فنحن نفضل تمثيلا متناثرا، وإذا عاقبنا فروق الجيران فنحن نفضل مناطق متشابهة.

في القراءات (10,11,12,250,13)(10, 11, 12, 250, 13) يختار الخطأ التربيعي المتوسط 59.2، بينما يختار الخطأ المطلق الوسيط 12، فتقل سيطرة القراءة الشاذة؛ لكن ذلك لا يجعل L1L_{1} أفضل لكل ضجيج. وفي قاموس متعامد ذي أعمدة متعامدة طولها واحد، تتحول إزالة الضجيج التربيعية مع عقوبة L1L_{1} على a إلى عتبة معاملات Dᵀy، ثم إعادة البناء D Sλ(Dᵀy).

لا تنتقل هذه الصيغة البسيطة تلقائيا إلى قاموس زائد أو مؤثر عام. ثم كبّر القيمة الشاذة وحدها؛ سترى المتوسط يتبعها، بينما يبقى الوسيط 12 في هذه العينة.

python
python

الصورة وفروق الجيران

أما التغير الكلي TV فيقيس مقدار اختلاف الجيران، لا مقدار شدة البكسلات. الصف (10,10,10,50,50,50)(10, 10, 10, 50, 50, 50) لا يملك بكسلا صفريا، لكن فروقه (0,0,40,0,0)(0, 0, 40, 0, 0) متناثرة.

إذا قللنا نصف خطأ الصورة التربيعي مع λTV شجعنا مناطق متقاربة يفصلها عدد أقل من الانتقالات. ولمثال بكسلين يبقى متوسطهما كما هو ويصبح الفرق بينهما S₂λ(y2−y1)، فتختفي الفروق الصغيرة وقد تبقى الحافة الكبيرة.

في الصورة الكاملة تتداخل الفروق ولا نستطيع عتبة كل فرق مستقلا؛ وTV غير المتساوي اتجاهيا يجمع |Dx u|+|Dy u|، بينما المتساوي اتجاهيا يجمع جذور مربعات المركبتين. الإفراط فيه قد يحول التدرج إلى درجات ويزيل النسيج الدقيق.

وفي تجربة ثانية نرفع λ\lambda للبكسلين حتى تصبح الفروق صفرا عند 1.5؛ الذي اختفى هو الفرق، لا قيمة البكسلين.

uᵢ0204060123456|Du|020401–22–33–44–55–6
الصف المرصودحل TV
u^=(10,10,10,50,50,50),∥Du^∥1=40\hat{u}=(10,10,10,50,50,50),\qquad \|D\hat{u}\|_1=40

الشكل 11: فروق الجيران. الصف الأصلي له انتقال واحد. الحل يحسب TV للصف ذي ستة عناصر؛ لا نطبق عتبة مستقلة على فروق صورة عامة.

TV⁡(u)=∑i=1n−1∣ui+1−ui∣,min⁡u12∥u−y∥22+λTV⁡(u). \operatorname{TV}(u)=\sum_{i=1}^{n-1}|u_{i+1}-u_i|,\qquad \min_u\frac12\|u-y\|_2^2+\lambda\operatorname{TV}(u).
كيف نقرأ هذه المعادلة بالتفصيل؟

نقيس التغير بين الجيران

القيم uᵢ هي عناصر الإشارة التي نبحث عنها، وy الإشارة المشاهدة. كل فرق uᵢ₊₁−uᵢ يقيس انتقالا بين جارَين، ثم نجمع مقادير الفروق.

للصف (10,10,10,50,50,50)(10, 10, 10, 50, 50, 50) يوجد فرق واحد غير صفري مقداره 40؛ لذلك TV=40 رغم أن كل عناصر الصف غير صفرية.

الموازنة في بكسلين

في المثال y=(10,13)(10, 13) يكون المتوسط 11.5، ولنسم الفرق بين القيمتين δ. تصبح خسارة الملاءمة (δ−3)²/4، والعقوبة λ|δ|، فيكون δ̂=S₂λ(3).

عند λ=1\lambda=1 يصير الفرق 1، فتكون القيم (11,12)(11, 12). وعند λ≥1.5\lambda\ge 1.5 ينعدم الفرق وتصبح القيمتان 11.5؛ لم نطلب صفرا لأي بكسل.

حجم المنطقة يغير العتبة

في الصف ذي الستة عناصر تشترك ثلاثة عناصر في كل منطقة، فيكون فرق المنطقتين max(40−2λ/3، 0)، وتندمجان عند λ=60\lambda=60. لا نستطيع تعميم عتبة مستقلة لكل فرق في صورة عامة، لأن الفروق تتشارك البكسلات وينبغي أن تعود إلى إشارة واحدة متسقة.

python
python

الأوزان والتنشيطات

وتنتقل الفكرة إلى الشبكات العصبية إذا حددنا ما الذي نريد جعله صغيرا. العصبون يحسب z=wᵀx+b ثم يمرره إلى دالة تنشيط، وReLU تعطي max(0، z).

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

صفر اتصال واحد لا يحذف عصبونا كاملا ما دامت اتصالات أخرى باقية. الكود يميز القياسين ثم يقارن أصفارا مبعثرة بصف كامل صفري؛ والرسمة تتيح تبديل النمط.

الأوزان الأصلية

WW
10.20-0.80.40.1
0.05-0.080.100.2-0.1
0.80-0.60.20.30
00.150.2-0.100.05
أصفار دقيقة 6/24صفوف محذوفة 0/4

تنظيم عنصرًا بعنصر

Sλ(Wij)S_\lambda(W_{ij})
0.850.050-0.650.250
00000.050
0.650-0.450.050.150
000.05000
أصفار دقيقة 14/24صفوف محذوفة 0/4

تنظيم مجموعات الصفوف

(1−λ/∥Wi,:∥2)+Wi,:\left(1-\lambda/\|W_{i,:}\|_2\right)_+W_{i,:}
0.890.180-0.710.360.09
0.02-0.030.0400.09-0.04
0.690-0.520.170.260
00.070.09-0.0500.02
أصفار دقيقة 6/24صفوف محذوفة 0/4

الشكل 12: أنماط الأصفار. قارن عتبة العناصر بعتبة مجموعات الصفوف؛ يختلف حذف اتصال عن حذف مجموعة كاملة. القيم مقربة، وتشير ≈0 إلى وزن صغير غير صفري.

z=wTx+b,h=max⁡(0,z),∥W∥1,entry=∑i,j∣Wij∣,∥W∥1,induced=max⁡j∑i∣Wij∣. z=w^Tx+b,\quad h=\max(0,z),\qquad \|W\|_{1,\mathrm{entry}}=\sum_{i,j}|W_{ij}|,\quad \|W\|_{1,\mathrm{induced}}=\max_j\sum_i|W_{ij}|.
كيف نقرأ هذه المعادلة بالتفصيل؟

من الأوزان إلى التنشيط

المتجه x مدخلات خلية، وw أوزانها، وwᵀx مجموع حاصل ضرب كل مدخل بوزنه. نضيف الانحياز b فنحصل على z، ثم تمرره ReLU إلى h إذا كان موجبا وتعيد الصفر إن كان سالبا.

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

معياران بالاسم نفسه

في معيار المصفوفة العنصري نجمع كل |Wᵢⱼ| كما لو كانت المصفوفة متجها طويلا. أما المعيار المستحث من L1L_{1} فيسأل عن أكبر تضخيم لمعيار مدخل عند ضربه في W، ويساوي أكبر مجموع مطلق لعمود.

لهذا يختلفان حتى مع وجود الرقم 1 في اسميهما.

نحسب الفرق بأنفسنا

للمصفوفة ذات الصفين (1,0,−2)(1, 0, -2) و(0,0.5,0)(0, 0.5, 0)، يكون المجموع العنصري 3.5، ومجاميع الأعمدة 1 و0.5 و2، فيكون المعيار المستحث 2. وعند وصف عقوبة الأوزان L1L_{1} في الشبكات، يقصد مثالنا المجموع العنصري؛ ينبغي تسمية الاختيار كي لا نخلط سلوك العقوبتين.

python

الدالة نفسها بأوزان مختلفة

وإذا نظمنا التنشيطات بمتوسط L1L_{1} على المدخلات، وصلت مشتقة العقوبة إلى الأوزان عبر قاعدة السلسلة، ولم نعد نقيس الأوزان المخزنة مباشرة. وقد تستجيب ReLU لمدخل وتغلق لآخر.

وهناك سبب إضافي لعدم تفسير صغر كل وزن على أنه ضعف أهميته: في f(x)=b ReLU(ax)، ضرب a في c موجب وقسمة b على c يحافظان على التنبؤ، مع أنهما يغيران مقادير المعاملات وعقوبتها. لهذا تحتاج قراءة الأوزان إلى معرفة الطبقات والوحدات وما استثني من التنظيم؛ المثال يبين أن الدالة نفسها يمكن أن ترتدي مقادير مختلفة.

λn∑i∥hθ(xi)∥1,bReLU⁡(ax)=bcReLU⁡(cax)(c>0). \frac{\lambda}{n}\sum_i\|h_\theta(x_i)\|_1,\qquad b\operatorname{ReLU}(ax)=\frac bc\operatorname{ReLU}(cax)\quad(c>0).
كيف نقرأ هذه المعادلة بالتفصيل؟

العقوبة على ما تفعله الخلية

في الحد الأول نجمع مقادير تنشيطات hθ(xᵢ) عبر أمثلة التدريب ثم نقسم على n. هذه عقوبة على استجابات الخلايا لهذه الأمثلة، لا على الأوزان مباشرة.

وقد تكون خلية ساكنة في مثال ونشطة في غيره؛ لذلك لا يساوي تناثر التنشيطات تناثر مصفوفة الأوزان.

كيف نحفظ الدالة ونغير الأوزان؟

في المثال ذي الطبقتين يضرب a المدخل ثم تطبق ReLU، ويضرب b النتيجة. عند c>0 تحقق ReLU(cz)=cReLU(z)، فنستطيع نقل العامل c إلى الداخل والتعويض عنه بقسمة الوزن الخارجي عليه.

بهذه الطريقة تحفظ الدالة bReLU(ax) رغم أن معامليها أصبحا ca وb/c.

السعر لا يحفظه التغيير

إذا كان a=2 وb=3 فمجموع المقدارين 5. وعند c=4 يصبح الوزن الداخلي 8 والخارجي 0.75، فيكون المجموع 8.75 مع التنبؤ نفسه.

لا تقول المعادلة إن كل إعادة تحجيم تخفض العقوبة؛ تقول إن العقوبة تقيس التمثيل المختار للدالة، وقد يتغير سعره مع حفظ الناتج. والشرط c>0 ضروري لهذه الهوية.

python

من الاتصال إلى القناة

لذلك قد يكون المطلوب حذف مجموعات كاملة، كقنوات أو مرشحات، بدلا من اتصالات منفردة. عقوبة المجموعة تجمع أطوال L2L_{2} لمجموعات محددة وتستطيع تصفير مجموعة كاملة، بينما تنظيم مقاييس القنوات يعاقب γ\gamma في h_c=γ_c ẑ_c+β_c.

إذا صارت γ\gamma صفرا اختفى الجزء المعتمد على المدخل، لكن β\beta قد تبقي إسهاما ثابتا؛ فلا نحذف القناة قبل تتبع هذه الآثار في الطبقات التالية. وتظل خسارة الشبكة الكاملة غير محدبة عادة، كما أن SGD أو Adam مع تدرج العقوبة لا يضمنان أصفارا دقيقة.

التنظيم والتحسين القريب والتقليم عمليات مختلفة؛ الكود هنا مثال عددي لعتبة أوزان وقناع ثابت أثناء خطوة تنقيح، وليس بروتوكول تدريب شبكة كاملة.

python

هل صار النموذج أصغر وأسرع؟

ولنميز الآن بين أربعة إنجازات قد تختبئ تحت كلمة تناثر: أوزان صغيرة، أوزان صفرية فعلا، تمثيل أقل حجما، وحساب أسرع. نسبة العناصر ذات |w|≤τ ليست نسبة الأصفار الدقيقة، وقد تبقى المصفوفة الكثيفة بحجمها نفسه مهما كثرت الأصفار.

مليون عنصر FP32 يحتاج إلى 4,000,000 بايت خام؛ وإذا بقي 100,000 عنصر في مصفوفة 1000×1000 بتنسيق CSR ذي فهارس 32 بت، احتجنا إلى 804,004 بايت تقريبا للقيم والفهارس ومؤشرات الصفوف. وقد يصير التنسيق المتناثر أكبر عند تناثر قليل، أو أبطأ بسبب كلفة الفهرسة.

أما إزالة 32 قناة من 64 في التفاف 64×64×3×3 فتخفض أوزان تلك الطبقة من 36,864 إلى 18,432 بعد إعادة بناء الشكل، لكنها لا تثبت مضاعفة سرعة النموذج؛ الزمن والإنتاجية والذاكرة يجب قياسها على الجهاز المقصود.

كثيفالقيم: 400,000 Bفهارس الأعمدة: 400,000 Bمؤشرات الصفوف: 4,004 B
NCSR=nnz(bv+bi)+(m+1)biN_{\mathrm{CSR}}=n_{\mathrm{nz}}(b_v+b_i)+(m+1)b_i

الشكل 13: التناثر والتخزين. في مصفوفة 1000×1000 من FP32، يتعادل تخزين CSR مع الكثيف عند نحو 50.1٪ من الأصفار الدقيقة؛ هذه الأحجام الخام لا تتنبأ بزمن التنفيذ.

s0=#{j:wj=0}d,sτ=#{j:∣wj∣≤τ}d. s_0=\frac{\#\{j:w_j=0\}}{d},\qquad s_\tau=\frac{\#\{j:|w_j|\le\tau\}}{d}.
كيف نقرأ هذه المعادلة بالتفصيل؟

الأصفار الدقيقة والأصفار التي نقررها

العدد d هو عدد الأوزان، وعلامة # تعد من يحقق الشرط. في s₀ نعد من يساوي الصفر بالفعل؛ وفي sτ نعد من لا يتجاوز مقداره عتبة τ≥0\tau\ge 0، سواء ساوى الصفر أم لم يساوه.

بعد القسمة على d تصبح النتيجة نسبة بين 0 و1، ويمكن ضربها في 100 لعرضها بالمئة.

مثال يكشف المسافة بينهما

في الأوزان (0.003، −0.2، 0.07، −0.0001) لا يوجد صفر دقيق، فتكون s₀=0. ومع τ=0.01\tau=0.01 يصبح عنصران تحت العتبة، فتكون sτ=0.5\tau=0.5.

إذا قررنا التقليم ووضعنا هذين العنصرين صفرا تصبح النسبة الدقيقة بعد العملية 0.5؛ القياس قبل العملية مختلف عن نتيجتها.

ماذا لا يقوله العدد؟

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

نقيس الحجم والزمن وجودة التنبؤ منفصلة عن هذه النسبة.

python

حين يجتمع L1L_{1} وL2L_{2}

وحين لا يكفينا تفضيل واحد نغير العقوبة بحسب ما نحتاج. Elastic Net يجمع L1L_{1} مع L2L_{2} المربع؛ عند α=1\alpha=1 يعود Lasso وعند α=0\alpha=0 يعود Ridge في الصيغة التالية.

مع متغيرين متطابقين تؤدي (c، 0) و(c/2، c/2) إلى التنبؤ نفسه وتكلفة L1L_{1} نفسها إذا c موجب، لكن الحد التربيعي يفضل التوزيع المتوازن. في تحديث الإحداثيات تبقى العتبة في البسط، ويضاف λ\lambda(1−α\alpha) إلى المقام ليعطي تقلصا تربيعيا.

وα هنا نسبة المزج، بينما alpha في كود Lasso السابق هو λ\lambda؛ اسم الحرف لا يغني عن قراءة تعريفه. ولنكتف بمتغيرين متطابقين في التجربة التالية: يستطيع Lasso توزيع المجموع بطرق مختلفة، أما الجزء التربيعي فيفضل تقاسمه بالتساوي.

min⁡β∥y−Xβ∥222n+λ[α∥β∥1+1−α2∥β∥22],βj←Sλα(cj)qj+λ(1−α). \min_\beta\frac{\|y-X\beta\|_2^2}{2n}+\lambda\left[\alpha\|\beta\|_1+\frac{1-\alpha}{2}\|\beta\|_2^2\right],\qquad \beta_j\leftarrow\frac{S_{\lambda\alpha}(c_j)}{q_j+\lambda(1-\alpha)}.
كيف نقرأ هذه المعادلة بالتفصيل؟

نحدد الخليط

الصيغة تستخدم α\alpha بين 0 و1 كنسبة الجزء الخطي L1L_{1}، و1−α\alpha للجزء التربيعي. عند α=1\alpha=1 نحصل على Lasso، وعند α=0\alpha=0 على Ridge تحت تطبيعنا، وλ≥0\lambda\ge 0 تقوي العقوبة كلها.

بعض المصادر تعرف معامل الخليط بطريقة مختلفة؛ لذلك نقرأ الصيغة قبل نقل اسم المعامل من برنامج إلى آخر.

كيف يتغير تحديث الإحداثية؟

نعزل العمود الحالي كما في Lasso، فيكون الجزء الذي يعتمد على βⱼ هو qⱼβⱼ²/2−cⱼβⱼ. تزيد العقوبة التربيعية معامل المربع بمقدار λ\lambda(1−α\alpha)، بينما تزيد العقوبة الخطية عتبة المحو إلى λα.

لذلك نطبق العتبة على cⱼ ثم نقسم على qⱼ+λ\lambda(1−α\alpha)، عندما يكون هذا المقام موجبا.

لماذا تتقاسم الأعمدة المتطابقة؟

إذا اعتمد التنبؤ على مجموع معاملين موجبين، فإن (2,0)(2, 0) و(1,1)(1, 1) يعطيان مجموعا وL1L_{1} متماثلين. لكن مجموع المربعات 4 في الأول و2 في الثاني؛ الجزء التربيعي يفضل التقاسم.

هذا يشرح أثر التجميع، ولا يحوله إلى فرض مجموعة محددة كما يفعل Group Lasso.

python
python

أسعار مختلفة ومجموعات كاملة

ويمكن أن تختلف الأسعار بين المعاملات: Weighted L1L_{1} تضرب كل مقدار في وزن ω_j، وAdaptive Lasso يبني هذه الأوزان من تقدير أولي، غالبا (|β̃_j|+ε)^−γ. هكذا قد يقل عقاب الإشارات القوية أوليا، لكن تقديرا أوليا مضللا يضلل الأوزان أيضا، ونتائج خاصية oracle مشروطة وليست وعدا.

أما Group Lasso فيعاقب طول كل مجموعة ويطبق في المسألة القريبة المنفصلة عامل (1−λ/||a||2)+ على المجموعة كلها. وSparse Group Lasso يسمح بحذف المجموعة وبأصفار داخل المجموعة الباقية؛ للمجموعات غير المتداخلة في المسألة القريبة الإقليدية نطبق العتبة العنصرية أولا ثم عتبة المجموعة.

الكود يوضح الفرق دون أن يفترض أن المجموعات كلها مستقلة في مسألة ملاءمة عامة.

λ∑jωj∣βj∣,∑gλg∥βGg∥2,prox⁡λ∥⋅∥2(a)=(1−λ∥a∥2)+a. \lambda\sum_j\omega_j|\beta_j|,\qquad \sum_g\lambda_g\|\beta_{G_g}\|_2,\qquad \operatorname{prox}_{\lambda\|\cdot\|_2}(a)=\left(1-\frac{\lambda}{\|a\|_2}\right)_+a.
كيف نقرأ هذه المعادلة بالتفصيل؟

أسعار مختلفة للأفراد

الأوزان ωⱼ غير السالبة تجعل كل معامل يدفع سعرا مختلفا في العقوبة λΣωⱼ|βⱼ|. عند اتخاذها من تقدير أولي، قد يكون للمعامل الأولي الصغير سعر أكبر.

مثلا الصيغة 1/(|βⱼ الأولي|+ε) تتجنب القسمة على الصفر، لكن اختيار هذا التقدير والأسعار جزء من المنهج لا ضمانا تلقائيا لاختيار صحيح.

المجموعة تدفع معا

المجموعة Gg تضم معاملات نعاقب معيارها الإقليدي معا، وλg سعرها. معيار L2L_{2} داخل المجموعة قد يمحو المجموعة كلها حين يكون تأثيرها ضعيفا، لكنه لا يفرض صفرا لكل عنصر صغير داخل مجموعة باقية.

لذلك يمكن أن تبقى مجموعة نشطة بعناصر كثيرة غير صفرية.

نقرب المجموعة إلى الصفر

الدالة prox تحل ‖w−a‖₂²/2+λ‖w‖₂. إذا كان ‖a‖₂≤λ نختار المجموعة الصفرية، وإلا نحفظ الاتجاه ونقلص الطول بمقدار λ، فيظهر العامل 1−λ/‖a‖₂.

عند a=0 نعرّف الناتج صفرا دون القسمة على طوله. هذه الصيغة للمجموعة القريبة المنفردة؛ المجموعات المتداخلة تحتاج معالجة إضافية.

python

حين يكون للترتيب معنى

وحين يكون للترتيب معنى نستخدم Fused Lasso، فيجمع عقوبة المقادير وعقوبة فروق العناصر المتجاورة، فيفضل الأصفار والمناطق الثابتة بحسب القوتين. يمكن أيضا تقييد المعاملات بغير السالب إذا كان ذلك يناسب الظاهرة، فتكون عتبة المسألة القريبة max(a−λ\lambda، 0)، لا لأن السالب خطأ في ذاته.

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

λ1∑j∣wj∣+λ2∑j=2d∣wj−wj−1∣. \lambda_1\sum_j|w_j|+\lambda_2\sum_{j=2}^{d}|w_j-w_{j-1}|.
كيف نقرأ هذه المعادلة بالتفصيل؟

نحمل سعرين

المعامل λ₁ يسعر مقدار القيم نفسها، والمعامل λ₂ يسعر الفرق بين كل عنصر وسابقه. يبدأ الجمع الثاني عند j=2 كي يكون السابق موجودا.

نفترض أن ترتيب العناصر يحمل معنى، مثل الزمن أو مكان البكسلات؛ تغيير الترتيب قد يغير العقوبة الثانية حتى لو حفظ الأولى.

ما معنى صفر الفرق؟

إذا كان wⱼ−wⱼ₋₁=0 فالعنصران متساويان، وليس بالضرورة أن يكون أي منهما صفرا. للمتجه (0,0,2,2,2)(0, 0, 2, 2, 2) يكون مجموع المقادير 6 ومجموع الفروق المطلقة 2.

مع λ₁=0.1 وλ₂=0.4 تصبح العقوبة 0.6+0.8=1.4، وتفصل السعر عن خسارة الملاءمة التي لم تكتب هنا.

لماذا نحتاج إلى حل مشترك؟

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

python

بساطة الاتجاهات

ومن هنا نرى أن البساطة قد تكون في الاتجاهات لا في العناصر. في SVD نكتب M=U diag(σ_i)Vᵀ؛ الأعمدة في U وV اتجاهات متعامدة طولها واحد، والقيم المفردة σ_i مقادير تلك الاتجاهات.

الرتبة تعد المقادير غير الصفرية، والمعيار النووي يجمعها، فتكون مصفوفة الآحاد 2×2 كثيفة لكنها رتبتها واحدة، ومصفوفة الهوية فيها أصفار ورتبتها اثنان. تصغير نصف خطأ Frobenius مع τ||W||* يعتب القيم المفردة عتبة لينة، فيزيل اتجاهات ويقلص الباقي.

هذا يختلف عن SVD المبتور الذي يبقي أكبر k قيم بلا تغيير. في المثال تتحول (3.1648، 0.3792) إلى (2.4648، 0) عند τ=0.7\tau=0.7، فتنخفض الرتبة إلى واحدة؛ ولكي يوفر ذلك حسابا نحتاج إلى عوامل منخفضة الرتبة وتنفيذ مناسب، لا مجرد مصفوفة مخزنة بالحجم نفسه.

معيار نووي · تقليص ناعم

(σi−τ)+(\sigma_i-\tau)_+
σ1\sigma_13.1648 → 2.4648
σ2\sigma_20.3792 → 0
الرتبة1المعيار النووي2.4648

رتبة 1 · اقتطاع

(σ1,0)(\sigma_1,0)
σ1\sigma_13.1648 → 3.1648
σ2\sigma_20.3792 → 0
الرتبة1المعيار النووي3.1648
القيمة الأصليةبعد التحويل · معيار نووي · تقليص ناعمبعد التحويل · رتبة 1 · اقتطاع

الشكل 14: تقليص القيم المفردة. يقلص التقليل الناعم كل قيمة مفردة باقية بمقدار τ؛ أما اقتطاع الرتبة الأولى فيبقي الأكبر كما هي.

∥M∥∗=∑iσi,min⁡W12∥W−M∥F2+τ∥W∥∗,W^=Udiag⁡((σi−τ)+)VT. \|M\|_* =\sum_i\sigma_i,\qquad \min_W\frac12\|W-M\|_F^2+\tau\|W\|_*,\qquad \widehat W=U\operatorname{diag}((\sigma_i-\tau)_+)V^T.
كيف نقرأ هذه المعادلة بالتفصيل؟

البساطة في الاتجاهات

إذا كتبنا M=UΣVᵀ بالقيم المفردة σi≥0\sigmaᵢ\ge 0، فإن المعيار النووي ‖M‖★ يجمع هذه القيم، بينما الرتبة تعد غير الصفري منها. معيار Frobenius المربع يجمع مربعات عناصر خطأ المصفوفة.

نبحث هنا عن W قريبة من M، مع دفع سعر τ≥0\tau\ge 0 لمجموع مقادير اتجاهاتها المفردة.

من عتبة الأرقام إلى عتبة القيم المفردة

في هذه المسألة ذات خسارة Frobenius التربيعية، يسمح ثبات المعيار تحت التحويلات المتعامدة بمحاذاة اتجاهات الحل مع U وV. عندئذ تصبح كل قيمة مفردة مسألة مستقلة من الشكل (s−σᵢ)²/2+τs مع s≥0، وحلها max(σᵢ−τ\tau، 0).

نعيد بناء W بهذه القيم الجديدة والاتجاهات نفسها.

التقليص ليس القطع إلى رتبة محددة

في المثال القيم نحو 3.1648 و0.3792؛ مع τ=0.7\tau=0.7 تصبح 2.4648 و0، فتنخفض الرتبة إلى 1. تقريب SVD المقطوع من الرتبة 1 يبقي 3.1648 كما هي ويمحو الثانية؛ فهو يحل مسألة أخرى وقد يعطي خطأ Frobenius أصغر.

صيغة العتبة هنا لا تحل مباشرة خسارة قياسات مصفوفة عامة.

python

قراءة احتمالية للتنظيم

وللتنظيم قراءة احتمالية أيضا؛ تحت صياغة الاحتمال والتطبيع المناسبة، تعطي أسبقية Gaussian عقوبة تربيعية، وتعطي أسبقية Laplace مستقلة عقوبة قيمة مطلقة عند حساب تقدير MAP، أي أكثر نقطة كثافة في التوزيع اللاحق. لكن نمط لاحق متناثر لا يعني أن عينات ذلك التوزيع المستمر تقع عند الصفر باحتمال موجب؛ وجود كتلة احتمالية عند الصفر يحتاج إلى نموذج آخر مثل spike-and-slab.

وليست كل وسائل التنظيم عقوبات معيارية: الإيقاف المبكر يختار نقطة من مسار التعلم، وdropout يغير التنشيطات أثناء التدريب، وزيادة البيانات تضيف افتراضات عن تحولات المدخلات المقبولة. الرابط بينها تفضيل الحلول التي ينتجها التعلم، لا قانون واحد يلخصها كلها.

في الكود قارن الزيادة من 0 إلى 1 ثم من 1 إلى 2: العقوبة التربيعية تزداد أكثر، بينما تزيد عقوبة القيمة المطلقة بالمقدار نفسه.

p(βj)∝e−βj2/(2s2)orp(βj)∝e−∣βj∣/b. p(\beta_j)\propto e^{-\beta_j^2/(2s^2)}\quad\text{or}\quad p(\beta_j)\propto e^{-|\beta_j|/b}.
كيف نقرأ هذه المعادلة بالتفصيل؟

ماذا تحذف علامة التناسب؟

الرمز ∝ يعني أننا نكتب شكل الكثافة ونترك عامل التطبيع الذي لا يعتمد على βⱼ. في الصيغة Gaussian تكون s>0 قيمة المقياس والانحراف المعياري، وفي Laplace تكون b>0 مقياسها.

الكثافتان متمركزتان عند الصفر، لكنهما تسعران الابتعاد عنه بطريقتين مختلفتين.

من كثافة إلى عقوبة

عندما نحسب سالب اللوغاريتم تتحول الصيغة الأسية إلى βⱼ²/(2s22s^{2}) أو |βⱼ|/b مع ثابت إضافي. وإذا افترضنا استقلال المعاملات نجمع الحدود.

ثم نجمعها مع سالب لوغاريتم الإمكان للحصول على هدف MAP؛ لتحديد λ\lambda نحتاج إلى مقياس الضجيج وكيفية تطبيع خسارة الإمكان، لا إلى شكل الأسبقية وحده.

القمة لا تعني كتلة عند الصفر

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

ولهذا نفصل بين قيمة مقدرة متناثرة وتوزيع احتمالي كامل على القيم.

python

ما الذي تثبته النتيجة؟

يبقى أن ننظر إلى النتيجة بما تسمح به فعلا. إذا ضربنا عمودا في c احتجنا إلى قسمة معامله على c للحفاظ على التنبؤ، فتتغير تكلفة L1L_{1} بمقدار 1/|c|؛ لذلك يؤثر مقياس المتغيرات في الاختيار.

وقد تتعدد معاملات Lasso مع أعمدة متطابقة، ويظل التنبؤ نفسه؛ كما يستمر تقلص المعامل الباقي فيخلق تحيزا. وعقوبة L1L_{1} على الأوزان لا تعطي تلقائيا متانة أخطاء L1L_{1}، والصفر في الفروق لا يحمل معنى الصفر في البكسلات أو القنوات.

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

لنحوّل تغيير الوحدات إلى ملاءمة فعلية: كبّر أحد عمودين متعامدين، ثم قارنهما بعد التوحيد؛ الاختيار الذي يتغير هنا سببه سعر الوحدات.

python
python

على أثر المصادر

ولمن يريد تتبع ما قرأناه، هذه المصادر التي يستند إليها النص والبحث المرفق، موزعة على أصل الطرق وضماناتها وأدوات حلها: Hoerl & Kennard (1970)؛ Williams (1995)؛ Tibshirani (1996)؛ Chen, Donoho & Saunders (1998)؛ Zou & Hastie (2005)؛ Zou (2006)؛ Yuan & Lin (2006)؛ Zhao & Yu (2006)؛ Candès, Romberg & Tao (2006)؛ Donoho (2006)؛ Wainwright (2009)؛ Beck & Teboulle (2009)؛ Friedman, Hastie & Tibshirani (2010)؛ Meinshausen & Bühlmann (2010)؛ Lee et al. (2016)؛ Parikh & Boyd (2014)؛ Fercoq et al. (2015)؛ Cai, Candès & Shen (2010)؛ Wen et al. (2016)؛ Scardapane et al. (2017)؛ Boyd: L1L_{1} methods.

المراجع

أُدرجت المصادر وفق أسلوب APA، الإصدار السابع. وتشير روابط DOI إلى سجلات النشر.

Beck, A., & Teboulle, M. (2009). A fast iterative shrinkage-thresholding algorithm for linear inverse problems. SIAM Journal on Imaging Sciences, 2(1), 183–202. https://doi.org/10.1137/080716542

Boyd, S. (n.d.). ℓ1-norm methods for convex-cardinality problems [Lecture slides]. Stanford University. https://web.stanford.edu/class/ee364b/lectures/l1_methods_slides.pdf

Cai, J.-F., Candès, E. J., & Shen, Z. (2010). A singular value thresholding algorithm for matrix completion. SIAM Journal on Optimization, 20(4), 1956–1982. https://doi.org/10.1137/080738970

Candès, E. J., Romberg, J., & Tao, T. (2006). Robust uncertainty principles: Exact signal reconstruction from highly incomplete frequency information. IEEE Transactions on Information Theory, 52(2), 489–509. https://doi.org/10.1109/TIT.2005.862083

Chen, S. S., Donoho, D. L., & Saunders, M. A. (1998). Atomic decomposition by basis pursuit. SIAM Journal on Scientific Computing, 20(1), 33–61. https://doi.org/10.1137/S1064827596304010

Donoho, D. L. (2006). Compressed sensing. IEEE Transactions on Information Theory, 52(4), 1289–1306. https://doi.org/10.1109/TIT.2006.871582

Fercoq, O., Gramfort, A., & Salmon, J. (2015). Mind the duality gap: Safer rules for the Lasso. In F. Bach & D. Blei (Eds.), Proceedings of the 32nd International Conference on Machine Learning (Vol. 37, pp. 333–342). PMLR. https://proceedings.mlr.press/v37/fercoq15.html

Friedman, J., Hastie, T., & Tibshirani, R. (2010). Regularization paths for generalized linear models via coordinate descent. Journal of Statistical Software, 33(1), 1–22. https://doi.org/10.18637/jss.v033.i01

Hoerl, A. E., & Kennard, R. W. (1970). Ridge regression: Biased estimation for nonorthogonal problems. Technometrics, 12(1), 55–67. https://doi.org/10.1080/00401706.1970.10488634

Lee, J. D., Sun, D. L., Sun, Y., & Taylor, J. E. (2016). Exact post-selection inference, with application to the Lasso. The Annals of Statistics, 44(3), 907–927. https://doi.org/10.1214/15-AOS1371

Meinshausen, N., & Bühlmann, P. (2010). Stability selection. Journal of the Royal Statistical Society: Series B (Statistical Methodology), 72(4), 417–473. https://doi.org/10.1111/j.1467-9868.2010.00740.x

Parikh, N., & Boyd, S. (2014). Proximal algorithms. Foundations and Trends in Optimization, 1(3), 127–239. https://doi.org/10.1561/2400000003

Scardapane, S., Comminiello, D., Hussain, A., & Uncini, A. (2017). Group sparse regularization for deep neural networks. Neurocomputing, 241, 81–89. https://doi.org/10.1016/j.neucom.2017.02.029

Tibshirani, R. (1996). Regression shrinkage and selection via the Lasso. Journal of the Royal Statistical Society: Series B (Methodological), 58(1), 267–288. https://doi.org/10.1111/j.2517-6161.1996.tb02080.x

Wainwright, M. J. (2009). Sharp thresholds for high-dimensional and noisy sparsity recovery using ℓ1-constrained quadratic programming (Lasso). IEEE Transactions on Information Theory, 55(5), 2183–2202. https://doi.org/10.1109/TIT.2009.2016018

Wen, W., Wu, C., Wang, Y., Chen, Y., & Li, H. (2016). Learning structured sparsity in deep neural networks. In D. D. Lee, M. Sugiyama, U. von Luxburg, I. Guyon, & R. Garnett (Eds.), Advances in Neural Information Processing Systems 29 (pp. 2074–2082). Curran Associates. https://proceedings.neurips.cc/paper/2016/hash/41bfd20a38bb1b0bec75acf0845530a7-Abstract.html

Williams, P. M. (1995). Bayesian regularization and pruning using a Laplace prior. Neural Computation, 7(1), 117–143. https://doi.org/10.1162/neco.1995.7.1.117

Yuan, M., & Lin, Y. (2006). Model selection and estimation in regression with grouped variables. Journal of the Royal Statistical Society: Series B (Statistical Methodology), 68(1), 49–67. https://doi.org/10.1111/j.1467-9868.2005.00532.x

Zhao, P., & Yu, B. (2006). On model selection consistency of Lasso. Journal of Machine Learning Research, 7, 2541–2563. https://jmlr.org/papers/v7/zhao06a.html

Zou, H. (2006). The adaptive Lasso and its oracle properties. Journal of the American Statistical Association, 101(476), 1418–1429. https://doi.org/10.1198/016214506000000735

Zou, H., & Hastie, T. (2005). Regularization and variable selection via the elastic net. Journal of the Royal Statistical Society: Series B (Statistical Methodology), 67(2), 301–320. https://doi.org/10.1111/j.1467-9868.2005.00503.x

اقرأ المزيد