محاسبات نرم (به انگلیسی: soft computing) به مجموعهای از شیوههای جدید محاسباتی در علوم رایانه، هوش مصنوعی، یادگیری ماشینی و بسیاری از زمینههای کاربردی دیگر اطلاق میشود. در تمامی این زمینهها به مطالعه، مدلسازی و آنالیز پدیدههای بسیار پیچیدهای نیاز است که شیوههای علمی دقیق در گذشته، در حل آسان، تحلیلی، و کامل آنها موفق نبودهاند.
نکتهها و چراییهای فلسفی
در مقایسه با تدابیر علمی نرم، روشهای علمی بهکاررفته در سدههای پیشین، تنها از عهدهٔ مدلسازی و آنالیز سامانههای نسبتاً ساده در مکانیک، فیزیک، و برخی از زمینههای کاربردی و مهندسیبرآمدهاند. مسائل پیچیدهتری همچون سامانههای وابسته به علوم زیستشناسی و پزشکی، علوم اجتماعی، علوم انسانی، علوم مدیریت و نظایر آنها بیرون از قلمرو اصلی و توفیقآفرین روشهایریاضی و تحلیلی دقیق باقی ماندهبودند. شایان ذکر است که خصایص سادگی و پیچیدگی اموری هستند نسبی، و بهطور یقین، اغلب مدلسازیهای ریاضی و علمی موفق در گذشته هم، به مفهوم مطلق کلام، بسیار پراهمیت و پیچیده بودهاند.
محاسبات نرم با تقبل نادقیق بودن و با محور قراردادن ذهن انسان بهپیش میرود. اصل هدایتکنندهٔ محاسبات نرم بهرهبرداری از خاصیت عدم دقیقبودن جهت مهارکردن مسئله و پایینآوردن هزینهٔ راهحل است.
محاسبات نرم را میشود حاصل تلاشهای جدید علمی دانست که مدلسازی، تحلیل، و در نهایت کنترل سیستمهای پیچیده را با سهولت و موفقیت زیادتری امکانپذیر میسازد. به عنوان مهمترین شاخههای این محاسبات، باید منطق فازی، شبکههای عصبی مصنوعی، و الگوریتم ژنتیک را بر شمرد.
برخلاف شیوههای محاسباتی سخت که تمامی همت و توان خود را به دقیقبودن، و “در جهتِ مدل نمودنِ کاملِ حقیقت”، معطوف میدارند، روشهای نرم، براساس تحمل نادقیقنگریها، حقایق جزئی و ناکامل، و فقدان اطمینان، استوار گردیدهاند. درک هرچه روشنتر از چرایی، چگونگی، و نیز فلسفهٔ اینگونه محاسباتِ جدید است که افقهای جدید در علوم پیچیدهٔ آینده را روشن میسازد.
یکی از بزرگترین زمینههای کاربرد محاسبات نرم در ایجاد و گسترش وب معنیگرا خواهد بود.
محاسبات نرم در مقایسه با محاسبات سخت به زبان سادهٔ علمی، روشهای سخت، برآمده از طبیعت و نحوهٔ رفتار ماشین است؛ ولی، در مقابل، شیوههای نرم، به انسان و تدابیر اتخاذشده از سویذهن او به منظور حل و فصلِ مسائل، اختصاص پیدا میکند.
شناسایی و نحوه کنترل رفتار یک پدیده و سیستم، از مباحث مهم و کلیدی در امر سیستم کنترل می باشد. اصولاً جهت شناسایی و مدل سازی رفتار یک سیستم به معادله ریاضی آن رجوع می شود. بسیاری از پدیده ها رفتار پیچیده ای دارند و براحتی نمی توان معادله ریاضی آن را بدست آورد. مثلاً نحوه کنترل نوسان بار جرثقیل هوایی جهت قرار دادن بار در نقطه مطلوب، بسیار پیچیده است و اغلب به ۱۰۰% دقیق نیز نخواهد بود و حداقل نیازمند یک معادله دیفرانسل درجه ۵ جهت پیاده سازی آن خواهیم بود.
در صورتی که فقط یک متغیر دیگر بخواهیم به سیستم فوق اضافه نماییم، ممکن است این معادله دیفرانسیل پیچیده تر نیز بشود. بدست آوردن خود این معادله ریاضی دردسر فراوانی دارد، پیاده سازی آن در یک سیستم کنترل الکترونیکی چالش بزرگتری است.
مغز انسان، هرگز برای برخورد با چالش ها و مسائل روزمره پیرامونش، خود را درگیر فرمول و محاسبات پیچیده نمی کند. انسان براساس یادگیری ها و آموخته های خود تصمیماتی می گیرد که منجر به کنترل مسائل پیچیده خواهد بود. اما همین انسان در صورتی که بخواهد نحوه برخورد با یک فرد متخلف را مدل نماید و آن را به یک کامپیوتر بسپارد، حداقل نیاز به دانش معادلات دیفرانسیل، معادلات لاپلاس و … می باشد. اینگونه محاسبات خشک و مبتنی بر معادلات دقیق ریاضیات تحت عنوان “محاسبات سخت” نامیده می شوند.
از طرف دیگر روش هایی وجود دارند که می توانند رفتار پیچیده ترین و مغشوش ترین پدیده ها را نیز با دقت بالایی (نه بصورت ۱۰۰ %دقیق) مدل سازی نمایند. این محاسبات که تحت عنوان “محاسبات نرم” شناخته می شوند، مبتنی بر استنتاج ذهن انسان، شبیه سازی عملکرد نرون های مغز، شبیه سازی رفتار پدیده های اجتماعی طبیعت (الگوریتم های تکاملی مثل ژنتیک، فاخته، کلونی مورچه و…) است.
شبکه های عصبی مصنوعی، سیستم های فازی و الگوریتم های تکاملی از مهمترین شاخه های محاسبات نرم محسوب می شوند. یک راننده ماهر جرثقیل هوایی جهت کنترل نوسان بار، هرگز در ذهنش یک معادله درجه ۵ را بکار نمی گیرد. او با استفاده از یک سیستم استنتاج فازی ذهنی (تعدادی اگر-آنگاه) به خوبی این سیستم پیچیده را با استفاده از تجربیاتش کنترل می نماید. در واقع می توان این تجربیات فرد متخصص را بصورت قوانین فازی درآورد و به سیستم کنترل سپرد.
در سال های اخیر، کاربرد محاسبات نرم در هوش مصنوعی، داده کاوی و سیستم های کنترل هوشمند بسیار پر رنگ و چاره ساز بوده است.
ربات يك ماشين الكترومكانيكي هوشمند است با خصوصيات زير: – مي توان آن را مكرراً برنامه ريزي كرد. – چند كاره است. – كارآمد و مناسب براي محيط است.
اجزاي يك ربات
– وسايل مكانيكي و الكتريكي: شاسي، موتورها، منبع تغذيه، … – حسگرها (براي شناسايي محيط): دوربين ها، سنسورهاي sonar، سنسورهاي ultrasound، … – عملكردها (براي انجام اعمال لازم) بازوي روبات، چرخها، پاها، … – قسمت تصميم گيري (برنامه اي براي تعيين اعمال لازم): حركت در يك جهت خاص، دوري از موانع، برداشتن اجسام، … – قسمت كنترل (براي راه اندازي و بررسي حركات روبات): نيروها و گشتاورهاي موتورها براي سرعت مورد نظر، جهت مورد نظر، كنترل مسير، ..
تاريخچه رباتيك:
– ۲۷۰ ق م : زماني كه يونانيان به ساخت مجسمه هاي متحرك ميپرداختند. – حدود سال ۱۲۵۰ م: بيشاپ آلبرتوس ماگنوس (Bishop Albertus Magnus) ضيافتي ترتيب داد كه درآن، ميزبانان آهني از مهمانان پذيرايي مي كردند. با ديدن اين روبات، سنت توماس آكويناس (Thomas Aquinas) برآشفته شد، ميزبان آهني را تكه تكه كرد و بيشاب را ساحر و جادوگر خواند. – سال ۱۶۴۰ م: دكارت ماشين خودكاري به صورت يك خانم ساخت و آن را Ma fille Francine ” مي ناميد.اين ماشين كه دكارت را در يك سفر دريايي همراهي مي كرد، توسط كاپيتان كشتي به آب پرتاب شد چرا كه وي تصور مي كرد اين موجود ساخته شيطان است. – سال ۱۷۳۸ م: ژاك دواكانسن (Jacques de Vaucanson) يك اردك مكانيكي ساخت كه از بيش از ۴۰۰۰ قطعه تشكيل شده بود. اين اردك مي توانست از خود صدا توليد كند، شنا كند، آب بنوشد، دانه بخورد و آن را هضم و سپس دفع كند. امروزه در مورد محل نگهداري اين اردك اطلاعي در دست نيست. – سال ۱۸۰۵ م: عروسكي توسط ميلاردت (Maillardet) ساخته شد كه مي توانست به زبان انگليسي و فرانسوي بنويسد و مناظري را نقاشي كند. – سال ۱۹۲۳ م: كارل چاپك (Karel Capek) براي اولين بار از كلمه روبات (robot) در نمايشنامه خود به عنوان آدم مصنوعي استفاده كرد. كلمه روبات از كلمه چك robota گرفته شده است كه به معني برده و كارگر مزدور است. موضوع نمايشنامه چاپك، كنترل انسانها توسط روباتها بود، ولي او هرگونه امكان جايگزيني انسان با روبات و يا اينكه روباتها از احساس برخوردار شوند، عاشق شوند، يا تنفر پيدا كنند را رد مي كرد. – سال ۱۹۴۰ م: شركت وستينگهاوس (Westinghouse Co.) سگي به نام اسپاركو (Sparko) ساخت كه هم از قطعات مكانيكي و هم الكتريكي در ساخب آن استفاده شده بود. اين اولين باري بود كه از قطعات الكتريكي نيز همراه با قطعات مكانيكي استفاده مي شد. – سال ۱۹۴۲ م: كلمه روباتيك (robatics) اولين بار توسط ايزاك آسيموف در يك داستان كوتاه ارائه شد. ايزاك آسيموف (۱۹۲۰-۱۹۹۲) نويسنده كتابهاي توصيفي درباره علوم و داستانهاي علمي تخيلي است. – دهه ۱۹۵۰ م: تكنولوژي كامپيوتر پيشرفت كرد و صنعت كنترل متحول شد. سؤلاتي مطرح شدند. مثلاً: آيا كامپيوتر يك روبات غير متحرك است؟ – سال ۱۹۵۴ م: عصر روبات ها با ارائه اولين روبات آدم نما توسط جرج دوول (George Devol) شروع شد. – سال ۱۹۵۶ م: پس از توسعه فعاليتهاي تكنولوژي يك كه بعد از جنگ جهاني دوم، يك ملاقات تاريخي بين جورج سي.دوول(George C.Devol) مخترع و كارآفرين صاحب نام، و ژوزف اف.انگلبرگر (Joseph F.Engelberger) كه يك مهندس با سابقه بود، صورت گرفت. در اين ملاقات آنها به بحث در مورد داستان آسيموف پرداختند. ايشان سپس به موفقيتهاي اساسي در توليد روباتها دست يافتند و با تأسيس شركتهاي تجاري، به توليد روبات مشغول شدند. انگلبرگر شركت Unimate برگرفته از Universal Automation را براي توليد روبات پايه گذاري كرد. نخستين روباتهاي اين شركت در كارخانه جنرال موتورز (General Motors) براي انجام كارهاي دشوار در خودروسازي به كار گرفته شد. انگلبرگر را “پدر روباتيك” ناميده اند. – دهه ۱۹۶۰ م: روباتهاي صنعتي زيادي ساخته شدند. انجمن صنايع روباتيك اين تعريف را براي روبات صنعتي ارائه كرد: “روبات صنعتي يك وسيلة چند كاره و با قابليت برنامه ريزي چند باره است كه براي جابجايي قطعات، مواد، ابزارها يا وسايل خاص بوسيلة حركات برنامه ريزي شده، براي انجام كارهاي متنوع استفاده مي شود.” – سال ۱۹۶۲ م: شركت خودروسازي جنرال موتورز نخستين روبات Unimate را در خط مونتاژ خود به كار گرفت. – سال ۱۹۶۷ م: رالف موزر (Ralph Moser) از شركت جنرال الكتريك (General Electeric) نخستين روبات چهارپا را اختراع كرد. – سال ۱۹۸۳ م: شركت Odetics يك روبات شش پا ارائه كرد كه مي توانست از موانع عبور كند و بارهاي سنگيني را نيز با خود حمل كند. – سال ۱۹۸۵ م: نخستين روباتي كه به تنهايي توانايي راه رفتن داشت در دانشگاه ايالتي اهايو (Ohio State Uneversity) ساخته شد. – سال ۱۹۹۶ م: شركت ژاپني هندا (Honda) نخستين روبات انسان نما را ارائه كرد كه با دو دست و دو پا طوري طراحي شده بود كه مي توانست راه برود، از پله بالا برود، روي صندلي بنشيند و بلند شود و بارهايي به وزن ۵ كيلوگرم را حمل كند روباتها روز به روز هوشمندتر مي شوند تا هرچه بيشتر در كارهاي سخت و پر خطر به ياري انسانها بيايند. امروزه، ۹۰% روباتها، روباتهاي صنعتي هستند، يعني روباتهايي كه در كارخانه ها، آزمايشگاهها، انبارها، نيروگاهها، بيمارستانها، و بخشهاي مشابه به كارگرفته مي شوند.در سالهاي قبل، اكثر روباتهاي صنعتي در كارخانه هاي خودروسازي به كارگرفته مي شدند، ولي امروزه تنها حدود نيمي از روباتهاي موجود در دنيا در كارخانه هاي خودروسازي به كار گرفته مي شوند.مصارف روباتها در همه ابعاد زندگي انسان به سرعت در حال گسترش است تا كارهاي سخت و خطرناك را به جاي انسان انجام دهند.براي مثال امروزه براي بررسي وضعيت داخلي رآكتورها از روبات استفاده مي شود تا تشعشعات راديواكتيو به انسانها صدمه نزند.
۳ قانون روباتيك مطرح شده توسط آسيموف:
۱- روبات ها نبايد هيچگاه به انسانها صدمه بزنند. ۲- روباتهابايد دستورات انسانها را بدون سرپيجي از قانون اوّل اجرا كنند. ۳- روباتها بايد بدون نقض قانون اوّل و دوم از خود محافظت كنند.
انواع ربات ها :
رباتهاي امروزي كه شامل قطعات الكترونيكي و مكانيكي هستند در ابتدا به صورت بازوهاي مكانيكي براي جابجايي قطعات و يا كارهاي ساده و تكراري كه موجب خستگي و عدم تمركز كارگر و افت بازده ميشد بوجود آمدند. اينگونه رباتها جابجاگر (manipulator) نام دارند. جابجاگرها معمولا در نقطه ثابت و در فضاي كاملا كنترل شده در كارخانه نصب ميشوند و به غير از وظيفه اي كه به خاطر آن طراحي شده اند قادر به انجام كار ديگري نيستند. اين وظيفه ميتواند در حد بسته بندي توليدات, كنترل كيفيت و جدا كردن توليدات بي كيفيت, و يا كارهاي پيچيده تري همچون جوشكاري و رنگزني با دقت بالا باشد. نوع ديگر رباتها كه امروزه مورد توجه بيشتري است رباتهاي متحرك هستند كه مانند رباتهاي جابجا كننده در محيط ثابت و شرايط كنترل شده كار نميكنند. بلكه همانند موجودات زنده در دنياي واقعي و با شرايط واقعي زندگي ميكنند و سير اتفاقاتي كه ربات بايد با انها روبرو شود از قبل مشخص نيست. در اين نوع ربات هاست كه تكنيك هاي هوش مصنوعي ميبايست در كنترلر ربات(مغز ربات) به كار گرفته شود.
رباتهاي متحرك به دسته هاي زير تقسيم بندي ميشوند:
۱-رباتهاي چرخ دار با انواع چرخ عادي و يا شني تانك و با پيكربندي هاي مختلف يك, دو يا چند قسمتي ۲-رباتهاي پادار مثل سگ اسباب بازيAIBO ساخت سوني كه در شكل بالا نشان داده شد يا ربات ASIMO ساخت شركت هوندا ۳-رباتهاي پرنده ۴-رباتهاي چند گانه(هايبريد) كه تركيبي از رباتهاي بالا يا تركيب با جابجاگرها هستند و …
مزاياي روباتها:
۱- روباتيك و اتوماسيون در بسياري از موارد مي توانند ايمني، ميزان توليد، بهره و كيفيت محصولات را افزايش دهند. ۲- روباتها مي توانند در موقعيت هاي خطرناك كار كنند و با اين كار جان هزاران انسان را نجات دهند. ۳- روباتها به راحتي محيط اطراف خود توجه ندارند و نيازهاي انساني براي آنها مفهومي ندارد. روباتها هيچگاه خسته نمي شوند. ۴- دقت روباتها خيلي بيشتر از انسانها است آنها در حد ميلي يا حتي ميكرو اينچ دقت دارند. ۵- روباتها مي توانند در يك لحظه چند كار را با هم انجام دهند ولي انسانها در يك لحظه تنها يك كار انجام مي دهند.
معايب روباتها:
۱- روباتها در موقعيتهاي اضطراري توانايي پاسخگويي مناسب ندارند كه اين مطلب مي تواند بسيار خطرناك باشد. ۲- روباتها هزينه بر هستند. ۳- قابليت هاي محدود دارند يعني فقط كاري كه براي آن ساخته شده اند را انجام مي دهند.
کلمه ربات توسط Karel Capek نویسنده نمایشنامه ( R.U.R عقل ربات های جهانی) در سال ۱۹۲۰ ابداع شد. ریشه این کلمه، کلمه چک اسلواکی (robotnic) به معنی کارگر میباشد.
امروزه معمولاً کلمه ربات به معنی هر ماشین ساخت بشر که بتواند کار یا عملی که بهطور طبیعی توسط انسان انجام میشود را انجام دهد، استفاده میشود.
رباتیک چیست ؟
رباتیک شاخه ای از مهندسی مکانیک، مهندسی برق، مهندسی الکترونیک و علوم کامپیوتر است که به طراحی، ساخت، بهره برداری و استفاده از ربات می پردازد. رباتیک فناوری جدیدی نیست ولی توانایی کاربردش در تمام عرصههای علوم و تاثیرش در فناوریهای دیگر اهمیت زیادی دارد.
منظور از ربات های صنعتی چیست ؟
امروزه، ۹۰% رباتها، رباتهای صنعتی هستند، یعنی رباتهایی که در کارخانه ها، آزمایشگاهها، انبارها، نیروگاهها، بیمارستانها، و بخشهای مشابه به کارگرفته می شوند.در سالهای قبل، اکثر رباتهای صنعتی در کارخانه های خودروسازی به کارگرفته می شدند، ولی امروزه تنها حدود نیمی از رباتهای موجود در دنیا در کارخانه های خودروسازی به کار گرفته می شوند.
رباتها از چه ساخته میشوند؟
رباتها دارای سه قسمت اصلی هستند:
مغز که معمولاً یک کامپیوتر است.
محرک و بخش مکانیکی شامل موتور، پیستون، تسمه، چرخها، چرخ دندهها و …
سنسور که میتواند از انواع بینایی، صوتی، تعیین دما، تشخیص نور، تماسی یا حرکتی باشد.با این سه قسمت، یک ربات میتواند با اثرپذیری و اثرگذاری در محیط کاربردیتر شود.
جنبه های رباتیک
نمی توان گفت که انواع مختلفی از رباتها وجود دارند. آنها با توجه به محیط ها و کاربردهای مختلف ساخته می شوند که باعث می شود دارای اشکال و نرم افزارهای مختلفی باشند ، اما در ساخت همه ی آنها سه موضوع مشترک وجود دارد :
قطعات مکانیکی مانند قاب ، فرم ، طراحی شکل ربات
قطعات الکتریکی مانند مدارهای کنترلی و باتری
کد های برنامه نویسی که باعث می شود یک ربات تحت شرایط خاص چگونه عمل کند.
تأثیر رباتیک در جامعه
علم رباتیک در اصل در صنعت بهکار میرود و ما تأثیر آن را در محصولاتی که هر روزه استفاده میکنیم، میبینیم. که این تأثیرات معمولاً در محصولات ارزانتر دیده میشود.
رباتها معمولاً در مواردی استفاده میشوند که بتوانند کاری را بهتر از یک انسان انجام دهند یا در محیط پر خطر فعالیت نمایند مثل اکتشافات در مکانهای خطرناک مانند آتشفشانها که میتوان بدون به خطر انداختن انسانها انجام داد.
قوانین سهگانه رباتیک
ایزاک آسیموف نویسنده داستانهای علمی تخیلی قوانین سهگانه رباتیک را به صورت زیر تعریفکرده است: ۱ـ یک ربات نباید به هستی انسان آسیب برساند یا به واسطه بیتحرکی، زندگی یک انسان را به مخاطره بیاندازد. ۲ـ یک ربات باید از دستوراتی که توسط انسان به او داده میشود، اطاعت کند؛ جز در مواردی که با قانون یکم در تضاد هستند. ۳ـ یک ربات باید تا جاییکه با قوانین یکم و سوم در تضاد نباشد از خود محافظت کند.
مشکلات رباتیک
یک ربات مانند هر ماشین دیگری، میتواند بشکند یا به هر علتی خراب شود. ضمناً آنها ماشینهای قدرتمندی هستند که به ما اجازه میدهند کارهای معینی را کنترل کنیم.
خوشبختانه خرابی رباتها بسیار نادر است زیرا سیستم رباتیک با مشخصههای امنیتی زیادی طراحی میشود که میتواند آسیب آنها را محدود کند.
در این حوزه نیز مشکلاتی در رابطه با انسانهای شرور و استفاده از رباتها برای مقاصد شیطانی داریم. مطمئناً رباتها میتوانند در جنگهای آینده استفاده شوند. این میتواند هم خوب و هم بد باشد. اگر انسانها اعمال خشونت آمیز را با فرستادن ماشینها به جنگ یکدیگر نمایش دهند، ممکن است بهتر از فرستادن انسانها به جنگ با یکدیگر باشد. رباتها میتوانند برای دفاع از یک کشور در مقابل حملات استفاده میشوند تا تلفات انسانی را کاهش دهد. آیا جنگهای آینده میتواند فقط یک بازی ویدئویی باشد که رباتها را کنترل میکند؟
مزایای رباتیک
معمولاً یک ربات میتواند کارهایی که ما انسانها میخواهیم انجام دهیم را ارزانتر انجام دهد. رباتها میتوانند کارها را دقیقتر از انسانها انجام دهند و روند پیشرفت در علم پزشکی و سایر علوم کاربردی را سرعت بخشند. رباتها به ویژه در امور تکراری و خسته کننده مانند ساختن صفحه مدار، ریختن چسب روی قطعات یدکی و… سودمند هستند. برای مثال امروزه برای بررسی وضعیت داخلی رآکتورها از ربات استفاده می شود تا تشعشعات رادیواکتیو به انسانها صدمه نزند. رباتها روز به روز هوشمندتر می شوند تا هرچه بیشتر در کارهای سخت و پر خطر به یاری انسانها بیایند.
نرم افزارهای حوزه ی رباتیک
RobotWorks : این نرم افزار میتواند واسط رباتیک و گذرگاه شبیه سازی ربات را برای نرم افزار محبوب SolidWorks ایجاد نماید. با استفاده از RobotWorks قادر خواهید بود ربات های صنعتی خود را در نرم افزار SolidWorks طراحی کرده و حرکات و اطلاعات مربوط به آنها را به صورت سه بعدی ( در نرم افزار RobotWorks ) مشاهده نمایید .
EASY-ROB : EASY-ROB یک نرم افزار کاربردی در زمینه ی شبیه سازی بازو های رباتیک است که کاربران با استفاده از آن میتوانند ضمن مشاهده ی رفتار دقیق بازو، اطلاعات مربوط به ساخت آن را نیز از نرم افزار استخراج نمایید.
RoboCupRescue : وجود بلایای طبعیی همچون سیل، زلزله و… و خرابی هایی که بعد از رخ دادن آنها دامن گیر انسان ها میشود باعث شد، تا بشر به کاربرد ربات ها در زمینه ی امداد و نجات توجه بیشتر داشته باشد، در این بین گروه های مختلفی در زمینه ی طراحی و ساخت ربات های امداد گر شروع به فعالیت کردند یکی از این گروه ها تیم تحقیقاتی RoboCupRescue میباشد.
Microsoft Robotics Developer Studio : این نرم افزار یکی از نرم افزارهای قوی در زمینه شبیه سازی ربات ها است.شما با استفاده از این نرم افزار، می توانید به راحتی بخش مکانیک ربات خود را شبیه سازی نمایید.
Webots : نرم افزار Webots برای مدلسازی و برنامه نویسی و شبیه سازی ربات های متحرک مورد استفاده قرار می گیرد.کتابخانه های این محصول، به شما امکان می دهد که برنامه های کنترلی خودتان را به منظور ساخت ربات های واقعی بر روی این ربات ها به اجرا در بیاورید. همچنین خود نرم افزار هم این امکان رو به شما می دهد که ربات های مختلفی را در یک محیط طراحی کنید و برای هر کدام می توانید ویژگی های متفاوتی را تعریف کنید، همانند، شکل، رنگ، تکسچر، جرم، اصطکاک و غیره. همچنین شما می توانید هر ربات را با تعداد زیادی از سنسورها و محرک ها مجهز کنید. شما قادر خواهید بود که برای آنها برنامه نویسی کنید و نتایج را بر روی ربات های واقعی پیاده کنید. بیش از ۵۰۰۰ دانشگاه و مرکز تحقیقاتی از این نرم افزار استفاده می کنند.
تاثیرات شغلی رباتیک
بسیاری از مردم از اینکه رباتها تعداد شغلها را کاهش دهد و افراد زیادی شغل خود را از دست دهند، نگرانند. این تقریباً هرگز قضیهای بر خلاف تکنولوژی جدید نیست. در حقیقت اثر پیشرفت تکنولوژی مانند رباتها (اتومبیل و دستگاه کپی و…) بر جوامع ، آن است که انسان بهرهورتر میشود.
آینده رباتیک
جمعیت رباتها به سرعت در حال افزایش است. این رشد توسط ژاپنیها که رباتهای آنها تقریباً دو برابر تعداد رباتهای آمریکا است، هدایت شده است. همه ارزیابیها بر این نکته تأکید دارد که رباتها نقش فزایندهای در جوامع مدرن ایفا خواهند کرد. آن ها به انجام کارهای خطرناک، تکراری، پر هزینه و دقیق ادامه میدهند تا انسانها را از انجام آنها باز دارند.
رباتیک شاخه ای میان رشته ای از مهندسی و علم است که شامل مهندسی مکانیک ، مهندسی برق و علوم رایانه و چند رشته دیگر میشود . رباتیک شامل طراحی ، ساخت ، راه اندازی و استفاده از رباتها می شود، همچنین مانند سیستم های رایانه ای ، کنترل ، بازخورد حسگرها و پردازش اطلاعات نیز در این گروه قرار می گیرند.
برای آشنایی بیشتر با ربات میتوانید به نوشته ربات چیست مراجعه نمایید.
این فناوریها استفاده می شوند تا ماشینها را به گونه ای ارتقا دهند که جایگزین انسان گردند. رباتها می توانند در هر موقعیت و برای هر منظوری به کار بروند ولی امروزه بسیاری از آنها در محیط های خطرناک ( مانند تشخیص و غیر فعال سازی بمبها ) ، فرآیندهای تولید یا مکانهایی که انسان قادر به حیات نیست ، استفاده می شوند. رباتها می توانند به هر شکل و قیافه ای باشند ولی بعضی از آنها طراحی می شوند تا شبیه انسان به نظر برسند. گفته میشود که این کار به این دلیل صورت می گیرد تا رفتارهای این رباتها که از مردم عادی تقلید میشود ، بیشتر مورد قبول قرار گیرد. تلاش میشود که رباتهای انسان نما بتوانند راه رفتن ، حرف زدن ، شناختن و مخصوصا هر چیزی را که انسان میتواند انجام دهد ، تقلید کنند . خیلی از رباتهای امروزی که از طبیعت الهام گرفته شده اند ، در پهنه رباتهای مقلد موجودات زنده قرار می گیرند.
سیستم دست رباتی سایه
ایده ایجاد ماشینهایی که بتوانند به شکل خودکار کار کنند ، به دوران قدیم بازمی گردد ولی تحقیق اساسی در مورد به کاربرد رساندن و استفاده های بالقوه از رباتها تا قرن بیستم انجام نشده بود. در طول تاریخ بارها خاطر نشان شده است که یک روز رباتها خواهند توانست رفتار انسانها را تقلید کنند و کارها را به شیوه مشابه انسان انجام دهند . امروزه رباتیک یک حوزه از علم با رشد سریع است. ، همزمان با ادامه پیشربتهای تکنولوژی ؛ تحقیق ، طراحی و ساخت رباتهای جدید در خدمت اهداف عملی متعددی در حوزه های خانگی ، صنعتی و نظامی انجام می گیرد. بسیاری از رباتها برای انجام شغلهای خطرناک برای مردم انجام وظیفه می کنند ، مانند کار کردن در خنثی سازی بمب ، یافتن بازمانده های زیر آوارهای غیر پایدار ، مین یابی یا جستجوی کشتی های غرق شده .
رباتیک همچنین به عنوان یک هدف آموزشی در مجموعه چند گانه علم ، تکنولوژی ، مهندسی و ریاضی نیز به کار می رود.
ریشه شناسی
رباتیک از کلمه ربات مشتق شده است . خود کلمه ربات برای اولین بار توسط نویسنده ای از اهالی چکسلواکی به نام کارل چاپک و در نمایشنامه ای به اسم کارخانه ربات سازی روسوم در سال ۱۹۲۰ معرفی شد. کلمه روبات از واژه اسلاوی ” روبوتا ” به دست آمده است که در اصل به معنی کارگر به کار می رود. نمایشنامه در مورد یک کارخانه است که آدم های مصنوعی به نام ربات ها تولید می کند ؛ موجوداتی که می توانند با انسانها اشتباه گرفته شوند و این بسیار مشابه ایده های مدرن امروزی در مورد انسان نماها است. کارل چاپک این کلمه را متعلق به خودش نمی داند ، وی یک نامه کوتاه به قسمت ریشه شناسی لغات در فرهنگ انگلیسی آکسفورد نوشته است که در آن برادرش جوزف چاپک را به عنوان ابداع کننده اصلی این کلمه نام برده است.
مطابق فرهنگ انگلیسی آکسفورد کلمه رباتیک اولین بار در نوشته ای توسط آیزاک آسیموف ، در قسمتی از یک داستان کوتاه علمی تخیلی به نام “دروغگو” به کار برده شد. این داستان اولین بار در مجله علمی تخیلی استوندینگ چاپ شد. در آن هنگام آسیموف خودش نمی دانست که این کلمه به نام او ثبت خواهد شد ؛ وی فکر می کرد همان گونه که علم و تکنولوژی مربوط به وسایل الکترونیکی را الکترونیک می نامند ، پس رباتیک به علم و تکنولوژی مربوط به رباتها اشاره خواهد داشت . آسیموف در بعضی از آثارش خاطر نشان می کند که اولین کاربرد کلمه رباتیک در داستان کوتاه او به نام “سرگردانی” ( مجله علمی تخیلی استوندینگ ، مارس ۱۹۴۲ ) بوده است ولی باید توجه کرد که چاپ اصلی داستان “دروغگو” ده ماه پیش از “سرگردانی” بوده است ، بنابراین عموما داستان قدیمی تر به عنوان منشا کلمه شناخته می شود.
اگر فردی علاقهمند به تکنولوژی هستید یا اخبار روز دنیا را در زمینههای مختلف علمی دنبال میکنید، حتما متوجه شدهاید، همان گونه که امروزه رباتها در بسیاری از مسائل مانند: ” صنعت، پزشکی، آتش نشانی ، حتی در خانهها و ...” به کمک انسانها امده و بسیاری از مشکلات را حل کرده است، تاثیر وسیعی در زندگی آینده انسانها خواهند داشت.
امروزه همان طور که شاهد آن هستیم، خانوادهها چه در ایران و چه در خارج کشور فرزند خود را تشویق به حضور در کلاسهای رباتیک و ساخت رباتها میکنند و همچنین مسابقات رباتها که در زمینههای مختلفی به انجام میرسد، با استقبال خوب و رو به رشدی از سوی اکثر کشورها مواجه میشود.همچنین رشتهی دانشگاهی مهندسی رباتیک و هوش مصنوعی در خارج از کشور با استقبال خوبی از سوی علاقه مندان به این حوزه رو به رو است و زمینههای تحقیقاتی و کاری فراوانی برای مهندسین و فارغ التحصیلان این رشته تدارک دیده اند، زیرا این موضوع برای آنها روشن است، که زندگی امروز و فردای ما، جدا از رباتها امکان پذیر نیست.
برای آشنایی بیشتر با هوش مصنوعی میتوانید به نوشته هوش مصنوعی چیست مراجعه نمایید.
دکتر کارو لوکاس قوکاسیان ،دانشمند برجسته ایرانی و از پژوهشگران به نام سیستمهای هوشمند در ایران بود. زمینهی پژوهشهای او پیشبینی سریهای زمانی، مدلهای عاطفی و منطق فازی است. وی همچنین به عنوان «پدر علم رباتیک ایران» شناخته میشود.صحبتهای ایشان در زمینه رباتیک این جمله را تصدیق میکند که :
یکی از مهمترین دستاوردهای علمی بشر، علم رباتیک است که با رشد روز افزون دانش بشری، بیشتر وارد زندگی انسانها شده و آن را دستخوش تغییر میکند.
رباتیک دقیقا یعنی چه؟
رباتیک علم مطالعه فن آوری مرتبط با طراحی ساخت و اصول کلی و کاربرد رباتها است، که با هدف راحتی انسان و افزایش وقت مفید او به وجود آمده است، به عبارت دیگر رباتیک علم و فن آوری ماشینهای قابل برنامه ریزی، با کاربردهای عمومی میباشد.
هر دستگاه الکترومکانیکی که عمل خاصی را انجام دهد ربات نامیده میشود که میتواند جهت انجام یک وظیفه خاص برنامه ریزی شود.
کلمه ربات اولین بار توسط Karel Capek نویسنده نمایشنامه R.U.R روباتهای جهانی روسیه در سال ۱۹۲۱ ابداع شد. ریشه این کلمه، کلمه چک اسلواکی (robotnic) به معنی کارگر میباشد. تفاوت ربات با انسان از بسیاری جهات قابل چشم پوشی نیست. مثلا خستگی ناپذیری و انجام یک کار تکراری با دقت فراوان و یا کارهایی که توان زیادی نیاز دارند و بازوهای انسان توان لازم برای انجام آن را ندارند به راحتی از عهده رباتها بر میآید.
رباتها میتوانند بسیار ساده و یا با ساختاری پیچیده باشند ولی در همه حالتها ربات، ترکیب علوممکانیک و الکترونیک است.
برخلاف تصور عمومی از رباتها که به عنوان رباتهای انسان نما که تقریباً قابلیت انجام هر کاری را دارند، بیشتر دستگاههای رباتیک در مکانهای ثابتی در کارخانهها بسته شده اند و در فرایند ساخت با کمک کامپیوتر، اعمال قابل انعطاف، ولی محدودی را انجام میدهند.این دستگاه حداقل شامل یک کامپیوتر برای نظارت بر اعمال و عملکرد اسباب انجام دهنده عمل مورد نظر و همچنین ممکن است دارای حسگرها و تجهیزات جانبی باشد.
انواع رباتها
احتمالا این سوال برایتان بهوجود آمده که ایده اصلی ساخت رباتها چگونه شکل می گیرد و هر ربات از چه قسمتهایی تشکیل شده است.
دو نکته در به وجود آمدن و ایده اصلی ربات اهمیت دارد، ابتدا اینکه یک مشکل یا سختی کار وجود دارد و باید حل گردد. دوم اینکه در طبیعت موجودی آن را حل کرده یا نه؟ مثلا تونل زدن زیر خاک یک مشکل بیان میگردد. و در طبیعت یک کرم کوچولو به راحتی میتواند زیر خاک حرکت نماید این دو باعث طراحی و ساخت یک ربات میگردد که به صورت اتوماتیک تونل کنده و پیش میرود.
رباتها همانند کامپیوترها قابلیت برنامه ریزی دارند.بسته به نوع برنامهای که شما به آنها میدهید، کارها وحرکات مختلفی را انجام میدهند. رشتهی دانشگاهی نیز تحت عنوان رباتیک وجود دارد که به مسائلی از قبیل: “سنسورها، مدارات ، فیدبکها،پردازش اطلاعات و بست و توسعه رباتها” میپردازد.رباتها انواع مختلفی دارند از قبیل: “روباتهای شمشیر باز، ربات دنبال کننده خط یا مسیریاب، کشتی گیر، فوتبالیست، رباتهای پرنده و رباتهای خیلی ریز تحت عنوان «میکرو رباتها» و «نانو رباتها» نیز وجود دارند. رباتها برای انجام کارهای سخت و دشواری که بعضی مواقع انسانها از انجام آنها عاجز یا انجام آنها برای انسان خطرناک هستند; مثل: “رباتهایی که در نیروگاههای هستهای وجود دارند” ،استفاده میشوند.کاری که رباتها انجام میدهند، توسط میکرپروسسورها (microprocessors) و میکرو کنترلها(microcontroller) کنترل میشود.
شما با تسلط در برنامه نویسی میکرو پروسسورها و میکروکنترلها، میتوانید دقیقا به ربات بگویید همان کاری را که انتظار دارید، انجام دهد.
بعضی از رباتها، ماشینهای مکانیکی نسبتاً سادهای هستند که کارهای اختصاصی مانند جوشکاری و یا رنگ افشانی را انجام میدهند، که سایر سیستمهای پیچیده تر که بطور همزمان چند کار انجام میدهند، از دستگاههای حسی، برای جمع آوری اطلاعات مورد نیاز برای کنترل کارشان نیاز دارند.حسگرهای یک ربات ممکن است بازخورد حسی ارائه دهند، طوریکه بتوانند اجسام را برداشته و بدون آسیب زدن، در جای مناسب قرار دهند. ربات دیگری ممکن است دارای نوعی دید باشد.، که عیوب کالاهای ساخته شده را تشخیص دهد. بعضی از رباتهای مورد استفاده در ساخت مدارهای الکترونیکی، پس از مکان یابی دیداری علامتهای تثبیت مکان بر روی برد، میتوانند اجزا بسیار کوچک را در جای مناسب قرار دهند.
رباتها دارای سه قسمت اصلی هستند:
۱. مغز که معمولا یک کامپیوتر است.
۲. محرک و بخش مکانیکی شامل موتور، پیستون، تسمه، چرخها، چرخدندهها و …
۳. سنسور که میتواند از انواع بینایی، صوتی، تعیین دما، تشخیص نور و تماسی یا حرکتی باشد.
رباتهایی که امروزه بسیار در حال تکاملند، رباتهای انسان نما (human robotic) هستند، آنها قادرند اعمالی شبیه انسان را انجام دهند.حتی بعضی از آنها همانند انسان دارای احساسات نیز هستند.برخی دیگر اشکال خیلی سادهای دارند.آنها دارای چرخ یا بازویی هستند که توسط میکروکنترلرها یا میکروپروسسورها کنترل میشوند.در واقع میکروکنترلر یا میکرو پروسسور به مانند مغز انسان در ربات کار میکند.برخی از رباتها مانند انسانها وجانوران خون گرم در برخورد و رویارویی با حوادث و مسائل مختلف به صورت هوشمند از خود واکنش نشان میدهند.یک نمونه از این رباتها، ربات مامور است.
برخی رباتها نیز یکسری کارها را به صورت تکراری با سرعت و دقت بالا انجام میدهند، مثل رباتهایی که در کارخانههای خودروسازی استفاده میشوند.این گونه رباتها، کارهایی از قبیل جوش دادن بدنه ماشین ، رنگ کردن ماشین را با دقتی بالاتر از انسان بدون خستگی و وقفه انجام میدهند.بیشتر رباتها امروزه در کارخانهها برای ساخت محصولاتی مانند اتومبیل؛ الکترونیک و همچنین برای اکتشافات زیرآب یا در سیارات دیگر مورد استفاده قرار میگیرد.
بازار کار مهندس رباتیک
همانطور که در قبل گفته شد، پیش بینی میشود که رباتیک یکی از ۱۰ صنعت برتر آینده باشد. کاربرد محصولات رباتیک از محدوده کارخانجات فراتر رفته و در حال ورود به کاربردهای روزمره است.
امروزه کمتر صنعتی را میتوان یافت که در آن از ربات استفاده نشود . بازوهای رباتیکی که بدون استراحت قطعات و محصولات را از نقطهای به نقطهی دیگر جابهجا میکنند، رباتهای جوشکار ، رباتهای رنگرز ، رباتهای بسته بند ، رباتهای تراشکار ، رباتهای چاپگر ، رباتهای کنترل کیفیت ، رباتهای سوراخکار ، رباتهای کنترل دما ، رباتهای هشداردهندهی نشت گاز ، رباتهای غربال ، سانتریفوژهای خودکار و … همگی نمونههایی از رباتها در کارخانهها هستند.کارخانجات برای افزایش سرعت و کیفیت و دقت و هزینهی پایین تر به سمت رباتیکی کردن تمامی قسمتهای کارخانه پیش میروند و در بعضی از قسمتها که برای انسان خطرناک است مانند جوشکاری و رنگ پاشی و سموم شیمیایی ناچار به استفاده از ربات میشوند.
مهندسی رباتیک ارتباط زیادی با مهندسی مکانیک، مهندسی کامپیوتر و مهندسی الکترونیک و علوم کامپیوتر دارد. مهندس رباتیک باید برای ساخت روباتها در این علوم مهندسی مرتبط مسلط باشد به عنوان مثال باید در برنامه نویسی و تنظیم الگوریتم بهینه، طراحی مدارهای الکتریکی و الکترونیکی، طراحی کامپیوتری مدارها، طراحی سیستم آیرودینامیکی و … تبحر و تسلط کافی داشته باشد.مهندس رباتیکبه کسب و کارهای مختلف راه حلهای خودکار و اتوماتیک ارائه میکند تا بتوانند کارآمدتر کار کنند. کار دیگر مهندس رباتیک رفع مشکلات موجود در برنامههای رباتها و ارائه خدمات فنی به مشتریان است.
رباتیک با مکاترونیک تفاوت های بسیاری دارد که در مقاله مهندسی مکاترونیک میتوانید جزییات آن را مطالعه نمایید.
مهندس رباتیک فردی است که پاسخگوی نیاز صنعت در تحقیق و توسعه، طراحی، تولید، نگهداری و تعمیرات رباتها میباشد.
یکی از شاخههای اصلی مهندسی رباتیک را میتوان بخش تحقیقات دانست. بنابراین در بخش رباتیک به متخصصانی نیاز است که تحقیقات کرده ، مفاهیم و کاربردهای جدید را یافته و راههای پیشرفت مفاهیم و کاربردهای موجود را بیابند. میتوان گفت مهندسی رباتیک زمینهای جذاب برای آنانی است که در حوزه تکنولوژی علاقه و استعداد خوبی دارند.
کارمهندس رباتیک، تحقیق و توسعه طرحها، ساخت نمونه روباتها و بررسی کاربردهای مختلف آنها از حوزههای نظامی و خودرو تا حوزه پزشکی و کمک به افراد ناتوان برای رفع مشکلاتشان میباشد. همچنین مهندس رباتیک، رباتهای موجود و توانمندیهایشان را ارتقا داده و اصلاحات لازم را روی آنها انجام میدهد.
آینده شغلی مهندس رباتیک
مهندس رباتیک میتواند در دو حوزه صنعت و آموزش و پژوهش مشغول به کار شود. صنایع خودرو، هوافضا، تولید تجهیزات الکترونیکی، هستهای، معدن، نساجی، کامپیوتر، کشاورزی و … نمونههایی از حوزهی صنعت هستند. علاقهمندان به مشاغل آموزشی وپژوهشی میتوانند با کسب مدارک عالی در این حوزه، در دانشگاهها و مراکز آموزش عالی تدریس کنند. از آنجایی که مهندسی رباتیک رشتهای نوپا در کشورمان ایران میباشد، فرصتهای شغلی خوبی در بخش آموزش عالی وجود دارد.
امروزه بسیاری از صنایع کشور از جمله کارخانههایی مانند فولاد ، خودروسازی ، مواد غذایی و … تقریبا تمام اتوماتیک هستند. اما متاسفانه تمام رباتهای آن وارداتی است و حتی در برخی موارد نصب و کنترل و تعمیر آنها بر عهدهی متخصصان خارجی میباشد. شرکتهای فعال داخلی در حوزه رباتیک صرفا به واردات و در برخی از موارد تعمیرات روباتها میپردازند.
علیرغم شرکت فعال گروههای دانش آموزی و دانشجویی در مسابقات مختلف رباتیک و کسب مقامهای برتر، توجه کافی و هدفمند به استفاده ازاین نیروها در صنایع و بخشهای مختلف کشور برای طراحی، تولید و تعمیر و نگهداری داخلی رباتهای مورد نیاز نمیشود. در سالهای قبل این مسابقات فقط در حد کسب یک مقام بوده ، نه ارتباطی با صنایع کشور داشته و نه تاثیری در تبدیل کردن ایران به یکی از قطبهای رباتیک ایران. کشوری مثل ژاپن که به صورت فعال در بحث تحقیقات رباتیک کار میکند و به دنبال ساخت روباتهای انسان نما است، از لحاظ صنعتی و تولید ربات نیز بسیار پیشرفت کرده است تا جایی که یکی از بزرگترین صادرکنندههای ربات در جهان میباشد.
از دیگر مشکلاتی که در این حوزه وجود دارد، عدم شناخت و آگاهی لازم مردم به خصوص کارفرمایان و صاحبان صنایع از شغل مهندسی رباتیک است. به عنوان مثال برخی از کارفرمایان هنوز اطلاعات کاملی از رشتهی مهندسی رباتیک و توانمندیهای مهندسان رباتیک ندارند و در استخدامهای خود از مهندسان دیگر مانند برق و مکانیک استفاده میکنند.
در کنار این موارد حوزه رباتیک در جهان و ایران یک بخش جدید و رو به رشد است. در کشور ما نیز چند سالی است که رشتهی تخصصی مهندسی رباتیک ایجاد و فارغ التحصیلانی را به بازارکار ارائه کرده است. البته در بخش آموزش ضعفهایی وجود دارد که برای پیشرفت حوزه رباتیک باید رفع شود. یکی از مهم ترین آنها تعداد محدود دانشگاههای دارنده رشتهی مهندسی رباتیک میباشد.
جالب است بدانید که میزان متوسط درآمد سالیانهی یک مهندس رباتیک در آمریکا در سال ۲۰۱۳، حدود ۷۱.۰۰۰ دلار آمریکا و در انگلستان حدود ۵۸.۷۰۰ دلار آمریکا اعلام شده است .
اطلاعات و آمار دقیقی از میزان حقوق مهندسان رباتیک در بخش دولتی و خصوصی کشور در دسترس نمیباشد، ولی در بخش خصوصی میزان حقوق و درآمد مهندسان رباتیک متفاوت است. برای یک مهندس مکاترونیک در یک شرکت، بسته به مهارت و تخصص او در آشنایی با سیستمها و نرم افزارهای کامیپوتری درآمد ماهانه ۲ الی ۳ میلیون تومان برای شروع کار به او پرداخت میشود.
مهارت در نرمافزارهای تخصصی مهندسی رباتیک
با توجه به آنکه شرط ورود به هر شغلی تخصص و مهارت در زمینهی آن شغل است یکی از مهارتهای لازم در مهندسی رباتیک یادگیری نرمافزارهای تخصصی این رشته است.
مهمترین نرمافزارهای تخصصی و کاربردی مهندسی رباتیک
قبلا عامل های خردمند (عقلایی) را به عنوان مرکز ثقل رهیافت هوش مصنوعی مشخص کردیم. در این بخش ، این فرضیه را دقیق تر بررسی میکنیم. خواهیم دید که مفهوم عقلانیت (خردگرایی) میتواند به دامنه وسیعی از عاملهایی که در هر محیطی عمل میکنند، اعمال شود. با توجه به اینکه بعضی از عامل ها بهتر از عامل های دیگر رفتار میکنند، به ایده ی “عامل خردمند” یا “عامل عقلایی” میرسیم. “عامل خردمند” عاملی است که حتی الامکان خوب عمل میکند. عملکرد عامل به ماهیت محیط بستگی دارد. بعضی از محیط ها دشوارتر از محیط های دیگر هستند.
عامل ها و محیط ها
عامل هر چیزی است که قادر است محیط خود را از طریق حسگرها (سنسور ها) درک کند و از طریق محرک ها عمل کند. عامل انسانی دارای چشم، گوش و اعضای دیگری برای حس کردن، و دست، پا و دهان و اعضای دیگر به عنوان محرک هایی برای عمل کردن است. عامل روباتیک ممکن است شامل دوربین ها و مادون قرمر و فاصله سنج برای سنسورها و موتورهای متعددی به عنوان محرک ها باشد. عامل نرم افزاری “بسته های شبکه” ، محتویات فایل و ورودی های صفحه کلید را به عنوان ورودی حسی دریافت میکند و از طریق نوشتن در صفحه نمایش، نوشتن در فایل ها و ارسال بسته های شبکه، عمل میکند. از واژه ادراک (percept) برای ورودی های ادراکی عامل در هر لحظه استفاده میکنیم. دنباله ی ادراک یا توالی ادراک عامل، سابقه ی کامل هر چیزی است که عامل تاکنون درک کرده است. به طورکلی، انتخاب فعالیتی (کنشی) توسط عامل در هر لحظه، میتواندبه کل دنباله ی ادراک تا آن زمان بستگی داشته باشد. اگر بتوانیم فعالیت انتخابی عامل را برای هر دنباله ی ادراکی مشخص کنیم، همه چیز را در مورد عامل مطرح کرده ایم. از نظر ریاضی، میگوییم رفتار عامل توسط تابع عامل توصیف میشود که هر دنباله ی ادراک را به یک فعالیت نقش میکند.
تابع عامل را میتوانیم به صورت جدول نشان دهیم تا هر عاملی را تشریح کند. برای اغلب عامل ها، این جدول بسیار بزرگ خواهد بود، ولی میتوانیم حدی را برای طول دنباله ی ادراک در نظر بگیریم. برای ساخت جدول عامل، تمام دنباله های ادراک را در نظر گرفته فعالیت هایی را که عامل در پاسخ به آنها انجام میدهد، ذخیره میکنیم، البته این جدول یک شی ء خارجی است که عامل را مشخص میکند. تابع عامل مربوط به عامل مصنوعی، به طور داخلی توسط برنامه ی عامل پیاده سازی می شود. این دو ایده را از هم تفکیک میکنیم. تابع عامل یک توصیف ریاضی انتزاعی است، و برنامه عامل، پیاده سازی دقیقی است که در معماری عامل اجرا می شود.
تأکید میکنیم که فرضیه ی عامل، ابزاری برای تحلیل سیسیتم هاست، نه یک ویژگی خاص برای تقسیم دنیا به عامل و غیر عامل ها. ماشین حساب را میتوان عاملی در نظر گرفت که با توجه به “دنباله ادراک” ، “=۲+۲” نماد “۴” را نمایش میدهد. اما این تحلیل منجر به درک ماشین حساب نمیشود. از جهاتی تمام حوزه های مهندسی را می توان طراحی کننده ی محصولات مصنوعی دانست که با دنیا تعامل دارند؛ AI (از نظر مؤلفین) در انتهای این طیف واقع است، که در آنجا، محصولات مصنوعی، منابع محاسباتی ارزشمندی دارند و محیط کار ، نیازمند تصمیم گیری مهم است.
رفتار خوب : مفهوم خردمندی یا عقلانیت
عامل خردمند، عاملی است که رفتار خوب انجام میدهد- از نظر ادراکی، به معنای این است که هر عنصر جدول مربوط به تابع عامل، به درستی پر میشود. روشن است که انجام “رفتار درست”، بهتر از انجام “رفتار نادرست” است، اما معنای “رفتار درست” چیست؟ پاسخ به این پرسش قدیمی را، به روش قدیمی ارائه می دهیم: به در نظر گرفتن نتایج رفتار عامل. وقتی یک عامل در محیطی قرار گرفت، بر اساس آنچه که از محیط دریافت می کند، دنباله ای از فعالیت ها را انجام میدهد. این دنباله از فعالیت ها، موجب میشود که محیط از حالتی به حالت دیگر برود، یعنی محیط از دنباله ای از حالت ها عبور میکند. اگر این دنباله از حالتها مطلوب باشد، آنگاه این عامل به درستی عمل کرده است. برای تعیین مطلوب بودن دنباله ای از فعالیت ها، از مفهوم معیار کارایی استفاده میکنیم، که هر دنباله از حالت های محیط را ارزیابی میکند.
توجه کنید که حرف از حالتهای محیط زدیم نه حالتهای عامل. اگر موفقیت را بر اساس نظر عامل در مورد رضایت خود از کارایی اش تعریف کنیم، عامل می تواند خودش را فریب دهد و کارایی خود را بالا بداند و از آنجا نتیجه بگیریم که با خردمندی کامل عمل کرده است. مخصوصا عامل های انسانی، در مواردی که قرار است راجع به موضوعی تصمیم گیری کنند که در آن تصمیم گیری ، سودی به آنها نمیرسد، سابقه ی بدی دارند (سعی می کنند همه چیز را به نفع خود تمام کنند).
روشن است برای تمام کارها و عامل ها، یک معیار کارایی ثابت وجود ندارد؛ معمولا طراح، یک معیار را برای شرایط خاصی ، مناسب می بیند. این کار، چندان آسان نیست.
• خردمندی یا عقلانیت (rationality)
خردمند بودن در هر زمان به چهار چیز بستگی دارد:
۱٫ معیار کارایی که ملاک های موفقیت را تعریف می کند.
۲٫ دانش قبلی عامل نسبت به محیط.
۳٫ فعالیتهایی که عامل میتواند انجام دهد.
۴٫ دنباله ی ادراک عامل در این زمان.
به این ترتیب میتوانیم عامل خردمند را بصورت زیر تعریف کنیم:
برای هر دنباله از ادراک ممکن، عامل خردمند (عقلایی) باید فعالیتی را انتخاب کند که انتظار میرود معیار کارایی اش را به حداکثر برساند. این کار با توجه به شواهدی که از طریق این دنباله ادراک به دست می آید و دانش درونی عامل، صورت می گیرد.
• همه چیزدانی، یادگیری و خود مختاری
باید بین “همه چیزدانی” و خردمندی تمایز قائل شویم. عامل “همه چیزدان”، خروجی واقعی فعالیت های خودش را می داند و می تواند بر اساس آن عمل کند. اما “همه چیزدان” بودن عامل، غیرممکن است. این مثال را در نظر بگیرید: من روزی در حال قدم زدن با احمد هستم و دوست قدیمی خود را در آن طرف خیابان می بینم. هیچ ترافیکی وجود ندارد و “خردمندی” حکم میکند که در عرض خیابان حرکت کنم. در همین حال، در فاصله ۳۳۰۰۰ فوتی، یک هواپیمای مسافری با هواپیمای باری برخورد میکند و قبل از اینکه به آن طرف خیابان بروم، نقش بر زمین میشوم. آیا عبور از عرض خیابان، عقلایی (خردمندی) نبود؟ بعید است کسی بگوید که عبور از عرض خیابان حماقت بوده است.
این مثال نشان میدهد که خردمندی با “کمال مطلوب” متفاوت است. خردمندی، کارایی مورد انتظار را به حداکثر میرساند، در حالیکه کمال مطلوب، کارایی واقعی را به حداکثر می رساند. دست برداشتن از خواسته ی “کمال مطلوب”، فقط به معنای منصف بودن نسبت به عامل ها نیست. موضوع این است که، اگر انتظار داشته باشیم عامل، بهترین فعالیت را انجام دهد، نمیتوان عاملی طراحی کرد که با این مشخصات جور درآید، مگر اینکه کارایی جام جهان نما یا ماشین های زمان را بهبود بخشیم.
تعریفی که ما از خردمندی ارائه دادیم، نیاز به “همه چیزدانی” ندارد. زیرا انتخاب عقلایی (در یک زمان) فقط به “دنباله ادراک” در آن زمان بستگی دارد. باید مطمئن باشیم که ندانسته اجازه ندهیم که عامل به فعالیت های غیرهوشمند بپردازد. انجام فعالیت به منظور اصلاح ادراک های آینده، که گاهی جمع آوری اطلاعات نام دارد، بخش مهمی از خردمندی است. مثال دیگری از جمع آوری اطلاعات، از طریق اکتشاف صورت میگیرد. این تعریف، مستلزم آن است که عامل نه تنها باید اطلاعات را جمع آوری کند، بلکه باید از آنچه که درک میکند، یاد بگیرد. پیکربندی اولیه ی عامل می تواند دانشی از محیط را ارائه کند، اما هر چه که عامل تجربه بیشتری کسب میکند، ممکن است پیکربندی آن تغییر کند. موارد زیادی وجود دارد که محیط از قبل شناخته شده است. در این موارد لازم نیست عامل درک کند یا بیاموزد، زیرا به درستی عمل خواهد کرد. البته چنین عاملهایی خیلی آسیب پذیر هستند.
اگر عامل به جای ادراکات خود، براساس دانش قبلی طراح خود رفتار کند، می گوییم عامل خودمختار نیست. عامل خردمند باید خودمختار باشد. باید یاد بگیرد که نقص دانش قبلی را چگونه جبران کند. به عنوان یک موضوع عملی، عامل در ابتدا به خودمختاری کامل نیاز ندارد: وقتی عامل تجربه ای ندارد یا تجربه کمی دارد، باید به طور تصادفی عمل کند، مگر اینکه طراح به آن کمک کند. لذا، همان طور که تکامل حیوانات ، واکنش های ذاتی را برای آنها ایجاد میکند تا بیشتر زنده بمانند و به یادگیری خود بیفزایند، منطقی است که بتوان یک عامل هوش مصنوعی را ایجاد کرد که علاوه بر دانش اولیه، قدرت یادگیری داشته باشد. پس از تجربیات کافی با محیط خود ، رفتار عامل خردمند میتواندمستقل از دانش اولیه اش باشد. لذا، توانایی یادگیری منجر به طراحی عاملی میشود که در محیط های مختلف، موفق است.
داشتن اطلاعات در مورد حالت فعلی محیط، همیشه برای تصمیم گیری در مورد عملی که باید انجام گیرد، کافی نیست. به عنوان مثال، در جاده، تاکسی می تواند به چپ، راست یا مستقیم برود. تصمیم گیری درست، به مقصد تاکسی بستگی دارد. به عبارت دیگر، علاوه بر توصیف حالت فعلی، عامل به اطلاعات هدف نیاز دارد که موقعیت مطلوب را توصیف می کند. بعنوان مثال، می توان به مقصد مسافر اشاره کرد. “برنامه عامل” می تواند این اطلاعات را با اطلاعاتی دزبازه نتایج فعالیتهای ممکن ترکیب کندتا فعالیتی را برای رسیدن به هدف انتخاب نماید.
گاهی انتخاب فعالیت در عامل مبتنی بر هدف آسان است (وقتی که رضایت از هدف، بلافاصله از یک فعالیت به دست می آید). گاهی این انتخاب پیچیده خواهد بود (وقتی که عامل باید دنباله های طولانی را در نظر بگیرد تا راهی برای دستیابی به هدف پیدا کند). جست وجو و برنامه ریزی ، حوزه های فرعی AI هستند که دنباله ای از فعالیت ها را برای دستیابی عامل به هدف، پیدا می کنند.
توجه کنید که این نوع تصمیم گیری با “قوانین شرط فعالیت” که شرح آنها گذشت متفاوت است، به طوری که باید آینده را در نظر گرفت: “اگر چنین و چنان کنم، چه اتفاقی می افتد؟” ، “این مراحل مرا خوشحال می کند”. در طراحی های عامل واکنشی، این اطلاعات صریحا نمایش داده نمی شوند، زیرا قوانین داخلی، مستقیما از ادراکات به فعالیت ها نگاشت می شوند. عامل واکنشی، وقتی ترمز می کند که لامپ های ترمز را ببیند. در اصل عامل مبتنی بر هدف نتیجه می گیرد که اگر چراغ ترمز اتومبیل جلویی روشن شود، سرعت آن کاهش می یابد. با توجه به چگونگی تکامل جهان، تنها عملی که منجر به برخورد با اتومبیل دیگر نمیشود، ترمز کردن است.
گرچه عامل مبتنی ببر هدف کارایی چندانی ندارد، قابلیت انعطاف آن بیشتر است. زیرا دانشی که از تصمیمات آن پشتیبانی می کند، صریحا نمایش داده می شود و قابل اصلاح است. برای عامل واکنشی، باید بسیاری از “قوانین شرط فعالیت” را بازنویسی کنیم. رفتار عامل مبتنی بر هدف می تواند تغییر کند تا به هدف مورد نظر برسد.
♦ عامل های مبتنی بر سودمندی (utility-based agents)
در بسیاری از محیط ها، اهداف، برای تولید رفتاری با کیفیت بالا کافی نیستند. بعنوان مثال، چندین دنباله از فعالیت ها وجود دارند که تاکسی را به مقصد می رسانند، اما بعضی از آنها سریع تر، امن تر، مطمئن تر یا ارزانتر از دنباله های دیگر است. اهداف آنها، فقط ملاک ناپخته ای را بین وضعیت “رضایت” و “نارضایتی” ارائه میکنند، در حالیکه معیار کارایی عمومی باید مقایسه ای بین وضعیت های دنیای متفاوت (با دنباله حالات) را براساس چگونگی رضایت عامل، در صورت نائل شدن به هدف ارائه کند.
چون “رضایت” اساس علمی ندارد، دانشمندان کامپیوتر و اقتصاد از واژه ی “سود” یا “سودمندی” استفاده می کنند. “معیار کارایی” به هر دنباله از حالتهای محیط، امتیازی را نسبت می دهد، و به این ترتیب می تواند بین مسیرهای مطلوب تر و نامطلوب برای رسیدن به مقصد تاکسی، تمایز قائل شود. تابع سودمندی عامل، معیار کارایی را در داخل عامل تعیین می کند. اگر “تابع سودمندی داخلی” و “معیار کارایی خارجی” سازگار باشند، آنگاه عاملی که فعالیت هایی را برای ماکزیمم کردن سودمندی خود انتخاب می کند، خردمندانه عمل می کند.
این روش، تنها روش خردمند بودن نیست، اما همانند عامل های مبتنی بر هدف، عامل های مبتنی بر سودمندی از نظر قابلیت انعطاف و یادگیری، امتیازات زیادی دارند. علاوه بر این، در دو مورد اهداف چندان روشن نیستند، ولی عامل مبتنی بر سودمندی هنوز میتواند تصمیمات خردمندانه بگیرد.
اولا، وقتی اهداف با هم متضاد باشند فقط بعضی از آنها قابل دستیابی هستند، که در این مورد تابع سودمندی، توازن مناسبی را بین اهداف متضاد برقرار میکند. ثانیا، وقتی چندین هدف وجود دارند که عامل میتواندبرای دستیابی به آنها کمک کند،ولی هیچ کدام از آنها با اطمینان قابل دستیابی نباشند، تابع سودمندی میتواند احتمال موفقیت اهداف را بر حسب اهمیت آنها ، افزایش دهد.
خاصیت “پاره ای قابل مشاهده” و خاصیت اتفاقی، در سراسر دنیای واقعی وجود دارد. و در نتیجه، تصمیم گیری تحت شرایط عدم اطمینان انجام می شود. از نظر تکنیکی، عامل خردمند مبتنی بر سودمندی، فعالیتی را انتخاب میکند که سود مورد انتظار مربوط به نتایج آن فعالیت، ماکزیمم باشد. منظور از سود مورد انتظارف سودی است که عامل انتظار دارد بطور میانگین، با توجه به احتمالات و سود هر یک از نتایج، به دست آورد. عاملی که دارای یک “تابع سودمندی” صریح است، می تواند تصمیم خردمندانه اتخاذ کند. برای این تصمیم گیری ،از یک الگوریتم همه منظوره استفاده میکند که به تابع سودمندی خاصی بستگی ندارد.
ماهیت محیط های عامل های هوشمند
برای ساخت عاملهای خردمند، ابتدا باید راجع به محیط های کار فکر کنیم که “مسئله هایی” هستند که عاملهای هوشمند باید آنها را حل کنند. ابتدا چگونگی مشخص کردن محیط کار را بررسی میکنیم، سپس نشان خواهیم داد که محیط های کار، تنوع زیادی دارند. هر نوع محیط وظیفه، مستقیما، طراحی مناسب “برنامه ی عامل” را تحت تاثیر قرار میدهد.
تعیین کردن محیط کار
تعیین نوع عامل، معیار کارایی، محیط، حسگرها (سنسورها) و محرک ها را تحت عنوان محیط کار دسته بندی می کنیم. برای خلاصه ، این ها را به نام PEASمی خوانیم. اولین قدم در طراحی عامل، مشخص کردن محیط کار آن است. برای مثال، از مسئله ی “راننده تاکسی خودکار” (اتوماتیک) استفاده میکنیم. توجه کنید که تاکسی خودکار مورد بحث ما، خارج از قابلیت های فناوری فعلی است. وظیفه رانندگی، محدودیتی در ترکیب شرایط ندارد. هر یک از عناصر محیط کار را بیشتر مورد بحث قرار میدهیم.
معیار کارایی مربوط به راننده خودکار چییست؟ کیفیت های مطلوب عبارتنداز: رسیدن به مقصد درست، کم بودن مصرف سوخت و استهلاک، کم کردن زمان مسافرت و هزینه، کم کردن نقض قوانین ترافیک و اذیت کردن سایر رانندگان، حداکثر امنیت و راحتی مسافر، حداکثر سود. بدیهی است که بعضی از این اهداف متضاد هستند و باید متوازن شوند.
محیط تاکسی کجاست؟ هر راننده تاکسی باید با جاده ها سروکار داشته باشد، از جاده های یک طرفه تا بزرگ راه ها. جاده ها شامل ترافیک دیگری است، مثل عابرین پیاده، حیوانات، کارهای جاده ای، اتومبیل پلیس، چاله ها و دست اندازها. تاکسی باید با مسافران واقعی و بالقوه نیز سروکار داشته باشد. انتخاب های اختیاری نیز سر راه تاکسی وجود دارند. تاکسی ممکن است در سمت راست یا چپ حرکت کند، یا در جایی حرکت کند که برف عامل مهمی است. بدیهی است که هر چه محیط محدودتر باشد، مسئله طراحی آسانتر خواهد بود.
محرک هایی که برای راننده خودکار مهیا هستند، شامل آنهایی است که برای راننده انسانی فراهم است: کنترل موتور از طریق گاز، و کنترل مسیر و ترمز. علاوه براین باید با نمایش خروجی در نمایشگر یا دستگاه صوتی، با مسافران صحبت کند، با وسایل نقلیه دیگر ارتباط برقرار کند و غیره.
تاکسی برای رسیدن به هدف خود در محیط رانندگی، باید موقعیت و سرعت فعلی خود را بداند. لذا حسگرهای اصلی آن شامل یک یا چند دوربین تصویربرداری قابل کنترل، سرعت سنج و کیلومتر شمار است. برای کنترل مناسب تاکسی، به خصوص در سر پیچ ها، باید شتاب سنج داشته باشد. باید از وضعیت مکانیکی تاکسی خبر داشته باشد، لذا نیاز به حسگر های موتور، سوخت و سیستم الکتریکی است. باید ابزارهایی داشته باشد که در تاکسی معمولی وجود ندارد: سسیستم ماهواره تعیین موقعیت جهانی (GPS) که اطلاعات مربوط به موقعیت را به همراه یک نقشه در اختیار آن قرار می دهد، حسگرهای مادون قرمز یا سونار، تا فاصله آن را از سایر وسایل نقلیه مشخص کند. نیاز به صفحه کلید یا میکروفون دارد تا با مسافران ارتباط برقرار کند و مسافران مقصد خود را اعلان کنند.
عامل های نرم افزاری (یا روبات های نرم افزاری یا softbots ) در حوزه های وسیع و متعددی وجود دارند. یک روبات نرم افزاری را در نظر بگیرید که برای شبیه سازی پرواز هواپیمای بزرگ طراحی شده است. شبیه ساز شامل محیط پیچیده و با جزئیات زیاد است که حاوی هواپیما ها و عملیات زمینی است و عامل نرم افزاری باید فعالیت های متنوعی را در زمان بی درنگ انتخاب کند. برای این کار باید توانایی پردازش زبان طبیعی را داشته باشد، باید بیاموزد که هر مشتری به چه چیزی علاقمند است، و نقشه اش را بطور پویا (دینامیک) تغییر دهد. اینترنت محیطی است که پیچیدگی آن با دنیای فیزیکی برابری می کند و سکنه ی آن شامل عامل های مصنوعی متعددی هستند.
خواص محیط های کار (task environment)
بدیهی است که حدود محیط های کار AI بسیار گسترده است. می توانیم محیط های کار را به چند بعد تقسیم کنیم. این ابعاد، طراحی مناسب عامل و قابلیت اجرای هر خانواده از تکنیک ها را برای محیط عامل تعیین میکنند. این ابعاد عبارتنداز:
• “کاملا قابل مشاهده” در مقابل “پاره ای قابل مشاهده” (Fully observable vs. partially observable) :
اگر سنسور ها یا حسگرهای عامل، در هر زمان امکان دستیابی کامل به حالت محیط را فراهم کنند، می گوییم آن محیط کاملا قابل مشاهده است. محیط وظیفه، وقتی کاملا قابل مشاهده است که حسگرها تمام جنبه های مرتبط با فعالیت را تشخیص دهند. مرتبط بودن، به معیار کارایی بستگی دارد، محیط های کاملا قابل مشاهده، راحت هستند، زیرا لازم نیست عامل هیچ “حالت داخلی” را برای ردیابی دنیای خارج نگهداری کند. محیط ممکن است به دلیل وجود حسگرهای شلوغ و غیر دقیق ، از دست دادن بخشی از حالت توسط حسگر، کاملا قابل مشاهده نباشد.به عنوان مثال، تاکسی خودکار نمیتواند ببیند که رانندگان دیگر در حال فکر کردن هستند. اگر عامل فاقد سنسور باشد، آنگاه محیط آن غیر قابل مشاهده است. ممکن است تصور کنید که در اینگونه موارد، عامل نتواند به هدف خود برسد، اما اینطور نیست.
• تک عاملی در برابر چند عاملی (Single agent vs. multiagent) :
تمایز بین محیط های تک عاملی و چند عاملی، ساده به نظر می رسد. به عنوان مثال، عاملی که جدول کلمات متقاطع را به تنهایی حل می کند، بدیهی است که در محیط تک عاملی قرار دارد. در حالیکه عاملی که شطرنج بازی میکند در محیط دو عاملی قرار دارد. نکات ظریفی وجود دارد، که باید بررسی شود. اولا توضیح دادیم که چگونه یک موجودیت، به عنوان یک عامل در نظر گرفته می شود، ولی توضیح ندادیم که کدام موجودیت ها باید به عنوان عامل دیده شوند. آیا عامل A (مثل راننده تاکسی) باید با شی ء B (وسیله نقلیه دیگر) به عنوان یک عامل رفتار کند، یا میتواند با آن به عنوان شی ئی برخورد کند که براساس قوانین فیزیکی رفتار می کند، مثل موج ساحل یا حرکت برگها در اثر باد؟ نکته مهم این است که آیا بهتر است رفتار B به عنوان ماکزیمم کننده ی معیار کارایی توصیف شود که مقدار آن به رفتار عامل A بستگی دارد یا خیر. بعنوان مثال، در شطرنج، رقیب موجودیت B سعی میکندمعیار کارایی را به حداکثر برساند، و براساس قاعده شطرنج، معیار کارایی عامل A به حداقل برسد. لذا، شطرنج، یک محیط چند عاملی رقابتی است. از طرف دیگر، در محیط رانندگی تاکسی، اجتناب از تصادف ها، میزان کارایی تمام عامل ها را افزایش می دهد و در نتیجه ، این محیط یک محیط چندعاملی همیاری جزئی است. به این دلیل که، مثلا فقط یک اتومبیل می تواند فضای پارک را به خود اختصاص دهد. مشکلاتی که در طراحی عامل در محیط چند عاملی رخ میدهد، متفاوت از محیط تک عاملی است. به عنوان مثال، در محیط های چند عاملی، ارتباطات غالبا به عنوان رفتار عقلایی عامل ها ظاهر می شود. در بعضی از محیط های رقابتی، رفتار تصادفی، عقلایی است، زیرا مشکلات قابلیت پیش بینی را ندارند.
• قطعی در مقابل اتفاقی (Deterministic vs. stochastic) :
اگر حالت بعدی محیط کاملا توسط حالت فعلی و عملی که عامل در حال انجام آن است، کاملا قابل تعیین باشد، می گوییم این محیط، قطعی است، وگرنه این محیط اتفاقی است. در اصل، عامل نباید در یک محیط قطعی و کاملا قابل مشاهده، نگران عدم اطمینان باشد. (در تعریف ما، عدم اطمینان ناشی از سایر عامل ها را در محیط چند عامل، نادیده می گیریم؛ بنابراین، در یک بازی حتی اگر هیچ عاملی نتواند فعالیت های عامل های دیگر را پیش بینی کند، این بازی میتواند قطعی باشد). اگر محیط پاره ای قابل مشاهده باشد، ممکن است اتفاقی به نظر برسد. بعضی از وضعیت های واقعی، آنقدر پیچیده هستند که نگهداری تمام جنبه های مشاهده نشده ی آن، غیر ممکن است؛ برای اهداف عملی، باید با آنها بصورت غیر قطعی یا اتفاقی رفتار کرد. اگر محیطی کاملا قابل مشاهده نباشد یا غیر قطعی باشد، می گوییم این محیط غیر قابل اعتماد یا نامطمئن است. منظور از واژه ی “غیر قطعی” این است که عدم اعتماد نسبت به نتایج، بر حسب احتمالات تعیین میشود؛ محیط غیر قطعی، محیطی است که در آن، فعالیت ها بر اساس نتایج ممکن مشخص می گردد، ولی هیچ احتمالی به آنها نسبت داده نمیشود. توصیف های محیط غیر قطعی، معمولا همراه با معیارهای کارایی است که برای موفقیت عامل در تمام نتایج ممکن از فعالیت های خود، ضروری است.
• مرحله ای در مقابل ترتیبی (Episodic vs. sequential) :
در یک محیط کار مرحله ای (تقسیم پذیر) ، تجربه ی عامل به چند بخش اتمیک و یکپارچه تقسیم می شود. در هر مرحله، عامل چیزی را درک میکند و یک عمل را بر اساس آن انجام می دهد. مرحله ی بعدی، به فعالیتهای انجام شده در مراحل قبل بستگی ندارد. بسیاری از وظایف طبقه بندی، مرحله ای هستند. برای مثال، عاملی که باید قطعات معیوب را در خط مونتاژ علامت گذاری کند، براساس قطعه ی فعلی تصمیم میگیرد، و این تصمیم گیری ربطی به تصمیم گیری های قبلی ندارد. علاوه براین،تصمیمی که بر روی قطعه یفعلی گرفته میشود، تاثیری در معیوب بودن قطعه ی بعدی ندارد. از طرف دیگر در محیط های ترتیبی یا پی در پی، تصمیم فعلی میتواند برر تمام تصمیمیات بعدی موثر باشد. شطرنج و رانندگی تاکسی، محیط های ترتیبی دارند: در هر دو مورد فعالیت های کوتاه مدت میتواند نتایج دراز مدتی داشته باشد. محیط های مرحله ای خیلی ساده تر از محیط های ترتیبی هستند، زیرا لازم نیست عامل درباره آینده فکرکند.
• ایستا در مقابل پویا (Static vs. dynamic) :
اگر محیط در طول عمر عامل تغییر کند، می گوییم آن محیط برای آن عامل پویا ، وگرنه ایستا است. کار کردن در محیط های ایستا ساده است، زیرا لازم نیست عامل در هنگام تصمیم گیری، دنیا را ببیند و لازم نیست نسبت به زمان گذشته نگران باشد. محیط های پویا بطور پیوسته از عامل سوال میکنند که چه کاری می خواهد انجام دهد. اگر هنوز تصمیم نگرفته باشد، معنایش این است که تصمیم گرفته است کاری انجام ندهد. اگر محیط با گذر زمان تغییر نکند، ولی امتیازات کارایی عامل تغییر کند، می گوییم محیط نیمه پویا است. رانندگی تاکسی پویا است. اتومبیل های دیگر و خود تاکسی در حال حرکت هستند، در حالیکه الگوریتم رانندگی باید برای مرحله بعدی تصمیم بگیرد. اگر در بازی شطرنج فقط زمان مطرح باشد، نیمه پویا است.
• گسسته در مقابل پیوسته (Discrete vs. continuous) :
تمایز بین وضعیت گسسته و پیوسته می تواند به حالت محیط، اداره کردن زمان، و به ادراکات و فعالیت های عامل اعمال شود. به عنوان مثال، محیط گسسته مثل بازی شطرنج دارای چند حالت مجزای متناهی است. شطرنج دارای مجموعه گسسته ای از ادراکات و فعالیت هاست. رانندگی تاکسی یک مسئله حالت پیوسته و زمان پیوسته است: سرعت و مکان تاکسی و سایر وسایل نقلیه. از طریق بازه ای از مقادیر پیوسته عبور می کند و این کار را بطور یکنواخت در طول زمان انجام می دهد.
• شناخته شده در مقابل ناشناخته (Known vs. unknown) :
به عبارت دقیق تر، این تمایز به خود محیط مربوط نمیشود، بلکه به حالت دانش عامل در مورد “قوانین فیزیکی” محیط مربوط می شود. در محیط شناخته شده، نتایج مربوط به تمام فعالیت ها داده می شود. روشن است اگر محیط ناشناخته باشد عامل باید یاد بگیرد که این محیط چگونه کار می کند، تا بتواند تصمیمات درستی اتخاذ کند. توجه کنید که تمایز بین محیط های شناخته شده و ناشناخته، مثل تمایز بین محیط های کاملا “قابل مشاهده” و “پاره ای قابل مشاهده” نیست. ممکن است یک محیط شناخته شده ، بطور پاره ای قابل مشاهده باشد. برعکس، محیط ناشناخته میتواند کاملا قابل مشاهده باشد.
عامل هوشمند یا کارگزار هوشمند (به انگلیسی: Intelligent agent)، در مبحث هوش مصنوعی به موجودی گفته میشود که در یک محیط، اطراف خود را شناخته و اعمالی را روی محیط انجام میدهد و کلیه اعمالی که انجام میدهد در جهت نیل به اهدافش میباشد. این سیستمها امکان یادگیری دارند و سپس از دانش اکتسابی خود برای انجام اهداف خود استفاده میکنند. این عامل ها ممکن است بسیار ساده یا پیچیده باشند. بطور مثال ماشینهای کوکی که با برخورد به دیوار، راه خود را عوض میکنند نمونهای از عامل های هوشمند هستند.
تعریف عامل:
عامل هر چیزی است که میتواند محیطش را از طریق حسگرها درک کند و بر روی محیطش از طریق عملکنندهها تأثیر گذارد. یک عامل انسانی دارای حسکنندههایی از قبیل چشم، گوش، لامسه و امثال آن میباشد. و میتوان از دست، پا، صحبت کردن و اعمال ارادی به عنوان عملکنندهها نام برد. ورودی یک عامل نرمافزاری میتوانند چندین متغیر باشد که مقدار آنها را عامل میخواند سپس بر اساس مکانیزم تصمیمگیری یک تصمیم اخذ میکند و عملگرهای آن میتوانند دستورهای مقداردهی چند متغیر دیگر باشد. به عنوان مثال فرض کنید یک عامل قرار است متغیر x را بخواند و توان دوم آن را حساب کند و در y قرار دهد. این عامل x را میخوانند و سپس توان دوم آن را حساب میکند و در y قرار میدهد.
نحوه کار عامل:
یک عامل چگونه باید بفهمد که بهترین عمل ممکن چیست؟ عمل درست عملی است که باعث شود عامل موفقترین باشد. این امر ما را با مسئله تصمیمگیری در مورد چگونگی و زمان ارزیابی کردن موفقیت عامل روبرو میکند. اصطلاح میزان کارایی برای موفقیت عامل تعریف میکنیم. گفتنی است که میزان کارایی برای عاملهای مختلف متفاوت میباشد. نکته خیلی مهم این است که میزان کارایی یک عامل باید بر اساس محیط تعریف شود. به عنوان مثال فرض کنیم که یک عامل کارش جمعآوری آشغالها از یک اتاق و دفع آنها باشد، اگر عامل میزان کارایی اش بر حسب اشغال جمع شده تعریف شود آنگاه عامل میتواند آشغالها را جمع کند و سپس دوباره در اباق بریزد تا بهترین کارایی را کسب کند. اما اگر میزان کارایی بر اساس محیط تعریف شود آنگاه عامل یک بار کار تمیز کردن را انجام میدهد. پس یک عامل محیطش را حس میکند و سپس بر اساس آن تصمیم میگیرد. این مستلزم آن است که با عامل خود مختار و انواع محیطها آشنا شویم.
عامل خود مختار
به عاملی خود مختار میگوییم که تصمیمگیری اش بر اساس ادراکاتش باشد نه بر اساس دانش تزریق شده به آن. در واقع هر چه دانش قبلی یک عامل بیشتر باشد از خودمختاری آن کاهش مییابد و هر چه دانش قبلی کمتر باشد و مکانیزم یادگیری عامل قوی تر باشد، آن عامل خود مختار تر است.
انواع محیط ها
قابل مشاهده و غیر قابل مشاهده: اگر عامل به کل محیط دسترسی داشته باشد و بتواند آن را حس کند میگوییم محیط قابل مشاهده است، در غیر این صورت آن را غیر قابل مشاهده یا تا حدودی قابل مشاهده می نامیم. مثلاً در محیط عامل شطرنج باز کل محیط قابل مشاهده است. طبیعی است که یک مسئله با محیط قابل مشاهده برای طراحان عاملها مطلوب تر میباشد.
قطعی و غیر قطعی: اگر بتوان حالت بعدی را از حالت فعلی، عمل فعلی و کنشهایی که تاکنون انجام شده به دست بیاوریم، میگوییم که محیط قطعی است. بازهم میتوان از بازی شطرنج برای محیط قطعی مثال زد، چون با محیط فعلی و حرکت فعلی میشود حالت بعدی را به صورت دقیق یافت. قابل توجه است که بدانیم اگر محیط کاملاً قابل مشاهده نباشد آنگاه قطعی نخواهد بود. اما اگر با یک حرکت ممکن باشد به چندین حالت برویم محیط غیر قطعی است.
دورهای یا غیر دوره ای: اگر هر دوره از دورههای دیگر مستقل باشد میگوییم محیط دورهای است. مانند دورههای مختلف در مذاکرات چند عامله. محیطهای غیر دورهای به عنوان محیطهای ترتیبی نیز یاد میشوند.
ایستا و پویا: اگر محیط در زمان تصمیمگیری عامل تغییر کند آنگاه محیط پویا است. و در غیر آن صورت محیط ایستا است. اما اگر محیط در زمان تصمیمگیری ثابت بماند اما زمان، کارایی عامل را کاهش دهد، محیط را نیمه پویا مینامیم.
گسسته و پیوسته: اگر مشاهدات و کنشهای مختلف مجزا و تعریف شده باشند، محیط پیوسته است. مانند شطرنج. اما یک عامل بهینه ساز معادلات در محیط پیوسته کار میکند.
ساختار عامل های هوشمند
تا کنون در مورد محیطها و کلیات مربوط به عاملها صحبت کردیم. حال نوبت بررسی ساختارهای مختلف عاملها است. مهمترین وظیفه ما طراحی برنامه عامل است. برنامه عامل تابعی است که ادراکات را به یک عملها نگاشت میکند. معماری عامل ساختاری است که برنامه محاسباتی عامل تر روی آن پیادهسازی میشود. پس در کل معماری از طریق حسگرها ورودی را میگیرد، توسط برنامه تصمیم میگیرد و در نهایت با عملگرها عمل میکند و روی محیط تأثیر میگذارد.
عامل های واکنشی ساده
در این گونه عاملها سعی بر این است که به ازای هر حالت ممکن در دنیا یک عمل مناسب انجام دهیم. برای این کار میتوانیم حالت محیط را در ستون اول یک جدول قرار دهیم و عمل مربوط به آن را در ستون دوم نکه داری کنیم. به چنین عاملی وابسته به جدول نیز میگویند. و به این جدول، جدول حالت-قانون نیز میگویند. در همان ابتدا مشخص میشود که برای طراحی چنین عاملی محیط باید کاملاً قابل مشاهده باشد. مهمترین مشکلی که در راه طراحی این عامل به وجود میآید این است در مسائل دنیای واقعی پر کردن چنین جدولی غیرممکن است. مثلاً برای شطرنج ۳۵۱۰۰ حالت مختلف برای محیط وجود دارد. حال اگر فرض کنیم توانایی پر کردن جدول را داشته باشیم، آنگاه اولا حافظه لازم را نخواهیم داشت و ثانیا جستجو جهت یافتن جواب زمان زیادی خواهد گرفت. ساختار این عامل در شکل زیر دیده میشود.
به هر موجودیت که از طریق گیرنده ها و سنسورهایش محیط اطراف خود را مشاهده نموده و از طریق اندام های خود در آن محیط عمل مینماید (بر روی آن محیط تاثیر میگذارد) عامل (Agent) میگویند. برای مثال انسان به عنوان یک عامل از گوش ها، چشم ها و دیگر اندام های خود جهت دریافت اطلاعات از محیط استفاده کرده و از طریق دست و پا و زبان برای عمل نمودن در همان محیط استفاده مینماید. به همین ترتیب یک عامل رباتیک نیز از سنسورهای خود به عنوان دریافت کننده و از بازو های خود به عنوان عمل کننده، در محیط اطراف استفاده مینماید.
هر موجودیت که نسبت به مشاهدات خود از محیط اطراف واکنش نشان میدهد را عامل مینامند.
عامل هوشمند (Rational Agent)
عاملی است که در محیط خود کار صحیح را انجام میدهد. قطعا انجام کار صحیح بهتر از انجام کار اشتباه است! اما سوالی که پیش می آید این است که براستی تعریف کار صحیح چیست؟
در حال حاضر میتوان بطور تقریبی اینگونه به این سوال پاسخ داد که کار صحیح کاریست که باعث کسب موفقیت توسط عامل هوشمند میشود. با این حال توجه داشته باشید که همین تعریف تقریبی هم ما را با دو سوال چگونه و چه زمان در ابهام باقی میگذار. اگر اینگونه تفسیر نمایید که چگونه به موفقیت برسیم؟ و چه زمان به موفقیت رسیده ایم؟ این ابهام برای شما ملموس تر خواهد شد.
برای رفع ابهام در مورد موفقیت عامل هوشمند، مفهومی با عنوان اندازه گیری عملکرد یا performance measure تعریف میشود. اندازه گیری عملکرد در واقع مجموعه ای از قوانین هستند که ما به عنوان طراحان یا شاهدان عملکرد عامل هشومند، وضع مینماییم تا بتوانیم عامل هوشمند خود را مورد سنجش قرار دهیم.
فرض کنید که ما بعنوان سازنده، عامل هوشمندی ساخته ایم که در واقع یک ربات نظافت گر خودکار میباشد. برای مثال یک معیار اندازه گیری عملکرد برای این ربات میتواند میزان جمع آوری گرد غبار در طول مدت یک شیفت کاری باشد. یا مثلا برای توانمند تر ساختن ربات میتوان مقدار انرژی الکتریکی مصرف شده و سر و صدای تولید شده توسط آن را به مجموعه معیار های اندازه گیری اضافه نمود. برای مثال میتوانیم بگوئیم اگر ربات ما در طول یک ساعت حداقل x لیتر غبار جمع آوری و کمتر از y انرژی مصرف نمود، کار خود به درستی انجام داده است.
تفاوت ِعقلانیت و علم لایتناهی
نکته ای که از اهمیت بسیاری برخوردا است، تمیز دادن بین دو مفهوم عقلانیت و علم لایتناهی میباشد. یک عامل با علم لایتناهی نتیجه خروجی تمامی اعمال خود را میداند که بسیار هم عالی و خوب است! اما در دنیای واقعی عملا همچین عاملی وجود نخواهد داشت! به مثالی که در ادامه آماده توجه فرمایید.
شما در یک منطقه دورافتاده و بی آب و علف هستید که ناگهان یک دختر بسیار زیبا را در طرف دیگر خیابان مشاهده مینمایید. هیچ ماشینی در حال تردد در خیابان نیست و شما نیز مجرد و تنها هستید! بنظر میرسد که با توجه به شرایط اطراف عاقلانه ترین کار این است که از عرض خیابان رد شده، به سراغ دختر زیبا بروید و او را به صرف یک نوشیدنی دعوت نمایید. در همین لحظه در ارتفاع ۳۳۰۰۰ پایی یک هواپیمای بار بری در حال عبور از منطقه شماست که ناگهان درب هواپیما کنده شده و به سمت زمین پرتاب میشود و با شما برخورد میکند. نتیجتا قبل از اینکه شما به طرف دیگر برسید مانند گوجه فرنگی در کف خیابان له خواهید شد!
سوالی که پیش می آید این است که تصمیم شما برای عبور از خیابان یک تصمیم اشتباه و غیر هوشمندانه بوده است؟ آیا از عمل شما به عنوان یک عمل غیر عقلانی یاد خواهد شد؟
اینجاست که باید بگوییم که در واقع، عقلانیت، با موفقیتی که ناشی از مجموعه مشاهدات عامل است تعریف میشود. (در مثال بالا، شخص عبور کننده توانایی دیدن درب هواپیما را نداشته برای همین تصمیم به عبور از خیابان گرفته است) به زبان دیگر ما نمیتوانیم یک عامل را که به خاطر عدم توانایی در مشاهده تمام محیط اطراف، شکست خورده است، سرزنش نماییم. نتیجه این بحث میتواند این باشد که در شرایط واقعی نمیتوان همیشه از عامل هوشمند خود انتظار داشت که کار صحیح را انجام دهد.
بطور خلاصه میتوان گفت که هوشمند بودن یک موجودیت به چهار عامل بستگی دارد.
اندازه گیری عملکرد که درجات موفقیت را مشخص مینماید. هر آن چیز که عامل اخیرا مشاهده و یا در یافت نموده است.توالی مشاهدات. هر آنچه که عامل از مورد محیط خود میداند. مجموعه عمل هایی که عامل میتواند در محیط انجام دهد.
عامل هوشمند ایده آل
مجموعه تعاریف و مطالب فوق، ما را به سمت تعرف مفوهم عامل هوشمند ایده آل هدایت مینماید. عامل هوشمند ایده آل، عاملی است که برای هر مجموعه از توالی مشاهدات، با توجه به شواهد موجود در محیط و دانش پیش ساخته خود، آن عملِ مورد انتظاری را انجام دهد که باعث افزایش اندازه عملکرد و یا همان performance measure بشود.
توجه داشته باشید در نگاه اول ممکن است بنظر برسد که این تعریف باعث ساخت عامل های هوشمندانه ای خواهد شد که خود را در شرایطی که به انجام عمل غیر عقلانی ختم میشود قرار خواهد داد. در واقع ممکن است عامل هوشمند به خیال خود در حال افزایش اندازه عملکرد باشد در حالی که برای این افزایش آن از بسیاری از مسائل چشم پوشی نماید.
برای مثال اگر عامل برای عبور از خیابان به طرفین نگاه نکند (در حالی که هدفش عبور از خیابان است) توالی مشاهداتش او را از خطر تصادف با یک کامیون که با سرعت به طرف او می آید آگاه نخواهد کرد. در نتیجه طبق تعریف، عبور از خیابان برای عامل، عملی هوشمندانه به حساب آمده و او به راه خود ادامه خواهد. در صورتی که چنین تفسیری به دو دلیل اشتباه میباشد. اول آنکه بطور کلی ریسک عبور از خیابان بدون نگاه بطرفین بسیار بالا میباشد. دوم آنکه در صورت نتیجه گیری صحیح از تعریف عامل هوشمند ایده آل، چنین عاملی برای افزایش اندازه عملکرد خود باید به طرفین نگاه کند.
نگاشت ایده آل، از توالی مشاهدات به عمل
با توجه به مطالب فوق میتوان نتیجه گیری کرد از آنجا که رفتار عامل ما بر اساس توالی مشاهداتش میباشد، میتوان برای عامل ها با رسم جدول، مشاهده و عمل را به یکدیگر نگاشت نمود. با این حال باید توجه داشت که برای تمامی عامل ها چنین جدولی بسیار طولانی و یا دارای بی نهایت سطر میباشد مگر آنکه محدودیتی در طول مشاهدات، از طرف طراح برای آن جدول تعیین شده باشد.
به چنین جدولی، جدول “نگاشت مشاهدات به عمل” میگویند. در اصول میتوان با تست اینکه چه عملی برای مشاهدات مناسب است این جدول را تکمیل نمود. باید توجه نمود که اگر میتوانیم از روی نگاشت، عامل هوشمند داشته باشیم از روی نگاشت ایده آل نیز میتوان به عامل هوشمند ایده آل رسید.
البته معنی توضیحات بالا این نیست که ما باید همیشه و بطور ضمنی و دقیق جدولی تهیه نماییم. در واقع در بسیاری از موارد به جای یک جدول ضمنی میتوان از یک تعریف مشخص که خود تولید کننده سطرهای جدول میباشد استفاده نماییم. برای مثال فرض کنید که ما یک عامل هوشمند بسیار ساده داریم که قرار است توان اعداد را محاسبه نمایید. برای طراحی چنین عاملی احتیاجی به ایجاد یک جدول واقعی نخواهیم داشت و عملا میتوان سطرهای این جدول را با فرمول توان یک عدد به عدد دیگر محاسبه نمود.
اگر فروشنده دوره گرد از نقطه A شروع کند و فواصل بین نقاط مشخص باشد، کوتاهتربن مسیر که از تمام نقاط یکبار بازدید میکند و به A بازمیگردد کدام است؟
مسئله فروشنده دوره گرد (به انگلیسی: Travelling salesman problem، بهاختصار: TSP) مسئلهای مشهور است که ابتدا در سده ۱۸مسائل مربوط به آن توسط ویلیام همیلتون و توماس کرکمن مطرح شد و سپس در دهه ۱۹۳۰ شکل عمومی آن به وسیله ریاضیدانانی مثلکارل منگر از دانشگاه هاروارد و هاسلر ویتنی از دانشگاه پرینستون مورد مطالعه قرار گرفت.
شرح مسئله بدین شکل است:
تعدادی شهر داریم و هزینه رفتن مستقیم از یکی به دیگری را میدانیم. مطلوب است کمهزینهترین مسیری که از یک شهر شروع شود و از تمامی شهرها دقیقاً یکبار عبور کند و به شهر شروع برگردد.
تعداد جوابهای شدنی مسئله، برابر است با {\displaystyle {\frac {1}{2}}(n-1)!} برای n>۲ که n تعداد شهرها میباشد. در واقع این عدد برابر است با تعداددورهای همیلتونی در یک گراف کامل با n رأس.
مسئلههای مرتبط
مسئله فروشنده دوره گرد یا Traveling Salesman Problem (به اختصار TSP)، یکی از مسائل بسیار مهم و پرکاربرد در علوم کامپیوتر و تحقیق در عملیات است.
سه روش کلی برای کد کردن راه حلهای مسئله TSP ارائه شدهاست که در الگوریتمهای مختلفی قابل استفاده هستند. راه حلهای سه گاه عبارتند از:
الف) نمایش جواب به صورت رشته گسسته جایگشتی که در الگوریتمهای زیر قابل استفاده است: الگوریتم ژنتیک یا Genetic Algorithms (به اختصار GA) شبیهسازی تبرید یا Simulated Annealing (به اختصار SA) جستجوی ممنوعه یا Tabu Search (به اختصار TS) جستجوی همسایگی متغیر یا Variable Neighborhood Search (به اختصار VNS) بهینهسازی کلونی مورچگان یا Ant Colony Optimization (به اختصار ACO) جستجوی هارمونی یا Harmony Search (به اختصار HS) و سایر الگوریتمهای بهینهسازی گسسته
ب) نمایش جواب به صورت کلیدهای تصادفی یا Random Key که در الگوریتمهای زیر قابل استفاده است: الگوریتم ژنتیک یا Genetic Algorithms (به اختصار GA) بهینهسازی ازدحام ذرات یا Particle Swarm Optimization (به اختصار PSO) الگوریتم رقابت استعماری یا Imperialist Competitive Algorithm (به اختصار ICA) تکامل تفاضلی یا Differential Evolution (به اختصار DE) بهینهسازی مبتنی بر جغرافیای زیستی یا Bio-geography Based Optimization (به اختصار BBO) استراتژیهای تکاملی یا Evolution Strategies (به اختصار ES) برنامهریزی تکاملی یا Evolutionary Programming (به اختصار EP) و سایر الگوریتمهای بهینهسازی پیوسته
پ) نمایش جواب به شکل ماتریسهای شبیه فرومون که توسط تمامی الگوریتمهای اشاره شده در مورد (ب) قابل استفاده میباشد.
مسئله معادل در نظریه گراف به این صورت است که یک گراف وزندار کامل داریم که میخواهیم کموزنترین دور همیلتونی را پیدا کنیم.
مسئله تنگراه فروشنده دورهگرد (به انگلیسی: Bottleneck traveling salesman problem، بهاختصار: bottleneck TSP) مسئلهای بسیار کاربردی است که در یک گراف وزندار کموزنترین دور همیلتونی را میخواهد که شامل سنگینترین یال باشد.
تعمیمیافته مسئله فروشنده دورهگرد دارای ایالتهایی است که هر کدام حداقل یک شهر دارند و فروشنده باید از هر ایالت دقیقاً از یک شهر عبور کند. این مسئله به «مسئله سیاستمدار مسافر» نیز شهرت دارد.
الگوریتمها
مسئله فروشنده دوره گرد جزء مسائل انپی سخت است. راههای معمول مقابله با چنین مسائلی عبارتند از:
طراحی الگوریتمهایی برای پیدا کردن جوابهای دقیق که استفاده از آنها فقط برای مسائل با اندازه کوچک صورت میگیرد.
استفاده از الگوریتمهای مکاشفهای که جوابهایی بهدست میدهد که احتمالاً درست هستند.
پیدا کردن زیرمسئلههایی از مسئله یا به عبارت دیگر تقسیم مسئله به مسئلههای کوچکتر، تا بتوان الگوریتمهای مکاشفهای بهتر و دقیقتری ارائه داد.
الگوریتمهای دقیق
سرراستترین راه حل امتحان کردن تمامی جایگشتهای ممکن برای پیدا کردن ارزانترین مسیر است که چون تعداد جایگشتها !n است، این راه حل غیرعملی میشود. با استفاده از برنامهنویسی پویا مسئله میتواند با مرتبه زمانی{\displaystyle n^{2}2^{n}} حل شود. راههای دیگر استفاده از الگوریتمهای انشعاب و تحدید برای ۴۰ تا ۶۰ شهر، استفاده از برنامهنویسی خطی برای کوچکتر از ۲۰۰ شهر و استفاده از روش برش-صفحه برای اندازههای بزرگ است.
الگوریتمهای مکاشفهای
الگوریتمهای تقریبی متنوعی وجود دارند که خیلی سریع جوابهای درست را با احتمال بالا بهدست میدهند که میتوان آنها را به صورت زیر دستهبندی کرد:
مکاشفهای سازنده
بهبود تکراری
مبادله دوبهدو
مکاشفهای k-opt
مکاشفهای V-opt
بهبود تصادفی
پیچیدگی محاسباتی الگوریتم فروشنده دوره گرد
این الگوریتم بطور مستقیم در مرتبه زمانی(!O(n حل میشود اما اگر به روش برنامهنویسی پویا برای حل آن استفاده کنیم مرتبه زمانی آن (O(n^2*2^n خواهد شد که جز مرتبههای نمایی است. باید توجه داشت علیرغم آنکه مرتبه نمایی مذکور زمان بسیار بدی است اما همچنان بسیار بهتر از مرتبه فاکتوریل میباشد. شبه کد الگوریتم فوق به صورت زیر است که در آن تعداد زیر مجموعههای یک مجموعه n عضوی ۲ به توان n میباشد و for اول یک ضریب n را نیز حاصل میشود که به ازای تمام شهرهای غیر مبدأ میباشد و حاصل (n*(2^n را پدیدمیآورد؛ بنابراین برای جستجوی کمترین مقدار نیاز به یک عملیات خطی از مرتبه n داریم که در زمان فوق نیز ضرب میشود و در نهایت زمان (n^2)*(2^n) را برای این الگوریتم حاصل میکند.
C({1},1) = 0
for (S=2 to n)
for All Subsets S subset of {1,2,3,...} of size S and containing1
C(S,1) = &
for All J member of S , J<>1
C (S , J) = min { C (S - { J } , i) + D i,J: i member of S , i <> J }
return min j C ({1 . . . n}, J) + D J,1
شبه کد مسئله فروشنده دوره گرد
مسئله:یک تور بهینه برای یک گراف وزن دار و جهت دار مشخص نمایید. وزنها اعدادی غیر منفی هستند
ورودی:یک گراف وزن دار و جهت دار و n تعداد گرههای گراف. گراف با یک ارائه دو بعدی w مشخص میشود که سطرها و ستونهایش از ۱ تا n شاخص دهی شدهاند و در ان [w[i][j معرف وزن لبه از گره iام به گره jام است.۴
خروجی:یک متغیر minlength که مقدار ان طول تور بهینه است و یک ارائه دو بعدی p که یک تور بهینه را از روی ان میتوان ساخت . سطرهای p از ۱ تا n و ستونهای ان با تمامی زیر مجموعههای {v-{v1 شاخص دهی شدهاند . [P[i][A شاخص اولین گره بعد از vi بر روی کوتاهترین مسیر از viتاvj است که از تمام گرههای A دقیقاً یکبار میگذرد.
* Void travel ( int n ,
* const number W[][],
* index p[][],
* number&minlength
* )
* {
* Index i, j, k;
* number D[1..n][subset of V-{vi}];
* for (i= 2 ; i<=n;i++)
* D[i][∅} = w[i][1];
* for(k=1; k<=n-2 ; k++)
* for (all subsets A v-{v1} containing k vertices
* for (i such that j≠۱ and vi is not in A){
* D[i][A] = minimum (W[i][j]+ D[vj][A-{vj}]);
* P[i][A]= value of j that gave the minimum
* }
* D[1][v-{vi}]= minimum (W[1][j]+ D[vj][V-{v1}];
* P[1][V-{v1}]= value of j that gave the minimum ;
* Minlength = D[1][V-{v1}];
* }
الگوریتم جستجوی ممنوعه یا Tabu Search یا به اختصار TS، یکی از قویترین الگوریتمها در زمینه حل مسائل بهینهسازی، به خصوص مسائل بهینهسازی مبتنی بر گراف و مسائل بهینهسازی ترکیباتی (Combinatorial Optimization) است. این الگوریتم در اواخر دهه ۱۹۸۰ و توسط گلووِر (Glover) و همکارانش ارائه گردید. غالباً یکی از مسائلی که برای حل آنها از الگوریتم TS استفاده میشود، مسئله فروشنده دوره گرد یا TSP است. این الگوریتم پاسخهای بسیار مناسبی را برای انواع مسائل گسسته به خصوص مسئله TSP ارائه میکند!
در مسئله فروشنده دوره گرد در پی یافتن کوتاه ترین مسیر در بین مجموعه ای از شهر ها می باشیم، به گونه ای که هر شهر فقط یک بار در مسیر قرار گرفته و مسیر ساخته شده به شهر اولی منتهی شود.
این مسئله علاوه بر جنبه نظری از جنبه عملی نیز کاربرد فراوانی دارد به عنوان مثال در مواردی مانند مسیریابی، ساخت تراشه های الکترونیکی، زمان بندی کارها و غیره مورد استفاده قرار گیرد. اما در مواجهه با چالش حل مسائل بهینه سازی، که این نوع مسائل در دنیای واقعی بسیار زیاد هستند، روش های کلاسیک اغلب با مشکل مواجه می شوند. به همین دلیل معمولا از روشهای فرا ابتکاری همانند الگوریتم ژنتیک و سایر الگوریتم های تکاملی برای حل این نوع مسائل استفاده میشود
به صورت کلی مسئله فروشنده دوره گرد دارای ۳ حالت زیر می باشد.
۱- فروشنده دوره گرد متقارن
در حالت متقارن مسئله، تعدادی شهر داریم و هزینه رفتن مستقیم از یکی به دیگری را میدانیم .مطلوب است کم هزینهترین مسیری که از یک شهر شروع شود و از تمامی شهرها دقیقا یکبار عبور کند و به شهر شروع بازگردد.
۲- فروشنده دوره گرد نامتقارن
مسأله ي فروشنده ي دوره گرد نامتقارن, یک TSP است که فاصله بين رئوس آن, متقارن نيست. ATSP بسيار مشکلتر از TSP است، در حقيقت در حالي که TSP متقارن, حتي در گرافهاي با چندين هزار رأس, به طور بهينه, قابل حل است, تنها نمونههاي خاصي ازATSP را که ماتريس فاصلهي آنها, تقريباً متقارن است, تنها در گرافهاي داراي چندين دوجين رأس, ميتوان به طور بهينه حل کرد. به کاربردن هوش مصنوعی براي ATSP, راحت و سر راست است. چون هيچ تغييراتي در الگوريتم اصلي, لازم ندارد. پيچيدگي محاسباتي در حلقهي الگوريتم, برنامهي کاربردي TSP, يکسان است, زيرا تنها تفاوت آنها در فاصلهها و ماتريسهاي ردپا است که در اينجا ديگر متقارن نيستند.
۳- فروشنده دوره گرد با پنجره های زمانی
مسئله فروشنده دوره گرد با پنجره زمانی، شامل یافتن کوتاهترین طول توری است که به وسیله یک فروشنده دوره گرد طی می شود با این شرایط که فروشنده باید هر گره را فقط یکبار ملاقات کند و در پنجره زمانی معینی به آن سرویس دهد. به این معنا که اگر فروشنده زودتر از محدوده زمانی تعیین شده به آن گره برسد باید منتظر بماند تا بازه زمانی سرویس دهی مربوط به آن گره شروع شود. همچنین اگر دیرتر از پنجره زمانی برسد ارائه سرویس به آن گره دیگر امکان پذیر نخواهد بود.
پردازش سیگنال تکنولوژی راهبردی است که به کمک آن نظریه های بنیادی، برنامه های کاربردی ،الگوریتم ها ، و پیاده سازی پردازش و انتقال اطلاعات در فرمت های فیزیکی ، نمادین ، یا انتزاعی را که به عنوان سیگنال شناخته می شود را شامل می شود. این علم با استفاده از نمایش های ریاضی ، احتمالی ،اکتشافی ، زبانشناسی و روش هایی برای نمایش مثل مدل کردن ، آنالیز ، سنتز ، اکتشاف ، بازیابی و … استفاده می کند.
انتقال سیگنال های الکترونیکی با استفاده از پردازش سیگنال. مبدل ها امواج فیزیکی را به امواج از نوع جریان الکتریکی یا ولتاژ تبدیل می کنند ،که پس از آن پردازش می شوند ، و به شکل امواج الکترومغناطیسی دریافت شده و توسط مبدل دیگری به شکل نهایی خود تبدیل می شوند.
تاریخچه
با توجه به الن وی. اوپنهایم و رنالد شافر ،اصول اولیه پردازش سیگنال در روش های آنالیز عددی کلاسیک در قرن ۱۷ یافت می شود. اوپنهایم و شافر اشاره کرده اند که “دیجیتالی ساختن” یا پالایش دیجیتالی این روش ها درسیستم های کنترلی در سال های ۱۹۴۰ و ۱۹۵۰ می توان یافت.
زمینه های کاربرد
لرزه ای پردازش سیگنال
پردازش سیگنال صوتی – برای سیگنال های الکتریکی که نمایانگر صدا ، مثل صحبت یا موسیقی اند.
پردازش تصویر – در دوربین های دیجیتال, کامپیوتر و انواع سیستم های تصویربرداری
پردازش ویدئو – برای تفسیر تصاویر متحرک
ارتباطات بی سیم – تولید ، فیلتر کردن ، برابر سازی و دمدوله کردن موج ها
سیستم های کنترل
پردازش آرایه – پردازش سیگنال از آرایه ای از سنسورهای
کنترل فرایند
زلزله شناسی
پردازش سیگنال مالی – تجزیه و تحلیل داده های مالی با استفاده از تکنیک های پردازش سیگنال به خصوص برای پیش بینی اهداف.
استخراج ویژگی مانند بینایی رایانه ای و تشخیص گفتار.
بهبود کیفیت مانند کاهش نویزه، بهبود تصویر افزایش، و لغو اکو.
(برنامه نویسی) از جمله فشرده سازی صدا ، فشرده سازی تصویر و فشرده سازی ویدئو.
ژنومیک ، پردازش سیگنال ژنومیک
در سیستم های ارتباطی پردازش سیگنال ممکن است در زمینه های زیر رخ دهد:
مدل اتصال متقابل سامانه های باز، ۱ در هفت لایه مدل OSI ، لایه فیزیکی (مدولاسیون،برابر سازی ، هم تافتنو غیره.);
OSI لایه ۲ لایه پیوند داده ای ;
OSI 6، لایه لایه نمایش ( برنامه نویسی از جمله تبدیل آنالوگ به دیجیتالو فشرده سازی سیگنال).
دستگاه های معمولی
فیلتر – برای مثال آنالوگ (منفعل یا فعال) یا دیجیتال (FIRهای IIR, دامنه فرکانسی یا کنترل تصادفی و غیره.)
نمونه برداری و مبدل سیگنال های آنالوگ به دیجیتال برای فراگیری سیگنالها و بازسازی آن ها، که شامل اندازه گیری فیزیکی سیگنال ها،ذخیره سازی یا انتقال آن را به عنوان سیگنال دیجیتال و بازسازی سیگنال اصلی یا تقریبی آن در کاربرد های احتمالی بعدی.
فشرده سازی داده ها
پردازشگر سیگنال دیجیتال سیگنال دیجیتال (DSPs)
روش های ریاضی کاربردی
معادلات دیفرانسیل
رابطه بازگشتی
تئوری تبدیل
تجزیه و تحلیل زمان-فرکانس – برای پردازش یگنال های غیر ثابت
تخمین طیفی – برای تعیین محتوای طیفی (یعنی توزیع قدرت بر فرکانس) در یک سری زمانی
پردازش سیگنال آماری – تجزیه و تحلیل و استخراج اطلاعات از سیگنال و نویز بر اساس خواص اتفاقی
نظریه سیستم خطی تغییر ناپذیر با زمان و نظریه تبدیل
شناسایی و طبقه بندی سیستم
حساب دیفرانسیل و انتگرال
فضاهای برداری و جبر خطی
آنالیز تابعی
احتمال و فرایندهای تصادفی
نظریه تشخیص
الگوریتم های تخمینی
بهینه سازی
آنالیز عددی
سری های زمانی
داده کاوی – برای تجزیه و تحلیل آماری روابط بین مقادیر زیادی از متغیرها (در این زمینه برای نمایش بسیاری از سیگنال های فیزیکی) برای استخراج الگوهای ناشناحته
دسته بندی ها
پردازش سیگنال آنالوگ
پردازش سیگنال های آنالوگ برای سیگنال هایی است که دیجیتال نشده اند ، مانند رادیو ها ،تلفن ها ، رادار ها و سیستم های تلویزیونی قدیمی. این شامل مدار های الکترونیکی غیرخطی و خطی هم می شود.مدار های خطی همچون فیلتر های منفعل فیلتر ،فیلترهای جمع کننده ، انتگرال گیر و خطوط تاخیر. مدار های غیرخطی شامل اسیلاتور کنترل شده با ولتاژ و حلقه قفل شده فاز.
پردازش سیگنال های پیوسته در زمان
پردازش سیگنال های پیوسته در زمان برای سیگنال های است که با تغییرات پیوسته دامنه تغییر می کنند(بدون در نظر گرفتن بعضی نقاط منقطع)
روش های پردازش سیگنال شامل دامنه زمان، دامنه فرکانسو دامنه فرکانس های مختلط. این فناوری عمدتا در رابطه با مدل کردن سیستم های خطی تغییر ناپذیر با زمان پیوسته ، تجمیع پاسخ حالت صفر سیستم ، تنطیم تابع سیستم و فیلتر پیوسته در زمان سیگنال های قطعی بحث می کند.
پردازش سیگنال های گسسته در زمان
پردازش سیگنال های گسسته برای سیگنال هایی است که تنها در نقاط گسسته ای از زمان نمونه برداری شده اند ، و در زمان کوانتیده هستند اما در مقدار نه.
پردازش سیگنال آنالوگ پیوسته در زمان فناوری است که بر پایه دستگاه های الکترونیکی مدارهای نمونه برداری و نگه داری ،مالتی پلکسر و خطوط تاخیر آنالوگ بنا شده است. این فناوری ، نمونه اسبق پردازش سیگنال های دیجیتال ( اشاره شده در قسمت بعد) می باشد ، و همچنان در پردازش پیشرفته سیگنال های گیگاهرتز استفاده می شود.
مفهوم پردازش سیگنال های گسسته در زمان همچنین به مفاهیم و اصولی اشاره دارد که پایه ای ریاضی برای پردازش سیگنال های دیجیتال فراهم می کند ، بدون در نظر گرفتن خطای کوانتیده بودن.
پردازش سیگنال دیجیتال
پردازش سیگنال های دیجیتال پردازش نمونه های سیگنال در زمان های گسسته می باشد. پردازش توسط , رایانه ها یا با مدارهای دیجیتال همچون ASIC ها ، field-FPGA ها ،یا پردازنده های سیگنال دیجیتال ها انجام می گیرد . عملیات های معمول ریاضی شامل نمایش نقطه ثابت ، ممیز شناور ، مقدار حقیقی یا مختلط اعداد ، ضرب و جمع از این جمله می باشند. بعضی دیگر از عملیات های معمول توسط دایره بافر و جدول های look-up توسط سخت افزار پشتیبانی می شوند. مثال های از این الگوریتم ها تبدیل فوریه سریع (FFT) ، فیلتر های FIR ، فیلتر های IIR ، و فیلتر تطبیقیمی باشند.
غیر خطی پردازش سیگنال های غیرخطی
پردازش سیگنال های غیر خطی شامل آنالیز و پردازش سیگنال های تولید شده توسط سیستم های غیرخطی می باشد که میتواند در دامنه زمان یا فرکانس باشد . سیستم های غیرخطی می توانند رفتارهای پیچیده ای همچون چند شاخه ای ، نظریه آشوب، هارمونیگ تولید کنند که با روش های خطی قابل بررسی نیست.
منبع
پردازش سیگنال چیست؟ (Signal processing)
به طور ساده هر کیمیت متغیر در زمان یا مکان که قابل اندازه گیری باشد را سیگنال میگوییم. به عنوان مثال سرعت کمیتی است که در واحد زمان متغیر بوده و مقدار آن قابل اندازه گیری است. چراکه در بازههای زمانی مشخص میتوانید مقدار سرعت را اندازه گیری کرده و ثبت کنید. مجموعه اعدادی که از ثبت سرعت در بازههای زمانی مختلف به وجود میآیند، باهمدیگر تشکیل یک سیگنال میدهند.
کمیتهایی همچون شتاب ، دما ، رطوبت و… نیز در واحد زمان متغیر بوده و همچنین قابل اندازه گیری هستند. بنابراین با نمونه گیری از این کمیتها در واحدهای زمانی مختلف میتوان تشکیل یک سیگنال داد. پردازش سیگنال نیز علمیاست که به آنالیز سیگنالها میپردازد.
مثال ها
شکل زیر سیگنال صوتی را نشان میدهد که هنگام فشار دادن کلید ۱ بر روی تلفن تولید میشود:
شکل ۱-سیگنال پیوسته
شکل ۲-سیگنال گسسته
شکل اول سیگنال را به شکل گسسته و شکل دوم سیگنال را به صورت پیوسته نشان میدهند. محور افقی زمان و محور عمودی نیز مقدار شدت سیگنال را نمایش میدهند.
همگام با ورود این سیگنال دیجیتالی به کارت صوتی خروجی آنالوگ (سیگنال پیوسته) در آن تولید میشود که این خروجی نیز وارد سیستم پخش صدا شده و موج تولید شده توسط بلندگو پس از پخش در فضا توسط گوش ما حس میگردد. این کل فرآیندی است که یک سیگنال صوتی دیجیتالی طی میکند تا توسط گوش ما شنیده شود.
عکس این فرآیند نیز امکان پذیر است، بدین صورت که همگام با صحبت کردن ما در یک میکروفون، سیگنال آنالوگ تولید شده توسط آن وارد کارت صوتی شده و توسط کارت صوتی نمونه برداری میگردد وهمین نمونه برداری است که موجب تولید یک سیگنال زمانی در سمت کامپیوتر میگردد.
حال فرض کنید میخواهیم نویزی را که در یک فایل صوتی وجود دارد، یا نویزی که هنگام صحبت کردن ما در میکروفون ممکن است تحت تاثیر محیط اطراف به وجود آید را حذف کنیم.برای این منظور نیاز داریم که سیگنال دیجیتالی موجود بر روی سیستم کامپیوتری را پردازش کرده و پس از شناسایی نویزها با استفاده از روشی به حذف آنها پبردازیم.
یا فرض کنید قصد داریم نرم افزاری را طراحی کنیم که این نرم افزار کلمات بیان شده در میکروفون را تایپ کند. پردازش گفتار علمیاست که با بهره گرفتن از روشهای پردازش سیگنال به انجام این عمل میپردازد. در ادامه این بخش سعی کرده ایم مفاهیم کلی پردازش سیگنال را مورد بررسی قرار دهیم. توجه داشته باشید که تمام روشهای پردازش سیگنالهای دیجیتالی برای آنالیز گفتار نیز به کار میرود.
فرض کنید میکروفورنی را به کارت صوتی وصل کرده اید و در حال ضبط صدا هستید. خروجی میکروفون یک خروجی آنالوگ میباشد و بنابراین نمیتواند به طور مستقیم وارد سیستم کامپیوتری گردد. چرا که همه سیستمهای دیجیتالی اعم از یک کامپیوتر تنها با ورودی های دیجیتال میتواند کار کنند. بنابراین سیگنال آنالوگ تولید شده در خروجی میکروفون قبل از ورود به سیستم کامپیوتری باید به سیگنال دیجیتال تبدیل گردد.
تبدیل آنالوگ به دیجیتال
دیجیتال کردن سیگنال بر روی سیستمهای کامپیوتری امروزی توسط کارتهای صوتی انجام میپذیرد. یک سیگنال آنالوگ از لحظه ورود تا دیجیتال شدن مراحل زیر را به ترتیب طی میکند:
• آماده کردن سیگنال ورودی • فیلتر کردن سیگنال ورودی • نمونه برداری • چندی کردن شماتیک زیر نیز فرآیند تبدیل سیگنال آنالوگ به دیجیتال را نشان میدهد:
آماده کردن سیگنال ورودی
فرض کنید خروجی سنسوری که موجب تولید سیگنال میشود ، ولتاژ باشد. به عنوان مثال زمانی که در میکروفون صحبت میکنید، متناظر با صدای تولید شده توسط شما، خروجی میکرفون نیز در یک بازه مشخص به شکل ولتاژ تغییر میکند. یا به عنوان مثال خروجی سنسوری که برای ضبط نوار قلبی بکار میرود، در بازههای بسیار کوچک ولتاژ ( میلی ولت ) در حال تغییر است.
در مراحل بعدی عمل دیجیتال کردن زمانی که از مبدل آنالوگ به دیجیتال استفاده میکنیم، عملا نیاز به ولتاژهایی در بازه ( ۵٫٫۰) ، ( ۵-..۵ ) یا … ولت نیاز داریم. اما همانطور که دیدیم خروجی برخی از سنسورها ( همانند سنسور نوار قلبی ) در حد میلی ولت است. بنابراین نیاز به روشی داریم که بتوانیم خروجی سنسورها را تقویت کرده و آنها را برای ورود به مبدلهای آنالوگ به دیجیتال آماده کنیم.
این مرحله از عمل دیجیتال کردن ورودی را آماده سازی سیگنال ورودی میگوییم که در آن از تقویت کنندهها ( آمپلی فایر ) برای افزایش/ کاهش بهره ولتاژ استفاده می کنیم. لازم به ذکر است که امروزه سیستم تقویت کننده سیگنال به شکل توکار بر روی کارت های صوتی وجود دارد و در کارهای معمول خود نیاز به نصب تقویت کننده خارجی به کارت صوتی نداریم.در سیستم عامل ویندوز ضریب بهره آمپلی فایر کارت صوتی توسط Volume Controller خود سیستم عامل تعیین میشود.
فیلتر کردن سیگنال
خطوط تلفن دیجیتال قابلیت حمل سیگنالهایی در بازه ۰ تا ۳۴۰۰ هرتز را دارند. از اینرو سیگنالهایی که فرکانسی خارج از این محدوده دارند، باید قبل از دیجیتال شدن فیلتر شوند. این عمل نیز با طراحی فیلترهایی امکان پذیر است. در واقع پس از آنکه سیگنال ورودی آماده شد ( تقویت گردید ) وارد سیتم فیلترینگ میگردد تا سیگنالهای خارج از محدوده فرکانسی آن کاربرد ، از سیستم حذف گردند.
طراحی فیلترها
از اهمیت ویژه ای برخوردار است چراکه اگر سیگنال به شکل صحیح فیلتر نشود، دچار اختلالهایی خواهد شد. با توجه به اینکه طراحی فیلترهای آنالوگ خارج از حیطه تخصصی ما میباشد، بنابراین از ذکر مطالب در مورد آنها خودداری میکنیم. با این حال زمانی که نحوه طراحی فیلترهای دیجیتال را شرح میدهیم، پارمترهایی را که برای طراحی یک فیلتر مناسب باید در نظر گرفت ، نشان خواهیم داد.
نمونه برداری کردن
پس از آنکه سیگنال ورودی آماده شد و فیلترکردن آن نیز انجام پذیرفت، دیجیتال کردن سیگنال آنالوگ آغاز میشود. نمونه برداری بدین مفهوم است که در بازههای زمانی مشخص مقدار سیگنال ورودی را خوانده و برای چندی شدن به مرحله بعد انتقال دهیم. به عنوان مثال زمانی که میخواهیم در هر ثانیه ۴۴۰۰۰ نمونه از سیگنال ورودی برداریم، باید در بازه های زمانی ۰٫۰۰۰۰۲ ثانیه مقدار سیگنال آنالوگ را خوانده و به مرحله بعد منتقل کنیم. به عنوان مثال زمانی که در میکروفون صحبت میکنید، با فرض اینکه نرخ نمونه برداری ۴۴۰۰۰ نمونه در ثانیه باشد، سیستم دیجیتال کننده هر ۰٫۰۰۰۰۲ ثانیه یکبار ولتاز خروجی میکروفون را – که تقویت و فیلتر شده است – خوانده و مقدار آن را به چندی کننده ارسال میکند.
چندی کردن سیگنال
در مرحله نمونه برداری دیدیم که یک نمونه از سیگنال به شکل ولتاژ نمونه برداری شد. در این مرحله ولتاز نمونه برداری شده باید به شکل دیجیتالی ( عدد باینری ) تبدیل شود. برای این منظور نیز از مبدلهای آنالوگ به دیجیتال استفاده میکنیم. به عنوان مثال یک مبدل انالوگ به دیجیتال ۸ بیتی به ازای ورودی خود عددی بین ۰ تا ۲۵۵ تولید می کند. فرض کنید ورودی مبدل در بازه ۰ تا ۵ ولت باشد. این بدان معناست که به ازای ورودی ۰ ولت ، خروجی مبدل عدد باینری ۰ و به ازای ورودی ۵ ولت خروجی مبدل عدد باینری ۲۵۵ خواهد بود. بدیهی است که افزایش تعداد بیتهای مبدل موجب افزایش دقت چندی شدن خواهد شد.
وزنی (Weighted): امتیازاتی که توسط اجزای توصیه گر متفاوت داده می شود، بصورت عددی با یکدیگر ترکیب می شوند.
راه گزینی (Switching): سیستم از بین اجزای توصیه گر انتخاب کرده، و جزء انتخابی را به کار می گیرد.
مخلوط (Mixed): پیشنهادات توصیه گر های متفاوت، با هم ارائه می گردند.
ترکیب خصوصیات (Feature Combination): ویژگی های بدست آمده از منابع شناختی متفاوت، با یکدیگر ترکیب شده و یک الگوریتم پیشنهادی مجرد را ارائه می دهد.
تقویت خصوصیات(Feature Augmentation): یک فن توصیه، برای محاسبه ی یک ویژگی یا مجموعه ای از خصوصیات به کار برده می شود، که بخشی از ورودی تکنیک بعدیست.
آبشار(Cascade): به توصیه گرها اولویت اکید داده می شود؛ انهایی که از اولویت پایین تر برخوردارند برای به ثمر رساندن آنهایی که اولویت بالایی دارند، نادیده گرفته شوند.
Meta-level: یک تکنیک توصیه بکار برده شده و تعدادی مدل ایجاد می کند که پس از آن بعنوان ورودی تکنیک بعدی مورد استفاده قرار می گیرد.
سیستم توصیه گر شخصیت محور:
رهیافتی جدید که از بوتنر (Buettner) نشأت گرفت. او “توصیه گر محصول شخصیت محور” (Personality-based product recommender(PBPR)) را مطرح کرد، چارچوبی که داده های شبکه اجتماعی را تحلیل می کند تا شخصیت کاربر را پیش بینی کرده و از شخصیت کاربر پی به تمایلات او برد.
فراتر از دقت
معمولاً پژوهش در باب سیستم های توصیه گر، از بابت یافتن دقیق ترین الگوریتم های پیشنهاد، نگران است.
تنوع (Diversity): زمانیکه لیستی بلند بالا و متنوع از پیشنهادات ارائه گردد، موجب رضایت بیشتر کاربر میشود، برای مثال آیتم هایی از هنرمندان مختلف.
اصرار توصیه گر (Recommender persistence): در برخی موارد، دوباره نشان دادن توصیه ها یا اینکه رتبه بندی دوباره ی آیتم ها توسط کاربر، بسیار مؤثر تر از نشان دادن آیتم های جدید است. مثلاً، ممکن است کاربران در دفعه اول وقت کافی برای بررسی دقیق پیشنهادات نداشته اند.
حریم خصوصی(Privacy): معمولاً سیستم های توصیه گیر در رابطه با مسئله حریم خصوصی نگران هستند، چرا که کاربران مجبور به فاش کردن اطلاعات حساس هستند. ایجاد پروفایل کاربران با استفاده از پالایش گروهی می تواند از نقطه نظر حریم خصوصی، مشکل آفرین باشد. بسیاری از کشورهای اروپایی رسومی بسیار غنی از حریم خصوصی دارند، و هر تلاشی که منجر به معرفی سطحی از مشخصات کاربر شود، با عکس العمل منفی مشتری روبرو می شود. با پیشنهاد نت فلیکس برای رقابت جایزه نت فلیکس (Netflix Prize) مسائلی در رابطه با حریم خصوصی در حیطه ی مجموعه اطلاعات بوجود آمد. گرچه برای حفظ حریم خصوصی مشتری، مجوعه داده ها ناشناس بودند، در سال ۲۰۰۷ دو محقق از دانشگاه تگزاس با انطباق مجموعه ی داده هایی که از امتیاز دهی فیلم ها و از Internet Movie Database بدست آمده بود، توانستند کاربران را شناسایی کنند. در سال ۲۰۰۹ کاربر ناشناس نت فلیکس، نت فلیکس را در Doe v. Netflix شکایت کرد و مدعی شد که نت فلیکس قوانین تجارت عادلانه ی ایالات متحده و قانون حفاظت از حریم خصوصی ویدئو (Video Privacy Protection Act) را با پخش مجموعه ی داده ها، نقض کرده است. این ادعا در بخشی منجر به حذف دومین رقابت جایزه نت فلیکس سال ۲۰۱۰ گردید. در این مدت تحقیقات زیادی در زمینه حریم خصوصی انجام گرفته است. راماکریشنان و همکاران، در مورد موازنه ی شخصی سازی و حریم خصوصی تحقیق گسترده ای را انجام داده و دریافتند که از ترکیب روابط ضعیف (یک ارتباط غیر منتظره که بصورت اتفاقی پیشنهادات خوب و جالبی را ارائه می دهد) و دیگر منابع اطلاعاتی می توان برای کشف هویت کاربران در یک مجموعه داده ی ناشناس استفاده کرد.
جمعیت شناختی کاربر (User demographics): بیل وهمکاران، دریافتند که اطلاعات جمعیت شناختی کاربران می تواند بر میزان رضایت مندی آنها از پیشنهادات ارائه شده، تأثیر گذار باشد. آنها در مقاله خود نشان دادند که کاربران مسن تر بیشتر از کاربران جوان، علاقه مند به توصیه های ارائه شده هستند.
نیرومندی (Robustness): زمانیکه کاربران بتوانند در سیستم توصیه گر مشارکت کنند، مسئله کلاهبرداری بایستی مورد توجه قرار گیرد.
سرندی پیتی (یافتن تصادفی)(Serendipity): سرندی پیتی مقیاسی است که نشان می دهد، پیشنهادات چقدر شگفت انگیز و تعجب آور هستند. برای مثال، سیستم توصیه گری که در یک بقالی خرید شیر را به مشتری پیشنهاد می دهد، گرچه ممکن است پیشنهاد دقیقی باشد ولی پیشنهاد خوبی نیست، چرا که “خرید شیر” برای مشتری امری واضح و روشن است و نیازی به پیشنهاد ندارد.
اعتماد (Trust): سیستم توصیه گری که کاربر به آن اعتماد نداشته باشد، از ارزش بسیار پایینی برخوردار است. اعتماد توسط سیستم توصیه گر و با توصیف چگونگی ایجاد پیشنهادات و علت پیشنهاد یک آیتم، ایجاد میگردد.
برچسب گذاری (Labelling): بر چسب گذاری پیشنهادات ممکن است رضایت مندی کاربر را تحت تأثیر قرار دهد. برای مثال در مطالعه ای نرخ کلیک(click-through rate(CTR)) برای پیشنهاداتی که برچسب ” ضمانت” داشتند (CTR=5.93%) کمتر از حالتی بود که همان پیشنهادات برچسب “ارگانیک” داشتند (CTR=8.86%). نکته قابل توجه اینجاست؛ پیشنهاداتی که هیچ برچسبی نداشتند از نرخ کلیک بالاتری برخوردار بودند (CTR=9.87%).
سیستم توصیه گر سیار
تحقیق در حوزه ی سیستم های توصیه گر سیار، یکی از حیطه های تحقیقاتی در حال رشد در زمینه ی سیستم های توصیه گر است. با افزایش دسترسی اسمارت فون ها به اینترنت و همه گیر شدن آن، ارائه پیشنهادات شخصی سازی شده و حساس به محیط ممکن شده است. از آنجاییکه اطلاعات سیار بسیار پیچیده تر از داده هایی است که سیستم های توصیه گر با آن درگیر بوده اند، تحقیقات در این حیطه به مراتب دشوارتر است (مسائلی که این حیطه با آن روبروست: ناهمسانی، پر سر و صدایی، نیاز به همبستگی خودکار مکانی و زمانی ، و نیز مشکلات تأیید و عمومیت دارد). علاوه بر این سیستم های توصیه گر سیار از مشکلات جابجایی نیز متضرر هستند، چرا که ممکن است پیشنهادات ارائه شده در تمامی مناطق بکار نیاید (برای مثال، پیشنهاد یک دستور غذایی که همه ی اجزایش را نمی توان در آن منطقه فراهم کرد، پیشنهادی نابخردانه است).
سیستمی که پیشنهاد کننده مسیرهای ایده آل برای رانندگان شهریست، یک نمونه از سیستم های توصیه گر سیار است. این سیستم داده های خود را از طریق ردیابی GPS راههایی که تاکسی پیموده است، بدست می آورد که این داده ها عبارتند از؛ مکان یابی (طول و عرض جغرافیایی)، نشان دادن زمان و وضعیت اجرایی (با مسافر یا بدون مسافر). سیستم از این داده ها برای بهینه سازی زمان صرف شده برای هر مسافر (یعنی با پیشنهاد ایده آل ترین راه، مدت زمانی که مسافر در تاکسی است به کمترین میزان خود برسد) و عاید کردن سود بیشتر برای راننده تاکسی، بهره می گیرد. این نوع سیستم، وابسته به مکان است، و از آنجاییکه در دستگاههای دستی یا جاساز شده استفاده می شود نیاز محاسباتی و انرژی آن بایستی در سطح پایینی نگه داشته شود.
نمونه ای دیگر از سیستم های توصیه گر سیار، سیستمی است که برای کاربران متخصص توسعه داده شده است (بونفوف و همکاران، ۲۰۱۲). این سیستم با ردیابی GPS کاربر و برنامه ی کاری او، بهترین اطلاعات و پیشنهادات را بسته به موقعیت و علایق وی، ارائه می دهد. این سیستم، از فنون یادگیری ماشینی و پردازش استدلالها برای ایجاد یک سازگاری پویا بین سیستم توصیه گر سیار با سیر تحولی علایق کاربر ، بهره می برد. بانی این الگوریتم نام آن را hybrid-ε-greedyگذاشته است.
سیستم های توصیه گر سیار همچنین”Web of Data” را به عنوان منبعی برای اطلاعات ساختاری، ایجاد کرده اند. یک مثال خوب از این سیستم ها ” “SMARTMUSEUM است. این سیستم حتی زمانیکه اطلاعات کمی از کاربر ارائه شده باشد با استفاده از مدل سازی معنایی، بازیابی اطلاعات و فنون یادگیری ماشینی اقدام به توصیه ی محتوای مطابق با علایق کاربر می کند.
سیستم توصیه گر آگاه از ریسک
تمرکز عمده رهیافت های موجود بکار گرفته شده در سیستم های توصیه گر ارائه ی مرتبط ترین محتوا برای کاربران است و ریسک برآشفتن کاربر در شرایط خاص را به حساب نمی آورند. با این وجود در بسیاری از اپلیکیشن ها (مانند پیشنهاد محتوای شخصی سازی شده) ریسک پریشان کردن کاربر نیز مهم تلقی شده و از تحمیل پیشنهادات در شرایط خاصی همچون یک جلسه ی تخصصی، صبح زود یا دیر وقت ممانعت می شود. از این رو عملکرد سیستم توصیه گر در بخشی به درجه ای از ریسکی که در فرایند پیشنهاد دهی لحاظ می کند، بستگی دارد.
تعریف ریسک
در سیستم های توصیه گر واژه ی “ریسک” به احتمال ایجاد مزاحمت یا پریشان کردن کاربر که منجر به عکس العمل نامناسب وی شود، اطلاق می گردد.
در پاسخ به این چالش ها، جمعی از محققان یک سیستم توصیه گر پویا و حساس به ریسک DRARS(Dyanamic Risk-Aware Recommender system) را ابداع کردند که توصیه ی زمینه ی آگاه (context – aware) را همچون یک “مسئله ی راهزن” (bandit problem) مدلسازی کرده است. این سیستم یک تکنیک محتوا محور را به یک الگوریتم “راهزن متنی” (Contextual bandit) ترکیب کرده است. این محققان نشان دادند که DRARS با محاسبه ی بهینه ترین ارزش اکتشافی برای حفظ توازن بین اکتشاف و بهره برداری مبتنی بر سطح ریسک موقعیت کاربر، موجب بهبود خط مشی “اعتماد به نفس حد بالا” (Upper Confidence Bound(UCB)) می شود. این محققان آزمایشات خود را در یک زمینه صنعتی و با داده ها و کاربران واقعی اجرا کرده و نشان دادند که اهمیت دادن به سطح ریسک موقعیت کاربران، قدرت اجرای سیستم های توصیه گر را افزایش می دهد.
جایزه نت فلیکس
یکی از وقایعی که به تحقیقات سیستم های توصیه گر انرژی مضاعفی بخشید، جایزه نت فلیکس بود. از سال ۲۰۰۶ تا سال ۲۰۰۹ میلادی نت فلیکس اسپانسر رقابتی بود که در آن جایزه ی ۱۰۰۰۰۰۰ دلاری به گروهی تعلق می گرفت که بتواند مجموعه ی داده ای با بیش از ۱۰۰ میلیون فیلم رتبه بندی شده ارائه دهد به نحوی که بازخورد پیشنهادات ۱۰ درصد، دقیق تر از نرم افزار موجود نت فلیکس باشد (در ارائه پیشنهادات، ۱۰ درصد دقیق تر از نت فلیکس عمل کند). این رقابت به امر تحقیق جهت یافتن الگوریتم های جدید و دقیق تر، انرژی مضاعفی بخشید. در ۲۱ سپتامبر ۲۰۰۹ جایزه یک میلیون دلاری با رعایت قانون”tiebreaking” (قانونی که در صورت مساوی شدن رقبا، طرف برنده را تعیین می کند) به تیم Bellkor’s pragmatic Chaos اهدا گردید.
در سال ۲۰۰۷ ترکیبی از ۱۰۷ رهیافت الگوریتمی متفاوت، منجر به ایجاد دقیق ترین الگوریتم پیش بینی گردید:
زمانیکه چندین سیستم پیشگویی با یکدیگر ترکیب شوند، دقت پیشگویی به طور قابل ملاحظه ای افزایش می یابد. تجربه ی ما اینست که بیشتر تلاشها بایستی بر حصول رهیافت های مختلف معتبر متمرکز می شد نه پالایش یک تکنیک مجرد. در نتیجه راه حل ما نیز حاصل جمع آثار مجموعه ای از روش هاست.
مزایای بسیاری بخاطر پروژه نت فلیکس عاید وب شد. تعدادی از تیم فن آوریشان را گرفته و در دیگر بازارها بکار گرفتند. اعضای تیمی که به مقام دوم رسیدند یک موتور توصیه گر به نام Gravity R&Dایجاد کردند که در جامعه RecSys فعال است. ۴-Tell، Inc راه حلی را که از پروژه نت فلیکس بدست آورده بودند در وبسایت های تجارت الکترونیک بکار بردند.
مسابقه ی دوم نیز طراحی شد اما نهایتاً در عکس العمل به طرح دعوایی در دادگاه و ابراز نگرانی از “کمیسیون تجارت فدرال” (Federal Trade Commission) لغو گردید.
سنجش عملکرد
در تشخیص تأثیر الگوریتم های توصیه، ارزیابی امری بسیار مهم است. متریک های معمول استفاده شده در ارزیابی الگوریتم ها، میانگین مربعات خطا و ریشه ی میانگین مربعات خطا می باشد که مورد آخر در جایزه ی نت فلیکس مورد استفاده قرار گرفت. متریک های بازیابی اطلاعات مثل معیار دقت و بازیابی یا DCG جهت ارزیابی کیفیت یک روش پیشنهادی، سودمند و کارا هستند. اخیراً تنوع، نوآوری و پوشش نیز به عنوان جنبه های مهم ارزیابی در نظر گرفته می شوند. هر چند که بسیاری از اندازه گیری های ارزیابی کلاسیک، شدیداً مورد انتقاد قرار گرفته اند. اغلب، نتایج ارزیابی های به اصطلاح آفلاین، با تشخیص واقعی رضایت کاربر هم خوانی ندارد. نویسندگان بیان کردند”ما بایستی در نتایج ارزیابی های افلاین (یا همان اندازه گیری های کلاسیک) تردید می کردیم”.
سیستم توصیه گر چند معیاره
سیستم های توصیه گر چند معیاره (MCRS) به عنوان سامانه هایی توصیف می شوند که سلایق را در چند معیار با هم متحد می سازند. به جای توسعه ی فنون پیشنهادی مبتنی بر ارزش های تک معیاره، تمامی سلایق کاربر در نظر گرفته می شود. این سیستم ها تلاش می کنند تا رتبه بندی آیتم های ناشناخته توسط کاربر را، پیش بینی کنند. این امر با بهره گیری از اطلاعات سلیقه ای و براساس معیارهای چند گانه که تمامی ارزش های سلیقه ای را تحت تأثیر قرار می دهد، ممکن شده است. چندین محقق MCRS را به عنوان یک مسئله ی تصمیم گیر چند معیاره (MCDM) در نظر گرفته و فنون و روش های MCDM را برای اجرای سیستم های MCRS بکار گرفته اند.
سامانههای توصیهگر به طور کلی به سه دسته تقسیم میشوند؛ در رایجترین تقسیمبندی، آنها را به سه گروه ۱. محتوا محور ۲. دانش محور و ۳. صافی سازی تجمعی، تقسیم میکنند، که البته گونه چهارمی تحت عنوان Hybrid RS هم برای آنها قائل میشوند.
یک رویکرد به سیستمهای توصیهگر، استفاده از الگوریتمهای CF یا صافی سازی تجمعی است. در این رویکرد به جای استفاده از محتوای (Content) اقلام، از نظرات و رتبهبندیهای انجام شده توسط کاربران برای ارائه پیشنهاد، استفاده میشود. مشکل اصلی استفاده از این رویکرد، مشکل شروع سرد (Cold Start problem)[۲] میباشد که برای کاربران جدید بروز میکند که در سیستم ثبت نام میکنند و سیستم هیچ اطلاعاتی از نظرات یا علایق کاربر ندارد (New User problem). در چنین شرایطی، سیستمها معمولاً از یادگیری فعال (Active Learning)[۳] یا استفاده از ویژگیهای شخصیتی کاربر،[۴] برای حل مشکل استفاده میکنند.
در روش محتوا محور، اقلام پیشنهادی، به این دلیل که با اقلامی که کاربر فعال (کاربری که قرار است به او توصیه کنیم) نسبت به آنها ابراز علاقه کردهاست شباهتهایی دارند، به کاربر توصیه میشوند ولی در CF، لیست اقلام پیشنهادی، بر اساس این اصل که، کاربرانی، مشابه کاربر فعال، از آنها رضایت داشتهاند تهیه میشود. از این رو واضح است که در روش محتوامحور، تمرکز بر روی یافتن شباهت بین اقلام بوده، در حالی که در CF، تمرکز روی یافتن شباهت بین کاربران است؛ بدین ترتیب که پیشنهادات در CF، بر اساس تشابه رفتاری کاربرفعال با کاربران دیگر صورت میگیرد و نه بر اساس تشابه ویژگی کالاهای پیشنهادی با ویژگیهای کالاهای مورد علاقه وی (کاربر فعال). رویکرد محتوا محور یکی از روشهای مؤثر برای حلی نوعی از مشکل شروع سرد میباشد که برای کالاهای (آیتمهای) جدید رخ میدهد (New Item problem)[۵] که به تازگی به لیست سیستم اضافه شدهاند و هیچ کاربری در مورد آنها نظری نداده است. در چنین حالتی رویکرد صافی سازی تجمعی نمیتواند این کالاها را به کاربران توصیه کند.
اما گونه سوم این سیستمها را با نام سیستمهای دانش محور میشناسند. این سیستمها براساس ادراکی که از نیازهای مشتری و ویژگیهای کالاها پیدا کردهاند، توصیههایی را ارائه میدهند. به عبارتی در این گونه از سیستمهای توصیهگر مواد اولیه مورد استفاده برای تولید لیستی از پیشنهادها، دانش سیستم در مورد مشتری و کالا است. سیستمهای دانش محور از متدهای مختلفی که برای تحلیل دانش، قابل استفاده هستند بهره میبرند که متدهای رایج در الگوریتمهای ژنتیک، فازی، شبکههای عصبی و … از جمله آنهاست. همچنین، در این گونه سیستمها از درختهای تصمیم، استدلال نمونهمحور و … نیز میتوان استفاده کرد. یکی از رایجترین متدهای تحلیل دانش درسیستمهای توصیهگر دانش محور ،CBR یا روش استدلال نمونهمحور است.
گونه چهارم سیستمهای ترکیبی هستند. طراحان این نوع سیستمها دو یا چند گونه از انواع سهگانه مذکور را غالباً به دو منظور با هم ترکیب میکنند؛ ۱- افزایش عملکرد سیستم ۲- کاهش اثر نقاط ضعفی که آن سیستمها وقتی به تنهایی به کار گرفته شوند، دارند. از میان سه روش موجود (CF و CB و KB)، غالباً روش CF یک پای ثابت این ترکیبات است.
سیستم توصیه گر یا پیشنهاد گر (واژه سیستم گاهی با واژه های مترادفی مثل؛ “پلتفرم” یا “موتور” جایگزین می شود) زیر مجموعه ای از سامانه ی پالایش اطلاعات است که بدنبال پیش بینی “امتیاز” یا “اولویتی” است، که کاربر به یک آیتم (داده، اطلاعات، کالا و …) خواهد داد.
در سال های اخیر سیستم های توصیه گر بسیار متداول شده و در حوزه های مختلفی مورد استفاده قرار گرفته اند. برخی از کاربرد های معروف آن در موارد زیر است:
فیلم های سینمایی، موسیقی، اخبار، کتابها، مقالات تحقیقاتی، جست و جوی پرسش ها، تگ های اجتماعی و غالب محصولات.
علاوه بر این سیستم های توصیه گر برای؛ متخصصان، گروه های همکاران، طنز پردازیها، رستورانها، خدمات مالی، بیمه عمر، مسائل عاطفی (قرار و مدارهای آنلاین) و صفحات تویتر نیز ارائه شده است.
بررسی اجمالی
معمولاً سیستم های توصیه گر، لیستی از پیشنهادات را به یکی از دو صورت زیر ارائه می دهند:
از طریق پالایش گروهی و محتوا محور (Collaborative and Content-based filtering) یا رهیافت شخصیت محور (Personality-based approach)
رهیافت های پالایش گروهی، مدلی ایجاد می کنند که این مدل بر اساس رفتار گذشته کاربر (آیتم هایی که قبلاً خریداری یا انتخاب کرده و یا امتیازاتی که به آیتم ها داده است) و نیز تصمیمات مشابهی که توسط کاربران دیگر گرفته شده است، میباشد. سپس با استفاده از مدل ایجاد شده، آیتم هایی که ممکن است مورد علاقه ی کاربر باشد، معرفی می گردد. رهیافت های پالایش محتوا محور، از یک سری مشخصات مجزای یک آیتم برای پیشنهاد آیتم های دیگر با ویژگی های مشابه، استفاده می کند. این رهیافت ها اغلب با یکدیگر ترکیب می شوند (سیستم های توصیه گر هیبرید).
رهیافت شخصیت محور، تمایلات کاربر به کالا و خدمات را از شخصیت وی نتیجه می گیرد.
تفاوت های بین پالایش گروهی و پالایش محتوا محور را می توان با مقایسه ی دو سیستم توصیه گر موسیقی نشان داد؛ Last.fm و Pandora Radio.
Last.fm با بررسی نوازندگان و تراکهایی که کاربر قبلاً گوش کرده است و مقایسه ی آنها با آنچه که دیگر کاربران به آن گوش کرده اند، مجموعه ای از آهنگ های پیشنهادی را ارائه می دهد.
Last.fm تراکهایی را خواهد نواخت، که در کتابخانه ی کاربر (مجموعه ی اهنگ های کاربر) موجود نیستند ولی دیگر کاربران با علایق مشابه به آنها گوش داده اند. از آنجا که این رهیافت، رفتار کاربران را تحت تأثیر قرار می دهد، نمونه ای از تکنیک پالایش گروهی است.
Pandora از خصوصیات یک آهنگ یا هنرمند ( زیر مجموعه ای مشتمل بر ۴۰۰ ویژگی که توسط “پروژه ژنوم موسیقی” تهیه شده است) برای ایجاد ایستگاهی از موسیقی ها با ویژگی های مشابه استفاده می کند.
واکنش کاربر جهت پالایش نتایج ایستگاه استفاده می گردد، زمانیکه کاربر یک آهنگ را نمی پسندد ویژگی های آن از تاکید Pandora خارج و زمانیکه کاربر آهنگی را می پسندد، ویژگی های آن آهنگ مورد تأکید قرار می گیرند. Pandora نمونه ای از رهیافت محتوا محور است.
هر نوع سیستمی نقاط ضعف و قوت خودش را دارد. در مثال بالا Last.fm جهت ارائه پیشنهادات دقیق، نیازمند حجم بالایی از اطلاعات در مورد کاربر است. نکته ضعف ذکر شده نمونه ای از “مشکل استارت سرد” ( همانند مشکلی که هنگام استارت زدن به موتور سرد پیش می آید) است و در سیستم های پالایش گروهی امری عادیست. در حالیکه Pandora به اطلاعات بسیار کمی برای آغاز کار خود نیاز دارد، ولی میدان عمل آن بسیار محدود است (بعنوان مثال؛ تنها قادر به ارائه پیشنهاداتیست که شبیه آهنگ اصلی باشند).
سیستم های توصیه گر جایگزین سودمندی برای الگوریتم های جست و جو هستند چرا که به کاربران کمک می کنند تا آیتم هایی را بیابند که ممکن بود خودشان نتوانند آنها را پیدا کنند. سیستم های توصیه گر با استفاده از موتورهای جست و جو، به طور جالبی داده های جدید را فهرست می کنند.
مونتانر نخستین نمایه کلی از سیستم های توصیه گر را از منظر یک عامل هوشمند ارائه داد. آدوماویسیوس (Adomavicius) نمایی جدید از سیستم های توصیه گر را ارائه کرد. هرلاکر (Herlocker) تکنیک های ارزیابی سیستم های توصیه گر را مورد بررسی قرار داد و بیل و همکارانش مشکلات ارزیابی های آفلاین را مورد بحث و بررسی قرار دادند. بیل و همکاران، پیشینه ای از تحقیقات در مورد سیستم های کنترل و چالش های موجود را ارائه دادند.
سیستم های توصیه گر موضوع تحقیقاتی فعال در زمینه های “کاوش اطلاعات” و “یادگیری ماشینی” هستند. RecSys، SIGIR و KDD از جمله کنفرانس هایی هستند که تحقیقات در زمینه سیستم های توصیه گر را مورد توجه قرار دادند.
رهیافت ها
رهیافتی که در طراحی سیستم های توصیه گر استفاده وسیعی دارد، رهیافت پالایش گروهیست. روش های پالایش گروهی، بر هیافت هاجمع آوری و آنالیز حجم بالایی از اطلاعات در مورد رفتارها، فعالیت ها و تمایلات کاربران و نیز پیش بینی پسند کاربران، بر اساس شباهت خواسته های آنها با دیگران، مبتنی هستند. مهم ترین مزیت پالایش گروهی اینست که وابسته به محتوای قابل تحلیل برای ماشین نیست و از این رو به درستی می تواند آیتم های پیچیده ای همچون فیلم های سینمایی را بدون نیاز به درک خود آیتم، توصیه کند. الگوریتم های زیادی در اندازه گیری تشابه کاربر یا تشابه آیتم در سیستم های توصیه گر مورد استفاده قرار می گیرند. برای مثال؛ “رهیافت نزدیک ترین همسایه k ” (k-nearest neighbor (k-NN)) و ضریب همبستگی پیرسون که نخستین بار توسط آلن اجرا شد.
پالایش گروهی بر اساس این اندیشه استوار است: افرادی که در گذشته موافق بوده اند، در آینده نیز موافق خواهند بود و انواع اقلامی را خواهند پسندید که در گذشته نیز مورد دلخواهشان بوده است.
موقعیکه یک مدل بر اساس رفتار کاربر ایجاد می گردد، تمایزی بین فرم های صریح و ضمنی جمع آوری داده ها پیش می آید.
نمونه هایی از جمع آوری داده ها به صورت “صریح” شامل موارد زیر است:
از کاربر خواسته شود تا آیتم را در معیاری متغیر ارزیابی کند.
از کاربر خواسته شود تا جست و جو کند.
از کاربر خواسته شود تا مجموعه ای از آیتم ها را بر اساس علاقه اش رتبه بندی کند.
دو آیتم به کاربر نشان داده شده و از وی خواسته شود یکی از آنها را انتخاب کند.
از کاربر خواسته شود تا لیستی از آیتم هایی را که دوست دارد، ایجاد کند.
نمونه ای از جمع آوری داده ها به صورت “ضمنی” شامل موارد زیر می باشد:
مشاهده آیتم هایی که کاربر در فروشگاه آنلاین به آنها می نگرد.
تحلیل آیتم هایی که کاربر ملاحظه کرده است.
حفظ سابقه ی خرید های آنلاین کاربر.
فراهم کردن لیستی از آیتم هایی که کاربر در رایانه خود به آنها گوش داده یا تماشا کرده است.
تحلیل شبکه اجتماعی کاربر و یافتن موارد مشابهی که وی آنها را پسندیده و یا نپسندیده است.
سیستم توصیه گر اطلاعات جمع آوری شده را با اطلاعات جمع آوری شده مشابه و غیر مشابه از جانب دیگران، مورد مقایسه قرار داده و لیستی از آیتم های پیشنهادی برای کاربر را محاسبه می کند (در مقاله سیستم های پالایش گروهی ویکی پدیا، چندین مورد از مثالهای تجاری و غیر تجاری فهرست شده است).
یکی از معروف ترین مثالهای پالایش گروهی، پالایش “آیتم به آیتم” است (افرادی که کالای x را می خرند کالای y را نیز می خرند) الگوریتمی که توسط سیستم توصیه گر Amazon.com عمومیت یافت.
نمونه های دیگر شامل:
همانطور که توضیح داده شد، fm آهنگ هایی را که پیشنهاد می دهد بر اساس مقایسه ای از عادت های شنیداری کاربران مشابه است.
Facebook، My Space، Linked in و دیگر شبکه های اجتماعی از پالایش گروهی برای پیشنهاد دوستان جدید، گروهها و دیگر روابط اجتماعی استفاده می کنند (با بررسی شبکه ارتباطات بین کاربر و دوستانش). تویتر از تعداد زیادی سیگنال و محاسبات حافظه ای استفاده می کند تا به کاربرانش پیشنهاد دهد که چه کسی را فالو کنند.
رهیافت های پالایش گروهی از سه مشکل رنج می برند: استارت سرد (cold start)، مقیاس پذیری (Scalability) و پراکندگی (Sparsity).
استارت سرد: این سیستم ها برای ارائه پیشنهادات دقیق و صحیح، اغلب به حجم بالایی از اطلاعات کاربر نیاز دارند.
مقیاس پذیری: در بسیاری از فضاهایی که این سیستم ها پیشنهادات را ارائه می دهند، میلیون ها کاربر و محصول حضور دارند. از این رو برای محاسبه پیشنهادات، به قدرت محاسباتی بالایی نیاز است.
پراکندگی: تعداد آیتم هایی که در سایت های اصلی تجارت الکترونیک فروخته شده اند، بسیار بسیار زیاد است. فعالترین کاربران نیز تنها زیر مجموعه ی کوچکی از تمامی پایگاه های داده را ارزیابی خواهند کرد. به این خاطر است، که حتی محبوبترین آیتم ها نیز امتیازات پایینی دارند.
نوع ویژه ای از الگوریتم پالایش گروهی از فاکتور ماتریس استفاده می کند، یک “تکنیک تقریب رتبه پایین ماتریس” (low-rank matrix approximation technique).
روش های پالایش گروهی به دو دسته مبتنی بر حافظه و پالایش گروهی مبتنی بر مدل تقسیم می شوند.
نمونه ی شناخته شده ی رهیافت های مبتنی بر حافظه، “الگوریتم کاربر محور” (user-based algorithm) و نمونه ای از رهیافت های مبتنی بر مدل، “توصیه گر کرنل – نقشه” (Kernel-Mapping) است.
پالایش محتوا محور
دیگر رهیافت متداولی که در طراحی سیستم های توصیه گر استفاده می شود، پالایش محتوا محور است. روش های پالایش محتوا محور بر اساس توصیفی از آیتم و پروفایلی از سلیقه ی کاربر، استوار هستند. در یک سیستم توصیه گر محتوا محور، از کلمات کلیدی برای توصیف آیتم ها استفاده شده و برای نشان دادن نوع آیتمی که کاربر دوست دارد، پروفایل وی ساخته می شود. به عبارت دیگر، این الگوریتم ها در تلاش هستند تا آیتم هایی را پیشنهاد دهند که شبیه به اقلامی باشد که کاربر پیش از این آنها را پسندیده بود ( یا اقلامی که در حال حاضر بررسی کرده است). آیتم های کاندید با آیتم هایی که قبلاً توسط کاربر ارزیابی شده بودند، مورد مقایسه قرار گرفته و آیتم هایی که بهترین انطباق ها را با معیارهای کاربر داشته باشند، پیشنهاد می گردند. این رهیافت در بازیابی اطلاعات و بررسی پالایش اطلاعات ریشه دوانیده است. برای خلاصه کردن مشخصات آیتم ها در سیستم، یک الگوریتم نمایش آیتم به کار برده می شود. الگوریتمی که استفاده ی گسترده ای دارد، نمایش فراوانی تی اف-آی دی اف (tf-idf representation) است (مدل “فضا برداری” نیز گفته می شود).
برای ایجاد پروفایل کاربر، سیستم بایستی بیشترین تمرکز خود را بر دو نوع از اطلاعات معطوف کند: ۱٫ الگویی از سلیقه ی کاربر ۲٫ تاریخچه ای از عکس العمل کاربر با سیستم توصیه گر.
اساساً این روش ها با استفاده از پروفایل آیتم (بعبارتی مجموعه ویژگی ها و مشخصات)، ویژگی های آن را در سیستم ترسیم می کنند. سیستم، یک پروفایل محتوا محور بر اساس بردار وزنی ویژگی های آیتم برای کاربر ایجاد می کند. وزن ها، اهمیت هر ویژگی برای کاربر را نشان می دهند، و می توان از طریق مؤلفه های رتبه بندی شده و بهره گیری از تکنیک های گوناگون، آنها را مورد محاسبه قرار داد. رهیافت های ساده، از میانگین ارزش های مؤلفه های رتبه بندی شده استفاده می کنند، در حالیکه دیگر رهیافت ها از روش های پیچیده ی یادگیری ماشینی همچون؛ دسته بندی بندی کننده های نایو بیز (Bayesian Classifiers)، دسته بندی بندی کننده های نایو بیز (Bayesian Classifiers)، درخت های تصمیم (Decision trees) و شبکه های عصبی مصنوعی (Artificial neural networks) برای تخمین احتمال آنکه کاربر چه آیتمی را پسند خواهند کرد، بهره می برند.
بازخورد مستقیم از جانب کاربر (معمولا در غالب “Like” یا “Dislike”) می تواند برای اختصاص وزن بالا یا پایین بر اهمیت خصوصیات معین، مورد استفاده قرار گیرد (با استفاده از طبقه بندی راکچیو یا دیگر تکنیک های مشابه).
مسئله کلیدی در رابطه با پالایش محتوا محور اینست که آیا سیستم قادر است از طریق اقداماتی که کاربر در رابطه با یک محتوا نشان می دهد و بهره گیری از آنها در تقابل با انواع محتوا ها، پی به تمایلات کاربر ببرد. زمانیکه سیستم محدود به توصیه ی محتواهایی است که مشابه با آنچه که کاربر قبلاً استفاده کرده است باشد، در این حالت ارزش سیستم توصیه گر در مقایسه با زمانیکه سیستم از سرویس های دیگر نیز برای توصیه محتوا استفاده می کند، کم تر است. برای مثال، توصیه ی مقالات خبری بر اساس مرور اخبار سودمند است، ولی زمانیکه آهنگ، ویدئو، محصولات، مباحث و … از سرویس های مختلف و البته بر اساس مرور اخبار توصیه گردد، به مراتب پربارتر و سودمندتر خواهد بود.
همانطور که قبلاً نیز توضیح داده شد، Pandora Radio یک مثال معروف از سیستم توصیه گر محتوا محور است که آهنگ های پیشنهادی آن مشابه با ویژگی های آهنگی است که بعنوان بذر اولیه توسط خود کاربر ایجاد شده است. تعداد بسیار زیادی از سیستم های توصیه گر محتوا محور وجود دارد که پیشنهاد دهنده فیلم هستند که چند تا از آنها عبارتند از: Rotten Tomatoes، Internet Movie Database، Jinni، Rovi Corporation، Jaman and See This Next (http://www.seethisnext.com/). سیستم های توصیه گر مرتبط با سند و مدرک، هدفشان توصیه ی مدارک برای آگاهی دادن به کارگران است، مثل؛ Noggle(https://www.noggle.online/knowledge-base/document-recommendation) و Google Springboard.
سیستم توصیه گر هیبرید
بررسی اخیر حاکی از آنست که رهیافت هیبرید (ترکیبی از پالایش گروهی و پالایش محتوا محور) در برخی موارد می تواند بسیار مؤثر واقع گردد. رهیافت های هیبرید از چندین راه قابل اجرا هستند، با ایجاد جداگانه پیش بینی های محتوا محور و گروه محور و نهایتاً ترکیب آنها با هم، افزودن قابلیت های رهیافت محتوا محور به گروه محور (یا بالعکس)، یا یکی کردن رهیافت ها در یک مدل . چندین مطالعه ی تجربی، اجرای سیستم هیبرید را با نوع خالص سیستم های گروه محور و محتوا محور مورد مقایسه قرار داده است، و نشان داده شده که روش های هیبرید پیشنهادات دقیق تری را ارائه می دهند. همچنین، این روش ها می توانند برای غلبه بر مسائل روتین سیستم های توصیه گر مثل استارت سرد و پراکندگی مورد استفاده قرار گیرند.
نت فلیکس مثال خوبی از استفاده ی سیستم های توصیه گر هیبرید است. آنها با مقایسه ی عادات دیداری و جست و جویی کاربران مشابه (یعنی پالایش گروهی) و نیز پیشنهاد فیلم هایی که دارای ویژگی های مشترک با مواردی هستند که کاربر به انها امتیاز بالایی داده است، پیشنهادات را ارائه می دهند.
انواعی از تکنیک ها به عنوان پایه و اساس سیستم های توصیه گر، مطرح گردیده است: گروهی، محتوا محور، دانش محور و تکنیک های جمعیت شناختی. هر یک از این تکنیک ها کمبودهای شناخته شده ای دارند، مثل مشکل معروف استارت سرد برای سیستم های پالایش گروهی و محتوا محور (با کابران جدید که به اقلام کمی امتیاز داده اند، چه کند!؟) و تنگنای مهندسی دانش در رهیافت دانش محور. سیستم توصیه گر هیبرید، سیستمی است که چند رهیافت را با هم ترکیب می کند تا به همیاری بین آنها دست یابد.
گروهی: سیستم، تنها با استفاده از اطلاعاتی که از طریق پیشینه ی امتیاز دهی کاربران بدست آمده است، پیشنهادات را ارائه می دهد. سیستم های گروهی، کاربران همتا با تاریخچه ی مشابه امتیازدهی با کاربر آنلاین را در مجاور هم قرار داده و با استفاده از این همسایگی اقدام به ارائه پیشنهادات می کند.
محتوا محور: سیستم، پیشنهادات را از دو منبع ارائه می دهد: مشخصات مرتبط با محصول و امتیازاتی که کاربر به آنها داده است. توصیه گرهای محتوا محور، با یک پیشنهاد همچون طبقه بندی یک مسئله ی خاص کاربر رفتار می کنند، و در می یابند که طبقه بندی کننده ی پسندها و ناپسندهای کاربر، بر پایه ی ویژگی های محصول است.
جمعیت شناختی (Demographic): یک سیستم توصیه گر جمعیت شناختی، پیشنهادات را بر اساس مشخصات جمعیت شناختی کاربر (مشخصاتی همچون؛ سن، جنسیت و ملیت کاربر) ارائه می دهد. محصولات پیشنهادی می توانند برای دیگر مجموعه های جمعیتی، با ترکیب امتیازاتی که کاربران درآن مجموعه ها به محصولات داده اند استفاده گردند.
دانش محور: سیستم دانش محور، مواردی را پیشنهاد می کند که از نیازها و تمایلات کاربر استنتاج کرده باشد. این دانش، گهگاه حاوی فهمی عملکردی و واضح از برآوردن نیازهای کاربر توسط ویژگی های معینی از محصول، خواهد بود.
در اینجا، واژه ی “سیستم توصیه گر هیبرید” برای توصیف هر سامانه ی پیشنهاد دهنده ای که جهت ارائه پیشنهاد چند تکنیک توصیه را با هم ترکیب کرده است، بکار می رود. دلیلی برای چرایی اینکه چند تکنیک متفاوت از یک نوع، نتوانند با یکدیگر هیبرید شوند، وجود ندارد. برای مثال دو سیستم توصیه گر محتوا محور متفاوت، می توانند باهم کار کنند که تعدادی از طرح ها این نوع از هیبرید را مورد بررسی قرار داده اند:
NewsDude، که از هر دو طبقه بندی کننده ی ساده Bayes و kNN در توصیه ی اخبارهای خود استفاده می کند، تنها یک مثال از این دست سیستم های هیبرید است.