Kernel Trick اجازه میدهد یک ضربِ داخلی در فضایِ ویژگیِ تبدیلشده را با تابعی از ورودیهایِ اصلی حساب کنیم. برایِ فهمِ رابطه، اینجا عمداً نگاشتِ کوچک را هم صریح میسازیم و خانهبهخانه با کرنل مقایسه میکنیم. مثال، آموزشِ SVMیا برازشِ مدل نیست؛ قراردادِ ریاضیِ مقایسهٔ ویژگیها را کنترل میکند.
کرنلِ دقیقِ این صفحه کدام است؟
ورودی دو مختصات دارد و k(x,z)=(xᵀz)²است: درجهٔ۲، ضریبِγبرابرِ۱و جملهٔ ثابتِصفر. نامِ «کرنلِچندجملهای» بدونِاین پارامترها کافی نیست. درAPIممکن است پیشفرضِمقیاس متفاوت باشد؛ ما scikit-learnرا اجرا نکردهایم و ازپارامترهایِپیشفرضِآن نتیجه نمیگیریم.
برایِ x=(a,b)، نگاشتِ دقیقِچهارمولفهایِ φ₄(x)=(a²،ab،ba،b²)را میگیریم. دو جملهٔ میانی عددِ یکسان دارند، اما هر دو در ضربِ داخلی سهم دارند؛ این نگاشتِبیشکامل را برایِحفظِحسابِکسری انتخاب کردهایم. ضربِدو نگاشت برابرِa²c²+۲abcd+b²d²=(ac+bd)²است.
سه ورودی و یک ماتریسِ Gram
سه ورودیِ آموزشی x₁=(۱،۲)، x₂=(۳،−۱) وx₃=(۰،۱)هستند. نگاشتهایِچهارمولفهای بهترتیب[۱،۲،۲،۴]، [۹،−۳،−۳،۱] و[۰،۰،۰،۱]میشوند. Gramمقایسهٔتمامِجفتِورودیهاست؛ سطر و ستون هر دو به همان ترتیبِنمونهها اشاره دارند.
| نمونه | x₁ | x₂ | x₃ |
|---|---|---|---|
| x₁ | ۲۵ | ۱ | ۴ |
| x₂ | ۱ | ۱۰۰ | ۱ |
| x₃ | ۴ | ۱ | ۱ |
برایِخانهٔ x₁باx₂، ضربِورودیهایِاصلی۱×۳+۲×(−۱)=۱و مربعش۱است. درفضایِتبدیلشده هم۱×۹+۲×(−۳)+۲×(−۳)+۴×۱=۱میشود. برنامه تمامِنه خانه را به دو روش میسازد و برابریِدقیق را بررسی میکند؛ جدول ازیک مسیرِمحاسبه کپی نشده است.
جملهٔ برهمکنش را بیمقیاس حذف نکنیم
میتوان ازنگاشتِسهمولفهایِ φ₃(x)=(a²،√۲ab،b²)هم استفاده کرد. ضریبِ√۲ باعث میشود سهمِمیانی درضربِدو نگاشت،۲abcdباشد. کد این نسخه را باfloatو آستانهٔ۱۰بهتوانِ−۱۲کنترل میکند؛ ولی محاسبهٔاصلیِچهارمولفهای همچنان Fractionدقیق است.
اگر اشتباهاً[a²،ab،b²]را نگه داریم، درهمان جفتِ x₁وx₂عدد۷میگیریم، نه۱. برنامه این اختلاف را واقعاً حساب میکند. «تعدادِستون کمتر شد» مجوزِتغییرِمقیاس ونامیدنِآن بهعنوانِهمان کرنل نیست. نگاشتهایِدیگر میتوانند معتبر باشند، اما باید رابطهٔخودشان را دقیق تعریف کنند.
مثبتنیمهمعین یعنی چه؟
اگر ماتریسِ Φسطرهایِنگاشتشده را داشته باشد، K=ΦΦᵀاست. برایِهر بردارِضرایبِc، داریم cᵀKc=(Φᵀc)ᵀ(Φᵀc)=‖Φᵀc‖²≥۰. این رابطه دلیلِمثبتنیمهمعینبودنِGramِاین نگاشت برایِهر مجموعهٔورودی است؛ فقط آزمودنِچند cچنین اثباتی نمیساخت.
برایِیک کنترلِعدددار، c=(۱،−۱،۲)را میگذاریم. ترکیبِویژگیها[−۸،۵،۵،۵]و مجموعِمربعش۱۳۹است؛ محاسبهٔ cᵀKcهم۱۳۹میشود. مثبتنیمهمعین را با مثبتمعین یا وارونپذیریِهمهٔGramها یکی نگیرید؛ ورودیهایِتکراری یا وابستگیِویژگی میتواند دستگاه را تکین کند.
پرسشِ تازه را با نمونههایِ آموزش مقایسه کنیم
برایِ q=(۲،۱)، کرنل با سه ورودی بهترتیب۱۶،۲۵،۱میشود. همان سه مقدار با φ₄(q)و سطرهایِΦنیز به دست میآیند. اینها شباهتِکرنلیاند، نه احتمالِکلاس؛ مقدارِ۲۵نباید به۲۵درصدِاطمینان تبدیل شود. هیچ برچسبِکلاس یا وزنِمدلی دراین فایل نداریم.
درکارِواقعی، انتخابِکرنل و پارامتر به داده و ارزیابیِمستقل نیاز دارد. محاسبهٔکرنل ممکن است نیاز به نوشتنِویژگیِتبدیلشده را حذف کند، اما ماتریسِجفتها هم میتواند بزرگ شود؛ «هیچ حافظهای لازم نیست» نتیجهٔدرستی نیست. این تمرین سرعت، حافظه یا دقتِمدل را اندازه نگرفته است.
پیشنیاز و مسیرِادامه
مثالِ SVMو حاشیه هندسهٔمرزِخطی را دارد؛ اینجا نگاشت و ضربِداخلیِمعادل موضوع بود. رگرسیونِچندجملهای ضرایبِیک پایه را برازش میدهد؛ این صفحه آن برازش را تکرار نکرده است. کدِحاضر فقط دو مختصاتِکسری میپذیرد و بعدِغلط وboolرا واقعاً رد میکند. برایِنیازِپاسخگوییِمشتری، خروجی وشاهدِپذیرش را در راهکارهایِاپرا روشن کنید؛ این مثال فناوریِداخلیِمحصول را اعلام نمیکند.
فایل تمرین و منبع
نگاشتِ صریح، Gram، جملهٔ برهمکنش و query؛ Python · دو Gramِ برابر و خطایِ واقعیِ مقیاسِ جملهٔ میانی
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.