Autoencoderیا خودرمزگذار، بازنمایی میانی میسازد و برای بازسازی ورودی آموزش میبیند. برای دیدن خودِ هدف بازسازی، یک encoderثابت وdecoderدوخروجیِ غیرخطی تعریف میکنیم و فقط چهار پارامترdecoderرا ده گام تنظیم میکنیم. این یک تمرین کوچکِ واقعاً اجراشده است؛ encoderرا آموزش نمیدهیم و نتیجه را به تصویر،صدا یا دادهٔ تازه تعمیم نمیدهیم.
این تمرین چه تفاوتی با PCAدارد؟
مثال PCA محورِ نگهدارندهٔ واریانس و تصویر خطی داده را حساب میکند. در اینجا محور کوواریانس یا مقدار ویژه نداریم؛ خروجیdecoderازSigmoidمیگذرد و پارامترهایش برای کمکردن زیان بازسازی بهروزرسانی میشوند. مسئلهٔ آموزشی، تغییر پیشبینیِ بازسازی بر اثر هدف و گرادیان است، نه عوضکردن نام یک پروجکشن.
در خودرمزگذارهای معمول،encoderهم میتواند آموزش ببیند. ثابتگرفتن آن انتخابِ سادهساز این تمرین است؛ آن را روش کامل یا نسخهٔ استاندارد همهٔAutoencoderها معرفی نمیکنیم. کمبعدبودن تنها یکی از قراردادهای ممکن است و به معنی رمزنگاری امنیتی یا فشردهسازی بدون اتلاف نیست.
دو بردار و یک encoderثابت
ورودیهای آموزشیD1=(۱،۰)وD2=(۰،۱)هستند و هدف بازسازی، خود همان دو بردار است؛ دستهٔ انسانیِ جدا ندادهایم. encoderرا z=max(0,x1-x2)میگیریم؛ پسzبرایD1برابر۱وبرایD2برابر۰است. این قاعده از داده آموخته نشده و در تمام ده گام ثابت میماند.
decoderدو خروجی دارد: p1=sigmoid(a1*z+c1)وp2=sigmoid(a2*z+c2). چهار مقدارa1،a2،c1،c2ابتدا صفرند؛ بنابراین هر دو بازسازی(۰٫۵،۰٫۵)میشوند. محاسبهٔ شبکهٔ عصبی نقش وزن و بایاس را توضیح میدهد؛ اینجا همین نقشها را در مسیر بازسازی تغییر میدهیم.
هدف و گام را دقیق بنویسیم
زیان را میانگین Binary Cross-Entropyروی چهار مؤلفهٔ دو نمونه میگیریم؛ لگاریتم طبیعی است. چون هدفهای این تمرین صفر و یکاند، این قرارداد قابل محاسبه است. تقسیم بر۴هم در زیان و هم در گرادیان رعایت شده است. برای هر خروجی، مشتق نسبت به logitبرابر(p-y)/۴برای همان مؤلفه است؛ سهم دو نمونه جمع میشود.
در هر گام، کل دو نمونه را میبینیم و چهار پارامترdecoderرا با نرخ۱بهروز میکنیم. این نرخ فقط بخشی از تمرین است، نه توصیهٔ عمومی. در گام اول،aها به۰٫۱۲۵ومنفی۰٫۱۲۵میرسند وcها صفر میمانند؛ در گامهای بعد،بایاسها نیز تغییر میکنند.
چه چیزی واقعاً تغییر کرد؟
| گام | بازسازیD1،گردشده | بازسازیD2،گردشده | میانگین زیان |
|---|---|---|---|
| ۰ | (0.5,0.5) | (0.5,0.5) | 0.693147 |
| ۱ | (0.531209,0.468791) | (0.5,0.5) | 0.662873 |
| ۱۰ | (0.685951,0.314049) | (0.446864,0.553136) | 0.484551 |
بازسازیها هنوز عین ورودی نیستند. کمشدن زیان از۰٫۶۹۳۱۴۷به۰٫۴۸۴۵۵۱فقط روی همین دو ردیف آموزش رخ داده است؛ دقت طبقهبندی، کشف ناهنجاری یا کیفیت بازسازی دادهٔ ندیده گزارش نشده است. خروجیها در این تمرین مؤلفهٔ بازسازیاند و از آنها احتمال تقلب یا صحت پاسخ نمیسازیم.
کنترلِ خود حساب
Pythonبدون کتابخانهٔ یادگیری،ده بهروزرسانی را واقعاً اجرا کرده و همهٔ یازده وضعیتِ صفر تا ده را درCSVثبت کرده است. علاوه بر مقدار نهایی،چهار مشتق تحلیلی در یک وضعیت غیرصفر با تفاضل مرکزی مستقل مقایسه شدهاند. این کنترل گرادیان،صحت همین محاسبهٔ محدود را میسنجد؛ جای آزمون عمومی یک موتور یادگیری نیست.
فرمولSigmoidوlogدر کد برای همین مقدارهای کوچک استفاده شده است؛ آن را پیادهسازی مقاوم برای همهٔ ورودیهای بسیار بزرگ یا سامانهٔproductionنگیرید. دادهٔ واقعی،مدل آماده،GPUیاTensorFlowدر این اجرا وجود نداشته است.
تمرین و ادامه
نرخ را به۰٫۵تغییر دهید و تاریخچهٔ زیان را با همان دو ورودی مقایسه کنید؛ شرطهای عددیِ نسخهٔ اصلی را بهعنوان نتیجهٔ نسخهٔ تازه معرفی نکنید. اگر هدف سنجش تعمیم است، ابتدا ورودی و معیار مستقل تعریف کنید. ادامهٔ یادگیری در مسیر هوش مصنوعی است؛ این تمرین دربارهٔ معماری یا نتیجهٔ محصولات اپرا ادعایی ندارد.
کد،تاریخچه و منابع
کد آموزش دهگامیِ decoder با encoderثابت و چهار کنترل گرادیان · تاریخچهٔ واقعی همین محاسبهٔ کوچک؛ گام صفر تا ده
منابع در۳نوامبر۲۰۲۶خوانده شدند؛ این تاریخ،تاریخ انتشار منبع نیست. دادهها و کد آموزشی ساختهٔ تحریریهاند.