CS ۲۲۹ - یادگیری ماشین

راهنمای کوتاه یادگیری عمیق

Star

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

شبکه‌های عصبی

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

معماری واژه معماری در شبکه‌های عصبی در شکل زیر توصیف شده است:

Illustration

با نمایش $i$ به عنوان لایه $i$ام و $j$ به عنوان واحد $j$ام پنهان آن لایه، داریم:

\[\boxed{z_j^{[i]}={w_j^{[i]}}^Tx+b_j^{[i]}}\]

که به ترتیب $w$، $b$، و $z$ وزن، پیش‌قدر، و خروجی لایه هستند.


تابع فعال‌سازی توابع فعال‌سازی (Activation function) در انتهای واحد پنهان برای معرفی پیچیدگی غیر خطی به مدل استفاده می‌شوند. در اینجا رایج‌ترین آنها نمایش داده شده است:

سیگموئید تانژانت هذلولوی یکسو ساز یکسو ساز نشتی‌دار
$g(z)=\displaystyle\frac{1}{1+e^{-z}}$ $g(z)=\displaystyle\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}$ $g(z)=\textrm{max}(0,z)$ $g(z)=\textrm{max}(\epsilon z,z)$
$\epsilon\ll1$ و
Illustration Illustration Illustration Illustration

خطای آنتروپی متقاطع در مضمون شبکه‌های عصبی، عموما از تابع خطای آنتروپی متقاطع (Cross-entropy loss) $L(z, y)$ استفاده می‌شود که به صورت زیر تعریف می‌شود:

\[\boxed{L(z,y)=-\Big[y\log(z)+(1-y)\log(1-z)\Big]}\]

نرخ یادگیری نرخ یادگیری (Learning rate) اغلب با نماد $\alpha$ و گاهی اوقات با نماد $\eta$ نمایش داده می‌شود و بیانگر سرعت (گام) بروزرسانی وزن‌ها است که میتواند مقداری ثابت یا به سازگارشونده تغییر کند. محبوب‌ترین روش حال حاضر Adam نام دارد، متدی است که نرخ یادگیری را در حین فرآیند آموزش تنظیم می‌کند.


انتشار معکوس انتشار معکوس (Backpropagation) روشی برای بروزرسانی وزن‌ها با توجه به خروجی واقعی و خروجی مورد انتظار در شبکه‌ی عصبی است. مشتق نسبت به وزن $W$ توسط قاعده‌ی زنجیری محاسبه می‌شود و به شکل زیر است:

\[\boxed{\frac{\partial L(z,y)}{\partial w}=\frac{\partial L(z,y)}{\partial a}\times\frac{\partial a}{\partial z}\times\frac{\partial z}{\partial w}}\]

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

\[\boxed{w\longleftarrow w-\alpha\frac{\partial L(z,y)}{\partial w}}\]

بروزرسانی وزن‌ها در یک شبکه‌ی عصبی، وزن‌ها به صورت زیر بروزرسانی می‌شوند:


گام ۱: یک دسته از داده‌های آموزشی را تهیه می‌کنیم.

گام ۲: الگوریتم انتشار مستقیم را برای بدست آوردن خطای مربوطه اجرا می‌کنیم.

گام ۳: خطا را انتشار معکوس می‌دهیم تا گرادیان‌ها به دست بیایند.

گام ۴: از گرادیان‌ها برای بروزرسانی وزن‌های شبکه استفاده می‌کنیم.


برون‌اندازی برون‌اندازی (Dropout) یک روش برای جلوگیری از بیش‌برازش بر روی داده‌های آموزشی با حذف تصادفی واحدها در یک شبکه‌ی عصبی است. در عمل، واحدها با احتمال $p$ حذف یا با احتمال $1-p$ حفظ می‌شوند.


شبکه‌های عصبی پیچشی (کانولوشنی)

الزامات لایه کانولوشنی با نمایش $W$ اندازه توده‌ی ورودی، $F$ اندازه نورون‌های لایه‌ی کانولوشنی، $P$ اندازه‌ی حاشیه‌ی صفر، تعداد نورون‌های $N$ که در توده‌ی داده شده قرار می‌گیرند برابر است با:

\[\boxed{N=\frac{W-F+2P}{S}+1}\]

نرمال‌سازی دسته‌ای (Batch normalization) یک مرحله از فراعامل‌های $\gamma$ و $\beta$ که دسته‌ی $\{x_i\}$ را نرمال می‌کند در زیر آمده است.نماد $\mu_B$ و $\sigma^2_B$ به میانگین و واریانس دسته‌ای که میخواهیم آن را اصلاح کنیم اشاره دارد که به صورت زیر است:

\[\boxed{x_i\longleftarrow\gamma\frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}+\beta}\]
معمولا بعد از یک لایه‌ی تمام‌متصل یا لایه‌ی کانولوشنی و قبل از یک لایه‌ی غیرخطی اعمال می‌شود و امکان استفاده از نرخ یادگیری بالاتر را می‌دهد و همچنین باعث می‌شود که وابستگی شدید مدل به مقداردهی اولیه کاهش یابد.


شبکه‌های عصبی بازگشتی

انواع دروازه‌ها انواع مختلف دروازه‌هایی که در یک شبکه‌ی عصبی بازگشتی معمولی به آنها برمی‌خوریم در زیر آمده‌اند:

دروازه‌ی ورودی دروازه‌ی فراموشی دروازه دروازه‌ی خروجی
در سلول بنویسد یا خیر؟ سلول را پاک کند یا خیر؟ چه مقدار در سلول بنویسد؟ چه مقدار برای سلول آشکار کند؟

LSTM یک شبکه‌ی حافظه‌ی کوتاه‌-مدت طولانی (LSTM) یک نوع از مدل‌های RNN است که مشکل ناپدید شدن (صفر شدن) گرادیان را با اضافه کردن «دروازه‌ی فراموشی» حل می‌کند.


یادگیری تقویتی و کنترل

هدف یادگیری تقویتی برای یک عامل این است که یاد بگیرد در یک محیط چگونه تکامل یابد.

تعاریف

فرایندهای تصمیم‌گیری مارکوف یک فرآیند تصمیم‌گیری مارکوف (به اختصار MDP) شامل پنج‌تایی $(\mathcal{S}, \mathcal{A}, \{P_{s, a}\}, \gamma, R)$ است به طوری که:


• $\mathcal{S}$ مجموعه‌ی حالات است

• $\mathcal{A}$ مجموعه‌ای از کنش‌ها است

• $\{P_{s, a}\}$ احتمالات انتقال وضعیت برای هر $a\in\mathcal{A}$ و $s\in\mathcal{S}$ هستند.

• $\gamma \in [0, 1[$ ضریب تخفیف است.

• $R:\mathcal{S}\times\mathcal{A}\longrightarrow\mathbb{R}$ یا $R:\mathcal{S}\longrightarrow\mathbb{R}$ تابع پاداشی است که الگوریتم سعی دارد آن را بیشینه بکند.


خط‌مشی یک خط‌مشی $\pi$ تابعی است $\pi:\mathcal{S}\longrightarrow\mathcal{A}$ که حالات را به کنش‌ها نگاشت می‌کند.

نکته: می‌گوییم ما در حال اجرای خط‌مشی $\pi$ هستیم اگر به ازای وضعیت $s$ کنش $a = \pi(s)$ را اجرا کنیم.


تابع ارزش برای سیاست $\pi$ و وضعیت $s$، تابع ارزش $V^{\pi}$ را به صورت زیر تعریف می‌کنیم:

\[\boxed{V^\pi(s)=E\Big[R(s_0)+\gamma R(s_1)+\gamma^2 R(s_2)+...|s_0=s,\pi\Big]}\]

معادله‌ی بلمن معادله‌ی بلمن بهینه‌ی تابع ارزش $V^{\pi^*}$ مربوط به خط‌مشی بهینه‌ی $\pi^*$ را مشخص می‌کند:

\[\boxed{V^{\pi^*}(s)=R(s)+\max_{a\in\mathcal{A}}\gamma\sum_{s'\in S}P_{sa}(s')V^{\pi^*}(s')}\]

نکته: سیاست بهینه‌ی $\pi^*$ برای وضعیت $s$ به این صورت است که:

\[\boxed{\pi^*(s)=\underset{a\in\mathcal{A}}{\textrm{argmax}}\sum_{s'\in\mathcal{S}}P_{sa}(s')V^*(s')}\]

الگوریتم تکرار ارزش الگوریتم تکرار ارزش دو گام دارد:

۱) ارزش را مقداردهی اولیه می‌کنیم:

\[\boxed{V_0(s)=0}\]

۲) ارزش را با توجه به ارزش‌های قبلی تکرار می‌کنیم:

\[\boxed{V_{i+1}(s)=R(s)+\max_{a\in\mathcal{A}}\left[\sum_{s'\in\mathcal{S}}\gamma P_{sa}(s')V_i(s')\right]}\]

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

\[\boxed{Q(s,a)\leftarrow Q(s,a)+\alpha\Big[R(s,a,s')+\gamma\max_{a'}Q(s',a')-Q(s,a)\Big]}\]