در دنیای امروزی حجم اطلاعات دیجیتالی به صورت روز افزونی در حال افزایش است. در همین راستا، به جهت مدیریت و بررسی علمی این اطلاعات، نیاز به پردازش هوشمندانه و خودکار این اطلاعات بیش از پیش احساس می شود.
یکی از مهم ترین این پردازش ها که در فناوری اطلاعات و ارتباطات مورد نیاز است، دستهبندی خودکار این اطلاعات می باشد. دسته بندی در مسائل متنوعی در فناوری اطلاعات به کار گرفته می شود، در مسائلی مانند امنیت اطلاعات، شناسایی نفوزگری در شبکه، دسته بندی کاربران بر اساس اطلاعات شخصی، پردازش تصویر و در واقع شناسایی هر گونه الگو بر اساس نمونهها و اطلاعات پیشین. این پردازش می تواند دسته[1]ی نمونههای جدید که به مجموعه اطلاعات اضافه می شود را پیش بینی نماید. از این رو در هوش مصنوعی توجه خاصی به توسعه انواع روشهای دستهبندی هوشمند و خودکار شده است.
روشهای دستهبندی
دستهبندی یکی از مهمترین شاخههای یادگیری ماشین[2] است. دستهبندی به پیش بینی برچسب دسته[3] نمونه[4] بدون برچسب، بر اساس مجموعه نمونههای آموزشی برچسبدار (که قبلا به با کمک یک کارشناس دستهبندی شده اند) گفته می شود. درواقع دستهبندی روشی است که هدف آن، گروهبندی اشیا به تعدادی دسته یا گروه میباشد. در روشهای دستهبندی، با بهره گرفتن از اطلاعات بدست آمده از مجموعه نمونههای آموزشی، از فضای ویژگیها[5] به مجموعه برچسب دستهها نگاشتی بدست می آید که بر اساس آن، نمونههای بدون برچسب به یکی از دستهها نسبت داده می شود.
تفاوت روشها دستهبندی در چگونگی طراحی نگاشت است. در بعضی از آنها با بهره گرفتن از داده های آموزشی مدلی ایجاد می شود که بر اساس آن فضای ویژگیها به قسمت های مختلف تقسیم می شود که در آن، هر قسمت نشان دهنده یک دسته است. در این گونه روشهای دستهبندی از مدل برای پیش بینی دستهی نمونه بدون برچسب استفاده شده و از نمونههای آموزشی به طور مستقیم استفاده نمی شود. یک نمونه از این دستهبندها، دستهبندهای احتمالی[8] میباشد. این گونه الگوریتمها، از استنتاج آماری برای پیدا کردن بهترین دسته استفاده می کنند؛ برخلاف سایر دستهبندها که فقط بهترین کلاس را مشخص می کنند الگوریتمهای احتمالی به ازای هر دسته موجود یک احتمال را به عنوان تعلق نمونه به آن مشخص می کنند و کلاس برنده، بر اساس بیشترین احتمال انتخاب می شود. روشهای احتمالی در یادگیری ماشین معمولا با نام الگوریتمهای آماری نیز شناخته میشوند. در گروهی دیگر از روشهای دسته بندی، نمونه براساس خود مجموعه نمونهها و بدون ساختن مدل، به پیش بینی دستهی نمونه مورد نظر می پردازد. به این گونه الگوریتم های دستهبندی، نمونه- بنیاد[9] گفته می شود.
تاکنون الگوریتمهای متفاوتی به عنوان دستهبند ارائه شده اند. از جملهی آنها میتوان به الگوریتم نزدیک ترین همسایهها[10] [1] ، دستهبند بیز[11][2]، ماشین بردار پشتیبان[3] و شبکه عصبی[12][4] اشاره کرد.
اولین موضوعی که در مورد هر الگوریتم مورد توجه قرار میگیرد، کارایی و دقت آن الگوریتم است. در هوش مصنوعی، معیارهای متفاوتی وجود دارند که در مسائل مختلف و زیر شاخههای این علم استفاده می شود. در مورد کارایی یک دستهبند، به عنوان یکی از مسائل اصلی
هوش مصنوعی، روشهای متنوعی وجود دارد که در این قسمت بررسی شده اند.
معیار کارایی نظرگرفته شده برای یک دستهبند، ارتباط مستقیمی با کاربرد و ضمینه کار خاص آن دستهبند دارد. بنابراین در مسائل متفاوت، ممکن است معیارهای مختلفی برای اندازه گیری کارایی الگوریتم در نظرگرفته شود. همچنین همان طور که مشخص است، یک دستهبند که بتواند برای همه مسائل موجود بهترین جواب را ارائه دهد، وجود ندارد.
در بررسی آماری کارایی یک دستهبند، از یک مجموعه که شامل تعداد مشخصی نمونهی آموزشی دارای برچسب است استفاده می شود. برای این کار، قسمتی از این نمونهها و یا تمام مجموعه، به عنوان مجموعه آموزشی[13]، در اختیار دستهبند برای آموزش قرار میگیرد. پس از آموزش، دسته بند به وسیله زیرمجموعهای از نمونهها، به عنوان نمونههای آزمایشی، محک زده می شود. نمونههای موجود در مجموعهی آزمایشی، بسته به نوع آزمون کارایی، می تواند عضو مجموعه آموزشی بوده و یا متفاوت با آن باشند.
نرخ دستهبندی[14] یا صحت[15] پرکاربردترین و سادهترین معیار اندازه گیری کارایی هر دستهبند است. این معیار برابر است با نسبت تعداد نمونههای درست دستهبندی شده به تعداد کل نمونهها. براساس این تعریف، نرخ خطای دستهبندی از رابطه زیر بدست میآید:
مقادیر دقت[16] و بازخوانی[17] نیز معیارهای مناسبی برای ارزیابی دستهبندها میباشند. که اخیرا برای ارزیابی رقابت[18] بین اشتباه-مثبت[19] و درست-مثبت[20] استفاده می شود. در ادامه این معیارها معرفی می شود.
معیار بازخوانی : احتمال مثبت اعلام کردن نمونههای دسته مثبت.
معیار اختصاص[21]: احتمال منفی اعلام کردن نمونههای دسته منفی.
که در این معیارها، دسته مثبت، دسته مورد بررسی است و دسته منفی به سایر دستهها گفته می شود.
یک روش برای ارزیابی آماری دستهبند، تصدق متقابل[5] میباشد. در این تکنیک برای ارزیابی کارایی دستهبند، نمونهها را به صورت تصادفی به دو گروه که مکمل یکدیگر هستند، تقسیم می کنند. با یک گروه سیستم را آموزش داده و با گروه دیگر سیستم آموزش دیده را مورد آزمایش قرار میدهند. با این کار از تطبیق بیش از حد[23] مدل بر روی داده های آموزشی جلوگیری می شود و نتایج بدست آمده از ارزیابی، دارای درجه اطمینان بیشتر خواهد بود. برای اطمینان بیشتر از نتایج، تصدیق متقابل در چندین مرحله صورت تکرار شده و در هر مرحله، از تقسیم بندی متفاوتی برای نمونهها استفاده می شود. در پایان از نتایج تمامی تکرار آزمایشها میانگینگیری صورت میگیرد.
در ادامه روشهای مختلف تطبیق متقابل توضیح داده می شود.
تصدیق یکی در مقابل بقیه[28]: یک روش دیگر، تصدیق یکی در مقابل بقیه است. در این روش، هر نمونه یک بار به عنوان نمونه آزمایشی انتخاب می شود و از سایر نمونهها برای آموزش استفاده میشوند. این روش بر روی تمامی نمونهها انجام می شود. در پایان، کارایی الگوریتم برابر نسبت تعداد نمونههای درست دستهبندی شده به کل است.
یکی از الگوریتمهای معروف دستهبندی، الگوریتم نزدیک همسایه است؛ با این که از معرفی آن چندین دهه میگذرد، این روش همچنان محبوب بوده و کاربرد بسیاری در مسائل مختلف دارد. دلیل این موضوع سادگی پیادهسازی و کارایی بالا این روش است. به علاوه، این الگوریتم را به سادگی میتوان در مسائل مختلف به کار برد. الگوریتم نزدیکترین همسایه از یک قانون بسیار ساده در عمل دستهبندی استفاده می کند. نمونههایی که شباهت بیشتری با یکدیگر دارند(در فضای ویژگیها در نزدیکی یکدیگر قرار گرفتهاند)، به احتمال بالا در یک دسته قرار دارند. بر طبق این، در الگوریتم نزدیکترین همسایه، برای بدست آوردن دستهی نمونهی پرسوجو شده[29]، بر اساس یک معیار شباهت(تفاوت)[30]، نزدیکترین نمونه، از مجموعهی نمونههای آموزشی تعیین می شود. سپس الگوریتم دستهی این نمونه را به عنوان دستهی نمونه پرسوجو شده اعلام می کند.
به عنوان مثال، شکل 1 نحوه بدست آوردن دستهی نمونهی پرسوجو شده را توسط الگوریتم نزدیکترین همسایه، در یک فضای ویژگی دو بعدی و در مسئلهای با سه دسته نمایش میدهد. در این مثال، از معیار فاصله اقلیدسی برای بدست آوردن نزدیکترین همسایه استفاده شده است.
در این فصل ابتدا به توضیح مصرف برق در رایانه پرداخته میشود. سپس مصرف انرژی در مراکز داده و در نهایت مجازی سازی شرح داده میشوند.
1-1- مصرف انرژی در رایانه
مصرف برق در رایانه را میتوان به دو بخش تقسیم نمود:
ایستا: بخشی از انرژی مصرفی رایانه است که تنها صرف روشن بودن سیستم میگردد و به میزان کاری که سیستم انجام میدهد ارتباطی ندارد. این سطح از مصرف انرژی سبب روشن و آماده به کار نگاه داشتن سیستم شده و از لحظهای که سیستم روشن میشود مصرف میگردد. بخش زیادی از این انرژی در واقع اتلاف به طرق مختلف و در سطوح مختلف سخت افزار است؛ مانند نشت جریان در مدارات مجتمع[1].
پویا: بخشی از انرژی مصرفی رایانه است که صرف انجام فعالیتهای سیستم میگردد و با توجه به میزان بار[2] روی بخشهای مختلف یک سیستم (مانند: پردازنده، حافظه[3]، دیسک سخت[4]، کارت گرافیکی[5] و …) متغیر است.
شاید تصور شود که مصرف حالت بیکار یک رایانه کم یا قابل چشم پوشی است زیرا این سهمی از انرژی است که در زمانی که رایانه کار مفیدی انجام نمیدهد مصرف میکند، ولی بر خلاف تصور، یک سرور هنگام بیکاری حدود60 تا 70 درصد از بیشینهی توان[6] مصرفی خود را مصرف میکند [Barroso, 2007] و [Fan, 2007] و [Lefurgy, 2007]. بیشینه توان مصرفی یک رایانه هنگامی است که با حداکثر توان پردازشی[7] خود کار میکند.
1-2- مراکز داده و مصرف انرژی در آنها
یک مرکز داده ساختمانی است، شامل تعداد زیادی رایانه (سرور) و قطعات مورد نیاز آنها مانند سوئیچهای شبکه و منابع انرژی پشتیبان [Kumar, 2009].
مصرف انرژی یک مرکز داده حاصل مجموع مصرف انرژی سرورهای موجود در آن به علاوهی مصرف انرژی امکانات دیگر مانند سرورهای ذخیره سازی[8] ، سیستمهای خنک کننده، تجهیزات شبکه و … است.
نکتهی قابل توجه در این مورد، سهم تقریباً 50 درصدی سرورها در مصرف انرژی مرکز داده است. به بیان دیگر تنها نیمی از انرژی مصرفی یک مرکز داده صرف پردازش و پاسخ به درخواستها میگردد و مابقی صرف موارد دیگر که مهمترین آن سیستمهای خنک کننده هستند میگردد. شکل 1-1 که نمایش تفکیک انرژی مصرفی یک مرکز داده است، به خوبی گویای این مسئله است:
شکل 1-1 نمودار تفکیکی انرژی مصرفی مرکز داده [Iyengar, 2010]
در مورد میزان مصرف انرژی در مراکز داده آمارها نشان میدهند علاوه بر چشمگیر بودن این مقدار، روند رو به رشدی از لحاظ مقدار و سهم از مصرف کل انرژی جامعه دارد [Koomey, 2011]. شکل 1-2 نمایانگر این موضوع است.
شکل 1-2 نمودار میزان(محور عمودی) و سهم (درصدهای بالای ستونها) مصرف انرژی مراکز داده در سطح جهان (سمت راست) و ایالات متحده (سمت چپ) در سالهای 2000، 2005 و 2010 میلادی [Koomey, 2011].
بر اساس تحقیقات انجام شده [Barroso, 2007] ، [Boher, 2002] ، [Rangan, 2008] و [Siegele, 2008]، متوسط بکارگیری[9] سرورها در یک مرکز داده کمتر از 30 درصد است و یک سرور تنها در 10 درصد اوقات بکارگیری نزدیک به بیشینه دارد [Armbrust, 2010].
از اینرو با توجه به سهم مصرف انرژی یک سرور در حالت بیکاری، مشاهده میگردد که سهم قابل توجهی از انرژی مصرفی مراکز داده به هدر میرود.
1-3- مجازی سازی
مجازی سازی ابتدا در سالهای 1970 میلادی برای استفادهی همزمان چندین کاربر از یک سیستم ارائه شد [Bugnion, 1997]. طی سالهای گذشته کارهای زیادی در زمینهی فنآوری مجازی سازی انجام شده است و به مرور تواناییهایی بر آن افزوده شده که شاید در ابتدای ارائه ایده، جزء اهداف اصلی نبودهاند[Bugnion, 1997] و [Barham, 2003] و [Clark, 2005] و [Walters, 1999].
امروزه مجازی سازی به انضمام ابزارهایی که به آن افزوده شده است ویژگیهایی مانند افزایش امنیت کاربران به خصوص درفضاهای غیر همکار، افزایش بهرهوری سرورها، ایجاد بستر مناسب برای اجزای نرم افزارهای مختلف تحت سیستم عاملهای متفاوت و به صورت همزمان، ساده سازی سرویس و نگهداری سیستمها در مراکز داده، ایجاد امکان توازن بار[10] بین سرورهای مختلف و … را عرضه میکند که سبب شده است بیشتر صنعت به خصوص مراکز داده به سمت استفاده از این فنآوری سوق پیدا کنند آنگونه که امروزه تقریباً تمامی مراکز داده در جهان از این فنآوری بهره میگیرند [Armbrust, 2010]. چنین محیطهایی متشکل از مجموعهای از رایانهها که برای ارائه سرویسهای خود از فنآوری مجازی سازی استفاده میکنند را “ابرواره”[11] مینامیم. در واقع ابرواره همان مراکز داده هستند که سرویسهای خود را روی شبکه و در در قالب بستههایی از سخت افزار که به واسطهی مجازی سازی شکل گرفتهاند ارائه میدهند [Armbrust, 2010] و [Armbrust,2009]. این بستههای سخت افزار را به انضمام سیستم عامل درون خود “ماشین مجازی”[12] مینامیم.
مهاجرت ماشین مجازی[13] جزء قابلیتهایی است که مدتی پس از ظهور مجازی سازی به آن اضافه شد و به طور خلاصه عبارت است از
انتقال ماشین مجازی از روی یک سرور به سرور دیگر. مهاجرت ماشین مجازی می تواند به صورت زنده[14] باشد به شکلی که کاربر نهایی[15] که از ماشین مجازی مهاجرت کننده سرویس می گیرد متوجه هیچگونه اختلالی در دریافت سرویس نشود و به عبارتی اصلاً جابجایی ماشین مجازی سرویس دهنده خود را متوجه نشود [Clark, 2005]. در شکل 1-3 طرحی از مهاجرت ماشین مجازی بین دو سرور فعال نمایش داده شده است.
شکل 1-3 نمایی از مهاجرت ماشین مجازی [Clark, 2005]
اگر بخواهیم مهاجرت ماشین مجازی به صورت زنده را دقیقتر بررسی نماییم، در واقع وقفهای در ارائه سرویس پیش میآید که این تاخیر بین 60 تا 300 میلی ثانیه خواهد بود [Clark, 2005]. به هر حال از دید کاربر و پاسخ به درخواستها مهم این است که می توان بدون بروز مشکل یا پرداخت هزینهی زمانی و مصرف انرژی بالا ماشینهای مجازی را بین سرورهای مختلف جابجا نمود [Liu, 2011].
1-4- ساختار پایان نامه
در فصل دوم، به بیان مفاهیم و مرور کارهایی که در این زمینه صورت پذیرفته است خواهیم پرداخت. فصل سوم به بیان مدل پیشنهادی برای کاهش مصرف برق در مراکز داده اختصاص دارد. در فصل چهارم نحوهی پیاده سازی، محیط و چگونگی انجام تستها را شرح خواهیم داد. جمع بندی نتایج و پیشنهادها برای کارهای بعدی در فصل پنجم ارائه میگردد.
2- پیشینهتحقیق
مصرف انرژی عظیمی که در مراکز داده صورت میگیرد باعث تحمیل هزینههای گزاف و مشکلات جانبی مانند گرمتر شدن کرهی زمین و تشدید بحران انرژی میشود. در چنین شرایطی تلاش برای صرفه جویی در این انرژی اهمیت ویژهای پیدا میکند به خصوص با توجه به اتلاف انرژی که در این مراکز رخ میدهد. از اینرو در این زمینه کارهایی زیادی صورت پذیرفته است که در این فصل به بیان آنها خواهیم پرداخت.
2-1- صرفه جویی در انرژی مصرفی رایانه
روشهای صرفه جویی در انرژی مصرفی یک رایانه، با توجه به اینکه کدام بخش از انرژی مصرفی را هدف صرفه جویی قرار میدهند به دو بخش تقسیم میشوند.
2-1-1. صرفه جویی در انرژی پویا
توان پویا بخشی از توان مصرفی است که ناشی از تناوب جریان و فرکانس کار قطعات میباشد. برای کاهش این بخش از توان مصرفی، روشهایی در سطح سخت افزار و نرم افزار وجود دارد.
در سطح سخت افزار، با ایجاد تغییرات و بهبود کارایی قطعات در هنگام طراحی و ساخت آنها، مانند هرچه بیشتر متمرکز نمودن مدارات، استفاده از آلیاژها و رساناها با قابلیت هدایت بالاتر، کاهش آستانهی معنی دار بودن ولتاژ میتوان انرژی مصرفی را کاهش داد. اینگونه تغییرات باعث کاهش کلی مصرف انرژی یک سیستم میشود صرف نظر از اینکه سیستم در چه محیطی و تحت چه شرایطی کار می کند.
ایجاد قابلیتهایی در سخت افزار که امکان کمتر نمودن مصرف انرژی را در حالات خاص و در سطحی بالاتر فراهم میآورد. مانند پیشبینی چند حالت مختلف عملکرد برای پردازنده اصلی[16] و قرار دادن امکان انتخاب این حالات در سطح نرم افزاری تا در هنگام کار کرد سیستم، سیستم عامل بتواند با توجه به شرایط کاری حالت بهینه عملکرد را با توجه به میزان مصرف انرژی تعیین کند. قراردادن قابلیتهای بیشتر و دقیقتر همراه با بهرهگیری صحیح از این قابلیتها نیز می تواند سبب کاهش مصرف انرژی گردد.
از جمله مهمترین روش های این دسته میتوان از “مقیاس سازی پویای ولتاژ و فرکانس[17]” (DVFS) نام برد [Weiser, 1995] و [Semeraro, 2002] . در این روش با بهره گرفتن از پشتیبانی در نظر گرفته شده در پردازندهی اصلی، فرکانس کار پردازنده با توجه به حجم بار پردازشی آن در هر لحظه تغییر میکند. این کار باعث میگردد تا در زمان هایی که نیازی به حداکثر توان پردازنده وجود ندارد، فرکانس کاری آن پایین بیاید و از آنجا که این کار با کاهش ولتاژ صورت میگیرد، عملاً توان مصرفی پردازنده با نسبت توان سوم فرکانس کم میشود. امروزه تمامی پردازندههای جدید از این قابلیت برخوردارند ولی از آنجا که مصرف پردازنده بخش کمی از مصرف کل یک سرور را تشکیل میدهد (و این سهم با پیشرفت فناوری رو به کاهش است) [Fan, 2007] علیرغم بهره گیری از این روش هنوز میزان اتلاف انرژی چشمگیری در سرورها وجود دارد.
در سطح نرم افزاری نیز در سیستم عاملهای جدیدتر پیشبینیهایی برای بهره بردن از تواناییهای سخت افزار و راه های دیگر کاهش مصرف انرژی صورت گرفته است مانند کم کردن نور صفحه یا خاموش کردن نمایشگر[18] و یا قرار دادن کل سیستم در حالتی که سطح توان پردازشی و در نتیجه مصرف انرژی پایینتر باشد [Weiser, 1996] در مواقعی که نیازی به حداکثر توان پردازشی سیستم نیست.
2-1-2. صرفه جویی در انرژی ایستا
روشهایی که حذف اتلاف ناشی از توان ایستا را هدف قرار دادهاند، را میتوان در دوسطح سخت افزاری و نرم افزاری طبقه بندی نمود.
یک سرور هنگامی که روشن است و صرف نظر از میزان کاری که انجام میدهد، توان ایستای خود را مصرف میکند. روش های نرم افزاری عموماً با قرار دادن سرور بیکار[19] در حالتی که مصرف انرژی کمی دارد (مانند خواب[20]) و یا خاموش نمودن آن سعی در حذف کل این بخش از مصرف انرژی دارند. البته بدیهی است که این روش فقط قابل استفاده در مورد سرورهای بیکار است و اگر سروری حتی به میزان بسیار کمی هم از منابعش استفاده نماید، این روش در مورد آن قابل انجام نیست (و یا باید با روشی مانند آنچه در این پایان نامه ارائه و پیاده سازی شدهاست، ابتدا سرور را به حالت بیکار برده و سپس اقدام به خاموش نمودن و یا به خواب بردن آن سرور شود).
روشهای سخت افزاری با بهره گیری از فناوری جدیدتر و با انجام تغییرات و بهینه سازی در سطح معماری سخت افزار، منطق و یا الگوی مدارات سعی در کاهش نشتیهای جریان و سایر اتلافهای انرژی موجود در مدارات دارند. در واقع با بهینهتر شدن و نیز با بکارگیری انواع روشهای بستهبندی[21] مدارات سعی در کاهش حجم قطعات دخیل در انجام یک عمل خاص و همچنین اتلاف کمتر در سطح همین عده از قطعات الکترونیکی میشود که این عوامل باعث کاهش اتلاف توان ایستا در سرورها خواهند بود.
مزیت روشهای سخت افزاری به نرم افزاری در این است که این روشها در تمام حالات یک سرور کارایی خود را حفظ میکنند.
در بخش قبلی ذکر شد که با پیشرفت فناوری سهم توان پویا کمتر میگردد و از طرف دیگر به دلیل افزایش تراکم قطعات الکترونیکی در مدارات مجتمع و نشتی جریان ناشی از این افزایش تراکم، سهم توان ایستا بیشتر و بیشتر میگردد. از اینرو حذف اتلاف انرژی در این بخش اهمیت بیشتری مییابد.
روشهایی که کاهش مصرف پویای انرژی را مد نظر قرار دادهاند، به شرطی میتوانند در سطح کل سیستم یا چند سیستم صرفه جویی قابل توجهی کنند که قطعهی هدف آنها کسر بزرگی از کل انرژی مصرفی را به خود اختصاص دهد. در این میان پردازنده هم به خاطر میزان مصرف زیاد و هم به دلیل متغیر بودن زیاد سطح مصرف در عملکردهای گوناگون (آنگونه که در DVFS انجام میشود) بیشتر مورد توجه قرار گرفته است. اما نشان داده شده است که حتی پردازنده هم، الزاماً در هر سیستم و هر شرایط مصرف کنندهی غالب در سیستم نیست؛ سهم فعلی مصرف پردازنده از مصرف کل سیستم حدود 25 درصد است که این سهم رو به کاهش است [Laudon, 2006] ، [Fan, 2007] و [Lefurgy, 2003].
مشاهدات نشان میدهد که در سرورهای مختلف میزان و سهم مصرف قطعات با یکدیگر متفاوت است و هیچ یک از قطعات مصرف کنندهی غالب نیست [Meisner, 2009]. شکل 2-1 نشان دهندهی همین وضعیت است؛ این نمودار، تفکیک[22] مصرف انرژی قطعات مختلف سخت افزار متعلق به سرور IBM p670 [Lefurgy, 2003] و Sun UltraSparc T2000 [Laudon, 2006] و یک سرور نوعی مشخص شده توسط شرکت Google [Fan, 2007] میباشد. همانطور که در این نمودار مشاهده میشود، سهم مصرف قطعات مختلف سخت افزار در سرورهای مختلف متفاوت است و در عین حال هیچکدام از قطعات مصرف کنندهی غالب انرژی نیستند.
تولید حجم عظیمی از مقالات و مستندات، جامعه علمی را بر آن داشت تا با بهره گیری از مزایا و تواناییهای روشهای خودکار جهت پردازش این متون، به حوزهای تحت عنوان پردازش زبانهای طبیعی[1] روی آورد. همچنین با توجه به وجود لیستی از معانی کلمات و عبارات یا همان دیکشنری و حتی اختصاص موسساتی جهت تعیین نحوه استفاده از یک زبان در برخی از کشورها، اینطور به نظر میرسد که امکان مکانیزه کردن فهم یک زبان توسط کامپیوتر وجود دارد [1].
مبحث پردازش زبانهای طبیعی خود زیرمجموعه ای از حوزه گستردهی هوش مصنوعی است که توجهات دانشمندان و محققان فراوانی را به خود معطوف کرده است. شاید به ظاهر زبانهایی که ما در زندگی روزمره برای ایجاد ارتباط با دیگران به کار میگیریم، ساده باشند. اما در حقیقت این زبانهای انسانی پیچیدگیهای فراوانی دارند که همین پیچیدگیها منجر به شکل گیری زیرشاخههای متعددی همچون ترجمهی ماشینی[2]، بازیابی اطلاعات[3]، پردازش متون[4]، تشخیص صحبت[5]، تحلیل گرامری[6] ، رفع ابهام معنایی[7] و غیره در زمینه پردازش زبانهای طبیعی شده است.
در بین مباحث متفاوتی که در زمینه پردازش زبانهای طبیعی موجود است، برای اینجانب ابهام معنایی[8] جذابیت بیشتری داشته که در این پایان نامه به این موضوع پرداختهام. ابهام معنایی یکی از مباحث پیچیده و در عین حال پراهمیت است که در شاخههایی نظیر ترجمهی ماشینی و بازیابی اطلاعات نیز مطرح بوده و بعنوان جزء جدایی ناپذیری از اینگونه سیستمها دارای ارزش و حائز اهمیت است.
در واقع این مبحث نشأت گرفته از ابهامی است که در زبانهای طبیعی نهفته است؛ هرچند که وجود این ابهامها در اکثر مواقع از دید انسان پوشیده است. آنچه ابهامهای موجود بین سخنگویان بومی را مرتفع میسازد توانش زبانی آنها، اطلاعات آنها در خصوص جهان پیرامون، طرح پرسش مجدد در صورت وجود یا احساس ابهام و بطور کلی مجموعه ای از اطلاعات زبانی و غیرزبانی است که سخنگویان بومی به آن مجهزند [40].
مسأله ابهام معنایی شامل تشخیص معنای صحیح یک کلمه با توجه به متنی است که در آن آمده است و در زمینه پردازش زبانهای طبیعی به آن رفع ابهام معنایی گفته می شود. این مهم در بسیاری از شاخههای پردازش زبانهای طبیعی نیز مطرح بوده و کاربرد دارد که در این میان اصلیترین و مشهودترین مورد استفادهی آن در شاخه ترجمهی ماشینی است. لذا در این فصل ابتدا اشارهی کوتاهی به گسترهی پردازش زبانهای طبیعی و زیرشاخههای آن داشته، سپس مختصری به شرح مفهوم ترجمهی ماشینی و روشهای آن میپردازیم.
1-2- پردازش زبانهای طبیعی
پردازش زبانهای طبیعی كه معمولاً به اختصار به آن NLP گفته می شود یکی از نیازهای عصر فناوری جهت استفادهی بهینه از منابع اطلاعاتی است که امروزه با رشد حجم مستندات تولید شده و نیاز به نگهداری، دسته بندی، بازیابی و پردازش ماشینی و سریع آنها، توجه به این شاخه بیش از پیش خودنمایی می کند.
زبان طبیعی، زبانی است که ما در تعاملات اجتماعی روزمره با بهره گرفتن از آن مینویسیم و صحبت میکنیم. زبانهای طبیعی متنوع و فراوانی وجود دارند که ممکن است فرم گفتاری و نوشتاری متفاوتی داشته باشند و از هم مستقل باشند. پردازش زبانها و مکالمات طبیعی یکی از اموریست که با ورود فناوری رایانهای به زندگی بشر مورد توجه بسیاری از دانشمندان قرار گرفته است. حتی اندیشهای که آلن تورینگ[9] از ماشین هوشمند خود و تعریفی که او از هوش مصنوعی[10] داشت، در مرحله اول مربوط به پردازش زبانهای طبیعی میشد. بعلاوه تلاشهای بسیاری توسط بشر برای پیگیری این امر صورت گرفته بود که به عنوان مثال ماشین لیزا یکی از محصولات این تلاشهاست. ماشین لیزا ماشینی بود که با تایپ از راه دور با یک انسان، جملات او را پردازش میکرد و جوابی درخور به او میداد.
بنابراین میتوان گفت که یکی از زیرشاخههای با اهمیت در حوزه گستردهی هوش مصنوعی پردازش زبانهای طبیعی است؛ تا حدی که بسیاری از متخصصین در زمینه هوش مصنوعی بر این باورند كه مهمترین وظیفه ای كه هوش مصنوعی باید به آن بپردازد NLP است. دلیلی كه ایشان برای این اعتقاد خود ارائه میكنند آن است كه پردازش زبان طبیعی راه ارتباط مستقیم انسان و كامپیوتر را از طریق مكالمه باز میكند. به این ترتیب دیگر برنامه نویسی معمولی و قراردادهای مربوط به سیستمهای عامل كنار گذاشته خواهد شد. همچنین اگر یک كامپیوتر بتواند یک زبان انسانی را درك كرده و به وسیله آن صحبت كند، دیگر به بسیاری از وظایفی كه باید توسط مهندسین نرم افزار طراحی شوند نیازی نخواهد بود. اما ابعاد و پیچیدگیهای زبانهای بشری دستیابی كامل به این قابلیت را دشوار ساخته است.
در پردازش زبانهای طبیعی، سعی می شود تا قابلیت درك دستوراتی كه به زبانهای انسانی استاندارد نوشته شده اند، به كامپیوتر داده شود. یعنی كامپیوتری داشته باشیم که قادر باشد زبان انسان را تحلیل كند، بفهمد و حتی بتواند زبان طبیعی تولید كند. بدیهی است كه در راستای تحقق این هدف، نیاز به دانشی وسیع از زبان است. بنابراین علاوه بر محققان علوم كامپیوتر، دانش زبانشناسان نیز مورد لزوم میباشد. در زمینه پردازش زبانهای طبیعی باید پاسخ چهار سوال زیر مورد مطالعه قرار گیرد:
در حقیقت هدف اصلی در NLP، ماشینی کردن فرایند درک و برداشت مفاهیم بیان گردیده با یک زبان طبیعی انسانی میباشد. به تعریف دقیقتر پردازش زبانهای طبیعی عبارت است از استفاده از کامپیوتر برای پردازش زبان گفتاری و نوشتاری به نحوی که کامپیوترها از زبان طبیعی به عنوان ورودی و خروجی استفاده نمایند. بدین وسیله میتوان به ترجمهی زبانها پرداخت، از صفحات وب و بانکهای اطلاعاتیِ نوشتاری جهت پاسخ دادن به پرسشها استفاده کرد، یا با دستگاهها مثلاً برای مشورت گرفتن به گفتگو پرداخت.
به طوركلی نحوه كار این شاخه این است كه زبانهای طبیعیِ انسان را تقلید كند. در این میان، پیچیدگی انسان از بعد روانشناسی بر روی ارتباط متعامل تأثیر میگذارد. لذا پردازش زبانهای طبیعی رهیافت بسیار جذابی برای ارتباط بین انسان و ماشین محسوب میشود و در صورت عملی شدنش به طور کامل، میتواند تحولات شگفتانگیزی را در پی داشته باشد. شکل زیر یک شمای کلی از معماری پردازش زبانهای طبیعی را نشان میدهد:
تاکنون دانشمندان حوزه داده کاوی تلاش های بسیاری برای جداسازی صحیح نمونههای مشابه کرده اند. استخراج طبقهبندهای عام[1] و قابل فهم از داده، نقش مهمی در بسیاری از حوزه ها و مسائل است. تاکنون روشهای متعددی برای طبقه بندی[2] و تشخیص الگو[3] معرفی شدهاست. یکی از شیوه های موفق و منحصربهفرد در حوزه طبقه بندی و تشخیص الگوی داده های ورودی، استفاده از تکنیکهای فازی برای تقسیم بندی نرم فضای ویژگی و بالطبع استفاده از یک معماری مؤثر در متصل کردن این زیرفضاها برای تصمیم گیری و طبقه بندی بهصورت فازی میباشد. طبقه بندی فازی پروسه گروه بندی عناصر داخل مجموعههای فازی با یک تابع عضویت[4] است[1]. در واقع، ابتدا فضای جستجو به بخشهایی قسمت بندی می شود به گونه ای که تمام فضا پوشش داده شود و سپس بر روی هرکدام از این زیرفضاها مجموعه فازی قرار میگیرد. اجتماعی از مجموعههای فازی که فضای فازی نامیده می شود، مقادیر زبانی فازی یا کلاسهای فازی را تعریف می کند که یک شی می تواند به آنها تعلق داشته باشد. پس از آن قوانین فازی اگر و آنگاه[5] با توجه به نحوه تخصیص تولید میشوند. مدلسازی سیستمهای فازی بصورت مجموعه ای از این قوانین نمایش داده می شود.
طبقه بندیکننده های فازی دارای ویژگی منحصربفرد تفسیرپذیری هستند و قادرند دانش چگونگی تشخیص الگوها را برای یک فرد خبره بصورت یک دستورالعمل بازنمایی کنند. طبقه بندیکننده های فازی چهار هدف اساسی را دنبال می کنند. دقت طبقه بندیکننده را بیشینه کنند، طبقه بندیکننده با بیشترین قابلیت تفسیرپذیری را ایجاد نمایند، پایداری طبقه بندیکننده را بیشینه کنند و حساسیت به نویز را کاهش دهند. تاکنون روشهای متفاوتی برای ایجاد قوانین، نحوه تخصیص زیرفضاها، نحوه استنتاج در هر قانون و در نهایت ادغام قوانین ارائه شده است. بدیهی است زبان طبیعی[6] محور بودن ساختار قوانین فازی علیرغم استخراج دانش، مشکل اثبات ریاضی کارایی طبقه بندیکننده از جمله ارائه یک کران بالا[7] برای خطای آموزش[8] و خطای تست[9] است. بهعبارتی افزایش عمومیسازی[10] این طبقه بندیکنندهها بصورت ریاضی مانند طبقه بندی کننده تقویتی گروهی[11] کار بسیار دشواری است. از اینرو اغلب از روشهای مکاشفهای[12] و فوق مکاشفهای[13] بهصورت سعی و خطا در تدوین قوانین و ادغام آنها استفاده میگردد، به این دلیل که زیرفضا را برای بهدستآوردن بهترین ترکیب قوانین جستجو می کنند [2]-[4] . ایشیبوشی[14][5] روشی را برای تخصیص فضا بهصورت تقسیم بندی منظم و تکراری ارائه کرد که میتوان از این روش بهعنوان یکی از موثرترین روشهای طبقه بندیکننده فازی که مبنای بسیاری از تحقیقات بعدی در این زمینه نیز شد، نام برد.
پروسه یادگیری یک سیستم طبقه بندی فازی باید مسایل مختلفی را حل کند تا یک سیستم طبقه بندی زبانی را با یک رفتار صحیح ایجاد نماید. از جمله اینکه بتواند، 1- مجموعه ای از قوانین فازی را ایجاد کند که دارای یک سطح لازم همکاری بین این قوانین فازی باشد. 2- انتخاب یک تابع استنتاج که روشی را برای ترکیب اطلاعات بهدست آمده از قوانین فازی در کلاسهبندی نمونهها انتخاب می کند. 3- در مسایل با ابعاد بالا، قوانین فازی از رشد نمایی در سایزشان رنج میبرند. دو مسئله اول، مربوط به پروسه استخراج دانش می شود که با پردازشهای یادگیری مختلف براساس الگوریتمهای تکرارشونده مانند شبکه های عصبی مصنوعی[5-6] یا الگوریتم ژنتیک [2-4]قابل حل است. گزینه سوم از دو جهت میتوان مدیریت کرد: با فشردهسازی و کاهش مجموعه قوانین، قوانین غیرضروری را با هدف ایجاد یک سیستم طبقه بندی با کارایی بالاتر حذف کرد. و راهکار دوم با پروسه انتخاب ویژگی انجام میگیرد.
به طور کلی، هدف مسئله، فراهم کردن یک چارچوب کلی برای تکامل قوانین فازی است. راهکارهای بسیاری در این زمینه ارائه شده، اما
همه آنها حداقل در یکی از موارد زیر تفاوت دارند، تعداد قوانینی که در هر عضو جمعیت کد می شود، نوع بیان قوانین کدشده در هر عضو و نوع و هدف پروسه تکاملی .[7-8] این الگوریتمها شامل الگوریتمهای ژنتیک[15]، بهینهسازی گروه ذرات[16]، گداختگی شبیهسازی شده[17] و… میباشند.
از آنجایی که الگوریتمهای تکاملی[18] بهصورت چندعاملی[19] جستجو را در فضای ویژگی انجام میدهند، نحوه گردش آنها تا حد ممکن بهصورت تصادفی میباشد. این خواص، الگوریتمهای تکاملی را به ابزار قوی برای انواع مسائل بهینهسازی تبدیل نموده است.[2], [4] از جمله مسائل مطرح در زمینه بهینهسازی، بهینهسازی ساختار و پارامترهای طبقه بندیکنندهها میباشد. بدیهی است هرچه یک طبقه بندیکننده پارامترهای بیشتری داشته باشد، تنظیم بهینه این پارامترها بهصورت دستی کاری بسیار دشوار، و در بعضی حالات غیرممکن میباشد. بدین خاطر از الگوریتمهای تکاملی برای یادگیری پارامترها و تعیین ساختار طبقه بندیکننده های متفاوت بهصورت فراوان استفاده شده است. از جمله این تحقیقات میتوان به بهبود ساختار شبکه عصبی توسط الگوریتم ژنتیک اشاره کرد [9] که الگوریتم ژنتیک سعی در هرس کردن ارتباط بین نورونها و بهنوعی لایهبندی آنها به منظور بهبود کارایی طبقه بندی، دارد.
مزیت ترکیب قوانین فازی و الگوریتمهای تکاملی این است که مجموعه قوانین ایجادشده دارای تفسیرپذیری بیشتری هستند و میتوانند با عدم قطعیت[20] و ابهام مقابله کنند و همچنین میتوانند به صورت اکتشافی فضای ویژگی را جستجو کنند. به عنوان مثال در بخش ورودی نحوه تخصیصبندی فضاها و همچنین تعیین پارامترهای توابع عضویت (مانند شیب و واریانس)، از الگوریتمهای تکاملی استفاده شده است[10].
چالشها
با توجه به این که اغلب روش های عمده و شناخته شده محاسبات تکاملی، شبیهسازی کامپیوتری فرایندهای طبیعی و زیستی هستند، در این نوشتار، از یک روش ترکیبی برای بهبود طبقه بندیکننده های فازی ارائه می شود که برای بهبود یادگیری پارامترهای آن الگوریتم تکاملی رقابت استعماری [11] اقتباس شده است. این پایان نامه ، الگوریتم رقابت امپریالیستی [21]را برای هدف استخراج کلاسهبندهای عام و قابل فهم از داده در شکل یک سیستم قانون ارائه می کند. در این تحقیق سعی در ارائه ساختار جدیدی بر روی بستر فازی هستیم که در آن ساختار، توزیع قوانین از الگوریتم رقابت استعماری[22] اقتباس شده و لیکن روح قوانین بهصورت فازی است. ضمنأ به دلیل ایجاد هارمونی مناسب در بهینهسازی ساختار قوانین و همچنین ادغام قوانین، استفاده از الگوریتم بهینهسازی رقابت استعماری پیشنهاد می شود.
در این الگوریتم چند نمونه که دارای میزان برازندگی[23] بالایی میباشند (امپریالیست[24]) و مرکز امپراطوریها هستند، سعی در کشاندن بقیه نمونهها (مستعمره)[25] به سمت خود دارند. این الگوریتم را میتوان نوع بهبود یافته الگوریتم ازدحام ذرات در نظر گرفت. لازم به ذکر است که الگوریتم ازدحام ذرات علیرغم سرعت همگرایی بالای آن، احتمال بایاس شدن آن بسیار زیاد میباشد. چون میزان تصادفی بودن[26] آن در حین جستجو پایین بوده و بسیار بایاسدار حرکت می کند. درصورتیکه الگوریتم رقابت استعماری این مسئله را به این شیوه حل کرده است که هر نمونه بهجای حرکت در جهت برآیند دو نقطه با برازندگیهای مناسب، به یکی از چند نقطهای اختصاص داده می شود که بهینه محلی (امپریالیست) اطلاق میشوند.
از آنجا که ساختار این الگوریتم بهصورت چندحوزهای میباشد، بکارگیری آن برای ساختاربندی قوانین فازی این خاصیت را بههمراه خواهد داشت که یک مجموعه قوانین بر روی یک زیرفضا کار کند نه تنها روی یک قانون. بهعبارت دیگر استفاده از یک قانون برای تصمیم گیری درمورد یک زیرفضا حتی با داشتن همپوشانی[27] با زیرفضاهای همسایه باعث خاص[28] شدن آن قانون و بهنوعی بایاس قانون و آن زیرفضای خاص شده و در مورد سایر نمونههایی که دور از آن زیرفضا هستند، نمی تواند تصمیم گیری مناسبی را بهعمل آورد که همین امر باعث بیشسازگاری[29]و کمبود عمومیسازی توابع فازی میگردد. در مقابل، الگوریتم یادگیری استعماری از تخصیص یک قانون به یک زیرفضای خاص جلوگیری کرده و حتی زیرفضاهایی که یک مستعمره از قوانین درباره آن تصمیم میگیرند، دارای ابعاد بسیار وسیعتری نسبت به زیرفضای تخصیصشده به هر قانون در مقایسه با روشهای قبلی دارد. ضمنأ هنگامیکه قوانین بهصورت دستههای مختلفی از مستعمرههای متفاوت بر روی کل فضا عمل می کنند، میتوان آن را جزو الگوریتمهای توزیعشده در نظر گرفت. توانایی بهینهسازی این الگوریتم نسبت به الگوریتمهای بهینهسازی پیشین همتراز و یا حتی بالاتر است و سرعت رسیدن به جواب بهینه نیز مناسب است.
اهداف پایان نامه
در این رساله میخواهیم یک مجموعه از قوانین انعطافپذیر فازی را با بهره گرفتن از الگوریتم رقابت استعماری که پیش از این ذکر شد، ایجاد نماییم. با این هدف که کارایی طبقه بندیکننده و تفسیر پذیری قوانین تولید شده حداکثر شود و در عینحال نویز پذیری کمینه نسبت به طبقه بندیکننده های آماری و نیز عمومیسازی بسیار مناسبی را ارائه نماید. در واقع در این مسئله میخواهیم مجموعه ای از بهترین قوانین با انعطاف پذیری بالا که بیانگر انتخاب بهترین ویژگیهاست را با بهره گرفتن از الگوریتم نوپای رقابت استعماری بهدست آوریم. نکته مهم در این رساله، نحوه تخصیص زیرفضا، ساخت قوانین و در نهایت ادغام آنها در یک پروسه بهینهسازی استعماری است. به طورکلی در این پژوهش:
مطالب مربوط به این رساله در پنج فصل به شرح زیر میباشد.
فصل دوم. در این فصل تحقیقات انجام شده را بحث می کند و برای هر روش مزایا و معایب آنها را بهصورت جداگانه برمیشمرد.
فصل سوم. در این فصل متدولوژی که عبارتند از روشهای ارائه شده و روشهای پیشین را به صورت فرمولی و شبه کد توضیح میدهد.
فصل چهارم. در فصل چهارم نتایج بهدست آمده ارائه می شود.
فصل پنجم. کارهای پیش رو و اهداف آینده بررسی می شود.