الگوریتم‌های پروگسیمال

در این بخش به معرفی یک دسته از الگوریتم‌های بهینه‌سازی به نام الگوریتم‌های پروگسیمال می پردازد. روش‌های پروگسیمال در سطح انتزاع بالاتری نسبت به الگوریتم‌های کلاسیک مانند روش نیوتن قرار می‌گیرند روش نیوتن یک ابزار استاندارد برای حل مسائل بهینه‌سازی نرم صاف بدون قید با اندازه متوسط است. الگوریتم‌های پروگسیمال را می توان به ابزاری مشابه برای معادلات ناصاف , مقید , بزرگ مقیاس و یا نسخه‌های توزیع‌شده دانست. همچنین برای مواجهه با مجموعه داده‌های بزرگ یا با ابعاد بالا مناسب هستند .

پروکسیمال یک روش ریاضی است برای این‌که وقتی یک مسئلهٔ بهینه‌سازی «سخت» یا «غیرقابل مشتق» داریم، آن را به یک مسئلهٔ ساده‌تر و قابل‌حل تبدیل کنیم.

مفاهیم پایه

فضای هیلبرت

فضای هیلبرت $ H $ فضایی برداری با ضرب داخلی است که نسبت به نرم القاشده کامل می‌باشد. این فضا بستر طبیعی تحلیل الگوریتم‌های پروگسیمال است، زیرا:

  • تصویر پروژکشن روی مجموعه‌های محدب بسته در آن یکتا است،
  • تابع $ x \mapsto |x|^2 $ اکیداً محدب است،
  • قضیه نمایش رایز برقرار است.

فضای هیلبرت یک فضای برداری است که دو ویژگی کلیدی دارد:

  1. دارای ضرب داخلی (inner product) است
  2. کامل (complete) است نسبت به نرمی که از آن ضرب داخلی مشتق می‌شود

۱. ضرب داخلی چیست؟

یک ضرب داخلی روی فضای برداری $ H $ یک تابع $ \langle \cdot, \cdot \rangle: H \times H \to \mathbb{R} $ (یا $ \mathbb{C} $) است که برای هر $ x, y, z \in H $ و $ \alpha \in \mathbb{R} $ دارای این ویژگی‌هاست:

\[\begin{aligned} &\text{۱. } \langle x, y \rangle = \overline{\langle y, x \rangle} \quad (\text{هرمیسی}) \\ &\text{۲. } \langle \alpha x + y, z \rangle = \alpha \langle x, z \rangle + \langle y, z \rangle \quad (\text{خطی در مؤلفه اول}) \\ &\text{۳. } \langle x, x \rangle \geq 0 \quad \text{و} \quad \langle x, x \rangle = 0 \iff x = 0 \end{aligned}\]

۲. نرم از ضرب داخلی می‌آید

از ضرب داخلی، یک نرم (Norm) به صورت زیر تعریف می‌کنیم:

\[\| x \| = \sqrt{\langle x, x \rangle}\]

این نرم دارای این ویژگی‌هاست:

  • $ | x | \geq 0 $
  • $ | x | = 0 \iff x = 0 $
  • $ | \alpha x | = \alpha | x | $
  • $ | x + y | \leq | x | + | y | $ (نامساوی مثلثی)

۳. کامل بودن به چه معناست؟

یک فضای برداری نرم‌دار کامل است اگر هر دنبالۀ کوشی در آن همگرا باشد.

دنبالۀ کوشی چیست؟
دنباله‌ای $ {x_n} $ است که:

\[\forall \varepsilon > 0, \; \exists N: \; \forall m, n > N, \; \| x_m - x_n \| < \varepsilon\]

یعنی وقتی $ m $ و $ n $ بزرگ باشند، فاصله‌ی $ x_m $ و $ x_n $ بسیار کوچک است.

کامل بودن یعنی:
اگر دنباله‌ای کوشی باشد، حتماً حدی درون خود فضای $ H $ دارد.


۴. چرا فضای هیلبرت مهم است؟

مثال‌های ملموس:

فضای هیلبرت توضیح    
$ \mathbb{R}^n $ فضای اقلیدسی $ n $-بعدی با ضرب داخلی معمولی    
$ \ell^2 $ فضای دنباله‌های مربع‌مجموع‌پذیر: $ \sum_{i=1}^\infty x_i ^2 < \infty $
$ L^2([a,b]) $ فضای توابع مربع‌انتگرال‌پذیر روی بازه $[a,b]$    

ویژگی‌های کلیدی برای بهینه‌سازی:

۱. وجود تصویر
در فضای هیلبرت، برای هر زیرمجموعه‌ی بسته و محدب $ C $ و هر نقطه‌ی $ x $، یک نقطه‌ی نزدیک‌ترین منحصربه‌فرد در $ C $ وجود دارد.

۲. اکیداً محدب بودن نرم
تابع $ x \mapsto | x |^2 $ در فضای هیلبرت اکیداً محدب است: \(\| \theta x + (1-\theta) y \|^2 < \theta \| x \|^2 + (1-\theta) \| y \|^2\) برای $ x \neq y $ و $ \theta \in (0,1) $.

فضای هیلبرت محیطی است که در آن هم می‌توانیم با مفاهیم هندسی (زاویه، فاصله) کار کنیم و هم از نظریۀ تحلیل تابعی (کامل بودن، پیوستگی) استفاده کنیم. این ترکیب آن را برای الگوریتم‌های بهینه‌سازی مانند پروکسیمال ایده‌آل می‌سازد.

این دقیقاً قلب تپنده‌ی بهینه‌سازی محدب مدرن است، پس بی‌واسطه می‌رویم سر اصل مطلب.

ما می‌خواهیم مسأله‌ای از این جنس را حل کنیم:

\(min_{x} \left\{g(x) + h(x)\right\}\) که در آن g تابعی صاف و مشتق‌پذیر است (مثلاً least squares)، و h تابعی است که ممکن است غیرصاف باشد (مثل ‖x‖₁)، ولی «prox» آن قابل محاسبه است.


نگاشت پروگسیمال (Proximal Mapping)

برای یک تابع محدب $ f $ با مجموعه‌ی نقاط کمینه ناتهی، عملگر غیرخطی زیر را نگاشت پروکسیمال می‌نامیم:

\[\text{Prox}_f(v) := \arg\min \left\{ f(x) + \frac{1}{2} \| x - v \|^2 : x \in H \right\}.\]

نکته: در این تعریف، پارامتر $ \lambda $ درون تابع $ f $ جاسازی شده یا به صورت پیش‌فرض برابر ۱ در نظر گرفته می‌شود. برای حالت پارامتردار معمولاً از نماد $ \text{Prox}_{\lambda f} $ استفاده می‌شود.


شهود پروکسیمال چیست؟

فرض کنید می‌خواهید یک تابع را کمینه کنید، اما:

  • یا گوشه‌دار است (مثل قدرمطلق)
  • یا مشتق‌پذیر نیست
  • یا قیدهای دردسرساز دارد

در این حالت، Proximal Mapping می‌گوید:
به‌جای این‌که مستقیم سراغ تابع سخت برویم، یک نقطهٔ فعلی را می‌گیریم و نزدیک‌ترین نقطه‌ای را پیدا می‌کنیم که هم به آن نقطه نزدیک باشد و هم مقدار تابع را کوچک کند.


تعریف ریاضی

برای یک تابع $ f(x) $:

\[\text{prox}_{f}(v) = \arg\min_x \left( f(x) + \frac{1}{2}\|x - v\|^2 \right)\]

توضیح اجزا:

  • v : نقطه‌ی فعلی
  • $ f(x) $ : تابعی که کمینه می‌شود
  • جمله‌ی دوم: جریمه برای دور شدن زیاد از v

مثال ساده

اگر:

\[f(x) = |x|\]

آنگاه پروگسیمال مپ برابر است با Soft Thresholding:

\[\text{prox}_{\lambda |x|}(v) = \begin{cases} v - \lambda & v > \lambda \\ 0 & |v| \le \lambda \\ v + \lambda & v < -\lambda \end{cases}\]

برداشت شهودی:

  • مقادیر کوچک → صفر می‌شوند
  • مقادیر بزرگ → به سمت صفر کشیده می‌شوند

چرا Proximal Mapping مهم است؟

با استفاده از آن می‌توان:

  • توابع غیرمشتق‌پذیر را مدیریت کرد
  • الگوریتم‌های زیر را پیاده‌سازی کرد:
    • Proximal Gradient
    • ISTA / FISTA
    • ADMM

محاسبهٔ Proximal Mapping برای تابع قدر مطلق (Soft Thresholding)

می‌خواهیم نشان دهیم چرا پروکسیمالِ تابع $ \lambda |x| $ برابر با
Soft Thresholding است.


۱. تعریف مسئله

طبق تعریف:

\[\begin{aligned} \text{prox}_{\lambda |x|}(v) &= \arg\min_x \left( \lambda |x| + \frac{1}{2}(x - v)^2 \right) \end{aligned}\]

هدف: یافتن $ x $ که این عبارت را کمینه کند.


تفکیک‌پذیری نگاشت پروکسیمال برای L1

از آن‌جا که:

\[\|x\|_1 = \sum_i |x_i|, \qquad \|x-y\|^2 = \sum_i (x_i-y_i)^2\]

مسئلهٔ پروکسیمال برای L1 به‌صورت جمعی از مسائل اسکالر مستقل در هر مؤلفه تجزیه می‌شود:

\[\min_x \frac{1}{2t}\|x-y\|^2 + \lambda\|x\|_1 = \sum_i \min_{x_i} \left\{ \frac{1}{2t}(x_i-y_i)^2 + \lambda|x_i| \right\}\]

بنابراین کافی است مسئلهٔ اسکالر را حل کنیم.

۲. نکتهٔ کلیدی

تابع $ |x| $ در $ x = 0 $ مشتق‌پذیر نیست،
بنابراین دامنه را به سه ناحیه تقسیم می‌کنیم:

  1. $ x > 0 $
  2. $ x < 0 $
  3. $ x = 0 $

۳. حالت اول: $ x > 0 $

در این ناحیه:

\[|x| = x\]

تابع هدف:

\[\lambda x + \frac{1}{2}(x - v)^2\]

مشتق نسبت به $ x $:

\[\frac{d}{dx} = \lambda + (x - v)\]

شرط کمینه:

\[\lambda + (x - v) = 0 \quad \Rightarrow \quad x = v - \lambda\]

شرط معتبر بودن:

\[x > 0 \Rightarrow v > \lambda\]

۴. حالت دوم: $ x < 0 $

در این ناحیه:

\[|x| = -x\]

تابع هدف:

\[-\lambda x + \frac{1}{2}(x - v)^2\]

مشتق:

\[\frac{d}{dx} = -\lambda + (x - v)\]

شرط کمینه:

\[-\lambda + (x - v) = 0 \quad \Rightarrow \quad x = v + \lambda\]

شرط معتبر بودن:

\[x < 0 \Rightarrow v < -\lambda\]

۵. حالت سوم: بررسی $ x = 0 $

اگر:

\[|v| \le \lambda\]

در این بازه:

  • جواب‌های دو حالت قبل در ناحیهٔ مجاز قرار نمی‌گیرند
  • مقدار تابع در $ x = 0 $ کمینه است

پس:

\[x = 0\]

۶. نتیجهٔ نهایی (Soft Thresholding)

Proximal operator of λ|x|:

\[\text{prox}_{\lambda |x|}(v) = \begin{cases} v - \lambda & v > \lambda \\ 0 & |v| \le \lambda \\ v + \lambda & v < -\lambda \end{cases}\]

۷. فرم فشرده و معروف

\[\boxed{ \text{prox}_{\lambda |x|}(v) = \mathrm{sign}(v)\,\max(|v| - \lambda,\, 0) }\]

تفسیر عملگری (Resolvent Interpretation)

از دید تحلیل محدب، نگاشت پروکسیمال برابر است با عملگر رزولونت:

\[\operatorname{prox}_{\lambda f} = (\mathrm{Id} + \lambda\,\partial f)^{-1}\]
در حالت $ f(x)= x $، داریم:
\[\operatorname{prox}_{\lambda|\cdot|} = (\mathrm{Id} + \lambda\,\mathrm{sign})^{-1}\]

که دقیقاً همان Soft Thresholding است. این دیدگاه نقش مهمی در نظریهٔ همگرایی و ارتباط با عملگرهای مونو‌تون دارد.

۸. تفسیر شهودی

  • مقادیر کوچک $ v $ → صفر می‌شوند
  • مقادیر بزرگ $ v $ → فقط به اندازهٔ $ \lambda $ کاهش می‌یابند
  • خروجی پیوسته و پایدار است

۹. جمع‌بندی

  • Proximal Mapping ابزار کلیدی برای توابع غیرمشتق‌پذیر است
  • پروکسیمال $ \ell_1 $ → Soft Thresholding
  • پایهٔ الگوریتم‌های ISTA، FISTA و LASSO

الگوریتم نقطۀ پروکسیمال

روش نقطۀ پروکسیمال بر اساس منظم‌سازی مسئلۀ اصلی (۱،۱) بنا شده است. به این معنی که به جای حل مستقیم مسئلۀ کمینه‌سازی برای تابع محدب $ f $، توجه خود را معطوف می‌کنیم به دنباله‌ای از مسائل کمینه‌سازی که حاصلِ تابع هدف اصلی با یک ترم تنظیم است .

فرمول‌بندی الگوریتم پروکسیمال

فرض کنید $ x_0 \in H $ نقطه شروع باشد. اگر $ x_{n-1} $ داده شده باشد و $ \lambda > 0 $، آن‌گاه $ x_n $ را به عنوان جواب مسئلۀ کمینه‌سازی زیر تعریف می‌کنیم:

\[\min_{x \in H} \left\{ f(x) + \frac{1}{2\lambda} \| x - x_{n-1} \|^2 \right\} \tag{الف}\]

به عبارت دقیق‌تر:

\[x_n = \arg\min \left\{ f(x) + \frac{1}{2\lambda} \| x - x_{n-1} \|^2 : x \in H \right\}.\]

همگرایی الگوریتم (نتیجۀ مارتینه)

مارتینه ثابت کرد که اگر: \(\arg\min f \neq \emptyset\) یعنی تابع $ f $ حداقل یک نقطۀ کمینه داشته باشد، آنگاه دنبالۀ $ {x_n} $ تولیدشده توسط رابطه‌ی (الف) همگرای ضعیف به یک نقطۀ کمینه‌ی تابع $ f $ خواهد بود.


یکتایی جواب زیرمسئله‌ها

دلیل یکتایی جواب برای هر زیرمسئلۀ (الف) را می‌توان با استفاده از ویژگی‌های نرم در فضای هیلبرت و نتایج قضیه‌ای در تحلیل محدب توضیح داد:

تابع \(g_n(x) = f(x) + \frac{1}{2\lambda} \| x - x_{n-1} \|^2\) به دلیل اینکه:

  1. $ f $ محدب است، (باید در مسایلی که حل می کنید توجه کنید )
  2. نرم در فضای هیلبرت اکیداً محدب است،

خود تابع $ g_n $ نیز اکیداً محدب خواهد بود. در نتیجه، هر زیرمسئله دارای یک کمینه‌ی یکتا است.


بازنویسی الگوریتم با نگاشت پروکسیمال

با استفاده از این نگاشت، الگوریتم مارتینه به صورت فشرده و زیبای زیر قابل بازنویسی است:

\[x_n = \text{Prox}_{\lambda f} (x_{n-1}).\]

به این ترتیب، هر گام الگوریتم تنها یک ارزیابی پروکسیمال است که نقطۀ قبلی را به نقطۀ بعدی نگاشت می‌کند.

Proximal Gradient Method

صورت کلی مسأله

می‌خواهیم مسأله‌ای از این جنس را حل کنیم:

\[\min_{x \in H} \left\{ g(x) + h(x)\right\}\]

که در آن:

  • $ g $ تابعی صاف و مشتق‌پذیر است (مثلاً least squares)
  • $ h $ تابعی است که ممکن است غیرصاف باشد (مثل $ |x|_1 $)، ولی «prox» آن قابل محاسبه است.

فرمول به‌روزرسانی

الگوریتم می‌گوید:

\[x^+ = \text{prox}_{th} ( x - t \nabla g(x) )\]

تفسیر الگوریتم

  1. اول یک قدم گرادیانی روی $ g $ می‌رویم
  2. بعد نتیجه را از فیلتر prox مربوط به $ h $ رد می‌کنیم

تفسیر گرادیان‌دسنت به‌عنوان یک مسئلهٔ کمینه‌سازی

نکتهٔ مهم این است که حتی گام گرادیان‌دسنت نیز می‌تواند به‌صورت حل یک مسئلهٔ کمینه‌سازی موضعی دیده شود:

\[x^{k+1} = \arg\min_x \left\{ \frac{1}{2t_k} \|x - x^k - t_k\nabla g(x^k)\|^2 \right\}\]

یعنی گرادیان‌دسنت، مینیمم‌کنندهٔ یک مدل درجه‌دوم از تابع صاف $ g $ در اطراف نقطهٔ فعلی است.

خطی‌سازی بخش صاف

حل دقیق این مسئله معمولاً دشوار است، زیرا شامل تابع ( g ) می‌شود. از آن‌جا که ( g ) صاف و مشتق‌پذیر است، آن را حول نقطه‌ی فعلی ( x ) خطی‌سازی می‌کنیم:

\[g(z) \approx g(x) + \langle \nabla g(x), z - x \rangle\]

به بیان شهودی:

  • بخش صاف ( g ) با یک گام گرادیانی تقریب زده می‌شود،
  • بخش غیرصاف ( h ) به‌صورت دقیق توسط عملگر پروکسیمال مدیریت می‌شود.

این دقیقاً دلیل کارایی و محبوبیت روش Proximal Gradient در مسائل بزرگ‌مقیاس و ناصاف است.

مصادیق خاص

  1. وقتی $ h(x) = 0 $: \(\text{prox}_{t0}(u) = u\) پس الگوریتم می‌شود همان گرادیان‌دسنت معمولی.

  2. وقتی $ h(x) = |x|_1 $ (LASSO / sparse recovery): prox این تابع، soft-thresholding است. برای هر مؤلفه: \(\text{prox}_{th}(u)_i = \begin{cases} u_i - t & \text{if } u_i > t \\ 0 & \text{if } |u_i| \le t \\ u_i + t & \text{if } u_i < -t \end{cases}\)


مثال کاربردی: رگرسیون با جریمه L1

صورت مسأله

داده‌ها: \(D=\{(x_i,y_i)\}_{i=1}^n\)

مدل خطی: \(y \approx ax + b\)

تابع هدف: \(\min_{a,b}\; g(a,b)+h(a,b)\) که در آن: \(g(a,b)=\frac12\sum_{i=1}^n (ax_i+b-y_i)^2\) \(h(a,b)=\lambda |a|\)

گرادیان بخش صاف $g$

\[\frac{\partial g}{\partial a} = \sum_{i=1}^n (ax_i+b-y_i)x_i\] \[\frac{\partial g}{\partial b} = \sum_{i=1}^n (ax_i+b-y_i)\]

الگوریتم

گام گرادیانی: \(a^{temp}=a^{(k)}-t\sum_{i=1}^n (ax_i+b-y_i)x_i\) \(b^{(k+1)}=b^{(k)}-t\sum_{i=1}^n (ax_i+b-y_i)\)

گام Proximal (فقط روی $a$): \(a^{(k+1)}=\text{sign}(a^{temp}) \max(|a^{temp}|-t\lambda,0)\)

تفسیر نتایج

  • $b$: آپدیت معمولی گرادیانی
  • $a$: حرکت گرادیانی + عبور از soft-thresholding
  • مقادیر کوچک → صفر
  • مقادیر بزرگ → کوچک‌تر اما باقی می‌مانند

نتیجه: مدل sparse و پایدارتر


مثال رگرسیونی با Proximal Gradient

جریمه L1 روی ضریب شیب

صورت مسأله

داده‌ها: \(D=\{(x_i,y_i)\}_{i=1}^n\)

مدل خطی: \(y \approx ax + b\)

تابع هدف: \(\min_{a,b}\; g(a,b)+h(a,b)\)

که در آن: \(g(a,b)=\frac12\sum_{i=1}^n (ax_i+b-y_i)^2\) \(h(a,b)=\lambda |a|\)

یعنی LASSO فقط روی $a$ و بدون جریمه روی $b$.


خیلی خوب؛ یک مثال عددی کامل رگرسیون خطی با ترم تنظیم (L_1) (یعنی LASSO) را با Proximal Gradient (ISTA) حل می‌کنیم و کد پایتون شفاف می‌دهم.


صورت مسئله

فرض کنید داده‌ها:

\[D = {(x_i, y_i)}_{i=1}^n\]

و مدل خطی:

\[y \approx X w\]

تابع هدف (LASSO): \(\min_{w} \left \{ \underbrace{\frac{1}{2}|Xw - y|^2}_{g(w)} + \underbrace{\lambda | |*1}*{h(w)} \right\}\)

  • ( g ): صاف و مشتق‌پذیر
  • ( h ): غیرصاف (L1)

الگوریتم Proximal Gradient (ISTA)

فرمول به‌روزرسانی:

\[w^{k+1} = \operatorname{prox}_{t h} \left(w^k - t \nabla g(w^k) \right)\]

که:

\[\nabla g(w) = X^\top (Xw - y)\]

و prox برای L1 همان Soft Thresholding است:

\[\operatorname{prox}_{\alpha \|\cdot\|_1}(v) = \mathrm{sign}(v)\,\max\bigl(|v|-\alpha,\,0\bigr)\]

کد پایتون (پیاده‌سازی از صفر)

import numpy as np

# -----------------------
# داده‌های نمونه
# -----------------------
np.random.seed(0)

n = 20      # تعداد داده
d = 3       # تعداد ویژگی

X = np.random.randn(n, d)

true_w = np.array([2.0, 0.0, -3.0])  # ضرایب واقعی (sparse)
y = X @ true_w + 0.1 * np.random.randn(n)

# -----------------------
# پارامترها
# -----------------------
lam = 0.5       # lambda (تنظیم L1)
t = 0.1         # گام یادگیری
max_iter = 200

# -----------------------
# Soft Thresholding
# -----------------------
def soft_threshold(v, alpha):
    return np.sign(v) * np.maximum(np.abs(v) - alpha, 0.0)

# -----------------------
# ISTA (Proximal Gradient)
# -----------------------
w = np.zeros(d)

for k in range(max_iter):
    grad = X.T @ (X @ w - y)          # ∇g(w)
    w = soft_threshold(w - t * grad, t * lam)

# -----------------------
# نتایج
# -----------------------
print("True coefficients:")
print(true_w)

print("\nEstimated coefficients (LASSO via Proximal Gradient):")
print(w)

تفسیر خروجی

  • ضرایب کوچک → دقیقاً صفر می‌شوند
  • فقط ویژگی‌های مهم باقی می‌مانند
  • مدل sparse به‌دست می‌آید

سوالات متداول

وقتی L1 داریم، چرا از prox استفاده نمی‌کنند؟ پس فایدهٔ prox چه بود؟

جواب دقیق:

✔️ از نظر ریاضی، باید از prox استفاده شود

❌ در DL استاندارد، عمداً استفاده نمی‌شود

📌 چون:

sparsity در weightها مفید نیست

GPU-unfriendly است

regularization بیشتر نقش پایدارسازی دارد، نه انتخاب ویژگی

اما: هر جا sparsity واقعاً مهم باشد، prox استفاده می‌شود — بدون استثناء

چرا پروکسیمال وقتی DL وجود دارد؟

پاسخ کوتاه (بی‌تعارف)

LASSO و روش‌های پروکسیمال برای این به‌وجود نیامده‌اند که با DL رقابت کنند. آن‌ها برای حل مسئله‌هایی طراحی شده‌اند که DL یا لازم نیست، یا بد است، یا خطرناک است.

اگر فقط DL بلد باشیم، در بسیاری از مسائل یا بیش‌ازحد پیچیده می‌کنیم، یا جواب اشتباه می‌دهیم.


حالا پاسخ عمیق‌تر — چرا LASSO هنوز مهم است؟

1. همه‌جا DL نیست (حتی امروز)

برخلاف تصور رایج:

حوزه روش غالب
ژنتیک، بیوانفورماتیک LASSO / Elastic Net
اقتصادسنجی LASSO / SCAD
سیگنال‌پردازی Basis Pursuit / Proximal
پزشکی بالینی مدل‌های sparse و قابل توضیح
حقوق و سیاست‌گذاری مدل خطی شفاف

📌 در این حوزه‌ها:

  • داده کم است
  • تصمیم حساس و پرریسک است
  • تفسیر مهم‌تر از دقت خام است

DL این‌جا نقص است، نه مزیت.


2. LASSO پاسخ یک سؤال متفاوت است

DL می‌پرسد:

«چطور بهترین پیش‌بینی را بکنم؟»

LASSO می‌پرسد:

«کدام متغیرها واقعاً مهم‌اند؟»

این دو سؤال اساساً متفاوت‌اند.

مثلاً در پزشکی:

  • DL: پیش‌بینی بیماری
  • LASSO: کدام ژن علت است؟

3. چرا Proximal؟ چون LASSO ذاتاً غیرصاف است

LASSO فقط یک مدل نیست، بلکه یک مسئلهٔ هندسی است:

[ \min_x |Ax-b|^2 + \lambda|x|_1 ]

این مسئله:

  • گوشه دارد
  • جواب‌های sparse دارد
  • گرادیان کلاسیک روی آن ناکافی است

Proximal روش طبیعی و دقیق حل آن است، نه ترفند.


4. DL بدون Proximal از کجا آمده؟ (نکتهٔ فلسفی)

بسیاری از ایده‌های DL در واقع از این‌جا آمده‌اند:

مفهوم در DL ریشه
ReLU prox یک indicator
ResNet Euler discretization
Unrolled Nets ISTA / ADMM
Weight decay proximal L2
Pruning sparse optimization

📌 یعنی:

DL روی شانه‌های convex optimization ایستاده است، نه برعکس.


5. اگر فقط DL بلد باشید، کجا زمین می‌خورید؟

مثال واقعی:

  • 100 نمونه
  • 10,000 ویژگی
  • هدف: انتخاب ویژگی

DL:

  • overfit
  • unstable
  • غیرقابل توضیح

LASSO:

  • sparse
  • پایدار
  • قابل دفاع علمی

6. LASSO «تمرین دانشگاهی» نیست

LASSO:

  • پایهٔ compressed sensing
  • هستهٔ graphical models
  • قلب high-dimensional statistics

این‌ها حوزه‌هایی هستند که DL هنوز به آن‌ها تکیه می‌کند.


7. سؤال درست‌تر این نیست که «چرا LASSO؟»

سؤال درست‌تر این است:

«آیا من می‌خواهم مدل بسازم یا مسئله حل کنم؟»

  • اگر مدل پیچیده: DL
  • اگر ساختار، تفسیر، تضمین: LASSO + Proximal

8. جمع‌بندی نهایی (صادقانه)

اگر هدف شما:

  • مهندسی محصول → DL
  • علم دادهٔ قابل توضیح → LASSO
  • ریاضیات، تئوری، الگوریتم → Proximal

حقیقت مهم:

کسی که LASSO و prox را بلد است، DL را عمیق‌تر می‌فهمد. برعکسش معمولاً درست نیست.


سوال؟

حرف مارتینه این بود

\[x_n = \arg\min \left\{ f(x) + \frac{1}{2\lambda} \| x - x_{n-1} \|^2 : x \in H \right\}.\]

با این چطور جور در می آید

فرمول به‌روزرسانی

الگوریتم می‌گوید:

\[x^+ = \text{prox}_{th} ( x - t \nabla g(x) )\]

تفسیر الگوریتم

  1. اول یک قدم گرادیانی روی $ g $ می‌رویم
  2. بعد نتیجه را از فیلتر prox مربوط به $ h $ رد می‌کنیم

خطی‌سازی بخش صاف

حل دقیق این مسئله معمولاً دشوار است، زیرا شامل تابع ( g ) می‌شود. از آن‌جا که ( g ) صاف و مشتق‌پذیر است، آن را حول نقطه‌ی فعلی ( x ) خطی‌سازی می‌کنیم:

\(g(z) \approx g(x) + \langle \nabla g(x), z - x \rangle\) ضمنا بحث خطی سازی \(g(z) \approx g(x) + \langle \nabla g(x), z - x \rangle\) درست اجرا شده است این نوشتید \(x^+ = \text{prox}_{th} ( x - t \nabla g(x) )\)