پیدایش و پیشرفت هوش مصنوعی
توضیحات:
-
به نام خدا
در اواسط دهه ۱۹۹۰، یک بازی تیراندازی اول شخص منتشر شد که به کاربر امکان میداد بازی را برای خود سفارشی (Customize) کند. این بازی، Quake بود که در فناوری ساخت بازیهای کامپیوتری یک نوآوری محسوب میشد. Quake اولین بازی سهبعدی واقعی است. به این معنی که بهصورت بلادرنگ در سه بعد رندر میشود. (پیش از آن spirit ها یا گرافیکهای دوبعدی به صورت سهبعدی شبیهسازی میشدند). چیزهای دیگری نیز در این بازی وجود داشت که موردتوجه قرار گرفت؛ مانند نشانه گرفتن سلاح به بالا یا پایین. زیرا حرکتدادن سلاح به بالا یا پایین نیازمند پردازش در بعد سوم، یعنی عمق یا ارتفاع در یک محیط سهبعدی است.
بازی Quake از موجودات مجازی هوشمند (bot) هر چند با هوش مصنوعی کم، بهره برده بود. هوش مصنوعی یکbot در بازیهای تیراندازی اول شخص، میتواند در دو بخش بررسی شود: یکی ناوبری و حرکت، و دیگری مبارزه. اگر بخواهیم رفتار bot نزدیک به رفتار یک انسان باشد، پیادهسازی آن بسیار پیچیدهتر از هوشمصنوعی در مبارزه است. هر چند پیادهسازی هوش مصنوعی در مبارزه نیز با هر استاندارد و روشی آسان نیست.
برای اینکه باتها بتوانند حرکت کنند، باید بتوانند درباره اشیا و موجودات پیرامون خود یاد بگیرند. این ایده بسیار اساسی، میتواند به بخشهای بیشتری مانند قابلیت آنالیز هنگام حرکت در یک جهت خاص و سپس قابلیت پیدا کردن اشیا و شخصیتهای مجازیِ مقابل در یک مرحله بازی گسترش یابد. این ایدهها شاید ساده به نظر برسند، ولی واقعاً اینگونه نیست؛ چرا که یک bot باید بتواند در برابر دو چیز واکنش درستی داشته باشد: دیوارها و فضاهای خالی. دیوارها شامل همه چیزهایی است که نمیتوان از آن عبور کرد؛ مانند خود یک دیوار، نرده، شخصیتهای مجازی، جعبهها، پلههای رو به بالا و … فضاهای خالی نیز هر جایی است که زمین همواره نیست یا دچار شکستگی است؛ مانند یک چاله، پلههای رو به پایین و … . برای رویارویی با این دو مانع، یک روش خوب، افزایش کارایی تابع جستجو است. این تابع که در بازی Quake معرفی شد، به بات امکان میدهد یک خط را از یکی از بُعدهای X-Y-Z تا بُعد بعدی جستجو کند و اطلاعاتی مانند اینکه <این خط به کجا میرود، چه چیزی آن را قطع میکند و …> را دریافت کند.
دو روش برای گذشتن یکبات از یک مرحله، بیشتر مورد استفاده قرار میگیرد: روش نخست از گرههای گراف وضعیت و روش دوم از مسیرهای (path) آن استفاده میکند. در یک محیط براساس روش گره، گرهها در قسمت قوانین بهینهسازی مرحله (level) که به وسیله سازنده یک bot تعریف شده است قرار دارند. هر گره میتواند اطلاعات بات درباره قسمت خاصی از محیط را بدهد. وضعیت مبارزه، کاربردهای زیادی برای تعدادی از الگوریتمهای جستجو یا پروسه تصمیمگیری دارد. در یک مبارزه، باید برای تشخیص اینکه کدام کار برای بات بهتر است حرکتهای رقیب پیشبینی شود.
روش Minimax، در مواقعی که یک تابع هیورستیک خوب (یک هیورستیک برخلاف الگوریتم، ممکن است به یک پاسخ قطعی نرسد) در دست باشد، میتواند یک حرکت خوب را انجام دهد. از آنجا که minimax روش کندی است، میتوان از Partial Minimax استفاده کرد که در الگوریتمهای تصمیمگیری به کار میرود؛ هر چند این روش هنوز چندان پذیرفته نشده است. پژوهشگران هوش مصنوعی پیشنهاد میکنند، تنها زمانی از Partial Minimax استفاده کنید که یک گزینه بدیهی در دست داشته باشید (زمانی که متغیر minimax با ارزش بیشتر کاملا بهتر از متغیر دیگر باشد). در غیر اینصورت اگر ارزش همه متغیرها نزدیک به هم است، از استراتژی دیگری استفاده کنید. حال آنکه در یک بازی بلادرنگ برای یکbot معمولاً گزینه بدیهی وجود ندارد تا آن را برگزینید. هر گزینه به یک استراتژی متفاوت وابسته است که bot میتواند آن را انتخاب کند.
شاید بسیاری از طرفداران روش minimax به ارزش سرعت، هنگام بررسی کارایی یک بات در بازی بلادرنگ واقف نیستند؛ مانند کمترین زمانی که یک بات نیاز دارد تا درباره یک تصمیم بیندیشد، گزینههای بیشتری که برای تصمیمگیری ایجاد میکند، کیفیت واکنش بهتر و سطح خبرگی. به یاد داشته باشید که یک بات در برابر مغز یک انسان که میتواند دنیای سهبعدی را با کمک حس و تخیل خود تفسیر کند، قرار میگیرد. برای نمونه در یک مبارزه، یک بات نیاز به نشانهگیری به سوی دشمن خود، پیشبینی حرکت آن و… دارد که همه، بدون داشتن درک واقعی از محیطی که در آن قراردارد انجام میشود.
برای دستیابی به بیشترین سرعت، بیشتر از الگوریتم *A استفاده میشود. هر چند این الگوریتم پیشرفته نیست، ولی سرعت بالایی دارد. پیچیدگی زمانی این الگوریتم ((O(log h(n است که (h(n پیچیدگی تابع هیورستیک است. *A یک الگوریتم جستجوی “اول عمق” است که هیورستیک آن را کنترل میکند و میتواند مناسبترین شاخه بعدی گراف را حدس بزند و در هر عمق، تنها شاخهای که ارزش هیورستیک بهتری دارد، گسترش مییابد.