SVM یا ماشین بردار پشتیبان

1402/06/14

دسترسی سریع


مقدمه

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

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

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

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

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

پس از اینکه هدفمان از مدلسازی رفتار برنامه را مشخص کردیم، حالا باید یک روش مدلسازی را انتخاب کنیم. در این گزارش تاکید ما بر روی مدلسازی به روش طبقه بندی با استفاده از SVM است.

   مدلسازی رفتار نرم‌افزار با استفاده از روش طبقه‌بندی

فرض کنید که اطلاعات حاصل از رفتارهای مختلف یک نرم‌افزار را به صورت مجموعه زیر نمایش دهیم:

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

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

     روش طبقه‌بندی ماشین بردار پشتیبان

فرض کنیم مجموعه نقاط داده را در اختیار داریم و می‌خواهیم آنها را به دو طبقه تفکیک کنیم. هر یک بردار  بعدی از اعداد حقیقی است که در واقع همان متغیرهای بیانگر رفتار نرم افزار هستند.

روشهای طبقه بندی خطی، سعی دارند که با ساختن یک ابرسطح ( که عبارت است از یک معادله خطی)، داده‌ها را از هم تفکیک کنند. روش طبقه بندی ماشین بردار پشتیبان که یکی از روشهای طبقه‌بندی خطی است، بهترین ابرسطحی را پیدا می‌کند که با حداکثر فاصله(maximum margin)، داده‌های مربوط به دو طبقه را از هم تفکیک کند. به منظور درک بهتر مطلب، در شکل 1 تصویری از یک مجموعه داده متعلق به دو کلاس نشان داده شده که روش ماشین بردار پشتیبان بهترین ابرسطح را برای جداسازی آنها انتخاب می کند..

Untitled11

شکل 1 : ابرسطح با حداکثر مرزِ جداکننده به همراه مرزهای جداکننده برای طبقه بندی نمونه داده‌های مربوط به دو طبقه متفاوت. نمونه‌های قرار گرفته بر روی مرزها بردارهای پشتیبان نام دارند.

    نحوه تشکیل ابرسطح جداکننده توسط ماشین بردار پشتیبان

در این بخش می خواهیم نحوه ساخت ابرسطح جداکننده را بر روی یک مثال با جزئیات شرح دهیم. تصویر دقیقی از نحوه تشکیل ابرسطح جداکننده توسط ماشین بردار پشتیبان در شکل 2 نشان داده شده است.

شکل 2 : نحوه ساخت ابرسطح جداکننده بین دو طبقه داده در فضای دو بعدی

ddd

شکل 2 : نحوه ساخت ابرسطح جداکننده بین دو طبقه داده در فضای دو بعدی

 

ابتدا یک convex (پوسته محدب) در اطراف نقاط هر کدام از کلاسها در نظر بگیرید. در شکل 2 در اطراف نقاط مربوط به کلاس و نقاط مربوط به کلاس  پوسته محدب رسم شده است. خط خطی است که نزدیکترین فاصله بین دو پوسته محدب را نشان می دهد. که در واقع همان ابرسطح جداکننده است، خطی است که را از وسط نصف کرده و بر آن عمود است.

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

ایده اصلی این است که یک جداکننده مناسب انتخاب شود. منظور، جداکننده‌ای است که بیشترین فاصله را با نقاط همسایه از هر دو طبقه دارد. این جواب درواقع بیشترین مرز را با نقاط مربوط به دو طبقه مختلف دارد و می‌تواند با دو ابرسطح موازی که حداقل از یکی از نقاط دو طبقه عبور می‌کنند، کران‌دار شود. این بردارها، بردارهای پشتیبان نام دارند. فرمول ریاضی این دو ابرسطح موازی که مرز جداکننده را تشکیل می‌دهند در عبارات(1) و (2) نشان داده شده است:

(1)        w.x - b = 1

(2)       w.x - b = - 1

نکته قابل توجه این است که اگر داده‌های تعلیمی به صورت خطی تفکیک‌پذیر باشند، می‌توان دو ابرسطح مرزی را به گونه‌ای انتخاب کرد که هیچ داده‌ای بین آنها نباشد و سپس فاصله بین این دو ابرسطح موازی را به حداکثر رساند. با به کارگیری قضایای هندسی، فاصله این دو ابرسطح عبارت است از 2/|w| ، پس باید |w| را به حداقل رساند. همچنین باید از قرار گرفتن نقاط داده در ناحیه درون مرز جلوگیری کرد، برای این کار یک محدودیت ریاضی به تعریف فرمال اضافه می‌شود. برای هر ، با اعمال محدودیت‌های زیر اِطمینان حاصل می‌شود که هیچ نقطه‌ای در مرز قرار نمی‌گیرد:

(3)   برای داده‌های مربوط به طبقه اول           w.{x_i} - b \ge 1

(4)   برای داده‌های مربوط به طبقه دوم          w.{x_i} - b \le - 1

می‌توان این محدودیت را به صورت رابطه زیر نشان داد:

(5)                {c_i}(w.{x_i} - b) \ge 1,1 \le i \le n

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

به حداقل رساندن ، با درنظر گرفتن محدودیت زیر: {c_i}(w.{x_i} - b) \ge 1,1 \le i \le n

نظرات

هیچ نظری وجود ندارد.


افزودن نظر

مشاهده نقشه سایت
Copyright © 2017 - 2023 Khavarzadeh®. All rights reserved