مشتق میگوید تغییرِ کوچکِ ورودی چه اثری بر خروجیِ تابع دارد. وقتی ورودی چند مؤلفه دارد و خروجی یک عدد است، مشتقهایِ جزئی کنارِ هم گرادیان را میسازند. اگر خروجی هم چند مؤلفه داشته باشد، باید مشخص کنیم مشتقِ کدام خروجی نسبت به کدام ورودی را میخواهیم؛ آن جدول Jacobian است.
یک ورودیِ دوعددی، دو خروجی
تابعِ ساختگیِ g را با دو خروجی تعریف میکنیم: g1=u²+v و g2=u×v. در نقطهٔ u=2 و v=3، خروجیها هفت و ششاند. این تابع، شبکهٔ آموزشدیده یا مدلِ احتمال نیست؛ برایِ دیدنِ تفاوتِ شکلِ مشتقها انتخاب شده است. واحد و معنایِ u و v نیز آموزشیاند.
قراردادِ جدولِ ما، ردیف برایِ خروجی و ستون برایِ ورودی است. مشتقِ g1 نسبت به u برابرِ 2u و نسبت به v برابرِ یک است. مشتقهایِ g2 نسبت به u و v بهترتیب v و u هستند. پس Jacobian در نقطهٔ انتخابی دو ردیفِ [۴،۱] و [۳،۲] دارد؛ ردیفِ نخست گرادیانِ g1 است، نه گرادیانِ همهٔ خروجیها با یکدیگر.
یک خروجیِ اسکالر از دو خروجی بسازیم
حالا L=g1+2g2 را تعریف میکنیم. مشتقِ L نسبت به دو خروجیِ g، بردارِ [۱،۲] است. با قاعدهٔ زنجیرهای، گرادیانِ L نسبت به ورودی از Jᵀ×[۱،۲] به دست میآید. مؤلفهٔ نخست ۴×۱+۳×۲ یعنی ده و مؤلفهٔ دوم ۱×۱+۲×۲ یعنی پنج است.
| شیء | شکل | مقدارِ همین نقطه |
|---|---|---|
| g | دو خروجی | [۷،۶] |
| Jacobianِ g | ۲×۲ | [[۴،۱]،[۳،۲]] |
| گرادیانِ L نسبت به g | دو مؤلفه | [۱،۲] |
| گرادیانِ L نسبت به ورودی | دو مؤلفه | [۱۰،۵] |
بردارِ بالادستی تعیین میکند دو خروجی چگونه در یک مقدار ترکیب شدهاند. اگر آن را عوض کنیم، حاصلِ ضرب هم عوض میشود؛ صرفِ نوشتنِ «گرادیانِ بردار» بدونِ قراردادِ خروجی و محور، میتواند شکلِ موردِ انتظار را پنهان کند.
تفاضلِ مرکزی را واقعاً کنترل کنیم
کد هر مؤلفهٔ ورودی را جدا به اندازهٔ یکهزارم زیاد و کم میکند و تفاضلِ خروجیها را بر دو برابرِ آن گام تقسیم میکند. برایِ چهار خانهٔ Jacobian و دو مؤلفهٔ گرادیانِ L، نتیجه با حسابِ تحلیلی دقیقاً برابر میشود. از Fraction استفاده کردهایم تا خطایِ نمایشِ اعشاری در این کنترلِ کوچک وارد نشود.
برابریِ دقیق برایِ چندجملهایهایِ همین تمرین و قاعدهٔ مرکزیِ انتخابی رخ میدهد. تفاضلِ عددی در تابعِ عمومی میتواند خطایِ تقریب و حساسیت به اندازهٔ گام داشته باشد؛ گامِ خیلی کوچک هم در محاسبهٔ ممیزشناور الزاماً بهتر نیست. این فایل پیادهسازیِ عمومیِ مشتقِ خودکار یا کتابخانهٔ tensor نیست.
مشتقِ جهتدار با یک مؤلفه فرق دارد
جهتِ [۱،−۱] را بگیریم: u زیاد و v به همان اندازه کم میشود. حاصلِ ضربِ داخلیِ گرادیانِ L با این جهت، ۱۰−۵ یعنی پنج است. کد با تغییرِ همزمانِ دو ورودی در همین جهت هم آن را کنترل میکند. این جهت طولِ واحد ندارد؛ عدد را مشتق در امتدادِ همین بردار مینامیم، نه نرخِ تغییر بهازایِ یک واحدِ طولِ نرمالشده.
در مقابل، مشتقِ جزئیِ نسبت به u، مؤلفهٔ دیگر را ثابت میگیرد و اینجا ده است. جهتِ حرکتِ دلخواه و تغییرِ تنها یک مؤلفه را بهجایِ یکدیگر گزارش نکنید. علامتِ مثبت یا منفی هم به انتخابِ جهت و قراردادِ تابع وابسته است.
از محاسبهٔ مشتق تا آموزش فاصله داریم
مستندِ اصلیِ autograd نقشِ حاصلضربِ Jacobian و بردارِ بالادستی را توضیح میدهد؛ در این مثال PyTorch اجرا نشده است. هیچ پارامتر یا سیاستی بهینه نشده، نرخِ یادگیری انتخاب نشده و افتِ زیان در حلقهٔ آموزش سنجیده نشده است. مثالِ گرادیانِ نزولی پس از داشتنِ مشتق، خودِ گامِ بهروزرسانی را حساب میکند.
برایِ ادامهٔ مبانی به راهنمایِ هوش مصنوعی بروید. برایِ یک نیازِ تجاری هم خروجی و معیارِ پذیرش را در راهکارهایِ اپرا روشن کنید؛ دانستنِ نامِ گرادیان کیفیتِ یک خدمت را ثابت نمیکند. فایلِ زیر امکانِ بازتولیدِ همین مشتقها را میدهد.
فایل تمرین و منبع
Jacobian و گرادیانِ خروجیِ اسکالر، با کنترلِ تفاضلِ دقیق · ترتیبِ سطر/ستون، حاصلِ Jᵀv و مشتقِ جهتدار
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.