شرحی بر مدل ترنسفورمر موتور ترجمه ماشینی ترگمان

نزدیک به ۵ سال از معرفی مدل‌های ترانسفورمر برای انجام ترجمه ماشینی می‌گذرد. هرچند افزایش کیفیت خروجی مدل‌های ترجمه مبتنی بر مدل ترانسفورمر به اندازه افزایش کیفیت در هنگام گذار از قاعده‌مند به آماری و از آماری به نورونی شگرف نبود، اما به‌قدری مهم بود که به راحتی بتوان آن را لمس کرد. در سال‌های اخیر پیشرفت‌های زیادی در زمینه درک بهتر شبکه‌های عصبی عمیق اتفاق افتاده است. حالا می‌دانیم که وقتی تعداد پارامترهای مدل خیلی خیلی بیشتر از اندازه داده‌های آموزش باشد، باز هم با توجه به ذات روش بهینه‌سازی مبتنی بر گرادیان، می‌توانیم مدل‌هایی آموزش دهیم که هنگام کاربرد عملی هم تعمیم مناسبی داشته باشند و روی داده‌هایی که ندیده‌اند هم به نحو مناسبی عمل کنند [1,2]. البته برای اینکه این اتفاق بیفتد، لازم است اندازه داده‌های آموزش از یک آستانه بزرگ‌تر باشد [1,2]. بنابراین در طی این ۵ سال با افزایش توان پردازشی و همینطور افزایش دادگان در دسترس، مدل‌های بزرگتری از جنس ترانسفورمر روی پیکره‌های متنی بزرگتری آموزش دیدند و کیفیت ترجمه نیز بالتبع بیشتر شده است.

رشد روش‌های ترجمه از ۱۹۵۰ تا کنون
رشد روش‌های ترجمه از ۱۹۵۰ تا کنون

ما در ترگمان در همان اوائل معرفی مدل‌های ترانسفورمر موتور ترجمیار (که بصورت اختصاصی برای ترجمه مقالات علمی مورد استفاده قرار می‌گیرد) را به ترانسفورمر ارتقاء دادیم. همان زمان موتورهای ترجمه عمومی نیز با استفاده از مدل‌های ترانسفورمر به‌روز شدند. با این حال محدودیت منابع پردازشی در دسترس اجازه نمیداد از این موتورها برای سرویس دهی در ترگمان استفاده کنیم. امروز اما، خرسندیم که اعلام کنیم از آخرین پیشرفت‌های در زمینه ترجمه ماشینی برای سرویس دهی در ترگمان هم استفاده می‌کنیم.

برای عملی شدن این اتفاق ما می‌بایست در عین حال که کیفیت مدل‌های مترجم را حفظ می‌کردیم، اندازه آن‌ها را به میزانی کاهش می‌دادیم که امکان سرویس‌دهی از دست نرود. در ادامه مدل‌های ترانسفورمر را کمی عمیق‌تر بررسی می‌کنیم و روشی که برای کاهش اندازه در عین حفظ کیفیت استفاده شد را تشریح می‌کنیم.

مدل‌های ترانسفورمر

ترانسفورمرها که در سال ۲۰۱۷ معرفی شدند با استفاده از مکانیزمی در مدل‌های ترجمه نورونی که «توجه» نام دارد کل عملیات لازم برای ترجمه را مدل‌ می‌کردند. این مدل‌ها هم همانند موتورهای نورونی پیشتر شامل دو بخش کد‌گذار و کدگشا هستند. علاوه بر آن در این مدل‌ها هم مهمترین نقش، بخش کد‌گذار ابهام زدایی از کلمات درون جمله است. بخش کدگشا هم وظیفه تولید ترجمه خروجی بر اساس ورودی را دارد. این‌ها چیزهایی است که بین ترانسفورمرها و مدل‌های ترجمه نورونی پیشتر از آن‌ها مشترک است [4].

بخشهای کدگذار و کدگشای مدل ترانسفورمر
بخشهای کدگذار و کدگشای مدل ترانسفورمر

یکی از مهمترین اختلاف‌هایی که این مدل‌ها با اسلاف خود دارند، اما، قابلیت موازی‌سازی خیلی خیلی بیشتر است. این موضوع مخصوصاً در مورد بخش کد‌گذار مؤثر است. بخش کدگشا در اکثر مدل‌های ترجمه از نوع مرحله به مرحله است هر چند با معرفی ترانسفورمرها اکنون مدل‌هایی برای ترجمه داریم که یک‌جا کل متن ترجمه را تولید می‌کنند. با این حال در هنگام آموزش، هم بخش کدگذار و هم بخش کدگشای ترانسفورمرها از الگوریتم‌های موازی به شدت استفاده می‌کنند [4].

زمان آموزش مدل‌های ترانسفورمر و شبکه‌های بازگشتی
زمان آموزش مدل‌های ترانسفورمر و شبکه‌های بازگشتی

تحقیقات نشان می‌دهد که بخش کدگذار ترانسفورمرها برای انجام ابهام زدایی از کلمات نسبت به مدل‌های پیشتر از خود بهبود مشخصی نشان می‌دهد [3]. علاوه بر آن بخش کدگذار ترانسفورمر کارایی بهتری در زمینه شناسایی مرجع ضمیر نیز از خود نشان می‌دهد که این خود به نوعی ابهام زدایی از کلمات است [4,5].

شناسایی مرجع ضمیر
شناسایی مرجع ضمیر

شاید دلیل این دو برتری مهم این باشد که هنگام کدگذاری فاصله کلمات در تأثیر گذاری آن‌ها بر هم نقش جدی ندارد. این بر خلاف مدل‌های بازگشتی (چه LSTM و چه GRU) است، که حافظه محدودی برای نگهداری اطلاعات کلمات وجود دارد و تأثیر کلمات بر هم فقط از مسیر این حافظه امکان‌پذیر است. به بیان دیگر، اطلاعات کلمات در بخش «وضعیت» شبکه بازگشتی نگهداری می‌شوند تا زمانی که «دروازه‌ها»ی شبکه بازگشتی اجازه اثرگذاری این اطلاعات بر خروجی کدگذاری کلمه‌ای دیگر را صادر کنند. میزان اطلاعات قابل ذخیره‌سازی در «وضعیت» شبکه‌های بازگشتی نیز نسبت به کل دنباله کلمات خیلی محدودتر است. در مدل‌های ترانسفورمر، اما، مکانیزم «خود-توجهی» امکان تأثیر مستقیم کلمات در تمامی جمله روی هم را فراهم می‌کند.

مکانیزم «توجه» در مدل‌های ترانسفورمر
مکانیزم «توجه» در مدل‌های ترانسفورمر

نکته دیگری که در مورد ترانسفورمرها حائز اهمیت است این است که ترانسفورمرها می‌توانند هر تابع تبدیل دنباله‌ای را که روی یک دامنه کامپکت اثر می‌کند با دقت دلخواه تقریب بزنند [6]. این یعنی، مستقل از اینکه داده‌های آموزشی شامل چه چیزهایی باشد، می‌توانیم با دقت دلخواه تابعی که این دنباله‌ها را به هم تبدیل کند تقریب بزنیم و مدل مترجم مدنظر خود را داشته باشیم.

کاهش منابع پردازشی در عین حفظ کیفیت ترجمه

بررسی‌هایی که روی ترانسفورمرها انجام شده نشان می‌دهد که برای حفظ کیفیت خروجی، نیاز به همه پارامترهای مدل‌های آموزش دیده وجود ندارد. برای مثال از میان «سرهای توجه» در ترانسفورمرها، فقط تعداد کمی کار اصلی انتقال اطلاعات را انجام می‌دهند [7,8]. این قاعده در مورد اکثر مدل‌های یادگیری عمیق مصداق دارد. به همین جهت روش‌های مختلفی برای کاهش مدل ذیل عنوان «عصاره‌گیری دانش» وجود دارد [9.10].

 اکثر «سرهای توجه» در ترانسفورمر «توجه» نزدیک به تصادفی دارند
اکثر «سرهای توجه» در ترانسفورمر «توجه» نزدیک به تصادفی دارند

برای کاهش ابعاد مدل‌های ترانسفورمر نیز روش‌های مختلفی پیشنهاد شده است. یکی از این روش‌ها که به روش «آموزگار-دانش‌آموز» معروف است [11] برای کاهش ابعاد مدل‌های ترانسفورمر به نحو مؤثری کار می‌کند. در تمامی روش‌های بکارگرفته شده برای کاهش ابعاد، هدف اصلی این است که تلاش کنیم مدل کوچکتر (که آن را دانش‌آموز می‌نامیم) احتمالاتی را پیش‌بینی کند که به پیش‌بینی مدل اصلی آموزش دیده (که آموزگار نامیده می‌شود) نزدیک باشد. یک روش برای رسیدن به این هدف این است که به جای استفاده ترجمه‌های موجود در پیکره آموزشی، تابع هزینه را به نحوی تنظیم کنیم که فاصله کی‌ال(KL Divergence‌) توزیع پیش‌بینی شده توسط دانش‌آموز از توزیع پیش‌بینی شده توسط آموزگار کمینه شود. روش دیگر این است که دادگان آموزشی سنتز شده برای آموزش دانش‌آموز بکار ببریم؛ به این معنی که بجای استفاده از ترجمه اصلی در پیکره آموزشی، خروجی مدل آموزگار را به عنوان مرجع برای آموزش استفاده کنیم.

بررسی‌های ما در ترگمان نشان می‌دهد که استفاده از ترکیبی از این دو روش بهترین خروجی را به دست می‌دهد ولی روش دوم به تنهایی نیز کیفیت مناسبی دارد.

در بسیاری از مدل‌های عصاره‌گیری دانش، تابع هزینه دانش‌آموز توسط آموزگار تعیین می‌شود
در بسیاری از مدل‌های عصاره‌گیری دانش، تابع هزینه دانش‌آموز توسط آموزگار تعیین می‌شود

برای غنی‌تر شدن دایره لغات مدل دانش‌آموز استفاده از نمونه‌برداری بجای ترجمه مستقیم می‌تواند بسیار کمک کننده باشد. نمونه‌برداری کمک می‌کند کلماتی که احتمال دیده‌شدنشان در خروجی ترجمه مدل آموزگار خیلی زیاد نیست هم در داده‌های آموزشی قرار بگیرند. هنگام عمل نمونه‌برداری می‌توانیم از چند خروجی مختلف مدل آموزگار استفاده کنیم و با این ترفند اندازه داده‌های آموزشی را نیز افزایش دهیم.

نمونه‌برداری بجای استفاده از بهترین ترجمه، گستره لغات مقصد را افزایش می‌دهد
نمونه‌برداری بجای استفاده از بهترین ترجمه، گستره لغات مقصد را افزایش می‌دهد

یکی دیگر از ترفندهایی که به افزایش سرعت کمک می‌کند، پله‌ای کردن(Quantization) کردن مقادیر پارامترها و استفاده از ضرب و جمع اعداد صحیح هنگام ضرب ماتریس‌هاست. از آنجایی که CPUها ظرفیت خیلی محدودی برای انجام عملیات موازی جمع و ضرب دارند این ترفند بسیار مؤثر است. برای مثال اگر برای نمایش اعداد از کوانتیزاسیون ۸ بیتی استفاده کنیم، می‌توانیم با یک دستور AVX512 همزمان ۶۴ عدد را جمع بزنیم و یا در هم ضرب کنیم. در صورتی که همین موضوع برای مقادیر اعشاری حتی از نوع ۴ بایتی به ۱۶ عدد همزمان کاهش می‌یابد. برای آنکه کیفیت مدل با انجام این کوانتیزاسیون‌ها کاهش نیابد، لازم است اعداد میانی که هنگام ترجمه دادگان آموزشی با آن‌ها برخورد می‌شود بررسی شده و آمارگان آن‌ها محاسبه شود. توزیع اعدادی که هنگام ترجمه در جایگاه‌های مختلف مدل دیده می‌شوند معمولاً نزدیک به توزیع نرمال است. با بدست آمدن پارامترهای میانگین و انحراف معیار استاندارد این توزیع می‌توان از ۲۵۶ سطح کوانتیزاسیون بصورت مؤثری بهره برد. معمولاً بعد از کوانتایز کردن مدل لازم است تابع هزینه در حالتی که مدل کوانتیزه شده است چند مرحله دیگر بهینه‌سازی شود و پارامترها به‌روز شوند.

ضرب کوانتیزه ماتریس‌ها سرعت اجرا را بسیار بالا می‌برد
ضرب کوانتیزه ماتریس‌ها سرعت اجرا را بسیار بالا می‌برد

نمونه‌های خروجی و ارزیابی

استفاده از نمونه‌برداری و غنی سازی دایره لغات خروجی باعث می‌شود جملات دلپذیرتری در خروجی ترجمه داشته باشیم. مثلاً در جمله‌های زیر ترگمان توانسته برای ترجمه «twittering» بجای «توئیت کردن» از «جیک‌جیک کردن» استفاده کند:

جمله مبدأ: birds were twittering in the trees‎ .‎
موتور قدیم ترگمان: پرندگان در میان درختان نشسته بودند.
ترجمه گوگل: پرندگان در درختان توییت می کردند.
موتور جدید ترگمان: پرندگان روی درخت‌ها جیک جیک می‌کردند.

و یا برای ترجمه «rekindle the flames» بجای «روشن کردن» از «شعله‌ور کردن» بهره بگیرد:

جمله مبدأ: They tried to rekindle the flames of romance.‎
موتور قدیم ترگمان: آن‌ها سعی کردند شعله‌های عشق را ازسر بگیرند.
ترجمه گوگل: آنها سعی کردند دوباره شعله های عاشقانه را روشن کنند.
موتور جدید ترگمان: می‌کوشیدند تا آتش عشق را از نو شعله‌ور سازند.

از سوی دیگر، اضافه کردن پیکره‌های متنی جدید برای افزایش کیفیت ترجمه باعث بهبود انتقال معنی و کاهش اشتباهات ترجمه می‌شود. برای مثال جمله با ساختار مجهول زیر با موتور قدیم ترگمان به درستی ترجمه نمی‌شود ولی موتور جدید به درستی مجهول بودن جمله را تشخیص می‌دهد:

جمله مبدأ: I was asked a good question last week by a reader (Ben) about value proposition and competitive advantage.‎
موتور قدیم ترگمان: هفته گذشته یک سوال خوب از یک خواننده (بن) درباره پیشنهاد ارزشی و مزیت رقابتی پرسیدم.
ترجمه گوگل: هفته گذشته یک خواننده (بن) از من سوال خوبی در مورد ارزش پیشنهادی و مزیت رقابتی پرسید.
موتور جدید ترگمان: هفته گذشته یک خواننده (بن)درباره گزاره ارزش و مزیت رقابتی از من سوال خوبی پرسید.

و یا در جمله زیر نسبت «منظور ما» و «کاملاً خودمختار» در میان موتور قدیم ترگمان، ترجمه گوگل و موتور جدید ترگمان، فقط توسط موتور جدید ترگمان به درستی حفظ شده است:

جمله مبدأ: By “completely autonomous”, per the SAE level 5 definition, we mean the vehicle performs all driving tasks under all conditions – except in the case of natural disasters or emergencies.‎
موتور قدیم ترگمان: با "کاملا مستقل"، به ازای تعریف در سطح SAE ۵، به این معنی است که وسیله نقلیه تمام وظایف را تحت همه شرایط انجام می‌دهد - به جز در مورد بلایای طبیعی یا شرایط اضطراری.
ترجمه گوگل: طبق تعریف سطح 5 SAE، «کاملاً خودمختار»، منظور ما این است که وسیله نقلیه تمام وظایف رانندگی را تحت هر شرایطی انجام می دهد - به جز در موارد بلایای طبیعی یا موارد اضطراری.
موتور جدید ترگمان: منظور از «کاملا خودمختار»، طبق تعریف سطح ۵ SAE، این است که خودرو تمام وظایف رانندگی را تحت تمام شرایط - به جز در مورد بلایای طبیعی یا شرایط اضطراری - انجام می دهد.

نمونه‌های بیشتری از مقایسه ترجمه در جدول زیر قابل مشاهده است:

علی‌رغم اینکه متریک «بلو» که برای ارزیابی سیستم‌های مترجم ماشینی استفاده می‌شود، مشکلات فراوانی دارد و عملاً فقط برای مقایسه دو نسخه از یک سیستم ترجمه قابل اعتماد است، در حال حاضر معیاری که برتری جدینسبت به «بلو» از خود نشان داده باشد وجود ندارد یا حداقل به دلیل محدودیت‌هایی که برای ابزارگان پایه زبان فارسی با آن مواجه هستیم امکان استفاده ندارند. جدول زیر مقایسه امتیاز «بلو»ی سیستم‌های قدیم و جدید ترگمان و گوگل را برای ترجمه انگلیسی به فارسی نشان می‌دهد (با اینحال همانطور که از مثال‌های بالا معلوم است، کیفیت ترجمه گوگل به اندازه‌ای که این متریک نشان می‌دهد از ترگمان پایین‌تر نیست و این جدول بیشتر برای نشان‌دادن پیشرفت ترگمان ارائه شده است)

همچنین در جدول زیر متریک «بلو» برای ترجمه فارسی به انگلیسی آمده است:

برای اینکه یکی از مشکلات متریک «بلو» بهتر مشخص شود، اثر فاصله گذاری در خروجی بر مقدار این متریک را در جدول زیر مقایسه کنید. ستون دوم برای خروجی سیستم مترجم بدون اعمال پس پردازش اضافی و ستون آخر برای اعمال اصلاح فاصله گذاری روی خروجی سیستم مترجم است.

جمع‌بندی

افزایش کیفیت موتورهای ترجمه مستلزم استفاده از مدل‌های به‌روز و گردآوری پیکره‌های متنی جدید است. در عین حال برای آنکه بتوان با کیفیت خوب به تعداد زیادی کاربر سرویس داد، لازم است هرچه ترفند در چنته داریم برای کاهش منابع پردازشی مورد نیاز بکار بگیریم. با توجه به بده‌بستانی که بین کیفیت و منابع پردازشی وجود دارد، همواره بعد از عصاره‌گیری از مدل‌های بزرگ آموزش دیده (که کیفیت مناسبی دارند) مدل کوچک‌شده دوباره تنظیم دقیق می‌شود که افت کیفیت احتمالی جبران گردد.

ما برای بالابردن کیفیت ترجمه ترگمان، مدل‌های قدیمی را به ترانسفورمرهای به‌روز ارتقاء دادیم، پیکره‌های جدید به داده‌های آموزشی اضافه کردیم. از روش‌های «نظارت بر خود» (Self supervision) استفاده کردیم. پس‌ترجمه را بکار گرفتیم. با همه این ابزارها مدلی آموزش دادیم. برای سرویس‌دهی از روش‌های عصاره‌گیری از مدل استفاده کردیم و پارامترهای مدل‌های کوچک شده نهایی را پله‌بندی کردیم و پس از انجام این مراحل مدل‌های نهایی را مورد تنظیم دقیق قرار دادیم تا شاهد افت کیفیت جدی بین مدل‌های کوچک شده و مدل اصلی نباشد. همه این تلاش‌ها صورت گرفت تا بهترین مدل‌های ترجمه فارسی به انگلیسی توسط فارسی‌زبانان در خدمت فارسی‌زبانان قرار بگیرد.

مراجع

[1] Tishby, N., & Zaslavsky, N. (2015, April). Deep learning and the information bottleneck principle. In 2015 ieee information theory workshop (itw) (pp. 1-5). IEEE.

[2] Arora, R., Arora, S., Bruna, J., Cohen, N., DU, S., GE, R., ... & SONG, Z. (2020). Theory of deep learning.

[3] Tang, G., Müller, M., Rios, A., & Sennrich, R. (2018). Why self-attention? a targeted evaluation of neural machine translation architectures. arXiv preprint arXiv:1808.08946.

[4] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., ... & Polosukhin, I. (2017). Attention is all you need. Advances in neural information processing systems, 30.

[5] https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html

[6] Yun, C., Bhojanapalli, S., Rawat, A. S., Reddi, S. J., & Kumar, S. (2019). Are transformers universal approximators of sequence-to-sequence functions?. arXiv preprint arXiv:1912.10077.

[7] Voita, E., Talbot, D., Moiseev, F., Sennrich, R., & Titov, I. (2019). Analyzing multi-head self-attention: Specialized heads do the heavy lifting, the rest can be pruned. arXiv preprint arXiv:1905.09418.

[8] Raganato, A., Scherrer, Y., & Tiedemann, J. (2020). Fixed encoder self-attention patterns in transformer-based machine translation. arXiv preprint arXiv:2002.10260.

[9] Gou, J., Yu, B., Maybank, S. J., & Tao, D. (2021). Knowledge distillation: A survey. International Journal of Computer Vision, 129(6), 1789-1819.

[10] Hinton, G., Vinyals, O., & Dean, J. (2015). Distilling the knowledge in a neural network. arXiv preprint arXiv:1503.02531, 2(7).

[11] Kim, Y., & Rush, A. M. (2016). Sequence-level knowledge distillation. arXiv preprint arXiv:1606.07947.