शब्दों से संख्याएँ
सीमा पर एक अनुवादक
एक भाषा मॉडल कभी पाठ नहीं देखता। यह पूर्णांक देखता है। एक टोकनाइज़र सीमा पार करने पर बैठा होता है: मानव शब्द अंदर प्रवाहित होते हैं, पूर्णांक आईडी बाहर निकलती हैं। पीढ़ी प्रवाह को उलट देती है: पूर्णांक आईडी वापस आती हैं, एक टोकनाइज़र पाठ प्रस्तुत करता है।
तीन कार्य:
1. विभाजन करें। एक स्ट्रिंग को टुकड़ों (टोकन्स) में काटें।
2. मानचित्रण करें। प्रत्येक टुकड़े को एक निश्चित शब्दकोश से अद्वितीय पूर्णांक ID सौंपें।
3. उलटा करें। उत्पन्न करने के समय IDs से पाठ को पुनर्निर्माण करें।
क्यों टुकड़े, पूरे शब्द नहीं
पूर्ण-शब्द शब्दकोश फूट-फूटकर बढ़ जाता है। अंग्रेजी के पास ही सैकड़ों हजारों रूप हैं। इससे भी बुरा, पूरे शब्दों पर प्रशिक्षित मॉडल टाइपो, नया नाम, या विदेशी वाक्यांश को संभाल नहीं सकता: कोई भी अनदेखा शब्द एकल <UNK> स्लॉट में मैप हो जाता है।
सबवर्ड टोकनाइज़ेशन इसे ठीक करता है। सामान्य टुकड़ों का एक शब्दकोश किसी भी शब्द को रचता है, जिसमें प्रशिक्षण के दौरान कभी न देखे गए शब्द भी शामिल हैं। दो रणनीतियाँ प्रमुख हैं: BPE (byte pair encoding) & distributional segmentation। ANDREA दूसरी रणनीति चुनता है।
क्यों सबवर्ड
शब्द कहाँ टूटता है
ज़ेलिग हैरिस, 1955
एक भाषाविद् ज़ेलिग हैरिस ने कुछ नोटिस किया। एक शब्द के अंदर, किसी दिए गए अक्षर अनुक्रम के बाद आने वाले विशिष्ट अक्षरों की संख्या में तीव्र परिवर्तन होता है। un के बाद दर्जनों अक्षर मिल सकते हैं: a, b, c, d, e ... unbel के बाद केवल एक छोटा सा समूह आता है: i (फिर ievable)।
उत्तराधिकारी विविधता में वृद्धि एक संभावित प्रत्यय सीमा को चिह्नित करती है। un (एक उपसर्ग) के बाद, विविधता बढ़ जाती है क्योंकि कई मूल शब्द उसके बाद आ सकते हैं। एक मूल शब्द जैसे believ के अंदर, विविधता कम रहती है क्योंकि अक्षर एक-दूसरे की भविष्यवाणी करते हैं। प्रत्ययों के बीच संक्रमण पर, विविधता फिर से बढ़ जाती है।
विविधता वृद्धि से खंडों तक
उस डिटेक्टर को ट्रेनिंग कॉर्पस पर चलाएं। हर शब्द सांख्यिकीय साक्ष्य दान करता है। एक टोकनाइज़र उच्च-आवृत्ति वाले खंडों को इकट्ठा करता है जो मॉर्फीम-आकार की सीमाओं पर बार-बार आते हैं: un, re, pre, believ, know, ing, able, ly, tion, ed।
कोई लेबल नहीं। कोई भाषाविद् मॉर्फीम को हाथ से टैग नहीं करता। अक्षर सह-अवधारणा का एक सांख्यिकी कार्य करता है।
हैरिस बनाम BPE
| गुण | Harris | BPE |
|---|---|---|
| सीमा मानदंड | उत्तराधिकारी विविधता स्पाइक | जोड़ी आवृत्ति |
| भाषाई आकार | प्रत्यय-संरेखित (उपसर्ग, मूल, प्रत्यय) | सामान्य बाइट जोड़ियाँ |
उदाहरण: unbelievably | un + believ + abl + y | unb + eli + eva + bly |
| सामान्यीकरण | मजबूत (मूल + प्रत्यय पुनर्संयोजित होता है) | कमजोर (जोड़ियों को संरेखित होने की आवश्यकता नहीं) |
दोनों उपशब्द टुकड़े उत्पन्न करते हैं। हैरिस टुकड़े आमतौर पर एक भाषाविद् द्वारा प्रत्यय कहे जाने वाले के साथ संरेखित होते हैं: सबसे छोटी अर्थपूर्ण इकाई। BPE टुकड़े संपीड़न को अनुकूलित करते हैं: सबसे सामान्य बाइट जोड़ी को विलय किया जाता है, अर्थ की परवाह किए बिना।
शब्द का विभाजन करें
तीन Vocab Slabs
एक ANDREA Vocabulary की Anatomy
Harris tokenization एक vocabulary उत्पन्न करता है जिसमें तीन slabs होते हैं:
स्लैब 1: 256 बेस बाइट्स. हर संभव UTF-8 बाइट (0x00 से 0xFF तक) को अपना टोकन ID मिलता है। एक सुरक्षा जाल: कोई भी चरित्र जो कॉर्पस में हो, टोकनाइज़र उसे बाइट्स की एक श्रृंखला के रूप में दर्शा सकता है। कभी <UNK> फायर नहीं होता।
स्लैब 2: N मॉर्फीम सेगमेंट्स. वितरणीय विश्लेषण के माध्यम से खोजे गए सामान्य टुकड़े। ANDREA-12M में प्रशिक्षित N = 4096; ANDREA-120M में प्रशिक्षित N = 8192। प्रत्येक सेगमेंट एक बार-बार आने वाले मल्टी-बाइट स्ट्रिंग को एकल टोकन में संपीड़ित करता है।
स्लैब 3: 1 BOS टोकन. हर ट्रेनिंग सीक्वेंस की शुरुआत में रखा गया एक विशेष मार्कर। मॉडल को 'इस स्थिति का कोई अतीत नहीं है' सीखने देता है। ANDREA-12M और ANDREA-120M दोनों BOS के लिए ठीक एक ID आरक्षित करते हैं।
शब्दकोश आकार
| मॉडल | आधार बाइट्स | मॉर्फीम खंड (N) | BOS | शब्दकोश आकार |
|---|---|---|---|---|
| ANDREA-12M | 256 | 4096 | 1 | 4353 |
| ANDREA-120M | 256 | 8192 | 1 | 8449 |
256 + N + 1 = शब्दकोश आकार। सरल। पुनरुत्पाद्य। खुला।
बाइट स्लैब क्यों महत्वपूर्ण है
एक बाइट फॉलबैक कवरेज की गारंटी देता है। यदि कोई मॉडल 日本語 को एन्काउंटर करता है & टोकनाइज़र के पास जापानी मॉर्फीम्स नहीं हैं, तो व्यक्तिगत UTF-8 बाइट्स एक सीक्वेंस को आगे ले जाते हैं। एक मॉडल बाइट्स पर ट्रेन होता है; दुर्लभ स्क्रिप्ट्स पर क्वालिटी क्षमता & एक्सपोज़र पर निर्भर करती है, लेकिन कोई इनपुट कभी टोकनाइज़र को क्रैश नहीं करता।
एक वोकैबुलरी की गणना करें
सीक्वेंस की शुरुआत
एक अनुक्रम को मार्कर की आवश्यकता क्यों होती है
एक डिकोडर-ओनली ट्रांसफॉर्मर पूर्व संदर्भ से अगला टोकन भविष्यवाणी करता है। स्थिति 0 में कोई पूर्व संदर्भ नहीं होता। बिना मार्कर के, स्थिति 0 एक तार्किक छेद में बैठी रहती है: मॉडल के पास ध्यान देने के लिए कुछ नहीं होता।
BOS एक छेद को हल करता है। एक एकल विशेष टोकन (ID = 256 + N) प्रशिक्षण के दौरान हर अनुक्रम की शुरुआत में बैठता है। मॉडल सीखता है:
- 'जब आप BOS देखें, तो प्राकृतिक पाठ का एक संभावित पहला टोकन भविष्यवाणी करें।'
- 'जब आप BOS के बाद एक शब्द देखें, तो वह शब्द अनुक्रम की शुरुआत है, न कि निरंतरता।'
एक टोकन, कई उपयोग
BOS निम्नलिखित स्थानों पर दिखाई देता है:
- प्रशिक्षण समय: मॉडल में डाले गए हर टेक्स्ट चंक के पहले जोड़ा जाता है।
- अनुमान समय: प्रॉम्प्ट के पहले जोड़ा जाता है ताकि मॉडल को एक परिचित 'नई शुरुआत' संकेत दिखे।
- सीमा चिह्नन: कुछ पाइपलाइनों में, संयोजित दस्तावेजों के बीच एक विभाजक।
ANDREA BOS के लिए ठीक एक ID आरक्षित करता है। कोई EOS नहीं, कोई PAD नहीं, कोई विशेष टोकन नहीं जो शब्दकोश को चाहिए उससे अधिक। सादगी एक स्थायी कंप्यूटर मूल्य बनी रहती है: हर टोकन अपनी जगह कमाता है।
गतिविधि 3 जारी
गतिविधि 3 (grow_a_language_model_tokenizer_diet) कवर करती है कि जब N बहुत बड़ा हो या टोकनाइजर कॉर्पस ट्रेनिंग कॉर्पस से भिन्न हो तो क्या होता है। ANDREA-12M ने अपना 63.6% शब्दकोश बर्बाद किया; ANDREA-120M ने इसे ठीक किया। आगे पढ़ें।