دقیقا یک سال و نیم قبل از این که من این ویدیو رو زب بکنم توی سی نوامر 2022 کمپانی اوپنیا یه محصولی منم چت جی پیتی رو معرفی کرد که باعث شدون کسی که هیچ اطلاعاتی از حوشمسنوی نداشته باشن اولین ارتباطها رو با حوشمسنوی بگیرند و احتمالا برای اکثر افراد این سوال به وجود اومد که آقا این مودله اصلا چجوری دارن کار میکنن چت جی پیتی یک محصول یا یه ای پی آیه که از یه مودل زبانی بزرگ به انگلیسی میدهد میشه Large Language Model یا LLM به نام GPT گرفته شده GPT مخفف Generative Pre-trained Transformer خب اون لغت جنراتیبش که خیلی مشخصه یعنی ما یه مودل زبانی داشته باشیم که در نهایت برای ما مرد پولید بکنه تکست جنراتی بکنه که خب این واضحه لغت پری تریند یعنی که یه شبکه عصبی داشته باشیم که ما برده باشیمش روی مجموعه داده تکستی یه خیلی بزرگی که استلمش کرپس میگن ترینش کرده باشیم مثلا خود همین جی پی تی رو در نظر بگیرید که روی کل دیتا هایی که توی اینترنت وجود داره به زبون های مختلف مثلا ترین شده روی کل کودای پروگرامینگ لنگوژای مختلف مثلا ترین شده یه همچین چیزی رو آماده داریم میمونه لغت ثبوت که ترانسفورمراست که یه همچین میماری دارن یه همچین آرکیتکچری دارن که شبیه ایلیم میمونه نمیدونم شبیه قاشق جنگال میمونه که ما دقیقا موضوع همین ویدیو همونه که میخواییم راجب این صحبت بکنیم که تک تک کامپوننت ها و اجزایی که توی این معمولی وجود دارن چی هن و چجوری کار میکنن و چجوری کمک میکنن که در واقع یه مودلی مثل جی پی تی بتونه به این کیفیت کار بکنه ایده ترانسفورمرا قشنگ گیم چنجر بود و تو حوزه حوشمسنوی کلن بازی عوض شد با اومدنشون و با رویکر تکست هم اومدن ولی یوشتوش توی حوزه های دیگه مثل ایمیج و ویدیو و آدیو هم وارد شدن و اگه بخوام یه چند تا از کار برداشتو براتون اسم ببرم میتونم به ترجمه مد یا ترانسلیشن تولید مد یا تکست جنوریشن تولید کود یا کود جنوریشن وحص خلصه سازی مد که سامریزیشن میشه خودش یه تسکید توی حوضه NLPه که قبلم خیلی چلنجین گود و الان کیفیت داستان بالاتر رفته مدل سازی موضوعی یا تاپیک مادلینگ بازی یکی از اون موضوعه که یه مدل خیلی بزرگی رو در واقع مدل بتونه سامرائیز بکنه توی تاپیک و براش عنوان در بیاره شنوصایی موجودیت های نامدار یا همون نیمنتیتی رکاکنشن به نیر میشنسیم بحث تحلیل احساس این که اگه مدل بزرگی از یک ریویوی که برای یه محصولی گذاشته شده بتونیم سنتیمنت انالیسیس یا تحلیل احساس در واقع یوزر رو داشته باشیم کاربورده ای مثل speech to text داریم کاربورده ای مثل text to speech داریم که به TTS میشنسیمش کاربورده ای مثل text to image داریم یا این که اکس رو تبدیل به مطبع کنه که کاربوردش میتونه برای توصیف اکس یا ایمیج کپشنینگ باشه میشه به خیلی از در واقع این کاربورد ها اشاره کرد که او خب لیستش غیری میتونه بلندتر از اینم باشه این همه چیزی هایی که ترنسفورمر را در مورد ترنسفورمر باشد این همه چیزی هایی که ترنسفورمر را در مورد ترنسفورمر باشد این همه چیزی هایی که ترنسفورمر باشد این همه چیزی هایی که ترنسفورمر باشد این همه چیزی هایی که ترنسفورمر باشد این همه چیزی هایی که ترنسفورمر باشد این همه چیزی هایی که ترنسفورمر باشد این همه چیزی هایی که ترنسفورمر باشد این همه چیزی هایی که ترنسفورمر باشد این همه چیزی هایی که ترنسفورمر باشد این مماریت رانسپورمه توی مقاله ای اتنشن ایز آل یونیت معرفی شده که تایتل این مقاله هم حالا خودش خیلی بسپر انگیز شد و کلی می مرد توش در اومد توی کامیونیتی های مختلف سر ریدیت و اصلا این بود که شاید یه مقاله با این ایده خیلی مهمی که توی کامپیتر ساینس آورده می شد مثلا یه تایتل اکادمیک تری داشته باشه در حالی که خب تیم گوگل روش کار کرده و ارحال یه مقداری احتمالا مارکتینگ هم توی اسکوزوری مقاله درگیر بوده و اصلا باعث شده که یه جورایی مقاله معروف هم بشه احتمالا اکثر شمایی که این ویدیو رو دارین نگاه میکنین حتی اقل یه بار اسم این مقاله به گوشتون خورده در صورت این که این مقاله دوزار هیویدر ریلیس شده و تا این موقع ماه پنج دوزار بیسوچار بالایی سده یجده هزار تا سایتشن داره که قبل اینجا به سایتشن و تعدادشون توی ماشین لرنگ صحبت کردیم که تعداد قابل توجهی به نظر میاد موسیقی توی میماری ترنسفورمر ها اجزایی خیلی متنوی وجود داره که هر کدوم از این جوز ها اتفاقا ایده هایی خیلی جالبی پشتشونه که حالا موضوع همین ویدیو هم میخواییم بهشون بپردازیم و تا همین اول بگم که مهمتنی جوز ای که یه ترنسفورمر داره مکانیزم اتنشنه که عنوان مقاله هم بر همین اساس انتخاب شده این مکانیزم در واقع یه سازوکاریه که داره تلاش میکنه که بتونه تا حد ممکن کانتکستو به مودل حالی بکنه و مودل یادش نداره به این ترتیب که اگه مثلا داریم رجب یه سابجکت خاصی اولی یه پارگرافی صحبت میکنیم اگه پنج تا پارگراف جلوتر دوباره ارجا دادیم به اون سابجکته مودل یادش نرفته باشه داریم رجب چی صحبت میکنیم بر این اصلاس خیلی مهمه که مودل بر اینکه مموری یعنی حافظه رو مدیریت بکنه یه سری چیزها رو کلن فراموش کنه یه سری چیزها رو اهمیت کمتری بهشون بده بلی یه سری از در واقع مفاهم و یه سری از اون کانتکست هایی که وجود داره در طوله مرد متنو بتونه تو دل خودش با خودش هم بکنه و یادش بمونه مثلا تو این مثالی که اینجا داریم میبینیم وقتی در این راجب ده انیمال صحبت میکنیم جلوتر که میگه میگه meet fast to tired این ایتر رو بتونه تشخیص بده که داریم ارجاش میدیم به اون ده انیمال در واقع یک زمیریه که اشاره به ده انیمال داره این فقط هم کاربودش توی متنیست همون تو که گفتم بعدن کاربودش توی تصویر هم وارد شد یک آبچکت خاصی رو تو تصفیر تشخیص بدیم که کاربوردش تو کامپیوتر ویژن میتونه باشه و توی آتانومس کارا و الاخر که کاربوردهای متنوی ادفاقا همین امروز دارن خب من قبل از که وارد مماری ترنسپورمرا بشم یه مقدم چینی هایی لازم بکنم اول از همه راجب ووردن بیدینگ صحبت کنم تبیه برداری کلمات که اسم شوشه قراره که یک کلمه رو تبدیل به یک ورداری از اعداد بکنیم که قابل درک بر کامپیوتر باشه چون برحال کامپیوتر که کلمه رو که نمیفهمه که باید بهش عدد بدیم در نهایت که روش های متنوی تو سال های مختلف دیولوب شدن که خیلی قبل تر قبل از 1980 روش های کتگوریکال بودن مثل بگ آف ووردز که به بو میشنسیم مثل وان هاتن کودینگ یا تو دهی 1980 روش های استاتیستیکال اومدن که مهمترینش مثل شاید تیف آی دی اف رو بشنسین اگر این روش ها رو نمیشنسین من توی پلیلیست پرداشی زنم دبان طبیعی چند تا از این روش ها رو توضیح دادم توی اون پلیلیست مورد جهه کنیم میتونیم ویدیوش رو ببینید حالا تگم میکنم توی این ویدیو ولی از 2012 به این بر بعد از AlexNet که دیگه یواشه باش فهمیدیم که چجوری هر جی پیو استفاده بکنیم مودل های اومدن که یک نورال نتفرک برشون ترین بشه برن که امبیدینگت برای کلمات در بیاد که مهمترینش ورد تووکه اگه شنیده باشین و روش گلو گلوال وکتور در واقع میشه حتی روش علمو رو داشتیم در ادامه که دیگه یه روش یه که نسبتا میتونه کانتکس رو یاد بگیره ولی نزیاد خیلی کانتکس لنزش یا اون کانتکس ویندو یا پنجری که در واقع میتونه حافظه رو تو دلخوش نگرده خیلی کمه و خیلی داینامیک نیست این روش ها ولی از 2017 به این طرف بعد از ترانسفورمر ها ما روش های کانتکس اویر یا کانتکس جوالایز امبدینگ هایی مثل بیرت و جی پی تی که برپایی ترانسفورمران حالا اینو در جریان باشین حالا بحث از بیرت شد این که بیرت خودش دقیقا اون تی آخرش دوباره ترانسفورمره مخففه بای دیرکشنال اینکودر رپیزنتیشنز فرام ترانسفورمرز که یه میماریه که در واقع گوگل ارائه کرد و اون عللم اولی که گوگل چطبات اولی که گوگل معرفی کرد به نام بارد برپایه این اللم برت بود هرچنک جمینای الان دیگه بر این پایه نیست با یه مودل جدید تری اومده دیگه برپایه ترانسپورمر ها نیست و اینم بهتون بگم که میماری ترانسپورمر ها رو تو دو تا تیکه ببینیم یه تیکه سمت چپ که بهش انکودر میگیم یه تیکه سمت راست که بهش دیکودر میگیم اسمش اوشه دیگه توی تیکه انکودر قرار کود گذاری بشه توی تیکه دیکودر قراره که اون چیزی که کود گذاری شده دیکود بشه و استلاحاً برگرده به یک درواقع تکست جدیدی به این ترتیب بیرت اگه دقیق کنین توی اسمش اون ایه وسط ایه انکودره چند تا از این انکودرها رو بچسبونیم به همدیگه بیرت به وجود میاد حالا من اینجا سه تا شو گذاشتم این چند تا شو توی ویدیو محبوب به بیرت میتونیم صحبت کنیم راجبش و جی پی تی هم چند تا از اون دیکودرها رو به چسبونیم جی پی تی به وجود میاد جی پی تی چون جنریتیوه قراره که اتفاقا بیشتر کارش دیکود کردن و تولیده مد کردنه در حالی که بیر تصال روی کردش در واقع اینکود کردن و اینبت کردنه بیشتر به خاطر اگه دقت کنین هر کدوم با روی کردهای مختلف در واقع از این میماری ترانسفورمر استفاده کردن به خاطر همینم کار کرداشون و کیفیت خروجیاشون توی تسکای مختلف متفاوت بوده یعنی یه جاهایی GPT-3 برت و بیت میکرده یه جاهایی برت میتونسته GPT-3 رو تو بعضیت تسک و بیت بکنه بسطم این که اون تسکه برپایه اینکود کردن امبیدینگ بوده یا برپایه جنرلیت کردن و دیکودینگ بوده دو ماهی مقدم چینی که آخریش هم باشه باید راجع به صحبت بکنیم مفهوم توکنه که میشه کوچکتنی جوز قابل درک برای مودل که مفهومش هم اینه که ما بر این که در واقع مودل رو فید بکنیم نمیتونیم تکستو یه جا بهش بدیم مجبوریم تکستو کچیک کنیم استلاحا توکنهایس کنیم خورد خورد بهش بدیم که این توکنها توی مودلهای مختلف متفاوتن خودش یه هایپ پارامتره من مهندسی که دارم مودلو دیزاین می کنم با توجه به درنازه گرفتن ریاضیات پشتش با توجه به درنازه گرفتن سخت افزار مموریی که دارم باید تصمیم بگیرم که سایز این توکنها ججوری باشه قبلن این شکلی بود که حتی دو کلمه دو کلمه سه کلمه سه کلمه برای این که مثلا کلمات کنار همدیگه معنیاشونو با خودشون بیارن میدادن به مودل استلاحا به این مودل سازی تکنیزیشن میگیم ترایگرم برای سه کلمه به هم چسبیده یا بایگرم برای دو کلمه به هم چسبیده یا حتی یونیگرم داشتیم که یک کلمه یک کلمه بدیم تو اون چیزی که توی ترانسفورمر را در واقع استفاده شده اینه که مثلا یه لغتی مثل ترانسفورمرز و تبدیلش کنیم به ترانسفورم و ایرز به این ترتیب چرا؟ برای اینکه دیکشنری سایزمون رو مدیریت بکنیم یعنی شما تصور بکنید اگه قرار باشه که هم ترانسفورم هم ترانسفورمر هم ترانسفورمرز توی دیکشنری در واقع دیکشنری که قرار مودل باش فید بکنیم وجود داشته باشه چقدر سایز بزرگ میشه بر برای تک تکی کلمات این اتفاق میفته مثلا یه لغتی مثل اکتو در نظر بگیریم که اتو دلش اکتیو و اکشن و اکتیویتی و چندین لغت دیگه میشه استخراج کرد در حالی که من فقط اگر اکتو زخیره بکنم فقط کافیه که اون اه پیروفیکس پوستفیکس هایی که در واقع اضافه میشه در واقع بهش عد بکنم اینجوری میتونم وکابیولری سایزمو در واقع مدیریت بکنم که به شدت به مدیریت ها حافظه کمک میکنه مثلا تو این توکن سترینگ هایی که تو این لیست داریم میبینیم مثلا تک اس رو داشته باشم به عنوان یه توکن که تک استارته تک پد به عنوان پدینگ که هاشیه اضافه بکنیم حالا هرچی از پایینم مثلا حرف ا رو داشته باشم الاخر یعنی به این ترتیب یه دیکشنری سایزی داشته باشم برای اینکه حالا اسکوب دستتون باشه من این جهت بله مردتون آباده کردم که مثلا توی ارژینال ترانسفورمر همین ترانسفورمر که الان در نجاوی صحبت می کنیم وکابیولری سایزمون سی هزار تکلم است توی GPT بالای 40 هزار تا بوده GPT 2 و 3 بالای 50 هزار تا توی بیرت که اتفاقا دوتا مودل بیس و لارج هم داره که بیسش 12 لایه و لارجش 24 لایه هست بالای 30 هزار تا دوباره وکابیلوری سایزمونه خیلی شبیه ام اون اورژینال ترانسفورملا هست رو برت ها که در واقع رابوسلی اپتیمایزد برت پری ترینینگ اپروچ اگه اشتباه نکنم مخففه یه همچین چیزی ها که یک وریانتی از برت ها سبید چون برت ها هم خودشون وریانت زیاد دارن بالای پنجه هزار تا دیکشنری سایزشه که خب اگر اسکوپ هم باز میخواد دستتون باشه این که تصور بکنید یه عدالت امریکایی تو سرویه نشون داده که آنه برهج 25 ازار تا کلمه بلده حالا تصور بکنید که وکابیولری سایز مودل ما مثلا یه همچین عددهایی باشه خب میک سنس میکنه دیگه خب حالا با این مقدم چینی ها وقتشه که بریم میماری ترنسپورمر ها رو بررسی بکنیم یه ترنسپورمر حالا جده از این که میشه به دوتا بخش اینکودر و دیکودر تقسیمش کرد توی این دوتا بخش هشتا کامپوننت اصلی داره یا جورایی که من این هشتا رو میخوام توی قسمت های مختلف توضیح بدم بهتون فقط یکی یکی بررسیشون بکنیم قسمت اول میشه اینپوت آتبوتی که از پایین دارن وارد میشن این آتبوتی که از پایین وارد میشه سمت راست یه مقداری متفابطه با اون آتبوتی که از بالا داره خارج میشه از آخر آخر داره خارج میشه که حالا جلوتر توضیح میدم چیه ماجراش توی قسمت دوم میخواییم راجب اینپوت آتبوت امبیدینگ صحبت بکنیم یعنی بعد از اینکه این ایمپوت آتبوت ها پایین اومدن باید امبیدینگ برشون اتفاق بیفته توی قسمت 3 پوزیشنال اینکودینگ به داستان اضافه میشه توی قسمت 4 راجب مالتی هدتنشن باید صحبت بکنیم توی قسمت 5 راجب ادن نورمز باید صحبت بکنیم توی قسمت 6 راجب فیت فوروارد اون بلاک فیت فوروارد رو متوجه شیم که توش چه خبره و در نهایت توی قسمت 7 اون لینیر آخر یه لینیر بره لایه آخر داریم که باید ببینیم که اون چی کار قرار انجام بده و در نهایت اون ساف مکس دیگه قسمت هشتم که ببینیم چی قراره به اون خروجی بده و در نهایت این مودل ترنسپورمر رو برنامه بستازه یوز کیس یا مثالی هم که میخوام باش این معماری رو توضیح بدم مثال ترجمه این متنه که میخوام یه استرینگ انگلیسی ترانسفورمرز لرن فرام دیتا رو ترجمه کنم به ترانسفورمرز از داده ها یاد میگیرم اینو با همدیگه مثلا بررسی بکنید که کلن به زبان مبدع استلاح هم میگیم سورس لنگوچ تو عدبیات و ماشین لرن دیگه در جریان باشین به زبانم اصلا هم میگیم تارگت لنگوچ یا دستینشن لنگوچ جفتشو میگیم خب اولین کامپوننتمون در واقع میشه input-output که inputیه که در واقع ورودی انکودر ماست outputی که ورودی دیکودر ماست حالا اسمشو یه خوره اینجا شاید بد گذاشتن output شاید میشد یه اسم دیگه براش انتخاب کرد قطی میکنیم که احساس میکنیم که خوروجی باید باشه در صورت که خوروجی نیست تو همین مثالی که همون داشتیم با هم دیگه بررسی میکنیم مثال ترجمه ورودی انکودر ماست در واقع میشه اون source language ماست که transformers learn from data و ورودی دیکودرمون میشه ترانسفورمن ها از داده ها یاد میگیرن که این در واقع نقش لیبل رو اینجا داره بازی میکنه حواسمون باشه اون چیزی که ما قرار داریم خوریجی بگیریم اینه که مودل ترین بشه بران که بتونه خوریجی درستی تولید بکنه که خب طبیعتا اول شروع میکنه یه سری پرتو پلا به امون تحویل میده اگه دقیق بکنین داره یه سری چیزایی چرتو پرتی تحویل میده تا این که توی عملیات بک پور پکیشن در نهایت اون چیزی که دلمون میخواد رو بتونیم ازش تحویل بگیریم به این ترتیب این تیکه اول در واقع فید کننده اینکودر و دیکودر ما با کمک سورس لنگوژ و تارگت لنگوژه که اون تارگت منظورمون لیبل هست اینجا در ادامه که یه لبل می آیم بالتر به input embedding و output embedding می رسیم یعنی بعد از اینکه ما source language و target language دادیم تو به عنوان ورودی الان وقتشی که این دوتا رو embed بکنیم پر اینکه embed کنیم خب طبیعتا اول tokenization اتفاق می افته بعد از اینکه tokenization اتفاق افتاد همونطور که می بینین مثلا transform براش یه embedding در می آد errors براش یه embedding در می آد learn براش یه embedding در می آد اله آخر حالا من همه رو لزومن نزشتم اینجا به همین ترتیب تو اون تیکه دیکودینگ هم همین اتفاق میفته یعنی توی اون فرهینده امبدینگی که برای آت بود اتفاق میفته برای لیبل اتفاق میفته برای ترانسفورمر یه امبدینگ در میاد برای ها یه امبدینگ جدا در میاد برای از یه امبدینگ در میاد این امبدینگ هم لرنبلند یعنی در طول فرهینده بک پروپکیشن یاد گرفته میشن ولی یه چیز سابتی هم یعنی این شکلیه که مثلا یک کلمه که ما توقع داریم که توی کانتکست های مختلف معنی های مختلف بده مثلا کلمه پریزنت که هم معنی هدیه میتونه بده هم معنی حال میتونه بده و کلی معنی دیگه پریزنت مثلا ارائه دادن معنی بده این توی کانتکست های مختلف و توقع داریم معنی مختلف بده ولی براش یه امبیدینگ ثابت اینجا در میاد هرچنک این امبیدینگ یاد گرفته شده شاید تو بگیر خب آقا پس کجا ترنسفورمر را قرار کانتکست رو یاد بگیرن؟ توی مراحل بعدی یعنی اون کامپوننت های بعدی قراره که کانتکس دو یه جورایی عد بکنه به داستان اتفاقا اولین جایی که کانتکس تزریق میشه به امبیدینگ مورد نظر تو همین کامپوننت شماره 3 که اسمش پوزیشن آنکودینگه هست که اسمش روشه دیگه قراره برساز پوزیشن کلمه کانتکس یه جورایی حالی ماشین بشه به این ترتیب که مثلا توی مطن مطن رزا ایتز پیتزا یا پیتزا ایتز رزا خب طبیعتا رزا تو دوتا پوزیشن مختلف تو دوتا جمعه نشسته پس نوید امبیدینگ یکسان داشته باشه چندین روی کرد وجود داره بران که این پوزیشنو بتونیم حالیه ماشین بکنیم خودشونم تو مقاله گفتن اتفاقن یه روی کرد این بود که بیان براش یه دوباره یه نورالتورک مستقل ترین بکنن که خب هم سخت افسار میخواست نکردیم. حتی گفتن اکسپریمنت کردیم و توی مقاله اینو عنوان کردن که ما اکسپریمنت کردیم ولی دیدیم خیلی فرقی نمی کنه با این مودلی که به صورت استاتیک خودمون پیشنهاد دادیم. یه مودل خیلی سیمپل ترشو بخوام بهتون بگم دید داشته باشین اینه که بیم شماره بذاریم برای کلمات. بگیم یک دو سه چهار پنج شیش همینجوری پوزیشناشون رو اینجوری بیاییم بیان بکنیم.
ولی برای این که حالا باز طول خود در واقع جملهی که اون کلمات توش بوجود دارن هم لحظه و دایمنشن خود مودلمون هم توش لاز بشه اینا یک روش سینوسویدال یا سینوسی رو در واقع ارائه کردن به این ترتیب که هر کلمه توی یه مت به حال یا توی پوزیشن زوج نشسته یا فرد مثلا رزا ایتز پیتزا رزا توی پوزیشن فرد نشسته ایتز توی پوزیشن زوج نشسته دیگه یک دو سه اینجوری در نظر بگیریم بگیر اونایی که توی پوزیشن زوج نشستن با یه فرمول سینوسی که شماره پوزیشن تقسیم بر ده هزار به طوان دو آیه تقسیم بر دیه مودله در واقع محاسبه میشه و همین ترتیب اونایی که تو پوزیشن فردن با یه پوزیشن کسینوسی بچه هایی که یکم ریزی بلدیم میدونین که اگر کمان سینوس و کسینوس و یکم دستگاری های زریبی بکنیم به این ترتیب دور تنها باوز میشه دیگه حالا برای اینکه باز بهتر درک بکنیم به این شکل نگاه بکنیم به قسمت های مختلفش مثلا نگاه بکنیم اون پوزیشن اول در واقع اون پیزی بیرو به امبیدینگ سبز رنگ سمت راست و به اون نوار سبز رنگی که سمت چب روی این سینوس کوسینوس ها افتاده توجه بکنید به این ترتیب اون در واقع پوزیشن 0 و 1 و 0 و 1 که از روی سینوس کوسینوس های مورد نظر داره استخراج میشه به امبیدینگ قبلیمون اضافه میشه برای یک تگ مثلا ستارت به همین ترتیب برای یک تگ بعدی در واقع پوزیشنال انکودینگ بعدی به امبیدینگمون اضافه میشه که یه پوزیشنال انکودینگ داینامیکه اگه دقیق بکنین به همین ترتیب برای کلمه یه بعدی و کلمه یه بعدی حالا بذارین داستان عد شدن این پوزیشنال انکودینگ به امبیدینگ مورد نظرمونم بگم یعنی تصور بکنین که ما ایمپوت آتپوتمون اگه مثلا یه همچین امبیدینگ های برفش رنگی براش در بیاد توی سورس لنگویج و تارگت لنگویج این پوزیشنال انکودینگ ها جداگونه یه سری وکتوری که الان توی اسلاید قبلی دیدین در واقع اضافه میشه به داستان که میشن اون قرمز رنگ ها اینا با همدیگه جمع میشن و یه بردار های جدیدی رو ایجاد میکنن ما میدونیم جمع بردار هم که یه چیز واضحیه دیگه نزیر به نزیر در رایه ها با همدیگه جمع میشن و اون بردار های صورتی رنگ رو در واقع به وجود میارن خب حالا که مودل امبدینگ کلمات رو یاد گرفت و پوزیشنال انکودینگ هم که با روش سینوسی خودمون عد کردیم بهش یک سری بردر جدید برای کلمات متنوع داریم اینا رو حالا وقت داشته که پاس بدیم به ملتای هده تنشن که به MHA هم میشنسیمش اگه دقیقا کنید سه تا از این MHA ها داریم اینجا یه دونه تو انکودر داریم دوتا تو دیکودر داریم هرچند که تو دیکودر لگا کنید اون پاینیه یه مسک درم اضافه دارید که حالا اونو باز جلوتر بهتون توضیح میدم چیه این لینیرها را اینجا در نظر گرفتیم ستا مفهوم جدیدی بنامه کوئری و کی و ولیو رو به وجود میارن که کل داستان اتنشن تو این ستا خلاصه میشه اول سلف اتنشن رو یاد میگیریم با کمک این ستا بعد ملتای هد اتنشن هم در ادامهش یاد میگیریم به چی میگیم کوئری؟ اون چیزی که داریم دنبالش میگریم به چی میگیم کی؟ اون چیزی که داریم به چی میگیم ولیو؟ اون چیزی که پابلیکیلی قراره برادکست میشه بذاریم مثال بذاریم برای تون که بهتر بفهمید شما توی گوگل یه چیزی رو سرچ میکنید اون دستوری که به گوگل میدی میشه کوهری توی نت کلی در واقع ویپیج مختلف وجود داره که میشه به شما نشون داده بشه اون میشه کی برای تک تک اون ویپیج هم یه ایندکسی داریم دیگه ویپیج شماره یک ویپیج شماره خب همه شون لزومن مرتبط نیستن با اون کوئری که شما سیرچ گردین طبیعتا این کوئری باید مچ بشه با اون کیی که مورد نظره به خطم این کی و کوئری حتما باید با همدیگه کلوسنسی داشته بشن اطمانا تو زنتون ضرب داخلی و کسینوس بازی و اینا میاد دیگه درسته؟ تو ادامه اون کی که مشخص شد حالا از تو دل اون کیه که حالا مشخص شد که کدوم یک از این مفاهمی که توی نت کدوم یک از این پیجایی که توی نت وجود داره نزدیک در به این کوهری مورد نظره ولیوه مورد نظرش که محتوی توش باشه در واقع استخراج میشه و نمایش داره میشه این کل اون چیزیه که حالا من تلقیم داشت کردم به زبون ساده توضیح بدم که background در واقع این اصطلاح های key query valueه یا key value query بگیم بهتره که این عدبیات هم از information retrieval یا بازیابی اطلاعات از اون رشته data science میاد در واقع این فرمولی ها که توی مقاله ارائه شده فرمولی که برای attention وجود داره که اگه دقیقه کنی query در key ضرب داخلی میشن تقسیم من رادیکال دی اک ای میشن دکه هم در واقع دایمنشن کی هست که حالا توضیح میدم بهتون چیه تصمیم رادیکال فلان میشه که اینم میگم از کجا اومده و برای چی این کار کردن از یک صاف مکس رد میشن تو والیو دوباره ضرب ماتریسی میشن که اگر کوهری و ترانسپوز کی چرا کی رو باید ترانسپوز کنیم به خاطر این که در واقع ابعادشون قابل ضرب در همدیگه باشن دوتا ماتریس هم دیگه ترانسپوزش میکنیم و هم دیگه زرد میشن فرض کنید که یه همچین ماتریسی به وجود میاد به این ماتریس میگه ماتریس اسکور سکور میتریس یا ماتریس اسکور که ماتریس امتیاز هست که بفهمیم که در واقع کوئری مورد نظر با کدوم کی ارتباط نزدیک داری داره یه همچین چیزی رو میخواییم در بیاریم خب این رو تقسیم رادیکال دی اکیهی بکنیم دی اکیهی یه عددیه برای نورمال سازی والیوهایی که اون تو وجود داره برای جلو گیریش کردن از اکسپلودی gradient یا انفجار gradient چون اینجا ممکنه که اگر عدادمون خیلی بزرگ باشه انفجار gradient تو backpropagation اتفاقی افته برای اینکه عدادمونو کچی کنیم میخواییم نورمالایس کنیم خب تکنیک های مختلفی برای نورمالایس که هنو بوجود داره دیگه اینا خودشون اشاره کنن که به صورت ایمپریکلی یعنی به صورت تجربی ما تصمیم گرفتیم تصمیم رادیکال دی اکی بکنیم یه همچه حالتی بعد اگه دقیق کنین اسکیل شده یه همین اسکور ماتریسه به دست میاد سکیلد سکور میتریس که لزومن هم عداد بین 0 و 1 نیستن ولی به هر حال زرعت کانورجنس اونو در واقع بهتر میکنن خب حالا وقتشه که ماتریس سکوره سکیل شده رو اتو دل یه ساف فکس رد بکنیم ساف فکس چیه؟ یه تابعه اکسپوننشیالیه که فورمولشو اینجا داریم میبینیم کارش اینه که عدادی که خیلی بزرگن توی لیست مورد نظر ما نسبت به بقیه رو خیلی بزرگتر بکنه و عدادی که کچیکن رو خیلی کچیکتر بکنه مثلا تو این ریست سمت چپ من پنج و یده هم از همه اعداد دیگه بزرگتره تبدیلش گرده به نهده هم و هفته همو تبدیل کرده به یک صده هم مهمترین کاری که برامان انجام میده این که خورجیی که به ما میده یه خورجیی یکه همه اعدادش بین صف رو یکن و مجموع اعداد یک میشه درست هستدین یه خورجی احتمالی داره به ما میده با این شریعت پس بر این اساس مدرسه که از صاف مکس من ردش گردم یک میتریکسی دارم به نام سلف اتنشن میکتریکس کارش چیه؟ میخواد ببینید ترانسفورم در مقابل ترانسفورم چقدر باید به خودش اتنشن بده به خاطر این بهش میگن سلف اتنشن مثلا شیشته هم شده اینجا ترانسفورم در مقابل ارز باید چقدر مثلا چقدر اتنشنش روی ارز باشه چقدر ترانسفورم اتنشنش روی لرن باشه این اعداد هم من کاملا تصادفی گذاشتم یعنی لزومن این شکلی نیست اگه ترانسفورم بکنی شاید یه جور دیگه بشه ولی مفهومش دقیقا همین شکلیه که یک ماتریسیه که روی قطر اصلیش تمرکز حل لغت روی خودش طبیعتاً خیلی بیشتره نسبت به بقیه ولی روی بقیه هم مشخص میشه که چقدر باید متمرکز باشه بعد از گیم ماتریس سلف اتنشن در اومد اینو تو والیو زرد میکنیم و در نهایت اتنشن میتریکس به طور کلی در میاد یعنی کل ماتریس اتنشن که اگه دقیق بکنی توی فرمولی هم که توی مقاله ارائه شده اتنشن کیو و کیوالیو اومده صاف مکسه در واقع اول اومده کیو رو در یه دونه کاترانسپوز زرب کرده تقسیم رادیکال دیکی که از اینکه اسکیلش کنه و نورمالایزش کنه برای جلو گیری از انفجار گرادیان از یه صاف مکس ردش کرده که تبدیل به احتمال بشه بر اساس این که کدوم احتمال بیشتر براش وجود داره زب در ولیو میکنه که ولیو مورد نظر استخراج بشه این کل فرایند مکانیزم اتنشنه اون چیزی که در واقع باید روش تمرکز وجود داشته باشه حالا دوباره با عدبیات خود مقاله هم بخواییم بررسی کنیم توی مقاله این دوتا اکس رو انداخته که اگه دقیق بکنی اکس سمت چپ در واقع نشوندهنده یه scaled dot product attentionه که کیو و کا از سمت چپ پایین دارن وارد میشن تو هم دیگه متمول یا اسطلاحاً matrix multiplication که میشه ضرب ماتریسی میشن تو هم دیگه بعد اسکیل میشن بعد mask که داخل پرنتاز optional که هنوز توضیح ندادم چیه داریم ممکنه که اینو نداشته باشیم که تو دوتاش نداشتیم از ستا بعد اگه softmax رد میشن میان دوباره توی وی که بردر والیو باشه در واقع متمول یا ضرب ماتریسی میشن اسطلاحاً که فرمولش همون پایین هست حالا برای این که بتونن قدرت یادگیری رو بیشتر کنن همونجور که توی مقالات قبلی با هم دیگه برسی کردیم میان تعداد این چنل ها رو بیشتر میکنن اچ تا توی اکس سمت راست داریم میبینیم اچ تا از این self attention ها رو میچسبونن به همدیگه به این تطیب multi head attention به وجود میارن که این HR هم تو مقاله 8 نظر گرفتن یعنی 8 سر گذاشتن یعنی 8 سر attention 8 کلی که حواسش باشه که کجاها رو نگاه کنه یه همچه حالتی بعد جواب این 8 رو با همدیگه کانکت میکنن تو اون قسمت زهردرنگ و از یه لینی رد میکنن و multi head attention به وجود میاد که فورمولش هم پایین نوشته که هی دقت بکنیم برای تک تک این Q, Q value هم باید یه سری W یعنی وزن ترین بشه به خاطر همین اون لینیر ها رو هی میذاریم که توی فرهینده backpropagation این W هم ترین بشن حالا این داستان مسکه چیه؟ خیلی کتابتون بگم این که توی قسمت دیکودر با تبشیم این که دیکودر کارش اینه که جنریت بکنه اون امبیدینگ اولیهی که انجام میدیم بیشتر تمرکزمون اینه که به لغت بعدی توجه بکنیم دیگه کاری به قبلی ها نداشته باشیم به خاطر همین اگه دقیق بکنیم ما میم یک کاری میکنیم اون اسکیلت اسکور میتریکسی که در اومده از حاسه ضرب کیو و کیو که بعد تقسیم را رادیکال هم کردیم رو می آییم با یک ماتریسی به نام لوک اهد میتریکس که فقط تمرکز اسمشوش لوک اهده یعنی جلو رو فقط نگاه می کنه جمع می کنیم توی این ماتریس تمامی اناسور پایین قدر اصلی منفی بی نهایت هستند که وقتی با این ماتریس اسکل شده جمع می شند پایین قدر اصلی رو منفی بی نهایت می کنند حالا چرا باید منفی بی نهایت کنند؟ به خاطر اینکه وقتی از یه صاف مکس ردش می کنیم قرار بود از صاف مکس رد کنیم این حاسه زهب و دیگه از صاف مکس رد می کنیم چون صاف مکس منفی بی نهایت صف می شه چون اکسپوننشیال منفی بی نهایت صف ردیگه به این تطیب یه ماتریس مسک شده به وجود می کنیم مسک یعنی که یه جاش کاور شده نمی بینیمش پایین قدر اصلی همه سفر هم پس یه ماتریز بالا مسلسی داریم به این ترتیبی این ماتریز فقط تمرکزش به حروف بعد از خودشه دیگه با حروف قبل خودش کاری نداره این برای چیه؟ برای مدیریت حافظ هست برای این که سخت افزار کم تری در واقع درگیر باشه ملتای هدفتنشن رو بخواییم جمع بکنیم این میشه که ما سه تا MHA داریم که یکیش توی اینکودره که تمرکز یه سلفتنشنیه که تمرکز جمعه یه Transformers Learn From Data روی خودش رو داره چک میکنه به خطر این بهش میگن سلفتنشن ولی یه ماتیس متقارن نیست دار دقیق کنیم میزان توجهی که ترانسفورم باید به ارز داشته باشه با میزان توجهی که ارز باید به ترانسفورم داشته باشه لزومن یکی نیست دیگه یه چیز واضحیه دیگه به همین ترتیب توی قسمت مسک ملتایید اتنشن اگه دقیق بکنیم باز در واقع خود ترنسفورمر ها از داده که تارگت لنگوه جمون باشه که به زبون فارسی بود برای اونم یه سلفت اتنشن باید در بیاد که البته مسک شده است و یه ماتریس بالمسلسی پایین شمه صفرم پایین قطر اصلی و حالا بریم سراغ کامپونت سه وم توی کامپونت سه وم اگه دقت کنیم اون سه شاخه ای که داره وارده اون هده مون میشه وارده سرمون میشه یه شاخه از داره از دیکودر میاد دوتا شاخه اش داره از اینکودر میاد و تنها جاییه که اصلا اتصال بین اینکودر و دیکودر رو داره بغران میکنه اون یه شاخه ای که از دیکودر میاد اسمش کوهریه اون دوتا شاخه ای که از اون برمیان کیو ولیوهای ما که میخواییم در واقع حال این دفعه transformers learn from data رو وضع کنیم به transformers ها از داده ها یاد میگیرن به این ترتیب یعنی دوتا زبون مبدع و مقصد رو به همدیگه لینک بکنیم استلاحا توی این هد در واقع لینک شدن به این دوتا زبون مبدع و مقصد اتفاق میفته توی backpour package این ایشن هم از هر کدوم از این یال هایی که این وسط میبینین انتقال و عقب و کلن داریم برای وحث ارورمون و این میشه ساختر ملتایی داتنشن که امیدوارم تونسته باشین تا اینجا درک کرده باشین ماجراشون کامپوننت پنجم خودش دوتا تیکه از add and norm که در واقع اون قسمت addش یه جورایی یه residual connectionه به خاطر این که از vanishing gradient جلگیری بکنیم و vanishing gradient میدونیم مشکلش چیه دیگه وقتی backpropag... که شما میخواد اتفاقی افتاده اگه تعداد لایه همون خیلی زیاد باشه معمولا این شکلیه که به این لایه های اولیه خیلی انتقال اطلاعات صورت نمیگیره و اون وسط گرادیان گم میشه استلاحا سفر میشه یا ونیش میشه ناپدید میشه بران که این رو جلوش رو بگیریم خوراک ریزیجوال کانکشنه که این رو توی ریزنت یاد گرفتیم اگر ویدیوی ریزنتو ندیدین کانسپتشو اونجا توضیح دادم که دقیقا این در واقع ساختاری که ما بیاییم خورجی هر لایه رو با ورودی لایه قبلی در واقع جمع بکنیم و بدیمش به لایه بعدی به این ترتیب اینجا هم از این تکنیک استفاده کردیم همونطور که میبینین بعد از اینکه از ملتایهد در واقع امبدینگ مورد میشه یه لینیر میزنیم و اون لینیر رو بر میگردونیم دوباره به قبل از ملتایهد و این دوتا رو با همدی که جمع میکنیم عد میکنیم استلاحاً و بعدش از یک لیر نورمالیزیشن اوگور میدیم که نورمالیزیشن هم که دیگه مشخصه برای چیه برای افزایش سورت کامورژینه که در واقع اینجا ما داریم این کار رو انجام میدیم و جلوگیری از اوورفیتینگ البته شیشومین کامپوننت ترانسفورمر ها اون بلاک های فیت فوروارده که تو انتهای انکودر و انتهای دیکودر وجود دارن که فقط فرقشون این که توشون یه دونه رلو هم وجود داره یعنی علاوه بر اینکه حالا لیمیر ها رو داریم یه رلو هم اون وسط داریم که غیر خطی بودن رو هم به داستان اضافه بکنیم برای دوستانی که الان این جار خوب فالا نمی کنم پیشنهاد می کنم که اون ویدیوهای مرود به Alexnet و Resnet و Younet رو حتما ببینین تای حد خیلی زیادی این مفایین براتون بهتر جا می افتید اینا دیگه خیلی بیسیک های نورال نت فورکه دیگه من بیشتر از این توضیح نمی دانم که حسلتون سر نره ولی اگه دقیق بکنین اون تیکه صورتی رنگ از تو دل فید فوروارد در اومده با همدیگه جمع میشم به خاطر این که ریزیجوال کانکشن اتفاق بیفته اگه لیر نورم اوبور میکنم و اون آبی پررنگه به وجود میاد که در واقع اینم بازد دست نوشته کلاسه با اجازه بچه ها که اون عد و نورم بعد از فید فورواردان هم توضیح داده باشیم هفته اومین کامپوننتش میشه لست لینیر لیر اون لایه آخر لینیری که داریم که اون فقط با این روی کرده که در واقع طبیعی تبدیل سایز بکنیم خروجیمون رو به سایز دیکشنریمون که سایز دیکشنریمون مثلا تو ترنسپورمر رو دیدیم سی هزار تا بود اون لینیره رو میذاریم که بتونیم فولیکار اکتاده یکی از کار برداشتونیم بود که بتونیم سایز رو تغییر بدیم اینجا هدف همونی که سایز رو تبدیل کنیم به سایز وکابیولریمون و در آخر اینکه خروجی اون لایه لینیر رو پاس بیدیم به یک ساف وکس چرا ساف وکس؟ چون مثلا اون کلاس بندیه اه آقا منگی مثلا اون کلاس بندیه و کبیرلیمون اینجوری بگم بهتره و این که طبیعتاً لاستش هم میشه کلاس آنتروپی به خاطر اینکه مسئله من کلاسفیکشنه و کاربورد صاف مکسم که میدونیم چیه توی مسئله کلاسمندی دیگه اینا بدیهیاته دیگه نورالت فورکاس شمایی که دا اینجور دنبال کردین احتمال زیاد میدونین که ماجرش چیه حالا باز اگه نمیدونستین من کامنت ها رو خودم میخونم حتما توی کامنت ها سوال بزنین خودم سعی میکنم حتما جواب میدم سوال ها رو توی این بیماری اگر دقیق بکنین انتا از اینکودر و دیکودر را استفاده شده که انو توی این مقاله شیش در نظر گرفتن یعنی شیش دا از هر کدوم از اینکودر و دیکودر در نظر گرفته شده که تا حد ممکن زرفیت یادگیری را افزایش بدیم پس ما اگه اینجوری در نظر بگیریم که در واقع تا قبل از این تمرکز تکس پراسسینگ روی مودل های آرینن یا ریکارنت نورال نت فورکا بود که یه خانواده هایی مثل LSDM و GRU داشتن که مشکل های خیلی زیادی داشتن اینا از جمعه اینکه آرینن ها به دلیل اینکه ویت ها تو هم دیگه زرد می شدن کافی بود که ویتمون بزرگتر از یک میشد یا کچکتر از یک میشد سریع اکسپلودینگ رادیان یا ونیشینگ رادیان براش اتفاق میفتاد که LSDM ها اومدن که اون در واقع کانکشن بالا رو برقرار کردن که بتونن به عنوان ریزیجوال کانکشن یا اسکیپ کانکشن بتونن در واقع بک پور پکیشن رو بهتر انجام بدن LSDM ها خیلی پیجیده بودن ستا سیک مود داشتن توشون تو هر بلاکشون دو تا تانجانتی پیگولیک داشتن باز جیاریو اومد که یه خوره ساده تر از الستیم باشه در واقع سامورایز بکنه ولی ترنسفورورا در ادامه اینا دیگه نبودن اصلا یه چیز آت آف باکسی بودن مثل اینه که یکی تو احیام قدیم مثلا آدم ها میخواستن فکر کنن که چجوری از آ برن به بی حالا به جنگ که مثلا خر سواشن اصب سواشن یا دو تا اصب ببنن به یه دورشگه یا چار تا اصب ببنن به یه دورشگه یه اون یکی اومد که باقا بیایی اصلا ماشین تولید کنیم چه کاری اصلا