تفاوت‌های شبکه‌های عصبی با روش‌های محاسباتی متداول و سیستم‌های خبره

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

جدول 1

شبکه های عصبی و تفاوت با سیستم خبره

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

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

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

آموزش به شبکه‌های عصبی

آموزش در شبکه های عصبی

آموزش در شبکه های عصبی

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

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

واقعیت آن است که در عمل از روش Supervised  و یا حداکثر از روش‌های ترکیبی استفاده می‌شود و فرایند آموزش Unsupervised به شکل خالص تنها وعده‌ای است که شاید در آینده بتواند تحقق یابد.
در حال حاضر و در کاربردهای پیشرفته، از روش آموزش Unsupervised برای ایجاد تنظیمات اولیه بر روی سیگنال‌های ورودی شبکه‌های عصبی استفاده می‌شود و باقی مراحل آموزش شبکه به روش Supervised  ادامه می‌یابد.
همان‌طور که قبلاً اشاره کردیم، در روش معمول آموزش شبکه‌های عصبی، از مجموعه‌ شناخته‌شده‌ای از داده‌های ورودی و خروجی‌های متناظر آنها (Training Set Data) برای آموزش دادن شبکه استفاده می‌شود. در چنین فرایندی، پس از اعمال مجموعه‌های داده‌های آموزشی، پارامترهای شبکه به تدریج به سمت مقادیر نهایی خود همگرا می‌شوند.

بسته‌های نرم‌افزاری پیشرفته تولید و طراحی شبکه‌های عصبی، دارای ابزارهایی هستند که بر روند آموزش شبکه مدیریت می‌کنند. چنین ابزارهایی می‌توانند سرعت همگرایی پارامتر‌های شبکه را زیر نظر بگیرند و به عنوان مثال، اجازه دهند که پارامترهای یک شبکه مشخص، در طول چندین روز به دقت کافی و مورد نظر طراحان خود برسد.
در مواردی ممکن است که شبکه‌ عصبی اصولاً موفق به فراگیری نشود. بدین معنی که پارامترهای شبکه پس از زمان‌های طولانی به مقدار مشخصی همگرا نشود. چنین مواردی ممکن است بر اثر ناکافی بودن داده‌های آموزشی و یا اصولاً نقص طراحی شبکه ایجاد شوند. حتی مواردی در عمل وجود دارند که شبکه عصبی مشخصی، بر اثر آموزش بیش از حد، اصطلاحا Over Trained شود. توجه داشته باشید که فرایند آموزش شبکه‌های عصبی فقط به ازای زیر مجموعه‌ای از داده‌هایی که قرار شبکه آنها را در کاربرد حقیقی خود پردازش کند، آموزش داده می‌شوند. درصورتی‌که تعداد داده‌های آموزشی یک شبکه عصبی بیش از اندازه زیاد باشد (در واقع از تمامی داده‌های مسئله برای آموزش دادن به شبکه استفاده شود)، شبکه عصبی به جای آنکه آموزش ببیند، به حالتی می‌رسد که به آن حفظ کردن اطلاعات می‌گویند. در واقع به جای آنکه یک شبکه عصبی برای حل مسئله از هوش خود کمک بگیرد، از محفوظات خود استفاده می‌کند!
پس از آنکه یک شبکه عصبی به اندازه کافی آموزش دید، طراح یا کاربر شبکه می‌تواند پارامترهای شبکه را قفل کند (هر چند که در مواردی پارامترهای شبکه آزاد گذارده می‌شوند تا در طول کاربرد واقعی بازهم شبکه آموزش ببیند). در این مرحله شبکه عصبی برای کاربرد واقعی خود و حل مسائل آماده خواهد بود. در برخی از ابزارهای تولید و طراحی شبکه‌های عصبی، کل شبکه عصبی به همراه پارامترهای قفل شده آن، تبدیل به نرم‌افزار مستقلی (مثلاً یک فایل dll) می‌شوند که می‌توان از آن در پروژه‌های مشخصی استفاده کرد. در برخی از موارد دیگر، چنین شبکه‌هایی پس از آموزش دیدن، به شکل سخت‌افزاری در قالب یک مدار مجتمع (IC) به تولید انبوه یا نیمه انبوه می‌رسند.

 آموزش Unsupervised  یا تطبیقی (Adaptive)

  در مورد این روش آموزش گفتیم که شبکه‌ عصبی بدون در اختیار داشتن داده‌های خروجی، در معرض آموزش قرار می‌گیرد. در واقع سیستم به تنهایی و بدون کمک خارجی باید با توجه به شکل سیگنال‌های خروجی خود، درباره درستی و نادرستی آنها تصمیم‌گیری نماید. در دنیای واقعی شرایط بسیار زیادی وجود دارند که در آنها مجموعه اطلاعات کافی برای آموزش دادن به سیستم فراهم نیستند. تحقیقات نظامی یکی از گرایش‌هایی است که به این موضوع توجه دقیقی دارد. به عنوان مثال گفته می‌شود که شرایط جنگی به دلیل فراوانی پارامترها و تکنیک‌های نظامی متغیر و پیشرفت‌های تکنولوژی نظامی، از نمونه مواردی است که در آنها به هیچ وجه نمی‌توان مجموعه داده‌های آموزشی کافی به دست آورد.در این زمینه یکی از محققان شبکه‌های عصبی، به نام Tuevo Kohonen (از دانشگاه هلسینکی) فعالیتی جدی دارد. کوهنن با تحقیقات در ساختارهای عصبی غیرمتعارف، به پژوهش در این زمینه ادامه می‌دهد. کوهنن، نرون‌های شبکه‌عصبی را فیلدهای مختلفی تقسیم‌بندی می‌کند. در روش کوهنن، نرون‌های هر فیلد “مرتب توپولوژیک” یا Topologically Ordered محسوب می‌شوند (توپولوژی نام شاخه‌ای از ریاضیات است که در آن نگاشت از یک فضا به فضای دیگر بدون تغییر مشخصه‌های هندسی، مورد بررسی قرار می‌گیرد). گروه‌بندی‌های سه‌بعدی که در ساختار مغز پستانداران یافت شده است، نمونه‌ای از مرتب‌سازی توپولوژیک محسوب می‌شوند. کوهنن معتقد است که فقدان ملاحظات توپولوژیک در مدل‌های عصبی امروزی، باعث می‌شود که شبکه‌های عصبی امروزی، مدل‌های ساده شده‌ای از شبکه‌های عصبی واقعی موجود در مغز محسوب شوند. در هر صورت این حوزه از مبحث شبکه‌های عصبی، هنوز در مرحله تحقیقات آزمایشگاهی قرارداد و کاربرد واقعی نیافته است.

عملیات شبکه‌های عصبی

ساختار دو بعدی نرون ها

ساختار دو بعدی نرون ها

تا کنون توجه ما معطوف ساختار درونی یک نرون مصنوعی یا المان پردازشی بود. اما بخش مهم دیگری در مراحل طراحی یک شبکه عصبی نیز وجود دارد . در واقع هنر یک طراح شبکه‌های عصبی می‌تواند در چگونگی ترکیب نرون‌ها در یک شبکه ( Neuran Clustering ) ، متجلی شود.علوم بیولوژی نشان داده‌اند که کلاسترین نرون‌ها در

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

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

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

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

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

در مواردی، نرون مشخصی از شبکه عصبی تمایل دارد که سیگنال دیگر نرون‌های لایه خود را نادیده بگیرد. چنین حالتی به‌طور معمول در لایه خروجی ایجاد می‌شود. به عنوان مثال، در کاربردهای تشخیص متن (OCR)، فرض کنید که احتمال آنکه کاراکتر مورد شناسایی، حرف P باشد برابر با ۸۵ درصد تعیین شده است و به همین ترتیب احتمال آنکه کاراکتر مورد نظر حرف F باشد، ۶۵‌ درصد تخمین زده است. در این وضعیت، سیستم باید کاراکتری را برگزیند که دارای درصد احتمال بزرگ‌تر است. در نتیجه در این شبکه عصبی، نرون‌هایی که خروجی F را تجویز می‌کنند، باید نادیده گرفته ‌شوند یاInhibit شوند. به چنین فرایندی، Lateral Inhibition گفته می‌شود.

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

 

اینفوگرافیک تاریخچه اصول رمز نگاری

در تصویر زیر تاریخچه اصول رمز نگاری را مشاهده می نمایید . بر روی عکس کلیک کنید تا عکس را در سایز واقعی ببینید :

اینفو گراف رمز نگاری

اینفو گراف رمز نگاری

 

 

شبکه های عصبی (Neural Network)

شبکه های عصبی

شبکه های عصبی

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

شباهت با مغز

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

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

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

نرون بیولوژیک

نرون بیولوژیک در شبکه عصبی

روش کار نرون‌ها

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

همان‌طور که در تصویر مشاهده می‌کنید، نرون‌ها از چهار بخش اصلی ساخته شده‌اند. دندریت‌ها (Dendrite)، سوما (Soma)، اکسان (Axon) و بالاخره، سیناپس (Synapse) دندریت‌ها، همان اجزایی هستند که به‌شکل رشته‌های طویل از مرکز سلول به اطراف پراکنده می‌شوند. دندریت‌ها نقش کانال‌های ارتباطی را برای انتقال‌دادن سیگنال‌های الکتریکی به مرکز سلول بر عهده دارند. در انتهای دندریت‌ها، ساختار بیولوژیکی ویژه‌ای به‌نام سیناپس واقع شده است که نقش دروازه‌های اتصالی کانال‌های ارتباطی را ایفا می‌کند. در واقع سیگنال‌های گوناگون از طریق سیناپس‌ها و دندریت‌ها به مرکز سلول منتقل می‌شوند و در آنجا با یکدیگر ترکیب می‌شوند. عمل ترکیب که به آن اشاره کردیم، می‌تواند یک عمل جمع جبری ساده باشد. اصولاً اگر چنین نیز نباشد، در مدل‌سازی ریاضی می‌توان آنرا یک عمل جمع معمولی در نظر گرفت که پس از آن تابع ویژه‌ای بر روی سیگنال اثر داده می‌شود و خروجی به شکل سیگنال الکتریکی متفاوتی از طریق اکسان (و سیناپس آن) به سلول‌های دیگر انتقال داده می‌شود.

البته تحقیقات جدید نمایانگر این واقعیت هستند که نرون‌های بیولوژیک بسیار پیچیده‌تر از مدل ‌ساده‌ای هستند که در بالا تشریح شد . اما همین مدل ساده می‌تواند زیربنای مستحکمی برای دانش شبکه‌های عصبی مصنوعی (Artificial Neural Network = ANN) تلقی گردد و متخصصان گرایش شبکه‌های عصبی یا هوش مصنوعی می‌توانند با پیگیری کارهای دانشمندان علوم زیست‌شناسی، به بنیان‌گذاری ساختار‌های مناسب‌تری در آینده دست بزنند.

مدل ریاضی 

در متون فنی برای نمایش مدل ساده‌ای که در بالا‌ تشریح گردید، به‌طور معمول از شکلی مشابه شکل ۶ استفاده می‌شود. در این شکل کلاسیک، از علامت p برای نشان دادن یک سیگنال ورودی استفاده می‌شود. در واقع در این مدل، یک سیگنال ورودی پس از تقویت (یا تضعیف) شدن به اندازه پارامتر w، به‌صورت یک سیگنال الکتریکی با اندازه pw وارد نرون می‌شود. به‌جهات ساده‌سازی مدل ریاضی، فرض می‌شود که در هسته سلول عصبی، سیگنال ورودی با سیگنال دیگری به اندازه b جمع می‌گردد. در واقع سیگنال b خود به معنی آن است که سیگنالی به اندازه واحد در پارامتری مانند b ضرب (تقویت یا تضعیف) می‌شود. مجموع حاصل، یعنی سیگنالی به اندازه pw + b، قبل از خارج شدن از سلول تحت عمل یا فرآیند دیگری واقع می‌شود که در اصطلاح فنی به آن تابع انتقال (Transfer Function) می‌گویند. این موضوع در شکل به‌وسیله جعبه‌ای نمایش داده شده است که روی آن علامت f قرار داده شده است. ورودی این جعبه همان سیگنال pw + b است و خروجی آن یا همان خروجی سلول، با علامت a  نشانه گذاری شده است. در ریاضی، بخش آخر مدل‌سازی توسط رابطه (a = f(pw + b نمایش داده می‌شود. پارامتر w یا همان ضریبی که سیگنال ورودی p در آن ضرب می‌شود، در اصطلاح ریاضی به نام پارامتر وزن یا weight  نیز گفته می‌شود.

ورودی خروجی سلول های شبکه عصبی

سلول شبکه عصبی

زمانی‌که  از  کنار هم قرار دادن تعداد بسیار زیادی از سلول‌های فوق یک شبکه عصبی بزرگ ساخته شود، شبکه‌ای در دست خواهیم داشت که رفتار آن علاوه بر تابع خروجی f، کاملاً به مقادیر w و b وابسته خواهد بود. در چنین شبکه بزرگی، تعداد بسیار زیادی از پارامترهای w و b باید توسط طراح شبکه مقداردهی شوند. این پروسه از کار، در اصطلاح دانش شبکه‌های عصبی، به فرآیند یادگیری معروف است. در واقع در یک آزمایش واقعی، پس از آن‌که سیگنال‌های ورودی چنین شبکه‌ بزرگی اتصال داده شدند، طراح شبکه با اندازه‌گیری خروجی و با انتخاب پارامترهای w و b به‌گونه‌ای که خروجی مطلوب به‌دست آید، شبکه را«آموزش» می‌دهد. به این ترتیب پس از آنکه چنین شبکه به ازای مجموعه‌ای از ورودی‌ها برای ساختن خروجی‌های مطلوب «آموزش» دید، می‌توان از آن برای حل مسائلی که از ترکیب متفاوتی از ورودی‌ها ایجاد می‌شوند، بهره برد.
تابع f می‌تواند بر حسب کاربردهای گوناگون به‌‌طور ریاضی، به شکل ‌های متفاوتی انتخاب شود. در برخی از کاربردها، پاسخ مسائل از نوع دودویی است. مثلاً مسأله به‌گونه‌ای است که خروجی شبکه عصبی باید چیزی مانند”سیاه” یا “سفید” (یا آری یا نه) باشد. در واقع چنین مسائلی نیاز به آن دارند که ورودی‌های دنیای واقعی به مقادیر گسسته مانند مثال فوق تبدیل شوند. حتی می‌توان حالاتی را در نظر گرفت که خروجی دودویی نباشد، اما همچنان گسسته باشد. به عنوان مثال، شبکه‌ای را در نظر بگیرید که خروجی آن باید یکی از حروف الفبا، مثلاً  از بین کاراکترهای اسکی (یا حتی یکی از پنجاه هزار کلمه متداول زبان انگلیسی) باشد. در چنین کاربردهایی، روش حل مسئله نمی‌تواند صرفاً بر جمع جبری سیگنال‌های ورودی تکیه نماید. در این کاربردها، ویژگی‌های خواسته شده فوق، در تابع خروجی یا تابع انتقال f گنجانیده می‌شوند. مثلاً اگر قرار باشد خروجی فقط یکی از مقادیر صفر یا یک را شامل شود، در این صورت می‌توان تابع خروجی شبکه عصبی را به ‌شکل بخش a  شکل شماره ۷ انتخاب کرد. در این حالت، خروجی چنین شبکه‌ای فقط می‌تواند بر حسب ورودی‌های متفاوت، مقدار یک یا صفر باشد.

در گروه دیگری از مسائلی که حل آن‌ها به شبکه‌های عصبی واگذار می‌شود، خروجی شبکه عصبی الزاماً بین مقادیر معلوم و شناخته شده‌ واقع نمی‌شود. مسائلی از نوع شناسایی الگو‌های تصویری، نمونه‌ای از چنین مواردی محسوب می‌شوند. شبکه‌های عصبی در این موارد، باید به‌گونه‌ای باشند که قابلیت تولید مجموعه نامتناهی از پاسخ‌ها را داشته باشند. رفتار حرکتی یک روبات نمونه‌ای از <هوشی> است که چنین شبکه‌های عصبی می‌توانند فراهم آورند. اما در چنین شبکه‌هایی هم لازم خواهد بود که خروجی بین مقادیر مشخصی محدود شده باشد (موضوع محدود شدن خروجی بین دو مقدار حدی ماکزیمم و مینیمم را در اینجا با موضوع قبلی اشتباه نگیرید. در این مورد خروجی مسأله اساساً  گسسته نیست و حتی در بین چنین مقادیر حدی، می‌توان به تعداد نامتناهی خروجی دست یافت). اهمیت این موضوع زمانی آشکار می‌شود که از مثال واقعی کمک گرفته شود. فرض کنید قراراست از شبکه عصبی برای کنترل حرکت بازوی یک روبات استفاده شود. در صورتی‌که خروجی یک شبکه عصبی برای کنترل نیروی حرکتی به‌کار گرفته شود، طبیعی خواهد بود که اگر خروجی شبکه محدود نشده باشد، ممکن است بازوی روبات بر اثر حرکت بسیار سریع، به خود و یا محیط اطراف آسیب برساند. در چنین مواردی ممکن است از تابع انتقال به‌شکل بخش b شکل شماره ۷ استفاده شود.
قبل از آنکه به بخش دیگری از موضوع شبکه‌های عصبی بپردازیم، باید یک نکته را یادآوری کنیم که همان‌طور که در ابتدای این بخش تشریح شد، سلول‌های عصبی دارای ورودی‌های متعددی هستند و خروجی آنها نیز الزاماً محدود به یک خروجی نیست. بر این اساس زمانی که بخواهیم از مدل‌سازی ریاضی برای مدل کردن یک سلول عصبی استفاده کنیم، به‌جای آن‌که همانند شکل ۶ از یک ورودی p و یک خروجی a استفاده کنیم، از یک بردار p و یک بردار a سخن می‌گوییم. بدین ترتیب بدون آنکه نیاز به اعمال تغییری در این تصویر داشته باشیم، می‌توانیم از آن برای مدل‌سازی سلولی با n ورودی (p1,p2,p3 . . . pn) و به همین ترتیب m خروجی (a1,a2,am) استفاده کنیم. توجه داشته باشید که در این صورت، تعداد عناصر b و w نیز به تناسب افزایش می‌یابند و هر یک به n عدد افزایش می‌یابند.

نرون های عصبی الکترونیکی

پیاده سازی الکترونیکی نرون های عصبی

پیاده‌سازی‌های الکترونیکی نرون‌های مصنوعی

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

در این مدل، ورودی‌ها در نخستین گام، در ضریب وزنی (Weighting Factor) متناظر خود ضرب می‌شوند. در مرحله بعد، ورودی‌هایی که تغییر مقیاس داده‌اند وارد واحدی می‌شوند که در آن سیگنال‌های ورودی با هم ترکیب می‌شوند. به‌طور معمول عمل ترکیب در این واحد همان عمل جمع جبری است، اما در اصول، می‌توان در این واحد، ورودی‌ها را به روش‌های دیگری علاوه بر عمل جمع معمولی نیز با یکدیگر ترکیب کرد. مثلاً می‌توان به‌جای عمل جمع، از عمل متوسط گیری، انتخاب بزرگترین، انتخاب کوچک‌ترین، عمل OR یا‌ AND منطقی هم استفاده کرد. در واقع هدف نهایی در این واحد آن است که از تعداد n ورودی، یک سیگنال خروجی برای ارائه به بخش‌های بعدی فرایند، به‌دست آید. انتخاب نوع “عمل” در این واحد، موضوع دقیقی است که کاملاً به کاربرد مسأله وابسته است.

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

در هر صورت، پس از آنکه ورودی‌ها با یکدیگر ترکیب شدند، سیگنال حاصل به واحد دیگری که در آن تابع انتقال یا Transfer Function به سیگنال اعمال می‌شود، هدایت می‌گردد. خروجی این بخش، سیگنال‌های حقیقی خواهند بود. بدین ترتیب جعبه‌ای در دست خواهیم داشت که تعداد n عدد سیگنال ورودی را به m عدد سیگنال خروجی تبدیل می‌کند. در عمل توابع انتقالی که در بخش انتهایی نمودار شکل ۸ به‌کار برده می‌شوند، معمولاً یکی از توابع سینوسی، تانژانت هذلولی، Sigmoid و نظایر این‌ها است. در تصویر شماره ۹، نمونه‌ای از یک تابع انتقال از نوع Sigmoid نمایش داده شده است. همانطور که در این شکل مشاهده می‌کنید، این تابع انتقال، سیگنال خروجی واحد ترکیب را به سیگنال خروجی تبدیل می‌کند که مقدار (یا اندازه آن) بین صفر و یک می‌تواند باشد.
در عمل، سیگنالِ خروجی یک المان پردازنده می‌تواند برحسب نوع کاربرد، به المان‌های پردازشی دیگر و یا به اتصالات دیگر خارج از شبکه عصبی هدایت شود. در واقع تمامی شبکه‌های عصبی بر اساس ساختار المان‌های پردازشی فوق کار می‌کنند. در قسمت بعدی این مقاله به تشریح عملیات در شبکه‌های عصبی و آموزش این شبکه‌ها می‌پردازیم.

درهم سازی یا hash چیست؟

توابه هش 

هش و اصول رمز نگاری

 

 

یک Hash  که به آن Checksum ، پیام Digest و یا اثرانگشت ، نیز گفته می شود ، فرآیندی است که بصورت ریاضی، حجم یک جریان از داده را به یک طول ثابت کاهش می دهد ( معمولا” ۱۲۸ و یا ۱۶۰ بیت ) .  عملکرد hash ، مشابه اثرانگشت یک شخص می باشد. اثرانگشت ، پارامتری منحصربفرد به منظور تشخیص هویت افراد بوده و در ادامه با استفاده از آن امکان دستیابی به سایر مشخصات افراد نظیر : رنگ چشم ، قد ، جنسیت و سایر موارد دلخواه ، فراهم می گردد . اکثر توابع Hash از لحاظ رمزنگاری دارای عملکردی مشابه توابع رمزنگاری  می باشند . در حقیقت ، برخی توابع hash صرفا” تغییرات اندکی را در توابع رمزنگاری ایجاد نموده اند . اکثر عملیات با دریافت یک بلاک  از داده  شروع و در ادامه با استفاده از یک فرآیند تکرارشونده و بکارگیری یک الگوریتم رمزنگاری ، تغییرات لازم در ارتباط با بیت ها ، اعمال می شود.

 hashبه عبارتی دیگر

      هش (Hash, Hash Code, Digest, Message Digest هم نامیده می شود) را می توان به صورت اثر انگشت دیجیتالی یک داده در نظر گرفت. با این روش شما می توانید رشته ای اندازه-ثابت (fixed length) از یک داده به دست آورید که با روش های ریاضی به صورت “یک طرفه” رمزنگاری شده است. کشف رشته اصلی از رشته هش آن (عملیات معکوس) به صورت کارا تقریبا  غیر ممکن است. نکته دیگر اینکه هر داده یک رشته هش شده کاملا  منحصر به فرد ایجاد می کند( احتمال یکی شدن رشته های هش دو رشته متفاوت در الگوریتم MD5 یک در ۳٫۴۰۲۸۲۳۶۶۹۲۰۹۳۸۴۶۳۴۶۳۳۷۴۶۰۷۴۳۱۷۷e+38 می باشد..  این خواص ، هش کردن را به روشی کارا و ایده آل برای ذخیره سازی کلمات عبور در برنامه های شما تبدیل می کند. چرا؟ برای این که حتی اگر یک نفوذگر(Hacker) بتواند به سیستم و بانک اطلاعاتی شما نفوذ کند و بخشی از اطلاعات شما را به دست آورد (شامل کلمات عبور هش شده) نمی تواند کلمات عبور اولیه را از روی آن ها بازیابی کند.

 توجه کنیدکه:

یکی از دو خصوصیت الگوریتم های   HASHاینه که معکوس پذیر نیستند! دومی اینه که هرگز دو ورودی متفاوت به خروجی یکسان منجر نمی شوند. هر یک از این دو خصوصیت اگر نقض بشه می گیم الگوریتم شکسته!!!

Hash ، دارای ویژگی های مهم زیر می باشد :

امکان استنتاج ورودی از طریق خروجی وجود ندارد .

نمی توان دو ورودی را پیدا کرد که به ازای آنان خروجی یکسانی تولید گردد : احتمال تولید مقادیر Hash یکسان برای دو مجموعه متفاوت از داده ها کمتر از ۰۰۱ /۰  درصد است .

 

موارد استفاده از Hash  ها

    Hash ها کلا موارد استفاده کمی دارند که ما در ادامه بحث آن ها را بیان می کنیم:

۱) تشخیص درستی یک فایل Verifying file integrity

برای مثال زمانی که یک فایل با حجم بالا را دانلود می نماییم می توانیم با به دست آوردن مقدار MD5 آن فایل توسط دستور md5sum  و مقایسه آن  با مقدار Md5  داده شده توسط سایت مورد نظر  از درستی فایلمان اطمینان حاصل کنیم.

hash (2کردن کلمه عبور Hashing passwords

 ۳) نشانه گذاری  اسناد به روش digitally   (امضاهای digitally)

انواع هش

  • (۱۲۸ bits, obsolete) MD4

  • (۱۲۸ bits) MD5

  • (۱۶۰ bits)RIPEMD-160

  • (۱۶۰ bits)SHA-1

  • (longer versions of SHA-1, with slightly different designs) SHA-256, SHA-384, and SHA-512

انواع مختلفی از الگوریتم های قوی هش کردن برای استفاده در برنامه های کاربردی موجود هستند، محبوب ترین آنها که مورد استفاده برنامه نویسان هستند MD5 و SHA-1(Secure hash algorithm)می باشند. سیستم های قدیمی تر از( DES(Data Encryption Standard استفاده می کردند. این روش ۵۶ بیتی دیگر  یک روش قوی هش کردن محسوب نمی گردد. ، الگوریتم های قوی تری مانند SHA-256 و SHA-512  برای موارد خاص مانند امضاهای دیجیتالی توصیه می گردد ولی برای هش کردن کلمات عبوردر برنامه های امروزی SHA-1 هنوز سطح امنیت بسیار خوبی را فراهم می کند.

  • الگوریتم های hashing ، از یک تابع ایمن رمزنگاری نظیر  Message Digest 5)MD5) و یا Secure Hash Algoritm)SHA) به منظور تولید یک مقدار Hash  مرتبط با  داده ورودی استفاده می نمایند . Hash ، یک نوع خاص از رمزنگاری یک طرفه است . برخی افراد ، hashing  را به عنوان یک مدل رمزنگاری تلقی می نمایند . Hashing عملا” یک مدل رمزنگاری نمی باشد چراکه Hash نمی تواند رمزگشائی گردد ( بدست آوردن مقدار ورودی با اسنتاد و آنالیز مقدار خروجی ) . شکل زیر ، نحوه عملکرد الگوریتم SHA-1 ( نسخه شماره یک ، پیاده سازی شده در سال  ۱۹۹۴ ) را  نشان می دهد :

  • MD5 روشی برای تولید یک چکیده از یک پیام است ( Message Digest ) . چه یک کلمه ، یک عدد ، یک جمله ، یک کتاب چند صد صفحه ای ، یک فایل و … به او بدهید ، یک چکیده با طول ثابت ۱۲۸بیتی تولید میکند . حالا این به چه دردی میخورد ؟ فرض کنید در حاشیه ء انتخابات پر شور مجلس ( که قرار دوباره ملت یک حماسه دیگه توش خلق کنند ! و براستی این مردم جز خلق کردن حماسه به درد دیگری هم میخورند ؟ 🙄 ) قراره وزیر کشور نامه ای محرمانه به تمام استانداری های کشور ارسال کنه . ( حالا به چه روشی زیاد مهم نیست ) اگر این نامه بین راه توسط افرادی تغییر داده بشه ، دریافت کننده چطور ممکنه بفهمه ؟ اون ماموره و مجبور به اطاعت . خیلی بعیده به تهران تلفن بزنه و استعلام کنه ، شاید اصلا بالاش نوشته باشه محرمانه و اون مجبور باشه بدون اطلاع دیگران بهش عمل کنه … اگر حالا متن اصلی وزیر با مطلب دیگری تغییر داده شده باشه ( مثلا” : نمایندگان شورای نگهبان رو به حوزه های انتخابیه راه ندید ! 😈 8) ) چه دردسر بزرگی ایجاد میشه …!

 یکی از راه های اعتماد سازی در یک تبادل اطلاعات دو طرفه استفاده از امضاهای دیجیتال است و چکیده پیام یا همون Message Digest نقش مهمی در این مهم ایفا میکنه . پیام شما ( هر چی که میخواد باشه ) همیشه دارای یک چکیده ۱۲۸ بیتی است که با متدی یکتا تهیه شده و پس از رمزنگاری به انتهای نامه الصاق میشود ، دریافت کننده ( که به عنوان مثال در یک معماری مبتنی بر PKI دارای کلید خصوصی – Private Key – خودش هست ) میتونی با کلید خصوصی خودش چکیده پیام رو ( که با کلید عمومی – Public key – کد شده ) باز کنه ، بعد متن پیام رو با همون الگوریتم یکتا درهم ریزی کنه ( Hashing ) و بعدش محصول رو با آنچه که به پیام الصاق شده بود مقایسه کنه . با تکیه به معماری غیر متقارن ( Asymmetric ) شناسائی و تصدیق هویت ( Authentication ) این یکی از روشهای مناسب برای اعتماد سازی است .

  • MD5 یا Message Digest version 5 در دانشگاه MIT و توسط پروفسور Ronald L. Rivest طراحی شده و متن کامل داستان MD5 رو میتونید در آر اف سی شماره ۱۳۲۱ مطالعه کنید : http://www.faqs.org/rfcs/rfc1321.html

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

    http://userpages.umbc.edu/~mabzug1/cs/md5/md5.html

    نکته پایانی : شاید موقع دریافت نرم افزار از برخی سایتهای معتبر دیده باشید که کنار فایلهای مربوطه نوشته اند MD5 و کنار آن هم رشته ای مثل این :

    ۹۰۰۱۵۰۹۸۳cd24fb0d6963f7d28e17f72 ) این رشته خروجیه abc است (

  اینگونه سایتهای برای ایجاد اعتماد ، از فایلهای خود با برنامه هائی که چکیدهء MD5 تولید میکنند ، امضای مربوطه را ایجاد و اعلام میکنند ، شما هم بعد از دریافت میتونید با یکی از ابزارهای متداول همینکار ( روی لینوکس اصلا دستوری به همین نام و به همین مقصود وجود داره ) فایل مربوطه رو چک کنید تا از صحت محتوای اون مطمئن بشید . مدتها قبل فردی توانست سایت حمایت کننده SendMail که میل سروری معروف روی پلت فرمهای مبتنی بر یونیکس است را هک کرده و بجای تغییر صفحات وب آن ، نسخه ای حاوی یک تروجان را به عنوان نسخه جدید آپلود کرد و بعد هم به ا راسال خبرنامهء رسمی سایت SendMail باعث شد تعداد زیادی از مدیران سرورها جهت نصب نسخه جدید هجوم بیارن و در واقع نسخه محتوی تروجان را دریافت و نصب کنند ( و براستی وقتی سورس باز است چه کسی به خودش زحمت چک کردن اون رو میده ؟ بقول یکی از اساتید مرحومم ، مخفی ترین چیز ، چیزیه که اصلا برای مخفی کردنش تلاش نشده ! ) و این حرکت زیرکانه اون هکر باعث شد صدها سایت تحت سیطره اون قرار بگیرن که البته ناگفته پیداست برای برقراری یک حملهء DDOS ( یا Distributed Denail of service ) به اونها احتیاج داشت

  • الگوریتم رمزنگاری متقارن BlowFish یکی از روشهای متداول رمزنگاری است . این الگوریتم با پذیرش کلید عمومی از ۳۲ بیت تا ۴۴۸ بیت ، جایگزین خوبی برای روشهائی مثل DES است . ( خصوصا در کشورهائی مثل آمریکا که صدور و فروش نرم افزارهای دارای سیستم رمزنگاری به خارج از کشور ممنوع و برای استفاده های داخلی هم در طول کلید محدودیتهائی وجود داره )

    از این روش امروزه به وفور در نرم افزارهای گسترده و سازمانی استفاده میشه ، به عنوان مثال Oracle . این الگوریتم در سال ۱۹۹۳ توسط Bruce Schneier طراحی و توسعه داده شد .

    توضیحات مفیدی برای این الگوریتم اینجا : http://www.schneier.com/blowfish.html است که میتونید استفاده کنید . پیاده سازی های متعددی از این الگوریتم به زبانهای سی ، سی شارپ ، جاوا ، دلفی ، بیسیک وجود داره که در صورت نیاز با یک جستجوی ساده میتونید پیداشون کنید .

 

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

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

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

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

این منطق به خوبی نشان می‌دهد که چرا منطق دو ارزشی «صفر و یک» در ریاضیات کلاسیک قادر به تبیین و توصیف مفاهیم نادقیقی همچون «گرما و سرما» که مبنای بسیاری از تصمیم‌گیری‌های هوشمند را تشکیل می‌دهند، نیست.

هوش مصنوعی و فازی

هوش مصنوعی

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

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

منطق فازی و کاربرد آن

فازی و کاربردهای آن

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

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

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

سیستم‌های تهویه هوا نیز به وفور منطق فازی را به‌کار می‌گیرند. از منطق فازی در سیستم‌های پردازش تصویر نیز استفاده می‌شود. یک نمونه از این نوع کاربردها را می‌توانید در سیستم‌های «تشخیص لبه و مرز» اجسام و تصاویر مشاهده کنید که در روباتیک نیز کاربردهایی دارد. به طور کلی خیلی از مواقع در ساختمان سیستم‌های تشخیص الگوها (Pattern Recognition) مثل سیستم‌های تشخیص گفتار و پردازش تصویر از منطق فازی استفاده می‌شود.

فازی

فازی

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

تفاوت فازی و احتمالات

تفاوت فازی و احتمالات

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

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

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

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

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

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

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

منطق فازی (Fuzzy Logic)

lugic fuzzy

منطق فازی

پیشینه منطق فازی

تئوری مجموعه‌های فازی و منطق فازی را اولین بار پرفسور لطفی‌زاده در رساله‌ای به نام «مجموعه‌های فازی ، اطلاعات و کنترل» در سال ۱۹۶۵ معرفی نمود. هدف اولیه او در آن زمان، توسعه مدلی کارآمدتر برای توصیف فرآیند پردازش زبان‌های طبیعی بود. او مفاهیم و اصلاحاتی همچون مجموعه‌های فازی، رویدادهای فازی، اعداد فازی و فازی‌سازی را وارد علوم ریاضیات و مهندسی نمود. از آن زمان تاکنون، پرفسور لطفی زاده به دلیل معرفی نظریه بدیع و سودمند منطق فازی و تلاش‌هایش در این زمینه، موفق به کسب جوایز بین‌المللی متعددی شده است.

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

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

مجموعه‌های فازی

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

فرمول 1

فرمول۱

به بیان دیگر، (‌u‌(x نگاشتی از مقادیر x به مقادیر عددی ممکن بین صفرویک را می‌سازد. تابع (‌u‌(x ممکن است مجموعه‌ای از مقادیر گسسته (Discrete) یا پیوسته باشد. وقتی که u  فقط تعدادی از مقادیر گسسته بین صفر و یک را تشکیل می‌دهد، مثلاً ممکن است شامل اعداد ۳/۰ و ۵/۰ و ۷/۰ و ۹/۰ و صفر و یک باشد. اما وقتی مجموعه مقادیرu  پیوسته باشند، یک منحنی پیوسته از اعداد اعشاری بین صفر و یک تشکیل می‌شود.

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

شکل2

شکل۲

منطق فازی چگونه به‌کار گرفته می‌شود؟
منطق فازی را از طریق قوانینی که «عملگرهای فازی» نامیده می‌شوند،

می‌توان به‌کار گرفت. این قوانین معمولاً بر اساس مدل زیر تعریف می‌شوند :                                                  

If Variable Is set Then Action
به عنوان مثال فرض کنید می‌خواهیم یک توصیف فازی از دمای یک اتاق ارائه دهیم. در این صورت می‌توانیم چند مجموعه فازی تعریف کنیم که از الگوی تابع (‌u‌(x تبعیت کند. شکل ۳ نموداری از نگاشت متغیر «دمای هو» به چند مجموعه‌ فازی با نام‌های “سرد”، “خنک”، “عادی”، “گرم” و “داغ” است. چنان که ملاحظه می‌کنید، یک درجه حرارت معین ممکن است متعلق به یک یا دو مجموعه باشد.

شکل 3

شکل ۳

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

شکل4

شکل۴

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

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

اگر دمای اتاق <گرم> است، سرعت پنکه را <زیاد> کن.

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

اگر دمای اتاق <خنک> است، سرعت پنکه را <کم> کن.

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

اگر این قانون فازی را روی یک سیستم کنترل دما اعمال کنیم، آن‌گاه می‌توانیم دماسنجی بسازیم که دمای اتاق را به صورت خودکار و طبق قانون ما، کنترل می‌کند. اما این سؤال پیش می‌آید که اگر دو یا چند قانون همزمان برای یک متغیر ورودی فعال شود چه اتفاقی خواهد افتاد؟ فرض کنید دمای اتاق برابر 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 به کمترین مقدار خود می‌رسند.

 

 

سیستم های خبره (Expert Sytems)

سیستم خبره

سیستم خبره

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

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

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

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

به روند ساخت یک سیستم خبره، Knowledge Engineering  یا مهندسی دانش گفته می‌شود. یک مهندس دانش باید اطمینان حاصل کند که سیستم خبره طراحی شده، تمام دانش مورد نیاز برای حل یک مسئله را دارد. طبیعتاً در غیراین‌صورت، تصمیم‌های سیستم خبره قابل اطمینان نخواهند بود.

ساختار یک سیستم خبره

هر سیستم خبره از دو بخش مجزا ساخته شده است: پایگاه دانش و موتور تصمیم‌گیری.
پایگاه دانش یک سیستم خبره از هر دو نوع دانش مبتنی بر حقایق ‌(Factual) و نیز دانش غیرقطعی (Heuristic)  استفاده می‌کند. Factual Knowledge، دانش حقیقی یا قطعی نوعی از دانش است که می‌توان آن را در حیطه‌های مختلف به اشتراک گذاشت و تعمیم داد؛ چراکه درستی آن قطعی است.

در سوی دیگر، Heuristic knowledge قرار دارد که غیرقطعی‌تر و بیشتر مبتنی بر برداشت‌های شخصی است. هرچه حدس‌ها یا دانش هیورستیک یک سیستم خبره بهتر باشد، سطح خبرگی آن بیشتر خواهد بود و در شرایط ویژه، تصمیمات بهتری اتخاذ خواهد کرد.

دانش مبتنی بر ساختار Heuristic در سیستم‌های خبره اهمیت زیادی دارد این نوع دانش می‌تواند به تسریع فرآیند حل یک مسئله کمک کند .

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

شکل 1

شکل ۱

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

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

  • دفتر ماهنامه شبکه در تهران قرار دارد.
  • تهران در ایران قرار دارد.

سیستم خبره می‌تواند به قانون زیر برسد:

  • ‌ دفتر ماهنامه شبکه در ایران قرار دارد.

استفاده از  منطق فازی

موضوع مهم دیگر در ارتباط با سیستم‌های خبره، پیوند و ارتباط آن با دیگر شاخه‌های هوش مصنوعی است. به بیان روشن‌تر، برخی از سیستم‌های خبره از Fuzzy Logic یا منطق فازی استفاده می‌کنند. در منطق غیرفازی تنها دو ارزش درست (True) یا نادرست (False) وجود دارد. چنین منطقی نمی‌تواند چندان کامل باشد؛ چراکه فهم و پروسه تصمیم‌گیری انسان‌ها در بسیاری از موارد، کاملا قطعی نیست و بسته به زمان و مکان آن، تا حدودی درست یا تا حدودی نادرست است. در خلال سال‌های ۱۹۲۰ و ۱۹۳۰، Jan Lukasiewicz فیلسوف لهستانی منطقی را مطرح کرد که در آن ارزش یک قانون می‌تواند بیشتر از دو مقدار ۰ و ۱ یا درست و نادرست باشد. سپس پروفسور لطفی‌زاده نشان داد که منطق Lukasiewicz را می‌توان به صورت “درجه درستی” مطرح کرد. یعنی به جای این‌که بگوییم: “این منطق درست است یا نادرست؟” بگوییم: “این منطق چقدر درست یا چقدر نادرست است؟”

از منطق فازی در مواردی استفاده می‌شود که با مفاهیم مبهمی چون “سنگینی”، “سرما”، “ارتفاع” و از این قبیل مواجه شویم. این پرسش را در نظر بگیرید : “وزن یک شیء ۵۰۰ کیلوگرم است، آیا این شیء سنگین است؟” چنین سوالی یک سوال مبهم محسوب می‌شود؛ چراکه این سوال مطرح می‌شود که “از چه نظر سنگین؟” اگر برای حمل توسط یک انسان بگوییم، بله سنگین است. اگر برای حمل توسط یک اتومبیل مطرح شود، کمی سنگین است، ولی اگر برای حمل توسط یک هواپیما مطرح شود سنگین نیست.

در اینجاست که با استفاده از منطق فازی می‌توان یک درجه درستی برای چنین پرسشی در نظر گرفت و بسته به شرایط گفت که این شیء کمی سنگین است. یعنی در چنین مواردی گفتن این‌که این شیء سنگین نیست
(False) یا سنگین است (True) پاسخ دقیقی نیست.

مزایا و محدودیت‌های سیستم‌های خبره

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

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

مزایای‌ سیستم‌های‌ خبره‌ را می‌توان‌ به‌ صورت‌ زیر دسته‌بندی‌ کرد:

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

۲-کاهش‌هزینه‌:هزینه‌کسب‌تجربه‌برای‌کاربربه‌طورزیادی‌کاهش‌می‌یابد.

۳-کاهش‌ خطر: سیستم‌ خبره‌ می‌تواند در محیطهایی‌ که‌ ممکن‌ است‌برای‌ انسان‌ سخت‌ و خطرناک‌ باشد نیز بکار رود.

۴-دائمی‌ بودن‌: سیستم‌های‌ خبره‌ دائمی‌ و پایدار هستند. بعبارتی‌ مانندانسان‌ها نمی‌میرند و فنا ناپذیرند.

۵- تجربیات‌ چندگانه‌: یک‌ سیستم‌ خبره‌ می‌تواند مجموع‌ تجربیات‌ وآگاهی‌های‌ چندین‌ فرد خبره‌ باشد.

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

۷-قدرت‌ تبیین‌ (Explanation): یک‌ سیستم‌ خبره‌ می‌تواند مسیر و مراحل‌استدلالی‌ منتهی‌ شده‌ به‌ نتیجه‌گیری‌ را تشریح‌ نماید. اما افراد خبره‌ اغلب‌اوقات‌ بدلایل‌ مختلف‌ (خستگی‌، عدم‌ تمایل‌ و…) نمی‌توانند این‌ عمل‌ رادر زمانهای‌ تصمیم‌گیری‌ انجام‌ دهند. این‌ قابلیت‌، اطمینان‌ شما را در موردصحیح‌ بودن‌ تصمیم‌گیری‌ افزایش‌ می‌دهد.

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

۱۰-پایگاه‌ تجربه‌: سیستم‌ خبره‌ می‌تواند همانند یک‌ پایگاه‌ تجربه‌عمل‌ کند وانبوهی‌ از تجربیات‌ را در دسترس‌ قرار دهد.

۱۱-آموزش‌ کاربر: سیستم‌ خبره‌ می‌تواند همانند یک‌ خودآموز هوش‌(Intelligent Tutor) عمل‌ کند. بدین‌ صورت‌ که‌ مثالهایی‌ را به‌ سیستم‌ خبره‌می‌دهند و روش‌ استدلال‌ سیستم‌ را از آن‌ می‌خواهند.

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

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

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

 

کاربرد سیستم‌های خبره‌

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

  • ‌ طراحی و زمانبندی‌

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

‌●تصمیم‌گیری‌های مالی‌

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

چند سیستم خبره مشهور

از نخستین سیستم‌های خبره می‌توان به Dendral اشاره کرد که در سال ۱۹۶۵ توسط Edward Feigenbaum و Joshun Lederberg پژوهشگران هوش مصنوعی در دانشگاه استنفورد ساخته شد.

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

از دیگر سیستم‌های خبره مشهور می‌توان به MYCIN اشاره کرد که در سال ۱۹۷۲ در استنفورد طراحی شد. MYCIN برنامه‌ای بود که کار آن تشخیص عفونت‌های خونی با بررسی اطلاعات به دست آمده از شرایط جسمی بیمار و نیز نتیجه آزمایش‌های او بود.

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

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

Marshall Space Flight Center) MSFC) یکی از مراکز وابسته به سازمان فضایی ناسا از سال ۱۹۹۴ در زمینه توسعه نرم‌افزارهای هوشمند کار می‌کند که هدف آن تخمین کمّ و کیف تجهیزات و لوازم مورد نیاز برای حمل به فضا است.
این برنامه‌های کامپیوتری با پیشنهاد راهکارهایی در این زمینه از بار کاری کارمندان بخش‌هایی چون ISS (ایستگاه فضایی بین المللی)  می‌کاهند و به گونه‌ای طراحی شده‌اند که مدیریت‌پذیرند و بسته به شرایط مختلف، قابل تعریف هستند.
مرکز فضایی MSFC، توسط فناوری ویژه خود موسوم به ۲G به ایجاد برنامه‌های ویژه کنترل هوشمندانه و سیستم‌های مانیتورینگ خطایاب می‌پردازد. این فناوری را می‌توان هم در سیستم‌های لینوکسی و هم در سیستم‌های سرور مبتنی بر ویندوز مورد استفاده قرار داد .

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

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

شاخه‌های علم هوش مصنوعی‌

شاخه های هوش مصنوعی

هوش مصنوعی

 امروزه هوش مصنوعی به واقعیت نزدیک شده است و تقریباً می‌توان گفت وجود دارد، اما دلایل اساسی متعددی وجود دارند که نشان می‌دهند چرا هنوز شکل تکامل یافته‌ هوشی که تورینگ تصور می‌کرد، به وقوع نپیوسته است. به طور کلی خود نظریه تورینگ مخالفانی جدی دارد. بعضی از این منتقدان اصلا‌ً هوش ماشینی را قبول ندارند و برخی دیگر صرفاً کارآمدی آزمون تورینگ را برای اثبات هوشمندی زیر سؤال می‌برند. یکی از مهم‌ترین مباحث مطرح در این زمینه، موضوع شبیه‌سازی است. غالباً پرسیده می‌شود آیا صرف این‌که ماشینی بتواند نحوه صحبت کردن انسان را شبیه‌سازی کند، به معنی آن است که هوشمند است؟ به عنوان مثال، شاید شما هم درباره روبات‌های نرم‌افزاری که می‌توانند چت کنند (Chatter Bots) چیزهایی شنیده باشید. این روبات‌ها از روش‌های تقلیدی استفاده می‌کنند و به تعبیری، نمونه مدرن و اینترنتی آزمون تورینگ هستند.
مثلاً روبات ELIZA یکی از این‌هاست. این روبات را ژوزف وایزن بام، یکی دیگر از پژوهشگران‌ نامدار این حوزه اختراع کرد. الیزا در برخی مکالمات ساده می‌تواند طرف مقابل خود را به اشتباه بیندازد. طوری که مخاطب ممکن است فکر کند درحال گپ زدن با یک انسان است. البته الیزا هنوز نتوانسته است آزمون تورینگ را با موفقیت پشت سر بگذارد. با این حال تکنیک‌های شبیه‌سازی مورد انتقاد گروهی از دانشمندان است. یکی از مشهورترین انتقادات در این زمینه را فیلسوفی به نام جان سیرل (John Searle) مطرح کرده است. او معتقد است بحث هوشمندی ماشین‌های غیربیولوژیک اساساً بی‌ربط است و برای اثبات ادعای خود مثالی می‌آورد که در مباحث تئوریک هوش مصنوعی <بحث اتاق چینی> نامیده می‌شود. سیرل ابتدا نقد خود درباره هوش ماشینی را در ۱۹۸۰ مطرح کرد و سپس آن در مقاله کامل‌تری که در ۱۹۹۰ منتشر کرد، بسط داد.
ماجرای اتاق چینی به این صورت است: فرض کنید داخل اتاقی یک نفر نشسته است و کتابی از قواعد سمبول‌های زبان چینی در اختیار دارد. برای این فرد عبارات – سمبول‌‌های – چینی روی کاغذ نوشته می‌شود و از زیر درِ اتاق به داخل فرستاده می‌شود. او باید با مراجعه به کتاب قواعد پاسخ مناسب را تهیه کند و روی کاغذ پس بفرستد. اگر فرض کنیم کتاب مرجع مورد نظر به اندازه کافی کامل است، این فرد می‌تواند بدون این‌که حتی معنی یک نماد از سمبول‌های زبان چینی را بفهمد، به پرسش‌ها پاسخ دهد. آیا می‌توان به این ترتیب نتیجه گرفت که پاسخ دهنده هوشمند است؟
استدلال اصلی این منتقد و دیگر منتقدان موضوع شبیه‌سازی این است که می‌توان ماشینی ساخت (مثلاً یک نرم‌افزار لغتنامه) که عبارات و اصطلاحات را ترجمه کند. یعنی ماشینی که کلمات و سمبول‌های ورودی را دریافت و سمبول‌ها و کلمات خروجی را تولید کند؛ بدون این‌که خود ماشین معنی و مفهوم این سمبول‌ها را درک کند. بنابراین آزمون تورینگ
حتی در صورت موفقیت نیز نمی‌تواند ثابت کند که یک ماشین هوشمند است .
ماشین‌ها بتوانند با دنیای پیرامون خود کنش و واکنش داشته باشند، آنگاه می‌توانند فکر کنند. منظور این است که کامپیوترها نیز مانند ما دارای حس بینایی، شنوایی، لامسه و حس‌های دیگر باشند. در این صورت، ترکیب همزمان ” پاسخ‌های تقلیدی ” با ” واکنش مناسب به محیط ” یعنی همان ” هوشمندی ” اتفاقاً کسی مانند جان سیرل نیز تفکرات مشابهی دارد؛ با این تفاوت که به طور خاص او شکل ایده‌آل کنش و واکنش مورد نیاز را همان تعامل بیولوژیکی می‌داند.

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

مسئله دیگری که در بحث هوش مصنوعی اهمیت دارد، موضوع <قالب و محتوا> است. منظور از قالب یا Context در اینجا، ظرفی است که محتوا داخل آن قرار می‌گیرد.
یکی از پایه‌های هوشمندی انسان توجهی است که او به قالب محتوا – و نه صرفاً خود محتوا – دارد. به عنوان مثال، وقتی می‌گوییم “شیر”، این کلمه به تنهایی معانی متفاوتی دارد، ولی هنگامی که همین واژه داخل یک جمله قرار می‌گیرد، فقط یک معنی صحیح دارد. انسان می‌تواند معانی کلمات را نه فقط به صورت مجرد، بلکه با دنبال کردن نحوه وابستگیشان به جمله تشخیص دهد. مشابه همین هوشمندی، در تمام حس‌های پنجگانه انسان وجود دارد. به عنوان مثال، از نظر علمی ثابت شده است که گوش انسان می‌تواند هنگام توجه به صحبت‌های یک انسان دیگر در محیطی شلوغ، کلمات و عباراتی را که نمی‌شنود، خودش تکمیل کند یا چشم انسان می‌تواند هنگام مشاهده یک تصویر، قسمت‌های ناواضح آن را با استفاده از دانسته‌های بصری قبلی خود تکمیل کند.
از این رو کارشناسان معتقدند، دانش پیش‌زمینه یا ” آرشیو ذهنی” یک موجود هوشمند نقش مؤثری در هوشمندی او بازی می‌کند. در حقیقت منشأ پیدایش برخی از شاخه‌های مدرن و جدید دانش هوش مصنوعی همچون ” سیستم‌های خبره ” و ” شبکه‌های عصبی ” همین موضوع است و اساسا با این هدف پدید آمده‌اند که بتوانند به ماشین قدرت آموختن و فراگیری بدهند؛ هرچند که هر یک از این شاخه‌ها، از پارادایم متفاوتی برای آموزش به ماشین استفاده می‌کنند و همین تفاوت‌ها مبنا و اساس دو جریان فکری عمده در محافل علمی مرتبط با هوش مصنوعی را پدید آورده‌اند.

 

هوش مصنوعی

هوش مصنوعی و شاخه های آن

شاخه‌های علم هوش مصنوعی‌

 

امروزه دانش مدرن هوش مصنوعی به دو دسته اصلی تقسیم می‌شود: یکی هوش مصنوعی سمبولیک یا نمادین (Symbolic AI) و دیگری هوش غیرسمبولیک که پیوندگرا (Connection AI) نیز نامیده می‌شود.
هوش مصنوعی سمبولیک از رهیافتی مبتنی بر محاسبات آماری پیروی می‌کند و اغلب تحت عنوان “یادگیری ماشین” یا (Machine Learning) طبقه‌بندی می‌شود. هوش سمبولیک می‌کوشد سیستم و قواعد آن را در قالب سمبول‌ها بیان کند و با نگاشت اطلا‌عات به سمبول‌ها و قوانین به حل مسئله بپردازد. در میان معروف‌ترین شاخه‌های هوش مصنوعی سمبولیک می‌توان به سیستم‌های خبره (Expert Systems) و شبکه‌های Bayesian اشاره کرد.
یک سیستم خبره می‌تواند حجم عظیمی از داده‌ها را پردازش نماید و بر اساس تکنیک‌های آماری، نتایج دقیقی را تهیه کند. شبکه‌های Bayesian یک تکنیک محاسباتی برای ایجاد ساختارهای اطلاعاتی و تهیه استنتاج‌های منطقی از روی اطلاعاتی است که به کمک روش‌های آمار و احتمال به دست‌ آمده‌اند. بنابراین در هوش سمبولیک، منظور از “یادگیری ماشین” استفاده از الگوریتم‌های تشخیص الگوها، تحلیل و طبقه‌بندی اطلاعات است.
این گرایش هوش مصنوعی ، بیشتر بر مدل سازی شناخت اعمال تأکید دارد و چندان خود را به قابلیت تعمق در بیولوژیک سیستم های ارائه شده مقید نمی کند.Case-Based Reasoning یکی از گرایش های فعال در این شاخه می باشد . به عنوان مثال روند استدلال توسط یک پزشک هنگام تشخیص یک بیماری کاملاً شبیه به CBR می باشد به این ترتیب که پزشک در ذهن خود تعداد بسیاری زیادی از شواهد بیماریهای شناخته شده را دارد و تنها باید مشاهدات خود را با نمونه های موجود در ذهن خویش تطبیق داده ، شبیه ترین نمونه را به عنوان بیماری بیابد . به این ترتیب مشخصات ، نیازمندی ها و توانائیهای CBR به عنوان یک چارچوب کلی پژوهش در هوش مصنوعی مورد توجه قرار گرفته است.
اما هوش پیوندگرا متکی بر یک منطق استقرایی است و از راه حل “آموزش/ بهبود سیستم از طریق تکرار” بهره‌ می‌گیرد. این آموزش‌ها نه بر اساس نتایج و تحلیل‌های دقیق آماری، بلکه مبتنی بر شیوه آزمون و خطا و <یادگیری از راه تجربه> است. در هوش مصنوعی پیوندگرا، قواعد از ابتدا در اختیار سیستم قرار نمی‌گیرد، بلکه سیستم از طریق تجربه، خودش قوانین را استخراج می‌کند. متدهای ایجاد شبکه‌های عصبی (Neural Networks) و نیز به‌کارگیری منطق فازی (Fuzzy Logic) در این دسته قرار می‌گیرند.
پیوندگرایی (Connectionism) هوشمندی را تنها حاصل کار موازی و هم‌زمان و در عین حال تعامل تعداد بسیار زیادی اجزای کاملاً ساده به هم مرتبط می‌داند.
شبکه‌های عصبی که از مدل شبکه عصبی ذهن انسان الهام گرفته‌اند امروزه دارای کاربردهای کاملاً علمی و گسترده تکنولوژیک شده‌اند و کاربرد آن در زمینه‌های متنوعی مانند سیستم‌های کنترلی، رباتیک، تشخیص متون، پردازش تصویر،… مورد بررسی قرار گرفته است.
علاوه بر این کار بر روی توسعه سیستم‌های هوشمند با الهام از طبیعت (هوشمندی‌های ـ غیر از هوشمندی انسان) اکنون از زمینه‌های کاملاً پرطرفدار در هوش مصنوعی است.
الگوریتم ژنیتک که با استفاده از ایده تکامل داروینی و انتخاب طبیعی پیشنهاد شده روش بسیار خوبی برای یافتن پاسخ به مسائل بهینه سازیست. به همین ترتیب روش‌های دیگری نیز مانند استراتژی‌های تکاملی نیز (Evolutionary Algorithms) در این زمینه پیشنهاد شده اند.
دراین زمینه هر گوشه‌ای از سازو کار طبیعت که پاسخ بهینه‌ای را برای مسائل یافته است مورد پژوهش قرار می‌گیرد. زمینه‌هایی چون سیستم امنیتی بدن انسان (Immun System) که در آن بیشمار الگوی ویروس‌های مهاجم به صورتی هوشمندانه ذخیره می‌شوند و یا روش پیدا کردن کوتاه‌ترین راه به منابع غذا توسط مورچگان (Ant Colony) همگی بیانگر گوشه‌هایی از هوشمندی بیولوژیک هستند.
برای درک بهتر تفاوت میان این دو شیوه به یک مثال توجه کنید. فرض کنید می‌خواهیم یک سیستم OCR بسازیم. سیستم OCR نرم‌افزاری است که پس از اسکن کردن یک تکه نوشته روی کاغذ می‌تواند متن روی آن را استخراج کند و به کاراکترهای متنی تبدیل نماید.
بدیهی است که چنین نرم‌افزاری به نوعی هوشمندی نیاز دارد. این هوشمندی را از دو طریق متفاوت می‌توان فراهم کرد. اگر از روش سمبولیک استفاده کنیم ، قاعدتاً باید الگوی هندسی تمام حروف و اعداد را در حالت‌های مختلف در بانک اطلاعاتی سیستم تعریف کنیم و سپس متن اسکن شده را با این الگوها مقایسه کنیم تا بتوانیم متن را استخراج نماییم. در اینجا الگوهای حرفی-‌عددی یا همان سمبول‌ها پایه و اساس هوشمندی سیستم را تشکیل می‌دهند.
روش دوم یا متد « پیوندگرا »این است که یک سیستم هوشمند غیرسمبولیک درست کنیم و متن‌های متعددی را یک به یک به آن بدهیم تا آرام آرام آموزش ببیند و سیستم را بهینه کند. در اینجا سیستم هوشمند می‌تواند مثلا‌ً یک شبکه عصبی یا مدل مخفی مارکوف باشد. در این شیوه سمبول‌ها پایه هوشمندی نیستند، بلکه فعالیت‌های سلسله اعصاب یک شبکه و چگونگی پیوند میان آن‌ها مبنای هوشمندی را تشکیل می‌دهند.
در طول دهه‌های ۱۹۶۰ و ۱۹۷۰ به دنبال ابداع اولین برنامه نرم‌افزاری موفق در گروه سیستم‌های مبتنی بر دانش(Knowledge-Based) توسط جوئل موزس، سیستم‌های هوش سمبولیک به یک جریان مهم تبدیل شد. ایده و مدل شبکه‌های عصبی ابتدا در دهه ۱۹۴۰ توسط Warren McCulloch و Walter Pitts معرفی شد.
سپس در دهه ۱۹۵۰ کارهای روزنبالت (Rosenblatt) درمورد شبکه‌های دولایه مورد توجه قرارگرفت. در ۱۹۷۴ الگوریتم Back Propagation توسط Paul Werbos معرفی شد، ولی متدولوژی شبکه‌های عصبی عمدتاً از دهه ۱۹۸۰ به این سو رشد زیادی پیدا کرد و مورد استقبال دانشمندان قرار گرفت. منطق فازی ابتدا توسط پروفسور لطفی زاده، در ۱۹۶۵ معرفی شد و از آن زمان به بعد توسط خود او و دیگر دانشمندان دنبال شد.
در دهه ۱۹۸۰ تلاش‌های دانشمندان ژاپنی برای کاربردی کردن منطق فازی به ترویج و معرفی منطق فازی کمک زیادی کرد. مثلاً طراحی و شبیه سازی سیستم کنترل فازی برای راه‌آهن Sendai توسط دو دانشمند به نام‌هایYasunobu و Miyamoto در ۱۹۸۵، نمایش کاربرد سیستم‌های کنترل فازی از طریق چند تراشه مبتنی بر منطق فازی در آزمون « پاندول معکوس » توسط Takeshi Yamakawa در همایش بین‌المللی پژوهشگران منطق فازی در توکیو در ۱۹۸۷ و نیز استفاده از سیستم‌های فازی در شبکه مونو ریل توکیو و نیز و معرفی سیستم ترمز ABS مبتنی بر کنترلرهای فازی توسط اتومبیل‌سازی هوندا در همین دهه تاثیر زیادی در توجه مجدد دانشمندان جهان به این حوزه از علم داشت.
البته هنگامی که از گرایش‌های آینده سخن می‌گوییم، هرگز نباید از گرایش‌های ترکیبی غفلت کنیم. گرایش‌هایی که خود را به حرکت در چارچوب شناختی یا بیولوژیک یا منطقی محدود نکرده و به ترکیبی از آنها می‌اندیشند. شاید بتوان پیش‌بینی کرد که چنین گرایش‌هایی فرا ساختارهای (Meta –Structure) روانی را براساس عناصر ساده بیولوژیک بنا خواهند کرد.

هوش مصنوعی چیست؟

هوش مصنوعی چیست ؟

هوش مصنوعی چیست ؟

هوش مصنوعی

هوش مصنوعی (Artificial Intelligence) را باید عرصهٔ پهناور تلاقی و ملاقات بسیاری از دانشها، علوم، و فنون قدیم و جدید دانست. ریشه‌ها و ایده‌های اصلی آن را باید در فلسفه، زبان‌شناسی، ریاضیات، روان‌شناسی، نورولوژی، و فیزیولوژی نشان گرفت و شاخه‌ها، فروع، و کاربردهای گونه‌گونه و فراوان آن را در علوم رایانه، علوم مهندسی، علوم زیست‌شناسی و پزشکی، علوم ارتباطات و زمینه‌های بسیار دیگر.
هوش مصنوعی را به عنوان کوششهائی در پی ساختن رایانه های نظام مند ( سخت افزار و نرم افزار ) که رفتاری شبیه انسان داشته باشند ، بیان می کنند . یک سیستم هوش مصنوعی به راستی نه مصنوعی است و نه هوشمندبلکه دستگاهی است هدف گرا که مسائل را به روش مصنوعی حل می کند ، این سیستم ها بر پایه دانش ، تجربه و الگوهای استدلالی انسان به وجود آمده اند .
هدف هوش مصنوعی بطور کلی ساخت ماشینی است که بتواند «فکر» کند. اما برای دسته بندی و تعریف ماشینهای متفکر، می‌بایست به تعریف «هوش» پرداخت. همچنین به تعاریفی برای «آگاهی» و «درک» نیز نیازمندیم و در نهایت به معیاری برای سنجش هوش یک ماشین نیازمندیم.
هنوز تعریف دقیقی که مورد قبول همهٔ دانشمندان این علم باشد برای هوش مصنوعی ارائه نشده‌است، و این امر، به هیچ وجه مایهٔ تعجّب نیست. چرا که مقولهٔ مادر و اساسی‌تر از آن، یعنی خود هوش هم هنوز بطور همه‌جانبه و فراگیر تن به تعریف نداده‌است. در واقع، می‌توان نسل‌هایی از دانشمندان را سراغ گرفت که تمام دوران زندگی خود را صرف مطالعه و تلاش در راه یافتن جوابی به این سؤال عمده نموده‌اند که: هوش چیست؟
اما اکثر تعریف‌هایی که در این زمینه ارایه شده‌اند بر پایه یکی از چهار باور زیر قرار می‌گیرند:
  • سیستم‌هایی که به طور منطقی فکر می‌کنند
  • سیستم‌هایی که به طور منطقی عمل می‌کنند
  • سیستم‌هایی که مانند انسان فکر می‌کنند
  • سیستم‌هایی که مانند انسان عمل می‌کنند
شاید بتوان هوش مصنوعی را این گونه توصیف کرد:«هوش مصنوعی عبارت است از مطالعه این که چگونه کامپیوترها را می‌توان وادار به کارهایی کرد که در حال حاضر انسان‌ها آنها رابهتر انجام می‌دهند»
       تعریف دیگری که از هوش مصنوعی می‌توان ارائه داد به قرار زیر است:
« هوش مصنوعی، شاخه‌ایست از علم کامپیوتر که ملزومات محاسباتی اعمالی همچون ادراک (Perception) ، استدلال (Reasoning) و یادگیری (Learning) را بررسی کرده و سیستمی جهت انجام چنین اعمالی ارائه می‌دهد.»
و در نهایت تعریف سوم هوش مصنوعی از قرار زیر است:
«هوش مصنوعی، مطالعه روش‌هایی است برای تبدیل کامپیوتر به ماشینی که بتواند اعمال انجام شده توسط انسان را انجام دهد.»
بطور کلی ماهیت وجودی هوش به مفهوم جمع آوری اطلاعات, استقرا و تحلیل تجربیات به منظور رسیدن به دانش و یا ارایه تصمیم میباشد . در واقع هوش به مفهوم به کارگیری تجربه به منظور حل مسایل دریافت شده تلقی میشود. هوش مصنویی علم و مهندسی ایجاد ماشینهایی با هوش با به کارگیری از کامپیوتر و الگوگیری از درک هوش انسانی و نهایتا دستیابی به مکانیزم هوش مصنوعی در سطح هوش انسانی میباشد.
در مقایسه هوش مصنوعی با هوش انسانی می توان گفت که انسان قادر به مشاهده و تجزیه و تحلیل مسایل در جهت قضاوت و اخذ تصمیم میباشد در حالی که هوش مصنوعی مبتنی بر قوانین و رویه هایی از قبل تعبیه شده بر روی کامپیوتر میباشد. در نتیجه علی رغم وجود کامپیوترهای بسیار کارا و قوی در عصر حاضر ما هنوز قادر به پیاده کردن هوشی نزدیک به هوش انسان در ایجاد هوشهای مصنوعی نبوده ایم.
روش شناسی ( Methodology ) هوش مصنوعی هنوز به عنوان یک نقطه ضعف مورد انتقاد بسیاری از صاحبنظران است ، از نظر برخی از آنان این ضعف یک شکل تکاملی است که به تاریخچه کوتاه علم رایانه مربوط است .
روش های هوش مصنوعی روش هائی هستند که به درد مسائلی می خورند که به خوبی تعریف شده اند ، به طور مثال بسیاری از مسائل محاسباتی معمولی از محاسبات فیزیک گرفته تا محاسبه حقوق و دستمزد از این دسته مسئل هستند که برای آنها الگوریتم مشخصی وجود دارد و نیازی به جستجو برای یافتن حل مسأله نیست .
دانشمندان هوش مصنوعی و به طور کلی دانشمندان رشته های مختلف ، اکنون مایلند با مدل هائی کار کنند که آنها را ” مدل مؤلف ” می نامند.
آنها بدنبال ساخت ماشینی مقلد هستند، که بتواند با شبیه‌سازی رفتارهای میلیونها یاخته مغز انسان، همچون یک موجود متفکر به اندیشیدن بپردازد.
در بسیاری از موارد، با پوشانیدن و پنهان ساختن جزئیّات فاقد اهمّیّت است که بر پیچیدگی فائق می‌آییم، و می‌توانیم بر روی بخش‌هایی از مسئله متمرکز شویم که مهم‌تر است. تلاش اصلی، در واقع، ایجاد و دستیابی به لایه‌ها و ترازهای بالاتر است ، تا آنجا که ، سر‌انجام برنامه‌های کامپوتری درست در همان سطحی کار خواهند کرد که خود انسان‌ها به کار مشغولند.
به یاری پژوهش‌های گسترده دانشمندان علوم مرتبط، هوش مصنوعی از آغاز پیدایش تاکنون راه بسیاری پیموده‌است. در این راستا، تحقیقاتی که بر روی توانایی آموختن زبانها انجام گرفت و همچنین درک عمیق از احساسات، دانشمندان را در پیشبرد این علم، یاری کرده‌است. یکی از اهداف متخصصین، تولید ماشینهایی است که دارای احساسات بوده و دست کم نسبت به وجود خود و احساسات خود آگاه باشند. این ماشین باید توانایی تعمیم تجربیات قدیمی خود در شرایط مشابه جدید را داشته و به این ترتیب اقدام به گسترش دامنه دانش و تجربیاتش کند.
برای نمونه به رباتی هوشمند بیاندیشید که بتواند اعضای بدن خود را به حرکت درآورد، او نسبت به این حرکت خود آگاه بوده و با سعی و خطا، دامنه حرکت خود را گسترش می‌دهد، و با هر حرکت موفقیت آمیز یا اشتباه، دامنه تجربیات خود را وسعت بخشیده و سر انجام راه رفته و یا حتی می‌دود و یا به روشی برای جابجا شدن، دست می‌یابد، که سازندگانش، برای او، متصور نبوده‌اند.
هر چند مثال ما در تولید ماشینهای هوشمند، کمی آرمانی است، ولی به هیچ عنوان دور از دسترس نیست. دانشمندان، عموماً برای تولید چنین ماشینهایی، از تنها مدلی که در طبیعت وجود دارد، یعنی توانایی یادگیری در موجودات زنده بخصوص انسان، بهره می‌برند.
هوش مصنوعی که همواره هدف نهایی دانش رایانه بوده‌است، اکنون در خدمت توسعه علوم رایانه نیز است. زبانهای برنامه نویسی پیشرفته، که توسعه ابزارهای هوشمند را ممکن می‌سازند، پایگاههای داده‌ای پیشرفته، موتورهای جستجو، و بسیاری نرم‌افزارها و ماشینها از نتایج پژوهش‌های هوش مصنوعی بهره می‌برند.
سیستمی که عاقلانه فکر کند. سامانه‌ای عاقل است که بتواند کارها را درست انجام دهد. در تولید این سیستم‌ها نحوه اندیشیدن انسان مد نظر نیست. این سیستم‌ها متکی به قوانین و منطقی هستند که پایه تفکر آنها را تشکیل داده و آنها را قادر به استنتاج و تصمیم گیری می‌نماید. آنها با وجودی که مانند انسان نمی‌اندیشند، تصمیماتی عاقلانه گرفته و اشتباه نمی‌کنند. این ماشینها لزوما درکی از احساسات ندارند. هم اکنون از این سیستم‌ها در تولید عامل‌ها در نرم افزارهای رایانه‌ای، بهره گیری می‌شود. عامل تنها مشاهده کرده و سپس عمل می‌کند.

من یک استراتژیست هستم ؟؟؟

مفایم اولیه

مدیریت کلان

مدیریت استراتژیک

افرادی که مسئول موفقیت و یا شکست یک بنگاه تجاری می باشند را استراتژیست می نامند . استراتژیست ها در سازمان های مختلف عناوین شغلی گوناگونی دارند به عنوان مثال مدیر عامل ، رئیس ، مالک ، رئیس هیئت مدیره ، مدیر اجرایی ، رئیس دانشگاه ، کار آفرین و…

استراتژیست ها سه وظیفه اصلی بر عهده دارند که عبارتند از :

۱-ایجاد یک مسیر برای تغییر

۲-ایجاد حس تعهد

۳- ایجاد حس مالکیت به سازمان یا بنگاه و ایجاد توازون بین ثبات و نوآوری

هرچند مدیریت استراتژیک برای موفق ساختن شرکت های بزرگ نقش حیاتی ایفا می کنند ولی در شرکت های کوچک هم فرآیند مدیریت استراتژیک دارای اهمیت زیادی است .

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

مدیریت

مدیریت استراتژیسم

مسلما این شرکت های کوچک مدیریت استراتژیک را به صورت غیر رسمی به اجرا در می آورند ، به همین دلیل در صورت اجرای مدیریت استراتژیک توسط شرکت های کوچک نتیجه بهتری از آن بدست می آورند .

اصول زیر با مدیریت استراتژی ارتباط مستقیم دارند:

۱-اشخاص مهم بزرگترین سرمایه موسسه هستند .

۲-یکپارچگی استراتژی ،ساختار،فرایندها ، عملکرد و فرهنگ

۳-اهمیت همزیستی فرایندها و سیستم های مدیریت رسمی و غیر رسمی

کلاهبرداری فیشینگ چیست؟

کلاهبرداری فیشینگ چیست؟

فیشینگ چیست

فیشینگ

فیشینگ راهی است که تبهکاران، اطلاعاتی نظیر کلمه کاربری، رمز عبور، شماره ۱۶ رقمی عابر بانک، رمز دوم و CVV2 را از طریق ابزارهای الکترونیکی ارتباطات به سرقت می برند. شبکه های اجتماعی، سایت های حراجی و درگاه های پرداخت آنلاین نمونه ای از ابزار های الکترونیکی ارتباطات می باشند.
کلاهبرداری فیشینگ از طریق ایمیل ها و پیامها صورت می پذیرد و قربانیان به صورت مستقیم اطلاعات حساس و محرمانه خود را در وب سایت های جعلی که در ظاهر کاملا شبیه وب سایت های سالم و قانونی می باشد وارد می نمایند. حقه ی فیشینگ یکی از تکنیک های مهندسی اجتماعی برای فریب کاربران می باشد که علی‌القاعده از ضعف امنیتی یک وب سایت برای انجام عملیات مجرمانه خود استفاده می کنند. برای اولین بار حقه ی فیشینگ در ۱۹۸۷ تعریف شد و اولین باری که واژه فیشینگ برای نام گذاری این واژه استفاده گردید، سال ۱۹۹۶ بود.
انواع تکنیک هایی که در حقه فیشینگ مورد استفاده قرار می گیرد:
دستکاری و تقلب در لینکها و آدرس ها
تقلب در کدها

تقلب در کدها

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

وب سایت جعلی

تنها با ورودو بازدید یک قربانی به سایت جعلی عمل کلاهبرداری صورت نمی پذیرد . در برخی از روش های فیشینگ از دستورات جاوا اسکریپت استفاده می شود تا نوار آدرس را اصلاح کند و تغییر دهد. این کار با قرار دادن تصویر یک آدرس اینترنتی قانونی و موجه در نوار آدرس یا بستن نوار آدرس اصلی و باز کردن یک نوار آدرس جدید که حاوی آدرس اینترنتی قانونی و موجه است، انجام می شود.
یک فیشر(مهاجم) حتی می تواند از نقایص موجود در برنامه جاوا اسکریپت یک سایت معتبر و قانونی علیه قربانیان خوداستفاده نمایند. این نوع حمله ها ( که به کراس سایت اسکریپتینگ معروف هستند) به طور خاص سخت و پیچیده هستند، چون آنها قربانی را به صفحه اینترنتی ثبت نام خدمات بانکی خود ارجاع می دهند. صفحه ای که در آن همه چیز از آدرس سایت گرفته تا گواهی امنیتی، همه درست و صحیح به نظر می رسند. در حقیقت لینک دادن به صفحه اصلی حقه ای برای به ثمر رساندن سرقت و انجام دادن حمله است. با انجام این کار کشف این حمله برای افرادی که دانش لازم را ندارند، کار بسیار سختی است. در سال ۲۰۰۶ چنین حمله ای علیه سایت Pay Pal انجام شد.
یک برنامه فیشینگ در سطح جهانی با عنوان Man-in-the-middle، که در سال ۲۰۰۷ کشف شد، از یک رابط ساده استفاده می کرد که به فیشر (مهاجم) اجازه می داد به دون هیچ مشکلی سایت هایی خاصی را مجدداً ایجاد کند و جزئیات اطلاعات ورود یا لاگین افراد (نام کاربری و رمز عبور) وارد شده در وب سایت جعلی را برای ورود به سایت های اصلی ثبت و ضبط کند.
برای از کار انداختن تکنیک ها و برنامه هایی که وب سایت ها را با هدف پیدا کردن متون و علائم مرتبط با فیشینگ اسکن و بررسی می کنند، فیشرها به تازگی شروع به استفاده از وب سایت هایی کرده اند که با برنامه های فلش ،ساخته شده اند. این گونه سایت ها بسیار واقعی به نظر می رسند اما در واقع در این سایت ها متون و علائم مرتبط با فیشینگ پشت ظاهر برنامه های فلش پنهان شده اند.
فیشینگ از طریق تلفن
تمامی حملات فیشینگ نیاز به استفاده از یک وب سایت جعلی و ساختگی ندارند. این نوع حملات شامل پیام هایی هم می شوند که ادعا می کند از طرف بانک هستند و از مشتری ها (استفاده کنندگان خدمات بانکی) می خواهند با توجه به مشکلی که برای حساب های آنها به وجود آمده است، با یک شماره تماس بگیرند. به محض این که مشتری با این شماره تلفن (که متعلق به مهاجم است و یک سرویس تلفن اینترنتی است) تماس بگیرد، دستوراتی به مشتری داده می شود تا شماره حساب و رمز خود را وارد کند. فیشرهایی که از سرویس تلفن اینترنتی استفاده می کنند، گاهی اوقات از داده های جعلی برای آی دی کالر استفاده می‌نمایند تا برای مشتریان این گونه به نظر برسد که این تماس از طرف یک سازمان مطمئن و معتبر انجام می شود.
سایر روش ها
سرقت اطلاعات مهم

سرقت اطلاعات حیاتی

  • نوع دیگری از حمله که موفقیت آمیز بودنش ثابت شده است، ارجاع دادن قربانی به وب سایت اصلی بانک است. سپس یک پنجره پاپ آپ در بالای صفحه سایت به نمایش در می آید و به شکلی که به نظر برسد این صفحه و این سایت متعلق به بانک است، اطلاعات حساس قربانی را درخواست می کنند.
  • یکی از جدیدترین روش های فیشینگ تب نبینگ است. این برنامه از صفحاتی که کاربر باز کرده استفاده می کند و به طور آهسته کاربر را به سایت ساختگی ارجاع میدهد.
  • دوقلوهای شر یا Evil twins روشی است که شناسایی و کشف آن کار بسیار سختی است. یک فیشر یک شبکه بی سیم (وایرلس) ساختگی ایجاد می کند. این شبکه همانند شبکه های معتبر عمومی و قانونی می تواند در مکان هایی مانند فرودگاه ها، هتل ها و کافی شاپ ها وجود داشته باشد. وقتی که یک نفر وارد شبکه جعلی می شود، کلاهبرداران سعی می کنند رمزهای عبور و یا سایر اطلاعات مرتبط با کارت اعتباری او را ثبت و ضبط کنند.
چند راه حل ساده برای مقابله با فیشینگ:
– در طی سال، دوبار گزارش مالی حساب تان را دریافت کنید تا همه چیز تحت کنترل باشد.
– اگر از شرکتی که با آن کار می کنید, نامه ای دریافت کردید, مستقیماً به سایت آن شرکت بروید و به حسابتان داخل شوید. در غیراین صورت بهتر است با آن ها تماس تلفنی بگیرید.
– از برنامه های ضد اسپم مناسب استفاده کنید. به این طریق بسیاری از ایمیل های فریبکارانه هرگز به صندوق پستی شما وارد نخواهند شد.
– نر م افزارهای جاسوس یاب روی کامپیوترتان نصب کنید.
– برداشت های کارت اعتباری تان را کنترل کنید. بسیاری از کلاهبرداران, در طی مدت زمان طولانی،اقدام به برداشت مبالغ اندکی می کنند تا توجه دارنده کارت به تغییرات حساب جلب نشود.
– اگر نسبت به پیغامی شک دارید آنرا تائید نکنید و از پیوندهای های ارسالی آن استفاده نکنید. در عوض به شرکت تلفن زده و یا مستقیما به سایت آنها بروید.
– از پر کردن فرمهایی که توسط نامه برای شما رسیده و اطلاعات اعتباری و شخصی شما را می خواهند اجتناب کنید و برای اطمینان از واقعی بودن سایت, آدرس داده شده بصورت پیوند را جداگانه
امتحان کنید. “https//:” یا “http//:”
– بطور دوره ای و مرتب به حساب خود سر بزنید، یعنی آنرا برای مدت طولانی بدون کنترل رهانکنید.
– روی لینک ها یا تصاویر ایمیل هایی که از واقعی بودن آن ها اطمینان ندارید، کلیک نکنید.