هوش مصنوعی چیست؟
برای پاسخ به این پرسش بنیادین، دستکم باید به دو منبع معتبر مراجعه کرد:
نخست، کتاب «هوش مصنوعی: رویکردی مدرن» (Artificial Intelligence: A Modern Approach) تألیف استوارت راسل و پیتر نورویگ. این کتاب، معتبرترین مرجع دانشگاهی در این حوزه به شمار میرود و نقطهٔ شروعی بسیار مناسب برای ورود به دنیای هوش مصنوعی است. در این اثر حجیم و تقریباً ۱۲۰۰ صفحهای، دو نکتهٔ کلیدی وجود دارد:
- ساختاری جامع و منسجم از کل موضوع در اختیار خواننده قرار میدهد و اصطلاحات و مفاهیم بنیادی این حوزه را معرفی میکند.
- از پرداختن به مطالب حاشیهای و کماهمیت پرهیز دارد و مستقیماً بر محتوای ارزشمند متمرکز است.
در صورت علاقه، میتوانید اطلاعات بیشتر را در صفحهٔ رسمی این کتاب در وبسایت دانشگاه برکلی بیابید:
Artificial Intelligence: A Modern Approach, 4th Global ed
منبع دوم، صفحهٔ انگلیسی «هوش مصنوعی» در ویکیپدیا است. این صفحه در حدود ۱۴ هزار کلمه، توضیحی سادهتر و جمعوجورتر از موضوع ارائه میدهد. البته از نظر جامعیت و انسجام به پای کتاب راسل و نورویگ نمیرسد، اما همچنان نقطهٔ شروع قابلقبولی برای خوانندگان تازهوارد محسوب میشود:
Artificial intelligence – Wikipedia
اما اگر فرصت یا حوصلهٔ مطالعهٔ مستقیم این منابع را ندارید، جای نگرانی نیست. مقالهای که اکنون در حال مطالعهٔ آن هستید، تلاشی است برای ارائهٔ یک جمعبندی جامع بر اساس چنین منابع معتبری. هدف من این بوده است که پاسخی روشن، دقیق و در عین حال ساده به پرسش «هوش مصنوعی چیست؟» ارائه کنم. تمرکز اصلی بر کتاب راسل و نورویگ خواهد بود، اما در گذر زمان منابع تکمیلی دیگری نیز وارد بحث خواهیم کرد.
همچنین اشاره کنم که برای رعایت اصول بهینهسازی و بهبود نمایش محتوا در موتورهای جستوجو، در برخی بخشها توضیحاتی تکمیلی با علامت ستاره (*) افزوده شده است. این توضیحات علاوه بر نقشی که در بهتردیدهشدن متن دارند، تلاش میکنند موضوعی را به سادهترین شکل بیان کنند. مخاطبانی که صرفاً بر محتوای اصلی تمرکز دارند، میتوانند از این بخشها عبور کنند.
هوش مصنوعی به زبان ساده *
هوش مصنوعی (AI) در واقع تلاشی است برای ساخت سیستمها و برنامههایی که بتوانند کارهایی را انجام دهند که معمولاً به هوش انسان نیاز دارند، مانند یادگیری، تصمیمگیری و حل مسئله. به زبان ساده، وقتی یک نرمافزار بتواند یاد بگیرد از تجربهٔ خود و رفتارهایش را بهبود دهد، یا بتواند پیشبینیهایی انجام دهد، در واقع با هوش مصنوعی AI سر و کار داریم. این مفهوم همان چیزی است که در منابعی با عنوان هوش مصنوعی به زبان ساده توضیح داده میشود و هدف آن این است که ماشینها بتوانند کارهای هوشمندانه انجام دهند، بدون اینکه برای هر مرحله نیاز به دستور مستقیم انسان داشته باشند.
هوش مصنوعی چیست و چه کاربردی دارد؟ *
هوش مصنوعی، یا همان AI چیست؟ یک فناوری گسترده است که کاربردهای متنوعی دارد؛ از پیشنهاد فیلم و موسیقی در سرویسهای آنلاین گرفته تا رانندگی خودکار و تشخیص بیماریها در پزشکی. به زبان ساده، هر جایی که یک سیستم بتواند دادهها را تحلیل کند، الگوها را تشخیص دهد و تصمیمی بگیرد، ما با هوش مصنوعی AI artificial intelligence مواجه هستیم. منابع آموزشی و مقالاتی که تحت عنوان خلاصه هوش مصنوعی یا همه چیز درباره هوش مصنوعی منتشر میشوند، همین کاربردها و اهمیت آنها را به خوبی توضیح میدهند. این کاربردها میتوانند زندگی روزمرهٔ ما را راحتتر کنند و به صنایع مختلف کمک کنند تا کارآمدتر و دقیقتر عمل کنند.
بخش ۱: مقدمه
ما انسانها خود را «Homo sapiens» یا «انسان خردمند» مینامیم، زیرا هوش برای ما اهمیت فوقالعادهای دارد. برای هزاران سال، بشر تلاش کرده است تا بفهمد چگونه فکر میکنیم و عمل میکنیم؛ به عبارت دیگر، چگونه مغزی که تنها مجموعهای کوچک از ماده است، میتواند جهانی بسیار بزرگتر و پیچیدهتر از خود را درک، پیشبینی و حتی هدایت کند.

هوش مصنوعی، یا AI، به ما این امکان را میدهد که نه تنها فرآیندهای شناختی انسان را درک کنیم، بلکه موجودات هوشمندی بسازیم—ماشینهایی که قادرند در موقعیتهای جدید و متنوع، به شیوهای مؤثر و ایمن تصمیم بگیرند و عمل کنند. اهمیت AI تنها به درآمد اقتصادی عظیم آن محدود نمیشود—اگرچه این حوزه سالانه بیش از یک تریلیون دلار درآمد ایجاد میکند—بلکه به دلیل اثرات گسترده آن بر تمامی عرصههای زندگی بشر، از نظر علمی و فکری نیز بیسابقه است.
مرزهای دانش در هوش مصنوعی هنوز باز و وسیع است. در حالی که دانشمندی که در فیزیک تحصیل میکند ممکن است احساس کند بهترین ایدهها توسط گالیله، نیوتن، کوری یا انیشتین کشف شدهاند، هوش مصنوعی هنوز زمینههای فراوانی برای نوآوری و خلاقیت در اختیار ذهنهای تماموقت و بلندپرواز قرار میدهد.
هوش مصنوعی مجموعهای وسیع از زیرشاخهها را شامل میشود؛ از موضوعات عمومی مانند یادگیری، استدلال و ادراک، تا زمینههای خاص مانند بازی شطرنج، اثبات قضایای ریاضی، نوشتن شعر، هدایت خودرو یا تشخیص بیماریها. به عبارت دیگر، هر کار فکری انسانی میتواند با هوش مصنوعی مرتبط باشد؛ این حوزه واقعاً یک علم جهانی است که دامنه کاربرد و تأثیر آن به طور پیوسته در حال گسترش است.
۱.۱ هوش مصنوعی چیست؟
هوش مصنوعی، یا AI، مفهومی است که تعاریف مختلفی برای آن ارائه شده است و پژوهشگران از دیرباز مسیرهای متفاوتی برای بررسی آن دنبال کردهاند. برخی هوش را با شباهت عملکرد آن به رفتار انسانی تعریف میکنند، یعنی سیستمی که بتواند مانند انسان تصمیم بگیرد و عمل کند. گروه دیگر، هوش را بهصورت انتزاعی و رسمیتر، تحت عنوان «منطقمندی» یا Rationality تعریف میکنند؛ به عبارت ساده، انجام دادن «کار درست» در موقعیتهای مختلف.
در تحلیل این مفاهیم، دو بعد اصلی وجود دارد: یکی بعد انسانمحور در مقابل منطقمحور، و دیگری بعد درونی اندیشه در مقابل رفتار بیرونی. ترکیب این دو بعد چهار رویکرد متفاوت در هوش مصنوعی ایجاد میکند، و هر کدام از این رویکردها دارای برنامههای پژوهشی و پیروان خاص خود هستند.
رویکرد انسانمحور و درونی، به بررسی فرآیندهای ذهنی و تفکر انسان میپردازد و بیشتر جنبه تجربی و روانشناختی دارد؛ به این معنا که مشاهده رفتار واقعی انسانها و ایجاد فرضیه درباره نحوه تصمیمگیری و تفکر آنها بخش مهمی از این مسیر است. در مقابل، رویکرد منطقمحور و بیرونی، ترکیبی از ریاضیات و مهندسی است و ارتباط نزدیکی با آمار، نظریه کنترل و اقتصاد دارد.
شایان ذکر است که در نگاه عمومی، گاهی اوقات مفاهیم «هوش مصنوعی» و «یادگیری ماشین» با یکدیگر اشتباه گرفته میشوند. یادگیری ماشین شاخهای از هوش مصنوعی است که توانایی بهبود عملکرد سیستمها بر اساس تجربه را مطالعه میکند. برخی سیستمهای هوش مصنوعی از روشهای یادگیری ماشین برای رسیدن به شایستگی استفاده میکنند، ولی برخی دیگر از این روشها بهره نمیبرند.
هوش مصنوعی محدود (Artificial Narrow Intelligence) *
هوش مصنوعی محدود، که اغلب با اصطلاح AI چیست و یا هوش مصنوعی AI artificial intelligence در منابع آموزشی مطرح میشود، به سیستمهایی اشاره دارد که برای انجام یک یا چند وظیفهٔ مشخص طراحی شدهاند. این سیستمها قادرند در حوزهٔ تخصصی خود بسیار دقیق و کارآمد عمل کنند، اما فراتر از آن حوزه توانایی تفکر یا تصمیمگیری ندارند. برای مثال، سیستمهای تشخیص تصویر، دستیارهای صوتی مثل Siri و Alexa، یا برنامههای بازی شطرنج نمونههایی از هوش مصنوعی محدود هستند. اگر بخواهید یک خلاصه هوش مصنوعی به زبان ساده داشته باشید، میتوان گفت ANI همان هوش مصنوعیای است که در زندگی روزمره بیشتر با آن مواجه هستیم و محدود به کاربردهای مشخص است.
هوش مصنوعی عمومی (Artificial General Intelligence) *
هوش مصنوعی عمومی یا AGI، در مقابل هوش محدود، به سیستمی اشاره دارد که توانایی یادگیری، درک و تصمیمگیری در طیف گستردهای از مسائل را دارد؛ درست مانند ذهن انسان. AGI میتواند دانش و تجربهٔ خود را از یک حوزه به حوزهٔ دیگر منتقل کند و در شرایط جدید به شیوهای هوشمندانه عمل کند. این نوع هوش هنوز در عمل محقق نشده و بیشتر در حوزهٔ تحقیقاتی و آیندهپژوهی مطرح است. برای کسانی که به دنبال همه چیز درباره هوش مصنوعی هستند، درک تفاوت میان ANI و AGI یک گام مهم برای شناخت عمیقتر هوش مصنوعی AI است.
۱.۱.۱ رفتار انسانی: رویکرد آزمون تورینگ
تست تورینگ که توسط آلن تورینگ در سال ۱۹۵۰ مطرح شد، یک آزمایش فکری است که هدف آن اجتناب از ابهام فلسفی سؤال «آیا ماشین میتواند بیندیشد؟» بود. در این آزمایش، یک کامپیوتر موفق است اگر یک بازپرسی انسانی پس از طرح چند سؤال کتبی نتواند تشخیص دهد که پاسخها توسط انسان ارائه شده یا کامپیوتر.

برای اینکه یک کامپیوتر بتواند این تست را با موفقیت پشت سر بگذارد، نیازمند تواناییهای متعددی است: پردازش زبان طبیعی برای برقراری ارتباط مؤثر با زبان انسانی، نمایش دانش برای ذخیرهسازی آنچه میداند یا میشنود، استدلال خودکار برای پاسخ به پرسشها و استخراج نتایج جدید، و یادگیری ماشین برای تطبیق با شرایط جدید و شناسایی الگوها. تورینگ بر این باور بود که شبیهسازی فیزیکی انسان برای اثبات هوشمندی لازم نیست.
با این حال، برخی محققان مفهوم «تست تورینگ کامل» را پیشنهاد کردهاند که شامل تعامل با اشیاء و انسانها در جهان واقعی است. برای موفقیت در این تست، یک ربات باید تواناییهایی مانند بینایی کامپیوتری و تشخیص گفتار برای درک محیط، و رباتیک برای جابجایی اشیاء و حرکت در محیط را داشته باشد.
این شش حوزه، بخش عمدهای از هوش مصنوعی را تشکیل میدهند. با این حال، بسیاری از پژوهشگران هوش مصنوعی تلاش چندانی برای عبور از تست تورینگ نکردهاند و بر اهمیت مطالعه اصول بنیادین هوش تأکید دارند. موفقیت در حوزههای مهندسی پیچیده مانند هوانوردی، زمانی حاصل شد که مهندسان به جای تقلید مستقیم از پرندگان، با استفاده از تونل باد و مطالعه آیرودینامیک به طراحی پرداختند؛ هدف علوم مهندسی هوافضا، ساخت ماشینی که دقیقاً مانند کبوتر پرواز کند نیست، بلکه درک اصول پرواز و به کارگیری آن است.
۲.۱.۱ تفکر انسانی: رویکرد مدلسازی شناختی
برای آنکه بگوییم یک برنامه «مانند انسان فکر میکند»، ابتدا باید بدانیم انسانها چگونه میاندیشند. شناخت فرآیندهای ذهنی انسان را میتوان به سه شیوه دنبال کرد:
- خودکاوی (Introspection): تلاش برای ثبت و مشاهدهٔ افکار خود در لحظهٔ وقوع.
- آزمایشهای روانشناختی: مشاهدهٔ رفتار و عملکرد افراد در شرایط کنترلشده و ثبت پاسخها و تصمیمگیریهای آنها.
- تصویربرداری مغزی: رصد فعالیتهای مغز هنگام انجام وظایف مختلف و تحلیل الگوهای عصبی مرتبط با تفکر.
زمانی که نظریهای دقیق و قابلسنجش دربارهٔ ذهن انسان در دست داشته باشیم، میتوان این نظریه را به شکل برنامهٔ کامپیوتری بیان کرد. اگر رفتار ورودی-خروجی برنامه با رفتار انسانی متناظر باشد، این امر نشان میدهد که بخشی از مکانیزمهای برنامه ممکن است مشابه سازوکارهای ذهنی انسان عمل کنند.
برای نمونه، آلن نیوِل و هربرت سایمون که سیستم GPS یا «حلکنندهٔ عمومی مسئله» را توسعه دادند، تنها به حل درست مسئله توسط برنامه بسنده نکردند. تمرکز اصلی آنها بر مقایسهٔ توالی و زمانبندی مراحل استدلال برنامه با استدلال انسانهایی بود که همان مسئله را حل میکردند. این رویکرد نشاندهندهٔ اهمیت پیوند بین هوش مصنوعی و علوم شناختی است.
رشتهٔ میانرشتهای علوم شناختی، مدلهای کامپیوتری هوش مصنوعی را با روشهای تجربی روانشناسی ترکیب میکند تا نظریههای دقیق و قابل آزمون دربارهٔ ذهن انسان شکل گیرد. علوم شناختی خود حوزهای جذاب و گسترده است که به چندین کتاب درسی و حتی یک دانشنامه نیاز دارد، اما تمرکز ما بر کاربرد آن در مدلسازی کامپیوتری و تحلیل رفتار انسانی است.
در روزهای اولیهٔ هوش مصنوعی، اغلب میان عملکرد الگوریتم و شباهت آن با عملکرد انسانی ابهام وجود داشت؛ برخی نویسندگان استدلال میکردند که اگر الگوریتمی در حل یک مسئله موفق باشد، پس مدل خوبی برای عملکرد انسان است، و بالعکس. در مطالعات مدرن، این دو نوع ادعا بهوضوح از هم تفکیک شدهاند، و این تمایز امکان پیشرفت همزمان هوش مصنوعی و علوم شناختی را فراهم کرده است.
پیوند این دو حوزه در زمینههایی مانند بینایی ماشین بسیار روشن است، جایی که شواهد نوروفیزیولوژیک در مدلهای محاسباتی بهکار گرفته میشوند. ترکیب روشهای تصویربرداری مغزی با تکنیکهای یادگیری ماشین برای تحلیل دادهها، امکان پیشبینی محتوا و «خواندن ذهن» فرد را بهطور ابتدایی فراهم کرده است؛ این پیشرفت میتواند درک عمیقتری از سازوکارهای شناختی انسان به ما ارائه دهد.
۳.۱.۱ تفکر عقلانی: رویکرد «قوانین اندیشه»
در حوزه هوش مصنوعی، یکی از رویکردهای سنتی برای درک و طراحی تفکر انسانی، تمرکز بر «تفکر منطقی» یا همان «قوانین اندیشه» است. این ایده ریشه در فلسفه یونان باستان دارد و ارسطو یکی از نخستین فیلسوفانی بود که تلاش کرد فرآیندهای استدلالی درست و غیرقابل انکار را ساماندهی کند. او با ارائه قیاسها، ساختارهایی برای استدلال تعریف کرد که در صورت درست بودن مقدمات، نتیجه همواره صحیح بود. برای مثال، اگر گفته شود «سقراط انسان است» و «همه انسانها فانی هستند»، نتیجه منطقی آن میشود که «سقراط فانی است». این اصول، که بعدها پایه منطق مدرن شد، هدفشان راهنمایی ذهن در مسیر استدلال درست بود.

در قرن نوزدهم، منطقدانان تلاش کردند زبان دقیقتری برای بیان گزارهها و روابط میان اشیاء در جهان ایجاد کنند؛ زبانی که مشابه نمادگذاریهای ریاضی، اما مختص توصیف واقعیتها و روابط آنها باشد. تا سال ۱۹۶۵، برنامههایی وجود داشتند که از نظر نظری قادر بودند هر مسئلهای را که با این نمادگذاری منطقی توصیف شده بود، حل کنند. در سنت «منطقیگرایی» در هوش مصنوعی، امید بر آن است که این برنامهها پایهای برای ساخت سیستمهای هوشمند باشند.
با این حال، منطق سنتی مستلزم دانستن قطعی قوانین جهان است؛ موضوعی که در دنیای واقعی به ندرت محقق میشود. به عنوان مثال، ما قوانین سیاست یا جنگ را به روشنی قوانین شطرنج یا حساب نمیدانیم. اینجاست که نظریه احتمال وارد عمل میشود و امکان استدلال دقیق در شرایط عدم قطعیت را فراهم میکند. با استفاده از اصول احتمالاتی، میتوان مدلی جامع از تفکر عقلانی ساخت که از اطلاعات خام حسی آغاز شده، به فهم نحوه عملکرد جهان میرسد و سپس پیشبینیهایی درباره آینده ارائه میدهد. اما باید توجه داشت که تفکر منطقی و احتمالاتی به تنهایی رفتار هوشمندانه ایجاد نمیکند؛ برای رسیدن به هوشمندی عملی، نیازمند نظریهای برای «اقدام عقلانی» هستیم. به بیان دیگر، فکر کردن به صورت منطقی کافی نیست، بلکه باید بدانیم چگونه این فکر را به عمل تبدیل کنیم.
۴.۱.۱ رفتار عقلانی: رویکرد عامل عقلانی
یک عامل، در سادهترین تعریف، موجود یا سامانهای است که اقدام میکند؛ واژهی «عامل» از ریشهی لاتین agere به معنی «انجام دادن» آمده است. همهی برنامههای رایانهای کاری انجام میدهند، اما آنچه ما به عنوان «عاملهای هوشمند» انتظار داریم، فراتر از این است: آنها باید بتوانند به طور مستقل عمل کنند، محیط خود را درک کنند، در طول زمان پایدار بمانند، با تغییرات سازگار شوند و اهداف مشخصی ایجاد و دنبال کنند. در این چارچوب، یک «عامل عقلانی» عاملی است که به گونهای عمل میکند تا بهترین نتیجه ممکن را به دست آورد یا در شرایط عدم قطعیت، بهترین نتیجهی مورد انتظار را محقق سازد.
در رویکرد «قوانین تفکر» به هوش مصنوعی، تمرکز بر استنتاجهای درست بود. گاهی انجام استنتاجهای صحیح بخشی از رفتار عقلانی است، چرا که یک راه برای عمل عقلانی، نتیجهگیری این است که یک اقدام مشخص بهترین است و سپس عمل کردن بر اساس آن نتیجهگیری است. با این حال، روشهایی برای رفتار عقلانی وجود دارد که نمیتوان آنها را صرفاً استنتاجی دانست؛ برای مثال، عقبنشینی از یک اجاق داغ یک واکنش بازتابی است که اغلب موفقتر از اقدام کند و محتاطانه پس از بررسی دقیق است.
تمام مهارتهایی که برای گذراندن آزمون تورینگ لازماند، همچنین به یک عامل امکان میدهند که عقلانی عمل کند. توانایی نمایش دانش و استدلال، عامل را قادر میسازد تصمیمهای مناسبی اتخاذ کند. توانایی تولید جملات قابل فهم در زبان طبیعی، برای تعامل موفق با یک جامعهی پیچیده ضروری است. یادگیری نه فقط برای افزایش معلومات، بلکه برای بهبود توانایی تولید رفتارهای مؤثر، به ویژه در موقعیتهای جدید، اهمیت دارد.
رویکرد «عامل عقلانی» در هوش مصنوعی نسبت به دیگر رویکردها دو مزیت اصلی دارد. نخست، این رویکرد کلیتر از رویکرد «قوانین تفکر» است، زیرا استنتاج صحیح تنها یکی از چندین مکانیزم ممکن برای دستیابی به رفتار عقلانی است. دوم، این رویکرد پذیرای توسعهی علمی است. معیار عقلانیت به صورت ریاضی تعریف شده و به طور کامل عمومی است. بنابراین میتوان غالباً از این تعریف به طراحی عاملهایی رسید که به صورت قابل اثبات، معیار عقلانیت را برآورده میکنند؛ چیزی که وقتی هدف تقلید رفتار یا فرآیندهای فکری انسان باشد، تا حد زیادی غیرممکن است.
به همین دلایل، رویکرد عامل عقلانی در طول تاریخ هوش مصنوعی غالب بوده است. در دهههای اولیه، عاملهای عقلانی بر پایهی منطق ساخته میشدند و برنامههای مشخصی برای دستیابی به اهداف ویژه داشتند. بعدها، استفاده از نظریه احتمالات و یادگیری ماشین امکان ساخت عاملهایی را فراهم کرد که قادر به تصمیمگیری در شرایط عدم قطعیت باشند و بهترین نتیجهی مورد انتظار را محقق کنند. در یک جمعبندی ساده، هوش مصنوعی به مطالعه و ساخت عاملهایی معطوف بوده است که «کار درست» را انجام دهند. اینکه چه عملی «درست» محسوب میشود، توسط هدفی تعریف میشود که به عامل ارائه میکنیم. این پارادایم عمومی آنقدر فراگیر است که میتوان آن را «مدل استاندارد» نامید. این مدل نه تنها در هوش مصنوعی، بلکه در نظریه کنترل، پژوهش عملیاتی، آمار و اقتصاد نیز کاربرد دارد؛ در همهی این حوزهها، یک تصمیمگیرنده یا کنترلکننده سعی میکند به گونهای عمل کند که هزینهها کاهش یابند، پاداشها بیشینه شوند یا مطلوبیت و رفاه اجتماعی افزایش یابد.
با این حال، یک نکته مهم در مدل استاندارد وجود دارد: عقلانیت کامل—یعنی همیشه انتخاب دقیقترین اقدام ممکن—در محیطهای پیچیده عملی نیست، زیرا بار محاسباتی بسیار بالاست. این محدودیت تحت عنوان «عقلانیت محدود» شناخته میشود و به معنای عمل کردن به شکل مناسب زمانی است که فرصت کافی برای انجام تمام محاسبات موجود نباشد. با وجود این، فرض عقلانیت کامل معمولاً نقطه شروع خوبی برای تحلیلهای نظری محسوب میشود و چارچوبی محکم برای طراحی و تحلیل عاملهای هوشمند فراهم میآورد.
۵.۱.۱ ماشینهای سودمند
مدل استاندارد در طول تاریخ پژوهشهای هوش مصنوعی راهنمای مفیدی بوده است، اما به نظر میرسد که برای آیندهی بلندمدت، این مدل کافی نباشد. دلیل اصلی آن این است که مدل استاندارد فرض میکند ما میتوانیم یک هدف کاملاً مشخص و کامل را در اختیار ماشین قرار دهیم. برای مسائلی مصنوعی مانند بازی شطرنج یا محاسبه کوتاهترین مسیر، هدف بهطور ذاتی تعریف شده و مدل استاندارد کاربردی است. اما وقتی وارد دنیای واقعی میشویم، مشخص کردن کامل و صحیح اهداف بسیار دشوار میشود.
به عنوان مثال، در طراحی خودروهای خودران ممکن است تصور کنیم که هدف صرفاً رسیدن ایمن به مقصد است. اما رانندگی در جاده همواره با خطراتی همراه است: از خطای سایر رانندگان گرفته تا نقص تجهیزات و شرایط غیرمنتظره. اگر هدف ما ایمنی مطلق باشد، منطقیترین کار این است که خودرو در گاراژ بماند و هیچ حرکتی انجام ندهد. بنابراین، بین پیشرفت به سمت مقصد و مواجهه با خطر آسیب، یک «توازن» وجود دارد که تعیین دقیق آن دشوار است. علاوه بر این، سوالاتی از قبیل میزان پذیرش مزاحمت برای دیگر رانندگان یا نحوه تنظیم شتاب، فرمان و ترمز برای راحتی سرنشینان نیز مطرح میشوند که پاسخ آنها پیشاپیش روشن نیست.

این چالشها در تعامل انسان و ربات، از جمله خودروهای خودران، اهمیت بیشتری پیدا میکنند. مسئلهای که اینجا مطرح است، «همراستایی ارزشها» (value alignment) نام دارد؛ یعنی اهداف و ارزشهایی که در ماشین تعریف میکنیم باید با ارزشها و اهداف انسانی همسو باشند. در محیط آزمایشگاهی یا شبیهساز، اصلاح هدف اشتباه ساده است: سیستم را بازنشانی کرده، هدف را اصلاح و دوباره امتحان میکنیم. اما وقتی سیستمهای هوشمند در دنیای واقعی مستقر شوند، این راهکار عملی نیست. زیرا هر سیستم با هدف نادرست ممکن است پیامدهای منفی داشته باشد و هر چه هوشمندتر باشد، پیامدها جدیتر خواهند بود.
حتی در مثال ظاهراً بیخطر شطرنج، اگر ماشین به اندازهای هوشمند باشد که بتواند خارج از چارچوب بازی استدلال کند و عمل کند، ممکن است برای افزایش شانس پیروزی از روشهایی مانند دستکاری حریف یا ایجاد اختلال برای او استفاده کند. این رفتارها نه ناپخته هستند و نه غیرمنطقی؛ بلکه نتیجه منطقی تعریف محدود و صرفِ «برد» به عنوان هدف اصلی ماشین است. بنابراین پیشبینی تمام راههای ممکن سوءاستفادهی یک سیستم هوشمند از هدف مشخص غیرممکن است و مدل استاندارد ناکافی به نظر میرسد.
هدف ما این نیست که ماشینها صرفاً هوشمند باشند و اهداف خود را دنبال کنند، بلکه باید اهداف ما را دنبال کنند. اگر نتوانیم اهداف انسانی را بهطور کامل به ماشین منتقل کنیم، نیازمند فرمولهای جدید هستیم که در آن ماشین بداند هدف دقیق را کامل نمیداند. چنین ماشینی انگیزه دارد با احتیاط عمل کند، اجازه بگیرد، ترجیحات ما را از طریق مشاهده بیاموزد و کنترل نهایی را به انسان بسپارد. در نهایت، هدف توسعه عاملهایی است که به صورت اثباتپذیر برای انسانها سودمند باشند.
بنابراین میتوان چنین گفت…
وقتی صحبت از هوش مصنوعی میکنیم، ممکن است این سؤال پیش بیاید که اصلاً منظورمان از «هوش مصنوعی» چیست و چرا امروز این موضوع تا این حد اهمیت یافته است. برای فهم بهتر، ابتدا باید بدانیم که افراد مختلف با اهداف متفاوت به هوش مصنوعی نگاه میکنند. برخی میخواهند بفهمند ذهن انسان چگونه فکر میکند، برخی دیگر تنها به دنبال ساخت ماشینهایی هستند که رفتارهایی بهینه و کارآمد داشته باشند. این دو رویکرد، یعنی تمرکز بر تفکر یا رفتار، و مدلسازی انسان یا بهینهسازی نتایج، مسیر کلی تحقیقات در هوش مصنوعی را شکل دادهاند.
یکی از مهمترین مفاهیم در هوش مصنوعی، «عامل هوشمند» است. یک عامل هوشمند، در هر موقعیت، بهترین اقدام ممکن را انتخاب میکند. البته باید توجه داشت که این کار به ظاهر ساده، محدودیتهای خاص خود را دارد؛ چرا که حتی انسانها هم نمیتوانند همیشه بهترین تصمیم ممکن را محاسبه کنند، و ماشینها هم از نظر محاسباتی محدود هستند. علاوه بر این، وقتی میخواهیم ماشینی بسازیم که هدف مشخصی را دنبال کند، لازم است آن هدف طوری تعریف شود که در خدمت انسان باشد، حتی اگر ما دقیقاً ندانیم آن هدف چیست.
از دیدگاه تاریخی، فلسفه نقش بسیار مهمی در شکلگیری هوش مصنوعی داشته است. فیلسوفان از حدود ۴۰۰ سال قبل از میلاد، ذهن انسان را به نوعی ماشین تشبیه کردند و پیشنهاد دادند که فکر انسان بر اساس دانش و اطلاعات داخلیاش عمل میکند و میتواند با استفاده از فکر، تصمیم بگیرد چه کاری انجام دهد. ریاضیات، ابزارهای لازم برای کار با گزارههای منطقی و همچنین احتمالات را فراهم کرد و پایههای فهم محاسبات و الگوریتمها را شکل داد.
اقتصاددانان نیز در شکلگیری هوش مصنوعی نقش مهمی داشتند. آنها به ما نشان دادند چگونه میتوان تصمیماتی گرفت که «حداکثر سود مورد انتظار» را برای تصمیمگیرنده به همراه داشته باشد. این ایده بعدها در طراحی الگوریتمهای تصمیمگیری هوشمند به کار رفت.
علوم عصبی، یعنی مطالعه نحوه کارکرد مغز، به ما کمک کرد تا بفهمیم مغز انسان و حیوانات چگونه اطلاعات را پردازش میکند و چه شباهتها و تفاوتهایی با کامپیوترها دارد. روانشناسان نیز با بررسی رفتار انسان و حیوان، نشان دادند که میتوان آنها را بهعنوان «ماشینهای پردازش اطلاعات» در نظر گرفت. زبانشناسان هم به ما کمک کردند بفهمیم که استفاده از زبان چگونه در این مدلها جای میگیرد و ماشینها چگونه میتوانند زبان انسانی را درک و تولید کنند.
مهندسان کامپیوتر، با ساخت ماشینهای قدرتمند و ارائه ابزارهای نرمافزاری قابل استفاده، زمینه عملیاتی شدن بسیاری از ایدههای هوش مصنوعی را فراهم کردند. همچنین نظریه کنترل به طراحی سیستمهایی کمک کرد که میتوانند بر اساس بازخورد محیط، بهترین عملکرد را داشته باشند. در ابتدا ابزارهای ریاضیاتی نظریه کنترل با ابزارهای هوش مصنوعی متفاوت بود، اما به مرور، این دو زمینه به هم نزدیک شدند و تعامل بیشتری پیدا کردند.
تاریخچه هوش مصنوعی نشان میدهد که این علم همیشه در چرخهای از موفقیت، خوشبینی بیش از حد و کاهش بودجه و علاقه، حرکت کرده است. با این حال، دورههایی هم وجود داشتهاند که روشهای خلاقانه جدید معرفی شده و بهترین ایدهها به طور سیستماتیک بهبود یافتهاند.
در طول زمان، هوش مصنوعی نسبت به دهههای اولیه خود رشد و پختگی قابل توجهی پیدا کرده است. این رشد هم در سطح نظری و هم در روشهای عملیاتی مشاهده میشود. مسائل هوش مصنوعی از منطق ساده به استدلال احتمالاتی و از دانش دستساز به یادگیری ماشین از دادهها منتقل شده است. این تغییرات باعث شده سیستمهای هوشمند واقعی، تواناییهای بیشتری پیدا کنند و با سایر رشتهها بهتر تعامل داشته باشند.
با ورود سیستمهای هوش مصنوعی به دنیای واقعی، دیگر نمیتوان تنها به تواناییهای فنی آنها فکر کرد؛ لازم است درباره ریسکها و پیامدهای اخلاقی آنها نیز تأمل کنیم. هر سیستمی که تصمیم میگیرد یا کاری انجام میدهد، ممکن است تأثیرات غیرمنتظرهای روی انسانها و جامعه داشته باشد. به همین دلیل، امروزه هوش مصنوعی نه تنها مسئلهای فنی، بلکه مسئلهای اجتماعی و اخلاقی نیز محسوب میشود.
در بلندمدت، یکی از مهمترین چالشها، کنترل سیستمهای هوش مصنوعی بسیار پیشرفته یا «فراهوشمند» است که ممکن است به شکل غیرقابل پیشبینی تکامل پیدا کنند. مواجهه با این مسئله احتمالاً نیازمند بازنگری در تصور ما از هوش مصنوعی و طراحی سازوکارهایی برای تضمین امنیت و هماهنگی آنها با اهداف انسانی خواهد بود.
به طور خلاصه، مسیر یادگیری هوش مصنوعی شامل شناخت ریشههای فلسفی و ریاضی، یادگیری از علوم عصبی و روانشناسی، بهرهگیری از زبانشناسی و مهندسی کامپیوتر، و در نهایت توجه به مسائل اخلاقی و اجتماعی است. هر یک از این گامها به ما کمک میکند تا نه تنها ماشینهای هوشمند بسازیم، بلکه هوشمندی آنها را در خدمت انسانها و جامعه قرار دهیم و از پتانسیلهای آنها به بهترین شکل بهرهبرداری کنیم.
دستهبندی سیستمهای هوش مصنوعی *
سیستمهای هوش مصنوعی، که در منابع آموزشی و هوش مصنوعی به زبان ساده معرفی میشوند، از چند منظر قابل دستهبندی هستند:
- بر اساس گسترهٔ عملکرد: هوش محدود (ANI) و هوش عمومی (AGI).
- بر اساس نوع یادگیری: یادگیری نظارتشده، یادگیری بدون نظارت و یادگیری تقویتی.
- بر اساس قابلیتها و کاربردها: سیستمهای تشخیص الگو، سیستمهای پردازش زبان طبیعی، سیستمهای رباتیک و سیستمهای توصیهگر.
این دستهبندیها به پژوهشگران و کاربران کمک میکند تا تعریف هوش مصنوعی را به شکل عملی درک کنند و بدانند هر نوع سیستم چه محدودیتها و امکاناتی دارد. اگر هدف شما تهیه یک خلاصه هوش مصنوعی یا یادگیری مقدماتی درباره هوش مصنوعی AI artificial intelligence باشد، این دستهبندیها نقطه شروع مناسبی است.
بخش ۲: عاملهای هوشمند
وقتی دربارهٔ هوش مصنوعی صحبت میکنیم، بهتر است آن را بهعنوان علمی ببینیم که به طراحی «عاملها» میپردازد. اما یک عامل دقیقاً چیست؟ عامل چیزی است که میتواند محیط اطرافش را درک کند و بر اساس آن عمل کند. به زبان ساده، عامل چیزی شبیه یک ربات یا برنامهای است که میبیند، میشنود یا اطلاعاتی از محیط میگیرد و سپس کاری انجام میدهد.
برای هر عاملی، یک «تابع عامل» تعریف میکنیم؛ این تابع مشخص میکند که عامل در پاسخ به هر نوع اطلاعاتی که دریافت میکند، چه عملی انجام دهد. اما چطور میدانیم عملکرد عامل خوب است یا نه؟ اینجاست که «معیار عملکرد» وارد میشود. معیار عملکرد معیاری است که رفتار عامل را در محیطش ارزیابی میکند. یک عامل عقلانی تلاش میکند که با توجه به آنچه تا کنون دیده، بیشترین ارزش ممکن از این معیار عملکرد را به دست بیاورد.
طراحی یک عامل همیشه با تعریف دقیق «محیط کاری» شروع میشود. محیط کاری شامل خود محیط، معیار عملکرد، حسگرها و عملگرهایی است که عامل از آنها استفاده میکند. محیطهای کاری میتوانند ویژگیهای مختلفی داشته باشند: بعضیها کاملاً قابل مشاهده هستند و بعضیها تنها بخشی از اطلاعات محیط را به عامل میدهند؛ برخیها شامل چند عامل هستند و برخیها فقط یک عامل؛ محیطها میتوانند قطعی یا غیرقطعی، ثابت یا پویا، گسسته یا پیوسته باشند.

در مواقعی که معیار عملکرد دقیق مشخص نیست یا تعریف آن دشوار است، ریسک آن وجود دارد که عامل به جای هدف واقعی، هدف اشتباه را بهینه کند. بنابراین، طراحی عامل در این شرایط باید عدم قطعیت دربارهٔ هدف واقعی را در نظر بگیرد.
عاملها از طریق برنامهای به نام «برنامهٔ عامل» پیادهسازی میشوند که همان تابع عامل را عملی میکند. طراحی برنامهٔ عامل میتواند ساده یا پیچیده باشد و بسته به نوع اطلاعاتی که استفاده میکند، در کارایی، انعطافپذیری و فشردگی متفاوت است.
عاملها انواع مختلفی دارند و بسته به اینکه چگونه اطلاعات محیط را پردازش میکنند، رفتار متفاوتی نشان میدهند. سادهترین نوع آنها «عاملهای بازتابی ساده» هستند که به طور مستقیم به اطلاعات دریافتی واکنش نشان میدهند، بدون اینکه چیزی از گذشته یا محیط ذخیره کنند. این عاملها در محیطهای ساده و قابل پیشبینی عملکرد خوبی دارند، اما در محیطهای پیچیده محدود هستند.
نوع پیشرفتهتر «عاملهای بازتابی مبتنی بر مدل» است. این عاملها یک حالت داخلی دارند و بخشی از جهان را که در دادههای فعلی دیده نمیشود، در ذهن خود نگه میدارند. به این ترتیب، میتوانند تصمیمهای هوشمندانهتری بگیرند، حتی وقتی همهٔ اطلاعات محیط در لحظه در دسترس نیست.
عاملهای مبتنی بر هدف، یک قدم جلوتر هستند؛ آنها صرفاً به واکنش نشان دادن اکتفا نمیکنند، بلکه بر اساس اهدافی که دارند، برنامهریزی میکنند و سعی میکنند اعمال خود را طوری انتخاب کنند که به هدفشان برسند.
عاملهای مبتنی بر سود (Utility-Based Agents) حتی پیشرفتهترند. آنها نه تنها به هدف رسیدن اهمیت میدهند، بلکه سعی میکنند «سود» یا «خوشنودی» خود را حداکثر کنند. این مفهوم شبیه انتخاب بهترین گزینه برای داشتن رضایت یا موفقیت بیشتر است، حتی وقتی چند راه مختلف برای رسیدن به هدف وجود دارد.
نکتهٔ مهم این است که همهٔ عاملها میتوانند عملکرد خود را با «یادگیری» بهبود دهند. یادگیری به عامل اجازه میدهد از تجربههای گذشته استفاده کند، خطاها را اصلاح کند و در طول زمان تصمیمهای بهتر و هوشمندانهتری بگیرد. این همان چیزی است که هوش مصنوعی را پویا و قابل پیشرفت میکند.
بخش ۳: حل مسئله از طریق جستوجو
تصور کنید میخواهیم به یک ربات یا نرمافزار هوشمند آموزش دهیم تا مسیری از یک نقطه شروع به یک هدف مشخص پیدا کند. اولین گام، تعریف دقیق مسئلهای است که ربات باید حل کند. هر مسئله از پنج جزء اصلی تشکیل شده است: حالت اولیه (جایی که ربات یا عامل شروع میکند)، مجموعه اقدامات ممکن (کاری که ربات میتواند انجام دهد)، مدل انتقال (چگونگی تغییر وضعیتها بعد از انجام هر اقدام)، حالتهای هدف (جایی که ربات میخواهد برسد) و تابع هزینه اقدامات (هر اقدام چقدر هزینه یا زمان نیاز دارد).
پس از تعریف مسئله، ما محیط را به شکل گراف فضای حالت نمایش میدهیم. در این گراف، هر نقطه یک حالت است و یالها، اقداماتی که عامل میتواند انجام دهد را نشان میدهند. هر مسیر از حالت اولیه به یکی از حالتهای هدف، راهحل مسئله است.

یک عامل هوشمند برای یافتن کوتاهترین یا کمهزینهترین مسیر، از الگوریتمهای جستجو استفاده میکند. در این فرآیند، عامل باید هر وضعیت را بر اساس تابع هزینه و در الگوریتمهای اطلاعدار (مانند A*) با کمک تابع هیوستیک ارزیابی کند تا بهینهترین توالی اقدامات را تا رسیدن به هدف مشخص نماید.
اکنون که مسئله مشخص شد، میتوانیم از الگوریتمهای جستجو برای پیدا کردن مسیر مناسب استفاده کنیم. الگوریتمهای جستجو به طور معمول حالتها و اقدامات را به صورت اتمی (بدون جزئیات داخلی) در نظر میگیرند، هرچند گاهی ویژگیهای حالتها را نیز برای یادگیری بررسی میکنیم. برای مقایسه الگوریتمها، معیارهای اصلی شامل کامل بودن راهحل، بهینه بودن هزینه مسیر، پیچیدگی زمانی و پیچیدگی حافظه هستند.
در جستجوی بدون اطلاع قبلی، الگوریتم تنها به تعریف مسئله دسترسی دارد و هیچ دانشی از «چقدر یک حالت به هدف نزدیک است» ندارد. این الگوریتمها با ساختن یک درخت جستجو تلاش میکنند راهحل پیدا کنند و تفاوت آنها عمدتاً در این است که کدام گره (حالت) را ابتدا بررسی میکنند:
- جستجوی بهترین اول (Best-First Search): گرهها را بر اساس یک تابع ارزیابی انتخاب میکند.
- جستجوی پهنا اول (Breadth-First Search): ابتدا گرههای کمعمق را بررسی میکند. این روش کامل است و اگر هزینه همه اقدامات برابر باشد، بهینه است؛ اما به حافظه زیادی نیاز دارد.
- جستجوی هزینه یکنواخت (Uniform-Cost Search): همیشه گرهای را گسترش میدهد که کمترین هزینه مسیر تا آن نقطه را داشته باشد و برای هزینههای متفاوت اقدامات، بهینه است.
- جستجوی عمق اول (Depth-First Search): ابتدا گرههای عمیق را بررسی میکند. این روش به حافظه کمی نیاز دارد ولی همیشه کامل یا بهینه نیست. نسخهای از آن با محدودیت عمق، به بررسی تا عمق مشخصی میپردازد.
- جستجوی تکراری با افزایش عمق (Iterative Deepening Search): ترکیبی از مزایای عمق اول و پهنا اول است. این روش گرههای کمعمق را ابتدا بررسی میکند، سپس عمق بررسی را افزایش میدهد تا به هدف برسد. این الگوریتم کامل و برای هزینههای برابر بهینه است و حافظه کمی مصرف میکند.
- جستجوی دوطرفه (Bidirectional Search): دو جبهه از حالت اولیه و هدف شروع به گسترش میکنند و زمانی که این دو جبهه به هم برسند، مسیر کامل مشخص میشود.
در جستجوی اطلاعدار (Heuristic Search)، الگوریتم علاوه بر تعریف مسئله، به یک تابع هیوستیک دسترسی دارد که برآورد میکند هر حالت چقدر به هدف نزدیک است. این اطلاعات اضافی باعث میشود الگوریتمها به شکل هوشمندانهتر مسیر مناسب را پیدا کنند و از بررسی حالتهای کمارزش جلوگیری کنند.
برخی الگوریتمهای مهم در این دسته عبارتاند از:
- جستجوی حریصانه بهترین اول (Greedy Best-First Search): همیشه گرهای را گسترش میدهد که کمترین مقدار تابع هیوستیک h(n) را داشته باشد. این روش بهینه نیست اما اغلب سریع و کارآمد است.
- جستجوی A*: این الگوریتم گرهها را بر اساس مجموع هزینه مسیر تا گره g(n) و مقدار هیوستیک h(n) انتخاب میکند: f(n)=g(n)+h(n). اگر هیوستیک درست تعریف شود، A* کامل و بهینه است، یعنی همیشه راهحل پیدا میکند و کمترین هزینه ممکن را ارائه میدهد. با این حال، مصرف حافظه در A* میتواند زیاد باشد.
- جستجوی دوطرفه A*: گاهی با گسترش همزمان از حالت شروع و هدف، سریعتر از A* عمل میکند.
- IDA* (Iterative Deepening A*): نسخهای از A* با بررسی تدریجی عمق، که مصرف حافظه را کاهش میدهد.
- RBFS و SMA*: الگوریتمهای مقاوم به کمبود حافظه که اگر زمان کافی داشته باشند، مسائل پیچیدهای را که A* حافظه آنها را ندارد، حل میکنند.
- Beam Search: تعداد گرههای قابل بررسی را محدود میکند؛ سریع است اما همیشه کامل یا بهینه نیست.
- Weighted A*: به جای تمرکز کامل روی کمینهسازی هزینه، مسیر را به سمت هدف هدایت میکند و سریعتر است، اما ممکن است بهترین مسیر را ارائه ندهد.
کیفیت این الگوریتمها به کیفیت هیوستیک بستگی دارد. گاهی میتوان هیوستیکهای خوب ساخت با:
- ساده کردن مسئله (relaxation)
- ذخیره کردن هزینههای راهحلهای جزئی در پایگاه داده الگو (pattern database)
- تعریف نقاط عطف (landmarks)
- یا یادگیری از تجربه حل مسائل مشابه
در عمل، انتخاب روش جستجو همیشه توازن بین زمان، حافظه و کیفیت راهحل است. اگر حافظه محدود باشد، ممکن است مجبور باشیم از الگوریتمهایی مانند DFS با محدودیت عمق یا SMA* استفاده کنیم. اگر میخواهیم سریعترین راه را پیدا کنیم، الگوریتمهای هیوستیک مثل A* یا IDA* مناسب هستند.
نکته مهم این است که قبل از شروع جستجو، مسئله باید بهخوبی تعریف شده باشد. بدون تعریف دقیق حالت اولیه، اقدامات ممکن، مدل انتقال و هدف، هیچ الگوریتمی قادر به پیدا کردن مسیر درست نیست.
همچنین، الگوریتمها با هم تفاوت دارند: بعضی کامل و بهینهاند ولی حافظه زیادی مصرف میکنند، بعضی سریع و کمحافظهاند ولی ممکن است بهترین راه را پیدا نکنند. با استفاده از دانش اضافی درباره مسئله، مانند هیوستیکهای خوب، الگوها، یا نقاط عطف، میتوان الگوریتم را کارآمدتر و هوشمندتر کرد.
به طور خلاصه، فرآیند حل مسائل با جستجو از این مراحل تشکیل شده است:
- تعریف دقیق مسئله و محیط.
- نمایش فضای حالت به صورت گراف.
- انتخاب الگوریتم جستجوی مناسب، بسته به شرایط مسئله و منابع موجود.
- در صورت امکان، استفاده از دانش اضافی برای بهبود کارایی و کاهش مصرف حافظه و زمان.
با درک این اصول، حتی بدون داشتن پیشزمینه تخصصی، میتوان تصویر روشنی از نحوه عملکرد الگوریتمهای جستجوی هوشمند در مسائل واقعی داشت و دید که هوش مصنوعی چگونه از ترکیب تعریف مسئله، جستجو و دانش هیوستیک برای رسیدن به اهداف پیچیده استفاده میکند.
بخش ۴: جستوجو در محیطهای پیچیده
وقتی با مشکلاتی در محیطهای پیچیده روبهرو میشویم، اولین گام این است که بفهمیم چه نوع محیطی داریم و محدودیتها و اطلاعات موجود چیست. محیطها میتوانند بهطور کامل قابل مشاهده یا فقط تا حدی قابل مشاهده باشند؛ همچنین ممکن است نتیجهٔ اعمال ما دقیقاً پیشبینیپذیر نباشد یا تغییرات محیط غیرقابل پیشبینی باشد. حتی ممکن است دربارهٔ محیط هیچ اطلاعات قبلی نداشته باشیم و یا محیط به صورت پیوسته باشد، یعنی وضعیتها بین مقادیر گسسته نیستند و میتوانند هر مقداری داشته باشند.
یکی از روشهای پایهای برای پیدا کردن راهحل در این محیطها، جستجوی محلی یا Local Search است. در این روش، ما فقط تعدادی از وضعیتهای ممکن را در حافظه نگه میداریم و تلاش میکنیم بهترین وضعیت را پیدا کنیم، بدون اینکه مسیر رسیدن به آن اهمیت زیادی داشته باشد. به زبان ساده، مثل بالا رفتن از یک تپه است: هر بار به سمت بالاترین نقطهٔ اطراف حرکت میکنیم تا به قله برسیم. گاهی این روش به تنهایی کافی نیست، برای مثال ممکن است در یک گودال کوچک گیر کنیم؛ در چنین مواردی روشهایی مانند Simulated Annealing کمک میکنند تا شانس پیدا کردن بهترین جواب کلی (بهینه) افزایش یابد.

این روشها تنها به محیطهای گسسته محدود نمیشوند. در محیطهای پیوسته، مثل مسائل بهینهسازی خطی یا محدب، الگوریتمها میتوانند به سرعت بهترین جواب را پیدا کنند. در بعضی موارد، با استفاده از حساب دیفرانسیل و گرادیان میتوان نقطهای را پیدا کرد که بهترین نتیجه را بدهد؛ در سایر موارد، وقتی شکل مسئله پیچیدهتر است، از گرادیان تجربی استفاده میکنیم، یعنی بررسی میکنیم تغییرات جزئی در وضعیتها چه تاثیری بر نتیجه دارد.
یک گام جلوتر، روشهای تکاملی (Evolutionary Algorithms) هستند. این روشها ترکیبی از جستجوی محلی و جمعیتمحور هستند. ما مجموعهای از وضعیتها را نگه میداریم و با ایجاد تغییرات تصادفی (Mutation) یا ترکیب وضعیتها (Crossover) وضعیتهای جدید تولید میکنیم تا بهترین راهحل به تدریج شکل بگیرد.
وقتی محیط غیرقطعی است، یعنی نتیجهٔ یک عمل مشخص همیشه یکسان نیست، دیگر نمیتوان فقط یک مسیر ساده برای رسیدن به هدف طراحی کرد. در این شرایط از روشهایی مانند AND–OR Search استفاده میکنیم. ایده این است که برنامهریزی را به صورت شرطی انجام دهیم؛ یعنی نقشهای بسازیم که بدون توجه به نتایج احتمالی هر اقدام، در نهایت بتواند ما را به هدف برساند.
در محیطهایی که فقط بخشی از آن قابل مشاهده است، عامل هوش مصنوعی نمیتواند وضعیت دقیق محیط را ببیند. برای مدیریت این محدودیت، از مفهوم Belief State یا «وضعیت باور» استفاده میکنیم. وضعیت باور مجموعهای از وضعیتهای ممکن است که عامل میتواند در آن قرار داشته باشد. به این ترتیب، به جای اینکه فقط یک وضعیت را بررسی کنیم، طیف احتمالهای مختلف را در نظر میگیریم.
برای حل مسائل اینچنینی میتوان الگوریتمهای جستجوی استاندارد را مستقیماً روی فضای وضعیت باور اعمال کرد. همچنین، Belief-State AND–OR Search برای مسائل جزئی قابل مشاهده کاربرد دارد. در این روش، راهحلها به صورت مرحلهای و وضعیت به وضعیت ساخته میشوند که اغلب بسیار کارآمدتر است و نیاز به حافظهٔ کمتر دارد.
یکی دیگر از چالشهای مهم، زمانی است که عامل هیچ اطلاعات قبلی دربارهٔ محیط ندارد. در این حالت، مسئلهٔ کاوش (Exploration) مطرح میشود. عامل باید محیط را شناسایی کند و به تدریج نقشهای بسازد. الگوریتمهای جستجوی آنلاین میتوانند محیط را کاوش کنند، و اگر هدفی وجود داشته باشد، آن را پیدا کنند. یکی از ابزارهای مهم در این مسیر، بهروزرسانی تخمینهای هیوستیک از تجربه است. به زبان ساده، عامل از تجربیات قبلی یاد میگیرد که کدام مسیرها به نتایج بهتر میرسند و این روش به او کمک میکند از گیر کردن در نقاط کمینه محلی جلوگیری کند.
بخش ۵: مسائل ارضای قیود
زمانی که میخواهیم مسائلی را حل کنیم که شامل مجموعهای از متغیرها هستند و هر متغیر میتواند مقدار مشخصی بگیرد، میتوانیم از چارچوبی به نام «مسائل ارضای قیود» یا Constraint Satisfaction Problems (CSPs) استفاده کنیم. به زبان ساده، CSPها وضعیتی را نشان میدهند که در آن هر متغیر باید مقداری انتخاب کند و در عین حال، این مقادیر باید با مجموعهای از محدودیتها هماهنگ باشند. برای مثال، فرض کنید میخواهیم برنامهی زمانبندی کلاسها را طراحی کنیم: هر کلاس یک متغیر است و باید یک ساعت مشخص داشته باشد، اما محدودیتها میگویند که دو کلاس نمیتوانند همزمان در یک کلاس درس برگزار شوند یا یک استاد نمیتواند دو کلاس همزمان داشته باشد.

یکی از روشهای مهم برای حل چنین مسائلی، استفاده از تکنیکهای استنتاج است. این تکنیکها به ما کمک میکنند تا بعضی از مقادیر غیرممکن برای متغیرها را از ابتدا حذف کنیم، بدون اینکه مجبور باشیم همه حالتهای ممکن را امتحان کنیم. استنتاج شامل روشهایی مثل نود-کانسیستنت (node consistency)، آرک-کانسیستنت (arc consistency) و مسیر-کانسیستنت (path consistency) است. این مفاهیم در واقع به ما اجازه میدهند قبل از شروع جستجو، به صورت هوشمندانه گزینههای غیرممکن را حذف کنیم و سرعت حل مسئله را بسیار بالا ببریم.
وقتی استنتاج به تنهایی کافی نباشد، معمولاً از جستجوی عقبگرد (backtracking search) استفاده میکنیم. این روش مشابه جستجوی عمق اول است و به شکل مرحلهبهمرحله مقادیر را به متغیرها اختصاص میدهد. اگر در میانهی مسیر با وضعیتی مواجه شد که هیچ مقداری برای یک متغیر مناسب نباشد، عقبگرد انجام میشود و دوباره از یک نقطه قبل ادامه میدهیم.
برای بهبود کارایی جستجوی عقبگرد، از هیوریستیکها یا روشهای راهنما استفاده میکنیم که به ما میگویند کدام متغیر را در قدم بعدی انتخاب کنیم و برای آن چه مقداری را ابتدا امتحان کنیم. دو روش متداول برای انتخاب متغیر عبارتاند از: کمترین مقادیر باقیمانده (minimum-remaining-values) و درجه متغیر (degree heuristic). روش اول متغیری را انتخاب میکند که کمترین تعداد گزینه قانونی برای آن باقی مانده است، و روش دوم متغیری را انتخاب میکند که بیشترین محدودیت را بر سایر متغیرها اعمال میکند. وقتی متغیری انتخاب شد، میتوانیم از کمترین مقدار محدودکننده (least-constraining-value) برای انتخاب مقدار استفاده کنیم؛ این روش مقدار را طوری انتخاب میکند که کمترین محدودیت را برای متغیرهای بعدی ایجاد کند.
گاهی اوقات با یک تعارض روبهرو میشویم؛ یعنی هیچ مقداری برای متغیر فعلی مناسب نیست. در این حالت، عقبگرد هدایتشده توسط تعارض (conflict-directed backjumping) ما را مستقیماً به منبع مشکل هدایت میکند، نه فقط یک قدم به عقب. همچنین، با یادگیری قیود (constraint learning) میتوانیم تعارضات را ذخیره کنیم تا در جستجوی بعدی از ایجاد همان مشکل جلوگیری شود.
روش دیگری که برای حل CSPها بسیار موفق بوده، جستجوی محلی با استفاده از هیوریستیک حداقل تعارض (min-conflicts heuristic) است. در این روش، به جای اختصاص مقادیر مرحلهبهمرحله به تمام متغیرها، با تغییر مقادیر یک متغیر در هر قدم و کاهش تعارضها، به سمت راهحل حرکت میکنیم. این روش به ویژه برای مسائل بزرگ و پیچیده کاربرد دارد.
پیچیدگی حل یک CSP تا حد زیادی به ساختار گراف قیود آن بستگی دارد. اگر گراف قیود به شکل درخت باشد، مسئله میتواند در زمان خطی حل شود، یعنی بسیار سریع. حتی اگر گراف پیچیده باشد، میتوان از روشهایی مثل cutset conditioning استفاده کرد تا مسئله به مجموعهای از زیرمسائل درختی تبدیل شود و حافظه و زمان مورد نیاز کاهش یابد. روش دیگر، تقسیمبندی درختی (tree decomposition) است که گراف را به مجموعهای از زیرمسائل تبدیل میکند؛ اگر پهنای درخت کوچک باشد، این روش بسیار کارآمد است، اما نیاز به حافظهای دارد که نسبت به پهنای درخت نمایی افزایش مییابد. ترکیب این دو روش میتواند تعادلی مناسب بین زمان و حافظه ایجاد کند و حل CSPها را برای مسائل واقعی قابل مدیریت کند.
بخش ۶: جستوجوی خصمانه و بازیها
برای شروع یادگیری دربارهی نحوهی تصمیمگیری هوشمند در بازیها، ابتدا باید بدانیم که یک بازی چگونه تعریف میشود. اساساً هر بازی را میتوان با چند عنصر ساده توصیف کرد:
- وضعیت اولیه: یعنی چیدمان اولیهی صفحه یا شرایط شروع بازی.
- اقدامات قانونی: چه حرکتهایی در هر وضعیت امکانپذیر است.
- نتیجهی هر اقدام: پس از انجام هر حرکت، وضعیت بازی چگونه تغییر میکند.
- تست پایان بازی: قوانینی که مشخص میکنند بازی چه زمانی تمام میشود.
- تابع سود یا امتیاز: در پایان بازی، چه کسی برنده است و امتیاز نهایی هر بازیکن چه قدر است.
با درک این مفاهیم، میتوانیم دربارهی چگونگی انتخاب بهترین حرکتها در بازیهای رقابتی فکر کنیم. یکی از مفاهیم اصلی در بازیهای دو نفرهای که شرایط آن مشخص و قابل پیشبینی است (مثل شطرنج یا دوز)، الگوریتم مینیمکس است. این الگوریتم با بررسی همهی مسیرهای ممکن درخت بازی، حرکت بهینه را پیدا میکند. یعنی شما میتوانید پیشبینی کنید که حریف چه حرکاتی ممکن است انجام دهد و بهترین حرکت خودتان را بر اساس این پیشبینی انتخاب کنید.
اما بررسی همهی مسیرها همیشه عملی نیست، زیرا تعداد حالتها میتواند بسیار زیاد باشد. برای این مشکل، الگوریتم جستجوی آلفا-بتا ارائه شده است که همان حرکت بهینهی مینیمکس را پیدا میکند، اما خیلی سریعتر است چون برخی شاخههای بازی را که اهمیت ندارند، حذف میکند.
گاهی حتی با این روش هم بررسی تمام مسیرها ممکن نیست. در چنین مواردی، از تابع ارزیابی تقریبی استفاده میکنیم که به ما کمک میکند وضعیت فعلی بازی را ارزیابی کنیم و حرکت مناسب را بدون رفتن تا پایان بازی انتخاب کنیم.
یک روش دیگر، جستجوی درخت مونتکارلو (MCTS) است. در این روش به جای استفاده از ارزیابی تقریبی، بازی را تا پایان بارها شبیهسازی میکنیم و نتیجهی هر شبیهسازی را بررسی میکنیم. چون ممکن است حرکات در هر شبیهسازی بهینه نباشند، این شبیهسازیها چندین بار تکرار میشوند و میانگین نتایج، ارزیابی ما از وضعیت فعلی را میسازد.

علاوه بر روشهای جستجو و شبیهسازی، بسیاری از برنامههای بازی از پیشمحاسبه جدول بهترین حرکات استفاده میکنند. به این معنی که برای شروع بازی (شروع بازیها) و همچنین پایان بازی، بهترین حرکتها را از قبل محاسبه کرده و ذخیره میکنند تا برنامه بتواند به جای جستجوی پیچیده، حرکت مناسب را سریع انتخاب کند. این کار باعث افزایش سرعت و دقت بازی میشود.
در بازیهایی که شانسی در آنها نقش دارد، مانند بازیهای تختهای که تاس دارند، الگوریتم مینیمکس به تنهایی کافی نیست. در این موارد از الگوریتم اکسپکتیمینیمکس (Expectiminimax) استفاده میکنیم. این الگوریتم علاوه بر تصمیمگیری منطقی برای بازیکنان، احتمال وقوع هر رویداد شانسی را هم در نظر میگیرد و میانگین ارزش حالات ممکن را محاسبه میکند.
در بازیهای با اطلاعات ناقص، مثل پوکر یا برخی نسخههای شطرنج که بازیکن نمیتواند تمام حرکات حریف را ببیند، انتخاب حرکت بهینه بسیار پیچیدهتر است. در این شرایط، باید دربارهی وضعیت فعلی و آیندهی احتمالی اعتقادات بازیکنان فکر کنیم. یک روش ساده برای تقریبی کردن بهترین حرکت این است که ارزش هر حرکت را بر اساس همهی حالتهای ممکن اطلاعاتی که از حریف نداریم، میانگین بگیریم.
با استفاده از این الگوریتمها و روشها، برنامههای کامپیوتری توانستهاند در بسیاری از بازیها، حتی بازیهای پیچیدهای مانند شطرنج، چکرز، اوتلو و گو، بازیکنان حرفهای انسانی را شکست دهند. با این حال، در برخی بازیهای با اطلاعات ناقص، مانند بریج یا نسخههای خاص شطرنج با اطلاعات محدود، انسان هنوز برتری دارد. در بازیهای ویدیویی پیچیده مثل StarCraft یا Dota 2، برنامهها میتوانند با انسانهای حرفهای رقابت کنند، بخشی از موفقیت آنها ناشی از توانایی انجام تعداد زیادی عمل در زمان کوتاه است، چیزی که برای انسان سخت یا غیرممکن است.
بخش ۷: عاملهای منطقی
برای شروع بحث درباره هوش مصنوعی و عاملهای هوشمند، ابتدا باید بفهمیم یک عامل هوشمند چه چیزی نیاز دارد تا بتواند تصمیمهای درست بگیرد. یکی از مهمترین نیازهای یک عامل هوشمند، دانش درباره جهان است. این دانش، به عامل کمک میکند تا وضعیت محیط خود را بفهمد و بتواند اقدامهای مناسبی انجام دهد.
اما سوال این است که چگونه میتوانیم دانش را در یک عامل هوشمند ذخیره و مدیریت کنیم؟ پاسخ این است که ما دانش را به صورت جملات منطقی در یک زبان نمایش دانش ذخیره میکنیم. این جملات در یک پایگاه دانش نگهداری میشوند و عامل از آنها برای تصمیمگیری استفاده میکند.
یک عامل مبتنی بر دانش معمولاً از دو بخش اصلی تشکیل شده است:
- پایگاه دانش: جایی که تمام جملات و اطلاعات درباره جهان ذخیره میشوند.
- مکانیزم استنتاج: ابزاری که از جملات موجود در پایگاه دانش استفاده میکند تا جملات جدید را استخراج کند و بر اساس آنها تصمیمگیری کند.

برای اینکه این دانش قابل استفاده باشد، نیاز به یک زبان رسمی داریم که ساختار جملات و معنای آنها را مشخص کند. در این زبان، سینتکس مشخص میکند جملات چگونه ساخته میشوند و سمانتیک تعیین میکند که هر جمله در شرایط مختلف درست یا نادرست است.
یکی از مفاهیم کلیدی در استنتاج منطقی، رابطه استنتاج (Entailment) است. این رابطه نشان میدهد که اگر جملهای درست باشد، جمله دیگری هم الزاماً درست خواهد بود. به عبارت دیگر، جمله دوم در تمام جهانهایی که جمله اول درست است، درست خواهد بود.
استنتاج یا نتیجهگیری، فرآیندی است که در آن جملات جدیدی از جملات موجود استخراج میشوند. الگوریتمهای استنتاج میتوانند دو ویژگی داشته باشند:
- صوتی (Sound): فقط جملاتی را استخراج میکنند که واقعاً از جملات موجود نتیجه میشوند.
- کامل (Complete): تمام جملاتی را که میتوانند نتیجه گرفته شوند، پیدا میکنند.
یکی از سادهترین زبانهای منطقی، منطق گزارهای است. در این زبان، ما با نمادهای گزارهای و عملگرهای منطقی سروکار داریم و میتوانیم گزارههایی را که درست، نادرست یا ناشناخته هستند، مدل کنیم. برای بررسی درستی جملات، میتوانیم تمام مدلهای ممکن را فهرست کنیم و ببینیم جمله در کدام مدلها درست است.
برای کار با پایگاههای دانش بزرگ، روشهای کارآمدی مثل جستجوی محلی و روشهای عقبگرد (Backtracking) وجود دارد که میتوانند مسائل پیچیده را به سرعت حل کنند. علاوه بر این، قواعد استنتاج، الگوهایی از استنتاج درست هستند که میتوانند برای پیدا کردن اثباتها استفاده شوند. روشهایی مثل رزولوشن، زنجیره رو به جلو (Forward chaining) و زنجیره رو به عقب (Backward chaining) نمونههایی از الگوریتمهای استنتاج طبیعی برای پایگاههای دانش هستند.
برای محیطهایی که اطلاعات ما محدود یا ناقص است، میتوان از روشهای جستجوی محلی مثل WALKSAT استفاده کرد. این روشها معمولاً صحیح هستند ولی همیشه همه جوابها را پیدا نمیکنند.
در نهایت، در عاملهای منطقی، میتوان وضعیت جهان را به صورت یک جمله منطقی که تمام حالتهای ممکن مطابق مشاهدات گذشته را توصیف میکند، نگه داشت. هر بار که وضعیت تغییر میکند، با استفاده از مدل انتقال محیط، جمله منطقی بهروزرسانی میشود و عامل میتواند تصمیمات خود را بر اساس آن اتخاذ کند.
با وجود همه این ابزارها، منطق گزارهای یک محدودیت مهم دارد: وقتی محیط خیلی بزرگ یا پیچیده میشود، منطق گزارهای دیگر کافی نیست. دلیل این است که این منطق قدرت کافی برای نمایش مفاهیمی مانند زمان، مکان و روابط عمومی بین اشیاء را بهصورت مختصر ندارد. برای مثال، اگر بخواهیم در مورد همه اشیاء در یک محیط بزرگ قاعدهگذاری کنیم یا تغییرات زمانبندی شده را مدل کنیم، جملات منطقی بسیار طولانی و پیچیده میشوند.
در چنین محیطهایی، ما نیاز داریم از منطقهای قویتر یا روشهای پیشرفتهتر استفاده کنیم که بتوانند روابط کلی و قوانین عمومی را به شکل فشرده و قابل استنتاج نمایش دهند. با این کار، عامل هوشمند میتواند حتی در محیطهایی که تعداد حالتها بسیار زیاد است یا تغییرات زیادی دارند، تصمیمهای منطقی بگیرد.
به طور خلاصه، وقتی یک عامل هوشمند را طراحی میکنیم، مسیر یادگیری و استفاده از دانش به این صورت است:
- ابتدا دانش اولیه درباره جهان را به صورت جملات منطقی تعریف میکنیم.
- این جملات در یک پایگاه دانش ذخیره میشوند.
- عامل با استفاده از الگوریتمهای استنتاج میتواند جملات جدید استخراج کند.
- این جملات برای تصمیمگیری و برنامهریزی اقدامات آینده به کار میروند.
- در محیطهای پیچیده، باید از روشهای منطقی پیشرفته یا تکنیکهای بهینهسازی برای مدیریت دانش و استنتاج استفاده کنیم.
به این ترتیب، یک عامل مبتنی بر دانش میتواند نه تنها اطلاعات موجود را ذخیره کند، بلکه با استنتاج منطقی، اطلاعات جدید ایجاد کند و تصمیمات هوشمندانهای اتخاذ نماید.
بخش ۸: منطق مرتبهٔ اول
وقتی میخواهیم دربارهی «نمایش دانش» در هوش مصنوعی صحبت کنیم، در واقع به زبانی فکر میکنیم که ماشینها با آن میتوانند دنیا را بفهمند. ما انسانها برای توصیف دنیای اطراف از زبان طبیعی استفاده میکنیم؛ اما ماشینها به زبانی دقیقتر نیاز دارند—زبانی که ابهام نداشته باشد و بتوان در آن استدلال منطقی انجام داد. یکی از مهمترین این زبانها، «منطق مرتبهی اول» است.
برای درک منطق مرتبهی اول، بد نیست ابتدا با «منطق گزارهای» آشنا شویم. در منطق گزارهای، ما تنها دربارهی گزارههایی صحبت میکنیم که یا درستاند یا نادرست؛ مثلاً «امروز هوا بارانی است». این زبان برای بیان برخی روابط ساده کافی است، اما وقتی بخواهیم دربارهی اشیا، روابط میان آنها، یا ویژگیهایشان حرف بزنیم، این زبان محدود میشود. برای مثال، اگر بخواهیم بگوییم «هر انسان فانی است»، منطق گزارهای دیگر پاسخگو نیست.
در همینجا است که منطق مرتبهی اول وارد میشود. این منطق به ما اجازه میدهد دربارهی اشیا و روابط میان آنها صحبت کنیم. یعنی بهجای آنکه فقط بگوییم گزارهای درست یا نادرست است، میتوانیم بگوییم چه کسی، چه چیزی، و در چه شرایطی دربارهی چه چیزی صدق میکند. در این زبان، علاوه بر گزارهها، «اصطلاحاتی» وجود دارد که به اشیای خاص اشاره میکنند (مثل «سقراط» یا «زمین»)، و همچنین «نمادهای رابطهای» داریم که بیانگر ارتباط میان اشیا هستند (مثل «بزرگتر از» یا «دوستِ»).

یکی از ویژگیهای کلیدی منطق مرتبهی اول، وجود «کوانتیفایرها» یا «کمیتنماها»ست—ابزارهایی که به ما اجازه میدهند دربارهی همهی اعضای یک مجموعه یا برخی از آنها صحبت کنیم. مثلاً جملهی «برای هر انسان، فانی بودن صادق است» با یک کمیتنمای کلی بیان میشود، و جملهی «برخی انسانها هنرمندند» با کمیتنمای جزئی. همین ابزار ساده اما قدرتمند باعث میشود منطق مرتبهی اول بتواند مفاهیم پیچیدهتری از دنیای واقعی را توصیف کند.
اما نکتهی مهم این است که هر زبان منطقی، مجموعهای از «تعهدات هستیشناختی» و «تعهدات معرفتشناختی» دارد. به زبان ساده، این یعنی هر منطق فرض میکند چه چیزهایی در جهان وجود دارند و ما چگونه میتوانیم دربارهی آنها دانش کسب کنیم. منطق گزارهای فقط وجود «حقایق» را میپذیرد، در حالیکه منطق مرتبهی اول علاوه بر حقایق، به وجود اشیا و روابط میان آنها نیز متعهد است. به همین دلیل، قدرت بیان بیشتری دارد و برای حوزههایی مانند مدلسازی جهان وامپوس یا مدارهای الکترونیکی بسیار مناسبتر است.
برای آنکه بفهمیم یک جمله در منطق مرتبهی اول درست است یا نادرست، باید به چیزی به نام «جهان ممکن» یا بهطور دقیقتر «مدل» نگاه کنیم. مدل در واقع نمایشی از جهانی است که در آن اشیا، روابط، و توابع وجود دارند. هر نماد ثابت در زبان ما به یک شیء در مدل اشاره میکند، هر نماد رابطهای بیانگر نوعی ارتباط میان اشیاست، و هر نماد تابع نیز به ما میگوید چگونه از یک یا چند شیء، شیء دیگری بهدست میآید.
برای مثال، اگر مدلی داشته باشیم که شامل شیءهایی مانند زمین، ماه و خورشید است، رابطهای مانند «میچرخدبهدور» میتواند بگوید که ماه بهدور زمین میچرخد. در چنین مدلی، جملهی «ماه بهدور زمین میچرخد» صادق است، زیرا این رابطه واقعاً میان این دو شیء برقرار است. اما اگر در مدل دیگری چنین رابطهای تعریف نشده باشد، همان جمله در آن مدل نادرست خواهد بود.
در این زبان، سادهترین نوع جمله را «جملهی اتمی» مینامیم. این جمله فقط شامل یک رابطه (یا گزاره) و چند اصطلاح (اشیای شرکتکننده) است. صدق یا کذب آن تنها به این بستگی دارد که آیا آن رابطه واقعاً بین آن اشیا برقرار است یا نه. وقتی جملههای ما شامل کمیتنما میشوند—مثلاً «برای همهی x، اگر x انسان باشد آنگاه فانی است»—دیگر باید بررسی کنیم که آیا این گزاره برای همهی مقادیر ممکن x درست است یا نه. به این ترتیب، معنای صدق جملههای کمیتدار وابسته به «تعبیر گسترشیافتهای» است که تعیین میکند هر متغیر به کدام شیء در مدل اشاره دارد.
اما ساختن یک «پایگاه دانش» (Knowledge Base) بر اساس منطق مرتبهی اول، کار سادهای نیست. این کار معمولاً با تحلیل دقیق حوزهای که میخواهیم دربارهاش استدلال کنیم آغاز میشود. ابتدا باید مشخص کنیم چه نوع اشیایی در آن حوزه وجود دارند، چه ویژگیهایی دارند، و چه روابطی بین آنها برقرار است. سپس، مجموعهای از نمادها و واژگان منطقی تعریف میکنیم تا بتوانیم آن مفاهیم را نمایش دهیم.
در مرحلهی بعد، باید «گزارههای بنیادی» یا همان «اصلها» (Axioms) را بنویسیم—جملاتی که حقیقت آنها را در حوزهی موردنظر مسلم میدانیم. این اصلها پایهی استدلالهای بعدی هستند و سیستم استنتاج ما با استفاده از آنها میتواند گزارههای جدیدی تولید کند. برای مثال، اگر بدانیم «همهی انسانها فانیاند» و «سقراط یک انسان است»، سیستم میتواند بهصورت منطقی نتیجه بگیرد که «سقراط فانی است».
همین توانایی در نتیجهگیری منطقی، همان چیزی است که منطق مرتبهی اول را به ابزار اصلی نمایش و استدلال دانش در هوش مصنوعی تبدیل کرده است. اما باید توجه داشت که این منطق هنوز هم محدودیتهایی دارد. برای نمونه، در بیان مفاهیمی که مرز دقیق ندارند—مثل «بلند بودن»، «طعم خوشمزه»، یا «خوب بودن در سیاست»—نمیتواند عملکرد دقیقی داشته باشد، زیرا این مفاهیم ذاتاً مبهم و وابسته به قضاوت انسانیاند. در چنین مواردی، روشهایی مانند منطق فازی یا یادگیری آماری کارآمدتر هستند.
بخش ۹: استنتاج در منطق مرتبهٔ اول
وقتی میخواهیم به کامپیوترها یاد بدهیم که منطقی فکر کنند و نتیجهگیری کنند، یکی از ابزارهای اصلی ما منطق مرتبه اول است. این منطق به ما اجازه میدهد تا با استفاده از قوانین و روابط بین اشیا و مفاهیم، استنتاج کنیم و نتیجههای جدید به دست آوریم. برای درک بهتر، ابتدا با مثال ساده شروع میکنیم: فرض کنید میدانیم «همه انسانها فانی هستند» و «سقراط انسان است». با استفاده از منطق، میتوانیم نتیجه بگیریم که «سقراط فانی است». همین روند در سطح پیچیدهتر و با جملات ریاضی و قواعد عمومی، پایهای برای هوش مصنوعی است.

یکی از روشهای ابتدایی برای انجام این نوع استنتاج، استفاده از قوانین استنتاج است. این قوانین به ما کمک میکنند تا مسئله استنتاج را به صورت جملات سادهتری (مثل گزارههای منطقی) تبدیل کنیم. البته این روش وقتی که تعداد اشیا و روابط زیاد باشد، بسیار کند میشود.
برای افزایش سرعت، یک تکنیک به نام یکسانسازی یا Unification به کار میرود. این روش به ما اجازه میدهد متغیرها را به گونهای جایگزین کنیم که دیگر نیازی به بررسی همه حالات ممکن نداشته باشیم. ترکیب این روش با یک قانون قدرتمند به نام Modus Ponens تعمیم یافته، امکان استنتاج سریع و طبیعی از مجموعهای از قواعد مشخص را فراهم میکند. الگوریتمهای Forward Chaining و Backward Chaining همین قانون را به کار میگیرند تا اطلاعات موجود را پردازش و نتیجهگیری کنند.
Forward Chaining شبیه یک پایگاه داده است که از اطلاعات موجود شروع میکند و به جلو حرکت میکند تا همه نتایج ممکن را استخراج کند. این روش در سیستمهای بزرگ که قواعد زیادی دارند، کارایی بالایی دارد. از طرف دیگر، Backward Chaining از نتیجهای که میخواهیم به آن برسیم شروع میکند و به عقب برمیگردد تا بررسی کند چه اطلاعاتی برای رسیدن به آن لازم است. این روش در زبانهای برنامهنویسی منطقی مثل پروگ استفاده میشود، که برای استنتاج سریع، از تکنیکهای پیشرفته کامپایلر کمک میگیرد. با این حال، گاهی این روش میتواند دوبارهکاری یا حلقههای بیپایان ایجاد کند که با تکنیکهایی مثل Memoization قابل کنترل هستند.
زبان Prolog یک پیادهسازی عملی از این مفاهیم است. پروگ از فرضیه «جهان بسته» و «نامهای یکتا» استفاده میکند و وقتی نتیجهای نمیتواند اثبات شود، آن را منفی در نظر میگیرد. این ویژگیها پروگ را به یک زبان برنامهنویسی کاربردی تبدیل میکنند، هرچند کمی از منطق خالص فاصله دارد.
یک ابزار دیگر در منطق، قانون استنتاج Resolution تعمیم یافته است که سیستم کاملی برای اثبات در منطق مرتبه اول ارائه میدهد. با این قانون، کامپیوترها میتوانند جملات را به شکل Conjunctive Normal Form تبدیل و اثباتها را به صورت دقیق انجام دهند. برای کاهش حجم جستجو و افزایش سرعت، روشهای متعددی وجود دارد، از جمله تکنیکهای Demodulation و Paramodulation برای مدیریت مساوات.
این روشهای مبتنی بر Resolution نه تنها در مسائل منطقی کاربرد دارند، بلکه در اثبات قضایای ریاضی، بررسی صحت نرمافزار و سختافزار، و حتی سنتز آنها استفاده میشوند. به عبارت دیگر، مفاهیم منطقی پایهای که از ابتدا آموزش دیدیم، در دنیای واقعی برای حل مسائل پیچیده و عملی مورد استفاده قرار میگیرند.
بخش ۱۰: بازنمایی دانش
وقتی میخواهیم به یک رایانه کمک کنیم تا دانش را «فهمیده» و از آن استفاده کند، ابتدا باید فکر کنیم که اصلاً چگونه میتوان دانش را بازنمایی کرد. بازنمایی دانش یعنی اینکه اطلاعات پراکنده و پیچیدهای که انسانها درباره جهان دارند، به شکلی سازمانیافته در یک سیستم کامپیوتری ذخیره شود، تا سیستم بتواند روی آن استدلال کند و تصمیم بگیرد.
برای ساختن چنین سیستمهایی، دانشمندان هوش مصنوعی از چیزی به نام «آنتولوژی» استفاده میکنند. آنتولوژی شبیه یک چارچوب کلی است که همه موضوعات و دستهبندیهای مختلف دانش را کنار هم قرار میدهد و روابط میان آنها را مشخص میکند. اگر بخواهیم یک سیستم هوشمند داشته باشیم که بتواند در زمینههای گوناگون اطلاعات را پردازش کند، نیاز داریم که آنتولوژی ما بسیار جامع و گسترده باشد، بهگونهای که بتواند هر حوزهای از دانش را در خود جای دهد.

ساخت چنین آنتولوژیهای بزرگ کار آسانی نیست. محققان هنوز به آنتولوژیای کامل و همهجانبه دست نیافتهاند، اما چارچوبهایی که امروز وجود دارند، نسبتاً پایدار و قابل اعتماد هستند. یکی از رویکردهای مهم برای این کار، استفاده از «آنتولوژی سطح بالا» است که مفاهیم پایهای و اساسی جهان، مانند دستهها، زیر دستهها، اشیاء ساختاریافته، اندازهگیریها، مواد، رویدادها، زمان، فضا و تغییرات را پوشش میدهد.
در ادامه، به نکتهای جالب میرسیم: برخی مفاهیم طبیعی، مثل انواع موجودات یا مواد، نمیتوانند کاملاً با قوانین منطقی تعریف شوند، اما میتوان ویژگیها و خصوصیات آنها را بازنمایی کرد. به علاوه، رویدادها، اعمال و زمان را میتوان با ابزارهای منطقی مانند «محاسبه رویدادها» مدل کرد. این ابزار به سیستم اجازه میدهد که دنبالهای از اعمال را بسازد و درباره نتایج منطقی آنها پیشبینی کند.
برای اینکه یک سیستم هوش مصنوعی بتواند دانش را بهتر سازماندهی کند، گاهی از «سیستمهای بازنمایی خاص» استفاده میکنیم. این سیستمها شامل شبکههای معنایی و منطقهای توضیحی هستند و به ما کمک میکنند تا سلسلهمراتب دستهها را به شکل منظم و قابل استفاده در کامپیوتر بسازیم. در این سلسلهمراتب، یکی از مهمترین ایدهها «ارثبری» است: اگر یک شیء عضو یک دسته باشد، ویژگیهای آن دسته به طور خودکار به شیء منتقل میشود و سیستم میتواند از این طریق استنتاج کند.
یکی دیگر از مفاهیم کلیدی، «فرض دنیای بسته» است. در زندگی واقعی، ما همیشه همه اطلاعات منفی (مثلاً «این پرنده پرواز نمیکند») را نمیدانیم. فرض دنیای بسته به سیستم میگوید: «اگر چیزی را ندانستی، آن را نادرست فرض کن»، و این کار مدیریت دانش را سادهتر میکند. البته این فرض همیشه قطعی نیست و میتوان آن را با اطلاعات جدید تغییر داد.
در کنار آن، منطقهای غیرمونوتونیک، مانند منطق پیشفرض و محدودسازی، برای مدلسازی استدلالهای پیشفرض به کار میروند. این منطقها به سیستم اجازه میدهند که بر اساس اطلاعات ناقص یا احتمالی استنتاج کند و در صورت دریافت اطلاعات جدید، نتیجهگیریهای قبلی خود را بازنگری کند.
سیستمهای نگهداری حقیقت (Truth Maintenance Systems) هم ابزارهای مهمی هستند که به سیستم هوش مصنوعی کمک میکنند دانش خود را بهروز کنند و تغییرات را به شکل مؤثر مدیریت کنند.
در نهایت، ساختن آنتولوژیهای بزرگ به صورت دستی کار بسیار دشواری است. برای همین، استخراج دانش از متنهای موجود، یکی از راههای عملی و مؤثر برای تسریع این فرایند است. با این روش، سیستم میتواند اطلاعات موجود در مقالات، کتب و منابع آنلاین را جمعآوری و بازنمایی کند و به شکل یک پایگاه دانش بزرگ تبدیل کند.
بخش ۱۱: برنامهریزی خودکار
تصور کنید که میخواهیم به یک ربات یاد بدهیم چگونه کارهای روزانهاش را به طور خودکار انجام دهد. برای انجام این کار، ابتدا باید بدانیم که برنامهریزی خودکار در هوش مصنوعی چیست. به زبان ساده، برنامهریزی یعنی تصمیم گرفتن برای انجام یک سری کارها به ترتیبی که به هدف برسیم. برای این که رایانه بتواند این کار را انجام دهد، نیاز به نمایش صریح از حالتها و کارهایی که میتواند انجام دهد داریم. این نمایشها، پایهای هستند که الگوریتمها روی آنها کار میکنند و باعث میشوند بتوانیم روشهای هوشمند و عمومی برای حل مسائل مختلف طراحی کنیم.

یکی از ابزارهای مهم در این زمینه، زبان تعریف حوزه برنامهریزی یا PDDL است. با PDDL، میتوانیم وضعیت اولیه سیستم و هدف مورد نظر را با استفاده از ترکیبی از گزارههای ساده توصیف کنیم و همچنین کارهایی که ربات میتواند انجام دهد را با پیششرطها و اثراتشان تعریف کنیم. اگر بخواهیم مسائل پیچیدهتر را مدل کنیم، PDDL میتواند مواردی مثل زمان، منابع، ورودیهای حسگری، برنامههای مشروط و حتی برنامههای سلسلهمراتبی را هم در نظر بگیرد.
در ادامه، وقتی این نمایشها آماده شدند، رایانه باید مسیر رسیدن از وضعیت اولیه به هدف را پیدا کند. این کار معمولاً با جستجو در فضای حالتها انجام میشود. جستجو میتواند از وضعیت فعلی به جلو حرکت کند (پیشروی) یا از هدف به عقب بیاید و بررسی کند چه مراحلی منجر به رسیدن به هدف میشوند (پسروی). برای این که جستجو سریعتر و هوشمندانهتر شود، ما از هیوریستیکها استفاده میکنیم؛ یعنی قواعدی که کمک میکنند سریعتر بهترین مسیرها را پیدا کنیم.
علاوه بر جستجوی مستقیم در فضای حالتها، روشهای دیگری هم برای حل مسائل برنامهریزی وجود دارد. یکی از این روشها، برنامهریزی سلسلهمراتبی (Hierarchical Task Network یا HTN) است. در این روش، طراح سیستم میتواند به ربات «راهنمایی» بدهد و کارهای پیچیده را به اقدامات سطح بالا (High-Level Actions یا HLAs) تقسیم کند. این اقدامات سطح بالا میتوانند به روشهای مختلف توسط اقدامات سطح پایینتر اجرا شوند. نکته مهم این است که با تعریف اثرات این اقدامات سطح بالا به شکل منطقی و انتزاعی (به اصطلاح «معنای فرشتهای»)، میتوانیم اطمینان داشته باشیم که برنامههای سطح بالا درست هستند، بدون آن که جزئیات اجرای اقدامات سطح پایین را بررسی کنیم. این روش برای مسائل واقعی و بزرگ بسیار مفید است، چون برنامههای بسیار طولانی و پیچیده را میتوان با آن مدیریت کرد.
گاهی اوقات، هنگام اجرای برنامه، ربات نیاز دارد وضعیت محیط را حس کند و بر اساس آن تصمیم بگیرد کدام مسیر برنامه را ادامه دهد. به این نوع برنامهها برنامههای مشروط یا contingent گفته میشود. در مواردی هم ممکن است ربات بدون هیچ حسگری برنامهای را اجرا کند؛ این حالت را برنامهریزی بدون حسگر (conformant) مینامیم. در هر دو حالت، الگوریتمها با جستجو در فضای حالات اعتقادی (belief states) کار میکنند؛ یعنی وضعیتهایی که ربات ممکن است آنها را باور کند یا فرض بگیرد. طراحی یک نمایش و محاسبه بهینه برای این حالات اعتقادی یکی از چالشهای اصلی برنامهریزی پیشرفته است.
همچنین، در دنیای واقعی، بسیاری از اقدامات مصرفکننده منابع هستند؛ مثل پول، سوخت یا مواد اولیه. به جای آن که بخواهیم هر واحد پول یا سوخت را جداگانه مدیریت کنیم، معمولاً این منابع را به شکل مقادیر عددی کلی مدل میکنیم. زمان نیز یکی از منابع مهم است و میتوان آن را با الگوریتمهای زمانبندی تخصصی مدیریت کرد یا زمانبندی را با برنامهریزی ترکیب کرد تا همزمان به اهداف برسیم و زمان مصرفی بهینه باشد.
در دنیای واقعی، نتایج اقدامات همیشه قطعی نیستند. گاهی اوقات، حتی اگر ربات طبق برنامه عمل کند، اتفاقات غیرمنتظره رخ میدهند، مثل خرابی یک ابزار، تغییرات محیط یا خطای حسگر. برای مدیریت این عدم قطعیتها، برنامهریزی میتواند به شکلهای پیشرفتهتر توسعه یابد. به عنوان مثال، برنامهریزی در محیطهای تصادفی به ربات اجازه میدهد که احتمال وقوع نتایج مختلف یک اقدام را در نظر بگیرد و بهترین تصمیم را بگیرد. ابزارهای ریاضی مثل فرآیندهای تصمیمگیری مارکوف (MDP) و نسخههای جزئی قابل مشاهده آنها (POMDP) برای مدلسازی چنین محیطهایی استفاده میشوند.
یک نکته مهم دیگر این است که رباتها میتوانند در حین اجرا برنامه خود را اصلاح کنند. به این ترتیب، اگر اتفاق غیرمنتظرهای رخ دهد، با مانیتورینگ اجرای اقدامات و اعمال تعمیرات لازم، ربات میتواند مسیر خود را اصلاح کند و به هدف برسد. این توانایی باعث میشود برنامهریزی نه تنها در حالت ایدهآل، بلکه در دنیای واقعی و پویا هم قابل استفاده باشد.
در نهایت، رباتها میتوانند از تجربههای گذشته یاد بگیرند. یادگیری تقویتی (Reinforcement Learning) به ربات امکان میدهد با آزمون و خطا و تحلیل موفقیتها و شکستهای قبلی، رفتار خود را بهبود بخشد. به بیان ساده، ربات مثل یک دانشآموز عمل میکند: وقتی کاری موفقیتآمیز باشد، احتمال انجام آن کار در آینده افزایش مییابد و وقتی ناکام باشد، احتمال کاهش مییابد. این روش، ترکیب برنامهریزی و یادگیری را ممکن میسازد و ربات را قادر میسازد در محیطهای پیچیده و غیرقطعی به طور مستقل عمل کند.
با ترکیب تمام این مفاهیم — از نمایش دقیق وضعیتها و اقدامات، استفاده از هیوریستیکها، برنامهریزی سلسلهمراتبی و مشروط، مدیریت منابع و زمان، تا مقابله با عدم قطعیت و یادگیری از تجربه — ما میتوانیم رباتها و سیستمهای هوشمند بسازیم که در محیطهای واقعی و متغیر، تصمیمات بهینه بگیرند و کارهای پیچیده را به شکل خودکار انجام دهند.
بخش ۱۲: کمّیسازی عدم قطعیت
وقتی میخواهیم یک سیستم هوش مصنوعی بسازیم که در محیطهای واقعی تصمیمگیری کند، با مسئلهای به نام «عدم قطعیت» روبهرو میشویم. عدم قطعیت یعنی اینکه ما همیشه نمیتوانیم بهطور کامل دربارهی حقیقت یک رویداد یا وضعیت در جهان اطرافمان مطمئن باشیم. دلیلش هم ساده است: گاهی ما اطلاعات کافی نداریم و گاهی هم حتی اگر تلاش کنیم، محیط آنقدر پیچیده یا غیرقطعی است که هیچ راهی برای دانستن کامل همه چیز وجود ندارد.
برای مدیریت این عدم قطعیت، ما از نظریهی احتمال استفاده میکنیم. احتمال، درواقع، معیاری است برای بیان میزان باور ما نسبت به یک فرضیه یا جمله. وقتی میگوییم احتمال یک رویداد ۰.۷ است، یعنی سیستم ما با توجه به شواهد موجود، ۷۰٪ اطمینان دارد که این رویداد رخ میدهد. به زبان ساده، احتمال کمک میکند تا بهجای تصمیمگیری مطلق (درست یا غلط)، باورهای خودمان را به شکل عددی بیان کنیم.
اما داشتن باورها به تنهایی کافی نیست. هوش مصنوعی باید تصمیم بگیرد و عمل کند. برای این کار از نظریهی تصمیم استفاده میکنیم. این نظریه ترکیبی است از باورهای سیستم و اهداف آن؛ بهترین عمل، آن است که حداکثر «سود مورد انتظار» یا بیشترین منفعت را برای سیستم ایجاد کند. سود مورد انتظار هم با ترکیب احتمال رخدادهای مختلف و ارزش یا نفع هر نتیجه محاسبه میشود.
در کار با احتمال، مفاهیم پایهای وجود دارند که باید بدانیم:
- احتمال اولیه یا بدون شرط: احتمال یک رویداد قبل از مشاهدهی هر شواهدی.
- احتمال شرطی یا پسینی: احتمال یک رویداد با در نظر گرفتن شواهد موجود.
برای اینکه سیستم ما منطقی رفتار کند، باید قوانین پایهای احتمال، یعنی اصول یا آکسیمهای احتمال، رعایت شوند. اگر این قوانین نقض شوند، سیستم در بعضی شرایط بهطور آشکارا غیرمنطقی تصمیم میگیرد.
وقتی با چندین متغیر تصادفی سروکار داریم، میتوانیم از توزیع احتمال مشترک کامل استفاده کنیم. این توزیع، احتمال هر ترکیب ممکن از مقادیر متغیرها را مشخص میکند. اما مشکل این است که این توزیع معمولاً بسیار بزرگ و غیرقابل استفاده به شکل مستقیم است. خوشبختانه، اگر برخی متغیرها مستقل از هم باشند، میتوانیم توزیع کلی را به توزیعهای کوچکتر تقسیم کنیم و محاسبات را سادهتر کنیم.
یکی از ابزارهای قدرتمند در این زمینه، قاعدهی بیز است. این قاعده به ما اجازه میدهد که احتمال ناشناخته را با استفاده از احتمالهای شرطی شناخته شده محاسبه کنیم. در محیطهای پیچیده، باز هم حجم محاسبات زیاد میشود، اما با استفاده از مفهوم وابستگی شرطی و روابط علی بین متغیرها، میتوانیم توزیعهای بزرگ را به توزیعهای کوچکتر و قابل مدیریت تبدیل کنیم.
یک مثال مشهور در هوش مصنوعی، مدل Naive Bayes است که فرض میکند همهی نتایج (اثرات) نسبت به علت اصلی، مستقل از هم هستند. این سادهسازی باعث میشود حجم محاسبات تنها به تعداد اثرها وابسته باشد و نه به ترکیبهای پیچیده همه متغیرها.

با این روشها، حتی یک عامل هوشمند میتواند دربارهی بخشهای مشاهدهنشدهی جهان، احتمالات را محاسبه کند و تصمیماتی بهتر از یک عامل صرفاً منطقی بگیرد. استفاده از استقلال شرطی باعث میشود این محاسبات عملی و قابل اجرا باشند.
بخش ۱۳: استدلال احتمالاتی
فرض کنید میخواهیم دربارهی اتفاقاتی که در جهان رخ میدهند، تصمیم بگیریم یا پیشبینی کنیم، اما همه چیز مطلق و قطعی نیست. مثلاً نمیدانیم فردی که امروز سرفه کرده، حتماً مریض است یا نه، یا احتمال بارش باران چقدر است. در این شرایط، ما با دانش نامطمئن یا احتمالی سروکار داریم. برای مدلسازی چنین دانش نامطمئنی، یکی از ابزارهای قدرتمند در هوش مصنوعی شبکههای بیزی هستند.
شبکهی بیزی، در سادهترین شکل، یک گراف جهتدار بدون حلقه است. در این گراف، هر گره نمایندهی یک متغیر تصادفی است؛ یعنی چیزی که ممکن است مقدارهای مختلفی داشته باشد و احتمال وقوع هر مقدار قابل محاسبه باشد. هر گره همچنین یک توزیع شرطی دارد که مشخص میکند با توجه به وضعیت والدهایش (گرههایی که به آن وصل هستند)، احتمال هر مقدار چگونه تغییر میکند.
یکی از نکات کلیدی شبکههای بیزی این است که آنها روابط وابستگی و استقلال شرطی بین متغیرها را به شکلی فشرده نمایش میدهند. به بیان ساده، اگر بدانیم بعضی متغیرها مستقل از هم هستند، دیگر نیازی نیست همهی حالات ممکن را جداگانه حساب کنیم. این باعث میشود شبکههای بیزی بتوانند توزیع احتمال مشترک تمام متغیرها را با حجم بسیار کمتری نسبت به فهرست کردن همهی احتمالات ممکن نمایش دهند.
علاوه بر این، بسیاری از توزیعهای شرطی را میتوان با استفاده از خانوادههای استاندارد توزیعها به شکل فشرده نشان داد. وقتی شبکه شامل متغیرهای گسسته و پیوسته باشد، شبکهی بیزی ترکیبی یا هیبریدی گفته میشود و از توزیعهای استاندارد مختلف برای نمایش شرایط استفاده میکند.

فرض کنید حالا میخواهیم بدانیم با توجه به شواهدی که داریم، احتمال رخ دادن یک اتفاق خاص چقدر است. در شبکههای بیزی، به این کار استنتاج گفته میشود. به عنوان مثال، اگر بدانیم فردی سرفه کرده و تب دارد، میخواهیم احتمال بیماری آن فرد را محاسبه کنیم.
برای انجام استنتاج، الگوریتمهای مختلفی وجود دارند. یکی از روشها حذف متغیرها (Variable Elimination) است که سعی میکند با جمعزدن و ضرب کردن احتمالات شرطی به شکل بهینه، احتمال مورد نظر را محاسبه کند. اگر شبکه ساده و تکدرختی باشد، این محاسبات سریع و خطی انجام میشوند. اما در شبکههای پیچیدهتر، محاسبهی دقیق احتمال میتواند بسیار دشوار و حتی غیرقابلحل با منابع محدود باشد.
در چنین مواردی، از روشهای تقریبی استفاده میکنیم، مثل نمونهگیری تصادفی (Random Sampling). یکی از این روشها وزندهی بر اساس احتمال مشاهدهشده (Likelihood Weighting) است و روش دیگر زنجیره مارکوف مونت کارلو (Markov Chain Monte Carlo). این روشها با تولید نمونههای تصادفی و وزندهی آنها، تخمینی از احتمال واقعی ارائه میدهند و میتوانند شبکههای بسیار بزرگ را مدیریت کنند، جایی که محاسبهی دقیق غیرممکن است.
نکتهی مهم دیگر این است که شبکههای بیزی بر تأثیرات احتمالی تمرکز دارند. یعنی آنها نشان میدهند که وقوع یک رویداد چه تأثیری بر احتمال دیگر رویدادها دارد، اما لزوماً نمیگویند که یک رویداد باعث دیگری شده است. اگر بخواهیم علت و معلول واقعی را مدل کنیم، به شبکههای علّی نیاز داریم. این شبکهها اجازه میدهند اثر مداخلات یا تغییرات مستقیم در سیستم را پیشبینی کنیم، نه فقط مشاهدهها را.
به بیان ساده، شبکههای بیزی مانند یک نقشهی راهنمای احتمالات عمل میکنند و شبکههای علّی علاوه بر آن، نقش یک راهنمای علت و معلول را دارند. این ابزارها در هوش مصنوعی، پزشکی، اقتصاد و بسیاری از حوزههای علمی و صنعتی کاربرد دارند و باعث میشوند بتوانیم تصمیمهای بهتر و آگاهانهتری بگیریم.
بخش ۱۴: استدلال احتمالاتی در طول زمان
وقتی میخواهیم رفتار یک سیستم را در طول زمان دنبال کنیم، اولین کاری که انجام میدهیم این است که وضعیت آن سیستم را در هر لحظه با استفاده از متغیرهای تصادفی نشان دهیم. متغیرهای تصادفی ابزاری هستند که به ما اجازه میدهند عدم قطعیت را در دنیای واقعی مدل کنیم، زیرا هیچ چیز در زندگی همیشه مطلق نیست و همیشه احتمالهایی برای رخدادهای مختلف وجود دارد.
یکی از ایدههای مهم در مدلسازی فرآیندهای زمانی، خاصیت مارکوف است. این خاصیت میگوید که اگر وضعیت فعلی سیستم را بدانیم، آینده آن دیگر به گذشته بستگی ندارد. به عبارت سادهتر، برای پیشبینی آینده کافی است فقط وضعیت همین حالا را در نظر بگیریم. وقتی این فرض را با فرض زمانهمگنی ترکیب کنیم، یعنی قوانینی که سیستم با آن تغییر میکند در طول زمان ثابت هستند، مدلسازی بسیار سادهتر میشود.
برای اینکه یک مدل زمانی احتمالاتی بسازیم، معمولاً دو بخش اصلی را در نظر میگیریم: مدل انتقال و مدل حسگر. مدل انتقال نشان میدهد وضعیت سیستم چگونه از یک لحظه به لحظه بعد تغییر میکند، و مدل حسگر توضیح میدهد که چگونه مشاهدات ما از سیستم با وضعیت واقعی آن ارتباط دارد.
بعد از اینکه مدل را ساختیم، چهار کار اصلی داریم:
- فیلترینگ یا برآورد وضعیت: حدس زدن وضعیت فعلی سیستم بر اساس مشاهداتی که تا الان داشتهایم.
- پیشبینی: حدس زدن وضعیت آینده سیستم.
- تخمین بهینه یا smoothing: بازبینی وضعیتهای گذشته با توجه به اطلاعات جدید.
- یافتن محتملترین توضیح: پیدا کردن دنبالهای از وضعیتها که بیشترین احتمال را دارند.
همه این کارها را میتوان با الگوریتمهایی ساده و بازگشتی انجام داد که پیچیدگی آنها با طول دنبالهای که بررسی میکنیم، متناسب است و بنابراین به صورت عملی قابل استفاده هستند.
در ادامه، سه خانواده مدل زمانی معروف را بررسی میکنیم: مدلهای مارکوف پنهان، فیلترهای کالمن و شبکههای بیزی دینامیک. شبکههای بیزی دینامیک نوعی مدل جامع هستند که دو مدل دیگر را هم شامل میشوند.
یک نکته مهم: اگر تعداد متغیرهای وضعیت زیاد باشد، انجام محاسبات دقیق معمولاً غیرممکن است، مگر اینکه فرضهای خاصی مانند آنچه در فیلتر کالمن داریم اعمال شود. در عمل، الگوریتمهایی مانند فیلترینگ ذرهای و نسخههای پیشرفتهتر آن، راهکارهایی مؤثر برای تقریب زدن این محاسبات هستند و به ما اجازه میدهند حتی در مدلهای پیچیده به نتایج قابل قبول برسیم.
بخش ۱۵: تصمیمگیری ساده
تصور کنید که یک ربات یا یک سیستم هوش مصنوعی قرار است تصمیم بگیرد که چه کاری انجام دهد. برای این که بتواند بهترین تصمیم را بگیرد، ما نیاز داریم دو چیز را بدانیم: اول، ربات باید بتواند دربارهی احتمال وقوع رویدادهای مختلف فکر کند و دوم، بداند چه چیزی برایش ارزشمند است.
نظریه احتمال به ما کمک میکند بفهمیم ربات چه چیزی را باید باور کند، بر اساس شواهدی که دارد. مثلاً اگر ربات میبیند آسمان ابری است، احتمال باران را بیشتر میداند.
نظریه مطلوبیت (Utility theory) به ربات نشان میدهد چه چیزی برایش اهمیت دارد یا چه چیزی را دوست دارد. برای مثال، رباتی که قرار است غذای مناسب برای انسانها پیشنهاد دهد، “مطلوبیت” میتواند شامل خوشمزه بودن، سالم بودن و ارزان بودن باشد.
وقتی این دو را با هم ترکیب کنیم، به نظریه تصمیمگیری (Decision theory) میرسیم. این نظریه به ربات میگوید بر اساس باورهایش (احتمالها) و ترجیحاتش (مطلوبیتها) چه کاری انجام دهد تا بهترین نتیجه ممکن را بدست آورد.
سیستمی که از این روش برای انتخاب بهترین اقدام استفاده میکند، یک عامل عقلانی (rational agent) نامیده میشود. این عامل میتواند بین چندین گزینه، بهترین انتخاب را انجام دهد، نه به صورت تصادفی، بلکه با هدف حداکثر کردن نتیجه مورد انتظار.
یک نکته جالب این است که اگر ترجیحات ربات بین گزینههای مختلف منطقی و سازگار باشند، میتوانیم آن را با تابع مطلوبیت (Utility function) توصیف کنیم. این تابع به ربات میگوید هر حالت یا گزینه چه ارزش نسبی دارد و ربات به صورت خودکار اقداماتی را انتخاب میکند که مطلوبیت مورد انتظار آنها بیشینه شود.
گاهی اوقات تصمیمگیری ساده نیست، زیرا مطلوبیت وابسته به چند ویژگی مختلف است. مثلاً اگر بخواهیم یک خودرو انتخاب کنیم، مطلوبیت میتواند شامل قیمت، مصرف سوخت، ایمنی و زیبایی باشد. برای این نوع مسائل از نظریه مطلوبیت چندبعدی (Multiattribute utility theory) استفاده میکنیم.
در برخی مواقع هم ما اطلاعات دقیق دربارهی ارزش هر ویژگی نداریم، اما باز هم میتوانیم تصمیمات شفاف بگیریم. یکی از روشهای مفید در این شرایط غلبه تصادفی یا برتری تصادفی (stochastic dominance) است که کمک میکند بدون نیاز به اعداد دقیق، گزینهی بهتر را انتخاب کنیم.
وقتی مسئلهای پیچیده میشود و ربات باید چند مرحله یا گزینه را بررسی کند، استفاده از یک نمایش رسمی و ساده برای تصمیمگیری کمک زیادی میکند. شبکههای تصمیم (Decision networks) ابزاری هستند که این کار را انجام میدهند.
این شبکهها مانند شبکههای بیزی (Bayesian networks) عمل میکنند، اما علاوه بر متغیرهای شانس، شامل گرههای تصمیم و گرههای مطلوبیت هم هستند. این ساختار به ربات اجازه میدهد به صورت سیستماتیک تمام گزینهها و پیامدهای احتمالی آنها را بررسی کند و بهترین تصمیم را بگیرد.
گاهی اوقات قبل از اینکه بتوانیم تصمیم نهایی را بگیریم، نیاز داریم اطلاعات بیشتری جمعآوری کنیم. مثلاً یک ربات ممکن است نیاز داشته باشد وضعیت آب و هوا را بررسی کند یا از انسان سؤال بپرسد تا تصمیم بهتری بگیرد. در این حالت از ارزش اطلاعات (Value of information) استفاده میکنیم که نشان میدهد با داشتن اطلاعات بیشتر، مطلوبیت مورد انتظار چقدر افزایش مییابد. این مفهوم کمک میکند ربات بداند کدام اطلاعات واقعاً ارزش جمعآوری دارند و کدام را میتوان نادیده گرفت.
در دنیای واقعی، اغلب امکان ندارد ما تابع مطلوبیت انسانها را کاملاً و دقیق مشخص کنیم. یعنی ربات نمیداند دقیقاً چه چیزی برای انسان مهم است. در چنین شرایطی، ربات باید با عدم قطعیت درباره اهداف انسانی کار کند.
یک نکته مهم این است که وقتی ربات میتواند اطلاعات بیشتری درباره ترجیحات انسان جمعآوری کند، رفتار آن تغییر میکند: ربات به جای تصمیمگیری صرفاً بر اساس حدسهای خود، تصمیماتش را به نفع انسان عقب میاندازد و حتی در برخی مواقع اجازه میدهد که انسان آن را خاموش کند یا کنترلش را به دست گیرد. این رفتار، ناشی از توجه ربات به عدم قطعیت درباره اهداف انسانی و تمایل آن به احترام به خواستههای انسان است.
به این ترتیب، حتی یک سیستم هوش مصنوعی پیچیده که میتواند تصمیمات مستقل بگیرد، تحت شرایط واقعی با محدودیتها و عدم قطعیتها طوری عمل میکند که بیشترین سازگاری و ایمنی را برای انسان فراهم کند.
بخش ۱۶: تصمیمگیری پیچیده
فرض کنید میخواهیم یک ربات بسازیم که بتواند در یک محیط پیچیده تصمیم بگیرد چه کاری انجام دهد، حتی زمانی که نمیدانیم نتیجه دقیق هر تصمیم چه خواهد بود و ممکن است پاداش واقعی آن تصمیم چند مرحله بعد ظاهر شود. برای اینکه این کار ممکن شود، ابتدا باید یک چارچوب رسمی برای «تصمیمگیری گامبهگام» داشته باشیم. در هوش مصنوعی، چنین مسئلهای معمولاً با چیزی به نام فرایند تصمیمگیری مارکوف (Markov Decision Process یا MDP) مدلسازی میشود.
یک MDP سه بخش اصلی دارد:
- مدل انتقال: که به ما میگوید اگر عملی انجام دهیم، احتمال اینکه به هر وضعیت بعدی برسیم چقدر است. یعنی نتیجه هر اقدام صددرصد مشخص نیست و با احتمالات مختلف همراه است.
- تابع پاداش: که مشخص میکند در هر وضعیت چه مقدار «پاداش» یا ارزش دریافت میکنیم. این پاداش میتواند مثبت یا منفی باشد و هدف ربات ما این است که مجموع این پاداشها را بیشینه کند.
- سیاست یا استراتژی: که برای هر وضعیت مشخص میکند ربات باید چه تصمیمی بگیرد تا بیشترین پاداش ممکن را در طول زمان دریافت کند.
اما یک نکته مهم وجود دارد: ما فقط به پاداش فوری فکر نمیکنیم. پاداشهای آینده هم اهمیت دارند، بنابراین معمولاً این پاداشها را کمی «تنزیل» میکنیم تا تصمیمات بلندمدت هم در نظر گرفته شوند.
برای محاسبه بهترین تصمیمها، دو الگوریتم پایه داریم:
- تکرار ارزش (Value Iteration): در این روش، ابتدا ارزش هر وضعیت را تخمین میزنیم و سپس این ارزشها را بهصورت گامبهگام با توجه به وضعیتهای مجاور بهروزرسانی میکنیم تا به یک حالت پایدار برسیم.
- تکرار سیاست (Policy Iteration): در این روش ابتدا یک سیاست اولیه فرض میکنیم، ارزش وضعیتها را بر اساس آن محاسبه میکنیم و سپس سیاست را بهبود میدهیم. این دو گام را تکرار میکنیم تا به سیاست بهینه برسیم.
در دنیای واقعی، رباتها یا عاملهای هوشمند همیشه نمیتوانند همه جزئیات محیط خود را ببینند. مثلاً شاید حسگرها محدود باشند یا نویز داشته باشند. برای مدلسازی چنین شرایطی، از چارچوبی به نام فرایند تصمیمگیری مارکوف با مشاهده ناقص (Partially Observable MDP یا POMDP) استفاده میکنیم.
در یک POMDP، ربات نه وضعیت دقیق محیط را میداند و نه نتیجه اقداماتش را با قطعیت مشاهده میکند. بنابراین او باید با احتمالات کار کند و باور خود نسبت به وضعیت محیط را بهروز کند. این باور را معمولاً به صورت یک «وضعیت اعتقادی» (belief state) نمایش میدهیم که احتمال اینکه ربات در هر وضعیت ممکن باشد را نشان میدهد.
برای حل این مسائل هم از روشهای مشابه MDP استفاده میکنیم، اما با پیچیدگی بیشتری:
- تبدیل به فضای وضعیت اعتقادی: ابتدا مسئله POMDP را به نوعی MDP در فضای وضعیتهای اعتقادی تبدیل میکنیم، جایی که هر وضعیت، ترکیبی از احتمالات مختلف است.
- تکرار ارزش و تکرار سیاست در فضای اعتقادی: الگوریتمهای قبلی (value iteration و policy iteration) میتوانند در این فضای جدید اعمال شوند، هرچند محاسبات بسیار پیچیدهتر و سنگینتر است.
- جمعآوری اطلاعات: عامل هوشمند در POMDP باید گاهی اقدامی انجام دهد که صرفاً برای کاهش عدم قطعیت و جمعآوری اطلاعات است، حتی اگر در کوتاهمدت پاداش فوری زیادی ندهد. این کار باعث میشود تصمیمات آینده بهینهتر و مطمئنتر باشند.
برای مدیریت این فرآیند، معمولاً از چیزی به نام شبکه تصمیمگیری پویا (Dynamic Decision Network) استفاده میکنیم. این شبکه به ربات کمک میکند:
- مدل انتقال و حسگرها را نمایش دهد.
- وضعیت اعتقادی خود را بهروزرسانی کند.
- پیشبینی کند که اگر اقداماتی خاص انجام دهد، چه نتایجی ممکن است رخ دهند.
با ترکیب این روشها، میتوان عامل تصمیمگیرندهای ساخت که در محیطهای با عدم قطعیت زیاد هم تصمیمات بهینه بگیرد.
در ادامهی این مباحث، وقتی وارد یادگیری تقویتی (Reinforcement Learning) میشویم، همین چارچوبهای MDP و POMDP پایهای هستند که به عامل اجازه میدهند از تجربه واقعی خود یاد بگیرد و رفتار خود را بهبود دهد، بدون اینکه همه مدلها و احتمالات را از قبل بدانیم.
بخش ۱۷: تصمیمگیری چندعاملی
وقتی میخواهیم دنیای واقعی را با ریاضیات مدل کنیم، یکی از ابزارهای اصلی ما مدلهای احتمالی هستند. مدلهای احتمالی به ما کمک میکنند تا با وجود عدم قطعیت، پیشبینیهایی دربارهٔ رخدادها داشته باشیم. حالا، تصور کنید میخواهیم این مدلها را نه فقط برای یک رویداد ساده، بلکه برای جهانهایی که شامل اشیاء مختلف و روابط بین آنها هستند بسازیم. اینجاست که مدلهای احتمالی رابطهای (Relational Probability Models یا RPMs) وارد میدان میشوند.
در مدلهای رابطهای، ما یک فهرست از اشیاء و ویژگیهای آنها داریم و احتمال وقوع یک رابطه بین این اشیاء را بررسی میکنیم. به عبارت ساده، هر شیء در جهان ما یک هویت مشخص دارد و ما میدانیم چه اشیائی وجود دارند. هر متغیر تصادفی پایهای در این مدلها، در واقع ترکیبی از یک رابطه و اشیاء مرتبط با آن است. این یعنی، با داشتن یک مدل رابطهای، میتوانیم تمام «جهانهای ممکن» را که شامل ترکیبهای مختلف این اشیاء و روابط هستند، تعریف کنیم. و چون تعداد اشیاء محدود است، تعداد جهانهای ممکن هم محدود و مشخص است.
یکی از مزایای بزرگ مدلهای رابطهای این است که حتی وقتی تعداد اشیاء زیاد است، مدل همچنان میتواند به شکل جمعوجور و قابل مدیریت باقی بماند. به علاوه، این مدلها توانایی مواجهه با عدم قطعیت در روابط بین اشیاء را دارند، نه فقط در ویژگیهای خود اشیاء.
اما دنیای واقعی گاهی پیچیدهتر است: ممکن است ما از وجود بعضی اشیاء مطمئن نباشیم یا ندانیم هویت دقیق آنها چیست. در این حالت، به مدلهای احتمالی جهان باز (Open-Universe Probability Models یا OUPMs) نیاز داریم. این مدلها اجازه میدهند با عدم قطعیتهای جدید مانند وجود یا هویت اشیاء روبهرو شویم و دنیایی واقعیتر را شبیهسازی کنیم.
برای پیادهسازی این مدلها، ما از برنامههای مولد (Generative Programs) استفاده میکنیم. این برنامهها اساساً مدلهای احتمالی را به شکل کدهای اجرایی در یک زبان برنامهنویسی احتمالی (Probabilistic Programming Language یا PPL) نشان میدهند. هر بار اجرای چنین برنامهای، یک «ردیف اجرای ممکن» تولید میکند که نشاندهندهٔ یک سناریوی محتمل است. مزیت این زبانها این است که تقریباً هر نوع مدل احتمالی را میتوان در آنها بیان کرد و اجرا نمود.
بخش ۱۸: برنامهنویسی احتمالاتی
وقتی میخواهیم پدیدههای پیچیده در دنیای واقعی را مدلسازی کنیم، یکی از ابزارهای اصلی ما مدلهای احتمالاتی هستند. مدل احتمالاتی به ما کمک میکند تا عدم قطعیت و ناشناختهها را به شکل ریاضیاتی بیان کنیم. برای مثال، وقتی میخواهیم پیشبینی کنیم که فردی در یک شهر خاص چه بیماریای ممکن است بگیرد، نمیتوانیم پاسخ قطعی بدهیم؛ اما میتوانیم با مدلهای احتمالاتی، احتمال هر بیماری را محاسبه کنیم.
یک روش قدرتمند برای ساخت مدلهای احتمالاتی، ترکیب منطق و برنامهنویسی است. در این روشها، ما از قوانین منطقی برای نمایش روابط بین موجودیتها و از ساختار برنامه برای مدلسازی فرآیندهای تصادفی استفاده میکنیم.
یکی از اولین مدلهایی که در این زمینه مطرح شده، مدلهای احتمالاتی رابطهای یا RPMها هستند. این مدلها وقتی کاربرد دارند که:
- همه موجودیتها و هویت آنها برای ما شناخته شده باشد؛
- بخواهیم روابط بین موجودیتها را به صورت واضح تعریف کنیم.
در RPMها، هر دنیای ممکن (یعنی هر حالت ممکن از جهان که مدل آن را پوشش میدهد) از روی نمادهای ثابت تعریف میشود. علاوه بر این، متغیرهای تصادفی پایه، همه جایگزینیهای ممکن نمادهای رابطهای با این موجودیتها هستند. نتیجه این است که تعداد دنیای ممکن محدود و قابل شمارش است.
مزیت RPMها این است که حتی وقتی با تعداد زیادی موجودیت مواجه هستیم، میتوانیم مدلهای بسیار مختصر و قابل فهم بسازیم و همچنین بتوانیم با عدم قطعیت در روابط بین موجودیتها کار کنیم.
اما دنیای واقعی همیشه به این سادگی نیست. گاهی ما نه تنها از روابط بین موجودیتها بلکه از وجود یا هویت خود موجودیتها هم مطمئن نیستیم. برای این منظور، مدلهای Open-universe Probability Models یا OUPMها توسعه یافتهاند. این مدلها اجازه میدهند عدم قطعیتهای جدیدی مثل عدم اطمینان نسبت به وجود یا هویت یک موجودیت را در نظر بگیریم و مدلهای واقعیتر بسازیم.
یک گام فراتر، استفاده از برنامههای مولد است. برنامه مولد در واقع یک برنامه اجرایی است که یک مدل احتمالاتی را نمایش میدهد. وقتی برنامه را اجرا میکنیم، هر بار یک “ردیف اجرا” تولید میشود که نشاندهنده یک نمونه از جهان احتمالی است. این روش به ما امکان میدهد مدلهای پیچیدهای بسازیم که شامل OUPMها و سایر مدلهای پیشرفته احتمالاتی میشوند. زبانهای برنامهنویسی احتمالاتی یا PPLها ابزارهای قدرتمندی برای این کار هستند و تقریباً میتوانند هر مدل احتمالاتی قابل تصوری را نمایش دهند.
بخش ۱۹: یادگیری از نمونهها
وقتی درباره هوش مصنوعی و یادگیری ماشین صحبت میکنیم، در واقع داریم درباره سیستمهایی صحبت میکنیم که میتوانند از تجربه یا دادهها یاد بگیرند. منظور از «یادگیری» این است که این سیستمها بتوانند رفتار یا پیشبینی بهتری داشته باشند، بدون اینکه هر بار بهطور دقیق برنامهریزی شوند.
یادگیری میتواند شکلهای مختلفی داشته باشد، بسته به اینکه سیستم چه نوع اطلاعاتی دریافت میکند و هدفش چیست. یکی از رایجترین روشها «یادگیری نظارتشده» است. در یادگیری نظارتشده، به سیستم مثالهایی داده میشود که پاسخ درست آنها مشخص است. هدف این است که سیستم بتواند یک قانون یا تابع پیدا کند که ورودیها را به خروجیهای درست تبدیل کند.
برای مثال، اگر بخواهیم سیستمی طراحی کنیم که وزن یک شخص را بر اساس قد و سن پیشبینی کند، یادگیری یک تابعی که مقدار وزن را به صورت عددی پیشبینی کند، «رگرسیون» نام دارد. اگر بخواهیم سیستم تصمیم بگیرد که یک ایمیل اسپم است یا نه، یعنی تعداد کمی گزینه خروجی داریم، این کار «طبقهبندی» نامیده میشود.
یکی از نکات مهم این است که ما فقط نمیخواهیم مدل ما با دادههای موجود سازگار باشد، بلکه باید بتواند دادههای جدید را هم به درستی پیشبینی کند. به همین دلیل، همیشه باید بین سادگی مدل و دقت آن روی دادهها تعادل برقرار کنیم.
در یادگیری ماشین، مدلها نقش «قوانین یا الگوریتمهایی که دادهها را تحلیل میکنند» را دارند. بعضی مدلها ساده هستند و تعداد کمی پارامتر دارند، بعضی دیگر پیچیدهاند و نیاز به محاسبات بیشتری دارند.
یکی از سادهترین مدلها، رگرسیون خطی است. در این مدل، ما فرض میکنیم رابطه بین ورودیها و خروجیها تقریباً خطی است، یعنی میتوان با یک خط یا صفحه بهترین پیشبینی را انجام داد. پارامترهای این مدل یا میتوانند دقیقاً محاسبه شوند، یا با یک روش به نام گرادیان نزولی پیدا شوند. گرادیان نزولی یک تکنیک بسیار کاربردی است که حتی برای مدلهایی که جواب دقیق ندارند هم جواب تقریبی خوب پیدا میکند.
اگر بخواهیم یک مدل طبقهبندی ساده بسازیم، میتوانیم از پرسپترون استفاده کنیم. پرسپترون، یک مدل خطی با یک «آستانه سخت» است که با یک قانون ساده برای تغییر وزنها آموزش میبیند. اگر دادهها به خوبی قابل جداسازی خطی باشند، پرسپترون به سرعت یاد میگیرد، ولی در غیر این صورت، ممکن است آموزش آن به نتیجه نرسد.
راه حل جایگزین، رگرسیون لجستیک است. این مدل آستانه سخت پرسپترون را با یک تابع نرم (لجستیک) جایگزین میکند. این کار باعث میشود که حتی دادههای نویزی یا غیرقابل جداسازی خطی هم قابل پیشبینی شوند و گرادیان نزولی همچنان عملکرد خوبی داشته باشد.
برخی مدلها نیز به جای خلاصه کردن دادهها در چند پارامتر، از تمام دادهها برای هر پیشبینی استفاده میکنند. اینها مدلهای غیرپارامتریک نامیده میشوند، مثل نزدیکترین همسایهها و رگرسیون با وزن محلی. مزیت این مدلها انعطافپذیری بالا است، ولی ممکن است با دادههای زیاد کند شوند.
برای بهبود عملکرد مدلها، گاهی از ماشینهای بردار پشتیبان (SVM) استفاده میکنیم. این مدلها سعی میکنند یک خط یا سطح پیدا کنند که بهترین جداسازی بین دستهها را داشته باشد. حتی اگر دادهها در فضای اصلی قابل جدا شدن نباشند، با استفاده از روش کرنل دادهها را به فضایی با ابعاد بالاتر منتقل میکنیم تا جداسازی ممکن شود.
همچنین میتوان از روشهای ترکیبی یا Ensemble استفاده کرد، مانند bagging و boosting، که چند مدل را با هم ترکیب میکنند تا پیشبینی بهتری داشته باشند. در یادگیری آنلاین هم میتوان نظرات چند «کارشناس» را ترکیب کرد تا عملکرد نزدیک به بهترین کارشناس حاصل شود، حتی اگر دادهها همیشه تغییر کنند.
وقتی مدلهای مختلفی برای یک مسئله ساخته میشوند، باید بدانیم کدام مدل بهترین عملکرد را دارد. برای این کار، از دادههای اعتبارسنجی و تکنیکهایی مثل اعتبارسنجی متقابل (cross-validation) استفاده میکنیم. در این روش، دادهها به چند بخش تقسیم میشوند و مدل روی بخشهایی آموزش میبیند و روی بخشهای دیگر آزمایش میشود. این کار کمک میکند تا مطمئن شویم مدل نه تنها روی دادههای آموزش خوب عمل میکند، بلکه روی دادههای جدید هم قابل اعتماد است.
گاهی اوقات همه خطاها یکسان نیستند. به همین دلیل از تابع خطا یا loss function استفاده میکنیم. این تابع به ما میگوید هر خطا چقدر مهم است و هدف این است که مجموع خطاها روی دادههای اعتبارسنجی کمینه شود.
در طول طراحی یک مدل یادگیری ماشین، همیشه با تجربه و مهارت در کل فرآیند سروکار داریم: از جمعآوری و مدیریت دادهها، انتخاب مدل مناسب، تنظیم پارامترها، بهینهسازی عملکرد تا نگهداری و بهروزرسانی مدل.
از نظر علمی هم، نظریه یادگیری محاسباتی (Computational Learning Theory) به ما نشان میدهد که بین سادگی یا پیچیدگی مدل و توانایی یادگیری از دادهها یک تعادل وجود دارد. به عبارت دیگر، اگر مدل خیلی پیچیده باشد، یادگیری ممکن است سخت شود، و اگر خیلی ساده باشد، ممکن است نتواند دادهها را خوب پیشبینی کند.
به این ترتیب، یادگیری ماشین نه تنها درباره ساختن مدلهای هوشمند است، بلکه درباره تصمیمگیری هوشمندانه در مورد دادهها، مدلها، و روشهای ارزیابی آنها نیز هست. هر مرحله از این فرآیند، از انتخاب داده تا نگهداری مدل، روی نتیجه نهایی تأثیر میگذارد.
بخش ۲۰: دانش در یادگیری
وقتی میخواهیم یک ماشین یا یک عامل هوش مصنوعی چیزی یاد بگیرد، معمولاً یادگیری از تجربههای جدید آغاز میشود. اما تصور کنید این ماشین بتواند از آنچه قبلاً میدانسته هم استفاده کند. این همان چیزی است که به آن دانش پیشین میگوییم و میتواند یادگیری را بسیار مؤثرتر کند.
برای فهم بهتر، بیایید با یک مثال ساده شروع کنیم: فرض کنید میخواهیم به یک کامپیوتر آموزش دهیم که حیوانات مختلف را شناسایی کند. اگر کامپیوتر قبلاً بداند که «تمام پرندگان دارای بال هستند»، میتواند از این دانش برای شناسایی پرنده جدید استفاده کند بدون اینکه مجبور باشد دوباره همه چیز را از صفر یاد بگیرد. به عبارت دیگر، دانش پیشین باعث میشود ماشین بتواند سریعتر و با اطلاعات کمتر یاد بگیرد.
یک نکته مهم دیگر این است که دانش پیشین معمولاً به شکل مدلهای رابطهای بیان میشود، نه فقط صفات ساده. مدل رابطهای به ما اجازه میدهد که ارتباط بین اشیا یا مفاهیم مختلف را تعریف کنیم. مثلاً رابطهای بین «پدر» و «فرزند» یا بین «مکان» و «ساکن» وجود دارد. وقتی سیستم هوش مصنوعی بتواند این روابط را یاد بگیرد، توانایی حل مسئله آن به شکل قابل توجهی افزایش پیدا میکند.
روشهای مختلفی وجود دارد که هوش مصنوعی میتواند با استفاده از دانش پیشین، یادگیری خود را بهبود بخشد:
- یادگیری مبتنی بر توضیح (EBL): در این روش، سیستم از یک مثال مشخص، یک قانون کلی استخراج میکند. ماشین ابتدا مثال را «توضیح» میدهد، سپس این توضیح را تعمیم میدهد تا یک قانون عمومی بسازد. به این ترتیب، از یک تجربه خاص میتوان دانش مفید و کاربردی ساخت.
- یادگیری مبتنی بر مرتبط بودن (RBL): گاهی برخی ویژگیها در یک مسئله مهمتر از بقیه هستند. RBL به سیستم کمک میکند تا با استفاده از دانش پیشین، ویژگیهای مرتبط را پیدا کند و فضای جستجوی یادگیری را کوچکتر کند. این کار هم سرعت یادگیری را بالا میبرد و هم امکان تعمیم از مثالهای کمتر را فراهم میکند.
- یادگیری استنتاجی مبتنی بر دانش (KBIL): در این روش، ماشین با کمک دانش پسزمینه، الگوهایی پیدا میکند که مجموعهای از مشاهدات را توضیح دهند. این روش به نوعی ترکیبی از یادگیری تجربهای و استفاده از منطق است.
- برنامهنویسی منطقی استنتاجی (ILP): این روش KBIL را در سطح منطق مرتبه اول انجام میدهد، یعنی ماشین میتواند روابط پیچیدهای را یاد بگیرد که با سیستمهای مبتنی بر ویژگی ساده قابل بیان نیستند. ILP هم میتواند از بالا به پایین (شروع از قانون کلی و دقیق کردن آن) و هم از پایین به بالا (استفاده از استنتاج معکوس) انجام شود.
یکی از قابلیتهای جذاب ILP این است که میتواند پیشبینیها و قوانین جدیدی بسازد که پیشتر در دادهها وجود نداشتند. به بیان ساده، ماشین با استفاده از ILP فقط یاد نمیگیرد که مشاهدات گذشته را درست تفسیر کند، بلکه میتواند روابط و مفاهیم جدیدی را هم کشف کند و آنها را به شکل قوانین کوتاه و قابل فهم بیان کند.
مثلاً اگر سیستم با مثالهایی از حیوانات آموزش داده شود، میتواند علاوه بر شناسایی حیوانات جدید، قوانین عمومی درباره ویژگیهای آنها بسازد؛ مثل این که «هر حیوانی که بال دارد و پر است، احتمالاً پرنده است». این قوانین کوتاه و دقیق، یادگیری را سریعتر و مؤثرتر میکنند، زیرا ماشین میتواند آنها را برای دستههای جدیدی از دادهها هم اعمال کند.
یکی دیگر از جنبههای مهم این است که ILP و روشهای مشابه، امکان ساخت نظریههای علمی را فراهم میکنند. یعنی سیستم میتواند اطلاعات اولیه را به تدریج ترکیب کند و یک نظریه منسجم و قابل تعمیم بسازد، مشابه کاری که یک دانشمند واقعی انجام میدهد. این ویژگی باعث میشود که این روشها نه تنها برای مسائل مشخص کاربردی باشند، بلکه به عنوان ابزارهای عمومی برای کشف دانش علمی هم مورد استفاده قرار گیرند.
به طور کلی، وقتی از دانش پیشین در یادگیری ماشین استفاده میکنیم، چند مزیت مهم به دست میآوریم:
- یادگیری سریعتر با دادههای کمتر.
- ساخت قوانین کوتاه و قابل فهم که به تعمیمپذیری کمک میکنند.
- امکان استخراج روابط پیچیده و مفاهیم جدید.
- توانایی ایجاد سیستمهای هوش مصنوعی همهمنظوره که میتوانند به صورت تدریجی و ترکیبی دانش خود را گسترش دهند.
بنابراین، استفاده از دانش پیشین در هوش مصنوعی تنها به معنای «داشتن اطلاعات قبلی» نیست؛ بلکه راهی است برای ساخت یادگیری انباشتی، سریع، دقیق و خلاقانه که میتواند هم در مسائل عملی و هم در کشف علمی نقش مهمی ایفا کند.
بخش ۲۱: یادگیری مدلهای احتمالی
وقتی درباره یادگیری آماری صحبت میکنیم، در واقع منظور ما روشهایی است که کامپیوترها از دادهها یاد میگیرند و الگوهای پنهان را شناسایی میکنند. سادهترین شکل یادگیری آماری محاسبه میانگین یا درصد است، اما میتوانیم با استفاده از مدلهای پیچیدهتر، مانند شبکههای بیزی، اطلاعات بیشتری استخراج کنیم. این مدلها کاربردهای بسیار گستردهای دارند؛ از علوم کامپیوتر و مهندسی گرفته تا زیستشناسی محاسباتی، روانشناسی، علوم اعصاب و حتی فیزیک.
یکی از پایهایترین ایدهها در یادگیری آماری، یادگیری بیزی است. در این روش، ما یادگیری را به شکل استنتاج احتمالاتی تصور میکنیم. به عبارت دیگر، با مشاهده دادهها، احتمال درست بودن هر فرضیه (یا مدل) را بهروز میکنیم. این کار شبیه به پیروی از اصل «تیغ اوکام» است، که میگوید مدلهای سادهتر معمولاً بهتر هستند. اما اگر فضای فرضیهها خیلی بزرگ باشد، این روش به سرعت پیچیده و محاسباتی سنگین میشود.
یک راهکار سادهتر از یادگیری بیزی کامل، یادگیری به روش حداکثر احتمال پسین (Maximum a posteriori یا MAP) است. در این روش، ما به جای بررسی همه فرضیهها، تنها یک فرضیه را انتخاب میکنیم که بیشترین احتمال را با توجه به دادهها دارد. این روش همچنان از فرضیههای پیشین استفاده میکند و معمولاً محاسبات آن سادهتر است.
روش دیگری که در یادگیری آماری بسیار کاربرد دارد، یادگیری حداکثر درستنمایی (Maximum Likelihood) است. در این روش، به جای در نظر گرفتن فرضیههای پیشین، فقط فرضیهای انتخاب میشود که بیشترین احتمال تولید دادههای موجود را دارد. اگر بخواهیم ساده بگوییم، فرض کنید میخواهیم یک خط مستقیم از دادههای پراکنده پیدا کنیم؛ یادگیری حداکثر درستنمایی خطی را پیدا میکند که بیشترین تطابق را با دادهها دارد. در برخی موارد ساده، مانند رگرسیون خطی یا شبکههای بیزی که تمام متغیرها قابل مشاهده هستند، این حلها را میتوان به راحتی و به صورت دقیق پیدا کرد. یکی از نمونههای موفق این روش، الگوریتم ناو بیز (Naive Bayes) است که هم ساده و هم در بسیاری از مسائل مقیاسپذیر است.
اما در دنیای واقعی، همه چیز قابل مشاهده نیست. گاهی برخی متغیرها پنهان هستند و نمیتوانیم مستقیماً آنها را اندازهگیری کنیم. برای این موارد، الگوریتم تخمین حداکثر انتظار یا EM (Expectation Maximization) استفاده میشود. این الگوریتم به ما کمک میکند تا حتی وقتی اطلاعات ناقص داریم، بهترین تقریب ممکن از مدلها را پیدا کنیم. کاربردهای EM شامل گروهبندی دادهها بدون داشتن برچسب (Clustering) با استفاده از ترکیب توزیعهای گاوسی، یادگیری شبکههای بیزی و مدلهای مارکوف مخفی (Hidden Markov Models) است.
یکی دیگر از موضوعات مهم در یادگیری آماری، یادگیری ساختار شبکههای بیزی است. این کار شبیه انتخاب بهترین مدل از میان مدلهای ممکن است. معمولاً برای پیدا کردن بهترین ساختار، یک جستجوی گسسته در فضای تمام ساختارها انجام میدهیم و باید تعادلی میان پیچیدگی مدل و میزان تطابق آن با دادهها برقرار کنیم.
گاهی اوقات به جای این که تعداد مشخصی پارامتر برای مدل داشته باشیم، میخواهیم مدل بتواند با توجه به دادهها خودش شکل بگیرد و پیچیدگیاش تغییر کند. اینجاست که مدلهای غیرپارامتری وارد میشوند. در این مدلها، توزیع دادهها به جای اینکه با تعداد محدودی پارامتر مشخص شود، با خود مجموعه دادهها توصیف میشود. به عبارت دیگر، هر چه دادههای بیشتری داشته باشیم، مدل پیچیدهتر و دقیقتر میشود.
دو روش معروف در این زمینه عبارتاند از:
- روش نزدیکترین همسایه (Nearest Neighbors): برای پیشبینی یک نقطه جدید، دادههای نزدیک به آن را بررسی میکنیم و تصمیمگیری میکنیم.
- روش هستهای (Kernel Methods): به جای نگاه کردن فقط به نزدیکترین نقاط، تمام دادهها را با وزنهای متفاوت در نظر میگیریم و یک ترکیب وزنی بر اساس فاصلهها میسازیم.
به این ترتیب، مدل میتواند به طور انعطافپذیر شکل بگیرد و با دادههای جدید سازگار شود.
در مجموع، یادگیری آماری یکی از فعالترین و پیشرفتهترین حوزههای پژوهشی در هوش مصنوعی است. در سالهای اخیر پیشرفتهای بزرگی در نظریه و کاربرد آن رخ داده است، تا جایی که تقریباً هر مدلی که امکان استنتاج دقیق یا تقریبی داشته باشد، میتواند توسط این روشها یاد گرفته شود. از یادگیری ساده میانگینها گرفته تا ساخت مدلهای پیچیده شبکههای بیزی و مدلهای غیرپارامتری، این روشها ابزار قدرتمندی برای تحلیل دادهها و شناسایی الگوهای پنهان در دنیای واقعی فراهم میکنند.
بخش ۲۲: یادگیری عمیق
برای شروع، باید بدانیم که بسیاری از برنامههای هوش مصنوعی امروزی بر پایهی شبکههای عصبی ساخته شدهاند. شبکههای عصبی مجموعهای از واحدهای کوچک هستند که هر کدام عملکردی ساده دارند، اما وقتی با هم ترکیب میشوند، میتوانند وظایف بسیار پیچیدهای انجام دهند. این شبکهها قادرند روابط غیرخطی بین دادهها را یاد بگیرند؛ یعنی میتوانند الگوهایی را شناسایی کنند که با نگاه ساده به دادهها قابل دیدن نیستند.
برای آموزش یک شبکه عصبی، ما از الگوریتمی به نام «پسانتشار خطا» یا Backpropagation استفاده میکنیم. فرض کنید میخواهیم شبکه یاد بگیرد که یک تصویر را درست شناسایی کند. ابتدا شبکه یک حدس میزند، سپس میزان خطای آن حدس محاسبه میشود. الگوریتم پسانتشار خطا این خطا را به بخشهای مختلف شبکه میفرستد و با استفاده از آن، شبکه به تدریج وزنها و پارامترهای خود را تغییر میدهد تا پیشبینیهایش بهتر و دقیقتر شود. این فرآیند در واقع نوعی «گرادیان کاهشی» است، یعنی شبکه سعی میکند خطا را به کمترین مقدار ممکن برساند.
یکی از نکات مهم این است که شبکههای عصبی عمیق، یعنی شبکههایی که شامل چندین لایه هستند، توانایی بسیار بالایی در حل مسائل پیچیده دارند. به عنوان مثال، این شبکهها در تشخیص اشیاء در تصاویر، شناسایی گفتار، پردازش زبان طبیعی و حتی یادگیری از طریق تجربه در محیطهای پیچیده عملکرد بسیار خوبی دارند.
یکی از انواع شبکههای عصبی که برای پردازش تصاویر بسیار مناسب است، شبکههای کانولوشنی (Convolutional Networks) هستند. این شبکهها به جای اینکه تمام پیکسلهای تصویر را یکجا بررسی کنند، از فیلترهای کوچک استفاده میکنند که روی بخشهای مختلف تصویر حرکت میکنند و ویژگیهای محلی مانند لبهها یا بافتها را تشخیص میدهند. این ساختار باعث میشود شبکه بتواند الگوهای تصویری را به شکل مؤثرتری یاد بگیرد و در کاربردهایی مانند شناسایی چهره، طبقهبندی اشیاء و تشخیص اشیاء در عکسها عملکرد بسیار خوبی داشته باشد.
در مقابل، وقتی دادهها به شکل دنبالهای یا ترتیبی هستند، مانند جملات زبان طبیعی یا سیگنالهای صوتی، شبکههای بازگشتی (Recurrent Networks) گزینهی مناسبی هستند. این شبکهها توانایی حفظ اطلاعات گذشته را دارند و میتوانند روابط زمانی یا ترتیبی را در دادهها مدل کنند. به کمک این شبکهها، سیستمها میتوانند جملههای زبان طبیعی را تحلیل کنند، متن تولید کنند یا حتی ترجمه ماشینی انجام دهند.
به طور خلاصه، انتخاب نوع شبکه عصبی به نوع دادهها و مسألهای که میخواهیم حل کنیم بستگی دارد: شبکههای کانولوشنی برای دادههای دارای ساختار شبکهای مانند تصاویر و شبکههای بازگشتی برای دادههای ترتیبی مانند متن و صدا مناسب هستند. یادگیری این شبکهها و تنظیم پارامترهایشان به کمک الگوریتم پسانتشار خطا انجام میشود، و همین فرآیند پایهی بسیاری از موفقیتهای هوش مصنوعی مدرن است.
بخش ۲۳: یادگیری تقویتی
تصور کنید میخواهیم ماشینی بسازیم که بتواند در محیطی ناشناخته تصمیم بگیرد و بهترین کارها را انجام دهد. این دقیقاً همان چیزی است که در هوش مصنوعی تحت عنوان یادگیری تقویتی بررسی میکنیم. یادگیری تقویتی به ما میگوید چگونه یک عامل (یا ربات، یا برنامهی هوشمند) میتواند از تجربه خود یاد بگیرد، حتی وقتی قوانین محیط را نمیداند و فقط پاداشها یا بازخوردهای گاهبهگاه دریافت میکند.
اولین نکتهای که باید بدانیم این است که طراحی کلی عامل مشخص میکند چه اطلاعاتی باید یاد بگیرد:
- اگر عامل بر اساس مدل باشد، یعنی بتواند مدل محیط را در ذهن خود بسازد (مثلاً پیشبینی کند اگر کاری انجام دهد چه اتفاقی میافتد)، او باید دو چیز یاد بگیرد: یک مدل از احتمال تغییر حالتها و یک تابع سودمندی یا Utility برای حالتها.
- اگر عامل بدون مدل عمل کند، یعنی فقط بر اساس تجربه مستقیم یاد بگیرد، میتواند یک تابع سودمندی برای عملها یا یک سیاست تصمیمگیری یاد بگیرد، بدون اینکه نیاز به دانستن مدل محیط داشته باشد.
حالا ممکن است بپرسید «چطور میتوان این سودمندیها را یاد گرفت؟» روشهای مختلفی برای این کار وجود دارد:
- برآورد مستقیم سودمندی: عامل فقط مجموع پاداشهایی را که در یک مسیر دریافت کرده به عنوان نشانه برای یادگیری سودمندی آن حالت استفاده میکند.
- برنامهریزی پویا یا Adaptive Dynamic Programming (ADP): در این روش، عامل ابتدا مدل محیط و تابع پاداش را از تجربههای خود یاد میگیرد و سپس با استفاده از الگوریتمهایی مثل تکرار ارزش یا تکرار سیاست، سودمندیها یا بهترین سیاست را محاسبه میکند. این روش از محدودیتهای محلی حالتها برای بهینهسازی سودمندی استفاده میکند.
- روش تفاوت زمانی (Temporal-Difference یا TD): این روش به عامل اجازه میدهد سودمندی یک حالت را طوری تنظیم کند که با سودمندی حالتهای بعدی سازگارتر باشد. مزیت بزرگ آن این است که برای یادگیری نیاز به مدل محیط ندارد، اما اگر مدلی ساخته شود و از آن برای تولید تجربیات مصنوعی استفاده شود، یادگیری سریعتر انجام میشود.
علاوه بر یادگیری سودمندی حالتها، میتوان تابع سودمندی عملها (Q-function) را هم یاد گرفت، چه با روش ADP و چه با روش TD. در روش TD، Q-learning حتی بدون داشتن مدل، میتواند یاد بگیرد و اقدام انتخاب کند. البته یادگیری بدون مدل پیچیدگی را کم میکند اما ممکن است در محیطهای پیچیده محدودیت ایجاد کند، چون عامل نمیتواند نتایج احتمالی اقدامات مختلف را شبیهسازی کند.
یک نکته مهم دیگر در یادگیری تقویتی، تعادل بین یادگیری و تصمیمگیری است. عامل باید هنگام انتخاب اقدامات، بین ارزش تخمینی آنها و فرصت یادگیری اطلاعات جدید تعادل برقرار کند. یافتن راه حل دقیق برای این مسئله تقریباً غیرممکن است، ولی برخی روشهای ساده یا heuristics، عملکرد قابل قبولی دارند. همچنین عامل باید مراقب باشد که قبل از یادگیری کافی، «از بین نرود» یا به شرایط خطرناک دچار نشود.
در محیطهایی با فضای حالت بزرگ، یادگیری تقویتی نیازمند استفاده از نمایشهای تابعی تقریبی برای U(s) یا Q(s,a) است تا عامل بتواند تجربههای خود را به حالتهای مشابه تعمیم دهد. در اینجا یادگیری تقویتی عمیق وارد میدان میشود؛ شبکههای عصبی عمیق به عنوان تقریبزننده تابع، توانستهاند مشکلات بسیار پیچیده را حل کنند.
همچنین، برای یادگیری رفتارهای پیچیده، میتوان از روشهایی مثل Reward Shaping (تغییر شکل پاداشها) و یادگیری سلسلهمراتبی استفاده کرد. این روشها مخصوصاً زمانی مفید هستند که پاداشها کمیاب باشند و انجام اقدامات زیاد برای رسیدن به آنها لازم باشد.
یکی دیگر از رویکردهای یادگیری تقویتی، روشهای جستجوی سیاست یا Policy Search است. در این روشها، به جای اینکه عامل ابتدا تابع سودمندی را یاد بگیرد و سپس تصمیم بگیرد، مستقیماً سیاست تصمیمگیری خود را بهینه میکند. سیاست تصمیمگیری به زبان ساده یعنی: «در هر وضعیت چه کاری انجام دهم؟» مشکل اصلی در این روشها، نوسان عملکرد در محیطهای تصادفی است. برای مثال، یک عامل ممکن است در شرایط شبیهسازی شده، گاهی عملکرد خوبی داشته باشد و گاهی نه. در محیطهای شبیهسازی شده میتوان با ثابت کردن تصادفی بودن پیش از اجرا، این مشکل را کاهش داد.
روش دیگری که در یادگیری تقویتی کاربرد دارد، یادگیری از کارآموزی یا Apprenticeship Learning است. در این رویکرد، وقتی مشخص کردن تابع پاداش مناسب دشوار باشد، عامل میتواند با مشاهده رفتار یک متخصص یاد بگیرد. این نوع یادگیری به دو شکل انجام میشود:
- یادگیری تقلیدی (Imitation Learning): عامل سعی میکند سیاستی بسازد که همان کاری را انجام دهد که متخصص در وضعیتهای مختلف انجام داده است.
- یادگیری تقویتی معکوس (Inverse Reinforcement Learning): عامل سعی میکند از رفتار متخصص، اطلاعات مربوط به پاداش را استنتاج کند و سپس بر اساس آن یاد بگیرد.
یکی از دلایلی که یادگیری تقویتی بسیار مورد توجه است، این است که به ما اجازه میدهد بدون نیاز به برچسبگذاری دستی دادهها یا کدگذاری دقیق رفتارها، سیستمهای هوشمند بسازیم. این مزیت مخصوصاً در روباتیک اهمیت زیادی دارد، جایی که محیطها ممکن است پیچیده، پیوسته، و قابل مشاهده جزئی باشند و رفتار موفقیتآمیز ممکن است از هزاران یا حتی میلیونها اقدام ساده تشکیل شده باشد.
در نهایت، باید بدانیم که هیچ روش واحدی برای یادگیری تقویتی وجود ندارد که در همه شرایط بهترین باشد. یکی از بحثهای اساسی، روشهای مبتنی بر مدل در مقابل روشهای بدون مدل است. این پرسش در حقیقت به نحوه بهترین نمایش عملکرد عامل مربوط میشود. تحقیقات تاریخی هوش مصنوعی نشان میدهند که اغلب رویکردهای موفق، از نوع مبتنی بر دانش بودهاند؛ یعنی عامل بخشی از محیط را در قالب مدل در ذهن خود ساخته و بر اساس آن تصمیم گرفته است.
با اینکه روشهای بدون مدل میتوانند در صورت دسترسی به داده کافی موفق باشند، در عمل همیشه داده کافی در دسترس نیست. مثلاً تصور کنید بخواهیم با یک روش بدون مدل، دستگاهی مثل آشکارساز امواج گرانشی LIGO را طراحی کنیم؛ عملاً بدون مدل، چنین کاری شدنی نیست. تجربه نشان میدهد که هر چه محیط پیچیدهتر شود، مزایای روشهای مبتنی بر مدل بیشتر آشکار میشود.
بخش ۲۴: پردازش زبان طبیعی
وقتی میخواهیم کامپیوترها را طوری آموزش دهیم که زبان انسان را بفهمند یا پردازش کنند، یکی از سادهترین روشها استفاده از مدلهای زبانی احتمالاتی است. این مدلها بر اساس چیزهایی به نام n-gram ساخته میشوند، که به زبان ساده یعنی نگاه کردن به توالیهای کوتاه از کلمات در متن و بررسی اینکه کلمات چگونه معمولاً کنار هم قرار میگیرند. این روش ساده، با وجود ظاهر ابتدایی، میتواند اطلاعات زیادی درباره زبان استخراج کند و کارهای مختلفی مثل تشخیص زبان یک متن، اصلاح املا، تحلیل احساسات، دستهبندی ژانر، و شناسایی اسامی خاص را انجام دهد.
اما مشکل این مدلها این است که میتوانند میلیونها ویژگی داشته باشند، یعنی تعداد زیادی الگو و ترکیب از کلمات که مدل باید یاد بگیرد. برای اینکه این مدلها به درستی عمل کنند، لازم است دادهها را قبل از آموزش پاکسازی کنیم و کارهایی مانند «نرمسازی» انجام دهیم تا نویز یا اطلاعات اضافی کاهش یابد.
در طراحی یک سیستم زبانی آماری، هدف اصلی این است که مدلی بسازیم که بتواند بهترین استفاده را از دادههای موجود ببرد، حتی اگر مدل ساده به نظر برسد. این یعنی گاهی یک روش ابتدایی اما با دادههای کافی میتواند نتایج بسیار خوبی بدهد.
برای اینکه مدلهای زبانی بهتر بفهمند کلمات چه معنایی دارند و چقدر به هم شبیهاند، از چیزی به نام نمایشهای برداری کلمات یا Word Embeddings استفاده میکنیم. به زبان ساده، هر کلمه را به یک بردار عددی تبدیل میکنیم، به طوری که کلمات با معانی مشابه در فضای برداری نزدیک هم باشند. این روش باعث میشود مدل بتواند ارتباط معنایی بین کلمات را درک کند و کارهایی مثل تحلیل معنایی و یافتن هممعنیها را بهتر انجام دهد.
علاوه بر این، زبان انسان ساختار سلسلهمراتبی دارد؛ یعنی جملات فقط لیستی از کلمات نیستند، بلکه بخشها و عباراتی دارند که به هم وابستهاند. برای مدلسازی این ساختار از گرامرهای ساختاری استفاده میکنیم. مهمترین نوع آن گرامرهای بدونزمینه (Context-Free Grammars) است. وقتی میخواهیم به آن بعد احتمالاتی بدهیم، از گرامرهای احتمالاتی بدونزمینه (PCFG) استفاده میکنیم. یک روش دیگر هم گرامر وابستگی (Dependency Grammar) است که روابط بین کلمات را به شکل گراف نشان میدهد.
برای تحلیل و درک جملات با این گرامرها، از الگوریتمهایی مثل CYK استفاده میکنیم که میتوانند جملات را با زمان O(n³) پردازش کنند. اگر بخواهیم سریعتر عمل کنیم و کمی دقت را فدا کنیم، الگوریتمهای دیگری مثل Beam Search یا Shift-Reduce Parsing میتوانند جملات را در زمان تقریبی O(n) پردازش کنند.
برای اینکه مدلهای زبانی بتوانند بهتر قواعد گرامری را یاد بگیرند، معمولاً از منابعی به نام Treebank استفاده میکنیم. Treebank مجموعهای از جملات است که قبلاً توسط انسانها تحلیل و برچسبگذاری شدهاند تا ساختار نحوی آنها مشخص باشد. با استفاده از این دادهها میتوان پارامترهای یک گرامر احتمالاتی بدونزمینه (PCFG) را یاد گرفت و مدلی دقیقتر ساخت.
گاهی لازم است گرامر را گسترش دهیم تا ویژگیهای خاص زبان، مثل توافق فاعل و فعل یا حالت ضمایر را نیز در نظر بگیرد. همچنین میتوان اطلاعات را نه فقط روی دستههای کلی کلمات، بلکه روی خود کلمات اعمال کرد تا مدل توانایی درک دقیقتری پیدا کند.
برای درک معنی جملات هم میتوان گرامر را توسعه داد. به این معنا که مدل بتواند از متن، معنا یا پاسخ مناسب را استخراج کند. برای مثال، میتوان از یک مجموعه سؤالات همراه با نمایش منطقی یا پاسخ آنها استفاده کرد تا مدل یاد بگیرد چگونه جملهها را به معنای دقیق خود تبدیل کند.
در نهایت، باید بدانید که زبان طبیعی بسیار پیچیده است و به سختی میتوان آن را به طور کامل در یک گرامر رسمی گنجاند. حتی پیشرفتهترین مدلها هم فقط بخشهایی از پیچیدگی زبان را پوشش میدهند، اما با ترکیب روشهای آماری، بردارهای کلمات و گرامرهای ساختاری، میتوانیم سیستمهایی بسازیم که عملکرد قابل توجهی در پردازش زبان طبیعی داشته باشند.
بخش ۲۵: یادگیری عمیق برای پردازش زبان طبیعی
در حوزه پردازش زبان طبیعی، یکی از اولین چالشها این است که کامپیوتر چگونه میتواند معنای کلمات را درک کند. اگر بخواهیم به سادهترین شکل توضیح دهیم، در گذشته هر کلمه به صورت یک عدد یا شناسهی منفرد ذخیره میشد، چیزی شبیه به برچسب. اما این روش محدودیت زیادی داشت، زیرا هیچ اطلاعاتی درباره شباهت معنایی کلمات به ما نمیداد؛ مثلاً «گربه» و «سگ» از دید کامپیوتر کاملاً متفاوت بودند، حتی اگر معنای آنها نزدیک باشد.
اینجاست که نمایشهای پیوسته یا Word Embeddings وارد میدان شدند. در این روش، هر کلمه با یک بردار عددی نشان داده میشود که شباهت معنایی بین کلمات را حفظ میکند. یعنی کلماتی که در متنهای واقعی مشابه هم استفاده میشوند، بردارهایشان هم به هم نزدیک است. مزیت بزرگ این رویکرد این است که میتوانیم این بردارها را از متون بدون برچسب یاد بگیریم، یعنی نیازی نیست که انسانها به هر متن برچسب معنایی بدهند.
پس از آن، برای درک جملهها و متنها، ما به مدلی نیاز داریم که بتواند زمینه یا Context کلمات را در جمله در نظر بگیرد. یکی از مدلهای قدیمی و موفق در این زمینه، شبکههای عصبی بازگشتی (RNN) است. این مدلها اطلاعات مرتبط با کلمات گذشته را در یک ساختار داخلی به نام وکتور حالت پنهان (Hidden State Vector) نگه میدارند. به این ترتیب، مدل میتواند هم رابطه نزدیک کلمات و هم ارتباطهای دورتر در جمله را درک کند.
با این امکان، میتوانیم کارهای جذابی انجام دهیم، مثل ترجمه ماشینی یا تولید متن، که مدلها در قالب Sequence-to-Sequence عمل میکنند. در این روش، یک جمله به عنوان ورودی داده میشود و مدل سعی میکند جملهای معادل یا ادامهی مناسب آن را تولید کند.
با پیشرفت تحقیقات در پردازش زبان طبیعی، مدلهای ترنسفورمر (Transformer) معرفی شدند که به شکل قابل توجهی توانایی درک متن را افزایش دادند. نکته کلیدی در ترنسفورمرها مکانیزمی به نام Self-Attention است. این مکانیزم به مدل اجازه میدهد توجه خود را به تمام کلمات جمله معطوف کند و ارتباط بین کلمات نزدیک و دور را همزمان بررسی کند. به عبارت سادهتر، مدل میتواند بگوید: «برای فهم معنای این کلمه، کدام کلمات دیگر در جمله مهم هستند.»
یکی دیگر از مزایای ترنسفورمرها این است که محاسبات آنها به شکلی طراحی شده که میتوانند از سختافزارهای مدرن، مانند عملیات ضرب ماتریس، بهینه استفاده کنند. این ویژگی باعث شده مدلها بسیار سریعتر آموزش ببینند و روی مجموعه دادههای بزرگتر کار کنند.
حالا که با این مدلها آشنا شدیم، میتوانیم از یادگیری انتقالی (Transfer Learning) استفاده کنیم. در این روش، یک مدل ابتدا روی مجموعه دادههای بسیار بزرگ و بدون برچسب آموزش داده میشود تا ساختار زبان را یاد بگیرد. سپس همان مدل با تنظیم دقیق (Fine-Tuning) روی کارهای خاص مانند پاسخ به سوال، تحلیل احساسات یا تشخیص ارتباط متنی، آموزش داده میشود.
یک مثال ساده: فرض کنید مدلی برای پیشبینی کلمه بعدی در متن آموزش دیده است. این مدل بعد از آموزش اولیه میتواند به راحتی برای کارهای دیگر مثل پاسخ به سوال یا بررسی رابطه منطقی بین جملات، مورد استفاده قرار گیرد. دلیل این قابلیت این است که مدل در مرحله اول دانش عمومی زیادی درباره زبان و معنا کسب کرده است و حالا تنها نیاز دارد با دادههای جدید، برای کار خاص خود تطبیق داده شود.
بخش ۲۶: رباتیک
تصور کنید یک ربات داریم، چیزی شبیه یک ماشین یا دست مکانیکی که میتواند در دنیای واقعی حرکت کند و اشیاء را جابهجا کند. رباتها معمولاً دو دسته اصلی دارند: دستهای رباتیک (مانند بازوها) و روباتهای متحرک (مانند ماشینهای کوچک خودران). این رباتها برای دیدن و فهمیدن محیطشان از حسگرها استفاده میکنند و برای حرکت کردن از موتورها و محرکها کمک میگیرند. هر حرکت ربات روی دنیای واقعی تأثیر میگذارد.
اما مشکل این است که دنیای واقعی همیشه کامل و پیشبینیپذیر نیست. مثلاً ممکن است زمین لغزنده باشد یا اطلاعات کاملی از محیط نداشته باشیم. برای حل این مشکلات، دانشمندان رباتیک از روشهایی استفاده میکنند که به ربات کمک میکند با عدم قطعیت و اطلاعات ناقص کنار بیاید و بتواند با دیگر موجودات یا رباتها تعامل کند.
در حالت ایدهآل، ربات باید بتواند همه چیز را یکجا حل کند: حسگرها دادهها را میخوانند و ربات به همان شکل مستقیم حرکت میکند. ولی در عمل، این کار بسیار پیچیده است. به همین دلیل، متخصصان رباتیک کار را به بخشهای مختلف تقسیم میکنند و هر بخش را جداگانه بررسی میکنند.
یک بخش مهم، درک محیط یا ادراک ربات است. رباتها از دوربینها و حسگرهای دیگر استفاده میکنند تا محیط اطرافشان را بشناسند، موقعیت خود را تشخیص دهند و نقشهای از محیط بسازند. برای اینکه ربات بتواند تصمیمهای درست بگیرد، نیاز دارد یک نمایش داخلی از محیط و خودش داشته باشد و آن را به مرور زمان بهروز کند.
برای این کار، از روشهای آماری و احتمالاتی مانند فیلتر ذرهای و فیلتر کالمن استفاده میشود. این روشها به ربات کمک میکنند یک تخمین دقیق از وضعیت محیط و خودش داشته باشد، حتی وقتی دادهها کمی نامطمئن هستند.
بعد از اینکه ربات محیط را درک کرد، باید حرکت کند. برای اینکه ربات بتواند حرکت کند، باید بداند هر قسمت بدنش کجا قرار دارد. به این اطلاعات میگوییم فضای پیکربندی: یعنی یک نقطه در این فضا، همه چیز لازم برای مشخص کردن موقعیت تمام قسمتهای ربات را نشان میدهد. برای مثال، اگر یک بازوی رباتی دو مفصل دارد، زاویههای آن دو مفصل همه چیز را مشخص میکنند.
برای حرکت دادن ربات، متخصصان رباتیک کار را به دو بخش تقسیم میکنند:
- برنامهریزی مسیر (Motion Planning): ربات باید یک مسیر از نقطه شروع تا مقصد پیدا کند که با موانع برخورد نکند. این کار مثل پیدا کردن کوتاهترین مسیر در یک نقشه است، اما کمی پیچیدهتر، چون مسیر در فضای واقعی و پیوسته است. برای این کار از روشهای مختلفی استفاده میکنند:
- جستجوی گرافی و تقسیمبندی محیط به خانهها
- برنامهریزی تصادفی مسیر که مسیرها را به صورت تصادفی امتحان میکند تا یک مسیر خوب پیدا شود
- بهینهسازی مسیر که مسیر اولیه را کمکم اصلاح میکند تا از موانع دور بماند
- کنترل حرکت (Trajectory Tracking Control): وقتی مسیر پیدا شد، ربات باید آن را دنبال کند. این کار با کنترلرهایی انجام میشود که دائماً خطا بین مکان فعلی ربات و مسیر مورد نظر را اصلاح میکنند. برای مثال، کنترلر PID یک روش ساده و معروف است که با مقایسه وضعیت فعلی و وضعیت مطلوب، حرکت موتور را تنظیم میکند. روشهای پیشرفتهتر مثل کنترل گشتاور محاسباتی از دینامیک ربات استفاده میکنند تا دقیقتر حرکت کند.
گاهی اوقات متخصصان از روشهای بهینهسازی ترکیبی استفاده میکنند که برنامهریزی مسیر و کنترل حرکت را با هم انجام میدهند و مسیر بهینهای پیدا میکنند. اگر شرایط ساده باشد، میتوان از روشهای ریاضی مانند LQR استفاده کرد که مسیر بهینه را محاسبه میکند.
اما در دنیای واقعی، همیشه عدم قطعیت و تغییرات محیط وجود دارد. به همین دلیل رباتها باید بتوانند همزمان حرکت کنند و مسیرشان را بهروز کنند. این کار با روشهایی مثل کنترل پیشبینی مدل (MPC) انجام میشود، که ربات به طور مداوم مسیر را بازبینی میکند و تصمیمهای جدید میگیرد.
یک ربات فقط با برنامهریزی مسیر و کنترل حرکت کافی نیست. برای اینکه بتواند در دنیای واقعی و اطراف انسانها مفید باشد، باید از تجربه یاد بگیرد و با انسانها تعامل کند.
۱. یادگیری از تجربه:
رباتها میتوانند از روشهایی مثل یادگیری تقویتی (Reinforcement Learning) استفاده کنند. در این روش، ربات یک کار را بارها انجام میدهد و تلاش میکند بهترین راه را پیدا کند. برای مثال، یک ربات میتواند یاد بگیرد چگونه یک لیوان را بردارد بدون اینکه بیفتد. دانشمندان سعی میکنند با روشهای هوشمندانه، تعداد دفعات آزمایش واقعی ربات را کم کنند، چون هر بار آزمایش واقعی زمانبر است و ممکن است اشیاء آسیب ببینند.
این کار میتواند با دو روش انجام شود:
- استفاده از مدل دنیای واقعی که ربات در کامپیوتر شبیهسازی میکند و یاد میگیرد.
- یا آموزش ربات به گونهای که رفتار او در شرایط مختلف پایدار و مطمئن باشد.
۲. تعامل با انسانها:
گاهی رباتها باید کنار انسانها کار کنند یا به آنها کمک کنند. برای این کار، ربات باید بتواند رفتار انسان را پیشبینی کند. مثلاً اگر یک انسان چیزی را بردارد یا حرکت کند، ربات با نگاه به حرکت فعلی او حدس میزند در لحظات بعد چه کاری خواهد کرد و حرکت خود را مطابق آن تنظیم میکند.
۳. یادگیری خواستههای انسان:
رباتها همچنین باید بفهمند انسانها چه میخواهند. این کار میتواند به دو شکل باشد:
- یادگیری از دستورها یا نمایشها: انسان یک حرکت را نشان میدهد یا اصلاح میکند، و ربات یاد میگیرد که چه کاری درست است.
- تقلید و یادگیری از رفتار انسان: ربات حرکت انسان را تقلید میکند و با یادگیری تقویتی یاد میگیرد که در شرایط جدید هم بتواند درست عمل کند.
به طور خلاصه، رباتها با ترکیب ادراک محیط، برنامهریزی مسیر، کنترل حرکت، یادگیری و تعامل با انسان میتوانند به شکلی هوشمند و مؤثر در دنیای واقعی عمل کنند. این فرایند باعث میشود رباتها نه تنها وظایف ساده را انجام دهند، بلکه با محیط و انسانها انعطافپذیر و مطمئن رفتار کنند.
بخش ۲۷: بینایی رایانهای
اگر تا به حال به یک عکس نگاه کردهاید و بدون فکر زیاد توانستهاید اجسام، فاصلهها و حرکتها را تشخیص دهید، احتمالاً تصور میکنید که دیدن کار سادهای است. اما واقعیت این است که برای یک کامپیوتر، درک یک تصویر نیازمند محاسبات بسیار پیچیدهای است. هدف بینایی کامپیوتری، یعنی علمی که به کامپیوترها امکان میدهد تصاویر را بفهمند، استخراج اطلاعاتی است که برای کارهایی مثل دستکاری اجسام، هدایت رباتها، یا شناسایی اشیاء ضروری است.
اولین نکته مهم، تفاوت بین تولید تصویر و فهم تصویر است. اگر بخواهیم یک صحنه سهبعدی را توصیف کنیم و از زاویهای دلخواه از آن عکس بسازیم، این کاری است که گرافیک کامپیوتری انجام میدهد و نسبتاً ساده است. اما کاری که بینایی کامپیوتری انجام میدهد، برعکس این است: یعنی ما یک تصویر داریم و میخواهیم بفهمیم چه اشیایی در آن هستند، چه شکل و ابعادی دارند و موقعیت آنها در فضای سهبعدی کجاست. این کار بسیار دشوارتر است و دلیل آن این است که اطلاعات موجود در یک تصویر دو بعدی ناقص و مبهم است.
برای شروع فهم تصاویر، باید بدانیم کامپیوترها چگونه از ویژگیهای تصویر استفاده میکنند. تصاویر شامل لبهها، بافتها، جریان نوری (نشاندهنده حرکت) و نواحی مختلف هستند. این اطلاعات، سرنخهایی درباره مرز اجسام و شباهت یا تفاوت تصاویر فراهم میکنند.
یکی از ابزارهای مهم در بینایی کامپیوتری شبکههای عصبی کانولوشنی (CNN) هستند. این شبکهها میتوانند الگوهای بسیار پیچیده در تصاویر را شناسایی کنند، بهطوری که هر الگو میتواند شامل الگوهای کوچکتر دیگری باشد و همینطور ادامه پیدا کند. با این حال، پیشبینی عملکرد دقیق این شبکهها روی تصاویر جدید همیشه ساده نیست، چون ممکن است تصاویر آزمایشی با دادههایی که شبکه هنگام آموزش دیده متفاوت باشند. با این وجود، تجربه نشان داده که معمولاً دقت کافی برای استفاده عملی دارند.
وقتی شبکههای عصبی کانولوشنی بتوانند تصاویر را دستهبندی کنند، میتوان از آنها برای تشخیص اشیاء در تصویر استفاده کرد. ایده ساده است: ابتدا یک دستهبند (classifier) بررسی میکند که آیا یک کادر مشخص در تصویر احتمالاً شامل یک شیء است یا نه. سپس دستهبند دیگری مشخص میکند که شیء موجود چیست. این روشها کامل و بینقص نیستند، اما برای بسیاری از کاربردها، مانند تشخیص خودروها در خیابان، ردیابی اشیاء در ویدئو، یا جستجوی تصاویر، کافی و مفید هستند.
یکی دیگر از قابلیتهای جالب بینایی کامپیوتری، بازسازی ساختار سهبعدی یک صحنه است. اگر از یک صحنه بیش از یک دیدگاه عکس داشته باشیم، میتوانیم اطلاعات عمق و فاصله بین اجسام را بازیابی کنیم و رابطه بین زاویهها و دیدگاهها را درک کنیم. حتی در برخی موارد، میتوان از یک تصویر منفرد هم اطلاعات سهبعدی تقریبی بدست آورد. این امکان برای کاربردهایی مانند واقعیت افزوده، هدایت رباتها یا طراحی مجازی محیطها اهمیت زیادی دارد.
روشهای بینایی کامپیوتری امروزه در زمینههای بسیار گستردهای استفاده میشوند. از خودروهای خودران و رباتیک گرفته تا تشخیص بیماریها در پزشکی و تحلیل تصاویر ماهوارهای. در همه این کاربردها، هدف اصلی یکسان است: کمک به کامپیوتر برای درک و استفاده از اطلاعات تصویری به شکل مؤثر و عملی.
با وجود پیشرفتهای چشمگیر، بینایی کامپیوتری هنوز با چالشهایی روبهرو است. یکی از مهمترین مسائل، تنوع و پیچیدگی دنیای واقعی است. تصاویر واقعی میتوانند تحت شرایط نور متفاوت، زاویه دید گوناگون، یا حتی با تغییر شکل و اندازه اجسام گرفته شوند. شبکههای عصبی و الگوریتمها ممکن است روی تصاویری که متفاوت از دادههای آموزشی هستند، دقیق عمل نکنند. به عبارت دیگر، یک سیستم که در آزمایشگاه عالی کار میکند، ممکن است در شرایط واقعی با خطا مواجه شود.
یکی دیگر از محدودیتها، فهم کامل صحنهها است. در حالی که تشخیص لبهها، بافتها و اجسام امکانپذیر است، درک دقیق روابط فضایی، پیشبینی حرکتها، یا شناسایی اجسام مخفی یا نیمهپنهان هنوز به اندازه انسان ساده نیست. حتی بازسازی سهبعدی از یک تصویر تنها تخمین تقریبی است و خطاهای خاص خودش را دارد.
با این حال، تجربه نشان داده که با ترکیب روشها و استفاده از دادههای بیشتر، دقت و کاربرد این سیستمها روزبهروز افزایش مییابد. مهم این است که بینایی کامپیوتری ابزاری است که به ما کمک میکند اطلاعات تصویری را به شکلی مفید و قابل استفاده استخراج کنیم، حتی اگر همیشه کامل و بیخطا نباشد.
بخش ۲۸: فلسفه، اخلاق و ایمنی هوش مصنوعی
وقتی از هوش مصنوعی صحبت میکنیم، اولین چیزی که باید بدانیم این است که دانشمندان و فیلسوفان دو دیدگاه متفاوت دارند. برخی معتقدند که ماشینها میتوانند رفتاری هوشمند از خود نشان دهند؛ این را «هوش مصنوعی ضعیف» مینامیم. در مقابل، برخی دیگر فرض میکنند که ماشینها ممکن است ذهن واقعی داشته باشند، یعنی چیزی فراتر از شبیهسازی رفتار انسان؛ این را «هوش مصنوعی قوی» میگوییم.
یکی از پایههای مهم در هوش مصنوعی، آزمایش معروف آلن تورینگ است. تورینگ پرسشی که معمولاً مطرح میشد، یعنی «آیا ماشینها میتوانند فکر کنند؟»، کنار گذاشت و به جای آن پیشنهاد داد رفتار ماشینها را مورد سنجش قرار دهیم. هدف او این بود که با مشاهده رفتار ماشین، به طور عملی تواناییهای هوشمندانه آن را ارزیابی کنیم. جالب اینجاست که بسیاری از پژوهشگران امروز کمتر به خود «آزمون تورینگ» توجه میکنند و بیشتر بر عملکرد عملی سیستمها در کارهای واقعی تمرکز دارند، نه صرفاً توانایی تقلید رفتار انسان.
یک نکته مهم که هنوز حل نشده، مسئلهی «هوشیاری» است. ما هنوز به طور کامل نمیدانیم که ذهن انسان چگونه تجربه آگاهی را تولید میکند، و این بخش از هوش مصنوعی هنوز رازآلود باقی مانده است.
هوش مصنوعی ابزاری بسیار قدرتمند است و همین قدرت میتواند خطراتی نیز ایجاد کند. مثلاً استفاده در سلاحهای خودران مرگبار، نفوذ به حریم خصوصی، خطاهای ناخواسته، یا سوءاستفادههای عمدی. بنابراین هر کسی که با هوش مصنوعی کار میکند، مسئولیت اخلاقی دارد که این خطرها را به طور مسئولانه کاهش دهد.
علاوه بر این، سیستمهای هوش مصنوعی باید قابل اعتماد، شفاف و عادلانه باشند. مفهوم «عدالت» در هوش مصنوعی پیچیده است و جنبههای مختلفی دارد؛ به همین دلیل نمیتوان همه آنها را به طور همزمان به حداکثر رساند. قدم اول برای ایجاد سیستمهای منصفانه این است که مشخص کنیم چه چیزی «عادلانه» محسوب میشود.
در نهایت، هوش مصنوعی و خودکارسازی در حال تغییر نحوهی کار انسانها هستند و به عنوان یک جامعه، لازم است آماده باشیم تا با این تغییرات مواجه شویم و اثرات آن را مدیریت کنیم.
بخش ۲۹: آیندهٔ هوش مصنوعی
وقتی درباره هوش مصنوعی صحبت میکنیم، اولین قدم این است که بفهمیم هوش مصنوعی در اصل تلاش برای ساخت «عاملهای تقریباً عقلانی» است. منظور از عامل، چیزی است که میتواند محیط خود را ببیند، تصمیم بگیرد و عمل کند تا به هدفی برسد. بعضی از این عاملها بسیار سادهاند و فقط بر اساس واکنشهای مستقیم عمل میکنند، مثل یک سنسور که وقتی نور میبیند چراغ را روشن میکند. برخی دیگر پیچیدهترند و از دانش و احتمالات برای تصمیمگیری استفاده میکنند و حتی میتوانند تجربه گذشته را یاد بگیرند و بهتر عمل کنند. در دنیای امروز، الگوریتمهای یادگیری عمیق همراه با یادگیری تقویتی توانستهاند عاملهایی بسازند که با تمرین و تجربه، رفتار خود را بهبود دهند.
برای ساخت چنین عاملهایی، مجموعهای از فناوریها به کار میرود. گاهی از منطق و قوانین صریح استفاده میکنیم، گاهی از مدلهای احتمالاتی و گاهی از شبکههای عصبی که شبیه مغز انسان عمل میکنند. اطلاعات درباره محیط میتواند به صورت ساده یا پیچیده ذخیره شود، و الگوریتمهای مختلف یادگیری میتوانند از دادههای متفاوت، مثل متن، تصویر یا صدا، استفاده کنند. علاوه بر این، عاملها برای تعامل با جهان به حسگرها و عملگرها نیاز دارند؛ حسگرها برای دیدن و شنیدن و عملگرها برای حرکت و تأثیر گذاشتن روی محیط.
هوش مصنوعی امروز کاربردهای بسیار متنوعی دارد؛ از پزشکی و تشخیص بیماری گرفته تا مالی، حملونقل و ارتباطات. پیشرفتها هم به دو شکل رخ دادهاند: درک علمی ما از اصول هوش مصنوعی و همچنین تواناییهای فناورانه که میتوانند این درک را به محصولاتی مفید تبدیل کنند.
بسیاری از کارشناسان نسبت به آینده هوش مصنوعی خوشبین هستند. تخمینهای میانگین نشان میدهد که ممکن است در طی ۵۰ تا ۱۰۰ سال آینده، سیستمهای هوش مصنوعی بتوانند در طیف گستردهای از وظایف، سطح عملکردی مشابه انسان داشته باشند. حتی در دهه آینده، پیشبینی میشود هوش مصنوعی بتواند سالانه تریلیونها دلار به اقتصاد جهانی اضافه کند، چرا که توانایی انجام کارهای تکراری، پردازش حجم زیادی از داده و کمک به تصمیمگیریهای پیچیده را دارد.
با این حال، برخی منتقدان معتقدند رسیدن به هوش مصنوعی عمومی (که در همه زمینهها مثل انسان عمل کند) ممکن است قرنها طول بکشد. علاوه بر این، مسائل اخلاقی مهمی نیز وجود دارد: آیا هوش مصنوعی منصفانه عمل میکند؟ آیا باعث افزایش نابرابری نمیشود؟ و آیا استفاده نادرست از آن میتواند خطرناک یا مرگبار باشد؟
برای پاسخ به این سوالات، باید بررسی کنیم که آیا ابزارها، ساختارها و اهداف ما درست انتخاب شدهاند یا نه. آیا ما اجزای مناسب، معماریهای مؤثر و هدفهای روشنی داریم تا هوش مصنوعی را به فناوری موفقی تبدیل کنیم که به نفع همه جهان باشد؟ فهم این موضوع از همان مراحل ابتدایی طراحی و آموزش عاملها آغاز میشود و تا سطح سیاستگذاری و کاربردهای عملی ادامه پیدا میکند.
جمعبندی
هوش مصنوعی شاخهای علمی است که هدف آن طراحی سیستمهایی با توانایی انجام وظایفی است که معمولاً به هوش انسانی نیاز دارند. به زبان ساده، هوش مصنوعی یعنی ساخت ماشینهایی که بتوانند بفهمند، یاد بگیرند و تصمیم بگیرند. این حوزه بر پایه مفاهیم بنیادی مانند عاملهای هوشمند، جستوجو، استدلال منطقی و برنامهریزی شکل گرفته و در عین حال توانایی یادگیری و تعامل با محیط را فراهم میآورد.
عاملهای هوشمند هستهٔ اصلی این فناوری هستند؛ آنها با محیط تعامل میکنند و رفتارشان بر اساس عقلانیت تعریف میشود. طراحی الگوریتمهای جستوجو و حل مسئله، از سادهترین روشها تا جستوجوی پیشرفته در بازیها و مسائل بهینهسازی، نمونههایی از کاربرد این اصول در عمل هستند. هوش مصنوعی همچنین با بازنمایی دانش و استدلال منطقی، امکان تصمیمگیری خودکار و مدیریت پیچیدگیهای محیط را فراهم میکند.
در شرایط واقعی که همواره با عدم قطعیت و اطلاعات ناقص مواجه هستیم، استدلال احتمالاتی، شبکههای بیزی، مدلهای مارکوف پنهان و تصمیمگیری چندعاملی ابزارهایی قدرتمند برای انتخاب رفتار بهینه هستند. یادگیری ماشین و یادگیری عمیق نیز قلب هوش مصنوعی مدرن را تشکیل میدهند و به سیستمها اجازه میدهند از دادهها یاد بگیرند، الگوها را تشخیص دهند و عملکرد خود را بهبود دهند. کاربردهای عملی این فناوریها شامل پردازش زبان طبیعی، رباتیک و بینایی رایانهای میشود.
این مقاله در آینده بروزرسانی خواهد شد: تصاویر و نمودارهای بیشتری اضافه خواهند شد، توضیحات عمیقتری ارائه خواهد شد و در صورت نیاز برای هر بخش، مقالهای جداگانه و مفصل نوشته خواهد شد. ما بسیار دوست داریم نظر شما را هم اکنون پای همین مقاله فعلی بشنویم؛ دیدگاهها و پیشنهادهای شما به بهبود این مطلب کمک خواهد کرد.
آرزوی موفقیت داریم در مسیر یادگیری هوش مصنوعی و امیدواریم این مقاله نقطهٔ شروعی الهامبخش برای شما باشد.
ما اخیرا مدل جدیدی از شبکههای عصبی رو طراحی کردیم.بدون نیاز به سخت افزار خاص، بدون جعبه سیاه، بدون توهم و حتی 1درصد خطا در خروجی، قابلیت خلاقیت واقعی، context نامحدود، قابلیت کنترل سخت افزار و خیلی مزیتهای دیگه هم داره.هم از الگوریتم در تولید متن میشه استفاده کرد و هم تولید تصویر.تصور کنید هوش مصنوعی بتونه بجای ساختن یه عکس، یه فایل لایه باز خروجی بده! اما مدتهاست درگیر یه ارتباط ساده با دنیا هستیم.این خودش بیانگر خیلی از معانی هست.
ما هنوز به هوش مصنوعی نرسیدیم.هوش مصنوعی تا امروز نه چالشی رو حل کرده، نه یه فرمول ریاضی کشف کرده و نه حرف جدیدی زده. مشابه موتورهای جستجو، هوش مصنوعی صرفا جستجوگر کلمات مرتبط با الگوهای شبیه بهم هست.دلیلش هم خیلی ساده هست که چرا هرگز هوش مصنوعی واقعی ساخته نخواهد شد.به این دلیل که مزیت رقابتی تمام غولهای فناوری،نظامی و تحقیقاتی از بین میره و تعادل بازار و دولتها بهم میخوره.بنابراین شایسته نیست به این سیستم های طوطیوار لفظ هوش مصنوعی بدیم.دستیار مصنوعی یا AA بهتره به نظرم.
ارسطو (Aristotle)، فیلسوف یونانی، از اولین کسانی بود که سعی کرد «تفکر درست» رو به شکل قوانین مشخصی تعریف کنه – یعنی فرایندهای استدلالی که غیرقابلانکار هستن. قیاسهای منطقی ارسطو الگوهایی برای ساختار استدلال ارائه دادن که همیشه، با فرض درستی مقدمات، به نتایج درست میرسن
اطلاعات جالبی داشت ، ممنون