Մենք սովորում ենք թոքենիզատորներ, քանի որ մեքենաները չեն կարդում լեզուն այնպես, ինչպես կա, հետևաբար այն պետք է վերածվի թվերի, և այստեղ օգնության են հասնում նշանաբանները: Անբավարար խոսող նշանավորումը նախադասությունները բառերի բաժանում է: Սա պարզ է թվում, բայց կան մի քանի նախազգուշացումներ, հիմնականում այն պատճառով, որ մենք ցանկանում ենք քարտեզագրել յուրաքանչյուր նշան մի թվի, և այդ կերպ ձևավորված այս քարտեզագրման չափն ու նշանակությունը կարևոր և կարևոր է մեքենայական ուսուցման առաջադրանքների համար:
Ի՞նչ է թոքենիզատորը:
Tokenizer-ը տեքստը բաժանում է բառերի կամ ենթաբառերի, դրան հասնելու բազմաթիվ եղանակներ կան:
Օրինակ, ստորև տրված տեքստը կարելի է բաժանել ենթաբառերի մի քանի ձևով.
Բառերին կցված կետադրական նշանները դրանք դարձնում են ոչ օպտիմալ: Կետադրական նշանների առկայությունը մոդելին կստիպի սովորել կոնկրետ ներկայացումը և կփրկի նրան բառին հաջորդող ամեն հնարավոր կետադրական նշանով պատկերների հսկայական քանակ սովորելուց:
Բայց դա պարզապես չի դադարում այստեղ. Ավելի լավ կլիներ, որ «Let’s»-ը նշվեր որպես «Let» և «s»: Սա ընդամենը մեկ օրինակ է այն բանի, թե ինչպես է տարբերվում նշանավորումը՝ հիմնվելով կիրառվող կանոնի վրա: Նշանակման տարբեր կանոնները կբերեն տարբեր արդյունքներ նույն մուտքային տեքստի համար:
Երբ խոսքը վերաբերում է նախապես վերապատրաստված մոդելին, եզրակացության ժամանակ մուտքագրումը պետք է փոխանցվի նույն խորհրդանշական երթուղու միջով, ինչ անցել է վերապատրաստման տվյալների մշակման ժամանակ: Սա նման է սովորական տվյալների նախնական մշակման մեթոդներին, որոնք կիրառվում են թեստի տվյալների վրա, որոնք նույնն են, ինչ վերապատրաստման տվյալները:
Այսպիսով, ըստ էության, տեքստը վերածվում է ավելի փոքր կտորների: Օրինակ, եթե տարածության և կետադրության նշանավորումն օգտագործվի նախադասությունները բառերի բաժանելու համար, ապա դա կարող է հանգեցնել բառապաշարի հսկայական կորպուսի և, իր հերթին, հսկայական ներդրման մատրիցայի: Դա կհանգեցնի թանկարժեք գործի՝ ավելի մեծ ժամանակի բարդության և հիշողության ավելացման առումով:
Տեսնենք սա օրինակով.
Նկատի ունեցեք, որ բոլոր բառերը փոքրատառերով են, քանի որ մենք օգտագործում ենք առանց տառերի մոդել: Ի հավելումն կետադրական խնդիրների, ինչպես ցույց է տրված նաև վերը նշված օրինակում, ուշադրություն դարձրեք, որ «tokenize» բառը բացակայում է բառապաշարում և, հետևաբար, բաժանվում է որպես [«token», «##ize»]: «##»-ը նշանակում է, որ այս նշանը պետք է կցվի նախորդի հետ՝ վերարտադրելիության նպատակով վերծանման ժամանակ:
Տեսնենք, թե որն է մեր հաջորդ լավագույն խաղադրույքը, նիշերի մակարդակի նշանավորումը: Իր պարզեցված նշանաբանության կանոնի շնորհիվ այն ոչ ժամանակ է պահանջում, ոչ էլ ծանրաբեռնում հիշողության վրա: Բայց այն հարվածում է մոդելի կատարողականին այն պարզ պատճառով, որ այն չի կարողանում սովորել իմաստալից մուտքային ներկայացումները, օրինակ. Սովորելով «C» ընդդեմ «Covid»-ի ներկայացումը. ո՞ր մեկն է ավելի հեշտ սովորելը իմաստալից ներկայացման առումով:
Այսպիսով, մենք տեսել ենք բառերի և կերպարների նշանավորումը և կդիմենք հիբրիդային մոտեցմանը, որը կոչվում է ենթաբառի նշանավորում:
Ենթաբառերի նշանաբանը և դրա բնութագրերը.
- Աջակցում է բառապաշարի ողջամիտ չափին
- Սովորում է համատեքստից անկախ բովանդակալից ներկայացումներ
- Մշակում է նախկինում չտեսնված բառերը
Տեսնենք ինչպես?
Այն աշխատում է հաճախակի օգտագործվող ենթաբառերը իրար միացնելով՝ համեմատաբար ավելի հազվադեպ բառեր կազմելու համար: Նման հազվագյուտ բառի իմաստը բխում է նրա բաղկացուցիչ ենթաբառերի բաղադրյալ իմաստից։ Հետևելով այս սկզբունքին՝ այն ունի նախկինում չտեսնված բառերի մշակման առավելություն, քանի որ փորձում է դրանք բաժանել հայտնի ենթաբառերի:
Եկեք սովորենք, թե որոնք են երեք հիմնական ենթաբառերի նշանաբանները.
- BPE (Բայթ զույգի կոդավորում)
- Բառ-կտոր
- Նախադասություն-կտոր
Բայթ զույգի կոդավորում՝
Ես փորձել եմ բացատրել BPE ենթաբառերի tokeinzation գործընթացը՝ օգտագործելով ստորև ներկայացված պատկերը: Հուսով ենք, որ դա կօգնի ձեզ հասկանալ տարբեր քայլերը՝ նախնական նշանավորման, հիմնական բառապաշարի ձևավորման և ինչպես միաձուլման կանոնները հանգեցնում են թարմացված բառապաշարի:
Եթե «bug» նոր բառ հայտնվի՝ հիմնվելով BPE մոդելի ուսուցման կանոնների վրա, այն կնշանակվի որպես [«b», «ug»]: Այն դեպքում, երբ նոր բառերը կազմում են նշաններ, որոնք չկան հիմնական բառապաշարում, օրինակ. «Գավաթ»-ը պարունակում է «m» նշանը, որն ի սկզբանե չկար բառապաշարում, կփոխարինվի «‹unk›» նշանով: Նկատի ունեցեք, որ այս ‹unk› նշանն անհրաժեշտ չէ, եթե բառապաշարում առկա են բոլոր հիմնական նիշերը: Սա ձեռք է բերվում բայթ մակարդակի BPE-ի միջոցով:
WordPiece. Այն աշխատում է BPE-ի նման, այն տարբերությամբ, որ ընտրում է խորհրդանիշների զույգը, որը առավելագույնի կհասցնի բառապաշարին ավելացված ուսուցման տվյալների լեզու-մոդելի հավանականությունը, BPE-ում հաճախակի հանդիպող զույգի փոխարեն:
SentencePiece. Չվերահսկվող նշանաբան, որը ներառում է բացատներ նիշերի հավաքածուում և այնուհետև կիրառում է BPE բառապաշար ստեղծելու համար:
Հիմնական բնութագրերը.
- Աջակցում է երկու սեգմենտավորման ալգորիթմներին, մասնավորապես բայթ-զույգ կոդավորումը (BPE) և unigram լեզվի մոդելը
- Ֆիքսված բառապաշարի չափը, քանի որ գործնականում անհնար է ներառել ձեր բառապաշարի բոլոր բառերը՝ թվային ներկայացում ստանալու համար: օրինակ՝ փառք և փառաբանել, արժանապատվություն ընդդեմ արժանապատիվ, դրանք իմաստային առումով նույնն են և կարիք չունեն առանձին վեկտոր վերագրելու:
- Ուղղակիորեն ստեղծում է բառապաշար id քարտեզագրման համար
- Լեզվի համար ագնոստիկ, այսինքն՝ նախադասությունները վերաբերվում է որպես յունիկոդ նիշերի հաջորդականության և զերծ է լեզվից կախված տրամաբանությունից:
- Մարզվում է անմիջապես չմշակված նախադասություններից և միշտ չէ, որ պահանջում է նախնական նշանավորում
- Օգտագործում է կանոնակարգման մեթոդներ, ինչպիսիք են ենթաբառերի կանոնավորացումը և BPE-ի թողարկումը, որոնք հնարավորություն են տալիս տվյալների մեծացումը՝ կատարելով ենթաբառերի նմուշառում անմիջապես: Այս տեխնիկան արտադրում է ամուր մոդելներ և բարելավում է նյարդային մեքենայական թարգմանության մոդելների ճշգրտությունը:
Ամփոփում՝
Մենք սկսեցինք հասկանալով, թե ինչ է թոքենիզատորը և ինչու են դրանք առաջին հերթին անհրաժեշտ: Այնուհետև մենք սովորեցինք երեք տեսակի թոքենիզատորներ՝ նիշ, բառ և ենթաբառի նշանաբաններ: Ենթատոկենիզատորներում կան երեք հիմնական նշանաբաններ՝ BPE, WordPiece և SentencePiece
Հղումներ:
- https://github.com/google/sentencepiece
- https://colab.research.google.com/github/huggingface/notebooks/blob/master/transformers_doc/tensorflow/tokenizer_summary.ipynb
- https://arxiv.org/pdf/1609.08144.pdf