به نام خدا
هوش مصنوعی Artificial Intelligence تکنیکی برای خلق کردن ماشینهای است که قادر به فکر کردن بدون نیاز به انسان ها میباشند.
یک ماشین تنها در صورتی به عنوان یک AI شناخته میشود که از یکسری قابلتهای خاص برخودار باشد.
یکی از این قابلیتها داشتن شناخت از وجود خود و یا sentient بودن است. این بدین معناست که ماشین از وجود خود آگاه باشد.
هر انسان به طور طبیعی از حضور و وجود خود آگاه است اما هنوز مدرکی دال بر sentient بودن حیوانات در دست نیست.
تا کنون ماشینی که توانایی درک از خود را داشته باشد خلق نشده است اگر چه یک گروه از دانشمندانی که در حال انجام یکسری ازمایشات بر روی رباتهای زنده ((living robots ای که به گونه ای طراحی شده بوده اند که به طور مستقل فکر کنند، بوده اند ادعا کرده اند که یکی از ربات های آنها به نام گک (Gaak ) تلاش کرده است تا از محل زندگی خود فرار کند.
این ربات که در آزمایش “survival of the fittest” (زنده ماندن قویتر ها) شرکت داشته، سعی کرده تا از یکی از مبارزات روزانه اش بگریزد.
گک ابتدا در کنار یک دیواره شروع به حرکت کرده و سپس پس از یافتی یک حفره به بیرون خزیده است اما هنگام فرار در یکی از اتوبانهای نزدیک محل آزمایش توسط یک اتومبیل از بین رفته است. اگرچه این حادثه میتواند نشانگر هوشمند بودن این ربات باشد اما دلیل قاطعی برای اثبات این موضوع نیست.
آزمایشی برای تشخیص هوشمند بودن ربات ها:
“turning test” نام آزمون بین المللی است که توسط آن هوشمند بودن یک ماشین مورد آزمایش قرار میگیرد.
این آزمون بعد از Alan Turning، نابغه ریاضی که برای اولین بار این روش را پیشنهاد کرد اینگونه نام گرفت.
در این تست 2 نفر (ََA و B ) در یک اتاق در بسته نشسته و نفر سوم (C ) در خارج از اتاق قرار میگیرد. نفر اول A سعی میکند تا نفر سوم را در مورد جنسیت خود (ربات یا انسان بودن) گمراه کند، در حالی که نفر دوم B تلاش میکند تا به نفر سوم C برای شناختن جنسیت نفر اول یاری دهد.
ترنینگ پیشنهاد کرد که جای نفر اول با ماشین تعویض شود. در صورتی که آن ماشین بتواند همواره نفر سوم را مانند یک انسان فریب دهد آن ماشین احتمالاً هوشمند است.
AI های متخصص:
این نمونه از نرم افزارها برای انجام یکسری کارهای تخصصی طراحی شده اند و به طبع از قابلیتهای بالایی نیز برخودار میباشند. اینگونه برنامه ها معمولاً به یک بانک اطلاعاتی بسیار وسیع مجهز میباشند که آنها را قادر به پاسخگویی به سوالات کاربران میسازد.
در حقیقت این برنامه ها برای رشته هایی مانند پزشکی، مهندسی و... طراحی شده اند و وظیفه آنها ذخیره سازی اطلاعات مفیدی است که به خاطر سپردن آنها توسط انسان بسار دشوار میباشد، اگرچه اینگونه برنامه ها از یک اشکال پایه ای رنج میبرند.
تا زمانی که سوال مطرح شده توسط کاربر در محدوده اطاعات ذخیره شده در آنهاست هیچ مشکلی پیش نخواهد امد اما ظعف آنها هنگامی پدیدار میشود که سوال مطرح شده کمی خارج از حوزه اطلاعاتی آنها قرار گیرد که در این صورت اینگونه برنامه ها به کلی از پاسخ گویی به سوال درمانده خواهند بود.
این ناتوانی از آنجا ناشی میشود که این دسته از برنامه ها توانایی generalization یا عمومیت دادن را ندارند.
منظور از generalization و یا عمومیت دادن چیست؟
منظور از generalization توانایی خلق کردن اطلاعات جدید بر اساس اطلاعات قدیمی است. تمامی انسان ها از این توانایی برخوردار هستند اگرچه ماشین ها به طور کامل و همانند انسان چنین توانایی را ندارند.
برای درک بهتر موضوع به این مثال ساده توجه کنید:
جان در یک کمپانی کار میکند. در محل کار او کابلهایی وجود دارد که توسط یکسری اشکال خواص علامت گذاری شده اند و نشانگر این موضوع هستند که این کابل ها حامل برق میباشند.
جان در محل دیگری یکسری کابل با علائم مشابه را مشاهده میکند و نتیجه میگیرد که این کابل ها نیز حاوی جریان برق هستند.
Neutral nets چیست؟
Neutral nets مدل ریاضی مغز میباشد که در حقیقت همانند مغز موجودات زنده عمل میکند اما بر خلاف سایر AI ها بر مبنای منطق طراحی نشده است. مبنای ساختاری Neutral nets در حقیقت گروهی از neurones (سلول های عصبی) ها هستند که با هم در ارتباط میباشند و دارای بار ریاضی هستند.
این گونه سیستم ها قادر به یادگیری از تجربیات خود هستند و این باعث میشود که آنها تا حدودی از توانایی generalize کردن برخوردار شوند و این یکی از مزایای این گونه سیستم ها میباشد.
Neutral nets دی کنار مزایایی که دارد از معایبی نیز برهستند. برای مثال برای آماده کردن آنها به کار و وقت بسیار زیادی نیاز است زیرا اینگونه سیستم ها قبل از به کار گرفته شدن باید آموزش داده شوند. آنها از برخی جهات به کودکان شباهت دارند و هر مطلب باید چندین بار برای آنها تکرار شود تا آن را بیاموزند.
AI در بازی ها:
AI در بازیهای کامپیوتری معمولاً در نقش دشمن و یا متحدین شما ظاهر میشود.
در برخی موارد طراحان بازی ترجیح میدهند تا بیشتر بر روی بالا بردن گرافیک بازی سرمایه گذاری کنند تا AI و این موضوع باعث میشود که بازیکنان خبره به راحتی AI را شکست دهند و یا در برخی موارد از آنجایی که AI به کدهای اصلی بازی دسترسی دارد با تقلب بازی را برده و موجب عصبانیت کاربر میشود.
به نام خدا
یك درخت را در نظر بگیرید كه از ریشه تنه شاخه برگ گل ... تشكیل شده است یعنی از اگر از ریشه شروع كنیم و همین طور جلو بریم به برگها یا گلها میرسیم ، ریجستری در ویندوز هم یك ساختار درختی دارد ، البته در نگاه اول ممكنه برای شما عجیب و غیر قابل فهم باشد ،اما windows Explorer را در ویندوز در نظر بگیرید كه از My Computer شروع شده بعد به درایوها میرسیم بعد شاخه ها یعد زیر شاخه ها .... تا نهایتا به فایلها میرسیم ساختار ریجستری نیزدقیقا چنین ساختاری را دارد.
هر شاخه اصلی با آیكون Folder نمایش داده می شود كه به آنها اصطلاحا Hive نیز گفته می شود. هر شاخه خود می تواند شامل زیر شاخه هایی باشد تا نهایتا به متغیرها یا مقادیر برسند. در متغیرها است كه اطلاعات واقعی رجیستری ذخیره می شود.
در رجیستری سه نوع متغیر وجود دارد كه عبارتند از :String , Binary , Dword كه هر كدام از آنها در شرایط خاصی قابل استفاده می باشد. به طور شش شاخه اصلی در رجیستری وجود دارند كه هر كدام بخشی از اطلاعات ذخیره شده در رجیستری را نگهداری می كنند كه در اینجا اشاره ای كوتاه بر هر كدام داریم:
HKEY_CURRENT_USER: این شاخه به بخشی از اطلاعات شاخه HKEY_USERS اشاره می كند كه در آن خصوصیات و اطلاعات كاربر فعلی از قبیل نام كاربر، تنظیمات میز كاری (Desktop) ، تنظیمات منوی شروع (Startmenu) و ... در سیستم نگهداری می شود.
HKEY_CLASS_ROOT: این شاخه شامل اطلاعاتی از قبیل :نگاشت پیوستگی فایلها برای پشتیبانی از ویژگی كشیدن و رها كردن (DragandDrop) ، اطلاعات OLE ، میانبرهای ویندوز(Shortcuts) ، و هسته اصلی واسط كاربری ویندوز (User Interface) میباشد.
HKEY_LOCAL_MACHINE: این شاخه شامل اطلاعاتی در مورد خصوصیات سیستم كامپیوتر از قبیل سخت افزار ، نرم افزار و دیگر مشخصه های كامپیوتر می باشد، كه ان اطلاعات برای تمام كاربرانی كه از سیستم استفاده می كنند یكسان می باشد.
HKEY_USERS: این شاخه محتوای اطلاعات انتخابات و تنظیمات مربوط به هر كاربر می باشد.هر كاربر یك SID در این شاخه دارد .
HKEY_CURRENT_CONFIG: این شاخه نیز به شاخه LOCAL_MACHINE اشاره میكند و در ارتباط میباشد و شامل پیكربندی سخت افزار سیستم می باشد.
HKEY_DYN_DATA: این شاخه نیز به شاخه HKEY_LOCAL_MACHINE اشاره می كند و برای استفاده از خاصیت PLUG & PLAY در ویندوز می باشد . این بخش پویا می باشد یعنی بر اساس هر وسیله یا دستگاه جانبی كه به سیستم متصل می شود تغییر می كند.
پنج نوع متغیر نیز وجود دارد كه هر كدام در زیر شرح داده شده اند:
REG_BINARY : این نوع متغیر داده نوع باینری خام را ذخیره می كند.اكثرا اطلاعات سخت افزار و اجزاء در این نوع متغیر ذخیره می شود و همچنین در ویرایشگر رجیستری ویندوز قابلیت نمایش این نوع متغیر به صورت هگزا دسیمال نیز وجود دارد.
REG_DWORD : این نوع متغیر برای نمایش داده های 4 بایتی و همچنین برای ذخیره كردن مقادیر منطقی درست یا غلط(TRUE OR FALSE) به كار میروند.بدین ترتیب كه برای نمایش غلط ار عدد "0" و برای نمایش درست از "1" استفاده میشود . علاوه بر این برای نگهداری پارامترهای گرداننده ددستگاهها و سرویس دهنده ها از اسن نوع پارامتر لستفاده می كنند.و در REGEDT32 قابلیت نمایش به صورت باینری ،هگزا و دسیمال را دارد.
REG_EXPAND_SZ : این یك نوع متغیررشته ای فابل گسترش می باشد كه نرم افزار ها جهت بعضی اعمال خود از این متغیر استفاده می كنند.برای مثال در ویندوز 2000 یاNT به جای عبارت %SYSTEM ROOT% با مقدار واقعی خود یعنی مسیر نصب ویندوز (مثلا C:WINDOWS) جایگزین می شود. باید توجه داشته باشید كه این نوع متغیر فقط در ویرایشگرهای پیشرفته رجیستری از قبیل REGEDT32 قابل استفاده است.
REG_MULTI_SZ : این نوع متغیر رشته ای چند گانه می باشد كه برای مقادیری كه شامل یك لیست یا چندین مقدار میباشد به كار می رود كه هر مقدار با كاراكتر NULL از بقیه جدا می شود. باید توجه داشته باشید كه این نوع متغیر فقط در ویرایشگرهای پیشرفته رجیستری از قبیل REGEDT32 قابل استفاده است.
REG_SZ : این نوع متغیر رشته ای استاندارد می باشد كه برای ذخیره كردن متن قابل خواندن توسط كاربر استفاده می شود.
انواع دیگر نوع داده كه در ویرایشگرهای استاندارد قابل استفاده نیستند عبارتند از :
REG_DWORD_LITTLE_ENDIAN : كه یك عدد 32 بیتی از نوع LITTLE_ENDIAN را می توانند در خود ذخیره كنند.
REG_DWORD_BIG_ENDIAN : كه یك عدد 32 بیتی از نوع BIG_ENDIAN را می توانند در خود ذخیره كنند.
REG_LINK : كه یك پیوند نماد ین یونیكد می باشد و به طور داخلی استفاده میشود و نرم افزارها قادر به استفاده كردن از آن نمی باشند.
REG_NONE : كه نوع خاصی برای آن تعریف نشده است.
REG_QWORD : این نوع متغیر می تواند یك عدد 64 بیتی را در خود ذخیره كند.
REG_QWORD_LITTLE_ENDIAN : این نوع متغیر نیز می تواند یك عدد 64 بیتی با فرمت LITTLE_ENDIAN را در خود ذخیره كند .
REG_RESOURCE_LIST : لیست منبع گرداننده های دستگاه ها می باشد