در این پست قصد داریم به منطق فازی ، تاریخچه آنو اهمیت آن در علم هوش مصنوعی بپردازیم.
پیشینه منطق فازی
تئوری مجموعههای فازی و منطق فازی (Fuzzy Logic) را اولین بار پرفسور لطفیزاده در رسالهای به نام «مجموعههای فازی، اطلاعات و کنترل» در سال ۱۹۶۵ معرفی نمود. هدف اولیه او در آن زمان، توسعه مدلی کارآمدتر برای توصیف فرآیند پردازش زبانهای طبیعی بود. او مفاهیم و اصلاحاتی همچون مجموعههای فازی، رویدادهای فازی، اعداد فازی و فازیسازی را وارد علوم ریاضیات و مهندسی نمود. از آن زمان تاکنون، پرفسور لطفی زاده به دلیل معرفی نظریه بدیع و سودمند منطق فازی و تلاشهایش در این زمینه، موفق به کسب جوایز بینالمللی متعددی شده است.
پس از معرفی منطق فازی به دنیای علم، در ابتدا مقاومتهای بسیاری دربرابر پذیرش این نظریه صورت گرفت . بخشی از این مقاومتها، چنان که ذکر شد، ناشی از برداشتهای نادرست از منطق فازی و کارایی آن بود. جالب اینکه، منطق فازی در سالهای نخست تولدش بیشتر در دنیای مشرق زمین، بهویژه کشور ژاپن با استقبال روبهرو شد، اما استیلای اندیشه کلاسیک صفر و یک در کشورهای مغرب زمین، اجازه رشد اندکی به این نظریه داد. با این حال به تدریج که این علم کاربردهایی پیدا کرد و وسایل الکترونیکی و دیجیتالی جدیدی وارد بازار شدند که بر اساس منطق فازی کارمیکردند، مخالفتها نیز اندک اندک کاهش یافتند.
در ژاپن استقبال از منطق فازی، عمدتاً به کاربرد آن در روباتیک و هوش مصنوعی مربوط میشود. موضوعی که یکی از نیروهای اصلی پیشبرندهِ این علم طی چهل سال گذشته بوده است. در حقیقت میتوان گفت بخش بزرگی از تاریخچه دانش هوش مصنوعی، با تاریخچه منطق فازی همراه و همداستان است.
مجموعههای فازی
بنیاد منطق فازی بر شالوده نظریه مجموعههای فازی استوار است. این نظریه تعمیمی از نظریه کلاسیک مجموعهها در علم ریاضیات است. در تئوری کلاسیک مجموعهها، یک عنصر، یا عضو مجموعه است یا نیست. در حقیقت عضویت عناصر از یک الگوی صفر و یک و باینری تبعیت میکند. اما تئوری مجموعههای فازی این مفهوم را بسط میدهد و عضویت درجهبندی شده را مطرح میکند.
به این ترتیب که یک عنصر میتواند تا درجاتی – و نه کاملاً – عضو یک مجموعه باشد. مثلاً این جمله که «آقای الف به اندازه هفتاددرصد عضو جامعه بزرگسالان است»از دید تئوری مجموعههای فازی صحیح است. در این تئوری، عضویت اعضای مجموعه از طریق تابع (u(x مشخص میشود که x نمایانگر یک عضو مشخص و u تابعی فازی است که درجه عضویت x در مجموعه مربوطه را تعیین میکند و مقدار آن بین صفر و یک است .
به بیان دیگر، (u(x نگاشتی از مقادیر x به مقادیر عددی ممکن بین صفرویک را میسازد. تابع (u(x ممکن است مجموعهای از مقادیر گسسته (Discrete) یا پیوسته باشد. وقتی که u فقط تعدادی از مقادیر گسسته بین صفر و یک را تشکیل میدهد، مثلاً ممکن است شامل اعداد ۳/۰ و ۵/۰ و ۷/۰ و ۹/۰ و صفر و یک باشد. اما وقتی مجموعه مقادیرu پیوسته باشند، یک منحنی پیوسته از اعداد اعشاری بین صفر و یک تشکیل میشود.
بکارگیری منطق فازی
منطق فازی را از طریق قوانینی که «عملگرهای فازی» نامیده میشوند،میتوان بهکار گرفت. این قوانین معمولاً بر اساس مدل زیر تعریف میشوند :
If Variable Is set Then Action
به عنوان مثال فرض کنید میخواهیم یک توصیف فازی از دمای یک اتاق ارائه دهیم. در این صورت میتوانیم چند مجموعه فازی تعریف کنیم که از الگوی تابع (u(x تبعیت کند. شکل ۳ نموداری از نگاشت متغیر «دمای هو» به چند مجموعه فازی با نامهای “سرد”، “خنک”، “عادی”، “گرم” و “داغ” است. چنان که ملاحظه میکنید، یک درجه حرارت معین ممکن است متعلق به یک یا دو مجموعه باشد.
به عنوان نمونه، درجه حرارتهای بین دمای T1 و T2 هم متعلق به مجموعه “سرد” و هم متعلق به مجموعه “خنک” است. اما درجه عضویت یک دمای معین در این فاصله، در هر یک از دو مجموعه متفاوت است. به طوری که دمای نزدیک T2 تنها به اندازه چند صدم در مجموعه “سرد” عضویت دارد، اما نزدیک نوددرصد در مجموعه “خنک” عضویت دارد.
تعریف حالات مختلف بر اساس قانون فازی
اکنون میتوان بر اساس مدل فوق قانون فازی زیر را تعریف کرد:
- اگر دمای اتاق <خیلی گرم> است، سرعت پنکه را <خیلی زیاد> کن.
- اگر دمای اتاق <گرم> است، سرعت پنکه را <زیاد> کن.
- اگر دمای اتاق <معتدل> است، سرعت پنکه را در <همین اندازه> نگهدار.
- اگر دمای اتاق <خنک> است، سرعت پنکه را <کم> کن.
- اگر دمای اتاق <سرد> است، پنکه را <خاموش> کن.
اگر این قانون فازی را روی یک سیستم کنترل دما اعمال کنیم، آنگاه میتوانیم دماسنجی بسازیم که دمای اتاق را به صورت خودکار و طبق قانون ما، کنترل میکند. اما این سؤال پیش میآید که اگر دو یا چند قانون همزمان برای یک متغیر ورودی فعال شود چه اتفاقی خواهد افتاد؟ فرض کنید دمای اتاق برابر Tx1 است در این صورت هم قانون مربوط به اتاق گرم و هم قانون مربوط به دمای اتاق معتدل صادق است و مقادیر U1 و U2 به ترتیب به دست میآید.
طبق کدام قانون باید عمل کرد؟ لطفیزاده خود پاسخ این معما را نداد. در سال ۱۹۷۵ دو دانشمند منطق فازی به نام ممدانی (Mamdani) و آسیلیان اولین کنترل فازی واقعی را طراحی کردند. آنان پاسخ این معما را با محاسبهِ نقطه ثقل (C) مساحتی که از ترکیب دو ذوزنقه زیر U1 و U2 در شکل ۴ پدید آمده و نگاشت آن به محور t و به دست آوردن مقدار Tx2 حل کردند.
عملگرهای پایه در سیستم های فازی
منطق فازی ، همچون منطق کلاسیک تعدادی عملگر پایه دارد. مثلاً در منطق کلاسیک از عملگرهای AND و OR وNOT استفاده میشود که دانش آموزان رشته ریاضی فیزیک در دبیرستان با آنها آشنا میشوند. در منطق فازی معادل همین عملگرها وجود دارد که به آنها عملگرهای <زاده> میگویند. این عملگرها به صورت زیر تعریف میشوند: (فرمول ۲)
به عنوان مثال ترکیب AND دو متغیر x و y عبارت است از کمینه مقادیر (u(x و (u(y. به عبارت سادهتر، آنجا که هم x و y از نظر فازی”صحیح” باشند، همزمان مقادیر (u(x و (u(y به کمترین مقدار خود میرسند.