Diffusion Models
(andrewkchan.dev)- Diffusion models डेटा में शोर को चरणबद्ध तरीके से मिलाकर फिर उसे उलटना सीखते हैं, और इनका उपयोग Stable Diffusion जैसी image generation के अलावा video·3D·protein structure·robot trajectory generation तक में होता है
- DDPM साफ image (x_0) को कई timestep के दौरान (x_T) के करीब शोर में बदलता है, और मॉडल को हर चरण में शोर की दिशा का अनुमान लगाने के लिए L2 loss से train किया जाता है
- reverse process को छोटे शोर चरणों में लगभग Gaussian distribution की तरह माना जा सकता है, और Ho 2020 ने variance को fixed रखकर training को stable बनाया तथा mean prediction को noise prediction में सरल किया
- generation speed, DDPM के अधिकतम 1000-step sampling से घटकर ODE-based sampler के लगभग 10 step, और progressive distillation तथा adversarial distillation के single-step generation तक आ सकती है
- diffusion models का practical दायरा बढ़ा है, लेकिन अत्यधिक distillation से quality गिरना, conditional control की सीमाएँ, और dataset ethics व provenance की समस्याएँ अब भी बाधा बनी हुई हैं
जनरेटिव मॉडलिंग में diffusion models की स्थिति
- जनरेटिव मॉडलिंग की मूल समस्या यह है कि जब अज्ञात distribution (p(x)) से आए sample set दिए हों, तो उसी distribution से नए sample generate किए जाएँ
- GAN generator और discriminator के game के रूप में इस समस्या को लेता है और प्रभावशाली images synthesize कर सकता है, लेकिन इसकी training कठिन होती है, यह (p(x)) को explicitly model नहीं करता, और mode collapse हो सकता है
- Normalizing flow data sample और unit Gaussian के बीच deterministic·invertible mapping सीखता है
- OpenAI का 2018 का Glow meaningful latent space वाली face images generate करता है
- flow में हर layer invertible होनी चाहिए और Jacobian determinant को तेज़ी से compute करना पड़ता है, जबकि किसी भी (N \times N) Jacobian determinant की गणना (O(N^3)) होती है, इसलिए इसमें बड़ी सीमाएँ हैं
- diffusion models deterministic mapping की जगह data में थोड़ी-थोड़ी random noise मिलाने वाली stochastic mapping को कई चरणों में चलाते हैं, और फिर उस प्रक्रिया को उलटने वाला मॉडल सीखते हैं
Denoising Diffusion का मूल विचार
- साफ data point में छोटी noise को बार-बार मिलाने पर अंत में वह लगभग pure noise जैसी अवस्था में पहुँच जाता है
- किसी एक समय-बिंदु का noisy data point देखकर भी कुछ हद तक अनुमान लगाया जा सकता है कि वह पिछले चरण में किस दिशा से आया होगा
- पर्याप्त noise मिलाने पर target space का कोई बिंदु (y), मूल space के (x) से आया हो, इसकी probability मनचाहे रूप से (p(x)) के करीब लाई जा सकती है
- कई चरणों वाली reverse process सीखकर (p(x)) से sampling की जा सकती है
- training में हर data point में random noise जोड़ी जाती है, मॉडल से उस noise का अनुमान कराया जाता है, और फिर predicted noise तथा actual noise direction के बीच L2 loss को gradient descent से minimize किया जाता है
- basic sampling का flow इस तरह है
- pure noise image से शुरुआत होती है
- image के अंदर की noise का अनुमान लगाया जाता है, और तय अनुपात में उसे घटाया जाता है
- sampler के अनुसार इसे 10~1000 बार दोहराकर noise-free image पाई जाती है
DDPM: diffusion models का गणितीय शुरुआती बिंदु
- DDPM(Denoising Diffusion Probabilistic Models) वह approach है जिसने आगे के diffusion models के विकास के लिए भाषा और गणितीय आधार दिया
- input image (x_0), (t=1,2,\dots,T) timestep के दौरान बार-बार छोटी random noise मिलते हुए unit normal distribution के एक point की ओर बढ़ती है
- forward diffusion step, पिछली image (x_{t-1}) में noise (\epsilon \sim \mathcal{N}(0,I)) मिलाकर (x_t) बनाता है
- (\alpha_t) 1 से छोटा लेकिन 1 के काफ़ी करीब होता है
- इसे इस तरह set किया जाता है कि (\prod_{t=1}^T \alpha_t \approx 0) हो
- square-root term यह सुनिश्चित करता है कि हर चरण के बाद variance बना रहे
- हर चरण केवल ठीक पिछले timestep पर निर्भर करता है, और मिलाया गया noise पिछले noise से independent होता है, इसलिए (x_t) को सीधे (x_0) और एक Gaussian noise vector से व्यक्त किया जा सकता है
- इसी गुण का उपयोग reverse process और noise prediction training objective निकालने में किया जाता है
reverse process और noise prediction training
- अगर noisy image (x_t) और original image (x_0) पता हों, तो पिछले कम noisy version (x_{t-1}) का distribution closed form में Gaussian होता है
- generation के समय original (x_0) पता नहीं होता, इसलिए (q(x_{t-1} \mid x_t)) को सीधे इस्तेमाल करना चाहिए, लेकिन generation के समय पूरे dataset का उपयोग नहीं किया जा सकता
- dataset में अरबों images हो सकती हैं
- हर timestep पर ऐसा करने से नए sample के बजाय training sample ही recover होंगे
- बहुत छोटे noise step में (q(x_{t-1} \mid x_t)) लगभग Gaussian होता है, और यह statistical physics का पुराना परिणाम है
- मॉडल Gaussian के parameters (\mu_\theta, \Sigma_\theta) का अनुमान लगाता है, और हर training example के ज्ञात distribution (q(x_{t-1} \mid x_t, x_0)) के साथ KL divergence को कम करता है
- Ho 2020 ने (\Sigma_\theta) को (\Sigma(t)) के बराबर fixed रखा
- variance को सीखने की कोशिश करने पर training बहुत unstable हो गई
- व्यवहार में केवल mean (\mu_\theta) ही सीखा जाता है
- mean prediction की समस्या को noise prediction problem में बदला जाता है, क्योंकि (x_t) को (x_0) और Gaussian noise (\epsilon) के मिश्रण के रूप में लिखा जा सकता है
- अंतिम simple loss (L_\text{simple}), actual noise (\epsilon) और model prediction (\epsilon_\theta) के बीच squared error को minimize करता है
- weighting को ignore करने पर result quality बेहतर होती है
- इसे ऐसे देखा जा सकता है कि कम (t) वाले loss term को कम weight दिया जाता है, ताकि network अधिक noisy images को denoise करने की कठिन समस्या पर ध्यान दे
DDPM sampling और 2D उदाहरण
- अगर trained noise estimation model (\epsilon_\theta(x_t,t)) हो, तो reverse process को sample किया जा सकता है
- (x_T \sim \mathcal{N}(0,I)) से random noise image sample की जाती है
- (T) से 1 तक timestep को उल्टा चलाते हुए noise का अनुमान लगाया जाता है
- predicted mean और variance से (x_{t-1}) sample किया जाता है
- DDPM का flow इस तरह है
- यह image dataset की underlying distribution सीखने की कोशिश करता है
- forward noising process के जरिए (x_0) को धीरे-धीरे (x_T) में बदला जाता है
- reverse process, जब (T) बड़ा हो, तब लगभग Gaussian होने के कारण संभाली जा सकती है
- अगर (x_0) को dataset की किसी specific image के रूप में मानें, तो ज्ञात distribution को ठीक-ठीक compute किया जा सकता है
- KL divergence के जरिए इसे इस तरह train किया जाता है कि यह सभी training images के लिए उस ज्ञात distribution के करीब पहुँचे
- यह प्रक्रिया dataset को फिर से generate करने की likelihood के lower bound को optimize करती है
- 142 points वाले Datasaurus dataset का उदाहरण 2D distribution learning दिखाता है
- 3 hidden layer, hidden size 64, और ReLU इस्तेमाल करने वाला MLP, 12,000 से अधिक parameters रखता है
- timestep information न देने पर वांछित dinosaur-shaped distribution नहीं मिलती
- timestep (t=0,\dots,50) को 0~1 के बीच normalize करके input देने पर result बेहतर होता है
- Fourier encoding से input को random frequency feature space में बदलने पर और बेहतर distribution सीखी जाती है
- noising schedule का adjustment भी performance के लिए महत्वपूर्ण है
- Ho 2020 का तरीका (\alpha_t) को linearly decrease करता है और (\bar\alpha_T \approx 0) होने देता है, जो high-resolution images के लिए अच्छी तरह काम करता है
- low-dimensional data मध्यम चरण तक पहुँचते-पहुँचते ही noisy दिखने लगता है, इसलिए अधिक high-signal examples पर train करने के लिए schedule बदलने से performance सुधरती है
- उदाहरण का मूल schedule (\bar\alpha_T \approx 0.28) पर pure noise तक नहीं जाता था, और नया schedule पुराने schedule के मध्य मान 0.6 पर समाप्त होता है
जनरेशन गति बढ़ाने में प्रगति
-
Score matching और ODE-आधारित sampler
- diffusion models की शुरुआती कमी यह थी कि DDPM की reverse distribution Gaussian assumption के कारण जनरेशन गति धीमी थी
- noisy input (x_t) से मॉडल जिस noise direction की भविष्यवाणी करता है, वह timestep के अनुसार एक constant को छोड़कर forward process द्वारा (x_t) बनाने के लिए आवश्यक log-likelihood gradient, यानी score, के बराबर होता है
- score को एक vector field की तरह देखा जा सकता है, जो बताता है कि distribution के mode की ओर जाने के लिए किस दिशा में बढ़ना है
- Noise-conditioning score network क्रमशः अधिक noised किए गए dataset के score को सीखता है और score field का अनुसरण करते हुए नए sample बनाता है
- forward diffusion process को stochastic differential equation(SDE) के रूप में व्यक्त किया जा सकता है
- वही timestep-wise distribution रखने वाले deterministic process को व्यक्त करने वाला एक ODE भी मौजूद है, और इस ODE का closed form score function को शामिल करता है
- इसके कारण pre-trained diffusion model में भी पूरी तरह deterministic sampling संभव हो जाती है, और sampling के लिए general-purpose ODE solver का उपयोग किया जा सकता है
- Stable Diffusion में उच्च-गुणवत्ता वाले परिणाम पाने के लिए DDPM को अधिकतम 1000 steps तक की आवश्यकता हो सकती है
- Euler method-आधारित sampler लगभग 10 steps में भी उच्च-गुणवत्ता वाले परिणाम दे सकता है
- Karras 2022 sampler के tradeoff पर चर्चा करता है और बताता है कि DDPM जैसे stochastic sampler की stochasticity कुछ मामलों में महत्वपूर्ण हो सकती है
-
Distillation
- Progressive distillation, 1000 steps से sampling करने वाले pre-trained teacher का उपयोग करके student को इस तरह train करता है कि वह teacher के 2-step output को 1 step में predict करे
- इस प्रक्रिया को दोहराकर student को नया teacher बनाया जाए तो हर बार steps की संख्या आधी की जा सकती है
- Progressive distillation में loss होता है, और इसे बहुत अधिक लागू करने पर sample धुंधले या अवास्तविक हो सकते हैं
- Adversarial distillation, discriminator को साथ में train करके student sample की realism बढ़ाता है, लेकिन GAN की तरह इसमें sample diversity के साथ tradeoff होता है
- Stable Diffusion XL Turbo को इसी तरीके से train किया गया है, जिससे वह single step में उच्च-गुणवत्ता वाली image generate कर सकता है
सशर्त जनरेशन और Guidance
-
सशर्त diffusion model
- अगर animal images पर train किए गए model से केवल बिल्ली generate करनी हो, तो conditional distribution (p(x \mid y)) को model करना होगा
- यदि diffusion model (\epsilon_\theta(x_t,t,y)) को dataset के ((x_0,y)) pairs पर train किया जाए, तो class label, text embedding, segmentation mask जैसी conditional information का उपयोग किया जा सकता है
- Ho 2021 ने ImageNet पर class-conditional diffusion model को train किया
- किसी विशेष (y) के लिए यदि (p(x \mid y)) samples पर्याप्त न हों, तो label अवास्तविक या कम विविधता वाले samples की ओर ले जा सकता है
- इसलिए जनरेशन के दौरान model label का कितना पालन करे, इसे नियंत्रित करने के लिए guidance की आवश्यकता होती है
-
Classifier guidance
- यदि classifier (p_\phi(y \mid x_0)) output करता है, तो input के gradient का उपयोग करके image को इच्छित class (y) की ओर धकेला जा सकता है
- sampling के हर step में classifier gradient को estimated mean में जोड़ने पर diffusion process image को image space के plausible region में रख सकता है
- classifier को noisy image (x_t) संभालने योग्य बनाने के लिए noisy images पर train किया जाता है
- Fashion-MNIST की “T-shirt” class के उदाहरण में, 40% accuracy वाला classifier भी classifier-guided sample बना सकता है
- guidance parameter
cgclassifier gradient को scale करता है - अधिक मजबूत guidance class features को बढ़ाता है, लेकिन realism कम हो सकती है
-
Classifier-free guidance
- classifier-free guidance अलग classifier के बिना guidance करता है
- Bayes rule लागू करने पर class gradient, conditional score और overall data score के अंतर में बदल जाता है
- denoising diffusion model training data के score को सीखता है, इसलिए एक ही diffusion model को उसी sample पर दो तरीकों से train किया जाता है
- class label (y) के साथ train किया जाता है
- null class label के साथ train किया जाता है
- sampling के समय इच्छित class label वाले call और label के बिना call, दोनों चलाए जाते हैं, और उनके अंतर को guidance vector के रूप में उपयोग किया जाता है
इमेज कंडीशनिंग और नियंत्रण
-
Image-to-image और SDEdit
- बेसिक image-to-image मॉडल को दोबारा train किए बिना संभव है
- इनपुट इमेज में इच्छित conditioning strength के अनुसार noise जोड़ने के बाद उसे denoise किया जाता है
- conditioning को मजबूत रखना हो तो कम noise जोड़ा जाता है
- conditioning को कमजोर रखना हो तो अधिक noise जोड़ा जाता है
- यह तरीका SDEdit है, और यह ऐसी result image बनाता है जिसकी overall shape इनपुट इमेज जैसी होती है
- इसकी कमी यह है कि इनपुट इमेज किस चीज़ को नियंत्रित करेगी, इसे बारीकी से तय नहीं किया जा सकता
- अगर इनपुट में sketch हो, तो result sketch जैसा दिखने लगे या दी गई shape का पर्याप्त रूप से पालन न करे—ऐसा tradeoff पैदा होता है
-
Sketch-Guided Diffusion और ControlNet
- sketch image (y) के साथ generation को condition करने के लिए, noisy image (x_t) से sketch line (\hat{y}=F(x_t)) की भविष्यवाणी करने वाला मॉडल train किया जा सकता है, और sketch loss gradient से हर sampling step को guide किया जा सकता है
- यही Sketch-Guided Diffusion का विचार है
- दूसरा तरीका यह है कि denoiser को conditioning image (y) लेने योग्य बनाने के लिए architecture बदला जाए और ((x_0,y)) pair पर fine-tuning की जाए
- साधारण fine-tuning से overfitting और catastrophic forgetting की समस्या हो सकती है
- ControlNet मूल मॉडल के weight को सुरक्षित रखने के लिए उसकी एक copy बनाता है, मूल मॉडल को freeze रखता है, और control-net तथा 1x1 convolution parameters को train करता है
- convolution को शुरुआत में zero से initialize किया जाता है, ताकि वह denoising step के लिए delta को धीरे-धीरे सीखे
- वास्तविक ControlNet पूरे denoising model स्तर पर नहीं, बल्कि per-block स्तर पर लागू होता है
- human evaluation के आधार पर यह Sketch-Guided Diffusion जैसे alternatives से बेहतर performance दिखाता है
- LoRA के साथ मिलाकर consumer GPU पर ControlNet को efficiently train किया जा सकता है
-
Inpainting
- Inpainting इमेज के masked part को भरने का काम है
- केवल masked part में noise जोड़ने वाला साधारण image-to-image तरीका काम नहीं करता
- (t>0) पर denoising model को यह पता नहीं होता कि non-noisy part को कैसे handle करना है
- जो तरीका काम करता है, उसमें masked और unmasked दोनों parts में noise जोड़कर उसे (x_T) के रूप में दिया जाता है
- इसके बाद हर sampling step (t) पर मूल इमेज के unmasked part को copy किया जाता है, timestep (t) के अनुरूप उसमें noise जोड़ा जाता है, फिर उसे (x_t) के ऊपर रखकर denoiser input के रूप में इस्तेमाल किया जाता है
-
Text-to-image
- Text-to-image, text embedding label का उपयोग करने वाली conditional generation है
- OpenAI का Dall-E, इमेज और टेक्स्ट को एक ही space में project करने वाला CLIP encoding model train करता है
- multimodal embedding space अनिवार्य नहीं है
- Google Imagen, T5 large language model से टेक्स्ट को embedding के रूप में encode करता है
- अगर embedding पर्याप्त रूप से समृद्ध representation हो, तो उसे text-to-image condition के रूप में इस्तेमाल किया जा सकता है
ट्रेनिंग डेटा और नैतिकता
- इमेज generation model के dataset, सिर्फ diffusion model तक सीमित समस्या नहीं हैं, लेकिन generative model पर चर्चा में यह एक महत्वपूर्ण तत्व है
- dataset के उदाहरण इस प्रकार हैं
- Dall-E 1 को 25 करोड़ text-image pair पर train किया गया था, Dall-E 2 को 65 करोड़ pair पर train किया गया था, और dataset closed source है
- Stable Diffusion 1 को LAION-2B-en के 2 अरब pair पर train करने के बाद, LAION-5B के 17 करोड़ pair पर fine-tune किया गया
- इसके बाद Stable Diffusion 1 checkpoints को LAION-5B के “aesthetics” मानदंड से चुने गए subset पर fine-tune किया गया
- LAION-400M अगस्त 2021 में जारी हुआ था, और यह OpenAI द्वारा CLIP training में इस्तेमाल की गई प्रक्रिया को पुन:निर्मित करने का प्रयास था
- LAION, Common Crawl से निकला है; यह alt-text वाले HTML image tag इकट्ठा करता है और CLIP से ऐसी entries हटाता है जो content से मेल नहीं खातीं
- कुछ users ने LAION में शामिल artists की list बनाई, और haveibeentrained.com उपयोगकर्ताओं को यह जाँचने देता है कि उनकी इमेज LAION या किसी अन्य dataset में है या नहीं
- AI art backlash का एक बड़ा हिस्सा यह नैतिक समस्या है कि LAION जैसे dataset कलाकारों की सहमति के बिना art इकट्ठा करते हैं और उसे image generation model training में इस्तेमाल करते हैं
- साथ ही यह बात भी उठती है कि image model कलाकारों की आजीविका के लिए सीधा खतरा बन सकते हैं
- अधिक नैतिक तरीके से प्रतिस्पर्धी image generation model train करने के प्रयास भी चल रहे हैं
- Adobe Firefly के बारे में कहा गया है कि इसे सिर्फ Adobe Stock जैसे licensed content और copyright-expired public domain content पर train किया जाता है
- हाल में यह scandal भी हुआ कि Firefly को कुछ Midjourney images पर train किया गया था
- Stable Diffusion 3 ने artists को training use से opt-out की अनुमति दी, और इसके परिणामस्वरूप 8 करोड़ से अधिक images हटा दी गईं
Data poisoning
- Nightshade, AI art backlash के दौरान ध्यान खींचने वाला image generation model पर किया जाने वाला data poisoning attack है
- मॉडल अरबों images पर train होते हैं, लेकिन कुछ specific concept के लिए images की संख्या सिर्फ कुछ दर्जन हो सकती है—यह हमला इसी बात का फायदा उठाता है
- Nightshade, concept-specific basis पर data को poison करने का तरीका है
- paper के authors ने 50 modified images से Stable Diffusion XL पर हमला करके ऐसा उदाहरण दिखाया, जिसमें prompt में “car” आने पर हर बार model cow output करने लगे
- ये modifications, perceptual loss शामिल करने वाले multi-objective function को optimize करके इस तरह design किए जाते हैं कि वे इंसानी आँख को यथासंभव नज़र न आएँ
- शुरुआती attack के लिए model के feature extractor तक access चाहिए
- authors ने यह भी जाँचा कि 4 models में से किसी एक पर आधारित attack अन्य models पर कैसे काम करता है, और उनका कहना है कि हमला शुरुआती मॉडल के अलावा दूसरे models पर भी generalize हो जाता है
उच्च-रिज़ॉल्यूशन इमेज generation
- Cascaded Diffusion एक शुरुआती approach है, जिसमें पहले low resolution पर initial generation किया जाता है, फिर कई super-resolution diffusion models से इमेज को upscale किया जाता है
- Stable Diffusion, latent diffusion का उपयोग करता है
- इमेज को auto-encoder के latent space में diffusion के जरिए generate किया जाता है
- इसके बाद latent को decode करके high-resolution image प्राप्त की जाती है
- latent diffusion के authors का मानना है कि auto-encoder और diffusion model को साथ में train करने के बजाय, पहले auto-encoder को image data compress करना सिखाया जाए और फिर अलग से encoded latent पर diffusion model train किया जाए—यह तरीका सबसे बेहतर काम करता है
- Cascaded Diffusion और latent diffusion, backbone diffusion model के साथ कई अलग models जोड़कर generated image का scale बढ़ाते हैं
- single-model resolution में प्रगति कई training tricks पर आधारित है, जैसे multi-scale loss और transformer जैसी backbone architecture का उपयोग
इमेज से बाहर diffusion model के अनुप्रयोग
-
Audio, video, 3D
- Riffusion एक शुरुआती music generation model है, जो Stable Diffusion को spectrogram image output पर fine-tuning करके 12 सेकंड लंबे गाने बना सकता है
- Sonauto diffusion transformer पर आधारित एक अधिक हाल का controllable model है, जो coherent lyrics के साथ 1 मिनट 35 सेकंड लंबा गाना बना सकता है
- OpenAI Sora और Google Veo diffusion transformer video generation model हैं, जो text prompt से 1 मिनट लंबी 1080p video clip बना सकते हैं
- Sora video को spacetime patch में विभाजित करता है और patch को denoise करना सीखता है
- Sora technical report की मुख्य insight यह है कि diffusion transformer video generation के लिए scale करता है, और performance compute के साथ scale करती है
- OpenAI यहां यह स्पष्ट नहीं करता कि compute से dataset size, model size, या training time में से किसका मतलब है
- दोनों model masked editing, पूरी तरह loop होने वाली video generation, static image animation, और video को समय में आगे-पीछे बढ़ाने जैसे कार्यों को support करते हैं
- पिछले video diffusion कार्यों में Imagen Video शामिल है, और VideoPoet जैसे autoregressive model भी एक विकल्प हैं
- 2D diffusion model correspondence जैसे 3D feature को अप्रत्यक्ष रूप से सीखते हैं
- DreamFusion text-to-image diffusion model को prior की तरह इस्तेमाल करके gradient descent आधारित 3D reconstruction algorithm को guide करता है
- Stable Video 3D video diffusion के जरिए multi-view consistency को बेहतर बनाता है
- ये model अभी भी photogrammetry, 3D gaussian splatting, और neural radiance field जैसे 3D reconstruction algorithm पर निर्भर हैं
- एक संभावित वजह यह है कि 3D data तुलनात्मक रूप से sparse है
-
Life sciences
- diffusion model medicine और biology में कई अनुप्रयोग पा रहे हैं
- partial CT और MRI scan मरीजों के radiation exposure को काफी कम करते हैं और comfort बढ़ाते हैं, लेकिन partial data से full scan को reconstruct करना कठिन होता है
- diffusion model medical image reconstruction में supervised method की तुलना में बेहतर performance और generalization देते हैं, और state-of-the-art को आगे बढ़ाते हैं
- DeepMind का AlphaFold 3 diffusion-based architecture का उपयोग करता है, और पिछले version तथा specialized tool की तुलना में उल्लेखनीय सुधार दिखाता है
- input molecule list दिए जाने पर AlphaFold 3 atom cloud से शुरू करता है और बार-बार refinement करते हुए joint 3D structure बनाता है
- इससे यह दिखता है कि molecules एक-दूसरे के साथ कैसे फिट होते हैं
- अन्य computational biology अनुप्रयोगों में single-cell data analysis, drug और small molecule design, तथा protein-ligand interaction शामिल हैं
-
Robotics
- वास्तविक दुनिया के साथ interact करने वाले robot को बहुत व्यापक range के physical behavior करने होते हैं
- पारंपरिक तरीके में दरवाजा खोलने या जूते के फीते बांधने जैसे task के लिए अनगिनत edge case और recovery method को स्पष्ट रूप से program किया जाता है
- यह factory जैसे controlled setting में काम करता है, लेकिन scale नहीं करता
- Policy learning from demonstration एक अधिक scalable approach है, जिसमें human demonstration के जरिए robot को task करना सिखाया जाता है
- आमतौर पर कोई व्यक्ति teleoperation के माध्यम से robot motor को नियंत्रित करके demonstration देता है
- demonstration की संख्या दर्जनों से लेकर सैकड़ों तक हो सकती है
- इसके बाद robot sensor observation और कुछ मामलों में natural language prompt को condition के रूप में लेकर action generate करना सीखता है
- diffusion model policy generation model में state-of-the-art हैं, और पिछली तकनीकों की तुलना में substantial improvement दिखाते हैं
- ये multimodal action distribution को स्वाभाविक रूप से संभालते हैं
- ये high-dimensional action space के लिए उपयुक्त हैं
- इनकी training stability प्रभावशाली है
1 टिप्पणियां
Hacker News की राय
यानी जब OpenAI ने 25 करोड़ images पर train किया था, तब भी इस बात की कोई बेहतरीन theory नहीं थी कि underlying distribution को model क्यों किया जा रहा है; इसलिए यह काफ़ी साहसी चुनाव था
मूल Dickstein 2015 paper [1] ने diffusion को distribution generation के log-likelihood lower bound को maximize करने के तरीके के रूप में formulate किया था, इसलिए ऐसा नहीं था कि theory बिल्कुल ही नहीं थी
हालांकि मेरी समझ में breakthrough Ho [2] और Nichol [3] के experimental results थे। क्योंकि उन्होंने दिखाया कि diffusion न सिर्फ़ high-quality samples बना सकता है, बल्कि कुछ मामलों में GAN से बेहतर भी हो सकता है
[1] https://arxiv.org/abs/1503.03585
[2] https://arxiv.org/abs/2006.11239
[3] https://arxiv.org/abs/2105.05233
HuggingFace Diffusers Apache license के तहत है और Diffusion Transformers को support करता है: https://huggingface.co/docs/diffusers/en/api/pipelines/dit
HuggingFace के अलावा DDPT repository भी है: https://github.com/lucidrains/denoising-diffusion-pytorch/
ये भी मिला:
https://paperswithcode.com/paper/scalable-diffusion-models-w...
https://github.com/mindspore-lab/mindone/tree/master/example...
यह उसी समस्या जैसा दिखता है: “अगर किसी खास yy के लिए p(x∣y)p(x∣y) samples पर्याप्त नहीं देखे गए, तो label की वजह से अवास्तविक या कम विविधता वाले samples निकल सकते हैं। इसलिए generation के दौरान हम control करना चाहते हैं कि model label को कितना ‘follow’ करे”
हालांकि यह बात सही है कि guidance strength बहुत ज़्यादा रखने पर realism घटने जैसी मिलती-जुलती समस्या पैदा होती है
फिर भी उम्मीद है कि लेखक drawing जारी रखेगा। जैसे-जैसे AI creative work में दखल देता है, उल्टा सब कुछ तोड़ देने का मन होता है
इन tools के output को लेकर खुद recreate करने या उसे देखकर draw करने की कोशिश करता हूं
अब समय है कि किसी ठीक-ठाक inappropriate language में एक खुद code करूं। सिर्फ़ comments सरसरी नज़र से देखने वालों के लिए summarize करने को ज़्यादा कुछ नहीं है। यह लेख खुद Stable Diffusion का summarized version है
पता नहीं आप किस expression की बात कर रहे हैं, लेकिन मेरी समझ में network कभी ground-truth image को सीधे “देखता” नहीं। इसके बजाय उसे loss function के जरिए information indirectly infer करना सीखना पड़ता है
Loss function में noise के बारे में information होती है, और network noisy image को ठीक-ठीक देखता है, इसलिए यह वास्तविक sample image के बारे में सीखने के equivalent है। Output और वास्तविक image के बीच difference मापने वाला loss function भी design किया जा सकता है, और information amount equivalent है, लेकिन Gaussian noise की properties की वजह से gradient estimation के लिए noise prediction वाला तरीका कहीं ज़्यादा अच्छा माना जाता है। मुख्य बात यह है कि real image information loop के अंदर मौजूद तो है, पर केवल किसी noise के lens से होकर आती है
सही है। यह ठीक पिछले expression जैसा होना चाहिए
xts = alpha_bar[t].sqrt() * x0s + (1.-alpha_bar[t]).sqrt() * epsइसके अलावा code भी consistent नहीं है। Sampling code में time embedding इस्तेमाल है, लेकिन training code में नहीं
बस Reader View चालू करने पर थोड़ा अफसोस हुआ। ऐसा लग रहा था जैसे “यह page semantically perfect है!!” साबित करना चाहता हो, लेकिन उस environment में navigation list की line height 1 से कम थी, इसलिए वह बुरी तरह गड्डमड्ड हो गई। फिर भी जाने देता हूं ;)