در GAN،مولد دادهٔ ساختگی میسازد و تمایزدهنده یاد میگیرد ورودیِ دادهشده را از خروجیِ مولد جدا کند. دو تابع با دو هدفِ متفاوت تغییر میکنند. برای دیدنِ مسیرِ گرادیان، یک مولدِ عددی و یک تمایزدهندهٔ بسیار کوچک میسازیم و واقعاً یک گام برای هرکدام اجرا میکنیم؛ این تمرین تصویر تولید نمیکند.
دو مدلِ کوچک، دادهٔ اصیل و هدفِ روشن
مولدG(z)=a×z+cاست؛ دو ورودیِ ثابتِzبرابر−۱و۱،a=۰٫۵وc=۰هستند، پس خروجیهای آغاز−۰٫۵و۰٫۵میشوند. تمایزدهندهD(x)=σ(w×x+b)باw=۰٫۴وb=−۰٫۱شروع میشود. مقدارِ دادهشدهٔ تمرین۱٫۵است؛ آن را «real»فقط در قراردادِ برچسبِ آموزش مینامیم، نه شاهدِ واقعیِ مشتری یا صحتِ جهان بیرون.
زیانِDمنفیِ لگاریتمDبرای مقدارِ دادهشده، بهعلاوهٔ میانگینِ منفیِ لگاریتمِ۱−Dبرای دو خروجیِ مولد است. دو بخش، هرکدام با همین وزنِ صریح جمع میشوند؛ تقسیمِ کل زیان بر دو انجام نشده است. یادگیری با نرخ۰٫۱و حسابِ استاندارد Pythonاست؛ TensorFlow، PyTorchیا مجموعهدادهٔ تصویری اجرا نشدهاند.
گام اول؛Dتغییر کند وGثابت بماند
ابتدا دو مقدارِ ساختگی باGآغاز ساخته میشوند. مشتقِ زیانِDنسبت بهwوbحساب میشود و فقط این دو پارامتر بهروز میشوند. در فایل، snapshotمولد همانa=۰٫۵وc=۰میماند. برای تابعِ سیگموید و زیانِ انتخابی، سهمِ مشتقِ logitدر ورودیِ realبرابرD(real)−۱و در هر fakeبرابرD(fake)است.
کد مشتقِ هر دو پارامتر را با تفاضلِ محدود بررسی میکند؛ سپس زیانِDقبل و بعد را روی همانGثابت چاپ میکند. کمشدنِ همین زیانِ کوچک، تعادلِ دو توزیع یا توانِ تشخیصِ تصویر را ثابت نمیکند.
گام دوم؛ پارامترِDثابت، مسیرِ مشتق باز
اکنونDتازه ثابت میماند و زیانِ مولد را به صورتِ non-saturating،یعنی میانگینِ−log D(G(z))میگیریم. این دقیقاً همان هدفِ minimaxِlog(۱−D(G(z)))نیست؛ انتخابِ هدف را صریح نگه میداریم. مشتق باید ازDنسبت به ورودیِ عددیاش عبور کند تا بهaوcبرسد، با اینکه خودِwوbدر این گام عوض نمیشوند.
در فرمولِ این تمرین، سهمِ برگشتی به خروجیِ مولد برابر(D(fake)−۱)×wاست؛ برایaدرzهم ضرب و برایcمستقیم جمع میشود. کد این دو مشتق را هم با تفاضل محدود کنترل و بعدaوcرا بهروز میکند. snapshotِDدر تمامِ گامِGثابت است؛ قطعِ کاملِ مشتق ازDبه ورودی، همین آموزشِ مولد را از کار میاندازد.
در فایلِ خروجی چه چیزی را ببینیم؟
| گام | پارامترِ قابل تغییر | طرفِ ثابت | شاهد |
|---|---|---|---|
| D | wوb | aوcآغاز | دو مشتق، کنترل عددی، زیان قبل/بعد |
| G | aوc | wوbپس از گامD | دو مشتق، کنترل عددی، دو خروجیِ تازه |
JSONاعداد واقعیِ اجرای همین کد را ثبت کرده است. دو مقدارِzثابتاند و از توزیع نمونهگیری نشدهاند؛ مدلِ ما یک نگاشتِ خطی و یک طبقهبندِ سیگمویدِ تکمتغیره است، نه DCGAN. یک گامِ هر طرف، تضمینِ همگرایی، تنوع یا کیفیتِ یک مولدِ واقعی نیست. همچنین کاهشِ زیانِGرا با زیانِDجمع نمیکنیم تا یک نمرهٔ کیفیتِ واحد بسازیم.
تفاوت با روشهای مولدِ دیگر
خودرمزگذار قراردادِ بازسازی دارد و Diffusion فرایندِ نویزی و برآوردِ وابسته به آن را مطرح میکند. خروجیِ مستقل این صفحه دو هدفِ رقابتی و دو گامِ جدا با عبورِ مشتق از طرفِ ثابت است. برای دیدنِ خودِ قاعدهٔ زنجیرهای هم مثال پسانتشار را بخوانید.
ادامهٔ یادگیری در مبانی هوش مصنوعی است. این مدلِ عددی، فناوریِ داخلیِ سرویسهای اپرا یا ابزارِ ساختِ تصویرِ آماده را معرفی نمیکند؛ هدف، فهمِ حلقهٔ آموزش است.
فایل تمرین و منبع
یک گام واقعیِDویک گامِGبا کنترلِ تمام مشتقها · snapshotطرفِ ثابت، مشتق، پارامترِ تازه و زیانِ هر گام
- پژوهش اصلی GAN؛۱۰ژوئن۲۰۱۴، بخش۳وهدفِ غیرِاشباع
- آموزش اصلی TensorFlow؛ دو زیان و پارامترهای جدا، بهروزشده۱۶اوت۲۰۲۴
منابع در ۳ نوامبر ۲۰۲۶ خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.