|
|
||
|---|---|---|
| .. | ||
| Animals.ipynb | ||
| FamilyOntology.ipynb | ||
| MSConceptGraph.ipynb | ||
| README.md | ||
| assignment.md | ||
README.md
نمایش دانش و سیستمهای خبره
طراحی توسط Tomomi Imura
جستجوی هوش مصنوعی بر اساس یافتن دانش است، به منظور درک جهان به شیوهای مشابه انسانها. اما چگونه میتوان این کار را انجام داد؟
آزمون پیش از درس
در روزهای اولیه هوش مصنوعی، رویکرد بالا به پایین برای ایجاد سیستمهای هوشمند (که در درس قبلی بحث شد) محبوب بود. ایده این بود که دانش را از افراد استخراج کرده و به شکلی قابل خواندن توسط ماشین تبدیل کنیم و سپس از آن برای حل خودکار مسائل استفاده کنیم. این رویکرد بر اساس دو ایده بزرگ بود:
- نمایش دانش
- استدلال
نمایش دانش
یکی از مفاهیم مهم در هوش مصنوعی نمادین، دانش است. مهم است که دانش را از اطلاعات یا داده متمایز کنیم. به عنوان مثال، ممکن است بگوییم که کتابها حاوی دانش هستند، زیرا میتوان با مطالعه کتابها به یک متخصص تبدیل شد. اما آنچه کتابها حاوی آن هستند در واقع داده نامیده میشود، و با خواندن کتابها و ادغام این دادهها در مدل ذهنی خود، این دادهها را به دانش تبدیل میکنیم.
✅ دانش چیزی است که در ذهن ما وجود دارد و نمایانگر درک ما از جهان است. این دانش از طریق فرآیند فعال یادگیری به دست میآید، که قطعات اطلاعاتی که دریافت میکنیم را در مدل فعال جهان ادغام میکند.
اغلب، ما دانش را به طور دقیق تعریف نمیکنیم، بلکه آن را با مفاهیم مرتبط دیگر با استفاده از هرم DIKW هماهنگ میکنیم. این هرم شامل مفاهیم زیر است:
- داده چیزی است که در رسانههای فیزیکی مانند متن نوشته شده یا کلمات گفته شده نمایش داده میشود. داده مستقل از انسانها وجود دارد و میتواند بین افراد منتقل شود.
- اطلاعات نحوه تفسیر دادهها در ذهن ما است. به عنوان مثال، وقتی کلمه کامپیوتر را میشنویم، درک خاصی از آن داریم.
- دانش اطلاعاتی است که در مدل ذهنی ما ادغام شده است. به عنوان مثال، وقتی یاد میگیریم کامپیوتر چیست، شروع به داشتن ایدههایی درباره نحوه کارکرد آن، هزینه آن و کاربردهای آن میکنیم. این شبکه از مفاهیم مرتبط، دانش ما را تشکیل میدهد.
- حکمت یک سطح بالاتر از درک ما از جهان است و نمایانگر فرا-دانش است، مانند اینکه چگونه و چه زمانی باید از دانش استفاده کرد.
تصویر از ویکیپدیا، توسط Longlivetheux - اثر خود، CC BY-SA 4.0
بنابراین، مسئله نمایش دانش یافتن راهی مؤثر برای نمایش دانش در داخل یک کامپیوتر به صورت داده است، به گونهای که بتوان از آن به صورت خودکار استفاده کرد. این مسئله را میتوان به صورت یک طیف مشاهده کرد:
تصویر توسط Dmitry Soshnikov
- در سمت چپ، انواع بسیار سادهای از نمایش دانش وجود دارد که میتوان به طور مؤثر توسط کامپیوترها استفاده کرد. سادهترین نوع آن الگوریتمی است، زمانی که دانش توسط یک برنامه کامپیوتری نمایش داده میشود. با این حال، این بهترین روش برای نمایش دانش نیست، زیرا انعطافپذیر نیست. دانش در ذهن ما اغلب غیر الگوریتمی است.
- در سمت راست، نمایشهایی مانند متن طبیعی وجود دارد. این نوع نمایش قدرتمندترین است، اما نمیتوان از آن برای استدلال خودکار استفاده کرد.
✅ برای یک دقیقه فکر کنید که چگونه دانش را در ذهن خود نمایش میدهید و آن را به یادداشت تبدیل میکنید. آیا قالب خاصی وجود دارد که برای شما در حفظ اطلاعات مؤثر باشد؟
دستهبندی نمایشهای دانش کامپیوتری
ما میتوانیم روشهای مختلف نمایش دانش کامپیوتری را در دستههای زیر طبقهبندی کنیم:
- نمایشهای شبکهای بر اساس این واقعیت هستند که ما یک شبکه از مفاهیم مرتبط در ذهن خود داریم. میتوانیم تلاش کنیم همین شبکهها را به صورت یک گراف در داخل کامپیوتر بازتولید کنیم - یک شبکه معنایی.
- سهگانههای شیء-ویژگی-مقدار یا جفتهای ویژگی-مقدار. از آنجا که یک گراف میتواند در داخل کامپیوتر به صورت لیستی از گرهها و لبهها نمایش داده شود، میتوانیم یک شبکه معنایی را با لیستی از سهگانهها نمایش دهیم که شامل اشیاء، ویژگیها و مقادیر است. به عنوان مثال، سهگانههای زیر را درباره زبانهای برنامهنویسی میسازیم:
| شیء | ویژگی | مقدار |
|---|---|---|
| پایتون | است | زبان بدون نوع |
| پایتون | اختراع شده توسط | Guido van Rossum |
| پایتون | نحو بلوک | تورفتگی |
| زبان بدون نوع | ندارد | تعریف نوع |
✅ فکر کنید که چگونه میتوان از سهگانهها برای نمایش انواع دیگر دانش استفاده کرد.
-
نمایشهای سلسلهمراتبی تأکید بر این دارند که ما اغلب یک سلسلهمراتب از اشیاء در ذهن خود ایجاد میکنیم. به عنوان مثال، میدانیم که قناری یک پرنده است و همه پرندگان بال دارند. همچنین ایدهای درباره رنگ معمولی قناری و سرعت پرواز آن داریم.
- نمایش قاب بر اساس نمایش هر شیء یا کلاس اشیاء به صورت یک قاب است که شامل شکافها میشود. شکافها ممکن است مقادیر پیشفرض، محدودیتهای مقدار، یا رویههای ذخیرهشدهای داشته باشند که میتوانند برای به دست آوردن مقدار شکاف فراخوانی شوند. همه قابها یک سلسلهمراتب مشابه سلسلهمراتب اشیاء در زبانهای برنامهنویسی شیءگرا تشکیل میدهند.
- سناریوها نوع خاصی از قابها هستند که موقعیتهای پیچیدهای را که ممکن است در طول زمان رخ دهند نمایش میدهند.
پایتون
| شکاف | مقدار | مقدار پیشفرض | بازه |
|---|---|---|---|
| نام | پایتون | ||
| است-یک | زبان بدون نوع | ||
| حالت متغیر | CamelCase | ||
| طول برنامه | ۵-۵۰۰۰ خط | ||
| نحو بلوک | تورفتگی |
-
نمایشهای رویهای بر اساس نمایش دانش به صورت لیستی از اقدامات هستند که میتوانند زمانی که یک شرط خاص رخ میدهد اجرا شوند.
- قوانین تولیدی، عبارات اگر-آنگاه هستند که به ما اجازه میدهند نتیجهگیری کنیم. به عنوان مثال، یک پزشک ممکن است قانونی داشته باشد که میگوید اگر بیمار تب بالا یا سطح بالای پروتئین C-reactive در آزمایش خون دارد، آنگاه او التهاب دارد. هنگامی که یکی از شرایط رخ دهد، میتوانیم نتیجهگیری کنیم و سپس از آن در استدلالهای بعدی استفاده کنیم.
- الگوریتمها میتوانند به عنوان نوع دیگری از نمایش رویهای در نظر گرفته شوند، اگرچه تقریباً هرگز به طور مستقیم در سیستمهای مبتنی بر دانش استفاده نمیشوند.
-
منطق در ابتدا توسط ارسطو به عنوان روشی برای نمایش دانش جهانی انسان پیشنهاد شد.
- منطق گزارهای به عنوان یک نظریه ریاضی بسیار غنی است که قابل محاسبه نیست، بنابراین معمولاً از یک زیرمجموعه آن استفاده میشود، مانند بندهای Horn که در Prolog استفاده میشوند.
- منطق توصیفی خانوادهای از سیستمهای منطقی است که برای نمایش و استدلال درباره سلسلهمراتب اشیاء و نمایشهای دانش توزیعشده مانند وب معنایی استفاده میشود.
سیستمهای خبره
یکی از موفقیتهای اولیه هوش مصنوعی نمادین، سیستمهای خبره بود - سیستمهای کامپیوتری که طراحی شده بودند تا به عنوان یک متخصص در یک حوزه محدود عمل کنند. این سیستمها بر اساس یک پایگاه دانش استخراجشده از یک یا چند متخصص انسانی بودند و شامل یک موتور استنتاج بودند که بر اساس آن استدلال انجام میداد.
![]() |
![]() |
|---|---|
| ساختار سادهشده سیستم عصبی انسان | معماری یک سیستم مبتنی بر دانش |
سیستمهای خبره مانند سیستم استدلال انسانی ساخته شدهاند، که شامل حافظه کوتاهمدت و حافظه بلندمدت است. به طور مشابه، در سیستمهای مبتنی بر دانش، اجزای زیر را متمایز میکنیم:
- حافظه مسئله: شامل دانش درباره مسئلهای است که در حال حاضر حل میشود، مانند دمای بدن یا فشار خون بیمار، یا اینکه آیا او التهاب دارد یا نه. این دانش همچنین دانش ایستا نامیده میشود، زیرا شامل یک عکس فوری از آنچه در حال حاضر درباره مسئله میدانیم است - به اصطلاح وضعیت مسئله.
- پایگاه دانش: نمایانگر دانش بلندمدت درباره یک حوزه مسئله است. این دانش به صورت دستی از متخصصان انسانی استخراج میشود و از یک مشاوره به مشاوره دیگر تغییر نمیکند. از آنجا که به ما اجازه میدهد از یک وضعیت مسئله به وضعیت دیگر حرکت کنیم، همچنین دانش پویا نامیده میشود.
- موتور استنتاج: کل فرآیند جستجو در فضای وضعیت مسئله را هماهنگ میکند و در صورت لزوم از کاربر سوال میپرسد. همچنین مسئول یافتن قوانین مناسب برای اعمال در هر وضعیت است.
به عنوان مثال، بیایید سیستم خبرهای را در نظر بگیریم که بر اساس ویژگیهای فیزیکی یک حیوان را تعیین میکند:
تصویر توسط Dmitry Soshnikov
این نمودار درخت AND-OR نامیده میشود و یک نمایش گرافیکی از مجموعهای از قوانین تولیدی است. رسم یک درخت در ابتدای استخراج دانش از متخصص مفید است. برای نمایش دانش در داخل کامپیوتر، استفاده از قوانین راحتتر است:
IF the animal eats meat
OR (animal has sharp teeth
AND animal has claws
AND animal has forward-looking eyes
)
THEN the animal is a carnivore
میتوانید متوجه شوید که هر شرط در سمت چپ قانون و عمل اساساً سهگانههای شیء-ویژگی-مقدار (OAV) هستند. حافظه کاری شامل مجموعهای از سهگانههای OAV است که به مسئلهای که در حال حاضر حل میشود مربوط میشوند. یک موتور قوانین به دنبال قوانینی میگردد که شرط آنها برآورده شده باشد و آنها را اعمال میکند، و یک سهگانه جدید به حافظه کاری اضافه میکند.
✅ درخت AND-OR خود را درباره موضوعی که دوست دارید رسم کنید!
استنتاج پیشرو در مقابل استنتاج پسرو
فرآیند توصیفشده در بالا استنتاج پیشرو نامیده میشود. این فرآیند با برخی دادههای اولیه درباره مسئله موجود در حافظه کاری شروع میشود و سپس حلقه استدلال زیر را اجرا میکند:
- اگر ویژگی هدف در حافظه کاری موجود باشد - متوقف شوید و نتیجه را بدهید
- به دنبال تمام قوانینی بگردید که شرط آنها در حال حاضر برآورده شده است - مجموعه تضاد قوانین را به دست آورید.
- حل تضاد را انجام دهید - یک قانون را انتخاب کنید که در این مرحله اجرا شود. ممکن است استراتژیهای مختلفی برای حل تضاد وجود داشته باشد:
- انتخاب اولین قانون قابل اجرا در پایگاه دانش
- انتخاب یک قانون تصادفی
- انتخاب یک قانون خاصتر، یعنی قانونی که بیشترین شرایط را در سمت چپ (LHS) برآورده کند
- قانون انتخابشده را اعمال کنید و یک قطعه جدید از دانش را به وضعیت مسئله اضافه کنید
- از مرحله 1 تکرار کنید.
با این حال، در برخی موارد ممکن است بخواهیم با دانش خالی درباره مسئله شروع کنیم و سوالاتی بپرسیم که به ما کمک کند به نتیجه برسیم. به عنوان مثال، هنگام تشخیص پزشکی، معمولاً همه آزمایشهای پزشکی را از قبل انجام نمیدهیم قبل از شروع تشخیص بیمار. بلکه میخواهیم آزمایشها را زمانی انجام دهیم که نیاز به تصمیمگیری باشد.
این فرآیند میتواند با استفاده از استنتاج پسرو مدلسازی شود. این فرآیند توسط هدف هدایت میشود - مقدار ویژگی که به دنبال یافتن آن هستیم:
- تمام قوانینی را انتخاب کنید که میتوانند مقدار یک هدف را به ما بدهند (یعنی با هدف در سمت راست (RHS)) - یک مجموعه تضاد
- اگر هیچ قانونی برای این ویژگی وجود ندارد، یا قانونی وجود دارد که میگوید باید مقدار را از کاربر بپرسیم - از کاربر بپرسید، در غیر این صورت:
- از استراتژی حل تضاد برای انتخاب یک قانون که به عنوان فرضیه استفاده خواهد شد - سعی میکنیم آن را اثبات کنیم
- فرآیند را به صورت بازگشتی برای همه ویژگیهای سمت چپ قانون تکرار کنید، سعی کنید آنها را به عنوان اهداف اثبات کنید
- اگر در هر نقطه فرآیند شکست خورد - از قانون دیگری در مرحله 3 استفاده کنید.
✅ در چه شرایطی استنتاج پیشرو مناسبتر است؟ استنتاج پسرو چطور؟
پیادهسازی سیستمهای خبره
سیستمهای خبره را میتوان با استفاده از ابزارهای مختلف پیادهسازی کرد:
- برنامهنویسی مستقیم آنها در یک زبان برنامهنویسی سطح بالا. این بهترین ایده نیست، زیرا مزیت اصلی یک سیستم مبتنی بر دانش این است که دانش از استنتاج جدا شده است و به طور بالقوه یک متخصص حوزه مسئله باید بتواند قوانین را بدون درک جزئیات فرآیند استنتاج بنویسد.
- استفاده از پوسته سیستمهای خبره، یعنی سیستمی که به طور خاص طراحی شده است تا با استفاده از یک زبان نمایش دانش پر شود.
✍️ تمرین: استنتاج حیوانات
به Animals.ipynb مراجعه کنید برای نمونهای از پیادهسازی سیستم خبره استنتاج پیشرو و پسرو.
توجه: این مثال بسیار ساده است و فقط ایدهای از نحوه عملکرد یک سیستم خبره را نشان میدهد. زمانی که شروع به ایجاد چنین سیستمی میکنید، تنها زمانی متوجه برخی رفتارهای هوشمندانه از آن خواهید شد که تعداد قوانین به حدود ۲۰۰ یا بیشتر برسد. در یک نقطه، قوانین آنقدر پیچیده میشوند که نمیتوان همه آنها را در ذهن نگه داشت، و در این مرحله ممکن است از خود بپرسید چرا سیستم تصمیمات خاصی میگیرد. با این حال، ویژگی مهم سیستمهای مبتنی بر دانش این است که همیشه میتوانید دقیقاً توضیح دهید که چگونه هر یک از تصمیمات گرفته شدهاند.
هستیشناسیها و وب معنایی
در پایان قرن بیستم، یک ابتکار برای استفاده از نمایش دانش به منظور برچسبگذاری منابع اینترنتی شکل گرفت، بهطوریکه امکان یافتن منابعی که با پرسشهای بسیار خاص مطابقت دارند فراهم شود. این حرکت وب معنایی نامیده شد و بر چند مفهوم اصلی استوار بود:
- یک نمایش دانش ویژه بر اساس منطقهای توصیفی (DL). این روش مشابه نمایش دانش قاب است، زیرا سلسلهمراتبی از اشیاء با ویژگیها ایجاد میکند، اما دارای معناشناسی منطقی رسمی و استنتاج است. خانوادهای از DLها وجود دارد که بین بیانپذیری و پیچیدگی الگوریتمی استنتاج تعادل برقرار میکنند.
- نمایش دانش توزیعشده، که در آن همه مفاهیم با یک شناسه URI جهانی نمایش داده میشوند، و این امکان را فراهم میکند که سلسلهمراتب دانش در سراسر اینترنت ایجاد شود.
- خانوادهای از زبانهای مبتنی بر XML برای توصیف دانش: RDF (چارچوب توصیف منابع)، RDFS (طرح RDF)، OWL (زبان وب هستیشناسی).
یک مفهوم اصلی در وب معنایی، مفهوم هستیشناسی است. هستیشناسی به مشخصسازی صریح یک حوزه مسئله با استفاده از یک نمایش دانش رسمی اشاره دارد. سادهترین هستیشناسی میتواند فقط یک سلسلهمراتب از اشیاء در یک حوزه مسئله باشد، اما هستیشناسیهای پیچیدهتر شامل قوانینی خواهند بود که میتوانند برای استنتاج استفاده شوند.
در وب معنایی، همه نمایشها بر اساس سهگانهها هستند. هر شیء و هر رابطه بهطور منحصربهفرد توسط URI شناسایی میشوند. برای مثال، اگر بخواهیم بیان کنیم که این برنامه درسی هوش مصنوعی توسط دیمیتری سوشنیکوف در تاریخ ۱ ژانویه ۲۰۲۲ توسعه داده شده است، اینجا سهگانههایی هستند که میتوانیم استفاده کنیم:
http://github.com/microsoft/ai-for-beginners http://www.example.com/terms/creation-date “Jan 13, 2007”
http://github.com/microsoft/ai-for-beginners http://purl.org/dc/elements/1.1/creator http://soshnikov.com
✅ در اینجا
http://www.example.com/terms/creation-dateوhttp://purl.org/dc/elements/1.1/creatorبرخی URIهای شناختهشده و جهانی هستند که مفاهیم سازنده و تاریخ ایجاد را بیان میکنند.
در یک مورد پیچیدهتر، اگر بخواهیم فهرستی از سازندگان را تعریف کنیم، میتوانیم از برخی ساختارهای داده تعریفشده در RDF استفاده کنیم.
نمودارهای بالا توسط دیمیتری سوشنیکوف
پیشرفت در ساخت وب معنایی تا حدی به دلیل موفقیت موتورهای جستجو و تکنیکهای پردازش زبان طبیعی که امکان استخراج دادههای ساختاریافته از متن را فراهم میکنند، کند شد. با این حال، در برخی حوزهها هنوز تلاشهای قابلتوجهی برای حفظ هستیشناسیها و پایگاههای دانش وجود دارد. چند پروژه قابل توجه:
- WikiData مجموعهای از پایگاههای دانش قابل خواندن توسط ماشین است که با ویکیپدیا مرتبط هستند. بیشتر دادهها از InfoBoxes ویکیپدیا استخراج میشوند، بخشهایی از محتوای ساختاریافته در صفحات ویکیپدیا. شما میتوانید WikiData را با SPARQL، یک زبان پرسوجوی ویژه برای وب معنایی، پرسوجو کنید. اینجا یک نمونه پرسوجو است که محبوبترین رنگهای چشم در میان انسانها را نمایش میدهد:
#defaultView:BubbleChart
SELECT ?eyeColorLabel (COUNT(?human) AS ?count)
WHERE
{
?human wdt:P31 wd:Q5. # human instance-of homo sapiens
?human wdt:P1340 ?eyeColor. # human eye-color ?eyeColor
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
GROUP BY ?eyeColorLabel
- DBpedia تلاش دیگری مشابه WikiData است.
✅ اگر میخواهید با ساخت هستیشناسیهای خودتان یا باز کردن هستیشناسیهای موجود آزمایش کنید، یک ویرایشگر بصری عالی هستیشناسی به نام Protégé وجود دارد. آن را دانلود کنید یا به صورت آنلاین استفاده کنید.
ویرایشگر وب Protégé باز شده با هستیشناسی خانواده رومانوف. تصویر توسط دیمیتری سوشنیکوف
✍️ تمرین: هستیشناسی خانواده
به FamilyOntology.ipynb مراجعه کنید تا نمونهای از استفاده از تکنیکهای وب معنایی برای استنتاج روابط خانوادگی را ببینید. ما یک شجرهنامه خانوادگی که در قالب رایج GEDCOM نمایش داده شده است و یک هستیشناسی از روابط خانوادگی را میگیریم و یک گراف از همه روابط خانوادگی برای مجموعهای از افراد مشخص ایجاد میکنیم.
گراف مفهومی مایکروسافت
در بیشتر موارد، هستیشناسیها با دقت توسط انسان ایجاد میشوند. با این حال، همچنین امکان استخراج هستیشناسیها از دادههای غیرساختاریافته، برای مثال از متون زبان طبیعی، وجود دارد.
یکی از این تلاشها توسط Microsoft Research انجام شد و به گراف مفهومی مایکروسافت منجر شد.
این گراف مجموعه بزرگی از موجودیتها است که با استفاده از رابطه ارثبری is-a گروهبندی شدهاند. این گراف امکان پاسخ به سوالاتی مانند "مایکروسافت چیست؟" را فراهم میکند - پاسخی مانند "یک شرکت با احتمال ۰.۸۷ و یک برند با احتمال ۰.۷۵".
این گراف یا به صورت API REST در دسترس است، یا به صورت یک فایل متنی بزرگ قابل دانلود که همه جفتهای موجودیت را فهرست میکند.
✍️ تمرین: یک گراف مفهومی
دفترچه MSConceptGraph.ipynb را امتحان کنید تا ببینید چگونه میتوانیم از گراف مفهومی مایکروسافت برای گروهبندی مقالات خبری در چند دسته استفاده کنیم.
نتیجهگیری
امروزه، هوش مصنوعی اغلب مترادف با یادگیری ماشین یا شبکههای عصبی در نظر گرفته میشود. با این حال، انسانها همچنین استدلال صریح انجام میدهند، چیزی که در حال حاضر توسط شبکههای عصبی مدیریت نمیشود. در پروژههای دنیای واقعی، استدلال صریح هنوز برای انجام وظایفی که نیاز به توضیح دارند یا توانایی تغییر رفتار سیستم به صورت کنترلشده دارند، استفاده میشود.
🚀 چالش
در دفترچه هستیشناسی خانواده مرتبط با این درس، فرصتی برای آزمایش با روابط دیگر خانوادگی وجود دارد. سعی کنید ارتباطات جدیدی بین افراد در شجرهنامه خانوادگی کشف کنید.
آزمون پس از درس
مرور و مطالعه شخصی
در اینترنت تحقیق کنید تا حوزههایی را کشف کنید که انسانها تلاش کردهاند دانش را کمیسازی و کدگذاری کنند. به طبقهبندی بلوم نگاهی بیندازید و به تاریخ بازگردید تا ببینید چگونه انسانها تلاش کردهاند دنیای خود را درک کنند. کار لینائوس را برای ایجاد یک طبقهبندی از موجودات بررسی کنید و مشاهده کنید که چگونه دیمیتری مندلیف راهی برای توصیف و گروهبندی عناصر شیمیایی ایجاد کرد. چه مثالهای جالب دیگری میتوانید پیدا کنید؟
تکلیف: ساخت یک هستیشناسی
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادقتیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفهای انسانی توصیه میشود. ما هیچ مسئولیتی در قبال سوءتفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.




