وبلاگ تخصصی آموزش کامپیوترودانلود نرم افزار (خداجون دوستت دارم)

آموزش و راه کارهای کامپیوتر -مقاله کامپیوتر-قالب -ویندوز XP- ویستا -رمز

وبلاگ تخصصی آموزش کامپیوترودانلود نرم افزار (خداجون دوستت دارم)

آموزش و راه کارهای کامپیوتر -مقاله کامپیوتر-قالب -ویندوز XP- ویستا -رمز

وبگردی با چراغ خاموش

 ترفندهایی برای سرعت بخشیدن و امن کردن وبگردی

 

اشاره :

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


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

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

حتی کوکی‌هایی که درون آن‌ها اطلاعات حساسی چون شناسه کاربری و کلمه عبور ذخیره شده است، به طور معمول به خوبی رمزنگاری شده‌اند. با این همه، کوکی‌هایی چون hooters.com ،mons ter.com (کوکی‌ها اغلب هم‌نام سایت مبدا خود هستند) می‌توانند تا حدی دردسرساز باشند. بنابراین مسئله مدیریت این فایل‌های متنی که می‌توانند به عنوان یک تیغ دولبه برای کاربر عمل کنند، می‌تواند بر امنیت حریم شخصی بسیار تأثیرگذار باشد.

اینترنت اکسپلورر 
از منوی Tools، گزینه Internet Option را انتخاب کنید، برگه General، در محدوده بخش Temporary Internet Files  روی کلید Setting کلیک کنید. روی کلید View Files کلیک کنید تا وارد پوشه‌ای شوید که در آن‌ها کوکی‌ها ذخیره شده‌اند. البته فایل‌های دیگری را نیز در این پوشه می‌بینید که به بخش حافظه موقت مرورگر وب‌شما مربوط خواهد بود. برای آن‌که تنها کوکی‌ها را ببینید، فایل‌ها را برحسب نام مرتب کنید. سپس میله پیمایش را پایین بیاورید تا به اولین فایلی برسید که با کلمه Cookie شروع شده است. برای پاک کردن کوکی، درست مثل پاک کردن فایل معمولی کافی‌است روی آن  راست کلیک نمایید و گزینه Delete را انتخاب کنید و پس از آن‌که کارتان به اتمام رسید، پنجره را ببندید.

برای حذف کردن تمام کوکی‌ها، باید از منوی Tools، گزینه Internet Option را انتخاب کنید و از تب General روی کلید Delete Cookies کلیک کنید. برای قفل کردن کوکی‌های third-party به تب Privacy بروید و میله پیمایش را روی سطح مورد نظر امنیتی قرار دهید.

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

راه دیگر آن است که با کلیک روی کلید Sites، می‌توانید آدرس سایت‌هایی را  وارد کنید که نمی‌خواهید ( یا می‌خواهید) کوکی به پی‌سی شما ارسال کنند.

فایر‌فاکس
 در مرورگر فایرفاکس می‌توانید به‌سادگی با فشردن کلیدی به نام Clear Prinate Data، تمام اطلاعات شخصی را یکباره پاک کنید. از این گذشته، این برنامه امکان داشتن مدیریت بیشتر روی رفتار کوکی‌ها را نیز به کاربر می‌دهد. از منوی Tools گزینه options را انتخاب کنید. بخش Privacy را انتخاب نمایید و روی Cookies کلیک کنید. برای محدوده کوکی‌های third -party که برای تبلیغات به کار می‌روند، کادر عبارت for the originating only را تیک بزنید. برای تهیه فهرستی از آدرس سایت‌هایی که نمی‌خواهید (یا می‌خواهید) به پی‌سی‌شما کوکی ارسال کنند، رویExceptions کلیک کنید یا در بخش Address of Web Site آدرس سایت را وارد نمایید و سپس متناسب با نیازتان روی Allow یا Block کلیک کنید. در انتها هم روی Close کلیک کنید. اگر می‌خواهید به صورت فردی روی تک‌تک کوکی‌ها مدیریت داشته باشید، روی کلید View Cookies در بخش Privacy در کادر متنی Option کلیک کنید. برای جستجو می‌توانید عبارت مورد نظر خود را در کادر Search وارد کنید.

اپرا 
پاک کردن ردپای فعالیت‌های خود در اُپرا، بسیار آسان‌تر از هر دو مرورگر یاد شده است. از منوی Tools گزینهPreferences را انتخاب نمایید و بعد از آن Advanced را انتخاب کنید. روی cookies در سمت چپ پنجره کلیک کنید. برای محدود کردن کوکی‌های نوع third-party، از منوی پایین‌افتادنی Third Party cookies گزینه Refuse all cookies را انتخاب نمایید.

برای جلوگیری از ساخته شدن کوکی‌های جدید توسط وب‌سایت، هنگامی که مشغول بازدید از آن هستید، عبارت Delet new cookies when exiting opera را علامت بزنید.

برای پاک کردن فردی کوکی‌ها، در بخش Advanced در کادر متنی Preferences روی Manage cookies کلیک کنید.
می‌توانید با جستجو فایل مورد نظر خود را پیدا کنید. مشابه فایرفاکس برای نمایش کوکی مربوط به ‌هر وب‌سایت باید روی پوشه مورد نظر آن کلیک کنید. می‌توانید هر کوکی‌ را ویرایش نمایید یا پاک کنید. می‌توانید تمام کوکی‌های مربوط به یک سایت مشخص را مسدود کنید. ‌

برای این‌ کار، روی پوشه سایت مورد نظر کلیک کنید (به جای آن که روی کوکی زیر مجموعه آن کلیک کنید). سپسEdit را انتخاب نمایید و در نهایت تیک مربوط به عبارت Use defaults for normal cookies Accepcookiesfor server/domain یا Accept third party cookies for server/domain را انتخاب کنید. وقتی کارتان تمام شد، رویOK  Close OK کلیک کنید.

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

اینترنت اکسپلورر 
کلیدهای Ctrl+H را همزمان بفشارید تا بخش History نرم‌افزار فعال شود. در این بخش فهرستی از دامنه سایت‌هایی که تا به حال بازدید کرده‌اید را بر اساس ترتیب زمانی خواهید دید. کافی‌است برای پاک کردن هر بخش روی هر کدام  راست کلیک نمایید و Delete را انتخاب کنید تا پاک شوند. (شکل 3) 

ضمناً این امکان وجود دارد که بتوانید تمام محتویات رجیستری را یک‌جا پاک کنید. برای این‌کار از منوی Tools گزینهInternet optinns را انتخاب کنید و در بخش General روی Clear History کلیک کنید.

فایر فاکس
 
برای دیدن فهرست فایل‌های درون بخش ‌History لازم است کلیدهای ctrl+h را همزمان بفشارید. برای آن که بتوانید به طور فردی بر تک تک محتویات History تسلط داشته باشید، درمنوی View یکی از ترتیب‌های چینش را انتخاب کنید: مرتب‌سازی برحسب تاریخ بازدید یا مرتب سازی بر حسب الفبا.

حال صفحه‌ای را که می‌خواهید حذف کنید، انتخاب نمایید، روی آن راست کلیک وکلید Delete را انتخاب کنید و در انتها برای بسته شدن پنجره History روی علامت ضربدر قرمز رنگی که در بالای چپ پنجره می‌بینید کلیک کنید.
برای حذف ردپای فعالیت‌های خود در اینترنت به آدرس: Tools options

اپرا  
 برای فعال شدن بخش ‌History در اپرا باید کلیدهای Ctrl+Alt+H را همزمان بفشارید. برای پاک کردن هر آیتم کافی‌است روی آن راست کلیک کنید و در نهایت Delete را انتخاب کنید. برای پاک کردن تمامی محتویات History، به آدرس Tools

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

اینترنت اکسپلورر 
برای فعال کردن ویژگی Auto Cmplete کافی‌است بعد از انتخاب گزینه Internet Options. از منویTools  وارد بخشContent  شوید و از آن جا روی کلید Auto Cmplete کلیک کنید. در این بخش می‌توانید متناسب با  نیازتان هر کدام از گزینه‌های Web address یا Forms و حتی username و Password را انتخاب کنید.

برای پاک کردن اطلاعات ذخیره شده نیز می‌توانید بنا به نوع نیاز، روی هریک از کلیدهای Clear Passwords یا Clear Forms کلیک کنید. بعد از پایان کار نیز Ok کنید تا از پنجره خارج شوید.

فایر فاکس 
برای پاک کردن اطلاعات، به آدرس زیر بروید:
‌Optionsاکنون برای پاک کردن کلمات عبور ذخیره شده نیز به آدرس Passwords

اپرا  
برای پاک کردن کلمات عبور به آدرس Tools

علاقمندان به کار ویرایش و میکس فیلم و کلیپ های تصویری

اگر شما هم یکی از علاقمندان به کار ویرایش و میکس فیلم و کلیپ های تصویری هستید نام نرم افزار قدرتمند و مطرح شرکت Ulead یعنیVideo Studio را در این زمینه شنیده اید .

Ulead® VideoStudio™ 9 محصولی از این شرکت که به تازگی عرضه شده است امکانات و توانایی بسیاری را در این زمینه در اختیار شما قرار می دهد . این نرم افزار با مجهز بودن به بیش از 1000 عدد transition وفیلتر و جلوه های ویژه , قدرت فراوانی در ویرایش و میکس فیلم برای خود به وجود آورده است . همچنین بیش از 20 theme از پیش ساخته شده کار را برای تازه کار ها و حرفه ای ها یکسان نموده است.

این نسخه از نرم افزار به کاربر 3 روش برای ویرایش فیلم پیشنهاد می کند که کاربر بسته به توانایی ها و وضعیتش با انتخاب یکی از آنها به کار ادامه میدهد .

DV-To-DVD Wizard : این روش هنگامی که شما کاربر عجله دارد و کارباید سریع انجام شود مورد استفاده قرار می گیرد.

Movie Wizard : این روش بیشتر مورد استفاده اشخاصی است که تازه وارد این عرصه ار ویرایش و میکس فیلم شده اند.

VideoStudio Main Editor : این روش هم برای اهالی این رشته و حرفه ای های آن است که کنترل کامل رو با توانایی های بسیار در اختیار شما قرار می دهد.
برای بهره بردن از نهایت کارایی این نرم افزار بهتر است یکی از این نرم افزارهای کمک را بر روی سیستم نصب داشته باشیم :
Microsoft® DirectX™
Microsoft® Windows®Media Player
Apple® QuickTime®
RealNetworks® RealPlayer

اطلاعات درقیق تر در مورد ویژگی های بخش های مختلف را در این صفحه مشاهده نمایید .

نسخه جدید Hotmail

 

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


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

در هاتمیل جدید قابلیت‌هایOutlook Connector  برای سازگاری برنامه آوت‌لوک با آن، تغییر اندازه صفحه متناسب با مرورگر، حرکت سریع میان بخش‌های مختلف هاتمیل، جست‌وجوی پیشرفته میان ایمیل‌ها و امکان نمایش فایل‌های تصویری ضمیمه ایمیل‌ها یا پخش فایل‌های MP3 افزوده شده است. کاربران این سرویس می‌توانند با کلیک روی گزینه'Join Windows Live Hotmail'، صفحه رابط کاربری خود را به نسخه جدید تبدیل نمایند.

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

 

 

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


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

سال گذشته توشیبا یک هارددیسک دویست گیگابایتی برای نوت‌بوک‌ها ارائه کرده بود، اما اکنون هارددیسک جدید این شرکت برای کامپیوترهای خانگی قابل استفاده است. این هارددیسک 5/2 اینچ قطر دارد و با قیمت 229 دلار به فروش می‌رسد.

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

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

 

 


شرکت پاندا در یک فراخوان گسترده از کلیه کاربران اینترنت و مدیران شبکه دعوت کرد در یک طرح بزرگ امنیتی با عنوان Infectedornot شرکت کنند.


سرویس خبر شبکه آنلاین - در پی اطلاعیه مهم Panda Software، مبنی بر عدم کارایی موثر نرم‌افزارهای امنیتی بروز شده در برابر شیوه جدید خرابکاران اینترنتی برای نفوذ به رایانه‌ها و شبکه‌های محلی، این شرکت در یک فراخوان گسترده از کلیه کاربران اینترنت و مدیران شبکه دعوت کرد در یک طرح بزرگ امنیتی با عنوان Infectedornot شرکت کنند.

در این طرح، از کلیه کاربران رایانه و مدیران شبکه در سرتاسر جهان خواسته شده است که با مراجعه به این آدرس
علاوه بر ارزیابی رایگان وضعیت رایانه و شبکه خود و استفاده از سایر امکانات حفاظتی، Panda Software را در برآورد وضعیت جهانی امنیت و ارائه گزارش‌
های تفضیلی در این خصوص، یاری دهند.

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

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

منبع:‌ www.mec-security.com

     

چگونه یک شبکه عصبی‌ هوشمند بسازیم؟

مثالی از برنامه‌نویسی شیء‌گرا در شبکه‌های عصبی و هوش مصنوعی

 
اشاره :

قدرت و سرعت کامپیوترهای امروزی به راستی شگفت انگیز است؛ زیرا کامپیوترهای قدرتمند می‌توانند میلیون‌ها عملیات را در کمتر از یک ثانیه انجام دهند. شاید آرزوی بسیاری از ما انسان‌ها این باشد که ای کاش می‌شد ما نیز مانند این دستگاه‌ها کارهای خود را با آن سرعت انجام می‌دادیم، ولی این نکته را نباید نادیده بگیریم که کارهایی هستند که ما می‌توانیم آن‌ها را به آسانی و در کمترین زمان ممکن انجام دهیم، ولی قوی‌ترین کامپیوترهای امروزی نیز نمی‌توانند آن‌ها را انجام دهند و آن قدرت تفکری است که مغز ما انسان‌ها دارد. حال تصور کنید که دستگاهی وجود داشته باشد که علا‌وه بر قدرت محاسبه و انجام کارهای فراوان در مدت زمان کوتاه، قدرت تفکر نیز داشته باشد یا به قول معروف هوشمند باشد!این تصور در حقیقت هدف فناوری هوش مصنوعی یا Artificial Intelligence) AI) است. یکی از راه‌حل‌های تحقق این هدف، شبکه‌های عصبی است. شبکه‌های عصبی در واقع از شبکه‌های عصبی و سیستم عصبی انسان الگوبرداری می‌کنند. برخی از محققان براین باورند که هوش مصنوعی و شبکه‌های عصبی دو راه‌حل متفاوت و در دو جهت مختلف هستند، ولی این باور را نمی‌توان کاملاً صحیح دانست؛ چرا که در حقیقت علم شبکه‌های عصبی و هوش‌مصنوعی وابسته به هم هستند. بدین‌معنا که قبل از این‌که Symbolها بتوانند توسط هوش مصنوعی شناسایی شوند، باید مراحلی طی شود. مثلاً تصور کنید که Symbolهایی مانند خانه، انسان یا میز وجود دارند. قبل از این که AI بتواند هر کدام از این Symbolها را شناسایی کند، باید از توانایی‌ها و صفات هر کدام از این‌ها اطلاع کامل حاصل کند. مثلاً تصور کنید که یک روبات که هوش مصنوعی دارد، یک انسان را می‌بیند، ولی از کجا می‌فهمد که این جسم یک انسان است؟ مثلاً بر اساس مشخصاتی مثل داشتن دو پا، دست، صورت، دهان و قدرت تکلم. اما شما وقتی یک انسان دیگر را می‌بینید، نیازی ندارید که اول تعداد پاهای او را بشمارید و بعد بگویید که این جسم، انسان است. مغز انسان‌ها می‌تواند با دیدن یک جسم فقط برای یک بار یاد بگیرد و اگر مجدداً آن جسم را مشاهده کرد، می‌تواند سریع تشخیص دهد و قسمت‌های مختلف مغز می‌توانند به صورت همزمان فعالیت کنند و از اطلاعات درون مغز استفاده نمایند. شبکه‌های عصبی در بسیاری از پروژه‌های هوش مصنوعی به کار گرفته می‌شود. مثلاً برای برنامه‌های تشخیص و الگوبرداری، شناسایی تصویر و کاراکتر، روبات‌ها و برنامه‌های فیلترینگ اطلاعات. این شبکه‌ها امروزه حتی در اتومبیل‌های بی‌سرنشین نیز کاربرد دارد. به طوری‌که با دیدن و بررسی رانندگی انسان‌ها، می‌توانند رانندگی کنند. در این مقاله اصول شبکه‌های عصبی در برنامه‌نویسی شیء‌گرا مورد بررسی قرار می‌گیرد. با استفاده از زبان #C و انجام دادن عملیات X-OR ساده می‌توانید اولین برنامه ساده هوش مصنوعی خود را بنویسید. لازم به ذکر است که مثالی که در این مقاله از آن استفاده شده، از مقاله Matthew Cochran (سی شارپ کورنر) اقتباس شده است.


شکل 1

برای یادگیری بیشتر شبکه‌های عصبی بهتر است این شبکه‌ها را با شبکه‌های عصبی مغز خود مقایسه کنیم. در حقیقت هر نورون در مغز ما یک ورودی دارد که از نورون‌های دیگر میآید و یک خروجی که به نورون یا نورون‌های بعدی می‌رود.
 
برای این‌که بتوانیم این کار را دقیقاً در برنامه خود شبیه‌سازی کنیم، لازم است یک کلاس مانند شکل 1 قسمت اول طراحی کنیم که ضمن داشتن مشخصه‌های خاص، یک خروجی داشته باشد. البته همان‌طور که در قسمت دوم نیز مشاهده می‌کنید (شکل 1)، هر نورون می‌تواند داری چندین ورودی نیز باشد.
 
همان‌طور که در شکل 1 مشاهده می‌کنید، نورون‌ها به صورت گروهی لایه‌بندی می‌شوند.


 

شکل 2

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

حال که تقریباً با کار یک لایه عصبی آشنا شدید، می‌توانیم شبکه‌های پیچیده‌تر را مورد بررسی قرار دهیم.  برای این کار حداقل به سه گروه از نورون‌هایی که در شکل 2 می‌بینید، نیاز داریم.


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

شکل 3


‌ حال قسمت اصلی کار شبکه فرا می‌رسد؛ یعنی آموختن به شبکه عصبی. ب

رای این‌که به شبکه عصبی موجود توانایی آموختن بدهیم، بعد از این‌که سیگنال از لایه اول شبکه به لایه پایینی شبکه می‌رود، باید اطلاعات هر نورون را که روی سیگنال ما اثر می‌گذارد، بروزآوری و اصلاح کنیم. این رویه را به اصطلاح BP یا Back Propagation می‌گویند.
 
در حقیقت با این کار یعنی مقایسه خروجی‌ای که خودمان محاسبه کرده‌ایم با خروجی شبکه، می‌توانیم مقدار اشتباهاتی که شبکه ما انجام می‌دهد را به دست آوریم.

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

همچنین می‌دانیم که هر کدام از این نورون‌های شبکه یک مقدار اشتباه را محاسبه کرده‌اند و از این طریق شبکه ما می‌تواند یاد بگیرد و اگر مقدار دیگری نیز به آن داده شد، می‌تواند توانایی محاسبه داشته باشد.

شکل 4

حال که کمی در مورد شبکه‌های عصبی صحبت کردیم، می‌توانیم برنامه سی‌شارپ خود را شروع کنیم. اولین کاری که باید انجام دهیم، ایجاد یک اینترفیس ساده است که بعداً آن را عملیاتی می‌کنیم. همان‌طور که در کدهای شکل 4 می‌بینید، یک اینترفیس به نام Interface 1 ساخته‌ایم. این اینترفیس در واقع حرکت یک سیگنال را در شبکه ما تعریف می‌کند.  وقتی این کار را انجام دادیم، به یک اینترفیس دیگر نیاز داریم که ورودی نورون را تعریف کند. برای این کار باید از یک دایرکتوری عمومی استفاده کنیم. این دایرکتوری کلید سیگنال یا همان پالس است و خروجی یک کلاس است که پارامتر ‌Weight پالس را مشخص می‌کند. (کدهای شکل 5).

شکل 5

حال نوبت به نوشتن کدهای کلاس اصلی برنامه می‌رسد. نام این کلاس را NeuralFactor می‌نامیم (کدهای شکل 6).
 

شکل6


در کدهای این کلاس می‌بینید که  دو مقدار Private به نام‌های Mywight و MyDelta نوع double و جود دارد. کار اصلی این کلاس، دادن و گرفتن مقادیر نورون است و در واقع تغییرات در ورودی نورون‌ها و وزن آن‌ها را  نگهداری می‌کند. حال می‌توانیم یک اینترفیس برای خود نورون درست کنیم. از آن جایی که هر نورون هم مشخصات سیگنال و هم Receptor را دارد، باید از دو اینترفیسی که قبلاً در شکل های 5 و 4 توضیح داده شد، استفاده کند. همچنین هر نورون چیزی مانند یک ورودی دیگر نیز دارد که به آن Bias می‌گوییم.

اضافه براین، باید دو متد برای انجام کار در شبکه درست کنیم: یکی برای انجام Pulse و دیگری برای یادگیری نورون. کدهای شکل 7 تمامی این اینترفیس را مشخص کرده است.

شکل7

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

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

شکل8

همان‌طور که در این شکل مشاهده می‌نمایید، این کلاس تعدادی متغیر و چندین متد دارد. در این کلاس دو متد اصلی  وجود دارد: متد Sigmoid و متد Pulse کدهای شکل 9 این دو متد را نشان می‌دهد.

شکل 9


اگر کمی به کدهای شکل 9 و متد Pulse دقت کنید، متوجه می‌شوید که این متد جمع هر ورودی یا هر خروجی که به نورون داده می‌شود را دریافت می‌کند و در Weight مربوطه که در دایرکتوری است ضرب می‌کند و آخرین خروجی آخرین را به متد Sigmoid انتقال می‌دهد و در نتیجه خروجی آخر ما عددی بین 0 و 1 خواهد بود.

حال دو کلاس مهم از این شبکه باقی‌مانده است: اولین کلاس، کلاس اصلی شبکه یا NeuralNet است و دیگریNeuralLayer، کلاس لایه‌های شبکه ما است. این دو کلاس در شکل 10 به صورت مشخص نشان داده شده است، اما نکته بسیار مهم این است که کلاس NuralLayer در حقیقت مسئول نگهداری نورون‌های انتقال‌دهنده یا فراخوان‌کننده متد Pulse است.
 

کلاس اصلی شبکه

کلاس لایه‌های شبکه

شکل 10


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

شکل 11

کلاس NeuralNet (شکل 12) همان‌طور که قبلاً توضیح داده شد، یکی از مهم‌ترین کلاس‌های برنامه ما است. در این کلاس سه متد بسیار مهم وجود دارد: Initialize ،Train و BackProgation متد Initialize در واقع شبکه ما و کامپوننت‌های آن را آماده می‌کند. این متد در واقع متد Factory ما است. در این متد مقادیر عددی نورون‌های ورودی، نورون‌های مخفی و نورون‌های خارجی مشخص می‌گردند.  

شکل 12

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

شکل 13

وقتی این متد توسط برنامه انجام شد، برنامه با استفاده از متد، ()‌Train و با استفاده از خروجی‌های قبلی می‌تواند توانایی یادگیری داشته باشد.

اگر بخواهیم شبکه خود را آموزش دهیم که عملیات X-OR را انجام دهد، باید ابتدا یک شبکه بسازیم که دو نورون ورودی، دو نورون پنهان و یک  نورون خروجی داشته باشد. مثلاً می‌توانیم شبکه خود را طوری آموزش دهیم که بتواند عملیات مشخص‌شده در جدول 1 را انجام دهد:

خروجی   

ورودی دوم

ورودی اول

1

0

1

0

1

1

0

0

0

1

1

0

 جدول 1

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

منابع:
http://en.wikipedia.org/wiki/Neural_network
www.c-sharpcorner.com
www.nd.com/neurosolutions/products/ns/whatisNN.html

منطق فازی چیست؟

 


اشاره :

حتماً بارها شنیده‌اید که کامپیوتر از یک منطق صفر و یک تبعیت می‌کند. در چارچوب این منطق، چیزها یا درستند یا نادرست، وجود دارند یا ندارند. اما انیشتین می‌گوید: <آن‌جایی که قوانین ریاضیات (کلاسیک) به واقعیات مربوط می‌شوند، مطمئن نیستند و آنجا که آن‌ها مطمئن هستند، نمی‌توانند به واقعیت اشاره داشته باشند.> هنگامی که درباره درستی یا نادرستی پدیده‌ها و اشیایی صحبت می‌کنیم که در دنیای واقعی با آن‌ها سروکار داریم، توصیف انیشتین تجسمی است از ناکارآمدی قوانین منطق کلاسیک در علم ریاضیات. از این رو می‌بینیم اندیشه نسبیت شکل می‌گیرد و توسعه می‌یابد. در این مقاله می‌خواهیم به اختصار با منطق فازی آشنا شویم. منطقی که دنیا را نه به صورت حقایق صفر و یکی، بلکه به صورت طیفی خاکستری از واقعیت‌ها می‌بیند و در هوش مصنوعی کاربرد فراوانی یافته‌است.


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

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

اگر به منطق کلاسیک در علم ریاضیات مراجعه کنیم و این پرسش را مطرح نماییم که قبل از ورود به پارکینگ چند درصد احتمال می‌دادید جایی برای پارک‌کردن پیدا کنید، پاسخ بستگی به این دارد که واقعاً چه تعداد مکان مناسب (فضای کافی) برای توقف خودروها در آنجا وجود داشت؟ اگر به حافظه خود رجوع کنید، شاید به یاد بیاورید که هنگام ورود به پارکینگ و چرخیدن در قسمت‌های مختلف آن، گاهی خودروهایی را می‌دیدید که طوری پارک کرده‌اند که مکان یک و نیم خودرو را اشغال کرده‌اند. بعضی دیگر نیز کج و معوج پارک کرده بودند و این فکر از ذهن شما چندبار گذشت که اگر صاحب بعضی از این خودروها درست پارک ‌کرده بودند، الان جای خالی برای پارک کردن چندین ماشین دیگر هم وجود داشت.

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

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

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

پیشینه منطق فازی  
تئوری مجموعه‌های فازی و منطق فازی را اولین بار پرفسور لطفی‌زاده (2) در رساله‌ای به نام <مجموعه‌های فازی - اطلاعات و کنترل> در سال 1965 معرفی نمود. هدف اولیه او در آن زمان، توسعه مدلی کارآمدتر برای توصیف فرآیند پردازش زبان‌های طبیعی بود. او مفاهیم و اصلاحاتی همچون مجموعه‌های فازی، رویدادهای فازی، اعداد فازی و فازی‌سازی را وارد علوم ریاضیات و مهندسی نمود. از آن زمان تاکنون، پرفسور لطفی زاده به دلیل معرفی نظریه بدیع و سودمند منطق فازی و تلاش‌هایش در این زمینه، موفق به کسب جوایز بین‌المللی متعددی شده است.
پس از معرفی منطق فازی به دنیای علم، در ابتدا مقاومت‌های بسیاری دربرابر پذیرش این نظریه صورت گرفت.

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

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

مجموعه‌های فازی‌
بنیاد منطق فازی بر شالوده نظریه مجموعه‌های فازی استوار است. این نظریه تعمیمی از نظریه کلاسیک مجموعه‌ها در علم ریاضیات است. در تئوری کلاسیک مجموعه‌ها، یک عنصر، یا عضو مجموعه است یا نیست. در حقیقت عضویت عناصر از یک الگوی صفر و یک و باینری تبعیت می‌کند. اما تئوری مجموعه‌های فازی این مفهوم را بسط می‌دهد و عضویت درجه‌بندی شده را مطرح می‌کند. به این ترتیب که یک عنصر می‌تواند تا درجاتی - و نه کاملاً - عضو یک مجموعه باشد. مثلاً این جمله که <آقای الف به اندازه هفتاددرصد عضو جامعه بزرگسالان است> از دید تئوری مجموعه‌های فازی صحیح است. در این تئوری، عضویت اعضای مجموعه از طریق تابع (u‌(x مشخص می‌شود که x نمایانگر یک عضو مشخص و u تابعی فازی است که درجه عضویت ‌x در مجموعه مربوطه را تعیین می‌کند و مقدار آن بین صفر و یک است (فرمول 1).

فرمول 1





به بیان دیگر، (‌u‌(x نگاشتی از مقادیر x به مقادیر عددی ممکن بین صفر و یک را می‌سازد. تابع (‌u‌(x ممکن است مجموعه‌ای از مقادیر گسسته (discrete) یا پیوسته باشد. وقتی کهu  فقط تعدادی از مقادیر گسسته بین صفر و یک را تشکیل می‌دهد، مثلاً ممکن است شامل اعداد 3/0 و 5/0 و 7/0 و 9/0 و صفر و یک باشد. اما وقتی مجموعه مقادیرu  پیوسته باشند، یک منحنی پیوسته از اعداد اعشاری بین صفر و یک تشکیل می‌شود.

شکل 1 نموداری از نگاشت پیوسته مقادیر x به مقادیر ‌(‌u‌(x را نشان می‌دهد. تابع‌ (‌u‌(x در این نمودار می‌تواند قانون عضویت در یک مجموعه فازی فرضی را تعریف کند.

شکل 1














منطق فازی چگونه به‌کار گرفته می‌شود؟
منطق فازی را از طریق قوانینی که <عملگرهای فازی> نامیده می‌شوند، می‌توان به‌کار گرفت. این قوانین معمولاً بر اساس مدل زیر تعریف می‌شوند:

IF variable IS set THEN action
به عنوان مثال فرض کنید می‌خواهیم یک توصیف فازی از دمای یک اتاق ارائه دهیم. در این صورت می‌توانیم چند مجموعه فازی تعریف کنیم که از الگوی تابع (‌u‌(x تبعیت کند. شکل 2 نموداری از نگاشت متغیر <دمای هوا> به چند مجموعه‌ فازی با نام‌های <سرد>، <خنک>، <عادی>، <گرم> و <داغ> است. چنان که ملاحظه می‌کنید، یک درجه حرارت معین ممکن است متعلق به یک یا دو مجموعه باشد.
 

شکل 2

به عنوان نمونه، درجه حرارت‌های بین دمای T1 و T2 هم متعلق به مجموعه <سرد> و هم متعلق به مجموعه <خنک> است. اما درجه عضویت یک دمای معین در این فاصله، در هر یک از دو مجموعه متفاوت است. به طوری که دمای نزدیک  ‌T2 تنها به اندازه چند صدم در مجموعه <سرد> عضویت دارد، اما نزدیک نوددرصد در مجموعه <خنک> عضویت دارد.

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


اکنون می‌توان بر اساس مدل فوق قانون فازی زیر را تعریف کرد:

اگر دمای اتاق <خیلی گرم> است، سرعت پنکه را <خیلی زیاد> کن.
اگر دمای اتاق <گرم> است، سرعت پنکه را <زیاد> کن.
اگر دمای اتاق <معتدل> است، سرعت پنکه را در <همین اندازه> نگه‌دار.
اگر دمای اتاق <خنک> است، سرعت پنکه را <کم> کن.
اگر دمای اتاق <سرد> است، پنکه را <خاموش> کن.

اگر این قانون فازی را روی یک سیستم کنترل دما اعمال کنیم، آن‌گاه می‌توانیم دماسنجی بسازیم که دمای اتاق را به صورت خودکار و طبق قانون ما، کنترل می‌کند. اما این سؤال پیش می‌آید که اگر دو یا چند قانون همزمان برای یک متغیر ورودی فعال شود چه اتفاقی خواهد افتاد؟ فرض کنید دمای اتاق برابر Tx1‌ است در این صورت هم قانون مربوط به اتاق گرم و هم قانون مربوط به دمای اتاق معتدل صادق است و مقادیر U1 و U2 به ترتیب به دست می‌آید. طبق کدام قانون باید عمل کرد؟ لطفی‌زاده خود پاسخ این معما را نداد. در سال 1975 دو دانشمند منطق فازی به نام ممدانی (Mamdani) و آسیلیان اولین کنترل فازی واقعی را طراحی کردند. آنان پاسخ این معما را با محاسبهِ نقطه ثقل (C) مساحتی که از ترکیب دو ذوزنقه زیر U1 و U2 در شکل 3 پدید آمده و نگاشت آن به محور t و به دست آوردن مقدار Tx2 حل کردند.

منطق فازی، همچون منطق کلاسیک تعدادی عملگر پایه دارد. مثلاً در منطق کلاسیک از عملگرهای AND و ‌OR و‌NOT استفاده می‌شود که دانش آموزان رشته ریاضی فیزیک در دبیرستان با آن‌ها آشنا می‌شوند. در منطق فازی معادل همین عملگرها وجود دارد که به آن‌ها عملگرهای <زاده> می‌گویند. این عملگرها به صورت زیر تعریف می‌شوند: (فرمول 2)

به عنوان مثال ترکیب AND دو متغیر x و y عبارت است از کمینه مقادیر (‌u‌(x و (‌u(y. به عبارت ساده‌تر، آنجا که هم x  و y از نظر فازی <صحیح> باشند، همزمان مقادیر (‌u‌(x و (‌u(y به کمترین مقدار خود می‌رسند.

پرفسور لطفی‌زاده خالق نظریه مجموعه‌های فازی و منطق فازی‌

تفاوت میان نظریه احتمالات و منطق فازی‌

یکی از مباحث مهم در منطق فازی، تمیزدادن آن از نظریه احتمالات در علم ریاضیات است. غالباً نظریه فازی با نظریه احتمالات اشتباه می‌شود. در حالی که این دو مفهوم کاملاً با یکدیگر متفاوتند. این موضوع به قدری مهم است که حتی برخی از دانشمندان بزرگ علم ریاضیات در دنیا - به‌ویژه کشورهای غربی - درمورد آن با یکدیگر بحث دارند و جالب آن که هنوز هم ریاضیدانانی وجود دارند که با منطق فازی مخالفند و آن را یک سوء تعبیر از نظریه احتمالات تفسیر می‌کنند.

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

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

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

شکل 4

یک دیدگاه درباره علت بحث و جدل علمی میان دانشمندان این است که برخی از ریاضیدانان اتکا به علم آمار و احتمال را کافی می‌دانند و نظریه فازی را یک برداشت غیرکارآمد از جهان درباره ما تلقی می‌کنند. به عنوان مثال، اگر به مورد کودک و اتومبیل مراجعه کنیم، این پرسش مطرح می‌شود که اگر نگرانی و دغدغه نهایی ما احتمال وقوع حادثه است، دیگر چه نیازی به این است که ما درباره درجات <بیرون بودن تن کودک از اتومبیل> صحبت کنیم؟
 
بحث درباره ابعاد فلسفی منطق فازی بسیار شیرین و البته گسترده است. متأسفانه مجال برای طرح گستردهِ ابعاد فلسفی منطق فازی در این مقاله وجود ندارد. از این رو اگر مایل به مطالعه بیشتر در این زمینه هستید، کتاب بسیاری خواندنی <تفکر فازی> را که در پی‌نوشت دوم انتهای مقاله معرفی کرده‌ام، توصیه می‌کنم.(شکل 4)


کاربردهای منطق فازی‌

منطق فازی کاربردهای متعددی دارد. ساده‌ترین نمونه یک سیستم کنترل دما یا ترموستات است که بر اساس قوانین فازی کار می‌کند. سال‌هاست که از  منطق فازی برای کنترل دمای آب یا میزان کدرشدن آبی که لباس‌ها در آن شسته شده‌اند در ساختمان اغلب ماشین‌های لباسشویی استفاده می‌شود.
 
امروزه ماشین‌های ظرفشویی و بسیاری از دیگر لوازم خانگی نیز از این تکنیک استفاده می‌کنند. منطق فازی در صنعت خودروسازی نیز کاربردهای فروانی دارد. مثلاً سیستم ترمز و ABS در برخی از خودروها از منطق فازی استفاده می‌کند. یکی از معروف‌ترین نمونه‌های به‌کارگیری منطق فازی در سیستم‌های ترابری جهان، شبکه مونوریل (قطار تک ریل) توکیو در ژاپن است. سایر سیستم‌های حرکتی و جابه‌جایی بار، مثل آسانسورها نیز از منطق فازی استفاده می‌کنند.
 
سیستم‌های تهویه هوا نیز به وفور منطق فازی را به‌کار می‌گیرند. از منطق فازی در سیستم‌های پردازش تصویر نیز استفاده می‌شود. یک نمونه از این نوع کاربردها را می‌توانید در سیستم‌های <تشخیص لبه و مرز> اجسام و تصاویر(3) مشاهده کنید که در روباتیک نیز کاربردهایی دارد. به طور کلی خیلی از مواقع در ساختمان سیستم‌های تشخیص الگوها (Pattern Recognition) مثل سیستم‌های تشخیص گفتار و پردازش تصویر از منطق فازی استفاده می‌شود.

شکل 3

فرمول 2

منطق فازی و هوش مصنوعی‌

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

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

شکل 5

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

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

شرکت Massive Software که به دلیل به‌کارگیری منطق فازی برای ایجاد هوش‌مصنوعی در طراحی لشکریان فیلم‌ ارباب حلقه‌ها برنده جایزه اسکار شد، بعداً این تکنیک را در فیلم‌های دیگری همچون I.Robot و King Kong نیز به‌کار برد.

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

پی‌نوشت:
1- گاهی از او با نام <زاده> نیز نام برده می‌شود و برخی از قوانین منطق فازی به پیروی از آداب تاریخی علم ریاضیات، با کلمه Zadeh نامگذاری شده‌اند.

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

3- Edge Detection Systems

  --------------------------   
اطلاع میرساند که آقای رحمت الله هوشمند کتاب منطق فازی و شبکه های عصبی ( مفاهیم و کاربردها ) که توسط پروفسور کارتالوپولوس نگاشته شده را به فارسی ترجمه کرده اند. این کتاب در تاریخ 14/12/1381 به همت انتشارات دانشگاه شهید چمران در 320 صفحه به چاپ رسیده و منتشر شده است.