پیش از این در مقالات مختلفی در مورد مفاهیم سطح بالا در هوش مصنوعی بحث و تبادل کردیم ، از جمله سطحی از دانش بشری که باید به آن دست پیدا کنیم ، یا از آنچه در مورد مکانیسم های محاسباتی انسان شناخته شده است تقلید کنیم و اینکه آیا افق دید ما باید کوتاه مدت باشد یا بلند مدت. این ها مطالب جالب توجهی هستند، اما اگر افراد با بیان اهداف خود به عنوان محققان هوش مصنوعی شروع کنند ، تاثیر بیشتری خواهیم گرفت.
برخی از ما به تحقیقاتی علاقمند هستیم که ممکن است در یک بازه زمانی ۲ یا ۱۰ یا حتی ۵۰ ساله منجر به نتایج عملی شود. برخی از ما به دنبال درک هوش انسان ها و سایر سیستم های طبیعی ، در سطح محاسبات عصبی یا در سطح رفتار و ادراک هستیم. برخی از ما علاقمند به توسعه نظریه های ریاضی و محاسباتی رفتار پیچیده ” هوشمند ” هستیم که می تواند عوامل هوش طبیعی و مصنوعی موجود و آینده را بیان کند.
همه این کار ها هیجان انگیز و قابل پیگیری هستند و اهداف نهایی متفاوتی را ارائه می دهند که ممکن است همپوشانی قابل ملاحظه ای با اهداف و روش های کوتاه مدت داشته باشند، از جمله الگوریتم ها، نظریه ها و سخت افزار های محاسباتی. به هر حال، اساساً اهداف کاملا متفاوت ، نیاز به راه حل های کاملا متفاوتی دارند.
احتمالا برای همه ما مهم است که قبل از ادعا در مورد بهترین روش برای ادامه کار، در مورد مسائلی از پیاده سازی بالاترین سطح انتخاب های شناختی تا پیش پا افتاده ترین سخت افزار ها یا جزئیات الگوریتمی، اهداف خود را بیان کنیم. تنها با توجه به این اهداف بیان شده است که هر یک از این کار ها می تواند مفید و سازنده باشد.
برای مثال، کاملاً منطقی است که محققان هوش مصنوعی علاقمند به پردازش ادراکی انسان ، تحت تأثیر دستاوردهای Deep Blue یا AlphaGo قرار نگیرند در حالی که علاقمندان به رویکرد های مهندسی از موفقیت آن به وجد می آیند. و همینطور برای کسانی که می خواهند یک خودرو خودران بسازند مهم است که درک بشری خود از مسئله رانندگی در سیستم های خود کد نویسی کنند در حالی که که دیگران ممکن است در حال ابداع روش هایی برای تکامل سیستم ساختار کانولوشنی باشند.
هوش مهندسی
با یک مثال شروع می کنیم : می خواهیم یک نظریه کلی و روش عملی برای طراحی بخش های نرم افزاری ربات های هوشمند بیان کنیم. اگر انجام این کار با سیستم های طبیعی همخوانی نداشته باشند مهم نیست، اما بهتر است همخوانی داشته باشد. دغدغه اصلی توسعه دادن چیزی در کوتاه مدت نیست، گرچه شاید برای مشاهده برخی نتایج در طول زندگی صبر و تحمل کافی نداشته باشیم.
بسیاری از همین ملاحظات بر روی سیستم های هوشمندی که از نظر فیزیکی مجسم نشده اند و یا به طور کلی به آن ها ربات گفته نمی شود، اعمال می شود اما تمرکز ما روی ربات های فیزیکی است.
بیایید به این مسئله از دیدگاه کارخانه تولید نرم افزار ربات با نظریه تصمیم گیری ، نگاه کنیم. مشخصات یک ربات به کارخانه داده می شود، که قابلیت های سخت افزاری ربات در دریافت و عملکردش، برخی خصوصیات مربوط به حوزه های احتمالی که ممکن است ربات در آن قرار بگیرد و یک معیار نظری از رفتار ربات در آن حوزه را تعریف می کند. به عنوان مثال، ممکن است نیاز باشد که یک ربات خط مونتاژ ، در یک محدوده کاملاً مشخصی از شرایط با عملکرد اندازه گیری شده از نظر کارایی و دقت در دستیابی به برخی از مونتاژهای خاص، کار کند.
از طرف دیگر، یک ربات دستیار خانگی ممکن است لازم باشد در خانه های متنوعی کار کند و با خانواده های مختلفی تعامل داشته باشد، که هرکدام از آن ها توقعات و خواسته های دقیقی دارند و ممکن است عملکرد آن کاملاً بر اساس رضایت صاحبان آن سنجیده شود. یک مورد استثنایی از این مسئله با تنظیمات هوش انسانی همخوانی دارد : سخت افزار شبیه به بدن انسان است، تعمیم روی حوزه ها، طیف گسترده ای از موقعیت هایی است که انسان ممکن است در جهان طبیعی در آن قرار بگیرد و ممکن است هدف یک زندگی طولانی و شاد باشد.
این سناریو ها، از نظر نوع راه حل مورد نیاز متفاوت هستند، اما نه در نحوه تنظیم مسئله تعیین و ارزیابی رفتار ربات. مساله ی یک مهندس هوش ربات با توجه به مشخصات ( سخت افزار ربات ، تعمیم حوزه ، معیار ارزیابی رفتار ربات ) ، پیاده سازی نرم افزاری برای قرار دادن در ربات است تا در پاسخگویی به انتظارات عملکرد مطلوبی داشته باشد.
آنچه از منظر نظریه تصمیم گیری مهندسی نرم افزار ربات مهم است این است که دیگر نیازی به بحث در مورد بهترین شکل نرم افزار ربات نداریم، حداقل از دیدگاه ورودی / خروجی . اگر حوزه مربوطه به آن نیاز داشت، برنامه باید سریع باشد، اگر حوزه مربوطه نیاز داشت، برنامه باید یاد بگیرد، برنامه باید بتواند استدلال خود را در صورت نیاز حوزه مربوطه بیان کند.
همچنین توجه به این نکته مهم است که فقط به دلیل اینکه مهندسان یک سیستم را از نظر تئوری تصمیم گیری مشاهده می کنند، خود سیستم نیازی به استدلال درباره وضعیت ها ، اقدامات ، پاداش ها یا احتمالات ندارد. ما مهندسان ممکن است یک چارچوب قراردادی برای تجزیه و تحلیل اتخاذ کنیم، حتی اگر به طور واضح، در اثری که در حال تحلیل آن هستیم، تجسمی وجود نداشته باشد.
به عبارت دیگر، ما یک مسئله مهندسی نرم افزار را بطور کامل مشخص کرده ایم : ما یک سری مشخصات و ویژگی ها داریم و باید یک نرم افزار تولید کنیم. دشواری این مسئله مهندسی به ” فاصله ” بین نوع مشخصات و نوع نرم افزار مورد نیاز بستگی دارد. در اینجا چند مثال مفید و قابل تامل ذکر شده است :
- هدف پیمودن یک مسیر است. راه حل ، فهرستی از دستورات موقعیت و یک کنترل کننده ربات است که بتواند از این دستورات پیروی کند.
- هدف ربات این است که در یک بازی شطرنج برنده شود. راه حل یک نقشه راهکار از موقعیت ها برای حرکت مهره ها است.
- هدف این است که ربات ، دستیار خانگی یک خانواده باشد. راه حل برنامه ای است که با توجه به تجربیات خود، اطلاعات مربوط به خانه و خانواده را جمع آوری می کند و به مرور توانایی اش را برای رضایت خاطر خانواده بهبود می بخشد.
واضح است که با انتزاعی شدن مشخصات ، مسئله مهندسی هم دشوارتر می شود.
روش مهندسی
از دیدگاه نظریه تصمیم گیری ، ما یک مسئله بسیار سخت را برای مهندسین در نظر گرفته ایم : چگونه می توانیم با توجه به یک ویژگی ، بهترین برنامه در جهان را برای یک ربات پیدا کنیم ؟
در اینجا استراتژی های معقول و منطقی زیادی وجود دارد. احتمالا همه آن ها تا حدی قابل قبول هستند و دلیل فنی واضحی برای این انتخاب وجود ندارد.که باعث می شود این موضوع به یک موضوع منطقی و قابل بحث تبدیل شود. این موضوع می تواند به طور بالقوه باعث اختلاف نظر شود، حداقل تا زمانی که مسئله را به طور کلی بهتر درک کنیم.
سیر تکاملی را تکرار کنیم. اگر ما بتوانیم مجموعه ای عظیم از شبیه سازی ها ( یا ” اتاق های بالشتکی ” برای تست آزمون و خطا ربات ها در دنیای واقعی ) را ایجاد کنیم که مجموعه ای از کار های یک ربات در خانه را تکرار کند. می توانیم الگوریتم های یادگیری ماشین را برای ربات پیاده سازی کنیم تا بر اساس تعداد بسیار زیادی از آزمایش ها، بهترین نرم افزار برای ساخت ربات باشد. این یک کار علمی جالب و در اصل راه حلی برای مسئله ماست. اما مشکل این است که این استراتژی به دلیل محاسبات بسیار زیاد و بررسی های مورد نیاز ، غیرقابل اجرا است.
انسان ها را مهندسی معکوس کنیم. اگر بتوانیم مجموعه ای از ساختارهای داخلی ، واکنش ها ، الگوریتم ها و اصول سازماندهی مغز انسان را درک کنیم، می توانیم سعی کنیم همان موارد را در ذهن ربات خود قرار دهیم. این کار عملی است، اما ممکن است مدت زیادی طول بکشد! علاوه بر این، این کار اطلاعاتی از انسان به ما می دهد، اما نه اصول کلی یک مفهوم کلی تر از هوش. و همچنین لزوما چگونگی شخصی سازی ساختارهای داخلی انواع مختلف ربات ها ، در حوزه های ” خاص ” مختلف را به ما نشان نمی دهد.
به عنوان یک مهندس هوشمند عمل کنیم. ما می توانیم تنها محیطی را که در آن زندگی می کنیم و حوزه هایی را که انتظار داریم ربات های ما بتوانند در آن ها کار کنند را بررسی کنیم و پس از آن برای ساخت نرم افزار ربات ، سخت تلاش کنیم. این رویکردی است که هوش مصنوعی و ربات ها سال هاست در پیش گرفته اند. قطعاً موفقیت چشمگیری وجود داشته است، اما همچنین شکست قابل توجهی نیز حاصل شده است ( کسی هنوز سیستم های خبره را به خاطر دارد؟).
یک مشکل اساسی این است که ، اگر چه ممکن است ذهن انسان ها در برخی کار ها خیلی خوب عمل کند (به عنوان مثال ، تجزیه و تحلیل صحنه های بصری) اما ما کاملاً قادر به بیان یا بررسی ماهیت پردازش محاسباتی ، که زمینه ساز بسیاری از پیشرفت های ماست، نیستیم. پس با این وجود ممکن است ما مهندسین به اندازه کافی دانش و شناخت نداشته باشیم که این کار را بطور مستقیم انجام دهیم.
یک راه میانی
خب ، چطور باید پیش برویم؟ در اینجا موضع گیری ها روی استراتژی پیاده سازی ممکن است متفاوت باشد ولی ما این روش را پیشنهاد می کنیم :
ما باید یک روش مهندسی همه منظوره ، برای توسعه برنامه های خاص ربات هوشمند طراحی کنیم. ما نیاز به استفاده از ابزار هایی داریم که می توانند یک ویژگی را انتخاب کرده و یک راه حل – سیر تکاملی ، گرادیان نزولی ، جستجوی ترکیبی ، استنتاج احتمالی – را برای ” حل ” برنامه های کاربردی ربات پیدا کنند.
البته همان مصالحه ای که برای ربات ها بکار می رود، برای مهندسین نیز وجود دارد : هرچه گستره راه حل های ممکن بزرگ تر باشد ، برای یافتن یک مورد خوب ، به داده ها و محاسبات بیشتری نیاز است. در نهایت ، برای حل مشکلات واقعی ، ما هیچ چاره ای نداریم جز این که برخی از ” بهترین حدس ” های پیشین خود را براساس اطلاعاتی از درک هوش طبیعی ، از طراحی الگوریتم ها و ساختارهای داده ها ، و از اصول بنیادی فیزیکی ، بسازیم.
یادگیری در کارخانه و در محیط
واضح است که یادگیری ماشین تقریباً برای هر هدف و هر مسیری که ممکن است برای رسیدن به آن هدف طی کنیم ، نقشی اساسی در توسعه سیستم های هوشمند ایفا می کند. و البته ، ما با حجم عظیمی از تکنیک های یادگیری ماشین و برنامه ها مواجه هستیم. در این میان ، به عقب برگشتن و شفاف سازی اهداف و نقاط قوت و ضعف هر کدام، کار بسیار دشواری است.
بدین ترتیب ، می خواهیم در مورد نقش های مختلفی که یادگیری ماشین در دیدگاه مهندسی نظریه تصمیم گیری ایفا می کند، صحبت کنیم. اگرچه تفاوت های نامحسوس و در عین حال مهم بسیاری وجود دارد، اجازه دهید بر روی دو تفاوت بسیار مهم بکارگیری تکنیک های یادگیری ماشین در ساخت ربات های هوشمند تمرکز کنیم : یادگیری در کارخانه و یادگیری در محیط.
یادگیری در محیط ( Learning in the wild ) ، یادگیری ماشینی است که یک ربات انفرادی ، پس از اینکه از کارخانه به محیط واقعی که در آن کار می کند تحویل داده می شود، انجام می گیرد. این ربات باید با شرایط آنی سازگار شود، از اصطکاک مفصل هایش گرفته تا مرتب کردن قفسه های آشپزخانه در خانه. ممکن است مجبور باشد در طول فعالیت اش با این قبیل تغییرات ، سازگار باشد. این نوع سازگاری مستلزم ترکیبی از تکنیک هایی است که ما به عنوان ” قوه ادراک “، ” تخمین وضعیت ” و ” یادگیری ” توصیف می کنیم. که به طور کلی ، تابع هدف ما ، انجام هر چه بهتر کار ها در طول مدتی است که ربات یاد می گیرد ، و این مهم است که رابطه بین کنکاش و بهره گیری را به دقت مدیریت کند و برای استراتژی هایی که بسیار موثر هستند ارزش بالایی قائل شود.
یادگیری در کارخانه ( Learning in the factory ) ، یادگیری ماشینی است که در کارخانه انجام می شود تا کمبود های دانش یا توانایی شناختی مهندسان برنامه نویس را تصحیح کند. این یادگیری ممکن است به سادگی خلاء دانشی مهندسین را پر کند . مثلا آن ها ممکن است برای ساخت یک دستگاه تشخیص چهره کارآمد ، از روش های یادگیری استفاده کنند که مستقیماً در محیط بکار گرفته شود. در موارد دیگر ، ممکن است فرایادگیری انجام شود، به این معنا که هدف ، یادگیری ( یا استخراج یا جستجوی ) استراتژی های نرم افزاری است که با انجام یک یادگیری خوب در محیط ، عملکرد خوبی خواهد داشت. برای یادگیری در کارخانه ممکن است تابع هدف پیچیدگی نمونه را در نظر نگیرد : به تعبیر دیگر ، تمام ربات هایی که کارخانه طراحی می کند ، کار در کارخانه را تجربه می کنند. همچنین ممکن است تحمل بیشتری نسبت به کنکاش داشته باشد، زیرا ممکن است محیط کارخانه را طوری طراحی کنیم که بطور کامل یا تا حدودی شبیه به شرایط فیزیکی باشد که احتمال وقوع آسیب واقعی در آن کمتر از دنیای واقعی باشد.
اگرچه یادگیری در کارخانه و یادگیری در محیط دارای اصول نظری هستند و ممکن است در برخی از راه حل های فنی مشترک باشند، اما برای ما به عنوان محقق بسیار مهم است که محیطی که در حال یادگیری هستیم را بشناسیم : و هیچ دلیلی برای استدلال در مورد این که آیا یک روش بهتر است یا نه ، وجود ندارد.
به عنوان مثال ما می توانیم از این دیدگاه برای مطالعه ابزار یادگیری ” قدم به قدم ” استفاده کنیم. یعنی استفاده از روش های یادگیری برای انطباق یکپارچه رفتار کل برنامه ربات با یک تابع هدف واحد به جای انطباق زیرماژول ها با اهداف میانی. این یک استراتژی منطقی برای استفاده در کارخانه است : مهندسین می توانند زیرساختی را ایجاد کنند که سازگاری قدم به قدم رفتار یک ربات را انجام دهد تا مشخصات گفته شده را تا زمانی که آماده ورود به محیط باشد، بهینه کند. ما ممکن است در مورد میزان اضافه کردن توابع هدف میانی ، سرعت یادگیری و / یا کاهش نتایج آن بحث فنی داشته باشیم ، اما هر دو این ها، استراتژی های مهندسی معقولی هستند. در مورد یادگیری قدم به قدم در محیط چطور؟ کاربرد آن موضوع قابل بحثی نیست : این یک واقعیت عینی در مورد مشخصات نرم افزار ربات است که آیا یادگیری قدم به قدم ، برای نرم افزاری که در محیط روی ربات اجرا می شود ، بهترین ساختار است یا خیر؟
بایاس های ساختاری همه منظوره برای یادگیری
هر کسی که در استفاده از روش های یادگیری ماشین ، در کارخانه یا در محیط مشغول است ، باید با مصالحه وتوازن بین بایاس و پیچیدگی نمونه دست و پنجه نرم کند. اگر داده ها و محاسبات بدون هزینه باشند ، شاید بتوانیم از ” فرسودن ” ربات هایمان با هرگونه تصورات نادرست انسانی جلوگیری کنیم و و به طور تقریبی از طریق برنامه های مناسب ربات به ترتیب پیچیدگی (که البته یک سازه انسانی نیز هست)، به جستجوی بدون هدایت بازگردیم. با فرض اینکه داده ها و محاسبات بدون هزینه نیستند، استراتژی ما برای یافتن یک راه حل عملی به ادغام منطقی بایاس بستگی دارد.
نوع بایاسی که ما در اینجا از آن صحبت می کنیم ، نوع مناسبی است : ساختارهای نسبتاً کلی ، الگوریتم ها و واکنش هایی که می توانند از قبل ایجاد شوند، که از عهده یادگیری بسیار کارآمد تری برآیند. توجه داشته باشید که این بایاس ها برای ربات ها در محیط بسیار مهم هستند ، اما نشان خواهیم داد که آن ها حداقل به اندازه فرآیند های یادگیری ماشین در کارخانه ، حائز اهمیت هستند ( هرچند متفاوت هستند).
چه چیزی باعث می شود بایاس مفید باشد و نه مضر؟ بایاس باید محدودیت هایی را بیان کند که در همه (یا به احتمال زیاد در هر کدام از آن ها) مشکلاتی که ممکن است نیاز باشد در این سیستم یادگیری برطرف شود، وجود داشته باشد. یک مثال مناسب، شبکه های عصبی کانولوشنی است. محدودیت هایی در ساختار و پارامترهای CNN وجود دارد که از فرآیند تصویربرداری و از توزیع اساسی تصاویر طبیعی ناشی می شود : در الگو هایی که برای بسیاری از کارهای ادراکی مهم هستند ، تمایل به وجود موقعیت مکانی و استقلال ترجمه وجود دارد.
ما باید بر استخراج بیشتر چنین بایاس های ساختاری مفیدی تمرکز کنیم. آن ها ممکن است به شکل معماری شبکه عصبی (مانند شبکه های عصبی گراف یا سازمان های حافظه) ، الگوریتم ها (مانند بهینه سازی مسیر یا برنامه ریزی جستجوی رو به جلو) یا انواع مختلفی از واکنش های ساده باشد. آن ها ممکن است از درک هوش طبیعی (به عنوان مثال ، “دانش اصلی” Spelke در مورد نوزادان انسان) یا دنیای فیزیکی (به عنوان مثال ، رابطه بین نیرو ، جرم ، شتاب ، اصطکاک ، سرعت و موقعیت) یا بینش الگوریتمی (جستجوی پیش رو و یا استنتاج مونت کارلو) ناشی شوند.
ما مهندسان در رویاهایمان، به دنبال شرایطی هستیم که در کارخانه ربات بتوانیم با در نظر گرفتن مشخصات و ویژگی ها و استفاده از ابزارهای نرم افزاری برای جمع آوری معماری مبتنی بر مجموعه ای مناسب از بایاس های ساختاری ، مجموعه ای از محیط های شبیه سازی شده و واقعی ایجاد کنیم و از روش های یادگیری ماشین برای رسیدن به یک برنامه اولیه عالی برای یک ربات استفاده کنیم تا یک ربات بصورت سریع و یکپارچه آموزش ببیند و با محیط سازگار شود و به یک عضو مفید و دوست داشتنی از خانواده تبدیل شود.