ویژگیهایِ تصادفیِ فوریه یک نگاشتِ غیرخطیِ ثابت میسازند تا ضربِ داخلیِ ویژگیها، کرنلِ هدف را تقریب بزند. «تصادفی» به معنیِ قرعهکشیِ تازه برای هر query نیست. در این مثال، ۶۴ فرکانس را یکبار میگیریم، خطایِ سه اندازه را رویِ همان پیشوندها میخوانیم و میبینیم خطا در این اجرایِ محدود یکنواخت کم نشده است.
کرنلِ هدف و نگاشتِ اجراشده
چهار ورودیِ اصیل [−۰٫۷، ۰، ۰٫۴، ۱٫۱] و کرنلِ Gaussian با lengthscale=۱ داریم؛ K(x,y)=exp(−(x−y)²/۲). با NumPyGenerator و seed=۱، ۶۴ω از Normal(۰، ۱) یکبار ساخته میشود. تمامِ آرایه، نسخهٔ NumPy۲٫۳٫۵ و شناسهٔ هشِ پروفایل در JSON قرار دارند.
برای D فرکانسِ نخست، z(x) را از کنارِ همگذاشتنِ cos(ωx) و sin(ωx) و تقسیم بر√D میسازیم؛ پس بعدِ ویژگی ۲ D است. این نسخهٔ pairedcos/sin اقتباسِ روشن از ویژگیِ دایرهایِ منبع است؛ Algorithm۱ منبع، نسخهٔ random-phase با منطقِ دیگری برای D مؤلفه دارد و کدِ ما عینِ آن نیست.
هر شانزده خانهٔ Gram را کنترل کنیم
برای هر D، ماتریسِ Z را میسازیم و Gram=ZZᵀرا حساب میکنیم. مرجعِ مستقل برای هر جفت، میانگینِ cos(ω_j×(x−y)) را میگیرد؛ هویتِ مثلثاتی پاسخها را در تلورانسِ آزمون برابر میکند. در کنارِ آن، کرنلِ هدف با exp مستقیم ساخته و خطایِ هر خانه سنجیده میشود.
قطرِ Gram تقریباً ۱ است، اما این به معنیِ برابرشدنِ تمامِ ماتریس با RBF نیست. برای هر c، رابطهٔ cᵀGram c=‖Zᵀc‖²نامنفیبودنِ این Gram را توضیح میدهد؛ سه بردارِ نمونه هم کنترل شدهاند. نامنفیبودنِ گرام، گواهِ دقتِ نامحدودِ تقریب نیست.
D بیشتر، در این مسیر خطا را همیشه کم نکرد
| فرکانسهایِ همان پیشوند | بعدِ ویژگی | بیشترینِ خطایِ مطلقِ همین ۱۶ خانه |
|---|---|---|
| ۴ | ۸ | حدود ۰٫۱۰۸۶۲۹ |
| ۱۶ | ۳۲ | حدود ۰٫۳۱۸۶۶۸ |
| ۶۴ | ۱۲۸ | حدود ۰٫۱۸۳۱۰۱ |
برای D=۱۶، خطا از D=۴ بیشتر است و بعد در D=۶۴ کمتر میشود؛ همچنان از ابتدایِ جدول بیشتر مانده است. این شاهدِ واقعی را با انتخابِ seed مطلوب حذف نکردهایم. ادعاهایِ احتمالیِ منبع دربارهٔ توزیعِ نگاشتها، قولِ بهبودِ تکتکِ پیشوندهایِ یک قرعه نیستند.
این جدول فقط چهار نقطه، یک seed و یک lengthscale است؛ نه benchmark آموزش، تضمینِ خطایِ همهٔ ورودیها یا سنجشِ کیفیتِ ASR و TTS. منبع برای ایدهٔ کرنلِ shift-invariant خوانده شده و نتیجهٔ دادهٔ واقعیِ مقاله به محصول نسبت داده نمیشود.
مقیاس و نگاشتِ query را ثابت نگه داریم
اگر تقسیم بر√D را حذف کنیم، قطرِ Gram برای D=۴ به ۴ میرسد. کد مسیرِ غلط را واقعاً میسازد؛ نامِ feature یکسان، ضریبِ ضربِ داخلی را خودکار درست نمیکند. آرایهٔ omega، lengthscale، نوعِ نگاشت و اندازه باید همراهِ قرارداد باقی بمانند.
query تازهٔ ۰٫۲ با همان ۱۶ فرکانس تبدیل میشود و cross-Gram با مجموعِ مستقلِ cos کنترل میشود. شاهدِ غلطِ جدا از فرکانسهایِ تازه با seed=۲ برای query است؛ cross-Gram عوض میشود. تابعِ آموزشی خودش پایگاهِ نسخه یا خدمتِ عملیاتی نیست؛ caller باید همان نگاشت را آگاهانه نگه دارد.
این ویژگیها آموختهشده نیستند
یازده حالتِ نامعتبر، از کمینه و بیشینهٔ int64 تا lengthscale صفر و نامتناهی تا bool، مقدارِ غیرمتناهی، شکلِ نادرست و فرکانسهایِ بیش از ۶۴ رد میشوند. ورودی حداکثر ۸ نقطه با قدرِ حداکثر ۱۰ دارد. کرانِ فرکانس با مقایسهٔ مستقیمِ کوچکتر از −۱۰۰ یا بزرگتر از ۱۰۰ کنترل میشود؛ قدرِ مطلقِ کمینهٔ int64 در نوعِ صحیح میتواند سرریز کند. دو مرزِ −۱۰۰ و ۱۰۰ واقعاً پذیرفته ودو انتهایِ int64 رد شدهاند. فرکانسها از کوواریانسِ آموزش برازش نشدهاند؛ این قسمت با whitening تفاوت دارد.
نگاشتِ چندجملهایِ دقیق ضربِ داخلیِ برابر را میسازد و GP پسینِ مشترک با کرنلِ معلوم میدهد؛ اینجا خودِ کرنل تقریب زده میشود. ادامه در مبانی هوش مصنوعی؛ مدل، برچسب، آموزشِ scikit-learn یا صرفهجوییِ عملیاتیِ اپرا اجرا نشده است.
فایل تمرین و منبع
کد کاملِ تمرینِ مستقل و کنترلها؛ Python · ورودی و تمامِ خروجیِ اجرای واقعی؛ JSON
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.