هسین جدولِ مشتقهایِ دومِ یک تابعِ اسکالر است. گرادیان تغییرِ مرتبهٔ اول را میگوید؛ هسین تغییرِ خودِ گرادیان و خمیدگی را نشان میدهد. در این راهنما H، حاصلِ Hv و عددِ vᵀHv را برایِ تابعِ دوورودی حساب میکنیم. سپس یک نقطهٔ زینی نشان میدهد چرا گرادیانِ صفر بهتنهایی کمینه را ثابت نمیکند.
یک تابعِ مشخص، با ترتیبِ محورِ مشخص
تابعِ آموزشی f(u,v)=u⁴+u²v+v² و ترتیبِ متغیرها(u,v) است. گرادیان دو مؤلفهٔ(۴u³+۲uv،u²+۲v) دارد. مشتقِ دوباره، هسینی با سطرهایِ(۱۲u²+۲v،۲u) و(۲u،۲) میدهد. این چندجملهای هموار است؛ برابرشدنِ دو مشتقِ مختلط در آن قابلِ کنترل است. دربارهٔ تابعِ ناصاف مثلِ نقطهٔ شکستِ ReLU همین فرض را بیبررسی به کار نبرید.
در نقطهٔ(۱،۲) چه میگیریم؟
مقدارِ تابع۷، گرادیان(۸،۵) و هسین با سطرهایِ(۱۶،۲) و(۲،۲) است. ردیف و ستون هر دو به ترتیبِuوv اشاره میکنند؛ یک جدولِ۲×۲ بودن به معنیِ همان Jacobianِ یک تابعِ دوخروجی نیست. اینجا خروجیِ اولیه یک عدد است و جدول، مشتقِ دوم را نگه میدارد.
برایِ جهتِ d=(۱،−۱)، حاصلِ Hd=(۱۴،۰) میشود: خانهٔ اول۱۶−۲ و خانهٔ دوم۲−۲. سپس dᵀHd=۱۴ است. نامِ متغیرِ جهت در کد v است و از متغیرِ دومِ تابع جدا در نظر گرفته شده؛ در متن برایِ رفعِ ابهام آن را d نوشتیم. طولِ این جهت√۲ است، پس۱۴ خمیدگیِ جهتِ واحد نیست؛ برایِ واحدکردنِ همین جهت، عدد بر۲ تقسیم میشود و۷ میگیریم.
Hv را با تغییرِ گرادیان کنترل کنیم
H(z) d ≈ [grad(z + h*d) - grad(z - h*d)] / (2*h)کد با دو گامِ h=۱÷۱۰۰۰ و h=۱÷۲۰۰۰، گرادیان را در دو طرفِ نقطه حساب میکند. نتیجهٔ اول(۱۴٫۰۰۰۰۰۴،۰) و دوم(۱۴٫۰۰۰۰۰۱،۰) است. اختلاف با(۱۴،۰) صفر نیست: بهترتیبچهار میلیونیم و یک میلیونیم در مؤلفهٔ اول است؛ دقیقتر،۴×h² میشود. نصفکردنِ گام در همین چندجملهای، این خطایِ تقریب را چهار برابر کم میکند.
حساب با Fraction است؛ بنابراین این اختلاف، خطایِ تقریبِ تفاضل است و از گردکردنِ ممیزشناور نیامده. از آن نتیجه نمیگیریم که در همهٔ تابعها یا حسابِ ممیزشناور، گامِ کوچکتر همیشه بهتر است. فایلِ JSON مقدارِ h، تخمین و اختلافِ دقیق را جدا نگه میدارد و آنها را «برابریِ دقیق با مشتق» نمینامد.
گرادیانِ صفر، اما جهتِ بالا و پایین داریم
تابعِ دوم g(u,v)=u²−v² است. در مبدأ گرادیان(۰،۰) و هسین با قطرِ(۲،−۲) داریم. در جهتِ واحدِ محورِu، خمیدگی۲ و در جهتِ واحدِ محورِv منفی۲ است. برایِ t=۰٫۱، مقدارِ g(t,0)=۰٫۰۱ و g(0,t)=−۰٫۰۱ میشود. نزدیکِ مبدأ هم مقدارِ بزرگتر و هم کوچکتر از صفر پیدا کردهایم؛ پس این نقطه کمینه نیست.
| کمیت | چه چیزی میگوید؟ | چه چیزی را بهتنهایی ثابت نمیکند؟ |
|---|---|---|
| گرادیان | تغییرِ مرتبهٔ اول | نوعِ همهٔ نقاطِ ایستا |
| Hd | تغییرِ گرادیان در جهتِ d | کیفیتِ یک مدلِ آموزشدیده |
| dᵀHd | خمیدگی در جهتِ مشخص | علامت در همهٔ جهتهایِ دیگر |
هسینِ صفر یا نیمهمعین چه محدودیتی دارد؟
اگر آزمونِ مشتقِ دوم به جهتِ صفر برسد، بهتنهایی حکمِ نهایی نمیدهد؛ جملههایِ مرتبهٔ بالاتر هم ممکن است مهم باشند. همچنین مثبتبودنِ dᵀHd فقط برایِ یک جهت، مثبتمعینبودنِ کلِ H را ثابت نمیکند. در نقطهٔ زینیِ مثال، انتخابِ تنها محورِu میتوانست جهتِ نزولیِ محورِv را پنهان کند.
در کارِ بزرگ، گاهی حاصلِ ضربِ هسین در بردار لازم است و نیازی به ذخیرهٔ کلِ ماتریس نداریم؛ منبعِ SciPy این رابط را توضیح میدهد. فایلِ ما برایِ شفافیت، H کوچک را صریح میسازد؛ صرفهجوییِ حافظه یا سرعت اندازه نگرفتهایم. PyTorch و SciPy اجرا نشدهاند و هیچ الگوریتمِ بهینهسازی یا آموزشِ مدل در این تمرین وجود ندارد.
پیشنیاز و قدمِ بعد
مشتق، گرادیان و Jacobian جدولِ مرتبهٔ اول و بردارِ بالادستی را توضیح میدهد؛ اینجا مشتقِ دومِ اسکالر و خمیدگی موضوع است. گرادیانِ نزولی خودِ بهروزرسانی را اجرا میکند. برایِ یک پروژهٔ پاسخگوییِ مشتری، ابتدا خروجی و آزمونِ پذیرش را در راهکارهایِ اپرا مشخص کنید؛ دانستنِ نامِ روش، شاهدِ دقتِ محصول نیست.
فایل تمرین و منبع
هسینِ تحلیلی و خطایِ تفاضلِ مرکزی؛ Python · H و Hv، دو گامِ تقریب و دو جهتِ نقطهٔ زینی
- PyTorch؛ تعریفِ هسین برایِ تابعِ اسکالر، بدونِ اجرایِ کتابخانه در این تمرین
- SciPy؛ بخشِ Hessian product، تمایزِ حاصلِ ضرب با ذخیرهٔ کلِ ماتریس
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.