BERT सिर्फ एक टेक्स्ट डिफ्यूजन चरण है
(nathan.rs)- BERT और RoBERTa जैसे masked language model को भी टेक्स्ट डिफ्यूजन मॉडल के कॉन्सेप्ट से समझा जा सकता है
- पारंपरिक Auto-regressive (जैसे GPT) से अलग, ब्लॉक-वाइज जेनरेशन तथा क्रमिक रिकवरी तरीका लागू करने की संभावना को प्रयोगों से साबित किया गया
- मास्किंग अनुपात को चरण-दर-चरण बदलते हुए ट्रेन करने पर RoBERTa से भी प्राकृतिक टेक्स्ट जेनरेशन संभव होने की पुष्टि की गई
- मौजूदा स्ट्रक्चर बदले बिना केवल training objective बदलने से भी जेनरेशन क्षमता हासिल की जा सकती है
- GPT-2 से तुलना करने पर, RoBERTa-आधारित डिफ्यूजन मॉडल भी एक हद तक सुसंगत टेक्स्ट जेनरेशन आउटपुट देता है
अवलोकन
Google DeepMind द्वारा प्रकाशित Gemini Diffusion एक डिफ्यूजन-आधारित भाषा मॉडल है, जो पारंपरिक GPT परिवार से अलग टेक्स्ट को एक बार में ब्लॉक-आधारित तरीके से जेनरेट करता है। यह विधि क्रमिक रूप से रैंडम noise को refine करके टेक्स्ट बनाने वाली approach है। संबंधित शोध-पत्र Large Language Diffusion Models में दिखता है कि डिस्क्रीट भाषा डिफ्यूजन, Masked Language Modeling (MLM) का generalization है। यानी इसी आइडिया के आधार पर BERT परिवार के मॉडल में भी टेक्स्ट जेनरेशन संभव हो सकता है या नहीं, इसे प्रयोगात्मक रूप से explore किया गया।
नोट: बाद में प्रकाशित DiffusionBERT शोध-पत्र ने इसी तरह के आइडिया को अधिक कठोर तरीके से validate किया।
ट्रांसफॉर्मर का सरल इतिहास
2017 में पहली बार propose किए गए Transformer में encoder-decoder architecture था। 2018 में encoder (BERT: bidirectional, masked reconstruction केंद्रित) और decoder (GPT: autoregressive, क्रमिक prediction केंद्रित) अलग होकर अलग-अलग specialized मॉडल families के रूप में सामने आए।
- Encoder-only (BERT परिवार)
- पूरा context input के रूप में लेकर कुछ भागों को
<MASK>से mask करता है और बाकी से restore करता है - sentence representation, classification आदि में strong performance देता है
- पूरा context input के रूप में लेकर कुछ भागों को
- Decoder-only (GPT परिवार)
- दिए गए क्रम में अगला token predict करता है
- generation, summarization, translation आदि में standout करता है
BERT सीधे classification जैसी tasks में इस्तेमाल होने लगा, लेकिन बाद में GPT परिवार ने बेहतर generation ability के कारण ज्यादा विविध use-cases हासिल किए।
डिस्क्रीट भाषा डिफ्यूजन मॉडल
Diffusion मॉडल पहले image generation में mainstream हुए थे।
इमेज में:
- Forward process: साफ़ image में धीरे-धीरे Gaussian noise जोड़कर pure-noise state तक पहुँचना
- Reverse process: deep learning मॉडल से iterative denoise करके original data recover करना
टेक्स्ट पर apply करने के लिए सबसे सरल तरीका masking-based noise process है।
- Forward (Masking)
- t=0 पर original text, और जैसे-जैसे चरण बढ़ते हैं, कुछ tokens को random तरीके से
<MASK>से बदलना - अंतिम चरण में सभी tokens
<MASK>हो जाते हैं
- t=0 पर original text, और जैसे-जैसे चरण बढ़ते हैं, कुछ tokens को random तरीके से
- Reverse (Denoise)
- Transformer encoder दिए गए masking सेटअप में original tokens recover करने के लिए train होता है
- masking ratio कम हो तो आसान, ratio बढ़ने पर recovery कठिन
- high masking ratio से शुरू करके क्रमशः lower ratio पर repeat करने से पूरी sequence generate की जा सकती है
इस डिफ्यूजन framework में मॉडल अलग-अलग masking ratio चरणों पर denoise loss को जोड़कर train होता है। BERT का masking-reconstruction objective वस्तुतः टेक्स्ट डिफ्यूजन का ही एक हिस्सा है। masking-ratio schedule और repeated denoise को combine करने से BERT objective को natural language generation procedure के रूप में expand किया जा सकता है।
RoBERTa डिफ्यूजन प्रयोग
RoBERTa 2019 में आया हुआ BERT variant है, जिसकी खासियत hyperparameter और data का विस्तार, साथ ही अपेक्षाकृत सरल training objective (MLM Only) है।
प्रयोग में HuggingFace transformers, datasets libraries से RoBERTa के default weights, tokenizer और Trainer का उपयोग किया गया।
WikiText dataset पर नीचे दिए क्रम से finetuning की गई:
- प्रत्येक batch के लिए 10-step diffusion schedule (
mask_probs: 1.0~0.1) में से एक चुना गया और masking की गई - custom
diffusion_collatorसे masking probability चुनकर प्रत्येक token पर probability से<MASK>apply किया गया - prompt context बचाने के लिए शुरुआत के पहले 16 tokens हमेशा preserved रखे गए
डेटा मास्किंग (कस्टम collator):
- प्रत्येक उदाहरण के token batches को padding के बाद masking probability random चुनी गई
- पहले 16 tokens छोड़कर बाकी सभी पर probability के साथ
<MASK>apply किया गया - masked data और सही label सेट वापस दिए गए
निर्माण (inference):
- 256-token लंबी sequence input ली गई; पहले 16 tokens prompt और बाकी
<MASK> - प्रत्येक चरण में मॉडल की predicted tokens sample करके भरना, फिर कुछ भाग को फिर से re-mask करना
- masking ratio धीरे-धीरे घटाते हुए loop दोहराना, अंत में पूरी sequence restore हो जाती है
उदाहरण जेनरेशन परिणाम:
- prompt और उसके बाद का काफी प्राकृतिक continuation दिखाते हुए वास्तविकतः पर्याप्त सुसंगत टेक्स्ट generate हुआ
- कुछ anomalies संभवतः WikiText preprocessing format (जैसे
@-@hyphen) की वजह से थे
GPT-2 तुलना
- GPT-2 थोड़ा तेज़ और consistency-wise बेहतर है, लेकिन RoBERTa Diffusion ने अपेक्षा से बेहतर performance भी दिखायी (incremental सुधार की संभावना ऊँची)
- नए AR-Diffusion, Skip-Step Diffusion approaches और optimization से quality/speed और improve की जा सकती है
निष्कर्ष
- RoBERTa-जैसे masked language model भी, यदि masking ratio बदलते हुए train किए जाएँ, तो प्राकृतिक भाषा के जेनरेशन इंजन बन सकते हैं
- केवल
<MASK>tokens से टेक्स्ट को क्रमिक रूप से corrupt/restore करने वाली training strategy से भी पूरी तरह generative model में बदलने की संभावना साबित हुई - स्ट्रक्चर बदले बिना केवल training objective बदलकर जेनरेशन क्षमता प्राप्त की जा सकती है
- यानी, BERT परिवार के मॉडल भी मूलतः एक टेक्स्ट डिफ्यूजन मॉडल से अलग नहीं हैं
1 टिप्पणियां
Hacker News राय
जब BERT पहली बार आया था, तब सबने टेक्स्ट जनरेशन की कोशिश की थी, लेकिन वह ज़्यादातर अच्छी तरह काम नहीं कर पाया; इस बारे में संदर्भ पेपर यहाँ है। DeepMind के Savinov आदि ने दिखाया कि ट्रेनिंग के दौरान सिर्फ़ दो स्टेप लागू करके और masking probability को randomize करके यह काफ़ी उपयोगी ढंग से काम कर सकता है
मैंने पिछले हफ़्ते BERT से बातचीत करवाने की कई कोशिशें कीं, और इस पोस्ट के ज़रिए मुझे यह बात पता चली। अभी भी कुछ और आइडिया हैं जिन्हें आज़माना चाहता हूँ, इसलिए मज़े से प्रयोग जारी हैं संबंधित ब्लॉग
मैं उस बड़े समूह का हिस्सा था जो मानता था कि BERT को टेक्स्ट जनरेशन के लिए नहीं, बल्कि केवल एक pure encoder के रूप में, जैसे semantic similarity मापने और classification के लिए, इस्तेमाल किया जा सकता है
मेरी जानकारी में 2021 के इस पेपर (पेज 5) में पहली बार इस कड़ी की ओर इशारा किया गया था। टेक्स्ट diffusion में शब्दों को अर्थ की दृष्टि से मिलते-जुलते दूसरे शब्दों से corrupt करने का तरीका आज़माया गया था, लेकिन मॉडल से masked शब्द ढूँढवाना ज़्यादा आसान निकला। इस तरह के approach का इतिहास इससे भी पहले के इस पेपर तक जाता है, जिसमें diffusion की गणितीय भाषा इस्तेमाल किए बिना generative MLM बनाया गया था
यह उससे भी पुराना है। 2014 में Li Yao आदि ने इस पेपर में autoregressive (next token prediction) models और generative stochastic networks (denoising autoencoders, diffusion models के अग्रदूत) की equivalence दिखाई थी। उन्होंने तर्क दिया था कि parallel sampling, sequential sampling का अच्छा approximation है, और 2016 में मेरे शोध Counterpoint by Convolution, लिंक में भी इस तरीके को अपनाकर बल्कि बेहतर performance मिलने की बात बताई गई थी। दुर्भाग्य से वह एक application paper था, इसलिए diffusion citations ज़्यादा नहीं मिले। मुझे लगता है कि इसकी जड़ें इससे भी पुरानी होंगी
मुझे भी वही पेपर याद है जो पहली बार इसे औपचारिक रूप से छूता है (BERT देखने के बाद NLP शोधकर्ताओं के लिए diffusion का ख़याल आना स्वाभाविक था)। तीन साल पहले इकट्ठा किए गए शुरुआती text diffusion references का संग्रह यहाँ है
संदर्भ के लिए, संबंधित पेपर यहाँ भी देखा जा सकता है
diffusion-आधारित approaches मुझे जानवरों के दिमाग़ में होने वाली प्रक्रिया के ज़्यादा क़रीब लगते हैं। जब मैं बोलता हूँ, तो मैं पिछले शब्द के आधार पर एक-एक शब्द नहीं बनाता; पहले दिमाग़ में एक धुँधला-सा समग्र विचार बनता है, और उसके बाद उसे भाषा में ढालने की प्रक्रिया बड़ी होती है
autoregressive LLM भी वास्तव में इतना सरल नहीं है कि वह सिर्फ़ अगला शब्द predict करता हो। एक forward pass में भले एक token निकलता है, लेकिन latent space में long-term planning और reasoning साफ़ दिखाई देते हैं। हम भी जब बोलते हैं तो दिमाग़ में एक समग्र चित्र बनाकर क्रम से बोलते हैं, इसलिए यह नहीं कहा जा सकता कि diffusion तरीका हमसे ज़्यादा मिलता-जुलता है
मुझे व्यक्तिगत रूप से यह ब्लॉग पोस्ट पसंद आई, जिसमें diffusion को एक तरह की "spectral autoregression" के रूप में समझाया गया है। diffusion पहले low-frequency features predict करता है और बाद में high-frequency features
जब मैं Slack में किसी संदेश को लगभग 5 बार edit करता हूँ, तो अक्सर ख़ुद को diffusion model जैसा महसूस करता हूँ
बोलते या लिखते समय हम वास्तव में शब्दों को क्रमिक रूप से ही बाहर लाते हैं। लेकिन वाक्य शुरू करने से पहले दिमाग़ में उसका मोटा-मोटा सार पहले से होता है। यह वैसा ही है जैसे LLM token निकालने से पहले latent space में समग्र दिशा की योजना बनाता है
interpretability research से यह पता चला है कि autoregressive LLM भी भीतर ही भीतर पहले से योजना बनाते हैं कि क्या कहना है
व्यक्तिगत रूप से मुझे लगता है कि सिर्फ़ masking और filling की अनुमति देने की बजाय Levenshtein-style insertion/deletion editing को support करना ज़्यादा स्वाभाविक है। उदाहरण के लिए, अगर आख़िरी स्टेप में किसी शब्द को उससे लंबे synonym से बदलना हो, तो दाईं ओर shift न कर पाने के कारण ऐसी diffusion संरचना में यह आसान नहीं है
ऐसे सरल प्रयोग दिलचस्प होते हैं क्योंकि उनसे सिद्धांत जल्दी समझ में आ जाता है। text diffuser models में खटकने वाली बात यह है कि tokens को continuous values की जगह discrete values के रूप में संभालना पड़ता है। images में pixels continuous होते हैं, इसलिए उन पर noise डालना स्वाभाविक है, लेकिन text tokens के साथ ऐसा नहीं है। आम तौर पर इसे full replacement से संभालना पड़ता है; embedding space में noise जोड़ने या सीधे embeddings सीखने जैसे कई approaches हैं, लेकिन वे सभी image diffusion से ज़्यादा जटिल हैं
मुझे इस पेपर जैसे approaches से ज़्यादा उम्मीद है। यह continuous latent diffusion और autoregressive transformer-आधारित text generation को जोड़ता है। autoencoder और transformer को साथ में (या स्वतंत्र रूप से) train किया जा सकता है
जब मैंने पहली बार text diffusion models देखे, तो मेरे मन में आया, “क्या यह बस MLM नहीं है?” जिस चीज़ ने मेरा ध्यान खींचा वह MaskGIT था। यह तरीका सच में diffusion कहलाने लायक तब लगेगा, जब मॉडल को ग़लत tokens को सही tokens से बदलना सिखाया जाए, क्योंकि continuous diffusion की ताकत noise robustness है। लेकिन व्यवहार में ग़लत tokens उत्पन्न करने का विचार बनाना आसान नहीं है, इसलिए लगता है कि इस पर अभी बहुत कम कोशिश हुई है
मैंने UTF8 bytes के स्तर पर MLM के साथ प्रयोग करके non-standard translation model बनाने की कोशिश की थी। curriculum learning और progressive random corruption का इस्तेमाल किया। अगर मकसद सिर्फ़ noise जोड़ना है, तो random indices को random byte values से बदलना काफ़ी है। उदाहरण के लिए, नीचे वाला pattern input के रूप में दिया जाता है
पूरे target sequence का बार-बार मूल्यांकन किया जाता है, ताकि difficulty stages बढ़ने पर training domain में discontinuous बदलाव न आएँ। नतीजतन मैंने terminology या classification की ज़्यादा परवाह करना छोड़ दिया, और यह देखना ज़्यादा अहम हो गया कि ‘क्या यह diffusion है’ नहीं, बल्कि ‘क्या यह सच में काम करता है’
यह भी जानना रोचक होगा कि electra के साथ इसकी तुलना कैसी बनती है
मैं inline code completion model को fine-tune करके यह प्रयोग करना चाहता था कि क्या उससे cursor जैसी performance मिल सकती है (व्यवहार में शायद मुश्किल होगा, लेकिन मज़ेदार रहेगा)। लेकिन आधार के रूप में इस्तेमाल करने लायक कोई open diffusion model अभी है ही नहीं, इसलिए मैं उसका इंतज़ार कर रहा हूँ
image diffusion models की आकर्षक बात यह थी कि वे random noise से image बना देते हैं। लेकिन text diffusion models random tokens से नहीं, बल्कि पूरी तरह masked खाली tokens से क्यों शुरू होते हैं, यह बात मुझे सोचने पर मजबूर करती है
यह इस पर निर्भर करता है कि आप कौन-सा काम करना चाहते हैं। अगर simple text completion चाहिए, तो input sentence को बिना masking दिए और उसके बाद के masked tokens मॉडल से भरवाए जा सकते हैं। अगर code editing जैसी चीज़ चाहिए, तो सिर्फ़ edit वाले हिस्से को mask करके उसे क्रमशः भरवाया जा सकता है। text diffusion models की असली ताकत code editing जैसी व्यावहारिक editing capability है (autoregressive LLM को editing के लिए अलग instruction-based system चाहिए होता है)। अगर किसी बहुत उपयुक्त code editing head के साथ मॉडल train किया जाए, तो कई coding tasks की speed और efficiency बढ़ सकती है। आगे चलकर GPT Codex जैसी जगहों पर यह क्षमता स्वाभाविक रूप से integrated दिख सकती है
ऐसा नहीं है कि सब सिर्फ़ empty tokens से शुरू करते हों। कुछ random tokens से, कुछ masks से, और कुछ embedding vectors से शुरू करने जैसे अलग-अलग प्रयास भी हैं