کارآیی: بدون کارآیی مناسب کلیه موارد استفاده نرم افزار بیفایده میباشد. اندازه گیری کارایی در سیستمهای توزیع شده کار آسانی نیست. برای رسیدن به کارایی باید توازنی خاص در تعداد پیغامها و اندازه مولفههای توزیع شده برقرار باشد.
قابلیت گسترش: قابلیت گسترش یک اصل کلی برای توسعه سیستمهای توزیع شده میباشد. برای رسیدن به این قابلیت باید از مولفهها، جداول و الگوریتمهای متمرکز دوری کرد. فقط باید از الگوریتمهای غیر متمرکز استفاده شود.
شکل۲‑۴- مثالی از یک سییستم توزیع شده [۴۷]
قانونهایی برای سیستمهای توزیع شده
قانون صفر: سیستمهای توزیع شده باید برای کاربر نهایی دقیقا به صورت سیستمهای متمرکز باشند[۴۵]. استقلال محلی، عدم وابسته بودن به سایت مرکزی، عملیات پیوسته، استقلال Location، استقلال قطعات[۵۸]، استقلال Replication، پردازش توزیع شده، پرسوجوها، مدیریت توزیع شده تراکنش[۵۹]، استقلال سخت افزاری، استقلال سیستم عامل، استقلال شبکه، استقلال DBMS .
قانون ۱: استقلال محلی: سایتها باید تا حد امکان(بیشترین حد ممکن) مستقل باشند. دادههای محلی باید در محل ذخیره و مدیریت شوند(با توجه به در نظر گرفتن یکپارچگی و امنیت) عملیات محلی باید حتما در خود محل اجرا شوند. تمام عملیات در یک سایت باید توسط همان سایت کنترل شود. این بدین معناست که سایت X نباید برای انجام موفقیت آمیز عملیات خود وابسته به سایت Y باشد. در برخی موارد، از دست دادن مقدار کمیاز استقلال، اجتناب ناپذیر است[۴۵]: مشکل قطعه قطعه شدن (قانون ۵) مشکل Replication (قانون ۶) به روز رسانی رابطه Replicate شده(قانون ۶) مشکل محدودیت یکپارچگی[۶۰] بین چند سایت(قانون ۷)
قانون ۲: عدم وابسته بودن به سایت مرکزی: به هیچ عنوان نباید برای یک سرویس مرکزی به یک سایت وابسته بود. بعنوان مثال نباید دارای یک پردازشگر مرکزی(متمرکز) جستجوها یا مدیریت مرکزی(متمرکز) تراکنش بود، چرا که کل سیستم به یک سایت خاصی وابسته میشوند. وابسته بودن به یک سایت خاص، حداقل به دو دلیل زیر غیر مطلوب میباشد: سایت مرکزی ممکن است یک گلوگاه[۶۱] باشد. سیستم ممکن است آسیب پذیر باشد. در یک سیستم توزیع شده، عملیات زیر (در میان سایر عملیات) حتما باید توزیع شده باشند: مدیریت دیکشنری پردازش جستجو کنترل همزمان کنترل بازیابی
قانون ۳: عملیات پیوسته: هیچگاه نباید نیاز به خاموش کردن (از قبل پیش بینی شده) کل سیستم برای اعمال تغییرات داشته باشیم. اضافه کردن سایت جدید X به سیستم توزیع شده D، نباید باعث توقف کل سیستم شود. اضافه کردن سایت جدید X به سیستم توزیع شده D، نباید نیازمند تغییری در برنامههای کاربر یا فعالیتهای ترمینال باشد[۴۵]. حذف سایت X از سیستم توزیع شده، نباید وقفههای غیر ضروری در سرویس ایجاد کند. ایجاد و حذف و تکثیر قطعات به صورت پویا باید در یک سیستم توزیع شده امکان پذیر باشد. باید بتوان بدون نیاز به خاموش کردن کل سیستم، DBMS یک سایت را به روز کرد.
قانون ۴: استقلال مکان[۶۲] : نه تنها کاربران نباید از محلی فیزیکی ذخیره دادهها مطلع باشند، بلکه از لحاظ منطقی باید تصور کنند که دادهها در سایتهای محلی خودشان قرار دارد. ساده کردن برنامههای کاربر و فعالیتهای ترمینال، اجازه تغییر سکو، فراهم کردن استقلال مکان برای عملیات ساده ، بازیابی سادهتر از عملیات به روز رسانی میباشد. داشتن طرحی برای نام گذاری داده توزیع شده[۶۳] و ایجاد پشتیبانی مناسب از طریق زیر سیستم دیکشنری[۴۵] مواردی که باید در مورد کاربران پیاده سازی شود: کاربر U باید شناسه معتبری برای ورود در سایتهای مختلف داشته باشد. پروفایل هر کاربر برای هر شناسه مجاز باید در دیکشنری باشد. دسترسیهای هر کاربر در هر سایت به وی اختصاص داده شود.
شکل۲‑۵ - مثالی از یک Distributed Data Naming Scheme [48]
قانون ۵: استقلال قطعات[۶۴] :سیستمهای توزیع شده از قطعه قطعه شدن دادهها پشتیبانی میکنند، منوط به اینکه یک رابطه خاص قابلیت تقسیم به قسمتهای مختلف برای ذخیره در محلهای فیزیکی گوناگون را داشته باشد. سیستمیکه این قابلیت را داشته باشد، از استقلال قطعات نیز پشتیبانی میکند. کاربران باید از لحاظ منطقی به گونه ای تصور کنند که گویا اصلا دادهها در قسمتهای مختلف ذخیره نشدهاند. از دلایل قطعه قطعه شدن دادهها، میتوان به افزایش کارآیی اشاره کرد. قطعه قطعه شدن افقی[۶۵] و قطعه قطعه شدن عمودی[۶۶] باید در متن یک پایگاه داده توزیع شده تعریف شود. استقلال قطعات همانند استقلال مکان باعث سادهتر شدن برنامههای کاربر و فعالیتهای ترمینال میشود. دادههایی که به کاربران نمایش داده میشود، از ترکیب منطقی قطعات مختلف (به واسطه الحاقها[۶۷] و اجتماعات[۶۸] مناسب) به دست میآید.
قانون ۶: استقلال Replication : کاربران باید از لحاظ منطقی به گونهای تصور کنند که گویا اصلا دادهها تکرار[۶۹] نشدهاند. سیستم توزیع شده از کپی برداری دادها پشتیبانی میکند، به شرط آن که یک رابطه( یا بطور کلیتر یک قطعه از رابطه) بتواند از لحاظ فیزیکی در کپیهای مجزا و در سایتهای مجزا ذخیره شود. کپی برداری دادهها باید همانند قطعه قطعه شدن برای کاربران شفاف (غیر قابل تشخیص) [۴۵] باشد. دلایل عمده کپیبرداری دادهها کارآیی، در دسترس بودن (دسترسی)، مشکل انتشار، به روز رسانی است. استقلال Replication همانند استقلال قطعات و استقلال مکان باعث سادهتر شدن برنامههای کاربر و فعالیتهای ترمینال میشود.
شکل۲‑۶- دو نوع متفاوت از replication در سیستمهای توزیع شده
قانون ۷: پردازش توزیع شده پرسوجوها[۷۰]: یکی از مهمترین و حیاتی ترین نکات در مورد سیستمهای توزیع شده، انتخاب استراتژی مناسب برای پردازش توزیع شده پرسوجو میباشد. پردازش پرسوجوها در سیستمهای توزیع شده شامل موارد زیر میباشد: عملیات محلی ورودی و خروجی[۷۱] و CPU در سایتهای مجزا، تبادل اطلاعات میان سایتهای فوق الذکر[۴۵]
قانون ۸ مدیریت توزیع شده تراکنش[۷۲] : دو نکته مهم برای مدیریت تراکنش، کنترل بازیابی[۷۳] و کنترل سازگاری[۷۴] میباشد که نیاز به اعمال دقت بیشتری در محیطهای توزیع شده دارند. در یک سیستم توزیعشده، یک تراکنش میتواند باعث اجرای کد در چندین سایت شده که همین امر خود میتواند باعث عملیات به روز رسانی در سایتهای مختلف شود. هر تراکنش را میتوان شامل چندین عامل[۷۵] در نظر گرفت که هر عامل، فرآیندی است که از طرف تراکنش در سایت به خصوصی اجرا میشود.
قانون ۹ استقلال سخت افزاری: صرف نظر از اینکه چه Platform سخت افزاری استفاده میشود، کاربران باید تصویر واحدی از سیستم داشته باشند. بهتر است بتوان یک DBMS را بر روی سیستمهای سخت افزاری مختلف اجرا کرد. بهتر است سیستمهای مختلف سخت افزاری سهم یکسانی در یک سیستم توزیع شده داشته باشند اما نمیتوان به راحتی فرض کرد که همواره میتوان از سیستمهای همگن استفاده کرد. به همین دلیل یک DBMS باید بر روی سیستمهای مختلف سختافزاری قابل اجرا باشد.
قانون ۱۰ استقلال سیستم عامل: بهتر است که علاوه بر استقلال سخت افزاری، قادر به راهاندازی DBMS بر روی سیستم عاملهای مختلف (حتی سیستم عاملهای مختلف بر روی یک سخت افزار) باشیم. حداقل سیستم عاملهای مهمیکه باید DBMS پشتیبانی کند (با توجه به معیارهای تجاری)، عبارتند از: MVS/XA؛ MVS/ESA، VM/CMS، VAX/VMS، UNIX(محصولات مختلف)، OS/2، MS/DOS و WINDOWS
قانون ۱۱: استقلال شبکه: مطلوب آن است که بتوانیم شبکههای نامتجانس مختلف را پشتیبانی نماییم. از دید یک سیستم توزیع شده، شبکه یک سرویس مطمئن انتقال پیغام میباشد. مفهموم مطمئن در عبارت فوق را میتوان بدین صورت توصیف نمود که به طور مثال اگر شبکه پیغامیرا از سایت X برای تحویل به سایت Y دریافت کرد، سرانجام آن پیغام را به سایت Y تحویل دهد. نباید در محتوای پیغامها خللی ایجاد شده و پیغامها باید به ترتیب فرستاده شدن ارسال شده و بیش از یکبار نیز تحویل مقصد نشوند. شبکه مسئول احراز هویت سایت[۷۶] نیز میباشد. یک سیستم ایده آل باید هم از شبکههای محلی[۷۷] و هم از شبکههای گسترده[۷۸] پشتیبانی نماید. سیستمهای توزیع شده باید معماریهای مختلف شبکه را پشتیبانی نمایند.
قانون ۱۲:استقلال DBMS: سیستم توزیع شده ایده آل باید استقلال DVBMS را مهیا سازد[۴۵]
یادگیری ماشین[۷۹]
به عنوان یکی از شاخههای وسیع و پرکاربرد هوش مصنوعی، یادگیری ماشینی به تنظیم و اکتشاف شیوهها و الگوریتمهایی میپردازد که بر اساس آنها رایانهها و سامانهها توانایی تعلٌم و یادگیری پیدا میکنند.
اهداف و انگیزهها
هدف یادگیری ماشینی این است که کامپیوتر (در کلیترین مفهوم آن) بتواند به تدریج و با افزایش دادهها بازدهی بالاتری در وظیفهی مورد نظر پیدا کند. گسترهی این وظیفه میتواند از تشخیص خودکار چهره با دیدن چند نمونه از چهرهی مورد نظر تا فراگیری شیوهی گامبرداری برای روباتهای دوپا با دریافت سیگنال پاداش و تنبیه باشد.
شکل۲‑۷ – روال کلی یک الگوریتم یادگیری ماشین (یادگیری با نظارت) [۴۳]
طیف پژوهشهایی که در یادگیری ماشینی میشود گستردهاست. در سوی نظری آن پژوهشگران بر آناند که روشهای یادگیری تازهای به وجود بیاورند و امکانپذیری و کیفیت یادگیری را برای روشهایشان مطالعه کنند و در سوی دیگر عدهای از پژوهشگران سعی میکنند روشهای یادگیری ماشینی را بر مسایل تازهای اعمال کنند. البته این طیف گسسته نیست و پژوهشهای انجامشده دارای مولفههایی از هر دو رویکرد هستند.
تقسیمبندی مسایل
یکی از تقسیمبندیهای متداول در یادگیری ماشینی، تقسیمبندی بر اساس نوع دادههای در اختیار عامل هوشمند است. به سناریوی زیر توجه کنید: فرض کنید به تازگی رباتای سگنما خریدهاید که میتواند توسط دوربینی دنیای خارج را مشاهده کند، به کمک میکروفنهایش صداها را بشنود، با بلندگوهایی با شما سخن بگوید و چهارپایش را حرکت دهد. همچنین در جعبهی این ربات دستگاه کنترل از راه دوری وجود دارد که میتوانید انواع مختلف دستورها را به ربات بدهید. در پاراگرافهای آینده با بعضی از نمونههای این دستورات آشنا خواهید شد.
اولین کاری که میخواهید بکنید این است که اگر ربات شما را دید صدای A تولید کند اما اگر غریبهای را مشاهده کرد با صدای بلند صدای B را پخش کند. فعلاً فرض میکنیم که ربات توانایی تولید آن صداها را دارد اما هنوز چهرهی شما را یاد نگرفتهاست. پس کاری که میکنید این است که جلوی چشمهایش قرار میگیرید و به کمک کنترل از راه دورتان به او دستور میدهید که چهرهای که جلویش میبیند را با صدای A مربوط کند. اینکار را برای چند زاویهی مختلف از صورتتان انجام میدهید تا مطمئن باشید که ربات در صورتی که شما را از مثلاً نیمرخ ببیند صدای B را پخش نکند. همچنین شما چند چهرهی غریبه نیز به او نشان میدهید و چهرهی غریبه را با دستور صدای B مشخص میکنید. در این حالت شما به کامپیوتر ربات گفتهاید که چه ورودیای را به چه خروجیای مربوط کند. دقت کنید که هم ورودی و هم خروجی مشخص است و در اصطلاح خروجی برچسبدار [۳۱] است. به این شیوهی یادگیری، یادگیری بانظارت[۸۰] [۳۲] میگویند.
اینک حالت دیگری را فرض کنید. برخلاف دفعهی پیشین که به رباتتان میگفتید چه محرکای را به چه خروجیای ربط دهد، اینبار میخواهید ربات خودش چنین چیزی را یاد بگیرد. به این صورت که اگر شما را دید و صدای A به نحوی به او پاداش دهید (مثلاً به کمک همان کنترل از راه دورتان) و اگر به اشتباه صدای B را پخش کرد، او را تنبیه کنید (باز هم با همان کنترل از راه دورتان). در این حالت به ربات نمیگویید به ازای هر شرایطی چه کاری مناسب است، بلکه اجازه میدهید ربات خود کاوش کند و تنها شما نتیجهی نهایی را تشویق یا تنبیه میکنید. به این شیوهی یادگیری، یادگیری تقویتی[۸۱] [۳۳] میگویند.
در دو حالت پیش قرار بود ربات یک ورودی را به یک خروجی مرتبط کند. اما گاهی وقتها تنها میخواهیم ربات بتواند تشخیص دهد که آنچه میبیند (یا میشنود و…) را به نوعی به آنچه پیشتر دیدهاست ربط دهد بدون اینکه به طور مشخص بداند آن چیزی که دیده شدهاست چه چیزی است یا اینکه چه کاری در موقع دیدنش باید انجام دهد. ربات هوشمند شما باید بتواند بین صندلی و انسان تفاوت قایل شود بیآنکه به او بگوییم این نمونهها صندلیاند و آن نمونههای دیگر انسان. در اینجا برخلاف یادگیری بانظارت هدف ارتباط ورودی و خروجی نیست، بلکه تنها دستهبندی آنها است. این نوع یادگیری که به آن یادگیری بینظارت[۸۲] [۳۴] میگویند بسیار مهم است چون دنیای ربات پر از ورودیهایی است که کسی برچسبی به آنها اختصاص نداده اما به وضوح جزیی از یک دسته هستند.یادگیری بینظارت را میتوان به صورت عمل کاهش بعد [۳۵] در نظر گرفت.
از آنجا که شما سرتان شلوغ است، در نتیجه در روز فقط میتوانید مدت محدودی با رباتتان بازی کنید و به او چیزها را نشان دهید و نامشان را بگویید (برچسبگذاری کنید). اما ربات در طول روز روشن است و دادههای بسیاری را دریافت میکند. در اینجا ربات میتواند هم به خودی خود و بینظارت یاد بگیرد و هم اینکه هنگامیکه شما او را راهنمایی میکنید، سعی کند از آن تجارب شخصیاش استفاده کند و از آموزش شما بهرهی بیشتری ببرد. ترکیبی که عامل هوشمند هم از دادههای بدون برچسب و هم از دادههای با برچسب استفاده میکند به یادگیری نیمه-نظارتی[۸۳] [۳۶] میگویند.
یادگیری بانظارت[۸۴]
یادگیری تحت نظارت، یک روش عمومیدر یادگیری ماشین است که در آن به یک سیستم، مجموعه ای از جفتهای ورودی – خروجی ارائه شده و سیستم تلاش میکند تا تابعی از ورودی به خروجی را فرا گیرد. یادگیری تحت نظارت نیازمند تعدادی داده ورودی به منظور آموزش سیستم است. با این حال ردهای از مسائل وجود دارند که خروجی مناسب که یک سیستم یادگیری تحت نظارت نیازمند آن است، برای آنها موجود نیست. این نوع از مسائل چندان قابل جوابگویی با بهره گرفتن از یادگیری تحت نظارت نیستند. یادگیری تقویتی مدلی برای مسائلی از این قبیل فراهم میآورد. در یادگیری تقویتی[۳۷]، سیستم تلاش میکند تا تقابلات خود با یک محیط پویا را از طریق آزمون و خطا بهینه نماید. یادگیری تقویتی مسئلهای است که یک عامل که میبایست رفتار خود را از طریق تعاملات آزمون و خطا با یک محیط پویا فرا گیرد، با آن مواجه است. در یادگیری تقویتی هیچ نوع زوج ورودی-خروجی ارائه نمیشود. به جای آن، پس از اتخاذ یک عمل، حالت بعدی و پاداش بلافصل به عامل ارائه میشود. هدف اولیه برنامهریزی عاملها با بهره گرفتن از تنبیه و تشویق است بدون آنکه ذکری از چگونگی انجام وظیفه آنها شود.
Q-Learning
Q-learning یک تکنیک یادگیری تقویتی است که با یادگیری یک تابع اقدام/مقدار[۸۵]، سیاست مشخصی را برای انجام حرکات مختلف در وضعیتهای مختلف دنبال می کند. یکی ازنقاط قوت این روش، توانایی یادگیری تابع مذکور بدون داشتن مدل معینی از محیط می باشد. اخیرا در این روش اصلاحی با نام Q-learning تاخیری انجام شده که بهبود قابل توجهی ایجاد نموده است. در روش اخیر یادگیری PAC با فرایندهای تصمیم مارکوف ترکیب شده اند.[۳۸]
شکل ۲‑۸ - فلوچارت Q learning [44]
در یک مسئله یادگیری تقویتی با عاملی روبرو هستیم که از طریق سعی و خطا با محیط تعامل کرده و یاد میگیرد تا عملی بهینه را برای رسیدن به هدف انتخاب نماید. یادگیری تقویتی از اینرو مورد توجه است که راهی برای آموزش عاملها برای انجام یک عمل از طریق دادن پاداش و تنبیه است بدون اینکه لازم باشد نحوه انجام عمل را برای عامل مشخص نمائیم.
مقایسه Q-learning با یادگیری با ناظر
یادگیری تقویتی از دو جنبه با یادگیری با ناظر تفاوت دارد:
-
- مثالهای یادگیری بصورت زوج (ورودی/ خروجی) مطرح نمیشوند. بلکه بعد از اینکه عامل عملی را انجام داد پاداشی را دریافت میکند و به مرحله بعدی میرود. عامل هیچ گونه اطلاعی در مورد اینکه در هر حالت بهترین عمل چیست را ندارد. بلکه این وظیفه عامل است که در طول زمان تجربه کافی در مورد حالتها، عملهای ممکن، انتقال و پاداش جمع آوری نموده و عملکرد بهینه را یاد بگیرد.
-
- تفاوت دیگر در اینجاست که سیستم باید کارائی آنلاین بالائی داشته باشد. زیرا اغلب ارزیابی سیستم با عمل یادگیری بطور همزمان صورت میپذیرد.
شکل ۰۲‑۹ - تفاوت یادگیری با نظارت و Q-learning
یادگیری Q-learning نوعی از یادگیری تقویتی بدون مدل است که بر پایه برنامه ریزی پویای[۸۶] اتفاقی عمل میکند. در یادگیری Q –Learning بجای انجام یک نگاشت از States به مقادیر حالتها، نگاشتی از زوج (حالت ، عمل) ه مقادیری که Q-value نامیده میشوند، انجام میگردد.