یادگیری فرهنگ لغت پراکنده

بندانگشتی|کاهش نویز در یک تصویر
رمزگذاری پراکنده (Sparse Coding) یک روش یادگیری بازنمایی (representational learning) است که سعی بر یافتن نمایش پراکنده‎‌ای از داده‌های ورودی (همچنین شناخته‌ شده به عنوان رمزگذاری پراکنده یا Sparse Coding) به صورت ترکیب خطی‌ای از مولفه‌های تشکیل‌دهنده آن‌ها دارد. به این مولفه‌ها *اتم* گفته می‌شود و در کنار یکدیگر یک *لغت‌نامه (ِdictionary)* تشکیل می‌دهند. اتم‌های موجود در هر لغت‌نامه لزوما متعامد نیستند، و ممکن است یک مجموعه پوشای بیش از حد کامل (over-complete spanning set) باشند. شرایط این مسئله همچنین اجازه می‌دهد ابعاد سیگنال‌های نمایش‌داده‌شده از سیگنال‌های مشاهده‌شده بیشتر باشد. این دو ویژگی باعث وجود اتم‌های به‌ظاهر بدون استفاده می‌شوند ولی در عین حال، پراکندگی و انعطاف‌پذیری نمایش را بهبود می‌بخشند.

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

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

## صورت‌بندی مسئله
با داشتن داده ورودی X = [x_1, ..., x_K], x_i \in \mathbb{R}^d می‌خواهیم دیکشنری \mathbf{D} \in \mathbb{R}^{d \times n}: D = [d_1, ..., d_n] و نمایش\mathbf{R} \in \mathbb{R}^{n}: R = [r_1, ..., r_n] را طوری به دست آوریم که \|X-\mathbf{D}R\|^2_F هم کمینه و هم تا حد ممکن پراکنده (sparse) باشد. این مسئله به صورت زیر بهینه‌سازی زیر فرمول‌بندی می‌شود: 

\underset{\mathbf{D} \in \mathcal{C}, r_i \in \mathbb{R}^n}{\text{argmin}} \sum_{i=1}^K\|x_i-\mathbf{D}r_i\|_2^2+\lambda \|r_i\|_0، که در آن \mathcal{C} \equiv \{\mathbf{D} \in \mathbb{R}^{d \times n}: \|d_i\|_2 \leq 1 \,\, \forall i =1,...,n \}، \lambda>0

محدودیت \mathcal{C}، دیکشنری \mathbf{D} را طوری محدود می‌کند که اتم‌ها مقادیر بالایی به خود نگیرند و از مقادیر کم ولی غیرصفر r_i جلوگیری شود. 

مسئله کمینه‌سازی بالا به دلیل ℓ<sub>0</sub>-"norm" یک مسئله محدب نیست و حل کردن آن NP-hard است. در بسیاری از مسائل، استفاده از LASSO باعث ایجاد پراکندگی می‌شود و مسئله بالا با ثابت نگه داشتن یکی از متغیرهای \mathbf{D} و \mathbf{R} به یک مسئله بهینه‌سازی محدب تبدیل می‌شود.

## الگوریتم‌ها
با وجود اینکه مسئله بهینه‌سازی ذکر شده در بالا می‌تواند به عنوان یک مسئله محدب نسبت به لغت‌نامه یا رمزگذاری پراکنده با ثابت بودن یکی از این دو حل شود، اغلب الگوریتم‌ها بر پایه تصحیح مقدار یکی از مولفه‎‌ها و سپس دیگری به صورت تکرارشونده عمل می‌کنند.

مسئله یافتن رمزگذاری پراکنده بهینه R با فرض لغت‌نامه \mathbf{D} با عنوان تقریب پراکنده شناخته می‌شود. الگوریتم‌هایی مانند تطبیق تعقیب و لسو توسعه داده شده و در الگوریتم‌های توضیح داده شده در پایین‌، به کار گرفته می‌شوند.

### روش جهت‌های بهینه (MOD)
روش جهت‌های بهینه یا MOD یکی از اولین الگوریتم‌های ایجاد شده برای حل مسئله یادگیری لغت‌نامه پراکنده است. ایده اصلی این الگوریتم حل کردن مسئله کمینه‌سازی منوط به تعداد محدودی از مولفه‌های غیر صفر از نمایش بردار زیر است:

\min_{\mathbf{D}, R}\{\|X-\mathbf{D}R\|^2_F\} \,\, \text{s.t.}\,\, \forall i \,\,\|r_i\|_0 \leq T 

که در آن، F نشان‌دهنده نرم فربنیوس است. 

MOD بین به دست آوردن رمزگذاری پراکنده به وسیله روشی مانند تطبیق تعقیب و تصحیح لغت‌نامه با استفاده از محاسبه حل تحلیلی مسئله که برابر \mathbf{D} = XR^+  است که در آن R^+  یک معکوس مور-پنروز است، نوسان می‌کند. پس از هر بار تصحیح، \mathbf{D}  دوباره نرمال‌سازی شده تا با محدودیت مسئله سازگار شود و رمزگذاری پراکنده جدید به دست می‌آید. این فرایند تا همگرایی (یا تا زمانی که تغییرات در هر مرحله به اندازه کافی کوچک باشند) تکرار می‌شود.

MOD یک روش بسیار کارآمد برای داده ورودی با ابعاد کم است و تنها به چند تکرار برای همگرایی نیاز دارد. با این حال، به علت پیچیدگی محاسباتی بالای عملیات وارونگی ماتریس، محاسبه سود وارونه R^+  در بسیاری از موارد از نظر محاسباتی دشوار است. این مشکل باعث توسعه‌ یافتن روش‌های دیگر یادگیری دیکشنری پراکنده شده است.

### K-SVD
K-SVD الگوریتمی است که در بطن خود از SVD برای تصحیح یک به یک اتم‌های موجود در یک دیکشنری استفاده می‌کند و  اساسا تعمیمی از الگوریتم خوشه‌بندی کی-میانگین است.در این الگوریتم، هر مولفه داده ورودی x_i را بر حسب ترکیب خطی از حداکثر T_0  مولفه به شیوه مشابه با MOD رمزگذاری می‌شود:

\min_{\mathbf{D}, R}\{\|X-\mathbf{D}R\|^2_F\} \,\, \text{s.t.}\,\, \forall i \,\,\|r_i\|_0 \leq T_0 

در این الگوریتم، ابتدا دیکشنری ثابت نگه داشته می‌شود و بهترین مقدار R  متناظر با آن به دست می‌آید، سپس اتم‌های دیکشنری به به صورت زیر به شکل تکرار‌شونده تصحیح می‌شوند:


\|X - \mathbf{D}R\|^2_F =  \left| X - \sum_{i = 1}^K d_i x^i_T\right|^2_F = \| E_k - d_k x^k_T\|^2_F


قدم بعدی الگوریتم شامل تقریب رنک 1 ماتریس باقی‌مانده (residual matrix) 
E_k
، تصحیح 
d_k
 و اطمینان از پراکندگی 
x_k
 پس از تصحیح است. این الگوریتم، الگوریتم استاندارد برای یادگیری دیکشنری پراکنده تلقی می‌شود و در بسیاری از کاربردها استفاده می‌شود. با این حال، این الگوریتم نیز همانند MOD تنها برای داده‌های کم‌بعد به خوبی کار می‌کند و همچنین احتمال گیر افتادن در کمینه موضعی نیز وجود دارد.

### نزول گرادیان تصادفی
ایده این الگوریتم، تصحیح دیکشنری به وسیله گرادیان تصادفی مرتبه اول و افکندن آن روی مجموعه محدودیت \mathcal{C} است. i-امین گام الگوریتم را می‌توان به صورت زیر نوشت:

\mathbf{D}_i = \text{proj}_{\mathcal{C}} \left\{\mathbf{D}_{i-1}-\delta_i\nabla_{\mathbf{D}}\sum_{i \in S}\|x_i-\mathbf{D}r_i\|_2^2+\lambda\|r_i\|_1 \right\}، که در آن S زیرمجموعه تصادفی‌ای از \{1...K\} و \delta_i گرادیان در این گام است.

### روش دوگانه لاگرانژ
این الگوریتم بر پایه یک مسئله لاگرانژ دوگانه طراحی شده است و روشی کارآمد برای حل این مسئله است. لاگرانژی زیر را در نظر بگیرید:

\mathcal{L}(\mathbf{D}, \Lambda) = \text{tr}\left((X-\mathbf{D}R)^T(X-\mathbf{D}R)\right) + \sum_{j=1}^n\lambda_j \left({\sum_{i=1}^d\mathbf{D}_{ij}^2-c} \right)، که در آن c یک محدودیت روی نرم اتم‌ها است و \lambda_i متغیرهای دوگانه تشکیل‌دهنده ماتریس قطری \Lambda هستند.

می‌توانیم دوگانه لاگرانژ را به صورت تحلیلی زیر بنویسیم:

\mathcal{D}(\Lambda) = \min_{\mathbf{D}}\mathcal{L}(\mathbf{D}, \Lambda) = \text{tr}(X^TX-XR^T(RR^T+\Lambda)^{-1}(XR^T)^T-c\Lambda)

پس از اعمال روش بهینه‌سازی برای مقادیر دوگانه، مقدار \mathbf{D} به دست می‌آید:

\mathbf{D}^T=(RR^T+\Lambda)^{-1}(XR^T)^T

حل کردن این مسئله از لحاظ محاسباتی بسیار ساده‌تر است زیرا تعداد متغیرهای دوگانه از تعداد متغیرهای مسئله اولیه بسیار کمتر است.

### LASSO
در این روش، مسئله بهینه‌سازی به شکل زیر فرمول‌بندی می‌شود:

\min_{r \in \mathbb{R}^n}\{\,\,\|r\|_1\} \,\, \text{subject to}\,\,\|X-\mathbf{D}R\|^2_F ، که در آن \epsilon  خطای مجاز در LASSO بازسازی‌شده است.

با استفاده از این معادله، مقدار r_i  با استفاده از کمینه کردن خطای مربع کمینه با محدودیت L1-norrm در بردار حل به دست می‌آید:

\min_{r \in \mathbb{R}^n} \,\, \dfrac{1}{2}\,\,\|X-\mathbf{D}r\|^2_F + \lambda \,\,\|r\|_1 

و با حل این معادله، حل بهینه به دست می‌آید.

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

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

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

## جستارهای وابسته

* تقریب پراکنده
* PCA پراکنده
* K-SVD
* Matrix factorization
* Neural sparse coding

## منابع


رده:یادگیری بی‌نظارت