Pattern matching در prolog و neural networks

سلام. اسم بهتری برای تاپیک به ذهنم نرسید، سوالم هم خیلی گنگ و احتمالا ابتداییه.

یکی از پارادایمهای برنامه نویسی که بهش علاقه دارم، logic programming هست که زبانهای مثل prolog با این پارادایم کار میکنن. توی زبانهای دیگه مثل clojure هم لایبرریهایی برای logic programming وجود داره.

تا جایی که میدونم بخش اصلی لاجیک پروگرامینگ، روی pattern matching هست. یک سری گزاره‌ی true به کامپیوتر میدیم و کامپیوتر سعی میکنه یک پترن بین اینها پیدا کنه و با توجه به دنیایی که از روی گزاره‌های ما شبیه‌سازی کرده، مسائلی که براش مطرح میکنیم رو حل کنه.

مثلا:

x کوچکتر از y است.
y کوچکتر از z است.
چه چیزی کوچکتر از z است؟
جواب کامپیوتر: x و y

اصلا نمیدونم این پترن‌ها رو چطوری میسازه و سوالم اینه که آیا این پترنها رو به روشی میسازه که امروزه توی شبکه‌های عصبی انجام میشه؟ (یعنی پایه‌ی شبکه‌های عصبی برروی همین قضیه بنا شده؟)

خیلی گشتم ولی نتونستم جوابی براش پیدا کنم. پرولوگ و کلا LP کامیونیتیش خیلی کم و قدیمیه، از طرف دیگه چون خیلی سخت و پیچیدست، همه‌ی مطالبی که میشه ازش پیدا کرد مربوط به «چگونه یاد بگیریم؟» و «آیا اصلا به درد میخوره که یاد بگیریم؟» هست.
احتمالا باید یه گوگل بسازیم برای کسانی که نیاز به سرچ‌های عمیق دارن. (تو این موارد duckduckgo بهتر از گوگله ولی اونم یه وقتایی کمک خاصی نمیکنه)

خیر logic programming بر اساس قانون های منطق و ریاضی ،استدلال قیاسی deduction
انجام میده
مثال قانون modes ponens

وقتی باران میاید , هوا ابری است
باران میاید در نتیجه هوا ابری است

P -> Q
P therefore Q

شبکه‌های عصبی اصلا بر اساس دنبال کردن قانون کار نمیکنند بلکه هر نسل بصورت تکاملی شبیه تکامل در زیست کار میکنند

2 Likes

البته من دیدم که DeepMind داره تلاش میکنه با دیپ لرنینگ سوال های ریاضی رو حل کنه یه دیتاستی هم ارائه داده واسه این کار

1 Like