Diffusion, from noise back to a picture

1. Adding noise (nothing to learn)

Noise step t
×
the picture
+
×
random noise
=
noisy picture at step t

2. Training: learning to guess the noise

Teach

3. Making new dots

Take noise away
the real dots (the smiley the network learned from)   new dots, starting as pure noise

মূল ধারণা।
noise যোগ করা সহজ। একটি ছবিতে একটু random noise মেশান, তারপর আরও একটু, ধাপে ধাপে। 100 ধাপের পর শুধু ঝিরিঝিরি থাকে। এই অংশে কিছু শেখার দরকার নেই:

noisy picture = a × picture + b × noise   [যেখানে a = কতটা ছবি, b = কতটা noise, আর a² + b² = 1]

noise সরানো শিখতে হয়। train করতে, একটি আসল উদাহরণ নিন, একটি random ধাপ পর্যন্ত noise যোগ করুন, আর একটি network-কে জিজ্ঞেস করুন কোন noise যোগ করা হয়েছিল তা অনুমান করতে। loss হলো অনুমানটি কতটা ভুল।

নতুন কিছু বানাতে, খাঁটি noise থেকে শুরু করুন। network-কে noise জিজ্ঞেস করুন, তার একটু সরান, আর 100 বার এটা করুন। যা থাকে তা আসল data-র মতো দেখায়, কিন্তু নতুন।

অংশ 2 ছবি নয়, বিন্দু দিয়ে train হয়, তাই এখানে কয়েক সেকেন্ডেই শিখতে পারে। প্রতিটি বিন্দু শুধু 2টি সংখ্যার, x আর y-এর, একটি ছোট্ট “ছবি”। ছবির একটি model প্রতিটি pixel-এ একই কাজ করে, অনেক বড় একটি network দিয়ে আর সাধারণত প্রায় 1,000 ধাপে।

Diffusion আর GAN।
একটি GAN-এর জালিয়াত একবার চালিয়েই একটি ছবি বানায়। diffusion-এর প্রতিটি ধাপে একবার চালাতে হয় — এখানে 100 বার — তাই এটি ধীর। কিন্তু এটি একটি network-কে একটিই সহজ কাজে train করে, noise অনুমান করা, দুটি network-এর টানাটানি ছাড়া। তাই এর training বেশি স্থির।

যা করে দেখার মতো:
1. slider সরান। ধাপ 10-এ ছবির শক্তির 90% বাকি থাকে। ধাপ 25-এ তা 53%, আর smiley দেখা কঠিন। ধাপ 50-এ তা 7%, আর ধাপ 100-এ 0%: খাঁটি noise।

2. train করার আগে Run to the end চাপুন। network শুধু random অনুমান করে, আর 10 বারের 10 বারেই 0% বিন্দু smiley-র ওপর পড়েছে।

3. Train the noise guesser (প্রায় 8 সেকেন্ড), তারপর Run to the end। 10 বার চালিয়ে, নতুন বিন্দুর 68–75% smiley-র ওপর পড়েছে। দেখতে Step ×10 ব্যবহার করুন: ধাপ 10-এ মাত্র প্রায় 30% এর ওপর থাকে। আকারের বেশিরভাগ দেখা দেয় শেষ 10 ধাপে।

4. Train more, তারপর একটি নতুন মেঘ বানান। 10 বার চালিয়ে, 73–81% বিন্দু smiley-র ওপর পড়েছে।

5. loss প্রায় 0.34-এ থামে আর কখনো 0-তে পৌঁছায় না। noise অনেক থাকলে অনুমান সহজ, কারণ তখন বিন্দুটি প্রায় পুরোটাই noise (ধাপ 51–100-এ ভুল 0.01)। noise খুব কম থাকলে তা কঠিন (ধাপ 1–10-এ ভুল প্রায় 1.45): বিন্দুটি কি noise-এর কারণে smiley থেকে সরে আছে, নাকি আসলে ওটাই তার জায়গা?