در الگوریتمهای گرادیان کاهشی و روشهای رایج بهینهسازی، حرکت بهسمت پایینترین نقطه هیچ تضمین قطعی برای رسیدن به بهترین پاسخ سراسری ارائه نمیدهد. وقتی با شبکههای عصبی کار میکنید، با هزاران دره و کمینهی محلی روبهرو هستید که الگوریتم ممکن است در آنها به دام بیفتد یا ساعتها نوسان کند؛ اما آیا تمام مسائل یادگیری ماشین همینقدر غیرقابل پیشبینی هستند؟
پاسخ منفی است. بخش وسیعی از مدلهای استاندارد مثل رگرسیون خطی، رگرسیون لجستیک و SVM در دستهی مسئلههای بهینهسازی کوژ (Convex Optimization) قرار میگیرند. در توابع کوژ، هر کمینهی محلی تضمینشده همان کمینهی سراسری است و دیگر نیازی به راهاندازیهای مکرر یا حدس زدن شانسمحور نرخ یادگیری نخواهید داشت.
در این درس یاد میگیرید که چگونه با ابزارهایی مانند ماتریس هسیان (Hessian) کوژ بودن یک تابع را بیازمایید، بهینهسازیهای مقید را با ضرایب لاگرانژ و شرایط KKT حل کنید، و با روشهای مرتبه دومی مثل روش نیوتن به همگرایی فوقالعاده سریع برسید. همچنین متوجه خواهید شد چرا شبکههای عصبی با وجود تمام ناکوژ بودنشان، در عمل با بهینهسازهای ساده به نتایج مطلوبی میرسند.
مسئلههای کوژ تنها یک دره دارند، اما شبکههای عصبی میلیونها دره دارند. درک این تفاوت اهمیت زیادی دارد.
اهداف یادگیری
- بررسی کوژ بودن یک تابع با استفاده از تعریف، مشتق دوم و معیارهای هسیان (Hessian)
- پیادهسازی روش نیوتن (Newton's method) و مقایسهی همگرایی مرتبه دو (quadratic convergence) آن با گرادیان کاهشی (gradient descent)
- حل مسئلههای بهینهسازی مقید با استفاده از ضرایب لاگرانژ (Lagrange multipliers) و تفسیر شرایط KKT
- توضیح اینکه چرا چشمانداز زیان در شبکههای عصبی ناکوژ (non-convex) است، اما SGD همچنان راهحلهای مناسبی پیدا میکند
صورت مسئله
در درس 08 با گرادیان کاهشی، تکانه (momentum) و Adam آشنا شدید. این بهینهسازها روی هر سطحی بهسمت پایین حرکت میکنند؛ اما هیچ تضمینی به شما نمیدهند. اجرای گرادیان کاهشی روی یک چشمانداز ناکوژ ممکن است به یک کمینهی محلی (local minimum) نامطلوب ختم شود، در یک نقطهی زینی (saddle point) گیر کند یا تا ابد دچار نوسان شود. با این حال باز هم از آن استفاده کردید، چون شبکههای عصبی ناکوژ هستند و گزینهی دیگری وجود ندارد.
اما بسیاری از مسئلهها در یادگیری ماشین کوژ (convex) هستند: رگرسیون خطی، رگرسیون لجستیک، SVMها، LASSO و رگرسیون ستیغی (ridge regression). برای این موارد، ابزار بسیار قدرتمندتری در دست داریم: بهینهسازی با تضمینهای ریاضی. یک مسئلهی کوژ هیچ درهی کاذبی ندارد؛ در این توابع هر کمینهی محلی همان کمینهی سراسری (global minimum) است. برای یک تابع کوژ هموار که کمینه دارد، گرادیان کاهشی با اندازهی گام مناسب قطعاً به آن همگرا میشود؛ بدون نیاز به راهاندازیهای مجدد، بدون نیاز به زمانبندی نرخ یادگیری، و بدون دست به دامن شانس شدن.
درک کوژی (convexity) سه فایدهی مهم دارد. اول، مشخص میکند مسئلهی شما ساده (کوژ) است یا دشوار (ناکوژ). دوم، ابزارهای سریعتری مثل روش نیوتن را برای مسئلههای کوژ در اختیارتان میگذارد. سوم، مفاهیمی را روشن میکند که در سراسر یادگیری ماشین به چشم میخورند: منظمسازی بهشکل یک قید، دوگانگی (duality) در SVMها، و اینکه چرا یادگیری عمیق علیرغم نقض تمام ویژگیهای خوب کوژی، همچنان موفق عمل میکند.
مفاهیم پایه
مجموعههای کوژ
مجموعهی را کوژ مینامیم اگر برای هر دو نقطهی دلخواه در ، پارهخط بین آنها نیز بهطور کامل درون قرار بگیرد.
| مجموعههای کوژ | غیرکوژ |
|---|---|
| مستطیل: هر دو نقطهی درون آن را میتوان با پارهخطی وصل کرد که کاملاً درون شکل میماند | شکل ستارهای/هلالی: پارهخط بین دو نقطهی داخلی میتواند از مجموعه خارج شود |
| مثلث: همین ویژگی برای تمام نقاط داخلی آن برقرار است | دونات/حلقوی (annulus): وجود سوراخ باعث میشود برخی از پارهخطها از مجموعه بیرون بزنند |
| پارهخط بین هر دو نقطهی دلخواه درون مجموعه باقی میماند | پارهخط بین برخی جفتنقاط از مجموعه خارج میشود |
آزمون صوری: به ازای هر نقطهی در و هر ، نقطهی نیز درون قرار دارد.
نمونههایی از مجموعههای کوژ:
- خط، صفحه، کل فضای
- گوی (دایره، کره، ابرکره)
- نیمفضا (halfspace):
- اشتراک هر تعداد مجموعهی کوژ
نمونههایی از مجموعههای غیرکوژ:
- دونات (حلقه)
- اجتماع دو دایرهی مجزا
- هر مجموعهای که دارای «فرورفتگی» یا «سوراخ» باشد
توابع کوژ
تابع کوژ است اگر دامنهی آن یک مجموعهی کوژ باشد و برای هر دو نقطهی در دامنهاش و هر داشته باشیم:
از نظر هندسی: پارهخط رابط میان هر دو نقطه روی نمودار تابع، همواره بالای نمودار یا روی آن قرار میگیرد.
| ویژگی | تابع کوژ | تابع غیرکوژ |
|---|---|---|
| آزمون پارهخط | خط بین هر دو نقطه روی نمودار، بالا یا روی منحنی قرار دارد | خط بین برخی از نقاط روی نمودار، به زیر منحنی فرو میرود |
| شکل هندسی | یک کاسه/درهی منفرد با انحنای رو به بالا | قلهها و درههای متعدد با انحناهای متغیر |
| کمینههای محلی | هر کمینهی محلی همان کمینهی سراسری است | چندین کمینهی محلی با مقادیر متفاوت میتوانند وجود داشته باشند |
توابع کوژ رایج:
- (سهمی)
- (قدر مطلق)
- (نمایی)
- (ReLU، گرچه تکهبهتکه خطی است)
- به ازای (منفی لگاریتم)
- هر تابع خطی (هم کوژ و هم کاو)
آزمونهای بررسی کوژی
سه آزمون کاربردی، از سادهترین تا دقیقترین روش:
آزمون 1: آزمون مشتق دوم (یکبعدی). اگر برای تمام داشته باشیم ، آنگاه کوژ است.
- : . کوژ است.
- : . به ازای منفی میشود. کوژ نیست.
- : . کوژ است.
آزمون 2: آزمون هسیان (چندمتغیره). اگر ماتریس هسیان برای تمام مثبت نیمهمعین (positive semidefinite) باشد، تابع کوژ است. ماتریس هسیان، ماتریسی متشکل از مشتقات پارهای مرتبه دوم است.
آزمون 3: آزمون با تعریف. نامساوی را مستقیماً بررسی کنید. این آزمون برای توابعی که محاسبهی مشتق آنها دشوار است کاربرد دارد.
چرا کوژی اهمیت دارد؟
قضیهی بنیادین بهینهسازی کوژ:
در یک تابع کوژ، هر کمینهی محلی همان کمینهی سراسری است.
این یعنی گرادیان کاهشی نمیتواند در یک کمینهی محلی نامطلوب گیر بیفتد. هر کمینهای که الگوریتم به آن برسد مقدار زیان یکسانی دارد. برای یک تابع کوژ هموار که کمینه دارد، همگرایی گرادیان کاهشی با اندازهی گام مناسب به مقدار بهینه تضمینشده است.
پیامدها:
- نیازی به راهاندازیهای تصادفی مجدد نیست
- به زمانبندیهای پیچیده برای نرخ یادگیری احتیاجی ندارید
- اثبات ریاضی همگرایی ممکن است (سرعت همگرایی به ویژگیهای تابع بستگی دارد)
- پاسخ مسئله یکتا است (بهجز در بخشهای کاملاً مسطح)
مسئلههای کوژ در برابر غیرکوژ در یادگیری ماشین
| مسئله | کوژ؟ | دلیل |
|---|---|---|
| رگرسیون خطی (MSE) | بله | تابع زیان نسبت به وزنها درجه دوم است |
| رگرسیون لجستیک | بله | زیان لگاریتمی (log-loss) نسبت به وزنها کوژ است |
| SVM (با hinge loss) | بله | بیشینهی توابع خطی است |
| LASSO (رگرسیون با L1) | بله | مجموع توابع کوژ، کوژ است |
| رگرسیون ستیغی (L2) | بله | درجه دو + درجه دو = کوژ |
| شبکهی عصبی (با هر زیانی) | خیر | توابع فعالساز غیرخطی چشمانداز ناکوژ میسازند |
| خوشهبندی k-means | خیر | گام تخصیص گسسته است |
| فاکتورگیری ماتریسی (Matrix factorization) | خیر | حاصلضرب متغیرهای مجهول است |
مدلهای خطی با توابع زیان کوژ، کوژ هستند. اما بهمحض اینکه لایههای پنهان را با توابع فعالساز غیرخطی اضافه کنید، خاصیت کوژی از بین میرود.
ماتریس هسیان
ماتریس هسیان برای یک تابع ، یک ماتریس از مشتقات پارهای مرتبه دوم است.
برای :
ماتریس هسیان انحنای تابع را توصیف میکند:
- تمام مقادیر ویژه مثبت: تابع در تمام جهات رو به بالا خم میشود (در آن نقطه کوژ است)
- تمام مقادیر ویژه منفی: در تمام جهات رو به پایین انحنا دارد (کاو، یک بیشینهی محلی)
- علامتهای مختلف: نقطهی زینی (در برخی جهات رو به بالا و در برخی رو به پایین خم میشود)
- مقدار ویژهی صفر: در آن جهت مسطح است (تباهیده)
برای کوژ بودن، ماتریس هسیان باید همهجا مثبت نیمهمعین باشد (یعنی همهی مقادیر ویژه باشند)، نه فقط در یک نقطه.
روش نیوتن
گرادیان کاهشی از اطلاعات مرتبه اول (گرادیان) بهره میبرد. روش نیوتن از اطلاعات مرتبه دوم (هسیان) استفاده میکند؛ یعنی یک تقریب درجه دو در نقطهی فعلی برازش میدهد و مستقیماً به کمینهی آن تقریب میجهد.
روش نیوتن نرخ یادگیری اسکالر را با معکوس ماتریس هسیان جایگزین میکند. این کار اندازهی گام و جهت حرکت را بهطور خودکار بر اساس انحنای محلی تنظیم میکند.
مزایا:
- همگرایی درجه دو در نزدیکی کمینه (خطا در هر گام به توان دو میرسد)
- عدم نیاز به تنظیم نرخ یادگیری
- مستقل از مقیاس (صرفنظر از نحوهی پارامتربندی مسئله کار میکند)
معایب:
- محاسبهی هسیان به حافظهای از مرتبهی نیاز دارد و معکوس کردن آن هزینهی محاسباتی دارد
- برای یک شبکهی عصبی با 1 میلیون وزن، این یعنی ذخیرهی درایه و انجام عملیات محاسباتی
- برای یادگیری عمیق عملی نیست
بهینهسازی مقید
بهینهسازی نامقید: کمینهسازی روی تمام مقادیر . بهینهسازی مقید: کمینهسازی با رعایت قیدها.
مسئلههای واقعی همواره قید دارند. میخواهید هزینه را کمینه کنید اما بودجهتان محدود است. میخواهید خطا را به حداقل برسانید اما پیچیدگی مدل باید مهار شود.
ضرایب لاگرانژ
روش ضرایب لاگرانژ مسئلهی مقید را به یک مسئلهی نامقید تبدیل میکند.
صورت مسئله: کمینهسازی مشروط به .
روش حل: تعریف یک متغیر جدید (ضریب لاگرانژ ) و حل مسئلهی نامقید زیر:
در نقطهی بهینه، گرادیان برابر با صفر است:
شهود هندسی: در کمینهی مقید، گرادیان باید موازی با گرادیان قید باشد. اگر موازی نبودند، میتوانستید روی سطح قید حرکت کنید و مقدار را از این هم کمتر کنید.
مثال: کمینهسازی مشروط به .
نزدیکترین نقطه روی خط به مبدأ، نقطهی است.
شرایط KKT
شرایط کاروش-کون-تاکر (Karush-Kuhn-Tucker یا KKT) روش ضرایب لاگرانژ را به قیود نامساوی تعمیم میدهند.
صورت مسئله: کمینهسازی مشروط به به ازای .
شرایط KKT (شروط لازم برای بهینگی):
سستی مکمل (Complementary slackness) نکتهی کلیدی است: یا قید فعال است (، یعنی جواب دقیقاً روی مرز قرار دارد) یا ضریب لاگرانژ صفر است (یعنی قید اهمیتی ندارد). قیدی که تاثیری روی پاسخ نگذارد، دارای ضریب خواهد بود.
شرایط KKT نقش محوری در SVMها دارند. بردارهای پشتیبان دقیقاً همان نقاط دادهای هستند که قید آنها فعال است (). سایر نقاط داده دارای هستند و هیچ اثری روی مرز تصمیمگیری نمیگذارند.
منظمسازی بهشکل بهینهسازی مقید
منظمسازیهای L1 و L2 صرفاً ترفندهایی اختیاری نیستند، بلکه در اصل همان مسئلههای بهینهسازی مقید هستند.
منظمسازی L2 (ستیغی):
قید یک گوی تعریف میکند (دایره در دوبعد، کره در سهبعد). نقطهی بهینه جایی است که خطوط تراز (کانتور) زیان برای اولین بار با این گوی مماس میشوند.
منظمسازی L1 (الگوریتم LASSO):
قید یک لوزی تعریف میکند (مربع چرخاندهشده در فضای دوبعدی).
| ویژگی | قید L2 (دایره) | قید L1 (لوزی) |
|---|---|---|
| شکل قید | دایره (کره در ابعاد بالاتر) | لوزی (مربع چرخاندهشده در دوبعد) |
| محل تماس کانتور زیان | مرز هموار — هر نقطهای روی دایره | گوشهها — همراستا با محورهای مختصات |
| رفتار جواب | وزنها کوچک میشوند اما غیرصفر میمانند | برخی وزنها دقیقاً صفر میشوند (تنک) |
| نتیجه | انقباض وزنها (Weight shrinkage) | انتخاب ویژگی (Feature selection) |
این تفاوت نشان میدهد چرا L1 مدلهایی تنک (با قابلیت انتخاب ویژگی) تولید میکند اما L2 فقط وزنها را منقبض میکند. لوزی گوشههایی دارد که در راستای محورها قرار گرفتهاند؛ بنابراین احتمال برخورد خطوط کانتور زیان با یک گوشه بسیار بیشتر است که باعث میشود یک یا چند وزن دقیقاً برابر صفر شوند.
دوگانگی
هر مسئلهی بهینهسازی مقید (مسئلهی اولیه یا primal)، یک مسئلهی همزاد (مسئلهی دوگان یا dual) دارد. در مسئلههای کوژ، مقدار بهینهی مسئلهی اولیه و دوگان یکسان است؛ به این پدیده دوگانگی قوی (strong duality) میگویند.
تابع دوگان لاگرانژ:
چرا دوگانگی اهمیت دارد:
- حل مسئلهی دوگان گاهی سادهتر از مسئلهی اولیه است.
- SVMها در فرمولبندی دوگان حل میشوند، جایی که مسئله به ضرب داخلی بین نقاط داده وابسته است (و امکان استفاده از ترفند کرنل یا kernel trick را فراهم میکند).
- مسئلهی دوگان یک کران پایین برای مقدار بهینهی اولیه فراهم میکند که برای سنجش کیفیت جواب بسیار مفید است.
بهطور خاص برای SVMها:
Primal: find w, b that maximize the margin 2/||w|| subject to
y_i(w^T x_i + b) >= 1 for all i
Dual: maximize sum(alpha_i) - 0.5 * sum_ij(alpha_i * alpha_j * y_i * y_j * x_i^T x_j)
subject to alpha_i >= 0 and sum(alpha_i * y_i) = 0
The dual only involves dot products x_i^T x_j.
Replace x_i^T x_j with K(x_i, x_j) to get the kernel trick.
چرا یادگیری عمیق با وجود ناکوژ بودن کار میکند؟
توابع زیان در شبکههای عصبی بهشدت ناکوژ هستند. طبق تمام معیارهای کلاسیک، بهینهسازی آنها باید با شکست مواجه میشد. با این حال، بهینهساز گرادیان کاهشی تصادفی (SGD) بهطور پیوسته جوابهای خوبی پیدا میکند. چند عامل این موضوع را توضیح میدهند:
بیشتر کمینههای محلی بهاندازهی کافی خوب هستند. در فضاهایی با ابعاد بالا، نقاط بحرانی تصادفی (جاهایی که گرادیان صفر است) بهاحتمال قریب به اتفاق نقاط زینی هستند، نه کمینههای محلی. کمینههای محلی اندکی هم که وجود دارند، مقادیر زیانشان بسیار نزدیک به کمینهی سراسری است. گیر افتادن در یک کمینهی محلی فاجعهبار در فضایی با میلیونها بُعد، بینهایت بعید است.
نقاط زینی مانع اصلی هستند، نه کمینههای محلی. در تابعی با پارامتر، یک نقطهی زینی دارای ترکیبی از جهات با انحنای مثبت و منفی است. برای یک نقطهی بحرانی تصادفی در ابعاد بالا، احتمال اینکه تمام مقدار ویژه مثبت باشند (کمینهی محلی) تقریباً برابر با است. تقریباً تمام نقاط بحرانی در واقع نقاط زینی هستند؛ نوفهی (noise) موجود در SGD به فرار از آنها کمک میکند.
پارامترسازی بیش از حد چشمانداز را هموار میکند. شبکههایی که تعداد پارامترهایشان بیشتر از تعداد دادههای آموزشی است، سطوح زیان هموارتر و بههمپیوستهتری دارند. شبکههای عریضتر کمینههای محلی بد کمتری دارند. این گزاره با شهود اولیه ناسازگار به نظر میرسد، اما از نظر تجربی کاملاً ثابت شده است.
ساختار چشمانداز زیان:
| ویژگی | فضای کمبعد | فضای پربعد |
|---|---|---|
| چشمانداز | قلهها و درههای مجزای بسیار | درههایی که بهشکلی هموار به هم متصلاند |
| کمینهها | کمینههای محلی مجزای فراوان | کمینههای محلی بد انگشتشمار؛ اغلب آنها نزدیک به بهینهاند |
| پیمایش | یافتن کمینهی سراسری دشوار است | مسیرهای زیادی به جوابهای خوب منتهی میشوند |
| نقاط بحرانی | ترکیبی از کمینههای محلی و نقاط زینی | بهطور قاطع نقاط زینی هستند، نه کمینهی محلی |
نوفهی تصادفی مثل منظمسازی ضمنی عمل میکند. در Mini-batch SGD، نمونهبرداری دستهای تصادفی نوفهای اضافه میکند که مانع از ماندن در کمینههای تیز میشود. کمینههای تیز به بیشبرازش (overfitting) میانجامند، درحالیکه کمینههای مسطح قدرت تعمیم دارند. این نوفه، بهینهسازی را بهسمت نواحی مسطح چشمانداز زیان سوق میدهد.
روشهای مرتبه دوم در عمل
استفاده از روش خالص نیوتن برای مدلهای بزرگ غیرعملی است. چند تقریب مختلف استفاده از اطلاعات مرتبه دوم را امکانپذیر میکنند:
الگوریتم L-BFGS (یا BFGS با حافظهی محدود): معکوس ماتریس هسیان را با استفاده از تفاضل گرادیانها در گام آخر تقریب میزند. این روش بهجای حافظهی تنها به حافظه نیاز دارد. برای مسئلههایی تا حدود 10000 پارامتر بسیار خوب کار میکند. در یادگیری ماشین کلاسیک (رگرسیون لجستیک، CRFها) کاربرد دارد، اما برای یادگیری عمیق مناسب نیست.
گرادیان طبیعی (Natural gradient): بهجای هسیان معمولی از ماتریس اطلاعات فیشر (امید ریاضی هسیان لگاریتم درستنمایی) استفاده میکند. این رویکرد ساختار هندسی توزیعهای احتمال را در نظر میگیرد. الگوریتم K-FAC با تقریب ماتریس فیشر بهصورت حاصلضرب کرونکر، استفاده از آن را برای شبکههای عصبی عملی میکند.
بهینهسازی بدون هسیان (Hessian-free optimization): با استفاده از گرادیان مزدوج، معادلهی را بدون تشکیل صریح ماتریس حل میکند. این روش فقط به حاصلضربهای هسیان در بردار نیاز دارد که با مشتقگیری خودکار در زمان قابل محاسبه است.
تقریبهای قطری: گشتاور دوم در Adam در حقیقت یک تقریب قطری از قطر ماتریس هسیان است. الگوریتم AdaHessian با استفاده از برآوردگر هاچینسون، درایههای واقعی قطر هسیان را تخمین میزند و این ایده را گسترش میدهد.
| روش | حافظه | هزینهی هر گام | زمان استفاده |
|---|---|---|---|
| گرادیان کاهشی | پایهای، مدلهای بزرگ | ||
| روش نیوتن | مسئلههای کوژ کوچک | ||
| L-BFGS | مسئلههای کوژ متوسط | ||
| Adam | گزینهی پیشفرض یادگیری عمیق | ||
| K-FAC | به ازای هر لایه | کارهای پژوهشی، آموزش با دستههای بزرگ |
پیادهسازی گامبهگام
گام 1: بررسیکنندهی کوژی تابع
تابعی بسازید که کوژ بودن را بهصورت تجربی با نمونهبرداری از نقاط و بررسی تعریف ریاضی آن بیازماید.
import random
import math
def check_convexity(f, dim, bounds=(-5, 5), samples=1000):
violations = 0
for _ in range(samples):
x = [random.uniform(*bounds) for _ in range(dim)]
y = [random.uniform(*bounds) for _ in range(dim)]
t = random.uniform(0, 1)
mid = [t * xi + (1 - t) * yi for xi, yi in zip(x, y)]
lhs = f(mid)
rhs = t * f(x) + (1 - t) * f(y)
if lhs > rhs + 1e-10:
violations += 1
return violations == 0, violations
گام 2: روش نیوتن برای توابع دوبعدی
روش نیوتن را با استفاده از ماتریس هسیان صریح پیادهسازی کنید و سرعت همگرایی آن را با گرادیان کاهشی بسنجید.
def newtons_method(f, grad_f, hessian_f, x0, steps=50, tol=1e-12):
x = list(x0)
history = [x[:]]
for _ in range(steps):
g = grad_f(x)
H = hessian_f(x)
det = H[0][0] * H[1][1] - H[0][1] * H[1][0]
if abs(det) < 1e-15:
break
H_inv = [
[H[1][1] / det, -H[0][1] / det],
[-H[1][0] / det, H[0][0] / det],
]
dx = [
H_inv[0][0] * g[0] + H_inv[0][1] * g[1],
H_inv[1][0] * g[0] + H_inv[1][1] * g[1],
]
x = [x[0] - dx[0], x[1] - dx[1]]
history.append(x[:])
if sum(gi ** 2 for gi in g) < tol:
break
return history
گام 3: حلکنندهی ضریب لاگرانژ
بهینهسازی مقید را با استفاده از گرادیان کاهشی روی فرمول لاگرانژ حل کنید.
def lagrange_solve(f_grad, g_val, g_grad, x0, lr=0.01,
lr_lambda=0.01, steps=5000):
x = list(x0)
lam = 0.0
history = []
for _ in range(steps):
fg = f_grad(x)
gv = g_val(x)
gg = g_grad(x)
x = [
xi - lr * (fgi + lam * ggi)
for xi, fgi, ggi in zip(x, fg, gg)
]
lam = lam + lr_lambda * gv
history.append((x[:], lam, gv))
return history
گام 4: مقایسهی روشهای مرتبه اول و مرتبه دوم
گرادیان کاهشی و روش نیوتن را روی یک تابع درجه دوم یکسان اجرا کنید و تعداد گامهای لازم تا همگرایی را بشمارید.
def quadratic(x):
return 5 * x[0] ** 2 + x[1] ** 2
def quadratic_grad(x):
return [10 * x[0], 2 * x[1]]
def quadratic_hessian(x):
return [[10, 0], [0, 2]]
روش نیوتن در 1 گام همگرا خواهد شد (چون برای توابع درجه دوم کاملاً دقیق عمل میکند). اما گرادیان کاهشی صدها گام طول خواهد کشید؛ زیرا مقادیر ویژهی هسیان با ضریب 5 با یکدیگر تفاوت دارند و درهای کشیده ایجاد میکنند.
کاربرد در دنیای واقعی
تحلیل کوژی مستقیماً هنگام انتخاب مدلها و بهینهسازهای یادگیری ماشین کاربرد دارد.
برای مسئلههای کوژ (رگرسیون لجستیک، SVM، LASSO):
- از بهینهسازهای اختصاصی استفاده کنید (liblinear، CVXPY یا
scipy.optimize.minimizeبا متدmethod='L-BFGS-B') - انتظار یک جواب بهینهی سراسری یکتا را داشته باشید
- روشهای مرتبه دوم عملی و بسیار سریع هستند
برای مسئلههای ناکوژ (شبکههای عصبی):
- از روشهای مرتبه اول استفاده کنید (SGD، Adam)
- بپذیرید که پاسخ مدل به مقداردهی اولیه و متغیرهای تصادفی وابسته است
- از پارامترسازی بیش از حد، نوفه و زمانبندی نرخ یادگیری بهعنوان منظمسازی ضمنی کمک بگیرید
- وقت خود را برای پیدا کردن کمینهی سراسری هدر ندهید؛ یک کمینهی محلی مناسب کاملاً کافی است.
from scipy.optimize import minimize
result = minimize(
fun=lambda w: sum((y - X @ w) ** 2) + 0.1 * sum(w ** 2),
x0=np.zeros(d),
method='L-BFGS-B',
jac=lambda w: -2 * X.T @ (y - X @ w) + 0.2 * w,
)
در SVMها، فرمولبندی دوگان امکان استفاده از ترفند کرنل را فراهم میکند:
from sklearn.svm import SVC
svm = SVC(kernel='rbf', C=1.0)
svm.fit(X_train, y_train)
print(f"Support vectors: {svm.n_support_}")
تمرینها
-
گالری توابع کوژ. کوژ بودن این توابع را با بررسیکنندهی ساختهشده بیازمایید: ، ، ، ، . دلیل منطقی هر پاسخ را شرح دهید.
-
مسابقهی روش نیوتن و گرادیان کاهشی. هر دو روش را روی تابع با نقطهی شروع اجرا کنید. هر کدام به چند گام نیاز دارند تا مقدار زیان را به کمتر از 1e-10 برسانند؟ اگر عدد حالت (نسبت بزرگترین مقدار ویژهی هسیان به کوچکترین آن) افزایش یابد، چه بر سر گرادیان کاهشی میآید؟
-
هندسهی ضرایب لاگرانژ. تابع را مشروط به کمینه کنید. با بررسی موازی بودن گرادیان با گرادیان در جواب بهدستآمده، درستی آن را تأیید کنید.
-
قید منظمسازی. بهینهسازی با قید L1 را پیادهسازی کنید: کمینهسازی مشروط به . نشان دهید که در نقطهی بهینه، یکی از مختصات دقیقاً صفر میشود (ایجاد تنکی ناشی از قید لوزیشکل).
-
تحلیل مقادیر ویژهی هسیان. ماتریس هسیان تابع روزنبروک (Rosenbrock) را در دو نقطهی (1,1) و (-1,1) محاسبه کنید و مقادیر ویژهی آن را به دست آورید. این مقادیر ویژه چه نکاتی را دربارهی انحنای تابع در نقطهی کمینه در مقایسه با نقاط دورتر نشان میدهند؟
راهنماییها
تمرین 1. پیش از اجرای check_convexity نتیجه را پیشبینی کنید: در حالت یکبعدی به علامت نگاه کنید؛ در حالت دوبعدی مقادیر ویژهی هسیان را بررسی کنید. برای تابع ، هسیان مقادیر ویژهی 1 و -1 دارد؛ بنابراین بررسیکننده باید گزارش دهد که تابع کوژ نیست.
تمرین 2. توابع optimize_gd و newtons_method را با گرادیان و ماتریس هسیانِ فراخوانی کنید. روش نیوتن یک تابع درجه دو را در یک گام حل میکند. در گرادیان کاهشی، نرخ یادگیری بهخاطر عبارت باید کمتر از باشد؛ بنابراین حرکت در جهت کند خواهد بود. کار را با تکرار کنید و تعداد گامها را دوباره بشمارید.
تمرین 3. از lagrange_solve با ورودی استفاده کنید. در جواب بهدستآمده بررسی کنید که باشد و مضربی از درآید.
تمرین 4. کمینهی نامقید در (3, 2) بیرون از لوزی قرار دارد، بنابراین جواب حتماً روی مرز لوزی است. از گرادیان کاهشی تصویرشده (projected gradient descent) استفاده کنید: یک گام گرادیانی بردارید، سپس نقطه را روی تصویر کنید. بررسی کنید که جواب در قید با تساوی صدق کند و آن را با demo_regularization_geometry مقایسه کنید.
تمرین 5. تابع rosenbrock_hessian را در هر نقطه فراخوانی کنید و خروجی را به hessian_eigenvalues_2d بدهید. در نقطهی (1, 1)، هر دو مقدار ویژه مثبتاند و نسبت آنها بسیار بزرگ است؛ این یعنی دره در یک جهت باریک و در جهت دیگر مسطح است. این نسبت را با نسبت حاصل در (-1, 1) مقایسه کنید.
اصطلاحات کلیدی
| اصطلاح | مفهوم |
|---|---|
| مجموعهی کوژ (Convex set) | مجموعهای که پارهخط بین هر دو نقطهی آن کاملاً درون مجموعه باقی میماند |
| تابع کوژ (Convex function) | تابعی که خط وصلکنندهی هر دو نقطه روی نمودار آن، روی منحنی یا بالای آن باشد. بهبیان دیگر، ماتریس هسیان آن همهجا مثبت نیمهمعین است |
| کمینهی محلی (Local minimum) | نقطهای با مقداری کمتر از تمام نقاط مجاورش. در توابع کوژ، هر کمینهی محلی همان کمینهی سراسری است |
| کمینهی سراسری (Global minimum) | پایینترین نقطهی یک تابع در کل دامنهاش |
| ماتریس هسیان (Hessian matrix) | ماتریس مشتقات پارهای مرتبه دوم که اطلاعات انحنای تابع را بازنمایی میکند |
| مثبت نیمهمعین (Positive semidefinite) | ماتریسی با مقادیر ویژهی نامنفی؛ معادل چندبعدی مفهوم «مشتق دوم >= 0» |
| عدد حالت (Condition number) | نسبت بزرگترین به کوچکترین مقدار ویژهی هسیان. عدد حالت بالا نشاندهندهی درههای کشیده و کندی گرادیان کاهشی است |
| روش نیوتن (Newton's method) | بهینهساز مرتبه دومی که از معکوس هسیان برای تعیین جهت و اندازهی گام بهره میبرد؛ با همگرایی درجه دو نزدیک کمینه |
| ضریب لاگرانژ (Lagrange multiplier) | متغیری کمکی برای تبدیل یک مسئلهی بهینهسازی مقید به مسئلهای نامقید |
| شرایط KKT (یا Karush-Kuhn-Tucker) | شرایط لازم بهینگی برای قیود نامساوی که ضرایب لاگرانژ را تعمیم میدهند |
| سستی مکمل (Complementary slackness) | در نقطهی جواب، یا قید فعال است یا ضریب آن صفر است؛ هیچگاه هر دو همزمان غیرصفر نخواهند بود |
| دوگانگی (Duality) | هر مسئلهی مقید یک مسئلهی مکمل دوگان دارد. در مسئلههای کوژ، مقدار بهینهی هر دو یکسان است |
| دوگانگی قوی (Strong duality) | برابری مقادیر بهینهی اولیه و دوگان؛ در مسائل کوژی که در شرط اسلیتر صدق کنند برقرار است |
| الگوریتم L-BFGS | روش مرتبه دوم تقریبی که بهجای کل هسیان، تنها تفاضل گرادیانها در گام قبلی را ذخیره میکند |
| نقطهی زینی (Saddle point) | نقطهای با گرادیان صفر که در بعضی جهات کمینه و در جهات دیگر بیشینه است |
| پارامترسازی بیش از حد (Overparameterization) | استفاده از پارامترهایی بیش از تعداد نمونههای آموزش که چشمانداز زیان را هموارتر کرده و کمینههای محلی بد را کم میکند |
برای مطالعهی بیشتر
- کتاب Boyd & Vandenberghe: Convex Optimization — کتاب مرجع استاندارد که بهرایگان آنلاین در دسترس است
- مقالهی Bottou, Curtis, Nocedal: Optimization Methods for Large-Scale Machine Learning (2018) — پیوند میان نظریهی بهینهسازی کوژ و کاربرد عملی آن در یادگیری عمیق
- مقالهی Choromanska et al.: The Loss Surfaces of Multilayer Networks (2015) — چرایی عملکرد مناسب چشماندازهای ناکوژ در شبکههای عصبی
- کتاب Nocedal & Wright: Numerical Optimization — مرجعی جامع پیرامون روش نیوتن، L-BFGS و بهینهسازی مقید
