पाठ 11 / 27
Causal Masking और Generation
प्रशिक्षण और generation में tokens को भविष्य देखने से रोकें।
आगे झाँकना नहीं
पाठ बनाने वाला (decoder) मॉडल token t को सिर्फ़ उससे पहले के tokens से अनुमानित करे। Causal mask softmax से पहले भविष्य की स्थितियों के scores को ऋण-अनंत कर देता है, इसलिए उनके weights ठीक 0 हो जाते हैं। इससे मॉडल को अनुक्रम की हर स्थिति पर समानांतर प्रशिक्षित भी किया जा सकता है: हर स्थिति अलग अनुमान-कार्य है, सब एक पास में गणित होते हैं। Generation में tokens एक-एक करके बनते हैं, हर चरण पिछले tokens को पढ़ता है।
Causal mask, चलाकर
मैंने यह सादा-Python (सिर्फ़ standard library) उदाहरण चलाया। पंक्ति 0 सिर्फ़ ख़ुद पर (1.0), पंक्ति 1 tokens 0 और 1 पर, पंक्ति 2 तीनों पर attend कर सकती है। ऊपरी-दायाँ त्रिकोण हमेशा 0 है।
import math
def softmax(xs):
m = max(xs); e = [math.exp(x - m) for x in xs]; s = sum(e)
return [v / s for v in e]
scores = [[0.5, 1.0, 2.0], [1.5, 0.2, 0.1], [0.3, 0.9, 1.2]]
for i, row in enumerate(scores):
masked = [s if j <= i else float("-inf") for j, s in enumerate(row)]
print(i, [round(w, 3) for w in softmax(masked)])
Output:
0 [1.0, 0.0, 0.0] 1 [0.786, 0.214, 0.0] 2 [0.189, 0.345, 0.466]
प्रशिक्षण समानांतर पर generation नहीं क्यों
प्रशिक्षण में पूरा पाठ ज्ञात है, इसलिए हर स्थिति एक साथ अनुमानित होती है। Generation में हर नया token पिछले पर निर्भर है, इसलिए चरण एक के बाद एक चलते हैं।
त्वरित जाँच: Causal mask क्या रोकता है?
- Embedding
- Tokenisation
- Softmax
- Token का बाद के tokens पर attend करना
Answer
Token का बाद के tokens पर attend करना — मॉडल को अगले token को देखे बिना अनुमानित करना है।