مدل های ترنسفورمر (Transformer) چگونه کار می‌کنند: بررسی دقیق معماری ترنسفورمر

بفرست برای دوستت
Telegram
WhatsApp
مدلهای ترنسفورمر

فهرست مطالب

حوزه یادگیری عمیق (Deep Learning) به لطف ظهور و تکامل سریع مدل‌های ترنسفورمر (Transformer Models)، یک تحول بنیادی و عظیم رو تجربه کرده است.

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

مدل ترنسفورمر، که با مکانیزم‌ توجه (attention mechanisms) و قابلیت‌ پردازش موازی خود شناخته می‌شود، شروعی بر جهش‌های نوآورانه در درک و تولید زبان انسان با دقت و کارایی بالا هستند که پیش از این دست‌نیافتنی بود.

معماری ترنسفورمر (Transformer) برای اولین بار در سال ۲۰۱۷ در مقاله معروف گوگل با عنوان “Attention is all you need” معرفی شد. این معماری، هسته اصلی مدل‌های پیشگامی مانند ChatGPT است و موج جدیدی از هیجان را در جامعه هوش مصنوعی به راه انداخته بود. ترنسفورمرها نقش اساسی در مدل‌های زبانی پیشرفته OpenAI داشته‌اند و همچنین نقش کلیدی در AlphaStar شرکت DeepMind ایفا کرده‌اند.

در این دوران تحول‌آفرین هوش مصنوعی، اهمیت مدل ترنسفورمر برای دانشمندان داده و متخصصان NLP، بیش از حد تصور است.

از آنجایی که این حوزه یکی از پایه‌های اصلی جدیدترین جهش‌های تکنولوژیک محسوب می‌شود، این مقاله قصد دارد اسرار پشت این مدل‌ها را رمزگشایی کند.

NLP_Transformers

 

ترنسفورمرها (Transformers) چه هستند؟

ترنسفورمرها در ابتدا برای حل مشکل ترجمه ماشینی (machine translation) توسعه یافتند. این یعنی آن‌ها برای حل هر وظیفه‌ای ساخته شده‌اند که یک توالی ورودی (input sequence) را به یک توالی خروجی (output sequence) تبدیل می‌کند. به همین دلیل است که به آن‌ها «ترنسفورمر» (به معنی تبدیل‌کننده) می‌گویند.

بیاید قدم به قدم با کارکرد این مدل ها آشنا بشیم.

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

مدل ترنسفورمر یک شبکه عصبی است که بافت (context) داده‌های ترتیبی (sequential data) را یاد می‌گیرد و از آن، داده‌های جدید تولید می‌کند.

به زبان ساده:

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

ترنسفورمرها در حال حاضر پیشرفته‌ترین مدل NLP محسوب می‌شوند و به عنوان نسخه تکامل‌یافته معماری رمزگذار-رمزگشا (encoder-decoder) در نظر گرفته می‌شوند. با این حال، در حالی که معماری encoder-decoder عمدتاً به شبکه‌های عصبی بازگشتی (RNNs) برای استخراج اطلاعات ترتیبی متکی است، ترنسفورمرها به طور کامل فاقد این روش بازگشتی هستند.

پس، آن‌ها چگونه این کار را انجام می‌دهند؟

آن‌ها به طور خاص برای درک بافت و معنا از طریق تحلیل روابط بین عناصر مختلف طراحی شده‌اند و برای انجام این کار، تقریبا به طور کامل به یک تکنیک ریاضی به نام توجه (attention) تکیه می‌کنند.

مدلهای transformer

زمینه تاریخی

اولین مدل ترنسفورمر در مقاله بسیار تأثیرگذار “Attention is All You Need” تشریح شد.

این مفهوم پیشگام فقط یک پیشرفت نظری نبود، بلکه به سرعت پیاده‌سازی عملی پیدا کرد، به ویژه در پکیج Tensor2Tensor در تنسورفلو (TensorFlow).

همچنین، گروه NLP دانشگاه هاروارد نیز با ارائه یک راهنمای تشریحی برای این مقاله، که با یک پیاده‌سازی پایتورچ (PyTorch) همراه بود، به این حوزه نوظهور کمک کرد. معرفی آن‌ها باعث جهش قابل توجهی در این حوزه شد، که اغلب از آن به عنوان هوش مصنوعی ترنسفورمر (Transformer AI) یاد می‌شود. این مدل انقلابی، سنگ بنای پیشرفت‌های بعدی در قلمرو مدل‌های زبانی بزرگ (LLMs)، از جمله BERT، را گذاشت. تا سال ۲۰۱۸، این دستاوردها به عنوان یک نقطه عطف در پردازش زبان طبیعی (NLP) مورد ستایش قرار گرفتند.

در سال ۲۰۲۰، محققان در OpenAI از GPT-3 رونمایی کردند. در عرض چند هفته، همه‌کاره بودن GPT-3 به سرعت آشکار شد، زیرا مردم از آن برای سرودن شعر، نوشتن برنامه، ساخت آهنگ، طراحی وب‌سایت و موارد دیگر استفاده کردند و تخیل کاربران را در سراسر جهان به تسخیر خود درآورد.

در مقاله‌ای در سال ۲۰۲۱، پژوهشگران دانشگاه استنفورد به درستی این نوآوری‌ها را مدل‌های بنیادی (foundation models) نامیدند و بر نقش اساسی آن‌ها در شکل‌دهی مجدد هوش مصنوعی تأکید کردند. کار آن‌ها نشان می‌دهد که چگونه مدل ترنسفورمر نه تنها این حوزه را متحول کرده‌، بلکه مرزهای دستاوردهای ممکن در هوش مصنوعی را نیز جابجا کرده و آغازگر عصر جدیدی بوده است.

گذار از مدل RNN مانند LSTM به ترنسفورمر برای مسائل NLP

در زمان معرفی مدل ترنسفورمر، RNNها (شبکه‌های عصبی بازگشتی) رویکرد ترجیحی برای کار با داده‌های ترتیبی (Sequential Data) بودند، که مشخصه‌شان داشتن یک ترتیب خاص در ورودی است.

RNNها شبیه به یک شبکه عصبی رو به جلو (feed-forward) عمل می‌کنند، اما ورودی را به صورت ترتیبی و هر بار یک عنصر پردازش می‌کنند.

ترنسفورمرها از معماری (encoder-decoder) که در RNNها یافت می‌شد، الهام گرفتند. با این حال، مدل ترنسفورمر به جای استفاده از بازگشت (recurrence)، کاملاً مبتنی بر مکانیزم توجه (Attention) است.

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

مشکلات اصلی RNNها چه بود؟

آن‌ها عمدتاً به دو دلیل اصلی برای وظایف NLP ناکارآمد هستند:

۱. پردازش ترتیبی: آن‌ها داده‌های ورودی را به صورت ترتیبی، یکی پس از دیگری پردازش می‌کنند. چنین فرآیند بازگشتی از قابلیت محاسبات موازی که در کارت گرافیک (GPU) طراحی شده‌اند، استفاده نمی‌کند و در نتیجه، آموزش (training) این مدل‌ها بسیار کند است.

۲. مشکل وابستگی‌های طولانی‌مدت: زمانی که عناصر (مثلاً کلمات در یک جمله) از یکدیگر فاصله زیادی دارند، کارایی RNNها به شدت کاهش می‌یابد. این به آن دلیل است که اطلاعات در هر مرحله (هر کلمه) منتقل می‌شود و هرچه زنجیره طولانی‌تر باشد، احتمال از دست رفتن اطلاعات در طول زنجیره بیشتر است.

راه‌حل ترنسفورمر

گذار از شبکه‌های عصبی بازگشتی (RNNs) مانند LSTM به ترنسفورمرها در NLP، به دلیل همین دو مشکل اصلی و توانایی ترنسفورمرها در حل هر دوی آن‌ها با بهره‌گیری از مکانیزم توجه بود:

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

به این ترتیب، ترنسفورمرها به یک جایگزین منطقی برای RNNها تبدیل شدند.

در ادامه، نگاهی به نحوه عملکرد ترنسفورمرها خواهیم انداخت.

 

معماری ترنسفورمر (Transformer)

نگاهی کلی

ترنسفورمرها که در اصل برای ترجمه ماشینی ابداع شدند، در تبدیل توالی‌های ورودی به توالی‌های خروجی عملکرد فوق‌العاده‌ای دارند. این، اولین مدلی است که برای محاسبه بازنمایی (representations) ورودی و خروجی خود، کاملاً به خود توجهی (self-attention) متکی است و از RNNهای مبتنی بر توالی یا کانولوشن (convolution) استفاده نمی‌کند. ویژگی اصلی و مرکزی معماری ترنسفورمرها این است که آن‌ها مدل (encoder-decoder) را حفظ کرده‌اند.

اگر ترنسفورمر را برای ترجمه زبان به عنوان یک جعبه سیاه (black box) ساده در نظر بگیریم، این جعبه یک جمله را به یک زبان (مثلاً انگلیسی) به عنوان ورودی می‌گیرد و ترجمه آن را به زبانی دیگر (مثلاً اسپانیایی) به عنوان خروجی تحویل می‌دهد.

language transformer

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

  • رمزگذار (Encoder): ورودی ما را می‌گیرد (مثلاً جمله انگلیسی «?How are you») و یک بازنمایی ماتریسی از آن ورودی میسازد.
  • رمزگشا (Decoder): آن بازنمایی رمزگذاری‌شده را می‌گیرد و به صورت تکرارشونده (iteratively) یک خروجی تولید می‌کند. encoder decoder در ترنسفورمر

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

معماری اصلی ترنسفورمر شامل ۶ رمزگذار و ۶ رمزگشا بود، اما ما می‌توانیم این لایه‌ها را به هر تعدادی که بخواهیم تکرار کنیم. پس بیایید فرض کنیم که از هر کدام N لایه داریم.

encoder decoder transformer

اکنون که درک کلی از معماری کلی ترنسفورمر پیدا کردیم، بیایید برای درک بهتر جریان کاری، روی رمزگذارها و رمزگشاها تمرکز کنیم:

جریان کاری رمزگذار (The Encoder WorkFlow)

رمزگذار (Encoder) یک جزء اساسی در معماری ترنسفورمر است. وظیفه اصلی رمزگذار، تبدیل توکن‌های ورودی (input tokens) به بازنمایی‌های بافت‌محور (contextualized representations) است. برخلاف مدل‌های قبلی که توکن‌ها را مستقل پردازش می‌کردند، رمزگذار ترنسفورمر، بافت هر توکن را با توجه به کل توالی درک می‌کند.

encoder_transformerپس بیایید جریان کاری آن را به اساسی‌ترین مراحلش تقسیم کنیم:

مرحله ۱ – تعبیه‌سازی‌های ورودی (Input Embeddings)

فرآیند تعبیه‌سازی (Embedding) فقط در پایین‌ترین لایه رمزگذار اتفاق می‌افتد. رمزگذار کار خود را با تبدیل توکن‌های ورودی (input tokens) – که می‌توانند کلمه یا زیرکلمه (subword) باشند – به بردار (vector) از طریق (embedding layers) آغاز می‌کند. این تعبیه‌سازی‌ها، معنای مفهومی (semantic meaning) توکن‌ها را در خود ذخیره می‌کنند و آن‌ها را به بردارهای عددی تبدیل می‌کنند.

تمام رمزگذارها لیستی از بردارها را دریافت می‌کنند که هر کدام اندازه‌ای ثابت (مثلاً اندازه ۵۱۲) دارند. در پایین‌ترین رمزگذار، این بردارها همان تعبیه‌سازی‌های کلمات (word embeddings) هستند، اما در سایر رمزگذارها، ورودی در واقع خروجی رمزگذار لایه پایینی است.

 

encoder_transformer

مرحله ۲ – رمزگذاری موقعیتی (Positional Encoding)

از آنجایی که ترنسفورمرها (Transformers) برخلاف RNNها، مکانیزم بازگشتی ندارند، از رمزگذاری موقعیتی (positional encodings) استفاده می‌کنند. این رمزگذاری‌ها به تعبیه‌سازی‌های ورودی (input embeddings) اضافه می‌شوند تا اطلاعاتی درباره موقعیت (position) هر توکن در توالی فراهم کنند. این کار به مدل اجازه می‌دهد تا جایگاه هر کلمه در جمله را درک کند.

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

در این روش، هر بُعد از بردار موقعیت، توسط فرکانس‌ها و آفست‌های منحصربه‌فردی از موج سینوسی/کسینوسی نشان داده می‌شود، مقادیر این بردارها بین -۱ تا ۱ متغیر هستند و به طور مؤثری موقعیت هر کلمه را نشان می‌دهد.

 

encoder_transformer

مرحله ۳ – لایه‌های رمزگذار (Stack of Encoder Layers)

رمزگذار ترنسفورمر (Transformer encoder) از تعدادی لایه‌های یکسان تشکیل شده است (در مدل ترنسفورمر اصلی، ۶ لایه وجود داشت).

وظیفه لایه رمزگذار این است که تمام توالی‌های ورودی را به یک بازنمایی (representation) پیوسته و انتزاعی تبدیل کند، این بازنمایی، اطلاعات آموخته‌شده از کل توالی را در خود جا می‌دهد. هر لایه از دو ماژول اصلی تشکیل شده است:

  • یک مکانیزم توجه چندگانه (multi-headed attention).
  • یک شبکه کاملا متصل (fully connected network).

علاوه بر این دو ماژول، در اطراف هر زیرلایه (residual connections) وجود دارد و به دنبال آن، یک لایه نرمال‌سازی (layer normalization) انجام می‌شود.

encoder_transformer

مرحله ۳.۱ – مکانیزم خود توجهی چندگانه (Multi-Headed Self-Attention)

در رمزگذار، توجه چندگانه (multi-headed attention) از یک نوع خاصی از مکانیزم توجه به نام خود توجهی (self-attention) استفاده می‌کند. این رویکرد به مدل اجازه می‌دهد تا هر کلمه در ورودی را به کلمات دیگر در همان توالی مرتبط کند. برای مثال، در یک جمله، مدل ممکن است یاد بگیرد که کلمه «are» را به «you» مرتبط سازد.

این مکانیزم به رمزگذار اجازه می‌دهد تا هنگام پردازش هر توکن، روی بخش‌های مختلف توالی ورودی تمرکز کند. امتیازات توجه (attention scores) بر اساس سه بردار محاسبه می‌شوند:

  • کوئری (Query): برداری است که نماینده کلمه یا توکن فعلی (که به دنبال ارتباط می‌گردد) در مکانیزم توجه است.
  • کلید (Key): این نیز یک بردار در مکانیزم توجه است که به هر کلمه یا توکن در توالی ورودی (که بررسی می‌شود) مطابقت دارد.
  • مقدار (Value): هر مقدار به یک کلید مرتبط است و برای ساختن خروجی لایه توجه استفاده می‌شود. زمانی که یک کوئری و یک کلید به خوبی با هم مطابقت داشته باشند (یعنی attention scores بالایی بگیرند)، مقدارِ متناظر با آن کلید، در خروجی نهایی تأکید بیشتری پیدا می‌کند.

این ماژول خود توجهی به مدل امکان می‌دهد تا اطلاعات بافتی (contextual information) را از کل توالی استخراج کند. به جای انجام تنها یک تابع توجه، کوئری‌ها، کلیدها و مقادیر به تعداد h بار به صورت خطی تصویر (projected) می‌شوند. مکانیزم توجه روی هر یک از این نسخه‌های تصویر شده به صورت موازی اجرا می‌شود و در نتیجه h خروجی متفاوت تولید می‌کند.

معماری دقیق این فرآیند به شرح زیر است:

attention mechanism

۱. ضرب ماتریسی (MatMul) – ضرب نقطه‌ای (Dot Product) کوئری و کلید

پس از اینکه بردارهای کوئری، کلید و مقدار از یک لایه خطی (linear layer) عبور کردند، یک عملیات ضرب ماتریسی نقطه‌ای (dot product matrix multiplication) بین کوئری‌ها و کلیدها انجام می‌شود که منجر به ایجاد ماتریس امتیاز (score matrix) می‌گردد.

ماتریس امتیاز مشخص می‌کند که هر کلمه باید چه میزان بر کلمات دیگر تأکید (توجه) داشته باشد. بنابراین، به هر کلمه امتیازی در رابطه با سایر کلمات در همان گام زمانی اختصاص می‌یابد. امتیاز بالاتر به معنای تمرکز بیشتر است. این فرآیند به طور مؤثر کوئری‌ها را به کلیدهای مربوطه‌شان نگاشت (map) می‌کند.

Attention mechanism - Matrix Multiplication

۲. کاهش مقیاس امتیازات توجه (Scaling)

سپس این امتیازات با تقسیم شدن بر جذرِ بُعدِ بردارهای کوئری و کلید (مثلاً جذر dk​)، مقیاس‌دهی (scaled down) می‌شوند. این مرحله برای اطمینان از گرادیان‌های پایدارتر پیاده‌سازی شده است، زیرا ضرب مقادیر در هم می‌تواند منجر به نتایج بسیار بزرگ و انفجاری شود.

attention scores

۳. اعمال تابع سافت‌مکس (Softmax)

در مرحله بعد، تابع سافت‌مکس روی امتیازات تنظیم‌شده اعمال می‌شود تا وزن‌های توجه (attention weights) به دست آیند. این کار مقادیر احتمالی را در بازه ۰ تا ۱ نتیجه می‌دهد. تابع سافت‌مکس بر امتیازات بالاتر تأکید می‌کند و امتیازات پایین‌تر را کم‌اهمیت جلوه می‌دهد، در نتیجه توانایی مدل را برای تعیین اینکه کدام کلمات باید توجه بیشتری دریافت کنند، افزایش می‌دهد.

Softmax adjusted scores

۴. ترکیب نتایج سافت‌مکس با بردار مقدار (Value)

گام بعدی مکانیزم توجه این است که وزن‌های به‌دست‌آمده از سافت‌مکس در بردار مقدار (Value vector) ضرب می‌شوند که نتیجه آن یک بردار خروجی است.

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

ombining Softmax

و به این ترتیب، ما خروجی مکانیزم توجه را به دست می‌آوریم!

خب، شاید بپرسید چرا به آن توجه چندگانه (Multi-Head Attention) می‌گویند؟

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

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

مرحله ۳.۲ – نرمال‌سازی و اتصالات پسماند (Normalization and Residual Connections)

هر زیر-لایه (sub-layer) در لایه رمزگذار، با یک مرحله نرمال‌سازی (normalization) دنبال می‌شود. همچنین، خروجی هر زیر-لایه به ورودی خودش اضافه می‌شود (که به آن اتصال پسماند یا residual connection می‌گویند) تا به کاهش مشکل محو شدگی گرادیان (vanishing gradient) کمک کند و امکان ساخت مدل‌های عمیق‌تر را فراهم سازد.

این فرآیند دقیقاً پس از شبکه (Feed-Forward) نیز تکرار خواهد شد.

Encoder’s workflow

مرحله ۳.۳ – شبکه عصبی پیشخور (Feed-Forward Neural Network)

سفرِ خروجیِ (Normalization and Residual Connections)، با عبور از یک شبکه (pointwise feed-forward) ادامه می‌یابد که این مرحله‌ای حیاتی برای پالایش بیشتر اطلاعات است.

این شبکه را به عنوان مجموعه‌ای دوتایی از لایه‌های خطی (linear layers) تصور کنید که یک تابع فعال‌سازی ReLU به عنوان پلی در میان آن‌ها قرار گرفته است. پس از پردازش، خروجی یک مسیر آشنا را طی می‌کند: به عقب برمی‌گردد و با ورودیِ شبکه پیشخور نقطه‌ای ادغام می‌شود.

به دنبال این ادغام، دور دیگری از نرمال‌سازی انجام می‌شود تا اطمینان حاصل شود که همه چیز برای مراحل بعدی به خوبی تنظیم و هماهنگ شده است.

Encoder’s workflow.

مرحله ۴ – خروجی رمزگذار

خروجی لایه نهایی رمزگذار (final encoder layer)، مجموعه‌ای از بردارها (vectors) است. هر یک از این بردارها، بازنمایی (representation) توالی ورودی است که با درک بافتی غنی همراه شده است.

این خروجی سپس به عنوان ورودی برای رمزگشا (decoder) در مدل ترنسفورمر (Transformer model) استفاده می‌شود. این رمزگذاری (encoding) دقیق، مسیر را برای رمزگشا هموار می‌سازد، و آن را راهنمایی می‌کند تا در زمان رمزگشایی (decoding)، به کلمات درستی در ورودی «توجه» کند.

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

 

جریان کاری رمزگشا (The Decoder WorkFlow)

نقش رمزگشا (Decoder) بر ساختن توالی‌های متنی متمرکز است. Decoder، دقیقاً مانند Encoder، به مجموعه‌ای مشابه از زیرلایه‌ها مجهز شده است. این بخش دارای دو لایه (multi-headed attention)، یک لایه (pointwise feed-forward) است و همچنین از(residual connections) و نرمال‌سازی (layer normalization) بعد از هر زیرلایه استفاده می‌کند.

Decoder WorkFlow

این اجزا شبیه به لایه‌های رمزگذار عمل می‌کنند، اما با یک تفاوت کلیدی: هر لایه توجه چندگانه در رمزگشا، مأموریت منحصربه‌فرد خود را دارد.

فرآیند نهایی رمزگشا شامل یک لایه خطی (linear layer) است که به عنوان طبقه‌بند (classifier) عمل می‌کند و در انتها با یک تابع سافت‌مکس (softmax) برای محاسبه احتمالات کلمات مختلف، تکمیل می‌شود.

رمزگشای ترنسفورمر (Transformer decoder) ساختاری دارد که به طور خاص برای تولید این خروجی از طریق رمزگشایی (decoding) گام‌به‌گام اطلاعات رمزگذاری‌شده (encoded) طراحی شده است.

توجه به این نکته بسیار مهم است که رمزگشا به صورت خودهمبسته (autoregressive) عمل می‌کند، یعنی فرآیند خود را با یک توکن شروع  می‌کند. این بخش هوشمندانه، لیستی از خروجی‌هایی که قبلاً تولید کرده است را به عنوان ورودی‌های جدید خود استفاده می‌کند، البته در کنار خروجی‌های رمزگذار که سرشار از اطلاعات توجه از ورودی اولیه هستند.

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

مرحله ۱ – تعبیه‌سازی‌های خروجی (Output Embeddings)

در خط شروعِ رمزگشا، فرآیند، مشابه رمزگذار است. در اینجا، ورودی (که در گام اول همان توکن شروع و در گام‌های بعدی، کلمه تولید شده قبلی است) ابتدا از یک لایه تعبیه‌سازی (embedding layer) عبور می‌کند.

مرحله ۲ – رمزگذاری موقعیتی (Positional Encoding)

پس از تعبیه‌سازی، باز هم درست مانند رمزگذار، ورودی از لایه رمزگذاری موقعیتی عبور می‌کند. این توالی برای تولید تعبیه‌سازی‌های موقعیتی (positional embeddings) طراحی شده است.

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

مرحله ۳ – پشته لایه‌های رمزگشا (Stack of Decoder Layers)

رمزگشا از پشته‌ای از لایه‌های یکسان تشکیل شده است (در مدل ترنسفورمر اصلی، ۶ لایه بود). هر لایه دارای سه زیر-جزء اصلی است:

مرحله ۳.۱ – مکانیزم خود توجهی ماسک‌دار (Masked Self-Attention)

این مکانیزم شبیه به مکانیزم خود توجهی در رمزگذار است اما یک تفاوت حیاتی دارد: این مکانیزم موقعیت‌ها (کلمات) را از توجه کردن به موقعیت‌های بعدی (کلمات آینده) باز می‌دارد. این یعنی هر کلمه در توالی، تحت تأثیر توکن‌های آینده قرار نمی‌گیرد.

به عنوان مثال، زمانی که امتیازات توجه برای کلمه «are» در حال محاسبه است، بسیار مهم است که «are» نتواند نگاهی به «you» بیندازد، که کلمه‌ای بعدی در توالی است.

Multi-Head Attention Mask

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

مرحله ۳.۲ – توجه چندگانه رمزگذار-رمزگشا (Encoder-Decoder Attention) یا توجه متقابل (Cross Attention)

در دومین لایه توجه چندگانه در رمزگشا، ما شاهد یک تعامل منحصربه‌فرد بین اجزای رمزگذار و رمزگشا هستیم.

در اینجا، خروجی‌های رمزگذار نقش کوئری (Queries) و کلید (Keys) را بر عهده می‌گیرند، در حالی که خروجی‌های لایه اول توجه چندگانه در رمزگشا (یعنی لایه ماسک‌دار قبلی)، نقش مقدار (Values) را ایفا می‌کنند.

این تنظیمات به طور مؤثری ورودی رمزگذار را با رمزگشا هم‌تراز می‌کند و به رمزگشا این قدرت را می‌دهد که مرتبط‌ترین بخش‌های ورودی رمزگذار را شناسایی کرده و بر آن‌ها تأکید کند.

به دنبال آن، خروجی این لایه دوم توجه چندگانه، از طریق یک لایه (pointwise feedforward) پالایش می‌شود تا پردازش را بیشتر بهبود بخشد.

Transformer’s final output

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

مرحله ۳.۳ – شبکه عصبی پیشخور (Feed-Forward Neural Network)

مشابه رمزگذار، هر لایه رمزگشا نیز شامل یک شبکه پیشخور کاملاً متصل است که به طور جداگانه و یکسان برای هر موقعیت (توکن) اعمال می‌شود.

مرحله ۴ – طبقه‌بند خطی و سافت‌مکس برای تولید احتمالات خروجی

Transformer’s final output

سفر داده‌ها در مدل ترنسفورمر با عبور از یک لایه خطی نهایی به اوج خود می‌رسد، که این لایه به عنوان یک طبقه‌بند (classifier) عمل می‌کند.

اندازه این طبقه‌بند با تعداد کل کلاس‌ها (یعنی تعداد کلمات موجود در واژگان (vocabulary)) مطابقت دارد. به عنوان مثال، در سناریویی با ۱۰۰۰ کلاس مجزا که نشان‌دهنده ۱۰۰۰ کلمه متفاوت هستند، خروجی طبقه‌بند آرایه‌ای با ۱۰۰۰ عنصر خواهد بود.

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

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

خروجی رمزگشا (Output of the Decoder)

encoder_transformer

خروجی لایه نهایی به یک توالی پیش‌بینی‌شده تبدیل می‌شود، که معمولاً از طریق یک لایه خطی و سپس سافت‌مکس برای تولید احتمالات بر روی واژگان انجام می‌شود.

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

توکنی که با بالاترین احتمال پیش‌بینی می‌شود، به عنوان کلاس نهایی در نظر گرفته می‌شود که اغلب با توکن پایان (end token) نشان داده می‌شود.

باز هم به یاد داشته باشید که رمزگشا به یک لایه محدود نمی‌شود. می‌توان آن را با N لایه ساختاردهی کرد، که هر لایه بر اساس ورو

دی دریافتی از رمزگذار و لایه‌های قبلی خود ساخته می‌شود. این معماری لایه‌ای به مدل اجازه می‌دهد تا تمرکز خود را متنوع کند و الگوهای توجه متفاوتی را در واحدهای توجه(attention heads) خود استخراج کند.

چنین رویکرد چندلایه‌ای می‌تواند به طور قابل توجهی توانایی پیش‌بینی مدل ترنسفورمر را افزایش دهد، زیرا درک دقیق‌تری از ترکیب‌های مختلف توجه (attention) ایجاد می‌کند.

این مقاله فقط یک نقطه شروع است. اگر آماده‌اید که تمام مفاهیم مکانیزم توجه (attention mechanism) و ترنسفورمرها را به صورت کاملاً عملی بیاموزید، جزئیات دوره LLM دیتایاد را بررسی کنید و در صورت تمایل از مشاوران ما راهنمایی دریافت کنید.

نویسنده: datayad

این مطالب را هم مشاهده کنید

اشتراک در
اطلاع از

0 نظرات
قدیمی‌ترین
تازه‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها