در این مقاله، معماری و مکانیسمهای پشت مدل ترانسفورماتور T5 گوگل، از چارچوب یکپارچه متن به متن تا مقایسه نتایج T5 را بررسی خواهیم کرد.
حوزه پردازش زبان طبیعی (NLP) به طور مداوم در حال تغییر و رشد است. مدلهای جدید هر سه ماه یکبار منتشر میشوند و به نتایج پیشرفتهای (SOTA) دست مییابند. همه این مدلها با استفاده از توابع هدف مختلف، روشهای آموزشی مختلف و مجموعه دادههای مختلف آموزش داده میشوند.
با چنین ویژگیهای متفاوتی، هنگام مقایسه مدلها با یکدیگر و رسیدن به نتیجهگیری معنادار، یک چالش واقعی وجود دارد. خوشبختانه برای ما، اینجا جایی است که نویسندگان “کاوش در محدودیت های یادگیری انتقال با یک تبدیل متن به متن یکپارچه” وارد می شوند.
در این مقاله، مدل T5 T5 Text-to-Text Transformer گوگل را برای درک چارچوب و مقایسه نتایج آن بررسی خواهیم کرد.
در اینجا چیزی است که ما پوشش خواهیم داد:
کاغذ T5
«کاوش در محدودیتهای آموزش انتقال با یک تبدیل متن به متن یکپارچه» مقاله انقلابی است که معماری T5 Google و چارچوب یکپارچه «متن به متن» را معرفی میکند.
ماهیت روش پیشنهادی این است که میتوانیم هر کار NLP را به عنوان یک مشکل «متن به متن» در نظر بگیریم. به عبارت دیگر، از متن به عنوان ورودی استفاده می کنیم و متن را به عنوان خروجی تولید می کنیم. آنها همچنین یک مجموعه داده عظیم به نام C4 را معرفی کردند که حاوی حدود 750 گیگابایت متن انگلیسی تمیز است. به عنوان یک امتیاز اضافی، هم مدل و هم مجموعه داده منبع باز هستند.
در این پست، معماری مدل T5 را بررسی می کنیم و آن را با مدل های دیگر مقایسه می کنیم و خودمان آن را آزمایش می کنیم.
روی این فایل Google Colab کلیک کنید تا به تمام قطعات کد دسترسی پیدا کنید.
![](https://api.wandb.ai/files/mukilan/images/projects/36936257/fff54aff.png)
اما قبل از اینکه به مدل T5 بپردازیم، مهم است که ابتدا کمی در مورد یادگیری انتقالی بدانیم.
یادگیری انتقالی چیست؟
یادگیری انتقال زمانی اتفاق میافتد که یک مدل روی یک مجموعه داده غنی از داده برای یک کار از قبل آموزش داده شده باشد و میتوان آن را برای کارهای پایین دستی خاص تنظیم کرد. اساساً آموزش و یادگیری در مورد یک کار به کار دیگر منتقل می شود که عموماً در زمینه و حوزه و وظیفه مشابه است.
این یک تکنیک بسیار قدرتمند است که باعث همکاری و رشد می شود. نقطه اوج یادگیری انتقال زمانی است که یک مدل مستقل از پیش آموزش داده شده بر روی مخلوطی از وظایف غنی از داده می تواند برای همه وظایف پردازش متن استفاده شود.
T5 اولین مدلی است که در کارهای مختلف (ترجمه زبان، خلاصهسازی متن، طبقهبندی متن و غیره) به این امر دست مییابد.
اصلا چرا آموزش انتقالی؟
ممکن است بپرسید: «چرا فرد میخواهد یادگیری را از یک کار به کار دیگر منتقل کند، نه صرفاً آموزش یک مدل در کار پایین دستی؟»
آموزش مدل های بزرگ از نظر محاسباتی و مالی گران است و اغلب با استفاده از GPU و TPU های پیشرفته انجام می شود. این مدل ها همچنین ردپای کربن و اثرات زیست محیطی عظیمی را به همراه دارند.
اساساً، یادگیری انتقالی به همه، از علاقهمندان گرفته تا شرکتهای بزرگ، اجازه میدهد تا مدلهای عظیم و گران قیمت را پشت سر بگذارند و آنها را در وظایف خاص خود قرار دهند.
مدل ترانسفورماتور T5 چیست؟
مدل ترانسفورماتور T5 در سال 2020 توسط تیم هوش مصنوعی گوگل معرفی شد و مخفف عبارت Text-to-Text Transfer Transformer (5 Ts یا در مورد ما T5) است. مشکل اصلی که T5 به آن می پردازد فقدان مطالعات سیستماتیک در مقایسه بهترین شیوه ها در زمینه NLP است.
اکثر مدل های SOTA فعلی از معماری ترانسفورماتور مشتق شده اند. ترانسفورماتور در مقاله افسانه ای “توجه همه آن چیزی است که نیاز دارید” توسط واسوانی و همکاران معرفی شد. و دارای دو بلوک اصلی معماری به نام های رمزگذار و رمزگشا بود.
تمام مدل های بعدی به نوعی با این بلوک های معماری ارتباط داشتند. BERT گوگل فقط بلوکهای رمزگذار داشت، GPT-2 OpenAI فقط بلوکهای رمزگشا و غیره داشت.
با معماری های مختلف و مجموعه داده های آموزشی مختلف (ویکی پدیا، ویکی پدیا + مجموعه کتاب تورنتو)، ما نمی توانیم این مدل ها و نتایج SOTA آنها را به طور عینی مقایسه کنیم. از این گذشته، هر مدلی دارای اهداف پیش از آموزش متفاوت، مجموعه داده های بدون برچسب، رویکردهای انتقال و معماری است.
T5 چارچوب «Text-to-Text» را معرفی کرد، که در آن هر کار NLP (ترجمه، طبقهبندی، و غیره) دارای همان ساختار اساسی است که در آن متن به عنوان ورودی به مدل تغذیه میشود و متن به عنوان خروجی تولید میشود. این بدان معناست که ما میتوانیم از یک مدل، همان هایپرپارامترها و تابع ضرر یکسان در تمام وظایف استفاده کنیم.
مدل ترانسفورماتور T5 چگونه کار می کند؟
مدل ترانسفورماتور T5 با استفاده از همان ساختار رمزگذار – رمزگشای استاندارد مانند مدل های ترانسفورماتور استاندارد کار می کند. این شامل بلوک های 12 زوجی رمزگذار-رمزگشا است. هر بلوک شامل توجه به خود، یک شبکه فید فوروارد و توجه اختیاری رمزگذار-رمزگشا است.
اگر معماری مشابه ترانسفورماتور اصلی داشته باشد، چگونه می تواند به SOTA دست یابد؟
برای درک این موضوع، ابتدا باید دو ویژگی منحصر به فرد مدل T5 را درک کنیم:
-
نمایش ورودی/خروجی: چارچوب متن به متن
-
مجموعه داده های آموزشی: مجموعه داده های C4
1. نمایش ورودی/خروجی: چارچوب متن به متن
همانطور که قبلاً بحث شد، ما متن را به عنوان ورودی تغذیه می کنیم و متن را به عنوان خروجی دریافت می کنیم. این به ما این امکان را می دهد که از مدل یکسان، ابرپارامترهای یکسان و تابع ضرر یکسان در تمام وظایف استفاده کنیم.
این کار با افزودن یک پیشوند مخصوص کار به دنباله ورودی و از قبل آموزش مدل برای دریافت خروجی های پیشوند خاص انجام می شود.
اجازه دهید به نحوه انجام آن برای چند کار NLP بپردازیم. ما دستورات را در این بخش ایجاد خواهیم کرد و در ادامه نحوه کار با کد را نشان خواهیم داد.
قبل از انجام این کار، اجازه دهید موضوع کارهایی را که با استفاده از Stable Diffusion نشان داده شده است، به اشتراک بگذارم.
![](https://api.wandb.ai/files/mukilan/images/projects/36936257/542cd667.png)
حالا بریم سراغش.
1.1 خلاصه سازی متن
خلاصه سازی متن وظیفه NLP است که در آن یک مدل، با توجه به یک دنباله متن طولانی، یک نسخه خلاصه شده از ورودی را تولید می کند. از آنجایی که من از طرفداران شدید مانگای One Piece هستم، بنابراین ما دنباله ای از یک مقاله One Piece ویکی پدیا را خلاصه خواهیم کرد.
برای خلاصه کردن باید پیشوند “summarize:” را به دنباله ورودی اضافه کنیم.
1.2 ترجمه زبان
ترجمه زبان، وظیفه NLP است که در آن یک مدل، با دادن متنی به یک زبان، نسخه ترجمهشده همان متن را به زبان دیگری تولید میکند. مدل T5 بر روی مجموعه داده های C4 آموزش داده شد که شامل زبان های زیر است: انگلیسی، آلمانی، فرانسوی و رومانیایی.
با استفاده از T5 می توانیم بین این زبان ها ترجمه کنیم.
در زیر قصد داریم از انگلیسی به فرانسوی ترجمه کنیم. برای ترجمه، باید پیشوند “translate English to French:” را به دنباله ورودی اضافه کنیم.
درخواست ما: «انگلیسی را به فرانسوی ترجمه کنید: حتماً باید «One Piece» را تماشا کنید، خیلی خوب است، کتاب کمیک را دوست خواهید داشت.
1.3 طبقه بندی متن: دلبستگی متنی
دلبستگی متنی یک کار NLP است که در آن دو جمله به مدل داده میشود، یکی مقدمه و دیگری فرضیه. بر اساس این دو جمله، خروجی به سه دسته مستلزم، تضاد و خنثی طبقه بندی می شود.
برای دلالت متنی، باید «mnli premise:» و «hypothesis:» را به جفت جمله اضافه کنیم.
اعلان ما: “مقدمه mnli: من عاشق One Piece هستم. فرضیه: احساسات من نسبت به One Piece پر از عشق است.
1.4 مقبولیت زبانی
مقبولیت زبانی یک کار NLP است که در آن یک مدل با دادن یک پیام متنی بررسی می کند که آیا جمله از نظر گرامری صحیح است یا خیر.
برای مقبولیت زبانی، باید «جمله کولا:» را به جمله اضافه کنیم. COLA مجموعه داده ای است که شامل جملاتی است که مطابق با مقبولیت آنها ترسیم شده است.
درخواست ما: “جمله کولا: لوفی یک دزد دریایی بزرگ است.”
1.5 شباهت جمله
شباهت جمله یک کار NLP است که در آن یک مدل با توجه به دو جفت جمله شباهت خود را در مقیاس 1 تا 5 رتبه بندی می کند. خروجی یک مقدار رشته در نظر گرفته می شود و 0.2 افزایش یافته است. این بدان معناست که ما می توانیم این را به عنوان یک کار طبقه بندی متن با 21 کلاس در نظر بگیریم: 1.0، 1.2، … 5.0.
برای تشابه جمله، باید «stsb جمله 1:» و «جمله 2:» را به جفت جمله اضافه کنیم.
پیام ما: «جمله stsb 1: لوفی در جنگ میجنگید. جمله 2: سبک مبارزه لوفی کمیک است.
![](https://api.wandb.ai/files/mukilan/images/projects/36936257/c598a95d.png)
وظایف پردازش متن، تصویر توسط نویسنده
2. مجموعه داده های آموزشی: مجموعه داده های C4
Colossal Clean Crawled Corpus، C4 یک متن انگلیسی تمیز 750 گیگابایتی است که از اینترنت خراشیده شده است. این مجموعه داده از Common Crawl که یک آرشیو وب در دسترس عموم است، جمع آوری شده است.
پس از استخراج از Common Crawl، نویسندگان سپس اقدام به حذف کلمات توهینآمیز، جملات پرکننده (Loren Ipsum)، براکتهای کد «{»، موارد تکراری و جملاتی کردند که با علامت نقطهگذاری ختم نمیشوند.
این یک مجموعه داده تمیز و عظیم است، به این معنی که مدل را می توان بدون تکرار همان داده ها بر روی مجموعه داده آموزش داد.
اینها مهمترین ویژگی های T5 بودند که در قسمت بعدی عملکرد آنها را خواهیم دید.
کاوش در محدودیت های یادگیری انتقال با یک تبدیل متن به متن یکپارچه
در این بخش، مقاله «کاوش در محدودیتهای یادگیری انتقال با یک تبدیل متن به متن یکپارچه» را خلاصه میکنیم. پیش از این به مهم ترین ویژگی های مدل و معماری T5 پرداخته ایم.
ما 3 بخش اصلی را پوشش خواهیم داد: هدف بدون نظارت، آموزش و مدل
1. هدف بدون نظارت:
تا قبل از این مقاله، بیشتر مدلها از اهداف حذف نویز استاندارد استفاده میکردند که در آنها در مورد هر ورودی تصمیم میگیریم که فاسد یا نه. نویسندگان به یک هدف حذف نویز به سبک BERT با Span Corruption Objective رسیدند.
توکن های خراب متوالی به عنوان یک دهانه در نظر گرفته می شوند، سپس به هر دهانه یک نشانه ماسک منحصر به فرد داده می شود که جایگزین کل دهانه می شود. این منجر به توالی های کوتاه تر می شود.
متن اصلی: One Piece بزرگترین داستانی است که در تاریخ بشر گفته شده است.
گستره های خراب: داستان یک تکه <X> تا کنون <Y> در تاریخ بشر.
هدف: <X>بزرگترین<Y>گفته شده<Z> است
2. آموزش:
همانطور که قبلاً بحث شد، T5 بر روی مجموعه داده C4 آموزش داده شد. نویسندگان، از طریق آزمایش، به این نتیجه رسیدند که بهترین عملکرد زمانی ارائه می شود که مدل برای 1 میلیون مرحله با اندازه دسته ای 2 توانی 11 دنباله با طول 512 آموزش داده شود.
3. مدل ها:
5 نوع T5 با پارامترها و اندازه مدل های مختلف وجود دارد.
-
پایه: قابل مقایسه با BERT_base. این یک مدل پایه با 222 میلیون پارامتر است.
-
Small: این یک نسخه کوچک شده از مدل Base است. این تنها 60 میلیون پارامتر با تنها 6 لایه رمزگذار و رمزگشا دارد.
-
بزرگ: نسخه کوچک شده پایه با 770 میلیون پارامتر.
-
3B: نسخه بزرگ شده پایه با 3 میلیارد پارامتر.
-
11B: نسخه بزرگ شده پایه با 11 میلیارد پارامتر.
نتایج
T5 (11B) در بسیاری از وظایف NLP، به طور خاص 18 کار از 24 کار، به آخرین هنر دست یافت. عامل اصلی برای دستیابی به این نتیجه مقیاس بندی و خلوص مجموعه داده بود.
![](https://api.wandb.ai/files/mukilan/images/projects/36936257/27840483.png)
نتایج T5، تصویر توسط نویسندگان مقاله T5
T5 در مقابل LongT5
مدل T5 دو اشکال اصلی دارد:
-
طول ورودی ثابت
-
سایز مدل
با T5 ما فقط میتوانیم توالیهای ورودی کوتاهتری (معمولاً با طول کمتر از 512 توکن) ارسال کنیم. این به دلیل “رشد محاسبات درجه دوم” است. منابع محاسباتی با توجه به طول توالی ورودی به صورت درجه دوم افزایش می یابد. این باعث افزایش زمان تمرین و مصرف حافظه می شود.
این دو نگرانی توسط LongT5 جدید و جدید، که T5 را با مکانیسم Transient Global (TGlobal) گسترش میدهد، مورد توجه قرار میگیرد، اگرچه ما در اینجا TGlobal را پوشش نمیدهیم.
LongT5 نتایج بهتری نسبت به T5 در کارهای مختلف NLP مانند خلاصه سازی، QnA و غیره به دست می آورد.
نتایج در اینجا نشان داده شده است:
![](https://api.wandb.ai/files/mukilan/images/projects/36936257/ac7cb775.png)
مقایسه T5 در مقابل LongT5، تصویر نویسندگان مقاله LongT5
چه زمانی از مدل T5 استفاده می کنید؟
بالاخره مدل T5 رو خودمون تست کنیم!!!
ما قصد داریم مدل را با دستوراتی که در بخش های قبلی طراحی کردیم تغذیه کنیم.
برای هر کار به جز پیشوند، ساختار یکسانی را دنبال می کنیم.
ابتدا باید کتابخانه های لازم را وارد کنیم و همچنین توکنایزر و مدل را راه اندازی کنیم.
برای هر کار، دنباله ورودی را جمع آوری می کنیم، ورودی را رمزگذاری می کنیم، خروجی را از طریق مدل خود تولید می کنیم و خروجی را رمزگشایی می کنیم.
به یاد داشته باشید، می توانید خروجی ها را مشاهده کرده و کد را خودتان در این …
0. واردات کتابخانه ها
!pip install transformers
!pip install sentencepiece
#import libraries
import torch
from transformers import T5Tokenizer, T5ForConditionalGeneration
#set up tokenizer and model
tokenizer = T5Tokenizer.from_pretrained(‘t5-small’)
model = T5ForConditionalGeneration.from_pretrained(‘t5-small’, return_dict=True)
1. خلاصه سازی متن
one_piece_sequence = (“The series focuses on Monkey D. Luffy, a young man made of rubber, who, inspired by his childhood idol,”
“the powerful pirate Red-Haired Shanks, sets off on a journey from the East Blue Sea to find the mythical treasure,”
“the One Piece, and proclaim himself the King of the Pirates. In an effort to organize his own crew, the Straw Hat Pirates,”
“Luffy rescues and befriends a pirate hunter and swordsman named Roronoa Zoro, and they head off in search of the “
“titular treasure. They are joined in their journey by Nami, a money-obsessed thief and navigator; Usopp, a sniper “
“and compulsive liar; and Sanji, a perverted but chivalrous cook. They acquire a ship, the Going Merry, and engage in confrontations”
“with notorious pirates of the East Blue. As Luffy and his crew set out on their adventures, others join the crew later in the series, “
“including Tony Tony Chopper, an anthropomorphized reindeer doctor; Nico Robin, an archaeologist and former Baroque Works assassin; “
“Franky, a cyborg shipwright; Brook, a skeleton musician and swordsman; and Jimbei, a fish-man helmsman and former member of the Seven “
“Warlords of the Sea. Once the Going Merry is damaged beyond repair, Franky builds the Straw Hat Pirates a new ship, the Thousand Sunny,”
“Together, they encounter other pirates, bounty hunters, criminal organizations, revolutionaries, secret agents, and soldiers of the”
“corrupt World Government, and various other friends and foes, as they sail the seas in pursuit of their dreams.”)
inputs = tokenizer.encode(“summarize: ” + one_piece_sequence,
return_tensors=’pt’,
max_length=512,
truncation=True)
summarization_ids = model.generate(inputs, max_length=80, min_length=40, length_penalty=5., num_beams=2)
summarization = tokenizer.decode(summarization_ids[0])
print(summarization)
This gives us:
![](https://api.wandb.ai/files/mukilan/images/projects/36936257/57dc799c.png)
2. ترجمه
language_sequence = (“You should definitely watch ‘One Piece’, it is so good, you will love the comic book”)
input_ids = tokenizer(“translate English to French: “+language_sequence, return_tensors=”pt”).input_ids
language_ids = model.generate(input_ids)
language_translation = tokenizer.decode(language_ids[0],skip_special_tokens=True)
print(language_translation)
This gives us:
![](https://api.wandb.ai/files/mukilan/images/projects/36936257/d307ef48.png)
3.طبقه بندی متن: دلالت متنی
entailment_premise = (“I love One Piece.”)
entailment_hypothesis = (“My feelings towards One Piece is filled with love”)
input_ids = tokenizer(“mnli premise: “+entailment_premise+” hypothesis: “+entailment_hypothesis, return_tensors=”pt”).input_ids
entailment_ids = model.generate(input_ids)
entailment = tokenizer.decode(entailment_ids[0],skip_special_tokens=True)
print(entailment)
That gives us:
![](https://api.wandb.ai/files/mukilan/images/projects/36936257/6d9d89c0.png)
4. مقبولیت زبانی
sentence = (“Luffy is a great pirate.”)
input_ids = tokenizer(“cola: “+ sentence, return_tensors=”pt”).input_ids
sentence_ids = model.generate(input_ids)
sentence = tokenizer.decode(sentence_ids[0],skip_special_tokens=True)
print(sentence)
That gives us:
![](https://api.wandb.ai/files/mukilan/images/projects/36936257/4ea1cda1.png)
5. تشابه جمله ها
stsb_sentence_1 = (“Luffy was fighting in the war.”)
stsb_sentence_2 = (“Luffy’s fighting style is comical.”)
input_ids = tokenizer(“stsb sentence 1: “+stsb_sentence_1+” sentence 2: “+stsb_sentence_2, return_tensors=”pt”).input_ids
stsb_ids = model.generate(input_ids)
stsb = tokenizer.decode(stsb_ids[0],skip_special_tokens=True)
print(stsb)
That gives us:
![](https://api.wandb.ai/files/mukilan/images/projects/36936257/a62e8dda.png)
خلاصه
در این پست وبلاگ قصد داشتیم شما را با مدل T5، چارچوب متن به متن و وظایف مختلف NLP آشنا کنیم.
ما همچنین تجربه عملی با آزمایش T5 برای خلاصه سازی، ترجمه زبان، دلبستگی متنی، پذیرش زبانی و تشابه جملات داشتیم.
اگر میخواهید مدلهای دیگر را ببینید، در زیر نظر دهید تا ببینم چه کاری میتوانم انجام دهم.