GAN, a forger against a detective


Real data
Train
The two players are both small neural networks. Each hidden layer has 32 neurons; 8 are drawn. The network that is learning lights up.
real dots   fake dots from the forger   background: what the detective thinks — “real” “can't tell” “fake”
The detective's average “real” score for real dots and fake dots, after every training step. The dashed line is 0.5: “can't tell.”

মূল ধারণা।
একটি GAN (Generative Adversarial Network) হলো দুটি network-এর একটি খেলা। জালিয়াত (generator) 2টি random সংখ্যা নিয়ে সেগুলোকে একটি বিন্দুতে পরিণত করে। গোয়েন্দা (discriminator) একটি বিন্দু দেখে 0 থেকে 1-এর মধ্যে একটি score দেয়: বিন্দুটি আসল, সে বিষয়ে সে কতটা নিশ্চিত।

তারা পালা করে খেলে। গোয়েন্দা শেখে আসল বিন্দুকে বেশি score আর নকল বিন্দুকে কম score দিতে। তারপর জালিয়াত শেখে তার বিন্দুগুলো সেখানে সরাতে, যেখানে গোয়েন্দা বলে “আসল।” জালিয়াত কখনো একটিও আসল বিন্দু দেখে না। সে পায় শুধু গোয়েন্দার মতামত।

খেলাটি কাজ করলে, নকল বিন্দুগুলো আসল আকারের ওপর বসে, গোয়েন্দা সবকিছুকে প্রায় 0.5 দেয়, আর পটভূমি প্রায় সাদা হয়ে যায়: সে আর আসল আর নকল আলাদা করতে পারে না।

ছবি বানানো একটি GAN-ও একই খেলা খেলে। প্রতিটি “বিন্দু” একটি পুরো ছবি, জালিয়াত random সংখ্যাকে একটি ছবিতে পরিণত করে, আর গোয়েন্দা ছবি দেখে।

যা করে দেখার মতো:
1. Ring, তারপর Run both। 20 বার চালিয়ে, 19 বার 1,750 round-এর পর অন্তত 85% নকল বিন্দু বৃত্তের ওপর ছিল — এখানে প্রায় 10 সেকেন্ড।

2. Start over, তারপর Detective ×10 পাঁচবার, জালিয়াত ছাড়া। গোয়েন্দা আলাদা করতে শেখে: 20 বার চালিয়ে সে গড়ে আসল বিন্দুকে 0.60 আর নকল বিন্দুকে 0.36 দিয়েছে। এবার Forger ×10 একবার চাপুন: নকলগুলো লাফিয়ে 0.55-এ ওঠে। যে গোয়েন্দা শেখা থামিয়েছে, তাকে ঠকানো সহজ।

3. Start over, তারপর Forger ×10 দশবার, গোয়েন্দা ছাড়া। জালিয়াত এমন এক গোয়েন্দার পিছু নেয় যে কখনো শেখে না। তার “আসল” score বাড়ে (গড়ে 0.85), কিন্তু তার মাত্র 3% বিন্দু বৃত্তের ওপর পড়ে, আর 20 বারের 16 বারে অর্ধেকের বেশি বিন্দু ছবির বাইরে উড়ে গেছে। জালিয়াত ততটুকুই ভালো, যতটুকু তার গোয়েন্দা।

4. Eight blobs, তারপর Run both দুবার (4,000 round)। 4,000 round করে 20 বার চালিয়ে, 16 বার 8টি blob-ই পাওয়া গেছে, আর 4 বার একটি বাদ থেকে গেছে। এটি mode collapse-এর একটি ছোট উদাহরণ: জালিয়াত আসল data-র কিছু ধরন বানায় আর বাকিগুলো বাদ দেয়। মুখের ছবির একটি GAN-এ এটি দেখতে এমন এক জালিয়াতের মতো, যে মাত্র কয়েক ধরনের মুখ আঁকে।