From c790f05f64d83e875b0dd19b9f02401f8b02bc51 Mon Sep 17 00:00:00 2001 From: thisistayeb <69354587+thisistayeb@users.noreply.github.com> Date: Sat, 10 Oct 2020 09:36:41 +0300 Subject: [PATCH 01/12] [FA] 12-1.md Translation --- docs/fa/week12/12-1.md | 405 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 405 insertions(+) create mode 100644 docs/fa/week12/12-1.md diff --git a/docs/fa/week12/12-1.md b/docs/fa/week12/12-1.md new file mode 100644 index 000000000..378c9214b --- /dev/null +++ b/docs/fa/week12/12-1.md @@ -0,0 +1,405 @@ +--- +lang: fa +lang-ref: ch.12-1 +title: یادگیری عمیق برای «پردازش زبان‌های طبیعی« +lecturer: Mike Lewis +authors: Jiayu Qiu, Yuhong Zhu, Lyuang Fu, Ian Leefmans +date: 20 Apr 2020 +translator: Tayeb Pourebrahim +--- +
+ +## [بررسی اجمالی](https://www.youtube.com/watch?v=6D4EWKJgNn0&t=44s) +* پیشرفت شگفت انگیز در سالهای اخیر: + - در برخی زبان‌ها، انسان‌ها ترجمه ماشینی را بر ترجمه انسانی ترجیح می‌دهند + - عملکرد فرا انسانی در تعداد زیادی مجموعه داده‌ی سوال-پاسخ + - مدل های زبان، پاراگراف‌های روان تولید می کنند (برای مثال: مقاله رادفورد و همکاران ۲۰۱۹) +* حداقل تکنیک‌های تخصصی نسبت بر هر کار مورد نیاز است و با مدل‌های نسبتاً عمومی این موارد به دست می‌آید + + + +## مدل های زبان +* مدل های زبان یک احتمال را به یک متن اختصاص می دهند: + $p(x_0, \cdots, x_n)$ +* تعداد زیادی جمله‌ی محتمل وجود دارد بنابراین نمی‌توانیم فقط یک «دسته‌بند» را آموزش دهیم +* محبوب‌ترین روش تجزیه کردن توزیع با استفاده از قانون زنجیره‌ای است: +$$p(x_0,...x_n) = p(x_0)p(x_1 \mid x_0) \cdots p(x_n \mid x_{n-1})$$ + + + +## مدل‌های زبان عصبی + +اساساً ما متن را وارد یک شبکه عصبی می‌کنیم، شبکه عصبی تمام اجزای متن را بر روی یک بردار نگاشت می کند. این بردار کلمه بعدی را نشان می‌دهد و ما چند ماتریس بزرگ جاسازی کلمات داریم. ماتریس جاسازی کلمه شامل برداری برای هم کلمه‌ی محتمل که می‌توان خروجی مدل باشد، است. سپس ما به طور مشابه ضرب داخلی «بردار اجزا» را در بردار‌ هر کلمه محاسبه می‌کنیم. ما درست‌نمایی پیشبینی کلمه بعدی را به دست می‌آوریم، سپس این مدل را با استفاده از «درست‌نمایی بیشینه» آموزش می‌دهیم. جزء اصلی این است که ما با کلمات به طور مستقیم سر و کار نداریم بلکه با چیزهایی به نام «زیر-کلمه» یا کاراکتر‌ها سر و کار داریم. + +$$p(x_0 \mid x_{0, \cdots, n-1}) = \text{softmax}(E f(x_{0, \cdots, n-1}))$$ + +
+ +
تصویر شماره ۱: مدل‌های زبان عصبی
+
+ + +## مدل‌های زبان کانولوشنی + +* اولین مدل عصبی زبان +* هر کلمه را به عنوان یک بردار جاسازی کنید، که یک جدول جستجو برای ماتریس جاسازی است، پس کلمه همان بردار را می‌گیرد بدون توجه به موضوعی که در آن ظاهر شده است +* در هر مرحله «شبکه پیشخور» یکسانی اعمال می شود +* متاسفانه،‌ «تاریخچه با اندازه ثابت» به معنی این است که فقط محدود به متن کراندار است +* جنبه مثبت این مدل‌ها سرعت بسیار زیادشون است +
+ +
تصویر ۲: مدل زبان کانولوشنی
+
+ + +## مدل‌های زبان بازگشتی + +* محبوب‌ترین روش تا چندین سال پیش +* از نظر مفهموی سرراست است: هر مرحله زمانی ما بعضی حالت ها را حفظ می کنیم (دریافت شده از مرحله زمان قبلی، که نشان دهنده آنچه ما تاکنون خوانده ایم. این با کلمه فعلی ترکیب شده است که در حالت بعدی خوانده و استفاده می شود. سپس این روند را به تعداد گام های زمانی که نیاز داریم تکرار می کنیم. +* استفاده در متن‌های بی‌کران: در اصل عنوان یک کتاب بر وضعیت های پنهان آخرین کلمه کتاب تأثیر می گذارد. +* معایب: + - کل تاریخچه خواندن سند در هر مرحله به بردار با اندازه ثابت فشرده می شود، که «گلوگاه» این مدل است + - گرادیان‌ها در متون طولانی تمایل به از بین رفتن دارند + - امکان پردازش موازی در مرحله-زمان وجود ندارد، پس سرعت آموزش پایینی دارد + +
+ +
تصویر سوم: مدل زبان بازگشتی
+
+ + +### [مدل‌های زبان دگرگون ساز] (https://www.youtube.com/watch?v=6D4EWKJgNn0&t=828s) + +* جدیدترین مدل در پردازش زبان‌های طبیعی +* جریمه اساسی +* سه مرحله اصلی + * مرحله ورودی + * $n$ بار بلاک‌ها (لایه‌‌های رمز شده) را با مولفه‌های مختلف دگرگون می‌کند + * مرحله خروجی +* مثالی با ۶ ماژول (لایه‌های رمز شده) در مقاله اصلی دگرگون ساز: + +
+ +
تصویر چهارم: مدل زبان دگرگون ساز
+
+زیر لایه‌ها توسط جعبه هایی با عنوان "Add&Norm" به هم متصل می‌شوند. قسمت "Add" به معنی این است که اتصال باقی مانده است، که کمک می‌کند به جلوگیری از محو شدن گرادیان.‍ نُرم در اینجا به معنی لایه نرمال‌سازی شده است. + +
+ +
تصویر پنجم: لایه رمز شده
+
+لازم به ذکر است که «دگرگون سازها» وزن‌ها را در مراحل زمانی به اشتراک می‌گذراند. + + + +# توجه چند سر +figure> + +
تصویر ششم: توجه چند سر
+ + + + +برای کلماتی که تلاش میکنیم آن ها را پیشبینی کنیم، مقادیری رو محاسبه می‌کنیم به نام **query(q)**. برای تمام کلمات قبلی که پیشبینی کردیم را **keys(k)** می‌نامیم. پرسش یا query چیزی است که موضوع متن را به ما می‌گوید، همانند صفت‌های قبلی. کلید یا key همانند برجسب زدن اطلاعات فعلی درباره کلمه فعلی همانند «آب و هوا» است، یک صفت است یا نیست. یکبار که q محاسبه شود، می‌توانیم توزیع کلمات قبلی را به دست بیاوریم ($p_i$): + + +$$p_i = \text{softmax}(q,k_i)$$ + + + +سپس مقادیری را حساب می‌کنیم که برای کلمات قبلی به آن‌ها **values(v)** یا **مقادیر (v)** می‌گوییم. مقادیر نشان دهنده محتوای کلمات است. +هنگامی که مقادیر را بدست آوردیم، با به حداکثر رساندن توزیع توجه، حالت های پنهان را محاسبه می کنیم: + $$h_i = \sum_{i}{p_i v_i}$$ + + +ما یک چیز را چندین بار به طور موازی با پرسش‌ها، مقادیر و کلیدهای مختلف محاسبه می کنیم. دلیل این امر این است که ما می خواهیم کلمه بعدی را با استفاده از چیزهای مختلف پیش بینی کنیم. به عنوان مثال، وقتی کلمه unicorns یا «تک شاخ‌ها» را با استفاده از سه کلمه قبلی these یا «این‌ها»، horned یا «شاخدار» و silver-white یا «سفید نقره‌ای» پیش بینی می کنیم. ما می دانیم که این یک «تک شاخ» است توسط «شاخدار» و «سفید-نقره‌ای». اگرچه با توجه به these یا «این‌ها» می‌دانیم که unicorns به معنی تک‌شاخ‌ها حالت جمع unicorn است. بنابراین، احتمالاً می خواهیم از این سه کلمه استفاده کنیم تا بدانیم کلمه بعدی باید چه باشد. توجه چند سره راهی است که باعث می شود هر کلمه به چندین کلمه قبلی نگاه کند. + + +یک مزیت بزرگ در مورد توجه چند سر این است که به صورت موازی بسیار قابل محاسبه است. برخلاف RNNها، که سرهای ماژول های توجه چند سر و همه مراحل گام را به طور همزمان محاسبه می کند. یک مشکل محاسبه همزمان همه مراحل زمانی این است که می تواند کلمات آینده را نیز بررسی کند، در حالی که ما فقط می خواهیم به کلمات قبلی شرط بگذاریم. یک راه حل برای آن چیزی است که ** پوشش خود-توجه ای ** نامیده می شود. پوشش یک ماتریس مثلثی فوقانی است که در مثلث پایین صفر و در مثلث بالایی بی نهایت منفی دارد. تأثیر افزودن این پوشش به خروجی ماژول توجه این است که هر کلمه به سمت چپ دارای نمره توجه بسیار بیشتری نسبت به کلمات به سمت راست است، بنابراین مدل در عمل فقط بر روی کلمات قبلی تمرکز دارد. استفاده از پوشش در مدل زبان بسیار مهم است زیرا آن را از نظر ریاضی صحیح می کند، با این حال، در رمزگذارهای متن، متن دو زبانه می تواند مفید باشد. + + + +یک جزئیات برای کارکرد مدل زبان دگرگون ساز افزودن جاساز موقعیتی به ورودی است. در زبان، برخی از خصوصیات مانند ترتیب برای تفسیر مهم هستند. تکنیک مورد استفاده در اینجا یادگیری جاسازهای جداگانه در مراحل مختلف زمانی و افزودن این موارد به ورودی است، بنابراین ورودی اکنون جمع برداری از بردار کلمه و بردار موقعیتی است. این تکنیک ترتیب اطلاعات را به ما می دهد. + +
+ +
تصویر هفتم: معماری دگرگون ساز
+
+ + +**چرا این مدل خوب است؟** +۱. ارتباط مستقیمی بین هر جفت کلمه ایجاد می کند. هر کلمه می تواند مستقیماً به حالت های پنهان کلمات قبلی دسترسی پیدا کند و گرادیان های ناپدید شده را کاهش دهد. تابع پرهزینه ای را به راحتی یاد می‌گیرد. +۲. تمام گام‌های زمانی به صورت موازی محاسبه می‌شود. +۳. خود-توجه‌ای درجه دوم است (تمام گام‌های زمانی می تواند به همه موارد دیگر مربوط شود)، محدود به حداکثر طول دنباله. + + + +## [برخی از ترفندها (به ویژه برای توجه چند سر و رمزگذاری موقعیتی) و رمزگشایی مدل های زبان](https://www.youtube.com/watch?v=6D4EWKJgNn0&t=1975s) + +### ترفند ۱: استفاده گسترده از نرمال سازی لایه برای تثبیت آموزش واقعاً مفید است + +- برای دگرگون ساز بسیار مهم است + + +### ترفند ۲: دست گرمی + برنامه زمانی آموزش ریشه مربع معکوس + +- از برنامه زمانی نرخ یادگیری استفاده کنید: برای اینکه دگرگون سازها به خوبی کار کنند، باید سرعت یادگیری خود را از صفر تا هزار مرحله به صورت خطی کاهش دهید + +### ترفند ۳: مقداردهی اولیه دقیق +- برای کاری مثل ترجمه ماشینی بسیار مفید است + +### ترفند ۴: هموارسازی برچسب +- برای کاری مثل ترجمه ماشینی بسیار مفید است + + +در زیر نتایج برخی از روشهای ذکر شده در بالا آمده است. در این آزمون ها، معیار سمت راست به نام «ppl» مقدار گیجی است ( هرچقدر مقدار ppl کمتر باشد بهتر است.) +
+ +
تصویر هشتم: مقایسه عملکرد مدل
+
+می توانید ببینید که وقتی دگرگون سازها معرفی شدند، عملکرد به شکل بسیار خوبی بهبود یافت. + + +## برخی از حقایق مهم مدل‌های دگرگون ساز زبان + + - حداقل سوگیری استقرایی + - تمام کلمات به طور مستقیم متصل هستند، که باعث کاهش گرادیان‌های ناپدید شده می شوند. + - تمام مراحل زمانی به طور موازی محاسبه می شوند. + +خود-توجه‌ای درجه دوم است (تمام گام‌های زمانی می تواند به همه موارد دیگر مربوط شود)، محدود به حداکثر طول دنباله. + +- باتوجه به اینکه خود-توجه‌ای درجه دوم است، هزینه آن در عمل به صورت خطی رشد می کند، که می تواند مشکلی ایجاد کند. +
+ +
تصویر نهم: دگرگون سازها در مقابل RNNها
+
+ + +### دگرگون سازها بسیار خوب مقیاس پذیر می شوند +۱. داده های آموزش نامحدود، حتی بسیار بیشتر از آنچه شما نیاز دارید +۲. GPT-2 درسال ۲۰۱۹ از ۲ میلیارد (بیلیون) پارامتر استفاده کرده است +۳. مدل‌های امروزی تا ۱۷ میلیارد (بیلیون) استفاده می‌کنند و امسال ۲۰۲۰ است + + +## مدل های زبان رمزگشا + +اکنون می توانیم توزیع احتمال را روی متن آموزش دهیم - در حال حاضر اساساً می توانیم به صورت نمایی بسیاری از خروجی های ممکن را بدست آوریم، بنابراین نمی توانیم حداکثر را محاسبه کنیم. هر انتخابی که برای اولین کلمه خود انجام می دهید می تواند بر سایر تصمیمات تأثیر بگذارد. +بنابراین، با توجه به این، رمزگشایی حریصانه به شرح زیر معرفی شد. + + +### رمزگشایی حریص کار نمی کند + +ما محتمل ترین کلمه را در هر مرحله زمان می گیریم. با این وجود، هیچ تضمینی این محتمل ترین توالی ممکن باشد، زیرا اگر مجبور باشید در مرحله ای آن مرحله را انجام دهید، دیگر هیچ راهی برای پیگیری جستجوی خود برای پس‌گرد سایر نشست‌های قبلی ندارید. + +### جستجوی خسته کننده نیز امکان پذیر نیست + +این نیاز به محاسبه تمامی توالی های ممکن دارد و به دلیل پیچیدگی $O(V^T)$، بسیار گران خواهد بود + + + +## سوالات و پاسخ های درک مطلب + +۱. توجه چند سر در مقابل مدل توجه تک سر چه فایده ای دارد؟ + + * برای پیش بینی کلمه بعدی باید چندین چیز جداگانه را مشاهده کنید، به عبارت دیگر، برای درک زمینه لازم برای پیش بینی کلمه بعدی می‌توان «توجه» را روی چند کلمه قبلی نشاند. + +۲. چگونه دگرگون ساز‌ها گلوگاه های اطلاعاتی CNNها و RNNها را حل می کنند؟ + + * مدل های توجه امکان ارتباط مستقیم بین تمام کلمات را فراهم می کنند و باعث می شوند هر کلمه به تمام کلمات قبلی مشروط شود و به طور موثر این گلوگاه را برطرف کند. + +۳. تفاوت دگرگون ساز‌ها با RNNها در نحوه بهره برداری از موازی سازی GPU چیست؟ + + * ماژول های توجه چندسر در دگرگون ساز‌ها بسیار امکان پردازش موازی دارند در حالی که RNNها اینطور نیستند و بنابراین نمی توانند از فناوری GPU استفاده کنند. در حقیقت دگرگون سازها تمام مراحل زمانی را همزمان با یک «پیش خور» محاسبه می کنند. From 41e33af2c94f8e99aa2e82f3a3302518295daacc Mon Sep 17 00:00:00 2001 From: thisistayeb <69354587+thisistayeb@users.noreply.github.com> Date: Sat, 10 Oct 2020 10:48:37 +0300 Subject: [PATCH 02/12] [FA] 12-2.md translation --- docs/fa/week12/12-2.md | 617 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 617 insertions(+) create mode 100644 docs/fa/week12/12-2.md diff --git a/docs/fa/week12/12-2.md b/docs/fa/week12/12-2.md new file mode 100644 index 000000000..bd670b86e --- /dev/null +++ b/docs/fa/week12/12-2.md @@ -0,0 +1,617 @@ +--- +lang: fa +lang-ref: ch.12-2 +title: مدل های زبان رمزگشا +lecturer: Mike Lewis +authors: Trevor Mitchell, Andrii Dobroshynskyi, Shreyas Chandrakaladharan, Ben Wolfson +date: 20 Apr 2020 +translator: Tayeb Pourebrahim +--- +
+ + + +## [الگوریتم جستجو پرتو محلی](https://www.youtube.com/watch?v=6D4EWKJgNn0&t=2732s) +الگوریتم جستجو پرتو محلی یک تکنیک دیگر برای رمزگشایی از مدل زبانی و ایجاد متن است. در هر مرحله، الگوریتم ردپای مسیر $k$ محتمل‌ترین (بهترین) ترجمه های جزئی(فرضیه‌ها) دنبال می‌کند. امتیاز هر فرضیه برابر با لگاریتم احتمال آن است. +الگوریتم فرضیه های با بالاترین نمره را انتخاب می کند. +
+
+تصویر اول: رمزگشایی پرتو محلی +
+ + + +درخت پرتو تا چه عمقی منشعب می شود؟ + +درخت پرتو تا زمانی که به ژتون انتهای جمله برسد، ادامه می یابد. به محض خروجی ژتون انتهای جمله، فرضیه تمام می شود. + +چرا (در NMT) اندازه های بسیار بزرگ پرتو اغلب منجر به ترجمه های خالی می شود؟ + +در زمان آموزش، الگوریتم اغلب از پرتو استفاده نمی کند، زیرا بسیار گران است. به جای استفاده از فاکتورگیری خودهمبسته (که از خروجی درست پیشبینی $n+1$ کلمه‌ی اول به دست آوردیم). این مدل در هنگام آموزش در معرض اشتباهات خود قرار ندارد، بنابراین ممکن است که «مُهملاتی» در پرتو نشان داده شود. + +خلاصه: جستجوی پرتو را تا زمانی که تمام $K$ فرضیه ژتون پایانی را تولید کنند یا به حد حداکثر رمزگشایی T برسند ادامه پیدا می‌کند. + + + + +### نمونه گیری +ما ممکن است محتمل‌ترین دنباله را نخواهیم. در عوض می توانیم از توزیع مدل نمونه بگیریم. + +با این حال، نمونه گیری از توزیع مدل مشکل خاص خود را ایجاد می کند. هنگامی که از یک انتخاب «بد» نمونه برداری شد، مدل در وضعیتی است که در طول آموزش هرگز با آن روبرو نشده است، احتمال ادامه ارزیابی «بد» افزایش میابد. بنابراین الگوریتم می تواند در حلقه‌های بازخورد وحشتناک گیر کند. + + +### نمونه گیری کی-بالا +یک تکنیک نمونه گیری خالص که توزیع را به $K$ بهترین‌ها کوتاه می‌کنیم و سپس دوباره نرمالایز می‌کنیم و از توزیع نمونه می‌گیریم. +
+
+تصویر دوم: نمونه گیری کی-بالا +
+ + + +### سوال: چرا نمونه گیری کی-بالا به خوبی کار می‌کند؟ + +این تکنیک به این دلیل خوب کار می‌کند که اساساً سعی می شود مانع از افتادن از منیفولد زبان خوب شود وقتی که ما فقط از سر توزیع استفاده کنیم و دم توزیع را حذف می‌کنیم. + +## ارزیابی تولید متن + +ارزیابی مدل زبان به سادگی نیاز به لگاریتم درست نمایی دیتای بیرون نگه داشته (یا دادهای تست) دارد. با این حال، ارزیابی متن دشوار است. معیار های کلمات متداول همپوشانی با الگوریتم‌های مرجع (همانند BLEU، ROUGE و ...) دارد، اما آنها مشکلات خاص خود را دارند. + + + + +## مدل‌های ترتیب به ترتیب + + +### مدل‌های زبان مشروط + +مدل های زبان مشروط برای تولید نمونه های تصادفی انگلیسی مفید نیستند، اما برای تولید متنی با یک ورودی، مفید هستند. + +مثال‌ها: + +- با توجه به یک جمله فرانسه، ترجمه انگلیسی را تولید کنیم. +- با توجه به یک سند، خلاصه را تولید کنیم. +- با توجه به یک دیالوگ، پاسخ بعدی را تولید کنیم. +- با توجه به یک سوال، جواب را تولید کنیم. + + +### مدل‌های ترتیب به ترتیب + +به طور کلی، متن ورودی رمزگذاری شده است. این نتیجه جاسازی شده به عنوان "بردار فکر" شناخته می شود، که سپس به رمزگشای منتقل می شود تا کلمه به کلمه ژوتن‌ها را تولید کند. + +center> +
+تصویر سوم: بردار فکر + + + +### دگرگون ساز ترتیب به ترتیب + +نوع ترتیب به ترتیب دگرگون ساز، دو نوع دارد: + +۱. نوع رمزگذار - خود-توجه‌ای پوشیده نیست بنابراین همه ژتون‌های ورودی می توانند به ژتون‌های دیگر ورودی نگاه کنند + +۲. نوع رمزگشا - جدای استفاده از استفاده «توجه» روی خودش، روی تمام ورودی‌ها هم استفاده می‌شود + +
+
+تصویر چهارم: دگرگون ساز ترتیب به ترتیب +
+ +هر ژتون در خروجی با هر ژتون قبلی در خروجی و همچنین با هر کلمه در ورودی ارتباط مستقیم دارد. اتصالات این مدل ها را بسیار رسا و قدرتمند می کند. این دگرگون‌سازها بهبودهایی در امتیاز ترجمه نسبت به مدل‌های بازگشتی و کانولوشنی ایجاد کردند. + + +## [ترجمه مجدد] (https://www.youtube.com/watch?v=6D4EWKJgNn0&t=3811s) +هنگام آموزش این مدل ها، ما معمولاً به مقدار زیادی متن برچسب خورده وابسته‌ایم. متن اقدامات پارلمان اروپا منبع خوبی از دیتا است - این متن به صورت دستی به زبان‌های مختلفی ترجمه شده است که می‌توانیم به عنوان ورودی‌ها و خروجی‌‌های مدل استفاده کنیم. + + +### مسائل + +- همه زبانها در پارلمان اروپا نمایندگی ندارند، به این معنی که الزاماً برای همه زبان هایی که ممکن است به آنها علاقه داشته باشیم جفت ترجمه نخواهیم داشت. چگونه متنی را برای آموزش به زبانی پیدا کنیم که لزوماً نتوانیم داده ها را برای آن بدست آوریم؟ + +- از آنجا که مدل هایی مانند دگرگون‌سازها با داده های بیشتر عملکرد بهتری دارند، چگونه می‌توان از متن تک زبانه به طور کارآمد استفاده کرد ، * یعنی * بدون جفت ورودی / خروجی؟ + +فرض کنید می خواهیم مدلی را ترجمه کنیم که آلمانی را به انگلیسی ترجمه کند. ایده ترجمه مجدد این است که ابتدا یک مدل معکوس انگلیسی به آلمانی آموزش دهیم + +- با استفاده از برخی داده های دو متنی محدود می توانیم جملات مشابه را به دو زبان مختلف بدست آوریم +- هنگامی که ما مدل انگلیسی به آلمانی را داریم، بسیاری از کلمات یک زبانه را از انگلیسی به آلمانی ترجمه کنید. + +در آخر، آموزش مدل آلمانی به انگلیسی با استفاده از کلماتی که در مراحل قبلی «ترجمه مجدد» شده است، انجام می‌دهیم. ما توجه داریم که: + +- مهم نیست که مدل معکوس چقدر خوب باشد - ما ممکن است ترجمه های آلمانی نویزی داشته باشیم اما در نهایت ترجمه دقیق انگلیسی داشته باشیم. +- ما باید یاد بگیریم که انگلیسی را فراتر از داده های جفت های انگلیسی / آلمانی (قبلاً ترجمه شده) درک کنیم - از مقادیر زیادی [متن] انگلیسی تک زبانه استفاده کنید + + +### ترجمه مجدد تکرار شده + +- ما می توانیم روش ترجمه مجدد را تکرار کنیم تا حتی داده های دو متنی بیشتری تولید کنیم و عملکرد بسیار بهتری داشته باشیم - فقط با استفاده از داده های تک زبانه آموزش را ادامه دهید +- وقتی داده موازی زیادی نباشد، خیلی کمک می کند + +## ترجمه ماشینی چند زبانه عظیم + +
+
+تصویر پنجم: ترجمه ماشینی چند زبانه +
+ + +## یادگیری بدون نظارت پردازش زبان‌های طبیعی + +مقادیر زیادی از متن بدون هیچ برچسب وجود دارد و داده های نظارت شده کمی وجود دارد. چقدر می توان فقط با خواندن متن بدون برچسب در مورد زبان یاد گرفت؟ + + +### `word2vec` + +شهود - اگر کلمات در متن نزدیک به هم ظاهر شوند، احتمالاً با هم مرتبط هستند، بنابراین امیدواریم که فقط با نگاه کردن به متن انگلیسی بدون برچسب، معنی آنها را یاد بگیریم. + +- هدف یادگیری فضای برداری نماینده های کلمات است (یادگیری جاسازی‌ها) + +وظیفه قبل از آموزش - مقداری کلمه را مخفی کنید و از کلمات همسایه برای پر کردن جای خالی استفاده کنید. + +
+
+تصویر هفتم: word2vec پوشاندن بصری +
+ + + + +به عنوان مثال، در اینجا ایده این است که "شاخ" و "موی نقره ای" بیش از برخی حیوانات دیگر در متن "تک شاخ" ظاهر می شوند. + +کلمات را بگیرید و یک برون‌فکنی خطی اعمال کنید +
+
+تصویر هشتم: word2vec جاسازی ها +
+ +می خواهیم بدانیم + +$$ +p(\texttt{unicorn} \mid \texttt{These silver-haired ??? were previously unknown}) +$$ + +$$ +p(x_n \mid x_{-n}) = \text{softmax}(\text{E}f(x_{-n}))) +$$ + +جاسازی کلمه‌ها دارای ساختار است. + +
+
+تصویر نهم: مثالی برای ساختار جاسازی +
+ +- ایده این است که اگر ما جاسازی را برای "پادشاه" پس از آموزش بگیریم و جاسازی را برای "زن" اضافه کنیم ، یک جاسازی بسیار نزدیک به "ملکه" بدست خواهیم آورد +- برخی اختلافات معنی دار بین بردارها را نشان می دهد + + +### سوال: آیا نماینده کلمه مستقل از زمینه است یا وابسته به زمینه است؟ + +مستقل و هیچ ایده ای درباره ارتباط آنها با کلمات دیگر ندارند + + +### سوال: نمونه ای از وضعیتی که این مدل در آن گیر می کند چه خواهد بود؟ + +تفسیر کلمات بستگی زیادی به زمینه دارد. بنابراین در نمونه کلمات مبهم - کلماتی که ممکن است چندین معنی داشته باشند - این مدل با مشکل روبرو خواهد شد زیرا بردارهای جاسازی، زمینه مورد نیاز که برای درک صحیح کلمه را درک نمی کنند. + + + +### GPT + +برای اضافه کردن زمینه به مدل، می توانیم یک مدل زبان مشروط را آموزش دهیم. سپس با توجه به این مدل زبان، که کلمه را در هر مرحله پیش بینی می کند، هر یک از خروجی های مدل را با ویژگی دیگری جایگزین کنید. + +- پیش آموزش- کلمه بعدی را پیش بینی کنید +- تنظیم دقیق - تغییر به یک کار خاص. مثال ها: + - پیش بینی کنید اسم است و یا صفت + - با توجه به برخی از متن های متشکل از بررسی سایت آمازون، امتیاز را برای بررسی پیش بینی کنید + +این روش خوب است زیرا ما می توانیم مدل را مجدداً استفاده کنیم. ما یک مدل بزرگ را از قبل آموزش می دهیم و می توانیم با کارهای دیگر هماهنگ کنیم. + +### ELMo + +GPT فقط زمینه سمت چپ را در نظر می گیرد، این بدان معناست که مدل نمی تواند به هیچ کلمه ای در آینده وابسته باشد - این کاری را که مدل می تواند انجام دهد بسیار محدود می کند. + +در اینجا رویکرد آموزش دو مدل زبان است + +- یکی در متن چپ به راست +- یکی در متن راست به چپ +- برای ارائه دادن کلمه، خروجی دو مدل را بهم میچسبانیم. اکنون می تواند به زمینه راست و چپ بستگی داشته باشد. + +این هنوز یک ترکیب «کم عمق» است و ما می خواهیم تعامل پیچیده تری بین زمینه چپ و راست داشته باشیم. + + + +### BERT + + +مدل BERT از این نظر شبیه word2vec است که ما یک وظیفه «پر کردن جای خالی» داریم. با این حال، در word2vec ما پیش بینی های خطی داشتیم، در حالی که در BERT یک دگرگون‌ساز بزرگ وجود دارد که می تواند زمینه های بیشتری را مشاهده کند. برای آموزش، ما ۱۵٪ از نشانه ها را می پوشانیم و سعی می کنیم جای خالی را پیش بینی کنیم. + +به راحتی در مقیاس بزرگ قابل استفاده است (RoBERTa) + +- هدف BERT را قبل از آموزش ساده کنید +- مقیاس اندازه دسته را افزایش دهید +- روی مقادیر زیادی GPU آموزش دهید +- حتی روی متن بیشتر آموزش دهید + +حتی پیشرفت‌های بزرگتری روی عملکرد BERT - امروزه عملکرد در وظیفه «سوال و پاسخ» فوق انسانی است. + + +## [پیش آموزش برای ‫طبيعی‬ ‫زبان‬ ‫پردازش‬](https://www.youtube.com/watch?v=6D4EWKJgNn0&t=4963s) + +بیایید نگاهی سریع به رویکردهای مختلف پیش از آموزش نظارت بر خود بیندازیم که برای ‫طبيعی‬ ‫زبان‬ ‫پردازش تحقیق شده اند. + +- XLNet: + به جای پیشبینی تمام ژتون‌های پوشیده شده به صورت مشروط مستقل، XLNet به صورت خود همبسته به ترتیب تصادفی ژتون‌های پوشیده شده را پیشبینی می‌کند. + +- SpanBERT + پوشاندن اسپن‌ها (توالی کلمات متوالی) به جای ژتون‌ها +- ELECTRA: + ما به جای پوشاندن کلمات، ژتون‌ها را با کلمات مشابه جایگزین می کنیم. سپس با تلاش برای پیش بینی اینکه آیا نشانه ها جایگزین شده اند یا نه، یک مسئله طبقه بندی باینری را حل می کنیم. +- ALBERT: + مدل سبک‌تر BERT: ما BERT را اصلاح می کنیم و با گره زدن وزنه ها روی لایه ها، آن را سبک تر می کنیم. این پارامترهای مدل و محاسبات مربوطه را کاهش می دهد. جالب اینجاست که نویسندگان ALBERT مجبور نبودند که در «دقت» زیاد مصالحه کنند. + +- XLM: + + + مدل چند زبانه BERT: ما به جای تغذیه یک متن انگلیسی، متن را چند زبان ارائه می دهیم. همانطور که انتظار می رود، ارتباطات بین زبانی را بهتر یاد گرفت. + +مهمترین نقاط کلیدی مدلهای ذکر شده در بالا عبارتند از: + +- اهداف پیش آموزش‌های زیاد و مختلف بسیار خوب کار می‌کنند! + +- ارتباط دوطرفه بین کلمات برای عمق مدل حیاتی است + +- دستاورد های بزرگی از پیش آموزش در مقیاس بزرگ به دست می‌آید، هنوز بدون هیچ محدودیت مشخصی + + +بیشتر مدل هایی که در بالا بحث شد برای حل مسئله طبقه بندی متن مهندسی شده اند. با این حال، برای حل مشکل تولید متن، جایی که ما به ترتیب و مانند مدل «seq2seq» خروجی تولید می کنیم، به روش کمی متفاوت قبل از آموزش نیاز داریم. + + + +### پیش آموزش برای نسل مشروط: BART و T5 + +مدل BART: پیش آموزش مدل های «seq2seq» توسط متن بدون نویز + +در مدل BART، برای پیش آموزش، ما یک جمله را می گیریم و آن را با پوشاندن تصادفی ژتون‌ها خراب می کنیم. به جای پیش بینی ژتون‌های پوشیده شده (مانند هدف BERT)، ما کل توالی خراب را بگیریم و سعی می کنیم کل توالی صحیح را پیش بینی کنیم. + +این رویکرد پیش آموز «seq2seq» به ما انعطاف پذیری در طراحی رویه خراب کردن متن را می دهد. ما می توانیم جملات را بُر بزنیم، عبارات را حذف کنیم، عبارات جدیدی معرفی کنیم، و غیره. + +مدل BART می توانست با RoBERTa در کارهای SQUAD و GLUE مطابقت داشته باشد. با این حال، این روش جدید SOTA در زمینه خلاصه سازی، گفتگو و مجموعه داده های انتزاعی پرسش و پاسخ بود. این نتایج انگیزه ما را برای BART تقویت می کند، که در انجام کارهای تولید متن بهتر از BERT / RoBERTa باشیم. + + + + +### بعضی از سوالات باز در پردازش زبان طبیعی + +- چگونه باید دانش جهانی را با هم ادغام کنیم +- چگونه اسناد طولانی را مدلسازی می کنیم؟ (مدل های بر پایه BERT معمولا ۵۱۲ ژتون دارند) +- چگونه یادگیری چند وظیفه ای را به بهترین وجه انجام می دهیم؟ +- آیا می توانیم با داده کمتری تنظیم دقیق کنیم؟ +- آیا این مدل ها واقعاً زبان را درک می کنند؟ + +### خلاصه + +- مدل های آموزشی بر روی تعداد زیادی از داده ها، مدل سازی صریح ساختار زبانی را به راحتی شکست می دهد. + +از دیدگاه اریبی واریانس، دگرگون‌سازها مدل هایی با اریبی کم (بسیار رسا) هستند. تغذیه متن های متناسب با این مدل ها بهتر از مدل سازی صریح ساختار زبانی (اریبی زیاد) است. معماری ها باید فشرده سازی توالی ها را از طریق گلوگاه ها انجام دهند. + +- مدل ها می توانند با پیش بینی کلمات در متن بدون برچسب، چیزهای زیادی در مورد زبان یاد بگیرند. به نظر می رسد این یک هدف یادگیری بدون نظارت عالی است. تنظیم دقیق برای کارهای خاص پس از آن آسان است + +- متن دو زبانه بسیار مهم است + + + +### بینش بیشتر از سوالات بعد از کلاس: + +چه روش‌هایی برای تعیین کمیت «درک زبان» وجود دارد؟ از کجا می دانیم که این مدل ها واقعاً زبان درک می کنند؟ + +«جایزه در چمدان قرار نگرفت زیرا بسیار بزرگ بود»: حل ارجاع به «آن» در این جمله برای ماشینها مشکل است. انسانها در این کار تبحر دارند. یک مجموعه داده وجود دارد که از چنین مثالهای دشواری تشکیل شده و انسانها عملکرد ۹۵ درصدی در آن مجموعه داده دارند. قبل از انقلابی که توسط دگرگون ساز‌ها ایجاد شده بود، برنامه های رایانه ای عملکردی فقط در حدود ۶۰٪ در این مجموه داده به دست می آوردند. مدلهای مدرن دگرگون‌سازها قادر به دستیابی به بیش از ۹۰٪ ای در آن مجموعه داده هستند. این نشان می دهد که این مدلها فقط داده‌ها را حفظ / استخراج نکرده اند بلکه مفهایم و اشیای زبانی را از طریق الگوهای آماری یادگرفته‌اند. + + +#### Grounded Language + +جالب توجه است که مدرس (مایک لوئیس ، محقق دانشمند ، FAIR) در حال کار بر روی مفهومی به نام «Grounded Language» است. هدف از این زمینه تحقیق ایجاد مکالمه کننده‌ای است که قادر به صحبت دوستانه و کوتاه (چیت چت) یا مذاکره باشد. گفتگو و مذاکره وظایفی انتزاعی با اهداف نامشخص در مقایسه با طبقه بندی متن یا خلاصه متن است. + + +#### آیا می توانیم ارزیابی کنیم که آیا این مدل همین الان دانش جهانی دارد؟ + +«دانش جهانی» مفهومی انتزاعی است. می توانیم با پرسیدن سوالات بسیار ساده در سطوح ابتدایی از موضوعاتی که به آن علاقه مندیم، سطح علم مدل‌های خود را تست کنیم. مدل هایی همانند BERT، RoBERTA و T5 میلیاردها پارامتر دارند و با توجه به اینکه این مدل ها روی مجموعه عظیمی از متن اطلاعاتی مانند ویکی پدیا آموزش دیده اند، آنها حقایق را با استفاده از پارامترهای خود به خاطر می سپارند و می توانند به سوالات ما پاسخ دهند. علاوه بر این، ما همچنین می توانیم آزمایش مشابه دانش را قبل و بعد از تنظیم دقیق یک مدل روی برخی از کارها انجام دهیم. این می تواند به ما درک کند که مدل چه مقدار اطلاعات را «فراموش» کرده است. + + From 7ac84dff03b3b99ab22113da78bc6372d9a4df3e Mon Sep 17 00:00:00 2001 From: thisistayeb <69354587+thisistayeb@users.noreply.github.com> Date: Sat, 10 Oct 2020 10:52:25 +0300 Subject: [PATCH 03/12] Delete 12-2.md --- docs/fa/week12/12-2.md | 617 ----------------------------------------- 1 file changed, 617 deletions(-) delete mode 100644 docs/fa/week12/12-2.md diff --git a/docs/fa/week12/12-2.md b/docs/fa/week12/12-2.md deleted file mode 100644 index bd670b86e..000000000 --- a/docs/fa/week12/12-2.md +++ /dev/null @@ -1,617 +0,0 @@ ---- -lang: fa -lang-ref: ch.12-2 -title: مدل های زبان رمزگشا -lecturer: Mike Lewis -authors: Trevor Mitchell, Andrii Dobroshynskyi, Shreyas Chandrakaladharan, Ben Wolfson -date: 20 Apr 2020 -translator: Tayeb Pourebrahim ---- -
- - - -## [الگوریتم جستجو پرتو محلی](https://www.youtube.com/watch?v=6D4EWKJgNn0&t=2732s) -الگوریتم جستجو پرتو محلی یک تکنیک دیگر برای رمزگشایی از مدل زبانی و ایجاد متن است. در هر مرحله، الگوریتم ردپای مسیر $k$ محتمل‌ترین (بهترین) ترجمه های جزئی(فرضیه‌ها) دنبال می‌کند. امتیاز هر فرضیه برابر با لگاریتم احتمال آن است. -الگوریتم فرضیه های با بالاترین نمره را انتخاب می کند. -
-
-تصویر اول: رمزگشایی پرتو محلی -
- - - -درخت پرتو تا چه عمقی منشعب می شود؟ - -درخت پرتو تا زمانی که به ژتون انتهای جمله برسد، ادامه می یابد. به محض خروجی ژتون انتهای جمله، فرضیه تمام می شود. - -چرا (در NMT) اندازه های بسیار بزرگ پرتو اغلب منجر به ترجمه های خالی می شود؟ - -در زمان آموزش، الگوریتم اغلب از پرتو استفاده نمی کند، زیرا بسیار گران است. به جای استفاده از فاکتورگیری خودهمبسته (که از خروجی درست پیشبینی $n+1$ کلمه‌ی اول به دست آوردیم). این مدل در هنگام آموزش در معرض اشتباهات خود قرار ندارد، بنابراین ممکن است که «مُهملاتی» در پرتو نشان داده شود. - -خلاصه: جستجوی پرتو را تا زمانی که تمام $K$ فرضیه ژتون پایانی را تولید کنند یا به حد حداکثر رمزگشایی T برسند ادامه پیدا می‌کند. - - - - -### نمونه گیری -ما ممکن است محتمل‌ترین دنباله را نخواهیم. در عوض می توانیم از توزیع مدل نمونه بگیریم. - -با این حال، نمونه گیری از توزیع مدل مشکل خاص خود را ایجاد می کند. هنگامی که از یک انتخاب «بد» نمونه برداری شد، مدل در وضعیتی است که در طول آموزش هرگز با آن روبرو نشده است، احتمال ادامه ارزیابی «بد» افزایش میابد. بنابراین الگوریتم می تواند در حلقه‌های بازخورد وحشتناک گیر کند. - - -### نمونه گیری کی-بالا -یک تکنیک نمونه گیری خالص که توزیع را به $K$ بهترین‌ها کوتاه می‌کنیم و سپس دوباره نرمالایز می‌کنیم و از توزیع نمونه می‌گیریم. -
-
-تصویر دوم: نمونه گیری کی-بالا -
- - - -### سوال: چرا نمونه گیری کی-بالا به خوبی کار می‌کند؟ - -این تکنیک به این دلیل خوب کار می‌کند که اساساً سعی می شود مانع از افتادن از منیفولد زبان خوب شود وقتی که ما فقط از سر توزیع استفاده کنیم و دم توزیع را حذف می‌کنیم. - -## ارزیابی تولید متن - -ارزیابی مدل زبان به سادگی نیاز به لگاریتم درست نمایی دیتای بیرون نگه داشته (یا دادهای تست) دارد. با این حال، ارزیابی متن دشوار است. معیار های کلمات متداول همپوشانی با الگوریتم‌های مرجع (همانند BLEU، ROUGE و ...) دارد، اما آنها مشکلات خاص خود را دارند. - - - - -## مدل‌های ترتیب به ترتیب - - -### مدل‌های زبان مشروط - -مدل های زبان مشروط برای تولید نمونه های تصادفی انگلیسی مفید نیستند، اما برای تولید متنی با یک ورودی، مفید هستند. - -مثال‌ها: - -- با توجه به یک جمله فرانسه، ترجمه انگلیسی را تولید کنیم. -- با توجه به یک سند، خلاصه را تولید کنیم. -- با توجه به یک دیالوگ، پاسخ بعدی را تولید کنیم. -- با توجه به یک سوال، جواب را تولید کنیم. - - -### مدل‌های ترتیب به ترتیب - -به طور کلی، متن ورودی رمزگذاری شده است. این نتیجه جاسازی شده به عنوان "بردار فکر" شناخته می شود، که سپس به رمزگشای منتقل می شود تا کلمه به کلمه ژوتن‌ها را تولید کند. - -center> -
-تصویر سوم: بردار فکر - - - -### دگرگون ساز ترتیب به ترتیب - -نوع ترتیب به ترتیب دگرگون ساز، دو نوع دارد: - -۱. نوع رمزگذار - خود-توجه‌ای پوشیده نیست بنابراین همه ژتون‌های ورودی می توانند به ژتون‌های دیگر ورودی نگاه کنند - -۲. نوع رمزگشا - جدای استفاده از استفاده «توجه» روی خودش، روی تمام ورودی‌ها هم استفاده می‌شود - -
-
-تصویر چهارم: دگرگون ساز ترتیب به ترتیب -
- -هر ژتون در خروجی با هر ژتون قبلی در خروجی و همچنین با هر کلمه در ورودی ارتباط مستقیم دارد. اتصالات این مدل ها را بسیار رسا و قدرتمند می کند. این دگرگون‌سازها بهبودهایی در امتیاز ترجمه نسبت به مدل‌های بازگشتی و کانولوشنی ایجاد کردند. - - -## [ترجمه مجدد] (https://www.youtube.com/watch?v=6D4EWKJgNn0&t=3811s) -هنگام آموزش این مدل ها، ما معمولاً به مقدار زیادی متن برچسب خورده وابسته‌ایم. متن اقدامات پارلمان اروپا منبع خوبی از دیتا است - این متن به صورت دستی به زبان‌های مختلفی ترجمه شده است که می‌توانیم به عنوان ورودی‌ها و خروجی‌‌های مدل استفاده کنیم. - - -### مسائل - -- همه زبانها در پارلمان اروپا نمایندگی ندارند، به این معنی که الزاماً برای همه زبان هایی که ممکن است به آنها علاقه داشته باشیم جفت ترجمه نخواهیم داشت. چگونه متنی را برای آموزش به زبانی پیدا کنیم که لزوماً نتوانیم داده ها را برای آن بدست آوریم؟ - -- از آنجا که مدل هایی مانند دگرگون‌سازها با داده های بیشتر عملکرد بهتری دارند، چگونه می‌توان از متن تک زبانه به طور کارآمد استفاده کرد ، * یعنی * بدون جفت ورودی / خروجی؟ - -فرض کنید می خواهیم مدلی را ترجمه کنیم که آلمانی را به انگلیسی ترجمه کند. ایده ترجمه مجدد این است که ابتدا یک مدل معکوس انگلیسی به آلمانی آموزش دهیم - -- با استفاده از برخی داده های دو متنی محدود می توانیم جملات مشابه را به دو زبان مختلف بدست آوریم -- هنگامی که ما مدل انگلیسی به آلمانی را داریم، بسیاری از کلمات یک زبانه را از انگلیسی به آلمانی ترجمه کنید. - -در آخر، آموزش مدل آلمانی به انگلیسی با استفاده از کلماتی که در مراحل قبلی «ترجمه مجدد» شده است، انجام می‌دهیم. ما توجه داریم که: - -- مهم نیست که مدل معکوس چقدر خوب باشد - ما ممکن است ترجمه های آلمانی نویزی داشته باشیم اما در نهایت ترجمه دقیق انگلیسی داشته باشیم. -- ما باید یاد بگیریم که انگلیسی را فراتر از داده های جفت های انگلیسی / آلمانی (قبلاً ترجمه شده) درک کنیم - از مقادیر زیادی [متن] انگلیسی تک زبانه استفاده کنید - - -### ترجمه مجدد تکرار شده - -- ما می توانیم روش ترجمه مجدد را تکرار کنیم تا حتی داده های دو متنی بیشتری تولید کنیم و عملکرد بسیار بهتری داشته باشیم - فقط با استفاده از داده های تک زبانه آموزش را ادامه دهید -- وقتی داده موازی زیادی نباشد، خیلی کمک می کند - -## ترجمه ماشینی چند زبانه عظیم - -
-
-تصویر پنجم: ترجمه ماشینی چند زبانه -
- - -## یادگیری بدون نظارت پردازش زبان‌های طبیعی - -مقادیر زیادی از متن بدون هیچ برچسب وجود دارد و داده های نظارت شده کمی وجود دارد. چقدر می توان فقط با خواندن متن بدون برچسب در مورد زبان یاد گرفت؟ - - -### `word2vec` - -شهود - اگر کلمات در متن نزدیک به هم ظاهر شوند، احتمالاً با هم مرتبط هستند، بنابراین امیدواریم که فقط با نگاه کردن به متن انگلیسی بدون برچسب، معنی آنها را یاد بگیریم. - -- هدف یادگیری فضای برداری نماینده های کلمات است (یادگیری جاسازی‌ها) - -وظیفه قبل از آموزش - مقداری کلمه را مخفی کنید و از کلمات همسایه برای پر کردن جای خالی استفاده کنید. - -
-
-تصویر هفتم: word2vec پوشاندن بصری -
- - - - -به عنوان مثال، در اینجا ایده این است که "شاخ" و "موی نقره ای" بیش از برخی حیوانات دیگر در متن "تک شاخ" ظاهر می شوند. - -کلمات را بگیرید و یک برون‌فکنی خطی اعمال کنید -
-
-تصویر هشتم: word2vec جاسازی ها -
- -می خواهیم بدانیم - -$$ -p(\texttt{unicorn} \mid \texttt{These silver-haired ??? were previously unknown}) -$$ - -$$ -p(x_n \mid x_{-n}) = \text{softmax}(\text{E}f(x_{-n}))) -$$ - -جاسازی کلمه‌ها دارای ساختار است. - -
-
-تصویر نهم: مثالی برای ساختار جاسازی -
- -- ایده این است که اگر ما جاسازی را برای "پادشاه" پس از آموزش بگیریم و جاسازی را برای "زن" اضافه کنیم ، یک جاسازی بسیار نزدیک به "ملکه" بدست خواهیم آورد -- برخی اختلافات معنی دار بین بردارها را نشان می دهد - - -### سوال: آیا نماینده کلمه مستقل از زمینه است یا وابسته به زمینه است؟ - -مستقل و هیچ ایده ای درباره ارتباط آنها با کلمات دیگر ندارند - - -### سوال: نمونه ای از وضعیتی که این مدل در آن گیر می کند چه خواهد بود؟ - -تفسیر کلمات بستگی زیادی به زمینه دارد. بنابراین در نمونه کلمات مبهم - کلماتی که ممکن است چندین معنی داشته باشند - این مدل با مشکل روبرو خواهد شد زیرا بردارهای جاسازی، زمینه مورد نیاز که برای درک صحیح کلمه را درک نمی کنند. - - - -### GPT - -برای اضافه کردن زمینه به مدل، می توانیم یک مدل زبان مشروط را آموزش دهیم. سپس با توجه به این مدل زبان، که کلمه را در هر مرحله پیش بینی می کند، هر یک از خروجی های مدل را با ویژگی دیگری جایگزین کنید. - -- پیش آموزش- کلمه بعدی را پیش بینی کنید -- تنظیم دقیق - تغییر به یک کار خاص. مثال ها: - - پیش بینی کنید اسم است و یا صفت - - با توجه به برخی از متن های متشکل از بررسی سایت آمازون، امتیاز را برای بررسی پیش بینی کنید - -این روش خوب است زیرا ما می توانیم مدل را مجدداً استفاده کنیم. ما یک مدل بزرگ را از قبل آموزش می دهیم و می توانیم با کارهای دیگر هماهنگ کنیم. - -### ELMo - -GPT فقط زمینه سمت چپ را در نظر می گیرد، این بدان معناست که مدل نمی تواند به هیچ کلمه ای در آینده وابسته باشد - این کاری را که مدل می تواند انجام دهد بسیار محدود می کند. - -در اینجا رویکرد آموزش دو مدل زبان است - -- یکی در متن چپ به راست -- یکی در متن راست به چپ -- برای ارائه دادن کلمه، خروجی دو مدل را بهم میچسبانیم. اکنون می تواند به زمینه راست و چپ بستگی داشته باشد. - -این هنوز یک ترکیب «کم عمق» است و ما می خواهیم تعامل پیچیده تری بین زمینه چپ و راست داشته باشیم. - - - -### BERT - - -مدل BERT از این نظر شبیه word2vec است که ما یک وظیفه «پر کردن جای خالی» داریم. با این حال، در word2vec ما پیش بینی های خطی داشتیم، در حالی که در BERT یک دگرگون‌ساز بزرگ وجود دارد که می تواند زمینه های بیشتری را مشاهده کند. برای آموزش، ما ۱۵٪ از نشانه ها را می پوشانیم و سعی می کنیم جای خالی را پیش بینی کنیم. - -به راحتی در مقیاس بزرگ قابل استفاده است (RoBERTa) - -- هدف BERT را قبل از آموزش ساده کنید -- مقیاس اندازه دسته را افزایش دهید -- روی مقادیر زیادی GPU آموزش دهید -- حتی روی متن بیشتر آموزش دهید - -حتی پیشرفت‌های بزرگتری روی عملکرد BERT - امروزه عملکرد در وظیفه «سوال و پاسخ» فوق انسانی است. - - -## [پیش آموزش برای ‫طبيعی‬ ‫زبان‬ ‫پردازش‬](https://www.youtube.com/watch?v=6D4EWKJgNn0&t=4963s) - -بیایید نگاهی سریع به رویکردهای مختلف پیش از آموزش نظارت بر خود بیندازیم که برای ‫طبيعی‬ ‫زبان‬ ‫پردازش تحقیق شده اند. - -- XLNet: - به جای پیشبینی تمام ژتون‌های پوشیده شده به صورت مشروط مستقل، XLNet به صورت خود همبسته به ترتیب تصادفی ژتون‌های پوشیده شده را پیشبینی می‌کند. - -- SpanBERT - پوشاندن اسپن‌ها (توالی کلمات متوالی) به جای ژتون‌ها -- ELECTRA: - ما به جای پوشاندن کلمات، ژتون‌ها را با کلمات مشابه جایگزین می کنیم. سپس با تلاش برای پیش بینی اینکه آیا نشانه ها جایگزین شده اند یا نه، یک مسئله طبقه بندی باینری را حل می کنیم. -- ALBERT: - مدل سبک‌تر BERT: ما BERT را اصلاح می کنیم و با گره زدن وزنه ها روی لایه ها، آن را سبک تر می کنیم. این پارامترهای مدل و محاسبات مربوطه را کاهش می دهد. جالب اینجاست که نویسندگان ALBERT مجبور نبودند که در «دقت» زیاد مصالحه کنند. - -- XLM: - - - مدل چند زبانه BERT: ما به جای تغذیه یک متن انگلیسی، متن را چند زبان ارائه می دهیم. همانطور که انتظار می رود، ارتباطات بین زبانی را بهتر یاد گرفت. - -مهمترین نقاط کلیدی مدلهای ذکر شده در بالا عبارتند از: - -- اهداف پیش آموزش‌های زیاد و مختلف بسیار خوب کار می‌کنند! - -- ارتباط دوطرفه بین کلمات برای عمق مدل حیاتی است - -- دستاورد های بزرگی از پیش آموزش در مقیاس بزرگ به دست می‌آید، هنوز بدون هیچ محدودیت مشخصی - - -بیشتر مدل هایی که در بالا بحث شد برای حل مسئله طبقه بندی متن مهندسی شده اند. با این حال، برای حل مشکل تولید متن، جایی که ما به ترتیب و مانند مدل «seq2seq» خروجی تولید می کنیم، به روش کمی متفاوت قبل از آموزش نیاز داریم. - - - -### پیش آموزش برای نسل مشروط: BART و T5 - -مدل BART: پیش آموزش مدل های «seq2seq» توسط متن بدون نویز - -در مدل BART، برای پیش آموزش، ما یک جمله را می گیریم و آن را با پوشاندن تصادفی ژتون‌ها خراب می کنیم. به جای پیش بینی ژتون‌های پوشیده شده (مانند هدف BERT)، ما کل توالی خراب را بگیریم و سعی می کنیم کل توالی صحیح را پیش بینی کنیم. - -این رویکرد پیش آموز «seq2seq» به ما انعطاف پذیری در طراحی رویه خراب کردن متن را می دهد. ما می توانیم جملات را بُر بزنیم، عبارات را حذف کنیم، عبارات جدیدی معرفی کنیم، و غیره. - -مدل BART می توانست با RoBERTa در کارهای SQUAD و GLUE مطابقت داشته باشد. با این حال، این روش جدید SOTA در زمینه خلاصه سازی، گفتگو و مجموعه داده های انتزاعی پرسش و پاسخ بود. این نتایج انگیزه ما را برای BART تقویت می کند، که در انجام کارهای تولید متن بهتر از BERT / RoBERTa باشیم. - - - - -### بعضی از سوالات باز در پردازش زبان طبیعی - -- چگونه باید دانش جهانی را با هم ادغام کنیم -- چگونه اسناد طولانی را مدلسازی می کنیم؟ (مدل های بر پایه BERT معمولا ۵۱۲ ژتون دارند) -- چگونه یادگیری چند وظیفه ای را به بهترین وجه انجام می دهیم؟ -- آیا می توانیم با داده کمتری تنظیم دقیق کنیم؟ -- آیا این مدل ها واقعاً زبان را درک می کنند؟ - -### خلاصه - -- مدل های آموزشی بر روی تعداد زیادی از داده ها، مدل سازی صریح ساختار زبانی را به راحتی شکست می دهد. - -از دیدگاه اریبی واریانس، دگرگون‌سازها مدل هایی با اریبی کم (بسیار رسا) هستند. تغذیه متن های متناسب با این مدل ها بهتر از مدل سازی صریح ساختار زبانی (اریبی زیاد) است. معماری ها باید فشرده سازی توالی ها را از طریق گلوگاه ها انجام دهند. - -- مدل ها می توانند با پیش بینی کلمات در متن بدون برچسب، چیزهای زیادی در مورد زبان یاد بگیرند. به نظر می رسد این یک هدف یادگیری بدون نظارت عالی است. تنظیم دقیق برای کارهای خاص پس از آن آسان است - -- متن دو زبانه بسیار مهم است - - - -### بینش بیشتر از سوالات بعد از کلاس: - -چه روش‌هایی برای تعیین کمیت «درک زبان» وجود دارد؟ از کجا می دانیم که این مدل ها واقعاً زبان درک می کنند؟ - -«جایزه در چمدان قرار نگرفت زیرا بسیار بزرگ بود»: حل ارجاع به «آن» در این جمله برای ماشینها مشکل است. انسانها در این کار تبحر دارند. یک مجموعه داده وجود دارد که از چنین مثالهای دشواری تشکیل شده و انسانها عملکرد ۹۵ درصدی در آن مجموعه داده دارند. قبل از انقلابی که توسط دگرگون ساز‌ها ایجاد شده بود، برنامه های رایانه ای عملکردی فقط در حدود ۶۰٪ در این مجموه داده به دست می آوردند. مدلهای مدرن دگرگون‌سازها قادر به دستیابی به بیش از ۹۰٪ ای در آن مجموعه داده هستند. این نشان می دهد که این مدلها فقط داده‌ها را حفظ / استخراج نکرده اند بلکه مفهایم و اشیای زبانی را از طریق الگوهای آماری یادگرفته‌اند. - - -#### Grounded Language - -جالب توجه است که مدرس (مایک لوئیس ، محقق دانشمند ، FAIR) در حال کار بر روی مفهومی به نام «Grounded Language» است. هدف از این زمینه تحقیق ایجاد مکالمه کننده‌ای است که قادر به صحبت دوستانه و کوتاه (چیت چت) یا مذاکره باشد. گفتگو و مذاکره وظایفی انتزاعی با اهداف نامشخص در مقایسه با طبقه بندی متن یا خلاصه متن است. - - -#### آیا می توانیم ارزیابی کنیم که آیا این مدل همین الان دانش جهانی دارد؟ - -«دانش جهانی» مفهومی انتزاعی است. می توانیم با پرسیدن سوالات بسیار ساده در سطوح ابتدایی از موضوعاتی که به آن علاقه مندیم، سطح علم مدل‌های خود را تست کنیم. مدل هایی همانند BERT، RoBERTA و T5 میلیاردها پارامتر دارند و با توجه به اینکه این مدل ها روی مجموعه عظیمی از متن اطلاعاتی مانند ویکی پدیا آموزش دیده اند، آنها حقایق را با استفاده از پارامترهای خود به خاطر می سپارند و می توانند به سوالات ما پاسخ دهند. علاوه بر این، ما همچنین می توانیم آزمایش مشابه دانش را قبل و بعد از تنظیم دقیق یک مدل روی برخی از کارها انجام دهیم. این می تواند به ما درک کند که مدل چه مقدار اطلاعات را «فراموش» کرده است. - - From 01bab75647685be1cd6652d900a42b889a0d3481 Mon Sep 17 00:00:00 2001 From: Alfredo Canziani Date: Fri, 16 Oct 2020 17:00:19 -0400 Subject: [PATCH 04/12] Update 12-1.md --- docs/fa/week12/12-1.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/fa/week12/12-1.md b/docs/fa/week12/12-1.md index 378c9214b..265a15982 100644 --- a/docs/fa/week12/12-1.md +++ b/docs/fa/week12/12-1.md @@ -6,8 +6,9 @@ lecturer: Mike Lewis authors: Jiayu Qiu, Yuhong Zhu, Lyuang Fu, Ian Leefmans date: 20 Apr 2020 translator: Tayeb Pourebrahim +translation-date: 10 Oct 2020 --- -
+ +## [الگوریتم جستجو پرتو محلی](https://www.youtube.com/watch?v=6D4EWKJgNn0&t=2732s) +الگوریتم جستجو پرتو محلی یک تکنیک دیگر برای رمزگشایی از مدل زبانی و ایجاد متن است. در هر مرحله، الگوریتم ردپای مسیر $k$ محتمل‌ترین (بهترین) ترجمه های جزئی(فرضیه‌ها) دنبال می‌کند. امتیاز هر فرضیه برابر با لگاریتم احتمال آن است. +الگوریتم فرضیه های با بالاترین نمره را انتخاب می کند. +
+
+تصویر اول: رمزگشایی پرتو محلی +
+ + + +درخت پرتو تا چه عمقی منشعب می شود؟ + +درخت پرتو تا زمانی که به ژتون انتهای جمله برسد، ادامه می یابد. به محض خروجی ژتون انتهای جمله، فرضیه تمام می شود. + +چرا (در NMT) اندازه های بسیار بزرگ پرتو اغلب منجر به ترجمه های خالی می شود؟ + +در زمان آموزش، الگوریتم اغلب از پرتو استفاده نمی کند، زیرا بسیار گران است. به جای استفاده از فاکتورگیری خودهمبسته (که از خروجی درست پیشبینی $n+1$ کلمه‌ی اول به دست آوردیم). این مدل در هنگام آموزش در معرض اشتباهات خود قرار ندارد، بنابراین ممکن است که «مُهملاتی» در پرتو نشان داده شود. + +خلاصه: جستجوی پرتو را تا زمانی که تمام $K$ فرضیه ژتون پایانی را تولید کنند یا به حد حداکثر رمزگشایی T برسند ادامه پیدا می‌کند. + + + + +### نمونه گیری +ما ممکن است محتمل‌ترین دنباله را نخواهیم. در عوض می توانیم از توزیع مدل نمونه بگیریم. + +با این حال، نمونه گیری از توزیع مدل مشکل خاص خود را ایجاد می کند. هنگامی که از یک انتخاب «بد» نمونه برداری شد، مدل در وضعیتی است که در طول آموزش هرگز با آن روبرو نشده است، احتمال ادامه ارزیابی «بد» افزایش میابد. بنابراین الگوریتم می تواند در حلقه‌های بازخورد وحشتناک گیر کند. + + +### نمونه گیری کی-بالا +یک تکنیک نمونه گیری خالص که توزیع را به $K$ بهترین‌ها کوتاه می‌کنیم و سپس دوباره نرمالایز می‌کنیم و از توزیع نمونه می‌گیریم. +
+
+تصویر دوم: نمونه گیری کی-بالا +
+ + + +### سوال: چرا نمونه گیری کی-بالا به خوبی کار می‌کند؟ + +این تکنیک به این دلیل خوب کار می‌کند که اساساً سعی می شود مانع از افتادن از منیفولد زبان خوب شود وقتی که ما فقط از سر توزیع استفاده کنیم و دم توزیع را حذف می‌کنیم. + +## ارزیابی تولید متن + +ارزیابی مدل زبان به سادگی نیاز به لگاریتم درست نمایی دیتای بیرون نگه داشته (یا دادهای تست) دارد. با این حال، ارزیابی متن دشوار است. معیار های کلمات متداول همپوشانی با الگوریتم‌های مرجع (همانند BLEU، ROUGE و ...) دارد، اما آنها مشکلات خاص خود را دارند. + + + + +## مدل‌های ترتیب به ترتیب + + +### مدل‌های زبان مشروط + +مدل های زبان مشروط برای تولید نمونه های تصادفی انگلیسی مفید نیستند، اما برای تولید متنی با یک ورودی، مفید هستند. + +مثال‌ها: + +- با توجه به یک جمله فرانسه، ترجمه انگلیسی را تولید کنیم. +- با توجه به یک سند، خلاصه را تولید کنیم. +- با توجه به یک دیالوگ، پاسخ بعدی را تولید کنیم. +- با توجه به یک سوال، جواب را تولید کنیم. + + +### مدل‌های ترتیب به ترتیب + +به طور کلی، متن ورودی رمزگذاری شده است. این نتیجه جاسازی شده به عنوان "بردار فکر" شناخته می شود، که سپس به رمزگشای منتقل می شود تا کلمه به کلمه ژوتن‌ها را تولید کند. + +center> +
+تصویر سوم: بردار فکر + + + +### دگرگون ساز ترتیب به ترتیب + +نوع ترتیب به ترتیب دگرگون ساز، دو نوع دارد: + +۱. نوع رمزگذار - خود-توجه‌ای پوشیده نیست بنابراین همه ژتون‌های ورودی می توانند به ژتون‌های دیگر ورودی نگاه کنند + +۲. نوع رمزگشا - جدای استفاده از استفاده «توجه» روی خودش، روی تمام ورودی‌ها هم استفاده می‌شود + +
+
+تصویر چهارم: دگرگون ساز ترتیب به ترتیب +
+ +هر ژتون در خروجی با هر ژتون قبلی در خروجی و همچنین با هر کلمه در ورودی ارتباط مستقیم دارد. اتصالات این مدل ها را بسیار رسا و قدرتمند می کند. این دگرگون‌سازها بهبودهایی در امتیاز ترجمه نسبت به مدل‌های بازگشتی و کانولوشنی ایجاد کردند. + + +## [ترجمه مجدد] (https://www.youtube.com/watch?v=6D4EWKJgNn0&t=3811s) +هنگام آموزش این مدل ها، ما معمولاً به مقدار زیادی متن برچسب خورده وابسته‌ایم. متن اقدامات پارلمان اروپا منبع خوبی از دیتا است - این متن به صورت دستی به زبان‌های مختلفی ترجمه شده است که می‌توانیم به عنوان ورودی‌ها و خروجی‌‌های مدل استفاده کنیم. + + +### مسائل + +- همه زبانها در پارلمان اروپا نمایندگی ندارند، به این معنی که الزاماً برای همه زبان هایی که ممکن است به آنها علاقه داشته باشیم جفت ترجمه نخواهیم داشت. چگونه متنی را برای آموزش به زبانی پیدا کنیم که لزوماً نتوانیم داده ها را برای آن بدست آوریم؟ + +- از آنجا که مدل هایی مانند دگرگون‌سازها با داده های بیشتر عملکرد بهتری دارند، چگونه می‌توان از متن تک زبانه به طور کارآمد استفاده کرد ، * یعنی * بدون جفت ورودی / خروجی؟ + +فرض کنید می خواهیم مدلی را ترجمه کنیم که آلمانی را به انگلیسی ترجمه کند. ایده ترجمه مجدد این است که ابتدا یک مدل معکوس انگلیسی به آلمانی آموزش دهیم + +- با استفاده از برخی داده های دو متنی محدود می توانیم جملات مشابه را به دو زبان مختلف بدست آوریم +- هنگامی که ما مدل انگلیسی به آلمانی را داریم، بسیاری از کلمات یک زبانه را از انگلیسی به آلمانی ترجمه کنید. + +در آخر، آموزش مدل آلمانی به انگلیسی با استفاده از کلماتی که در مراحل قبلی «ترجمه مجدد» شده است، انجام می‌دهیم. ما توجه داریم که: + +- مهم نیست که مدل معکوس چقدر خوب باشد - ما ممکن است ترجمه های آلمانی نویزی داشته باشیم اما در نهایت ترجمه دقیق انگلیسی داشته باشیم. +- ما باید یاد بگیریم که انگلیسی را فراتر از داده های جفت های انگلیسی / آلمانی (قبلاً ترجمه شده) درک کنیم - از مقادیر زیادی [متن] انگلیسی تک زبانه استفاده کنید + + +### ترجمه مجدد تکرار شده + +- ما می توانیم روش ترجمه مجدد را تکرار کنیم تا حتی داده های دو متنی بیشتری تولید کنیم و عملکرد بسیار بهتری داشته باشیم - فقط با استفاده از داده های تک زبانه آموزش را ادامه دهید +- وقتی داده موازی زیادی نباشد، خیلی کمک می کند + +## ترجمه ماشینی چند زبانه عظیم + +
+
+تصویر پنجم: ترجمه ماشینی چند زبانه +
+ + +## یادگیری بدون نظارت پردازش زبان‌های طبیعی + +مقادیر زیادی از متن بدون هیچ برچسب وجود دارد و داده های نظارت شده کمی وجود دارد. چقدر می توان فقط با خواندن متن بدون برچسب در مورد زبان یاد گرفت؟ + + +### `word2vec` + +شهود - اگر کلمات در متن نزدیک به هم ظاهر شوند، احتمالاً با هم مرتبط هستند، بنابراین امیدواریم که فقط با نگاه کردن به متن انگلیسی بدون برچسب، معنی آنها را یاد بگیریم. + +- هدف یادگیری فضای برداری نماینده های کلمات است (یادگیری جاسازی‌ها) + +وظیفه قبل از آموزش - مقداری کلمه را مخفی کنید و از کلمات همسایه برای پر کردن جای خالی استفاده کنید. + +
+
+تصویر هفتم: word2vec پوشاندن بصری +
+ + + + +به عنوان مثال، در اینجا ایده این است که "شاخ" و "موی نقره ای" بیش از برخی حیوانات دیگر در متن "تک شاخ" ظاهر می شوند. + +کلمات را بگیرید و یک برون‌فکنی خطی اعمال کنید +
+
+تصویر هشتم: word2vec جاسازی ها +
+ +می خواهیم بدانیم + +$$ +p(\texttt{unicorn} \mid \texttt{These silver-haired ??? were previously unknown}) +$$ + +$$ +p(x_n \mid x_{-n}) = \text{softmax}(\text{E}f(x_{-n}))) +$$ + +جاسازی کلمه‌ها دارای ساختار است. + +
+
+تصویر نهم: مثالی برای ساختار جاسازی +
+ +- ایده این است که اگر ما جاسازی را برای "پادشاه" پس از آموزش بگیریم و جاسازی را برای "زن" اضافه کنیم ، یک جاسازی بسیار نزدیک به "ملکه" بدست خواهیم آورد +- برخی اختلافات معنی دار بین بردارها را نشان می دهد + + +### سوال: آیا نماینده کلمه مستقل از زمینه است یا وابسته به زمینه است؟ + +مستقل و هیچ ایده ای درباره ارتباط آنها با کلمات دیگر ندارند + + +### سوال: نمونه ای از وضعیتی که این مدل در آن گیر می کند چه خواهد بود؟ + +تفسیر کلمات بستگی زیادی به زمینه دارد. بنابراین در نمونه کلمات مبهم - کلماتی که ممکن است چندین معنی داشته باشند - این مدل با مشکل روبرو خواهد شد زیرا بردارهای جاسازی، زمینه مورد نیاز که برای درک صحیح کلمه را درک نمی کنند. + + + +### GPT + +برای اضافه کردن زمینه به مدل، می توانیم یک مدل زبان مشروط را آموزش دهیم. سپس با توجه به این مدل زبان، که کلمه را در هر مرحله پیش بینی می کند، هر یک از خروجی های مدل را با ویژگی دیگری جایگزین کنید. + +- پیش آموزش- کلمه بعدی را پیش بینی کنید +- تنظیم دقیق - تغییر به یک کار خاص. مثال ها: + - پیش بینی کنید اسم است و یا صفت + - با توجه به برخی از متن های متشکل از بررسی سایت آمازون، امتیاز را برای بررسی پیش بینی کنید + +این روش خوب است زیرا ما می توانیم مدل را مجدداً استفاده کنیم. ما یک مدل بزرگ را از قبل آموزش می دهیم و می توانیم با کارهای دیگر هماهنگ کنیم. + +### ELMo + +GPT فقط زمینه سمت چپ را در نظر می گیرد، این بدان معناست که مدل نمی تواند به هیچ کلمه ای در آینده وابسته باشد - این کاری را که مدل می تواند انجام دهد بسیار محدود می کند. + +در اینجا رویکرد آموزش دو مدل زبان است + +- یکی در متن چپ به راست +- یکی در متن راست به چپ +- برای ارائه دادن کلمه، خروجی دو مدل را بهم میچسبانیم. اکنون می تواند به زمینه راست و چپ بستگی داشته باشد. + +این هنوز یک ترکیب «کم عمق» است و ما می خواهیم تعامل پیچیده تری بین زمینه چپ و راست داشته باشیم. + + + +### BERT + + +مدل BERT از این نظر شبیه word2vec است که ما یک وظیفه «پر کردن جای خالی» داریم. با این حال، در word2vec ما پیش بینی های خطی داشتیم، در حالی که در BERT یک دگرگون‌ساز بزرگ وجود دارد که می تواند زمینه های بیشتری را مشاهده کند. برای آموزش، ما ۱۵٪ از نشانه ها را می پوشانیم و سعی می کنیم جای خالی را پیش بینی کنیم. + +به راحتی در مقیاس بزرگ قابل استفاده است (RoBERTa) + +- هدف BERT را قبل از آموزش ساده کنید +- مقیاس اندازه دسته را افزایش دهید +- روی مقادیر زیادی GPU آموزش دهید +- حتی روی متن بیشتر آموزش دهید + +حتی پیشرفت‌های بزرگتری روی عملکرد BERT - امروزه عملکرد در وظیفه «سوال و پاسخ» فوق انسانی است. + + +## [پیش آموزش برای ‫طبيعی‬ ‫زبان‬ ‫پردازش‬](https://www.youtube.com/watch?v=6D4EWKJgNn0&t=4963s) + +بیایید نگاهی سریع به رویکردهای مختلف پیش از آموزش نظارت بر خود بیندازیم که برای ‫طبيعی‬ ‫زبان‬ ‫پردازش تحقیق شده اند. + +- XLNet: + به جای پیشبینی تمام ژتون‌های پوشیده شده به صورت مشروط مستقل، XLNet به صورت خود همبسته به ترتیب تصادفی ژتون‌های پوشیده شده را پیشبینی می‌کند. + +- SpanBERT + پوشاندن اسپن‌ها (توالی کلمات متوالی) به جای ژتون‌ها +- ELECTRA: + ما به جای پوشاندن کلمات، ژتون‌ها را با کلمات مشابه جایگزین می کنیم. سپس با تلاش برای پیش بینی اینکه آیا نشانه ها جایگزین شده اند یا نه، یک مسئله طبقه بندی باینری را حل می کنیم. +- ALBERT: + مدل سبک‌تر BERT: ما BERT را اصلاح می کنیم و با گره زدن وزنه ها روی لایه ها، آن را سبک تر می کنیم. این پارامترهای مدل و محاسبات مربوطه را کاهش می دهد. جالب اینجاست که نویسندگان ALBERT مجبور نبودند که در «دقت» زیاد مصالحه کنند. + +- XLM: + + + مدل چند زبانه BERT: ما به جای تغذیه یک متن انگلیسی، متن را چند زبان ارائه می دهیم. همانطور که انتظار می رود، ارتباطات بین زبانی را بهتر یاد گرفت. + +مهمترین نقاط کلیدی مدلهای ذکر شده در بالا عبارتند از: + +- اهداف پیش آموزش‌های زیاد و مختلف بسیار خوب کار می‌کنند! + +- ارتباط دوطرفه بین کلمات برای عمق مدل حیاتی است + +- دستاورد های بزرگی از پیش آموزش در مقیاس بزرگ به دست می‌آید، هنوز بدون هیچ محدودیت مشخصی + + +بیشتر مدل هایی که در بالا بحث شد برای حل مسئله طبقه بندی متن مهندسی شده اند. با این حال، برای حل مشکل تولید متن، جایی که ما به ترتیب و مانند مدل «seq2seq» خروجی تولید می کنیم، به روش کمی متفاوت قبل از آموزش نیاز داریم. + + + +### پیش آموزش برای نسل مشروط: BART و T5 + +مدل BART: پیش آموزش مدل های «seq2seq» توسط متن بدون نویز + +در مدل BART، برای پیش آموزش، ما یک جمله را می گیریم و آن را با پوشاندن تصادفی ژتون‌ها خراب می کنیم. به جای پیش بینی ژتون‌های پوشیده شده (مانند هدف BERT)، ما کل توالی خراب را بگیریم و سعی می کنیم کل توالی صحیح را پیش بینی کنیم. + +این رویکرد پیش آموز «seq2seq» به ما انعطاف پذیری در طراحی رویه خراب کردن متن را می دهد. ما می توانیم جملات را بُر بزنیم، عبارات را حذف کنیم، عبارات جدیدی معرفی کنیم، و غیره. + +مدل BART می توانست با RoBERTa در کارهای SQUAD و GLUE مطابقت داشته باشد. با این حال، این روش جدید SOTA در زمینه خلاصه سازی، گفتگو و مجموعه داده های انتزاعی پرسش و پاسخ بود. این نتایج انگیزه ما را برای BART تقویت می کند، که در انجام کارهای تولید متن بهتر از BERT / RoBERTa باشیم. + + + + +### بعضی از سوالات باز در پردازش زبان طبیعی + +- چگونه باید دانش جهانی را با هم ادغام کنیم +- چگونه اسناد طولانی را مدلسازی می کنیم؟ (مدل های بر پایه BERT معمولا ۵۱۲ ژتون دارند) +- چگونه یادگیری چند وظیفه ای را به بهترین وجه انجام می دهیم؟ +- آیا می توانیم با داده کمتری تنظیم دقیق کنیم؟ +- آیا این مدل ها واقعاً زبان را درک می کنند؟ + +### خلاصه + +- مدل های آموزشی بر روی تعداد زیادی از داده ها، مدل سازی صریح ساختار زبانی را به راحتی شکست می دهد. + +از دیدگاه اریبی واریانس، دگرگون‌سازها مدل هایی با اریبی کم (بسیار رسا) هستند. تغذیه متن های متناسب با این مدل ها بهتر از مدل سازی صریح ساختار زبانی (اریبی زیاد) است. معماری ها باید فشرده سازی توالی ها را از طریق گلوگاه ها انجام دهند. + +- مدل ها می توانند با پیش بینی کلمات در متن بدون برچسب، چیزهای زیادی در مورد زبان یاد بگیرند. به نظر می رسد این یک هدف یادگیری بدون نظارت عالی است. تنظیم دقیق برای کارهای خاص پس از آن آسان است + +- متن دو زبانه بسیار مهم است + + + +### بینش بیشتر از سوالات بعد از کلاس: + +چه روش‌هایی برای تعیین کمیت «درک زبان» وجود دارد؟ از کجا می دانیم که این مدل ها واقعاً زبان درک می کنند؟ + +«جایزه در چمدان قرار نگرفت زیرا بسیار بزرگ بود»: حل ارجاع به «آن» در این جمله برای ماشینها مشکل است. انسانها در این کار تبحر دارند. یک مجموعه داده وجود دارد که از چنین مثالهای دشواری تشکیل شده و انسانها عملکرد ۹۵ درصدی در آن مجموعه داده دارند. قبل از انقلابی که توسط دگرگون ساز‌ها ایجاد شده بود، برنامه های رایانه ای عملکردی فقط در حدود ۶۰٪ در این مجموه داده به دست می آوردند. مدلهای مدرن دگرگون‌سازها قادر به دستیابی به بیش از ۹۰٪ ای در آن مجموعه داده هستند. این نشان می دهد که این مدلها فقط داده‌ها را حفظ / استخراج نکرده اند بلکه مفهایم و اشیای زبانی را از طریق الگوهای آماری یادگرفته‌اند. + + +#### Grounded Language + +جالب توجه است که مدرس (مایک لوئیس ، محقق دانشمند ، FAIR) در حال کار بر روی مفهومی به نام «Grounded Language» است. هدف از این زمینه تحقیق ایجاد مکالمه کننده‌ای است که قادر به صحبت دوستانه و کوتاه (چیت چت) یا مذاکره باشد. گفتگو و مذاکره وظایفی انتزاعی با اهداف نامشخص در مقایسه با طبقه بندی متن یا خلاصه متن است. + + +#### آیا می توانیم ارزیابی کنیم که آیا این مدل همین الان دانش جهانی دارد؟ + +«دانش جهانی» مفهومی انتزاعی است. می توانیم با پرسیدن سوالات بسیار ساده در سطوح ابتدایی از موضوعاتی که به آن علاقه مندیم، سطح علم مدل‌های خود را تست کنیم. مدل هایی همانند BERT، RoBERTA و T5 میلیاردها پارامتر دارند و با توجه به اینکه این مدل ها روی مجموعه عظیمی از متن اطلاعاتی مانند ویکی پدیا آموزش دیده اند، آنها حقایق را با استفاده از پارامترهای خود به خاطر می سپارند و می توانند به سوالات ما پاسخ دهند. علاوه بر این، ما همچنین می توانیم آزمایش مشابه دانش را قبل و بعد از تنظیم دقیق یک مدل روی برخی از کارها انجام دهیم. این می تواند به ما درک کند که مدل چه مقدار اطلاعات را «فراموش» کرده است. + + From c166b98c5c0275f7dafe68af061b9bb056112d2f Mon Sep 17 00:00:00 2001 From: thisistayeb <69354587+thisistayeb@users.noreply.github.com> Date: Sun, 18 Oct 2020 08:47:16 +0300 Subject: [PATCH 07/12] Update _config.yml --- docs/_config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/_config.yml b/docs/_config.yml index 5680896c9..bcdb5e446 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -594,6 +594,7 @@ fa: - path: fa/week12/12.md sections: - path: fa/week12/12-1.md + - path: fa/week12/12-2.md - path: fa/week13/13.md sections: - path: fa/week13/13-1.md From 7dedd807507656cffde11d4021c6817178ffff5b Mon Sep 17 00:00:00 2001 From: Alfredo Canziani Date: Wed, 11 Nov 2020 21:44:05 -0500 Subject: [PATCH 08/12] Update 12-2.md --- docs/fa/week12/12-2.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/fa/week12/12-2.md b/docs/fa/week12/12-2.md index bd670b86e..2a696718b 100644 --- a/docs/fa/week12/12-2.md +++ b/docs/fa/week12/12-2.md @@ -7,7 +7,6 @@ authors: Trevor Mitchell, Andrii Dobroshynskyi, Shreyas Chandrakaladharan, Ben W date: 20 Apr 2020 translator: Tayeb Pourebrahim --- -
-یک مزیت بزرگ در مورد توجه چند سر این است که به صورت موازی بسیار قابل محاسبه است. برخلاف RNNها، که سرهای ماژول های توجه چند سر و همه مراحل گام را به طور همزمان محاسبه می کند. یک مشکل محاسبه همزمان همه مراحل زمانی این است که می تواند کلمات آینده را نیز بررسی کند، در حالی که ما فقط می خواهیم به کلمات قبلی شرط بگذاریم. یک راه حل برای آن چیزی است که ** پوشش خود-توجه ای ** نامیده می شود. پوشش یک ماتریس مثلثی فوقانی است که در مثلث پایین صفر و در مثلث بالایی بی نهایت منفی دارد. تأثیر افزودن این پوشش به خروجی ماژول توجه این است که هر کلمه به سمت چپ دارای نمره توجه بسیار بیشتری نسبت به کلمات به سمت راست است، بنابراین مدل در عمل فقط بر روی کلمات قبلی تمرکز دارد. استفاده از پوشش در مدل زبان بسیار مهم است زیرا آن را از نظر ریاضی صحیح می کند، با این حال، در رمزگذارهای متن، متن دو زبانه می تواند مفید باشد. +یک مزیت بزرگ در مورد توجه چندسر این است که محاسبات آن را به راحتی می‌توان به صورت موازی انجام داد برخلاف RNNها، که سرهای ماژول های توجه چند سر و همه مراحل گام را به طور همزمان محاسبه می کند. یک مشکل محاسبه همزمان همه مراحل زمانی این است که می تواند کلمات آینده را نیز بررسی کند، در حالی که ما فقط می خواهیم به کلمات قبلی شرط بگذاریم. یک راه حل برای آن چیزی است که ** پوشش خود-توجه ای ** نامیده می شود. پوشش یک ماتریس مثلثی فوقانی است که در مثلث پایین صفر و در مثلث بالایی بی نهایت منفی دارد. تأثیر افزودن این پوشش به خروجی ماژول توجه این است که هر کلمه به سمت چپ دارای نمره توجه بسیار بیشتری نسبت به کلمات به سمت راست است، بنابراین مدل در عمل فقط بر روی کلمات قبلی تمرکز دارد. استفاده از پوشش در مدل زبان بسیار مهم است زیرا آن را از نظر ریاضی صحیح می کند، با این حال، در رمزگذارهای متن، متن دو زبانه می تواند مفید باشد. **چرا این مدل خوب است؟** -۱. ارتباط مستقیمی بین هر جفت کلمه ایجاد می کند. هر کلمه می تواند مستقیماً به حالت های پنهان کلمات قبلی دسترسی پیدا کند و گرادیان های ناپدید شده را کاهش دهد. تابع پرهزینه ای را به راحتی یاد می‌گیرد. +۱. ارتباط مستقیمی بین هر جفت کلمه ایجاد می کند. هر کلمه می تواند مستقیماً به حالت های پنهان کلمات قبلی دسترسی پیدا کند و مشکل گرادیان‌های ناپدیدشونده را برطرف می‌کند. تابع پرهزینه ای را به راحتی یاد می‌گیرد. ۲. تمام گام‌های زمانی به صورت موازی محاسبه می‌شود. ۳. خود-توجه‌ای درجه دوم است (تمام گام‌های زمانی می تواند به همه موارد دیگر مربوط شود)، محدود به حداکثر طول دنباله. @@ -284,7 +283,7 @@ You could see that when transformers were introduced, the performance was greatl - برای دگرگون ساز بسیار مهم است -### ترفند ۲: دست گرمی + برنامه زمانی آموزش ریشه مربع معکوس +### ترفند ۲: دست گرمی + زمان بندی آموزش ریشه مربع معکوس - از برنامه زمانی نرخ یادگیری استفاده کنید: برای اینکه دگرگون سازها به خوبی کار کنند، باید سرعت یادگیری خود را از صفر تا هزار مرحله به صورت خطی کاهش دهید @@ -369,7 +368,7 @@ It requires computing all possible sequences and because of the complexity of $O ### رمزگشایی حریص کار نمی کند -ما محتمل ترین کلمه را در هر مرحله زمان می گیریم. با این وجود، هیچ تضمینی این محتمل ترین توالی ممکن باشد، زیرا اگر مجبور باشید در مرحله ای آن مرحله را انجام دهید، دیگر هیچ راهی برای پیگیری جستجوی خود برای پس‌گرد سایر نشست‌های قبلی ندارید. +ما محتمل ترین کلمه را در هر مرحله زمان می گیریم. با این وجود،هیچ تضمینی برای این‌که این محتمل‌ترین توالی ممکن باشد وجود ندارد، زیرا اگر مجبور باشید در مرحله ای آن مرحله را انجام دهید، دیگر هیچ راهی برای پیگیری جستجوی خود برای پس‌گرد سایر نشست‌های قبلی ندارید. ### جستجوی خسته کننده نیز امکان پذیر نیست From c6978ffa5524b2cb5b9aae9fb9eeb0a6b0cb8ea3 Mon Sep 17 00:00:00 2001 From: thisistayeb <69354587+thisistayeb@users.noreply.github.com> Date: Sun, 15 Nov 2020 14:21:24 +0300 Subject: [PATCH 11/12] [FA] Update 12-1.md Persian Translation --- docs/fa/week12/12-1.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/fa/week12/12-1.md b/docs/fa/week12/12-1.md index 33b3e9142..9e9dcc268 100644 --- a/docs/fa/week12/12-1.md +++ b/docs/fa/week12/12-1.md @@ -7,7 +7,6 @@ authors: Jiayu Qiu, Yuhong Zhu, Lyuang Fu, Ian Leefmans date: 20 Apr 2020 translator: Tayeb Pourebrahim --- -
+## [توجه](https://www.youtube.com/watch?v=f01J0Dri-6k&t=69s) +ما قبل از صحبت در مورد مفهوم دگرگون‌ساز، مفهوم «توجه» را معرفی می کنیم. دو نوع توجه اصلی وجود دارد: «خود توجه‌ای» * در مقابل * «توجه متقاطع»، در این دسته ها، می توانیم توجه سخت * در مقابل * توجه نرم داشته باشیم. + +همانطور که بعدا خواهیم دید، دگرگون‌سازها از ماژول های توجه ساخته شده اند، که به جای توالی، نگاشت بین مجموعه ها هستند، این بدان معناست که ما ترتیب ورودی و خروجی خود را اعمال نمی کنیم. + + + +### خود توجه‌ای (I) + +مجموعه‌ی $t$ را به عنوان ورودی $\boldsymbol{x}$ در نظر بگیرید: + +$$ +\lbrace\boldsymbol{x}_i\rbrace_{i=1}^t = \lbrace\boldsymbol{x}_1,\cdots,\boldsymbol{x}_t\rbrace +$$ + +که در آن هر $\boldsymbol{x}_i$ یک بردار $n$ بعدی است. از آنجا که مجموعه $t$ عنصر دارد، که هریک از آن‌ها متعلق به $\mathbb{R}^n$ است، ما می‌توانیم مجموعه را به عنوان یک ماتریس $\boldsymbol{X}\in\mathbb{R}^{n \times t}$ نشان دهیم. + +با خود توجه‌ای، نمایش پنهان $h$ ترکیبی خطی از ورودی ها است: + +$$ +\boldsymbol{h} = \alpha_1 \boldsymbol{x}_1 + \alpha_2 \boldsymbol{x}_2 + \cdots + \alpha_t \boldsymbol{x}_t +$$ + +با استفاده از نمایش ماتریس توضیح داده شده در بالا، می توانیم لایه پنهان را به عنوان محصول ماتریس بنویسیم: + +$$ +\boldsymbol{h} = \boldsymbol{X} \boldsymbol{a} +$$ +جایی که $\boldsymbol{a} \in \mathbb{R}^n$ یک بردار ستونی با اجزای $\alpha_i$ است. + +توجه داشته باشید که این با نمایش پنهانی که تاکنون دیده ایم، متفاوت است، جایی که ورودی ها در یک ماتریس وزن ضرب می شوند. + +بسته به محدودیت هایی که به بردار $\vect{a}$ اعمال می کنیم، می توانیم توجه سخت یا نرم را بدست آوریم. + +#### توجه سخت +با توجه سخت، ما محدودیت جدید $\Vert\vect{a}\Vert_0 = 1$ را بر آلفاها اعمال می‌کنیم. این بدان معنی است که $\vect{a}$ یک بردار one-hot است. بنابراین همه ضرایب موجود در ترکیب خطی ورودی‌ها به جز یکی برابر با صفر است و نمایش پنهان به ورودی $\boldsymbol{x}_i$ مربوط به المان $\alpha_i=1$ تقلیل پیدا می‌کنید. + + +#### توجه نَرم + +با توجه نَرم، ما $\Vert\vect{a}\Vert_1 = 1$ را اعمال می‌کنیم. نمایش‌های پنهان ترکیبی خطی از ورودی هایی است که مجموع ضرایب آنها ۱ است. + + + +### Self Attention (II) + +Where do the $\alpha_i$ come from? + +We obtain the vector $\vect{a} \in \mathbb{R}^t$ in the following way: + +$$ +\vect{a} = \text{[soft](arg)max}_{\beta} (\boldsymbol{X}^{\top}\boldsymbol{x}) +$$ + +Where $\beta$ represents the inverse temperature parameter of the $\text{soft(arg)max}(\cdot)$. $\boldsymbol{X}^{\top}\in\mathbb{R}^{t \times n}$ is the transposed matrix representation of the set $\lbrace\boldsymbol{x}_i \rbrace\_{i=1}^t$, and $\boldsymbol{x}$ represents a generic $\boldsymbol{x}_i$ from the set. Note that the $j$-th row of $X^{\top}$ corresponds to an element $\boldsymbol{x}_j\in\mathbb{R}^n$, so the $j$-th row of $\boldsymbol{X}^{\top}\boldsymbol{x}$ is the scalar product of $\boldsymbol{x}_j$ with each $\boldsymbol{x}_i$ in $\lbrace \boldsymbol{x}_i \rbrace\_{i=1}^t$. + +The components of the vector $\vect{a}$ are also called "scores" because the scalar product between two vectors tells us how aligned or similar two vectors are. Therefore, the elements of $\vect{a}$ provide information about the similarity of the overall set to a particular $\boldsymbol{x}_i$. + +The square brackets represent an optional argument. Note that if $\arg\max(\cdot)$ is used, we get a one-hot vector of alphas, resulting in hard attention. On the other hand, $\text{soft(arg)max}(\cdot)$ leads to soft attention. In each case, the components of the resulting vector $\vect{a}$ sum to 1. + +Generating $\vect{a}$ this way gives a set of them, one for each $\boldsymbol{x}_i$. Moreover, each $\vect{a}_i \in \mathbb{R}^t$ so we can stack the alphas in a matrix $\boldsymbol{A}\in \mathbb{R}^{t \times t}$. + +Since each hidden state is a linear combination of the inputs $\boldsymbol{X}$ and a vector $\vect{a}$, we obtain a set of $t$ hidden states, which we can stack into a matrix $\boldsymbol{H}\in \mathbb{R}^{n \times t}$. + +$$ +\boldsymbol{H}=\boldsymbol{XA} +$$ + +### خود توجه‌ای (II) + +$\alpha_i$ از کجا آمده است؟ + +بردار $\vect{a} \in \mathbb{R}^t$ را به روش زیر به دست می‌آوریم. + +$$ +\vect{a} = \text{[soft](arg)max}_{\beta} (\boldsymbol{X}^{\top}\boldsymbol{x}) +$$ +جایی که $\beta$ نشان دهنده پارامتر معکوس دمای $\text{soft(arg)max}(\cdot)$ است. $\boldsymbol{X}^{\top}\in\mathbb{R}^{t \times n}$ نمایش ماتریس ترانهاده مجموعه $\lbrace\boldsymbol{x}_i \rbrace\_{i=1}^t$ است و $\boldsymbol{x}$ نماینده عمومی از مجموعه است. توجه داشته باشید که $j$-امین ردیف از $X^{\top}$ مربوط به عنصر $\boldsymbol{x}_j\in\mathbb{R}^n$ است، پس ردیف $j$-ام از $\boldsymbol{X}^{\top}\boldsymbol{x}$ ضرب اسکالر $\boldsymbol{x}_j$ که هر $\boldsymbol{x}_i$ در $\lbrace \boldsymbol{x}_i \rbrace\_{i=1}^t$ است. + +به اجزای بردار $\vect{a}$ «نمره» نیز گفته می‌شود زیرا ضرب اسکالر بین دو بردار به ما می‌گوید که دو بردار چقدر همسو یا یکسان هستند. بنابراین، عناصر $\vect{a}$ اطلاعاتی درباره شباهت مجموعه کلی با یک $\boldsymbol{x}_i$ خاص ارائه می دهند. + +براکت‌های مربع نشان دهنده یک برهان اختیاری است. توجه داشته باشید که اگر از $\arg\max(\cdot)$ استفاده شود، ما یک بردار on-hot از آلفاها را به دست می‌آوریم که نتیجه آن «توجه سخت» است. از طرف دیگر، $\text{soft(arg)max}(\cdot)$ منجر به «توجه نرم» می‌شود. در هر حالت، مجموع اجزای بردار حاصل $\vect{a}$ برابر با ۱ می‌شود. + +تولید $\vect{a}$ به این شکل، مجموعه‌ای از آن‌ها می‌دهد، یکی برای هر $\boldsymbol{x}_i$. علاوه بر این، هر $\vect{a}_i \in \mathbb{R}^t$، پس ما می‌توانیم آلفا‌ها را در یک ماتریکس $\boldsymbol{A}\in \mathbb{R}^{t \times t}$ انباشته کنیم. + +از آنجا که هر حالت پنهان، یک ترکیب خطی از ورودی‌های $\boldsymbol{X}$ و یک بردار $\vect{a}$ است، ما مجموعه‌ای از $t$ حالت پنهان بدست می‌آوریم که میتوانیم آن‌ها را در یک ماتریس $\boldsymbol{H}\in \mathbb{R}^{n \times t}$ انباشته کنیم. + +$$ +\boldsymbol{H}=\boldsymbol{XA} +$$ + + + + + +## [ذخیره کلید-مقدار](https://www.youtube.com/watch?v=f01J0Dri-6k&t=1056s) + +ذخیره کلید-مقدار الگویی است که برای ذخیره سازی (ذخیره)، بازیابی (پرسش) و مدیریت آرایه های انجمنی (دیکشنری ها / جداول درهمساز) طراحی شده است. + +به عنوان مثال، ما می خواهیم یک دستورالعمل برای تهیه لازانیا پیدا کنیم. ما یک کتاب دستورالعمل آشپزی داریم و در آن «لازانیا» را جستجو می کنیم - این پرسش است. این پرسش در مقابل تمام کلید‌های ممکن در مجموع داده چک شده است - در این مثال، این می‌تواند تمامی عنوان‌های کتاب دستورالعمل آشپزی باشد. بررسی می کنیم که چقدر پرسش با هر عنوان همسو است تا حداکثر امتیاز تطبیق بین پرسش و همه کلیدهای مربوطه را پیدا کنیم. اگر خروجی ما تابع argmax باشد - ما دستور اصلی را با بالاترین امتیاز بازیابی می کنیم. در غیر این صورت، اگر از یک تابع «soft argmax» استفاده کنیم، توزیع احتمالی را بدست می آوریم و می توانیم به ترتیب از مشابه ترین محتوا به دستورالعمل های کمتر و کمتر مرتبط با پرسش بازیابی کنیم. + +اساساً «پرسش» سوال است. با توجه به یک «پرسش»، ما این «پرسش» را در برابر هر کلید بررسی می کنیم و تمام محتوای منطبق را بازیابی می کنیم. + + +### پرسش‌ها, کلیدها و مقادیر + + +$$ +\begin{aligned} +\vect{q} &= \vect{W_q x} \\ +\vect{k} &= \vect{W_k x} \\ +\vect{v} &= \vect{W_v x} +\end{aligned} +$$ + +هر یک از بردارهای $\vect{q}، \vect{k}، \vect{v}$ را می توان به سادگی به عنوان دوران‌های ورودی خاص $\vect{x}$ مشاهده کرد. جایی که $\vect{q}$ فقط $\vect{x}$ دوران‌ شده توسط $\vect{W_q}$ است، $\vect{k}$ فقط $\vect{x}$ دوران‌ شده توسط $\vect{W_k}$ و به طور مشابه برای $\vect{v}$. توجه داشته باشید که این اولین بار است که پارامترهای «قابل یادگیری» را معرفی می کنیم. ما همچنین هیچ [ویژگی] غیر خطی را حساب نمی‌کنیم زیرا توجه کاملاً براساس جهت گیری است. + +برای مقایسه پرسش با تمام کلیدهای ممکن، $\vect{q}$ و $\vect{k}$ باید از ابعاد یکسانی برخوردار باشند، * یعنی * $\vect{q}, \vect{k} \in \mathbb{R}^{d'}$. + +با این حال، $\vect{v}$ می تواند از هر ابعادی برخوردار باشد. اگر ما به عنوان نمونه دستورالعمل لازانیا خود ادامه دهیم - برای اینکه ابعاد را به عنوان کلید باشیم، باید درخواست پرسش بزنیم، به عنوان مثال به عنوان عناوین دستورالعمل های مختلفی که در جستجوی آنها هستیم. ابعاد دستورالعمل مربوطه به دست آمده، $\vect{v}$، می تواند به صورت دل بخواهی طولانی باشد. بنابراین داریم $\vect{v} \in \mathbb{R}^{d''}$. + +برای سادگی، در اینجا فرض را می گیریم که همه چیز دارای ابعاد $d$ است، یعنی: +$$ +d' = d'' = d +$$ + +بنابراین اکنون ما مجموعه ای از $\vect{x}$، مجموعه ای از پرسش‌ها، مجموعه ای از کلیدها و مجموعه ای از مقادیر را داریم. از آنجا که $t$ بردار را انباشته‌ایم، می توانیم این مجموعه ها را در ماتریس هایی قرار دهیم که هر کدام $t$ ستون دارند و ارتفاع هر بردار $d$ است. + + +$$ +\{ \vect{x}_i \}_{i=1}^t \rightsquigarrow \{ \vect{q}_i \}_{i=1}^t, \, \{ \vect{k}_i \}_{i=1}^t, \, \, \{ \vect{v}_i \}_{i=1}^t \rightsquigarrow \vect{Q}, \vect{K}, \vect{V} \in \mathbb{R}^{d \times t} +$$ + +ما یک پرسش $\vect{q}$ را در برابر ماتریس تمام کلیدها $\vect{K}$ مقایسه می کنیم: + +$$ +\vect{a} = \text{[soft](arg)max}_{\beta} (\vect{K}^{\top} \vect{q}) \in \mathbb{R}^t +$$ + +سپس لایه پنهان به صورت ترکیب خطی از ستون‌های $\vect{V}$ با ضرایب وزنی $\vect{a}$ خواهد بود: + +$$ +\vect{h} = \vect{V} \vect{a} \in \mathbb{R}^d +$$ + + +از آنجا که $t$ پرسش داریم، $t$ مربوط به $\vect{a}$ وزن دریافت خواهیم کرد و بنابراین یک ماتریس $\vect{A}$ از بعد $t \times t$. + + +$$ +\{ \vect{q}_i \}_{i=1}^t \rightsquigarrow \{ \vect{a}_i \}_{i=1}^t, \rightsquigarrow \vect{A} \in \mathbb{R}^{t \times t} +$$ + +بنابراین در علامت گذاری ماتریس: + +$$ +\vect{H} = \vect{VA} \in \mathbb{R}^{d \times t} +$$ + +بعلاوه، ما معمولاً $\beta$ را به طور زیر در نظر می‌گیریم: + +$$ +\beta = \frac{1}{\sqrt{d}} +$$ +این کار برای ثابت نگه داشتن دما در بین گزینه های مختلف بعد $d$ انجام می شود و بنابراین ما بر ریشه مربع تعداد ابعاد $d$ تقسیم می کنیم. (فکر کنید طول بردار $\vect{1} \in \R^d$ چقدر است.) + +برای پیاده سازی، می توانیم محاسبه را با جمع کردن تمام $\vect{W}$ ها در یک $\vect{W}$ بلند سریع انجام دهیم و سپس $\vect{q}, \vect{k}, \vect{v}$ یک بار محاسبه کنیم: + +$$ +\begin{bmatrix} +\vect{q} \\ +\vect{k} \\ +\vect{v} +\end{bmatrix} = +\begin{bmatrix} +\vect{W_q} \\ +\vect{W_k} \\ +\vect{W_v} +\end{bmatrix} \vect{x} \in \mathbb{R}^{3d} +$$ + + + +همچنین مفهومی به نام «سَرها» نیز وجود دارد. در بالا مثالی با یک سر دیده ایم اما می توانیم چندین سر داشته باشیم. به عنوان مثال، مثلاً ما $h$ سر داریم، سپس $h$ $\vect{q}$ها، $h$ $\vect{k}$ها و $h$ $\vect{v}$ داریم و ما در انتها با یک بردار در $\mathbb{R}^{3hd}$ مواجه خواهیم شد: + +$$ +\begin{bmatrix} +\vect{q}^1 \\ +\vect{q}^2 \\ +\vdots \\ +\vect{q}^h \\ +\vect{k}^1 \\ +\vect{k}^2 \\ +\vdots \\ +\vect{k}^h \\ +\vect{v}^1 \\ +\vect{v}^2 \\ +\vdots \\ +\vect{v}^h +\end{bmatrix} = +\begin{bmatrix} +\vect{W_q}^1 \\ +\vect{W_q}^2 \\ +\vdots \\ +\vect{W_q}^h \\ +\vect{W_k}^1 \\ +\vect{W_k}^2 \\ +\vdots \\ +\vect{W_k}^h \\ +\vect{W_v}^1 \\ +\vect{W_v}^2 \\ +\vdots \\ +\vect{W_v}^h +\end{bmatrix} \vect{x} \in \R^{3hd} +$$ + + + +با این حال، ما همچنان می توانیم مقادیر چند سر را تغییر دهیم تا بعد اصلی $\R^d$ را با استفاده از $\vect{W_h} \in \mathbb{R}^{d \times hd}$ داشته باشیم. این فقط یکی از راه های ممکن برای پیاده سازی ذخیره‌ی کلید-ارزش است. + +## [دگرگون‌ساز](https://www.youtube.com/watch?v=f01J0Dri-6k&t=2114s) + +با افزایش دانش ما در «توجه» به طور خاص، ما اکنون عناصر اساسی ساخت دگرگون‌ساز را تفسیر می کنیم. به طور خاص، ما یک «شبکه مرور به پیش» را از یک دگرگون‌ساز اساسی عبور خواهیم داد، و خواهیم دید که چگونه توجه در الگوی رمزگذار-رمزگشای استاندارد استفاده می شود و با معماری‌های متوالی RNN مقایسه می شود. + + +### معماری رمزگذار-رمزگشای + +ما باید با این اصطلاحات آشنا باشیم. در اثب ات رمزگذار خودکار به طور برجسته ای نشان داده می شود و درک پیش نیاز آن تا این مرحله است. به طور خلاصه، ورودی از طریق رمزگذار و رمزگشایی تغذیه می شود که نوعی گلوگاه را بر داده‌ها تحمیل می کند و فقط مهمترین اطلاعات را از این طریق مجبور می کند. این اطلاعات در خروجی بلوک رمزگذار ذخیره می شود و می تواند برای انواع کارهای غیر مرتبط استفاده شود. + +
+
+تصویر اول: +دو مثال از طرح یک خودرمزگذار. مدل در سمت چپ نشان می دهد که چگونه یک رمزگذار خودکار می تواند با دو تبدیل آفرین + فعال سازی طراحی شود ، جایی که تصویر سمت راست این واحد «لایه» را با یک ماژول دلخواه جایگزین می کند. +
+ +"توجه" ما به طرح خود رمزگذار جلب شده است همانطور که در مدل سمت راست نشان داده شده است و اکنون نگاهی به داخل، در زمینه دگرگون‌سازها می اندازد. + +### ماژول رمزگذار + +
+
+تصویر دوم: رمزگذار دگرگون‌ساز که مجموعه ای از ورودی $\vect{x}$, را می پذیرد و مجموعه ای از نمایش های پنهان $\vect{h}^\text{Enc}$ را تولید می کند. +
+ +ماژول رمزگذار مجموعه ای از ورودی ها را می پذیرد ، که به طور همزمان از طریق بلوک توجه به خود تغذیه می شوند و آن را دور می زنند تا به بلوک ʻAdd، Norm` برسند. در آن زمان، آنها دوباره بطور همزمان از 1D-کانولوشن و یک بلوک دیگر "Add، Norm" عبور می کنند و در نتیجه به عنوان مجموعه نمایش مخفی تولید می شوند. سپس این مجموعه نمایش مخفی یا از طریق تعداد دلخواه ماژول های رمزگذار * یعنی * لایه های بیشتر) ارسال می شود یا به رمزگشای. اکنون باید با جزئیات بیشتری در مورد این بلوک ها بحث کنیم. + +### خود توجه‌ای + +مدل خود توجه‌، یک مدل توجه عادی است. پرسش، کلید و مقدار از همان مورد ورودی پی در پی تولید می شوند. در وظایفی که سعی در مدل سازی داده های پی در پی دارند، رمزگذاری موقعیتی قبل از این ورودی اضافه می شود. خروجی این بلوک مقادیر توجه شده است. بلوک توجه به خود مجموعه ای از ورودی ها را از $1, \cdots , t$ و ورودی های $1, \cdots, t$ توجه را که از طریق بقیه رمزگذار تغذیه می شود، می پذیرد. + +
+
+تصویر سوم: بلوک توجه به خود. توالی ورودی به صورت مجموعه ای در امتداد بعد سوم نشان داده شده و بهم پیوسته است. +
+ + + +#### جمع و نُرم + +بلوک «جمع نُرم» دارای دو جز است. ابتدا بلوک جمع، که یک اتصال باقیمانده است و نرمال سازی لایه است. + +#### 1D-کانولوشن + +به دنبال این مرحله ، یک کانولوشن-1D (معروف به یک شبکه تغذیه خوراک موقعیتی) اعمال می شود. این بلوک از دو لایه متراکم تشکیل شده است. بسته به اینکه چه مقادیری تنظیم شده است ، این بلوک به شما امکان می دهد ابعاد خروجی $\vect{h}^\text{Enc}$ را تنظیم کنید. + +### ماژول رمزگشا + +دگرگون‌ساز رمزگشا روشی مشابه رمزگذار را دنبال می کند. با این حال، یک زیر بلوک اضافی وجود دارد که باید در نظر گرفته شود. علاوه بر این، ورودی های این ماژول متفاوت است. + +
+
+تصویر چهارم توضیحی دوستانه تر از رمزگشا. +
+ +#### توجه متقابل +توجه متقابل از پرسش، کلید و تنظیم مقدار استفاده شده برای بلوکهایخود توجه استفاده می کند. با این وجود ورودی ها کمی پیچیده تر هستند. ورودی رمزگشا یک نقطه داده$\vect{y}\_i$ است که سپس از طریق خود توجه عبور داده می شود و بلوک های نرم به آن اضافه می شود و در نهایت به بلوک توجه متقابل می رسد. این به عنوان پرسش توجه متقابل عمل می کند، جایی که جفت کلید - مقدار‌ها خروجی $\vect{h}^\text{Enc}$ هستند، جایی که این خروجی با تمام ورودی های گذشته $\vect{x}\_1, \cdots, \vect{x}\_{t}$ محاسبه شده است. + + +## خلاصه +یک مجموعه $\vect{x}\_1$ به $\vect{x}\_{t}$ از طریق رمزگذار تغذیه می شود. با استفاده از خود توجه‌ای و چند بلوک دیگر، خروجی به صورت $\lbrace\vect{h}^\text{Enc}\rbrace_{i=1}^t$ به دست می‌آید،‌ که رمزگشا را تغذیه می‌کند. پس از اعمال خود توجه به آن، توجه متقابل اعمال می شود. در این بلوک، پرس و جو مربوط به نمایش نمادی در زبان مقصد $\vect{y}\_i$ است،‌ و کلید و مقادیر از جمله زبان مبدا ($\vect{x}\_1$ به $\vect{x}\_{t}$) هستند. به صورت شهودی، توجه متقابل می یابد که کدام مقادیر در دنباله ورودی بیشترین ارتباط را با ساخت $\vect{y}\_t$ دارند و بنابراین مستحق بالاترین ضرایب توجه هستند.سپس خروجی این توجه متقابل از طریق زیر بلوک 1D-کانولوشن دیگری تأمین می شود،‌و ما $\vect{h}^\text{Dec}$ داریم. برای زبان هدف مشخص، با مقایسه $\lbrace\vect{h}^\text{Dec}\rbrace_{i=1}^t$ با یک دیتای هدف، ساده است که از اینجا ببنیم که آموزش از کجا شروع می‌شود. + + +### مدل های زبان کلمه ای + +چند واقعیت مهم وجود دارد که ما قبلاً برای توضیح مهمترین ماژولهای دگرگون‌ساز کنار گذاشته ایم، اما اکنون باید در مورد آنها بحث کنیم تا بفهمیم چگونه دگرگون‌سازها می توانند در کارهای زبان به نتایج پیشرفته برسند. + + +#### رمزگذاری موقعیتی + +مکانیسم های توجه به ما امکان می دهد عملیات ها را موازی کنیم و زمان آموزش مدل را بسیار سرعت ببخشیم، اما اطلاعات متوالی را از دست می دهیم. ویژگی رمزگذاری موقعیتی به ما امکان می دهد تا این امکان را بدست بیاوریم. + + +### نمایش های معنایی + +در طول آموزش یک دگرگون‌ساز، بسیاری از نمایش های پنهان ایجاد می شود. برای ایجاد یک فضای جاسازی مشابه فضایی که توسط مثال مدل «کلمه-زبان» در PyTorch استفاده شده است، خروجی توجه متقابل، نمایشی معنایی از کلمه $ x_i $ فراهم می کند، که در هر زمان می توان آزمایشات بیشتری را بر روی این مجموعه داده اجرا کرد. + + + +## خلاصه کد + +اکنون بلوک های دگرگون‌ساز‌ها را که در بالا بحث شد با فرمت قابل درک تر، خواهیم دید. کد! + +اولین ماژول به بلوک توجه چند سر نگاه خواهیم کرد. بسته به پرسش، کلید و مقادیر وارد شده در این بلوک، می توان از آن برای خود-توجه‌ای یا توجه متقابل استفاده کرد. + +```python +class MultiHeadAttention(nn.Module): + def __init__(self, d_model, num_heads, p, d_input=None): + super().__init__() + self.num_heads = num_heads + self.d_model = d_model + if d_input is None: + d_xq = d_xk = d_xv = d_model + else: + d_xq, d_xk, d_xv = d_input + # Embedding dimension of model is a multiple of number of heads + assert d_model % self.num_heads == 0 + self.d_k = d_model // self.num_heads + # These are still of dimension d_model. To split into number of heads + self.W_q = nn.Linear(d_xq, d_model, bias=False) + self.W_k = nn.Linear(d_xk, d_model, bias=False) + self.W_v = nn.Linear(d_xv, d_model, bias=False) + # Outputs of all sub-layers need to be of dimension d_model + self.W_h = nn.Linear(d_model, d_model) +``` +کلاس توجه چند سر را شروع می‌کنیم. اگر `d_input` تامین شده بود، به توجه متقابل تبدیل می‌شود. در غیر این صورت به خود توجه‌ای تبدیل می‌شود. تنظیم پرسش، کلید، مقدار به عنوان یک تغییر شکل خطی از ورودی `d_model` ساخته شده است. + +```python +def scaled_dot_product_attention(self, Q, K, V): + batch_size = Q.size(0) + k_length = K.size(-2) + + # Scaling by d_k so that the soft(arg)max doesnt saturate + Q = Q / np.sqrt(self.d_k) # (bs, n_heads, q_length, dim_per_head) + scores = torch.matmul(Q, K.transpose(2,3)) # (bs, n_heads, q_length, k_length) + + A = nn_Softargmax(dim=-1)(scores) # (bs, n_heads, q_length, k_length) + + # Get the weighted average of the values + H = torch.matmul(A, V) # (bs, n_heads, q_length, dim_per_head) + + return H, A +``` + +لایه پنهان مربوط به رمزگذاری مقادیر را پس از مقیاس گذاری توسط بردار توجه برگردانید. برای اهداف نگهداری کتاب (کدام ارزشها در توالی مورد نظر پوشانده شده اند؟) A نیز بازگردانده می شود. + +```python +def split_heads(self, x, batch_size): + return x.view(batch_size, -1, self.num_heads, self.d_k).transpose(1, 2) +``` +آخرین بعد را به (`heads` × `depth`) تقسیم کنید. بعد از جابجایی برگردانید تا شکل بگیرد (`batch_size` × `num_heads` × `seq_length` × `d_k`) + + +```python +def group_heads(self, x, batch_size): + return x.transpose(1, 2).contiguous(). + view(batch_size, -1, self.num_heads * self.d_k) +``` +سرهای توجه را با هم ترکیب می کند، تا شکل صحیح مطابق با اندازه دسته و طول توالی داشته باشد. + + +```python +def forward(self, X_q, X_k, X_v): + batch_size, seq_length, dim = X_q.size() + # After transforming, split into num_heads + Q = self.split_heads(self.W_q(X_q), batch_size) + K = self.split_heads(self.W_k(X_k), batch_size) + V = self.split_heads(self.W_v(X_v), batch_size) + # Calculate the attention weights for each of the heads + H_cat, A = self.scaled_dot_product_attention(Q, K, V) + # Put all the heads back together by concat + H_cat = self.group_heads(H_cat, batch_size) # (bs, q_length, dim) + # Final linear layer + H = self.W_h(H_cat) # (bs, q_length, dim) + return H, A +``` + +شبکه مرور به پیش توجه چند سر. + +با توجه به ورودی به q ،k و v تقسیم می شود، در این مرحله این مقادیر از طریق یک مکانیزم توجه به محصول با مقیاس کوچک تغذیه می شوند، به هم متصل شده و از طریق یک لایه خطی نهایی تغذیه می شوند. آخرین خروجی بلوک توجه، توجه پیدا شده و نمایش مخفی است که از بلوک های باقیمانده عبور می کند. + +اگرچه بلوک بعدی نشان داده شده در نرم و تابع add دگرگون‌سازها / رمزگذار تابعی است که قبلاً در PyTorch تعبیه شده است. به همین ترتیب، این یک اجرای کاملاً ساده است و به کلاس خودش نیازی ندارد. بعدی بلوک کانولوشنی 1-D است. برای جزئیات بیشتر لطفا به بخشهای قبلی مراجعه کنید. + +اکنون که همه کلاس های اصلی خود را ساخته ایم (یا برای ما ساخته شده است)، اکنون به یک ماژول رمزگذار روی می آوریم. + +```python +class EncoderLayer(nn.Module): + def __init__(self, d_model, num_heads, conv_hidden_dim, p=0.1): + self.mha = MultiHeadAttention(d_model, num_heads, p) + self.layernorm1 = nn.LayerNorm(normalized_shape=d_model, eps=1e-6) + self.layernorm2 = nn.LayerNorm(normalized_shape=d_model, eps=1e-6) + + def forward(self, x): + attn_output, _ = self.mha(x, x, x) + out1 = self.layernorm1(x + attn_output) + cnn_output = self.cnn(out1) + out2 = self.layernorm2(out1 + cnn_output) + return out2 +``` + +در قدرتمندترین دگرگون سازها، تعداد زیادی از این رمزگذارها به طور دلخواه روی هم قرار گرفته اند. + +یادآوری شود که خود توجه‌ای به خودی خود فاقد بازگشت یا کانولوشن است، اما این همان چیزی است که به آن اجازه می دهد تا خیلی سریع اجرا شود. برای حساس کردن آن به موقعیت، رمزگذاری موقعیتی را ارائه می دهیم. این موارد به شرح زیر محاسبه می شود: + + + +$$ +\begin{aligned} +E(p, 2) &= \sin(p / 10000^{2i / d}) \\ +E(p, 2i+1) &= \cos(p / 10000^{2i / d}) +\end{aligned} +$$ + +برای اینکه جزییات دقیق تر فضای زیادی را اشغال نکند، برای کد کامل مورد استفاده در اینجا ما شما را به https://github.com/Atcold/pytorch-Deep-Learning/blob/master/15-transformer.ipynb ارجاع می دهیم. + +یک رمزگذار کامل، با N لایه های رمزگذار انباشته، و همچنین جاسازی موقعیت، به طور زیر نوشته شده است: + +```python +class Encoder(nn.Module): + def __init__(self, num_layers, d_model, num_heads, ff_hidden_dim, + input_vocab_size, maximum_position_encoding, p=0.1): + self.embedding = Embeddings(d_model, input_vocab_size, + maximum_position_encoding, p) + self.enc_layers = nn.ModuleList() + for _ in range(num_layers): + self.enc_layers.append(EncoderLayer(d_model, num_heads, + ff_hidden_dim, p)) + def forward(self, x): + x = self.embedding(x) # Transform to (batch_size, input_seq_length, d_model) + for i in range(self.num_layers): + x = self.enc_layers[i](x) + return x # (batch_size, input_seq_len, d_model) +``` + +## مثال کاربرد + +وظایف زیادی وجود دارد که می توانید فقط برای آنها از رمزگذار استفاده کنید. در نوت بوک همراه، می بینیم که چگونه می توان از رمزگذار برای عقیده کاوی استفاده کرد. + +با استفاده از مجموعه داده های بررسی imdb، می توانیم از رمزگذار نمایشی پنهان از دنباله ای از متن را تولید کنیم و این فرایند رمزگذاری را با آنتروپی متقابل باینری، که مربوط به یک بررسی مثبت یا منفی فیلم است ، آموزش دهیم. + +ما دوباره کارها و اصول اولیه را کنار گذاشته و شما را به سمت نوت بوک راهنما هدایت می کنیم، اما در اینجا مهمترین اجزای معماری مورد استفاده در دگرگون‌ساز‌ها وجود دارد: + + +```python +class TransformerClassifier(nn.Module): + def forward(self, x): + x = Encoder()(x) + x = nn.Linear(d_model, num_answers)(x) + return torch.max(x, dim=1) + +model = TransformerClassifier(num_layers=1, d_model=32, num_heads=2, + conv_hidden_dim=128, input_vocab_size=50002, num_answers=2) +``` +جایی که این مدل به صورت معمولی آموزش دیده است.