CS ۲۳۰ - یادگیری عمیق

راهنمای کوتاه شبکه‌های عصبی برگشتی
Star

متن اصلی از افشین عمیدی و شروین عمیدی
ترجمه شده توسط الیستر. بازبینی شده توسط عرفان نوری.

نمای کلی

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


به‌ازای هر گام زمانی $t$، فعال‌سازی $a^{< t >}$ و خروجی $y^{< t >}$ به‌صورت زیر بیان می‌شود:

\[\boxed{a^{< t >}=g_1(W_{aa}a^{< t-1 >}+W_{ax}x^{< t >}+b_a)}\quad\textrm{and}\quad\boxed{y^{< t >}=g_2(W_{ya}a^{< t >}+b_y)}\]
که در آن $W_{ax}, W_{aa}, W_{ya}, b_a, b_y$ ضرایبی‌اند که در راستای زمان به ‌اشتراک گذاشته می‌شوند و $g_1, g_2$ توابع فعال‌سازی‌ هستند.


مزایا و معایب معماری RNN به‌صورت خلاصه در جدول زیر آورده شده‌اند:

مزایا معایب
امکان پردازش ورودی با هر طولی •
اندازه‌ی مدل مطابق با اندازه‌ی ورودی افزایش نمی‌یابد •
اطلاعات (زمان‌های) گذشته در محاسبه در نظر گرفته می‌شود •
وزن‌ها در طول زمان به‌ اشتراک گذاشته می‌شوند •
محاسبه کند می‌شود •
دشوار بودن دسترسی به اطلاعات مدت‌ها پیش •
در نظر نگرفتن ورودی‌های بعدی در وضعیت جاری •

کاربردهایRNN ها مدل‌های RNN غالباً در حوزه‌ی پردازش زبان طبیعی و حوزه‌ی بازشناسایی گفتار به کار می‌روند. کاربردهای مختلف آنها به صورت خلاصه در جدول زیر آورده شده‌اند:

نوع RNN نگاره مثال
یک به یک
$T_x=T_y=1$
شبکه‌ی عصبی سنتی
یک به چند
$T_x=1, T_y>1$
تولید موسیقی
چند به یک
$T_x>1, T_y=1$
دسته‌بندی حالت احساسی
چند به چند
$T_x=T_y$
بازشناسایی موجودیت اسمی
چند به چند
$T_x\neq T_y$
ترجمه ماشینی

تابع خطا در شبکه عصبی برگشتی، تابع خطا $\mathcal{L}$ برای همه‌ی گام‌های زمانی براساس خطا در هر گام به صورت زیر محاسبه می‌شود:

\[\boxed{\mathcal{L}(\widehat{y},y)=\sum_{t=1}^{T_y}\mathcal{L}(\widehat{y}^{< t >},y^{< t >})}\]

انتشار معکوس در طول زمان انتشار معکوس در هر نقطه از زمان انجام می‌شود. در گام زمانی $T$، مشتق خطا $\mathcal{L}$ با توجه به ماتریس وزن $W$ به‌صورت زیر بیان می‌شود:

\[\boxed{\frac{\partial \mathcal{L}^{(T)}}{\partial W}=\sum_{t=1}^T\left.\frac{\partial\mathcal{L}^{(T)}}{\partial W}\right|_{(t)}}\]

کنترل وابستگی‌های بلندمدت

توابع فعال‌سازی پرکاربرد رایج‌ترین توابع فعال‌سازی به‌کاررفته در ماژول‌های RNN به شرح زیر است:

سیگموید تانژانت هذلولوی یکسو ساز
$\displaystyle g(z)=\frac{1}{1+e^{-z}}$ $\displaystyle g(z)=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}$ $\displaystyle g(z)=\max(0,z)$
Sigmoid Tanh RELU

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


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


انواع دروازه برای حل مشکل مشتق صفرشونده/منفجرشونده، در برخی از انواع RNN ها، دروازه‌های خاصی استفاده می‌شود و این دروازه‌ها عموما هدف معینی دارند. این دروازه‌ها عموما با نماد$\Gamma$ نمایش داده می‌شوند و برابرند با:

\[\boxed{\Gamma=\sigma(Wx^{< t >}+Ua^{< t-1 >}+b)}\]

که $W, U, b$ ضرایب خاص دروازه و $\sigma$ تابع سیگموید است. دروازه‌های اصلی به صورت خلاصه در جدول زیر آورده شده‌اند:

نوع دروازه نقش به‌کار رفته در
دروازه‌ی به‌روزرسانی $\Gamma_u$ چه میزان از گذشته اکنون اهمیت دارد؟ GRU, LSTM
دروازه‌ی ربط(میزان اهمیت) $\Gamma_r$ اطلاعات گذشته رها شوند؟ GRU, LSTM
دروازه‌ی فراموشی $\Gamma_f$ سلول حذف شود یا خیر؟ LSTM
دروازه‌ی خروجی $\Gamma_o$ چه میزان از (محتوای) سلول آشکار شود؟ LSTM

GRU/LSTM واحد برگشتی دروازه‌دار (GRU) و واحدهای حافظه‌ی کوتاه‌-مدت طولانی (LSTM) مشکل مشتق صفرشونده که در RNNهای سنتی رخ می‌دهد، را بر طرف می‌کنند، درحالی‌که LSTM تعمیمی از GRU است. در جدول زیر، معادله‌های توصیف‌کنندهٔ هر معماری به صورت خلاصه آورده شده‌اند:

توصیف واحد برگشتی دروازه‌دار (GRU) حافظه‌ی کوتاه-مدت طولانی (LSTM)
$\tilde{c}^{< t >}$ $\textrm{tanh}(W_c[\Gamma_r\star a^{< t-1 >},x^{< t >}]+b_c)$ $\textrm{tanh}(W_c[\Gamma_r\star a^{< t-1 >},x^{< t >}]+b_c)$
$c^{< t >}$ $\Gamma_u\star\tilde{c}^{< t >}+(1-\Gamma_u)\star c^{< t-1 >}$ $\Gamma_u\star\tilde{c}^{< t >}+\Gamma_f\star c^{< t-1 >}$
$a^{< t >}$ $c^{< t >}$ $\Gamma_o\star c^{< t >}$
وابستگی‌ها

نکته: نشانه‌ی $\star$ نمایان‌گر ضرب عنصربه‌عنصر دو بردار است.


انواع RNN ها جدول زیر سایر معماری‌های پرکاربرد RNN را به صورت خلاصه نشان می‌دهد.

دوسویه (BRNN) عمیق (DRNN)

یادگیری بازنمائی کلمه

در این بخش، برای اشاره به واژگان از $V$ و برای اشاره به اندازه‌ی آن از $|V|$ استفاده می‌کنیم.

انگیزه و نمادها

روش‌های بازنمائی دو روش اصلی برای بازنمائی کلمات به صورت خلاصه در جدول زیر آورده شده‌اند:

بازنمائی تک‌فعال تعبیه‌ی کلمه
نشان داده شده با نماد $o_w$ •
رویکرد ساده، فاقد اطلاعات تشابه •
نشان داده شده با نماد $e_w$ •
به‌حساب‌آوردن تشابه کلمات •

ماتریس تعبیه به‌ ازای کلمه‌ی مفروض $w$ ، ماتریس تعبیه $E$ ماتریسی است که بازنمائی تک‌فعال $o_w$ را به نمایش تعبیه‌ی $e_w$ نگاشت می‌دهد:

\[\boxed{e_w=Eo_w}\]

نکته: یادگیری ماتریس تعبیه را می‌توان با استفاده از مدل‌های درست‌نمایی هدف/متن(زمینه) انجام داد.


(نمایش) تعبیه‌ی کلمه

Word2vecالگوریتم Word2vec چهارچوبی است که با محاسبه‌ی احتمال قرار گرفتن یک کلمه‌ی خاص در میان سایر کلمات، تعبیه‌های کلمه را یاد می‌گیرد. مدل‌های متداول شامل Skip-gram، نمونه‌برداری منفی و CBOW هستند.



Skip-gram مدل اسکیپ‌گرام word2vec یک وظیفه‌ی یادگیری بانظارت است که تعبیه‌های کلمه را با ارزیابی احتمال وقوع کلمه‌ی $t$ هدف با کلمه‌ی زمینه $c$ یاد می‌گیرد. با توجه به اینکه نماد $\theta_t$ پارامتری مرتبط با $t$ است، احتمال $P(t|c)$ به‌صورت زیر به‌دست می‌آید:

\[\boxed{P(t|c)=\frac{\exp(\theta_t^Te_c)}{\displaystyle\sum_{j=1}^{|V|}\exp(\theta_j^Te_c)}}\]

نکته: جمع کل واژگان در بخش مقسوم‌الیه بیشینه‌ی‌هموار باعث می‌شود که این مدل از لحاظ محاسباتی گران شود. مدل CBOW مدل word2vec دیگری ست که از کلمات اطراف برای پیش‌بینی یک کلمهٔ مفروض استفاده می‌کند.


نمونه‌گیری منفی مجموعه‌ای از دسته‌بندی‌های دودویی با استفاده از رگرسیون لجستیک است که مقصودش ارزیابی احتمال ظهور همزمان کلمه‌ی مفروض هدف و کلمه‌ی مفروض زمینه است، که در اینجا مدل‌ها براساس مجموعه $k$ مثال منفی و 1 مثال مثبت آموزش می‌بینند. با توجه به کلمه‌ی مفروض زمینه $c$ و کلمه‌ی مفروض هدف $t$، پیش‌بینی به صورت زیر بیان می‌شود:

\[\boxed{P(y=1|c,t)=\sigma(\theta_t^Te_c)}\]

نکته: این روش از لحاظ محاسباتی ارزان‌تر از مدل skip-gram است.


GloVe مدل GloVe، مخفف بردارهای سراسری بازنمائی کلمه، یکی از روش‌های تعبیه کلمه است که از ماتریس هم‌رویدادی $X$ استفاده می‌کند که در آن هر $X_{i,j}$ به تعداد دفعاتی اشاره دارد که هدف $i$ با زمینهٔ $j$ رخ می‌دهد. تابع هزینه‌ی $J$ به‌صورت زیر است:

\[\boxed{J(\theta)=\frac{1}{2}\sum_{i,j=1}^{|V|}f(X_{ij})(\theta_i^Te_j+b_i+b_j'-\log(X_{ij}))^2}\]

که در آن $f$ تابع وزن‌دهی است، به‌طوری که $X_{i,j}=0\Longrightarrow f(X_{i,j})=0$. با توجه به تقارنی که $e$ و $\theta$ در این مدل دارند، نمایش تعبیه‌ی نهایی کلمه‌ $e_w^{(\textrm{final})}$ به صورت زیر محاسبه می‌شود:

\[\boxed{e_w^{(\textrm{final})}=\frac{e_w+\theta_w}{2}}\]

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


مقایسه‌ی کلمات

شباهت کسینوسی شباهت کسینوسی بین کلمات $w_1$ و $w_2$ به ‌صورت زیر بیان می‌شود:

\[\boxed{\textrm{similarity}=\frac{w_1\cdot w_2}{||w_1||\textrm{ }||w_2||}=\cos(\theta)}\]

نکته: $\theta$ زاویهٔ بین کلمات $w_1$ و $w_2$ است.


t-SNE $t$-SNE (نمایش تعبیه‌ی همسایه‌ی تصادفی توزیع‌شده توسط توزیع $t$) روشی است که هدف آن کاهش تعبیه‌های ابعاد بالا به فضایی با ابعاد پایین‌تر است. این روش در تصویرسازی بردارهای کلمه در فضای 2 بعدی کاربرد فراوانی دارد.


مدل زبانی

نمای کلی هدف مدل زبان تخمین احتمال جمله‌ی $P(y)$ است.


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


سرگشتگی مدل‌های زبانی معمولاً با معیار سرگشتی، که با PP هم نمایش داده می‌شود، سنجیده می‌شوند، که مقدار آن معکوس احتمال یک مجموعه‌ داده است که تقسیم بر تعداد کلمات $T$ می‌شود. هر چه سرگشتگی کمتر باشد بهتر است و به صورت زیر تعریف می‌شود:

\[\boxed{\textrm{PP}=\prod_{t=1}^T\left(\frac{1}{\sum_{j=1}^{|V|}y_j^{(t)}\cdot \widehat{y}_j^{(t)}}\right)^{\frac{1}{T}}}\]

نکته: PP عموما در $t$-SNE کاربرد دارد.


ترجمه ماشینی

نمای کلی مدل ترجمه‌ی ماشینی مشابه مدل زبانی است با این تفاوت که یک شبکه‌ی رمزنگار قبل از آن قرار گرفته است. به همین دلیل، گاهی اوقات به آن مدل زبان شرطی می‌گویند. هدف آن یافتن جمله $y$ است بطوری که:

\[\boxed{y=\underset{y^{< 1 >}, ..., y^{< T_y >}}{\textrm{arg max}}P(y^{< 1 >},...,y^{< T_y >}|x)}\]

جستجوی پرتو یک الگوریتم جستجوی اکتشافی است که در ترجمه‌ی ماشینی و بازتشخیص گفتار برای یافتن محتمل‌ترین جمله‌ی $y$ باتوجه به ورودی مفروض $x$ بکار برده می‌شود.

• گام 1: یافتن $B$ کلمه‌ی محتمل برتر $y^{< 1 >}$
• گام 2: محاسبه احتمالات شرطی $y^{< k >}|x,y^{< 1 >},...,y^{< k-1 >}$
• گام 3: نگه‌داشتن $B$ ترکیب برتر $x,y^{< 1>},...,y^{< k >}$، خاتمه فرآیند با کلمه‌ی توقف



نکته: اگر پهنای پرتو 1 باشد، آنگاه با جست‌وجوی حریصانهٔ ساده برابر خواهد بود.


پهنای پرتو پهنای پرتوی $B$ پارامتری برای جستجوی پرتو است. مقادیر بزرگ $B$ به نتیجه بهتر منتهی می‌شوند اما عملکرد آهسته‌تری دارند و حافظه را افزایش می‌دهند. مقادیر کوچک $B$ به نتایج بدتر منتهی می‌شوند اما بار محاسباتی پایین‌تری دارند. مقدار استاندارد $B$ حدود 10 است.


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

\[\boxed{\textrm{Objective } = \frac{1}{T_y^\alpha}\sum_{t=1}^{T_y}\log\Big[p(y^{< t >}|x,y^{< 1 >}, ..., y^{< t-1 >})\Big]}\]

تذکر: پارامتر $\alpha$ را می‌توان تعدیل‌کننده نامید و مقدارش معمولا بین 0.5 و 1 است.


تحلیل خطا زمانی‌که ترجمه‌ی پیش‌بینی‌شده‌ی $\widehat{y}$ ی به‌دست می‌آید که مطلوب نیست، می‌توان با انجام تحلیل خطای زیر از خود پرسید که چرا ترجمه $y^*$ خوب نیست:

قضیه $P(y^*|x)>P(\widehat{y}|x)$ $P(y^*|x)\leqslant P(\widehat{y}|x)$
ریشه‌ی مشکل جستجوی پرتوی معیوب RNN معیوب
راه‌حل افزایش پهنای پرتو امتحان معماری‌های مختلف •
استفاده از تنظیم‌کننده •
جمع‌آوری داده‌های بیشتر •

امتیاز Bleu جایگزین ارزشیابی دوزبانه (bleu) میزان خوب بودن ترجمه ماشینی را با محاسبه‌ی امتیاز تشابه برمبنای دقت ان‌گرام اندازه‌گیری می‌کند. (این امتیاز) به صورت زیر تعریف می‌شود:

\[\boxed{\textrm{bleu score}=\exp\left(\frac{1}{n}\sum_{k=1}^np_k\right)}\]

که $p_n$ امتیاز bleu تنها براساس ان‌گرام است و به صورت زیر تعریف می‌شود:

\[p_n=\frac{\displaystyle\sum_{\textrm{n-gram}\in\widehat{y}}\textrm{count}_{\textrm{clip}}(\textrm{n-gram})}{\displaystyle\sum_{\textrm{n-gram}\in\widehat{y}}\textrm{count}(\textrm{n-gram})}\]

تذکر: ممکن است برای پیشگیری از امتیاز اغراق آمیز تصنعیbleu ، برای ترجمه‌های پیش‌بینی‌شده‌ی کوتاه از جریمه اختصار استفاده شود.


ژرف‌نگری

مدل ژرف‌نگری این مدل به RNN این امکان را می‌دهد که به بخش‌های خاصی از ورودی که حائز اهمیت هستند توجه نشان دهد که در عمل باعث بهبود عملکرد مدل حاصل‌شده خواهد شد. اگر $\alpha^{< t, t'>}$ به معنای مقدار توجهی باشد که خروجی $y^{< t >}$ باید به فعال‌سازی $a^{< t' >}$ داشته باشد و $c^{< t >}$ نشان‌دهنده‌ی زمینه (متن) در زمان $t$ باشد، داریم:

\[\boxed{c^{< t >}=\sum_{t'}\alpha^{< t, t' >}a^{< t' >}}\quad\textrm{with}\quad\sum_{t'}\alpha^{< t,t' >}=1\]

نکته: امتیازات ژرف‌نگری عموما در عنوان‌سازی متنی برای تصویر (image captioning) و ترجمه ماشینی کاربرد دارد.



وزن ژرف‌نگری مقدار توجهی که خروجی $y^{< t >}$ باید به فعال‌سازی $a^{< t' >}$ داشته باشد به‌وسیله‌ی $\alpha^{< t,t' >}$ به‌دست می‌آید که به‌صورت زیر محاسبه می‌شود:

\[\boxed{\alpha^{< t,t' >}=\frac{\exp(e^{< t,t' >})}{\displaystyle\sum_{t''=1}^{T_x}\exp(e^{< t,t'' >})}}\]

نکته: پیچیدگی محاسباتی به نسبت $T_x$ از نوع درجه‌ی دوم است.