عمليات شبکههای عصبی (بخش سوم)
تا اینجا تمام توجه معطوف به ساختار درونی یک نرون مصنوعی یا المان پردازشی بود. اما بخش مهم دیگری در مراحل طراحی یک شبکه عصبی نیز وجود دارد. در واقع هنر یک طراح شبکههای عصبی میتواند در چگونگی ترکیب نرونها در یک شبکه (Neuron Clustering) متجلی شود. علوم بیولوژی نشان دادهاند که کلاسترینگ نرونها در شبکه عصبی مغز بهگونهای است که فرد را قادر میسازد تا اطلاعات را بهصورتی پویا ، تعاملی و خودسامان (Self Organizing) پردازش کند. در شبکههای عصبی بیولوژیک ، نرونها در ساختاری سه بعدی به یکدیگر اتصال یافتهاند. اتصالات بین نرونها در شبکههای عصبی بیولوژیک آنقدر زیاد و پیچیده است که به هیچ وجه نمیتوان شبکه مصنوعی مشابهی طراحی کرد.
تکنولوژی مدارات مجتمع امروز این امکان را میدهد که شبکههای عصبی را در ساختارهای دوبعدی طراحی کرد. علاوه بر این ، چنین شبکههای مصنوعی دارای تعداد محدودی لایه و اتصالات بین نرونها خواهند بود. بدین ترتیب ، این واقعیات و محدودیتهای فیزیکی تکنولوژی فعلی دامنه کاربردهای شبکههای عصبی مبتنی بر تکنولوژی سیلیکونی را مشخص میسازند.
ساختار شبکههای عصبی امروزی از لایههای نرونی تشکیل شده است. در چنیـن ساختاری ، نرونها علاوه بر آن که در لایه خود به شکل محدودی به یکدیگر اتصال داده شدهاند ، از طریق اتصال بین لایهها نیز به نرونهای طبقات مجاور ارتباط داده میشوند.
تلاش محققان در زمینه شبکههای عصبی نشان داده است که شبکههای عصبی ، چیـزی بیش از مقداری نرون که به یکدیگر اتصال داده شدهاند هستند. حتی گروهی از محققان سعی داشتهاند که از اتصالات تصادفی برای ارتباط دادن نرون به یکدیگر استفاده کنند که در این زمینه به نتایج جالب توجهی دست نیافتند. امروزه مشخص شده است که در سادهترین مغزهای بیولوژیک مانند مغز مارها هم ارتباطات بین نرونها بسیار ساختار یافته است. در حال حاضر یکی از سادهترین روشهای ارتباط دهی نرونها در شبکههای عصبی آن است که ابتدا نرونها در گروههای مشخصی به صورت لایههـای نرونی سازماندهی میشوند و پس از تأمین ارتباطات بین نرونی در هر لایه ، ارتباطات بین لایهها نیز برقرار میشوند.
اگرچه در کاربردهای مشخصی میتوان با موفقیت از شبکههای عصبی تک لایه استفاده کرد ، اما رسم بر آن است که شبکههای عصبی حداقل دارای سه لایه باشند (لایه ورودی ، لایه خروجی و نهایتاً لایه پنهان یا لایه میانی.)
در بسیاری از شبکههای عصبی ، اتصالات بین نرونی به گونهای است که نرونهای لایههای میانی ، ورودی خود را از تمام نرونهای لایه پایینی خود (به طور معمول لایه نرونهای ورودی) دریافت میکنند. بدین ترتیب در یک شبکه عصبی ، سیگنالها به تدریج از یک لایه نرونی به لایههای بالاتر حرکت میکنند و در نهایت به لایه آخر و خروجی شبکه میرسند. چنین مسیر در اصطلاح فنی Feed Forward نامیده میشود. ارتباطات بین نرونی در شبکههای عصبی از اهمیت بسیار زیادی برخوردار هستند و به نوعی قدرت یک شبکه عصبی را تعیین میکنند. قاعده آن است که ارتباطات بین نرونی را به دو گروه تقسیمبندی میکنند. یک نوع از ارتباطات بین نرونی ، به گونهای هستند که باعث جمع شدن سیگنال در نرون بعـدی میشوند. گونه دوم ارتباطات بین نرونی باعث فریق سیگنال در نرون بعدی میشوند. در اصطلاح محاورهای گروهی از ارتباطات انگیـزش ایجاد میکنند و گروه دیگر ممانعت به عمل میآورند.
در مواردی نرون مشخصی از شبکه عصبی تمایل دارد که سیگنال دیگر نرونهای لایه خود را نادیده بگیرد. چنین حالتی به طور معمول در لایه خروجی ایجاد میشود. به عنوان مثال ، در کاربردهای تشخیص متن (OCR) ، فرض کنید که احتمال آنکه کاراکتر مورد شناسایی حرف P باشد ، برابر با 85 درصد تعیین شده است و به همین ترتیب احتمال آن که کاراکتر موردنظر حرف F باشد ، 65 درصــد تخمین زده است. در این وضعیت ، سیستم باید کاراکتری را برگزیند که دارای درصد احتمال بزرگتر است. در نتیجه در این شبکه عصبی ، نرونهایی که خروجی F را تجویز میکنند ، باید نادیده گرفته شوند یا Inhibit شوند. به چنین فرایندی Lateral Inhibition گفته میشود.
نوع دیگری از ارتباط بین نرونی در شبکههای عصبی به ارتباط بازخورد یا Feedback معروف است. در این نوع از ارتباطات ، خروجی یک لایه نرونی بـه لایه قبلی (یا به لایهای که چند مرحله پایینتر است) اتصال داده میشود.
آموزش شبکههای عصبی
تا اینجا ساختار شبکههای عصبی مورد بررسی قرار گرفت و گفته شد که شبکههای عصبی میتوانند بر اساس طراحی خود سیگنالهای ورودی را پردازش کنند و به سیگنالهای خروجی مورد نظر تبدیل نمایند. به طور معمول پس از آن که یک شبکه عصبی طراحی و پیادهسازی شد ، باید پارامترهای w و b به ازای مجموعههایی از سیگنالهای ورودی ، بهگونهای تنظیم شوند که سیگنالهای خروجی شبکه خروجی مطلوب را تشکیل دهند. چنین فرایندی را آموزش دیدن شبکه عصبی مینامند (در نخستین مرحله آموزش ، مقادیر w و b بهطور تصادفی انتخاب میشوند. زیرا تا این پارامترها مقدار نداشته باشند ، شبکه عصبی قابل استفاده نخواهد بود) در حین آموزش دیدن شبکه عصبی (یعنی به تدریج همزمان با افزایش دفعاتی که مقادیر پارامترها برای رسیدن به خروجی مطلوبتر تنظیم میشوند) مقدار پارامترها به مقدار حقیقی و نهایی خود نزدیکتر میشوند.
بطـور کلی دو روش برای آموزش دادن شبکههای عصبی وجود دارد. روش Supervised و روش Unsupervised. روش نخست شامل مراحلی است که در بخش قبل ، به طور مختصر شرح داده شد. اما در روش Unsupervised ، شبکه عـصبی باید بدون کمک گرفتن از جهان خارج ، بتواند کار آموزش را انجام دهد.
واقعیت آن است که در عمل از روش Supervised و یا حداکثر از روشهـای ترکیبی استفاده میشود و فرایند آموزش Unsupervised به شکل خالص تنها وعدهای است که شاید در آینده بتواند تحقق یابد.
درحال حاضر و در کاربردهای پیشرفته از روش آموزش Unsupervised برای ایجاد تنظیمات اولیه بر روی سیگنالهای ورودی شبکههای عصبی استفـاده میشود و باقی مراحل آموزش شبکه به روش Supervised ادامه مییابد.
همانطور که قبلا اشاره شد ، در روش معمول آموزش شبکههای عصبی ، از مجموعه شناخته شدهای از دادههای ورودی و خروجیهای متناظر آن ها (Training Set Data) برای آموزش دادن شبکه استفاده میشود. در چنین فرایندی ، پس از اعمال مجموعههای دادههای آموزشی ، پارامترهای شبکه به تدریج به سمت مقادیر نهایی خود همگرا میشوند.
بستههای نرمافزاری پیشرفته تولید و طراحی شبکههای عصبی ، دارای ابزارهایی هستند که بر روند آموزش شبکـه مدیریت میکنند. چنین ابزارهایی میتوانند سرعت همگرایی پارامترهای شبکه را زیر نظر بگیرند و به عنوان مثال ، اجازه دهند که پارامترهای یک شبکه مشخص در طول چندین روز به دقت کافی و مورد نظر طراحان خود برسد.
در مواردی ممکن است که شبکه عصبی اصولا موفق به فراگیری نشود. بدین معنی که پارامترهای شبکه پس از زمانهای طولانی به مقدار مشخصی همگرا نشود. چنین مواردی ممکن است بر اثر ناکافی بودن دادههای آموزشی یا اصولا نقص طراحی شبکه ایجاد شوند. حتی مواردی در عمل وجود دارند که شبکه عصبی مشخصی بر اثر آموزش بیش از حد اصطلاحاً Over Trained شود. توجه داشته باشید که فرایند آموزش شبکههای عصبی فقط به ازای زیر مجموعهای از دادههایی که قرار است شبکه آن ها را در کاربرد حقیقی خود پردازش کند ، آموزش داده میشوند. در صورتی که تعداد دادههای آموزشی یک شبکه عصبی بیش از اندازه زیاد باشد (در واقع از تمامی دادههای مسئله برای آموزش دادن به شبکه استفاده شود) ، شبکه عصبی به جای آن کـه آمـوزش ببیند ، به حالتی میرسد که به آن حفظ کردن اطلاعات میگویند. در واقع به جای آن که یک شبکه عصبی برای حل مسئله از هوش خود کمک بگیرد ، از محفوظات خود استفاده میکند.
پس از آن که یک شبکه عصبی به اندازه کافی آموزش دید ، طراح یا کاربر شبکه میتواند پارامترهای شبکه را قفل کند. در این مرحله شبکه عصبی برای کاربرد واقعی خود و حل مسائل آماده خواهد بود. در برخی از ابزارهای تولید و طراحی شبکههای عصبی ، کل شبکه عـصبی به همراه پارامترهای قفل شده آن ، تبدیل به نرمافزار مستقلی میشوند که میتوان از آن در پروژههای مشخصی استفاده کرد. در برخی از موارد دیگر ، چنین شبکههایی پس از آموزش دیدن ، به شکل سختافزاری در قالب یک مدار مجتمع (IC) به تولید انبوه یا نیمه انبوه میرسند.
آموزش Unsupervised یا تطبیقی (Adaptive)
در مورد این روش آموزش گفته شد که شبکه عصبی بدون در اختیار داشتن دادههای خروجی ، در معرض آموزش قرار میگیرد. در واقع سیستم به تنهایی و بدون کمک خارجی باید با توجه به شکل سیگنالهای خروجی خود ، درباره درستی و نادرستی آن ها تصمیمگیری کند. در دنیای واقعی شرایط بسیار زیادی وجود دارند که در آن ها مجموعه اطلاعات کافی برای آموزش دادن به سیستـم فراهم نیستند. تحقیقات نظامی یکی از گرایشهایی است که به این موضوع توجه دقیقی دارد. به عنوان مثال گفته میشود که شرایط جنگی بـه دلیل فراوانی پارامترها و تکنیکهای نظامی متغیر و پیشرفتهای تکنولوژی نظامی ، از نمونه مواردی است که در آن ها به هیچ وجه نمیتوان مجموعه دادههای آموزشی کافی به دست آورد. در این زمینه یکی از محققان شبکههای عصبی به نام Tuevo Kohonen از دانشگاه هلسینکی فعالیتی جدی دارد. کوهنن با تحقیقات در ساختارهای عصبی غیرمتعارف به پژوهش در این زمینه ادامه میدهـد. کوهنن نرونهای شبکه عـصبی را به زمینههای مختلفی تقسیمبندی میکند. گروهبندیهای سهبعدی که در ساختار مغز پستانداران یافت شده است ، نمونهای از مرتبسازی توپولوژیک محسوب میشوند. کوهنن معتقد است که فقدان ملاحظات توپولوژیک در مدلهای عصبی امروزی باعث میشود که شبکههای عصبی امروزی ، مدلهای ساده شدهای از شبکههای عصبی واقعی موجود در مغز محسوب شوند. در هر صورت این حوزه از مبحث شبکههای عصبی ، هنوز در مرحله تحقیقات آزمایشگاهی قرارداد و کاربرد واقعی نیافته است.
تفاوتهای شبکههای عصبی با روشهای محاسباتی متداول و سیستمهای خبره
شبکههای عصبی روش متفاوتی برای پردازش و آنالیز اطلاعات ارائه میدهند. اما نباید این گونه استنباط شود که شبکههای عصبی میتوانند برای حل تمام مسائل محاسباتی مورد استفاده واقع شوند. روشهای محاسباتی متداول همچنان برای حل گروه مشخصی از مسائل مانند امور حسابداری ، انبارداری و محاسبات عددی مبتنی بر فرمولهای مشخص ، بهترین گزینه محسوب میشوند. جدول زیر تفاوتهای بنیادی دو روش محاسباتی را نشان میدهد.
شبکههای عصبی در مسیری گام برمیدارند که ابزارها توانایی فراگیری و برنامهریزی خود را داشته باشند. ساختار شبکههای عصبی به گونهای است که قابلیت حل مسئله را بدون کمک فرد متخصص و برنامهریزی خارجی داشته باشند. شبکههای عصبی قادر به یافتن الگوهایی در اطلاعات هستند که هیچکس ، هیچگاه از وجود آنها اطلاع نداشته است.
درحالی که سیستمهای خبره در عمل به موفقیتهای بسیاری دست یافتهاند ، شبکههای عصبی در کاربردهایی همچون دید مصنوعی ، تشخیص و تولید پیوسته گفتار ، فراگیری ماشینی و نظایر آن با مشکلاتی روبرو بودهاند. در حال حاضر شبکههای عصبی کاملا وابسته به سرعت پردازنده سیستم اجرا کننده هستند.
بینایی ماشین
از میان همه شاخههای هوش مصنوعی ، شاید کاربردیترین آنها کامپیوتری و مکانیزه کردن سیستمهای بینایی باشد. دامنه کاربرد این شاخه از فناوری در حال رشد ، بسیار وسیع است و از کاربردهای عادی و معمولی مثل کنترل کیفیت خط تولید و نظارت ویدئویی گرفته تا تکنولوژیهای جدید مثل اتومبیلهای بدون راننده را دربرگرفته است. دامنه کاربردهای این تکنولوژی بر اساس تکنیکهای مورد استفاده در آنها تغییر میکند.
کنترل کیفیت خط تولید
یکی از کاربردهای بینایی مـاشین در کنترل کیفیت خروجی کارخانهها است. اجناس تولید شده در کارخانه که بر روی یک نوار نقاله قرار گرفتهاند و توسط یک دوربین CCD برای آزمایش دیده میشوند و محصولات با کیفیت مناسب اجازه عبور پیدا خواهند کرد. چنانچه محصولی دارای استانداردهای مناسب نباشد از ادامه مسیر حذف میشود. معیار این استانداردها میتواند لبههای زائد ، خراشیدگی و بادکردگی و تورم روی فلزات و بسیاری چیزهای دیگر باشد.
عکسبرداری
در این مثال سعی در مکانیزه کردن فرآیندی یکنواخت است که بهصورت معمول و تکراری توسط انسان انجام میشود. اولین مسأله و مشکل این است که چگونه عکسهای تهیه شده از اشیایی که در حال حرکت بر روی نوار نقاله هستند ، تبدیل به دادههای قابل فهم و تفسیر برای سیستم است ، این مشکل توسط دوربین CCD حل میشود. عملکرد این دوربین را میتوان به عملکرد چشم انسان که قادر است سطوح مختلف نور را تشخیص دهد تشبیه کرد.
چشم انسان
چشم انسان تقریباً یک عدسی کروی با قطر 2/5 سانتیمتر است که از چندین لایه مختلف که درونیترین آنها شبکیه نام دارد تشکیل شده است. ماهیچههای اطراف چشم اندازه لنز را تنظیم میکنند که اینکار چشم را قادر به زوم (Zoom) کردن روی اشیاء میکند. وظیفه عدسی چشم ، فرم و شکل دادن به تصویری است که توسط میلیونها سلول گیـرنده مخروطی (Cone) و میلهای (Rod) گرفته شده و بر روی پرده شبکیه افتاده است. سلولهای میلهای به یک عصب معمولی که از انتها به شبکیه ختم میشود و فقط در سطح نور پایین فعال است متصلند و سلولهای مخروطی هر کدام به یک عصـب اتصال دارند. آنها در نورهای شدیدتر ، بیشتر فعالند و میزان درک ما از رنگها را نوع فعالیت اینمخروط ها مشخص میکند.
در میان شبکیه ناحیهای به نام نقطه کور وجود دارد که در آن هیچ گیرندهای موجود نیست. در این ناحیه اعصاب به صورت جداگانه به عصب بینایی که سیگنالهای دریافت شده را به قشر بینایی مخ انتقال میدهند ، وصل میشود.
دوربین Coupled Device Charge (CCD)
CCD از جهت عملکرد تقریباً مانند چشم انسان کار میکند. نور از طریق یک عدسی وارد دوربین و بر روی یک پرده مخصوص تصویـر میشود که تحت عنوان تراشه CCD شناخته میشود. تراشه CCD که تصاویر با استفاده از آن گرفته میشوند از تعداد زیادی سلول تشکیل شده که همگی در یک تراشه با الگوی خاصی مرتب شدهاند و تحت عنوان پیکسل (Pixel) شناخته میشوند. زمانی که تراشه CCD این اطلاعات را دریافت میکند ، آنها را به شکل سیگنالهای دیجیتالی از طریق کابلهایی به سیستم دریافت کننده میفرستد و بعد تصاویر در این سیستم به صورت مجموعهای از اعداد ذخیره میشوند.
درک تصویر
با هر تصویر چه با دوربین گرفته شود و چه با چشم انسان ، مقداری تحریف و تغییر شکل و به عبارتی نویز (Noise) وجود دارد و در موقعیتهایی که نیاز به دقت بالا وجود دارد باید از نورپردازی خاصی برای تصویربرداری استفاده شود. انسان برای درک تصاویری که میبیند نیازی ندارد هیچ کاری در مورد فیلتر کردن و از بین بردن نویزهای یک تصویر انجام دهد. مثلا در یک روز ابری که مه همه جا را فرا گرفته ، دید انسان به شدت ضعیف و دچار مشکل میشود. یعنی برای درک اشیاء نیازی به حذف نویزهای تصویر نیست. مثلا اگر در این روز در حال رانندگی در یک جاده باشید و تصویر مبهمی از یک ماشین را مقابل خود ببینید ، بالطبع عکسالعمل نشان میدهید و به عبارتی سرعت خود را کم میکنید و یا مثلا زمانی که دچار سرگیجه میشوید ، علیرغم اینکه تصاویر اطراف خود را تار و مبهم میبینید اما قادر به درک و تشخیص وسایل و تصاویر اطراف خود هستید. یعنی ابتدا صبر نمیکنید تا سرگیجهتان به پایان برسد و بعد تصاویر را تشخیص دهید و این یعنی با قدرت بینایی انسان ، علیرغم خراب شدن تصاویر اطراف ، میتوان متوجه فضای اطراف خود شد. اما برای بینایی ماشین ابتدا باید این نویزها طی فرایندی که تصفیه کردن یا فیلترینگ نامیده میشود ، از بین برود و بعد هر آنچه برای پردازش عکس لازم است انجام شود.
خوشبختانه در حال حاضر تکنیکهایی برای انجام این کار وجود دارد. از بین بردن نویزها بهصورت نرمال توسط تعدادی از توابع ریاضی یا الگوریتمهایی که تحت عنوان "Treshholding" یا "Quantizing" نامیده میشود انجام میشود. این فرایند بسیار حرفهای و پیچیدهای است و نیاز به دانش و پشتوانـه بالای ریاضی دارد. زمانی که خرابیها از بین رفت ، میتوان پردازش عکسها را ادامه داد که این کار با استخراج صورتها و حالتها از یک تصویر انجام میشود. یک شیوه مـعمول که غالباً مورد استفاده قرار میگیرد ، استخراج لبهها است. عملیات بینایی کامپیوتر در حقیقت مقایسه دو مجموعه عدد است که اگر تفاوت این دو مجموعه از یک محدوده خاص فراتر برود ، از پذیرفتن محصول امتناع شده و در غیر اینصورت محصول پذیرفته میشود.
پردازش اطلاعات در مغز
در مورد بینایی انسان یکی از قسمتهای از مغز که بیشتر فعالیت درک تصویر را انجام میدهد ، ناحیه Visual Cortex است. اینجا ناحیهای است که اطلاعات منتقل شده در طول عصب بینایی در آن پردازش میشود. البته این را هم مدنظر داشته باشید که قسمتی از فعالیت پردازش اطلاعات در ناحیه شبکیه چشم قبل از اینکه اطلاعات به مغز برسند ، انجام میشود. البته خود ناحیه شبکیه بهعنوان قسمتی از مغز شمرده میشود. در ضمن این مسأله هم قبلا مشخص شده است که نواحی مختلف قشر بینـایی مخ در مقابل تصاویر مختلف عکسالعمل نشان میدهد. به عبارت دیگر هر قسمت از این ناحیه مربوط به یک حالت خاص است. مثلا نواحی معین و مشخصی در مقابل رنگهای متفاوت عکسالعمل نشان میدهند یا مثلا نواحی وجود دارند که سلولهایشان در مـقابل جزئیات دقیق موجود در یک تصویر عکسالعمل نشان میدهند.
بطور خلاصه با توجه به اینکه سیستم بینایی انسان در بسیاری موارد دچار خطا میشود، نیاز به درنظر گرفتن شیوهای متفاوت برای بینایی ماشین است.
با استفاده از تکنیکهایی که قبلا ذکر شد ، ربات میتواند شناسایی ترکیبات و صورتهای گوناگون موجود در اطراف خود را با استفاده از شیوه همانندسازی الگو انجام دهد. هرچند تعداد زیادی صـورت و ترکیبات گوناگون (Template Matching) دیگر وجود دارند که نیاز به اخذ شیوههای متفاوت دیگری برای نمایش آنها وجود دارد و در این جاست که نیاز به استفاده از تکنیکهای هوش مصنوعی مطرح میشود.
نمایش دانش
متخصصان هوش مصنوعی انواع سیستمها را با استفاده از برنامههای معمول کامپیوتری و تفاوت قائلشدن بین پردازش اطلاعات (Information) و پردازش دانش (Knowledge) شناسایی میکنند. اینکار منجر به ایجاد سیستمهای مبتنی بر دانش که کاربرد بسیار زیادی در هوش مصنوعی دارد میشود.
ربات نیاز به داشتن اطلاعات یا دانش از دنیای اطراف خود دارد تا سیستم بیناییاش به درستی عمل کند. به طور خلاصه بعضی تکنیکهایی که توسط مهندسان دانش (Knowledge Engineer) برای نمایش و پردازش این اطلاعات بهکار میرود آزمایش میشود.
برای استفاده از تکنیک همسانسازی الگو (Template Matching) نیاز به ذخیره مقادیر بسیار زیادی از دانش در رابطه با هر مرحله موجود در دنیای ربات وجود دارد. با استفاده از قوانین میتوان استفاده از این اطلاعات را از بین برد و دیگر نیازی به آنها حس نمیشود. مثلا در مورد یک صندلی ، به جای ذخیره یک صندلی از تعدادی زوایا و اندازهها میتوان اطلاعاتی راجع به برخی خواص و ظواهر صندلی نظیر جنس ، دستهها ، پایهها و ... که یک سیستم مبتنی بر دانش از آنها به منظـور تشخیص صندلی استفاده میکند ، ذخیره کرد. یک صندلی دارای چهار پایه ، یک نشیمنگاه و یک تکیهگاه است.
همانطور که اشاره شد ، عملیات زیادی باید به منظور پردازش اطلاعات تصویری انجام شود. تصاویر غالباً دارای نویز هستند که باعث خرابی و تحریفشان میشود. هرچند این مشکل چندان حادی برای سیستم بینایی انسان به حساب نمیآید اما برای سیستمهای بینایی ماشین این نویزها بهطور کامل باید فیلتر و پاکسازی شوند که این عمل با استفاده از تعدادی الگوریتم انجام میشود.
سیستمهای بینایی اولیه روز به روز در حال گسترش هستند و هر روز کاربرد جدیدی برای آنهـا یافت میشود. با تـوسعه این سیستمها ، کاربردهایی برای سایر محیط ها نظیر توسعه پردازش نیز یافت میشود. سیستمهای بینایی مصنوعی از کاربردهای پزشکی و نظامی گرفته تا کاربردهای ساده و معمول روزمره مورد استفاده هستند و این شاخه از هوش مصنوعی از کاربردیترین شاخهها است که هنوز مـسائل حلنشده زیادی در خود دارد.
پردازش زبانهای طبیعی (NLP)
پردازش زبانهای طبیعی به عنوان زیرمجموعهای از هوش مصنوعی ، میتـوانـد توصیهها و بیانات را با استفاده از زبانی که فرد به طـور طبیعی در مکالمات روزمره به کار میبرد ، بفهمد و مورد پردازش قرار دهد. به طورکلی نحوه کار این شاخه از هوش مصنوعی این است که زبانهای طبیعـی انسان را تقلید میکند. در این میان ، پیچیدگی انسان از بعد روانشناسی بر روی ارتباط متعامل تأثیر میگذارد.
در پردازش زبان های طبیعی ، انسان و کامپیوتر ارتباطی کاملا نزدیک با یکدیگر دارند. کامپیوتر از لحاظ روانی در مغز انسان جای داده می شود. بدین ترتیب یک سیستم خلاق شکل می گیرد که انسان نقش سازمان دهنده اصلی آن را برعهده دارد. اگر چه هنوز موانع روانشناختی و زبانشناختی بسیاری بر سر راه سیستم های محاوره ای وجود دارد. اما چشم اندازهای پیشرفـت آن ها یقیناً نویدبخش اسـت. در حقیقت توقعات یکسان از محاوره انسان-ماشین و محاوره انسان-انـسان ، معقول نیست.
تکنیکها و زبانهای برنامه نویسی هوش مصنوعی
عملکرد اولیه برنامه نویسی هوش مصنوعی ایجاد ساختار کنترلی مورد لزوم برای محاسبه سمبولیک است. زبان های برنامه نویسی LISP ، PROLOG علاوه بر اینکه از مهمترین زبان های مورد استفاده در هوش مصنوعی هستند ، خصوصیات نحوی و معنایی آن ها باعث شده که آن ها شیوهها و راه حلهای قوی برای حل مسئله ارایه کنند. تأثیر قابل توجه این زبان ها بر روی توسعه AI از جمله تواناییهای آن ها به عنوان ابزارهای فکرکردن اسـت. در حقیقت همانطور که هوش مصنوعی مراحل رشد خود را طی میکند ، زبان های LISP و PROLOG بیشتر مطرح میشوند. این زبان ها کار خود را در محدوده توسعه سیستمهای AI در صنعـت و دانشگاهها دنبال میکنند و طبیعتاً اطلاعات در مورد این زبان ها به عنوان بخشی از مهارت هر برنامه نویس AI است.
PROLOG یک زبان برنامه نویسی منطقی است. یک برنامه منطقی دارای یک سری ویژگی های قانون و منطق است. در حقیقت خود این نام از برنامه نویسی PRO در LOGIC میآید. در این زبان یک مفسر برنامه را بر اساس یک منطق مینویسد. ایده استفاده توصیفی محاسبه اولیه برای بیان خصـوصیات حل مسئله یکی از محوریت های مشارکت PROLOG است که برای علم کامپیوتر به طور کلی و به طور خاص برای زبان برنامه نویسی هوشمند مورد استفاده قرار میگیرند.
الگوریتم ژنتیک
الگوریتمهای ژنتیک به عنوان یکی از راهحلهای یافتن جواب مسئله در بین روشهای مرسوم در هوش مصنوعی مطرح است. در حقیقت با این روش می توان در فضای حالت مسئله حرکتی سریعتر برای یافتن جوابهای احتمالی داشت ؛ یعنی می توان با عدم بسط دادن کلیه حالات به جوابهای مورد نظر رسید.
در جهان اطراف همه ارگانیزمهای حیاتی از ساختارهای قانونمندی تشکیل شدهاند. همه این ارگانیزمها از بلوکهای پایهای از زندگی به نام سلول تشکیل به وجود آمدهاند. قوانین ذکر شده در قالب ژنها به صورت کد شده در هر ارگانیزم وجود دارند. از به هم وصل شدن این ژنها ، رشتههایی طولانی به نام کروموزوم تولید میشود. هر ژن نمایانگر یکی از خصوصیات آن ارگانیزم است.
مانند رنگ چشم یا رنگ مو و البته هر ژن میتواند دارای مقادیر مختلفی باشد. مثلا در رابطه با رنگ چشم میتواند دارای مقادیری متناظر با مشکی ، قهوهای و آبی و سبز و ... باشد. هنگامی که دو ارگانیزم به تولید مثل میپردازند ، در حقیقت ژنهای خود را با یکدیگر ترکیب میکنند. بدین صورت که ارگانیزم تولید شده که در این متن از این به بعد آن را نوزاد مینامند ، دارای نیمی از ژنهای یک والد و نیم دیگر از والد دیگری است. این عمل را ترکیب میگویند. گاهی اوقات بعضی از ژنها دارای جهش میشوند. این جهش تغییری در ساختار کروموزوم ایجاد نمیکند ، اما با توجه به اینکه مقدار جدیدی به یک ژن تخصیص مییابد ، موجب بروز خصوصیت جدیدی میشود. از این اتفاق با نام جهش یاد میشود.
برای استفاده از الگوریتم ژنتیک در برنامهها ابتدا باید راهی بیابید تا حالات جواب مسئله خود را به صورت کد شده در قالب رشتهای از اعداد صحیح یا در فرم کلاسیکتر آن به صورت رشتهای از بیتها نمایش دهید (هر رشته از بیتها معادل یک کروموزوم یا یک ارگانیزم طبیعی است و هدف این است که به ارگانیزم بهتری ، یعنی کرومزوم بهتری دست پیدا کند.) بدین ترتیب جوابها به یکی از اشکال زیر خواهد بود.
1011011010000101011111110
یا 1264196352478923455548216
برای شروع فعالیت الگوریتم ژنتیک نیاز به جمعیتی از کروموزومها به صورت تصادفی است. یعنی در ابتدا به عنوان قدم اول ، تعدادی کروموزوم به صورت تصادفـی ایجاد کرد. فرض کنید N کروموزوم و این N را جمعیت آغازین مینامند.
در ادامه تابعی به نام تابع ارزش تشکیل میشود که این تابع به عنوان ورودی یک کروموزوم را دریافت میکند (یک جواب مسئله) و به عنوان خروجی عددی را مبتنی بر میزان بودن کروموزوم نسبت به جواب نهایی بر میگرداند. در حقیقت این تابع میزان خوب بودن جواب را مشخص میکند. برای همه نمونههای جمعیت مقدار تابع ارزش حساب میشود.
در ادامه به صورت تصادفی دو نمونه از کروموزومها انتخاب می شود. باید توجه داشت که سیستم به گونهای طراحی شود که شانس انتخاب هر کروموزوم متناسب با مقدار تابع ارزش آن کروموزوم باشد. یعنی اگر کروموزومی دارای مقدار تابع ارزشی بهتری بود ، شانس انتخاب شدن آن بیشتر باشد (بدین وسیله سعی میشود بیشتر روی پاسخهای بهتر مسئله پردازش انجام شود.)
بعد از انتخاب دو کروموزوم ، اکنون نوبت به ترکیب میرسد. برای انجام عمل ترکیب ، باید یک نقطه (نقطه شکست) در جفت کروموزوم خود را به صورت تصادفی انتخاب کند. هر کروموزوم به دو پاره تقسیم میشود و در ادامه کمی جای هر پاره از هر کروموزوم با دیگری عوض میشود.
بدین ترتیب دو کروموزوم جدید تولید میشود (دو جواب جدید.) راه دیگری نیز برای انجام عمل ترکیب وجود دارد و آن انتخاب چند نقطه شکست است.
در هر حال باید یک روش انتخاب شود و در طول پروژه عمل ترکیب خود را مبتنی بر آن روش انجام می دهد. بعد از انجام عملیات انتخاب و ترکیب ، نوبت به عمل جهش ژنها میرسد. عمل جهش باید با احتمال پایین رخ دهد. یعنی در اکثر مواقع نباید دارای جهش باشد ، اما احتمال آن نیز نباید صفر باشد. بنابراین اگر کروموزوم به دست آمده از عملگر ترکیب دچار جهش شود ، باید یکی از بیتهای آن که متناظر با ژنهای آن هستند ، به صورت تصادفی انتخاب شود و سپس مقدار آن تغییر کند.
اکنون یک مرحله انجام می شود و یک کروموزوم جدید (جواب جدید) برای مسئله ایجاد می شود. در ادامه دو مرتبه دو کروموزوم از جمعیت اولیه انتخاب میشود و همه اعمال گفته شده روی آن انجام میشود تا کروموزوم دیگری ایجاد شود و اینکار به قدری تکرار میشود تا به تعداد کروموزومهای جمعیت اولیه ، کروموزوم جدید ایجاد شود و این مجموعه کروموزوم جدید در حقیقت نسل جدید خواهند بود و اینکار به قدری ادامه داده می شود تا نسلهای بهتر و بهتری ایجاد شود و هنگامی جواب نهایی به دست می آید که تابع ارزشی ، مقدار مطلوب را به ازای مقدار مورد نظر از کروموزوم ها برگرداند.
منبع: ماهنامه مهندسی پزشکی
مطالب مشابه :
ساخت شبکه عصبی چند لایه با دستور newff
ساخت شبکه عصبی چند لایه با جواب گرفته شده و خروجی تک متغیره آن نیز وارد می شود
شبکه عصبی چند لایه
تک طرح دانلود شبکه عصبی چند لایه. شبكه های عصبی از دهه 50 شناخته شده بودند اما تنها در
عمليات شبکههای عصبی (بخش سوم)
اگرچه در کاربردهای مشخصی میتوان با موفقیت از شبکههای عصبی تک لایه شبکه عصبی
شبکه عصبی چیست؟
شبکه عصبی سیستمهای تک لایه و چند کرد که یک شبکه پرسپترون چند لایه البته با
شبکه های عصبی و الگوریتم های ژنتیک در تجارت
یک سیستم شبکه عصبی از تکنیکهای با موفقیت از شبکه های عصبی تک لایه استفاده کرد
شبکه های عصبی
شبکه عصبی چیست؟ شبکه در 1969 مینسکی و پاپرت کتابی نوشتند که محدودیتهای سیستمهای تک لایه و
شبکه های عصبی و الگوریتم های ژنتیک در تجارت
فناوری شبکه عصبی شبکه های عصبی یک با موفقیت از شبکه های عصبی تک لایه استفاده کرد اما
موضوع سمينار : شبكه عصبي مصنوعي در شيمي و مهندسي شيمي
2-6-1- شبکه تک لایه ----- 31. 2-6-2- شبکه 2-8-2- شبکه های عصبی چند لایه پرسپترون(Multilayer Perceptron(M.L.P)) 36.
شبکه های عصبی
شبکه عصبی مصنوعی یک سامانه پردازشی داده شبکههای تک لایه و چند لایهای نیز وجود دارند
ساختار شبکههای عصبی
یک شبکه عصبی شامل اجزای سازنده لایه شبکههای تک لایه و چند لایهای نیز وجود دارند که
برچسب :
شبکه عصبی تک لایه