كل شيء عن البحث المستنير في الذكاء الاصطناعي
نشرت: 2023-03-22البحث المستنير هو نوع من خوارزمية البحث التي تستخدم المعرفة الخاصة بالمجال لتوجيه البحث خلال مساحة المشكلة. من أنظمة الملاحة إلى اللعب ، ومعالجة اللغة الطبيعية إلى إدارة سلسلة التوريد والبحث الأكثر استنارة في الذكاء الاصطناعي ، قلل بشكل كبير من مقدار الوقت والموارد الحسابية المطلوبة لحل المشكلات المختلفة.
باستخدام المعرفة الخاصة بالمجال لتوجيه البحث ، يمكن لخوارزميات البحث المستنيرة أن تقضي بسرعة على المسارات غير ذات الصلة أو غير الواعدة ، مما يسمح للبحث بالتركيز على أكثر الخيارات الواعدة. للقيام بذلك ، تستخدم هذه الأنواع من خوارزميات البحث في الذكاء الاصطناعي أساليب الاستدلال لتحسين كفاءة وسرعة البحث.
قم بالتسجيل في دورة التعلم الآلي من أفضل الجامعات في العالم. اربح ماجستير أو برنامج PGP تنفيذي أو برامج شهادات متقدمة لتتبع حياتك المهنية بشكل سريع.
تناقش هذه المقالة مفهوم البحث المستنير في الذكاء الاصطناعي ، ووظائفه الاستدلالية ، وأمثلة على الخوارزميات ، ومزاياها وعيوبها.
جدول المحتويات
وظيفة الاستدلال
بعبارات بسيطة ، فإن الوظيفة الاستكشافية هي نهج لحل المشكلات يستخدم قاعدة عامة أو "أفضل تخمين" لتقدير المسافة أو التكلفة إلى حالة الهدف في مشكلة البحث. تقدر الوظيفة الاستكشافية مدى بُعد حالة الهدف عن الحالة الحالية ، والتي يمكن استخدامها لتوجيه خوارزمية البحث نحو الهدف.
تستخدم خوارزميات البحث المستنيرة هذه الوظائف كمصدر إضافي للمعلومات لاتخاذ قرارات مستنيرة حول المسار الذي يجب اتخاذه. لهذا السبب ، تعتبر وظائف الاستدلال ضرورية في خوارزميات البحث المستنيرة.
أمثلة من الحياة الواقعية لوظيفة الاستدلال
لفهم الوظائف الاستكشافية بشكل أفضل ، إليك بعض الأمثلة الواقعية:
- في لعبة "الألغاز المنزلق" الكلاسيكية ، يمكن أن تتمثل الوظيفة الإرشادية البسيطة في حساب عدد المربعات خارج المكان في التكوين الحالي مقارنةً بتكوين الهدف. كلما زاد عدد المربعات في غير مكانها ، كلما كانت الحالة الحالية بعيدة عن حالة الهدف.
- في الشطرنج ، يمكن أن تتمثل الوظيفة الاستدراكية في تعيين قيمة لكل قطعة على اللوحة بناءً على قوتها النسبية وموقعها واستخدام مجموع هذه القيم لتقدير ميزة أو عيب اللاعب الحالي. يمكن استخدام هذه الوظيفة الإرشادية لتوجيه خوارزمية البحث نحو التحركات التي من المحتمل أن تؤدي إلى وضع أفضل.
بعد تسوية ذلك ، دعنا الآن نمضي قدمًا ونفهم بعض الأمثلة الأكثر استخدامًا لخوارزميات البحث المستنيرة في الذكاء الاصطناعي.
أمثلة على خوارزميات البحث المستنير
تتضمن خوارزميات البحث الأكثر استخدامًا أفضل بحث أول وبحث A *. دعونا نفهم هاتين الخوارزميتين جنبًا إلى جنب مع بعض الأمثلة والمزايا والعيوب وتطبيق Python الخاص بهم:
1. أفضل بحث أول
أفضل بحث أول هو خوارزمية البحث التي توسع العقدة الواعدة أولاً ، وفقًا لوظيفة إرشادية. تبدأ الخوارزمية من العقدة الأولية وتفحص جميع العقد التابعة لها ، وتختار الطفل ذي القيمة الاستكشافية الأقل كعقدة تالية لاستكشافها. تستمر هذه العملية حتى يتم العثور على عقدة الهدف أو استكشاف جميع العقد.
أفضل بحث أول - مثال مصور
فيما يلي مثال بسيط لتوضيح أفضل بحث أول:
افترض أنك تحاول العثور على أقصر طريق من منزلك إلى متجر بقالة قريب. أنت تعرف المسافة إلى متجر البقالة من عدد قليل من المواقع القريبة ، لكنك لا تعرف المسار الدقيق الذي يجب أن تسلكه. لحل هذه المشكلة باستخدام البحث الأفضل أولاً ، يمكنك:
- ابدأ من موقع منزلك واحسب القيمة الاسترشادية لكل موقع قريب بناءً على بعده عن متجر البقالة.
- اختر الموقع القريب بأقل قيمة إرشادية كعقدة تالية لاستكشافها.
- احسب القيمة الاستكشافية لكل موقع من مواقع الأطفال من ذلك الموقع القريب واختر الموقع الذي يحتوي على أقل قيمة إرشادية كعقدة تالية لاستكشافها.
- كرر هذه العملية حتى تصل إلى متجر البقالة.
أفضل بحث أول - تنفيذ بايثون
إليك كيفية تنفيذ أفضل خوارزمية البحث الأولى في Python:
استيراد heapq
def best_first_search (start_state، target_state، heuristic_func، Actions_func، cost_func):
# تهيئة المجموعة الحدودية واستكشافها
Frontier = [(heuristic_func (start_state، target_state)، start_state)]
استكشاف = مجموعة ()
# تهيئة المسار والتكلفة
المسار = {}
التكلفة = {}
المسار [start_state] = لا شيء
التكلفة [start_state] = 0
بينما الحدود:
# احصل على العقدة بأقل قيمة إرشادية من الحدود
(h، current_state) = heapq.heappop (حد)
إذا كانت current_state == target_state:
# إرجاع المسار إذا تم الوصول إلى حالة الهدف
مسار العودة
explored.add (current_state)
# توليد الإجراءات الممكنة من الوضع الحالي
للعمل في Actions_func (current_state):
next_state = الإجراء (current_state)
# احسب تكلفة المسار الجديد
new_cost = التكلفة [current_state] + cost_func (current_state ، action ، next_state)
إذا لم تكن الحالة التالية في المستكشفة والدولة التالية ليست في [حالة (ح ، حالة) في الحدود]:
# إضافة الدولة الجديدة إلى الحدود
heapq.heappush (frontier، (heuristic_func (next_state، target_state)، next_state))
المسار [next_state] = current_state
التكلفة [next_state] = new_cost
# return لا شيء إذا كانت حالة الهدف لا يمكن الوصول إليها
العودة لا شيء
كما ترى ، سوف تحتاج إلى تحديد الوظائف التالية:
- heuristic_func (current_state، target_state): تأخذ هذه الوظيفة الحالة الحالية وحالة الهدف كمدخلات وتعيد تقديرًا لتكلفة الوصول إلى حالة الهدف من الحالة الحالية.
- Actions_func (current_state): تأخذ هذه الوظيفة الحالة الحالية كمدخلات وتعيد قائمة بالإجراءات التي يمكن اتخاذها من الحالة الحالية.
- cost_func (current_state ، action ، next_state): تأخذ هذه الوظيفة الحالة الحالية ، وإجراءً ، والحالة التالية كمدخلات وتعيد تكلفة اتخاذ إجراء من الحالة الحالية إلى الحالة التالية.
مثال على أفضل بحث أول
start_state = (0، 0)
target_state = (4، 4)
def heuristic_func (current_state، target_state):
إرجاع القيمة المطلقة (current_state [0] - target_state [0]) + القيمة المطلقة (current_state [1] - target_state [1])
def Actions_func (current_state):
الإجراءات = []
إذا كانت الحالة الحالية [0]> 0:
Actions.append (حالة lambda: (حالة [0] -1 ، حالة [1]))
إذا كانت الحالة الحالية [0] <4:
Actions.append (حالة lambda: (حالة [0] +1 ، حالة [1]))
إذا كانت الحالة الحالية [1]> 0:
Actions.append (حالة lambda: (حالة [0] ، حالة [1] -1))
إذا كانت الحالة الحالية [1] <4:
Actions.append (حالة lambda: (حالة [0] ، حالة [1] +1))
عودة الإجراءات
def cost_func (current_state، action، next_state):
العودة 1
path = best_first_search (start_state، target_state، heuristic_func، Actions_func، cost_func)
إذا كان المسار:
# قم ببناء المسار من حالة البداية إلى حالة الهدف
current_state = target_state
بينما current_state! = start_state:
طباعة (current_state)
current_state = path [current_state]
طباعة (start_state)
آخر:
print ("حالة الهدف لا يمكن الوصول إليها.")
مزايا أفضل بحث أول
- بالمقارنة مع البحث ذي النطاق الأول ، يكون التعقيد الزمني لأفضل بحث أولاً أقل.
- يحصل أفضل بحث أول على مزايا كل من خوارزميات BFS و DFS وينفذها
عيوب أفضل بحث أول
- يمكن أن تغطي في بعض الأحيان مسافة أكبر من النظر.
- من المحتمل جدًا أن تتعثر في حلقة.
بحث
البحث * عبارة عن خوارزمية بحث تستخدم كلاً من تكلفة الوصول إلى عقدة من عقدة البداية وتقدير التكلفة المتبقية للوصول إلى عقدة الهدف لتوجيه بحثها. تبدأ الخوارزمية من العقدة الأولية وتفحص جميع العقد الفرعية ، وتختار الطفل بأقل تكلفة مجمعة وتكلفة متبقية مقدرة كعقدة تالية لاستكشافها. تستمر هذه العملية حتى يتم العثور على عقدة الهدف أو استكشاف جميع العقد.
أ * بحث - مثال مصور
دعنا نعيد النظر في المثال السابق الذي تحاول فيه العثور على أقصر طريق من منزلك إلى متجر بقالة قريب. الآن ، يمكنك:
- ابدأ من موقع منزلك واحسب التكلفة الإجمالية للوصول إلى كل موقع قريب كمجموع المسافة من منزلك إلى هذا الموقع والتكلفة المتبقية المقدرة للوصول إلى متجر البقالة من هذا الموقع.
- اختر الموقع القريب بأقل تكلفة إجمالية كعقدة تالية لاستكشافها.
- من هذا الموقع القريب ، احسب التكلفة الإجمالية لكل موقع من مواقع الأطفال كمجموع المسافة من ذلك الموقع إلى الموقع الفرعي ، وتكلفة الوصول إلى هذا الموقع من عقدة البداية ، والتكلفة المتبقية المقدرة للوصول إلى متجر البقالة من هذا الموقع الطفل. اختر الموقع الفرعي بأقل تكلفة إجمالية كعقدة تالية لاستكشافها.
- كرر هذه العملية حتى تصل إلى متجر البقالة.
من الأمور المهمة التي يجب ملاحظتها هنا أن A * Search هي خوارزمية بحث مثالية تضمن العثور على أقصر طريق إلى حالة الهدف. إنها فعالة في مشاكل مساحة البحث الكبيرة وتستخدم على نطاق واسع في ألعاب الفيديو والروبوتات وتخطيط المسار. ومع ذلك ، فإنه يتطلب وظيفة إرشادية واضحة المعالم حتى تكون فعالة. لهذا السبب ، يمكن أن تستهلك الخوارزمية ذاكرة مكثفة وتتباطأ في المشكلات المعقدة مع العديد من العقد.
* بحث - تنفيذ بايثون
إليك كيفية تنفيذ خوارزمية البحث A * باستخدام برمجة Python:
استيراد heapq
def astar_search (start_state، target_state، heuristic_func، Actions_func، cost_func):
# تهيئة المجموعة الحدودية واستكشافها
Frontier = [(heuristic_func (start_state، target_state)، start_state)]
استكشاف = مجموعة ()
# تهيئة المسار والتكلفة
المسار = {}
التكلفة = {}
المسار [start_state] = لا شيء
التكلفة [start_state] = 0
بينما الحدود:
# احصل على العقدة ذات قيمة f الأقل من الحد
(f، current_state) = heapq.heappop (حد)
إذا كانت current_state == target_state:
# إرجاع المسار إذا تم الوصول إلى حالة الهدف
مسار العودة
explored.add (current_state)
# توليد الإجراءات الممكنة من الوضع الحالي
للعمل في Actions_func (current_state):
next_state = الإجراء (current_state)
# احسب تكلفة المسار الجديد
new_cost = التكلفة [current_state] + cost_func (current_state ، action ، next_state)
إذا لم تكن الحالة التالية في المستكشفة والدولة التالية ليست في [حالة (حالة ، حالة) في الحدود]:
# إضافة الدولة الجديدة إلى الحدود
heapq.heappush (frontier، (new_cost + heuristic_func (next_state، target_state)، next_state))
المسار [next_state] = current_state
التكلفة [next_state] = new_cost
elif next_state في [state for (f، state) in frontier] و new_cost <cost [next_state]:
# تحديث تكلفة الحالة القائمة في التخوم
الفهرس = [i لـ (i، (f، state)) في التعداد (الحدودي) إذا كانت الحالة == next_state] [0]
Frontier [index] = (new_cost + heuristic_func (next_state، target_state)، next_state)
المسار [next_state] = current_state
التكلفة [next_state] = new_cost
# return لا شيء إذا كانت حالة الهدف لا يمكن الوصول إليها
العودة لا شيء
أفضل دورات تعلم الآلة ودورات الذكاء الاصطناعي عبر الإنترنت
ماجستير العلوم في التعلم الآلي والذكاء الاصطناعي من جامعة جون مورس بليفربول | برنامج الدراسات العليا التنفيذية في التعلم الآلي والذكاء الاصطناعي من IIITB | |
برنامج شهادة متقدم في تعلم الآلة و البرمجة اللغوية العصبية من IIITB | برنامج الشهادة المتقدم في التعلم الآلي والتعلم العميق من IIITB | برنامج الدراسات العليا التنفيذية في علوم البيانات والتعلم الآلي من جامعة ماريلاند |
لاستكشاف جميع دورات الشهادات لدينا على AI & ML ، يرجى زيارة صفحتنا أدناه. | ||
شهادة تعلم الآلة |
مثال على البحث *
فيما يلي مثال لكيفية استخدام وظيفة astar_search مع هذه الوظائف:
start_state = (0، 0)
target_state = (4، 4)
def heuristic_func (current_state، target_state):
إرجاع القيمة المطلقة (current_state [0] - target_state [0]) + القيمة المطلقة (current_state [1] - target_state [1])
def Actions_func (current_state):
الإجراءات = []
إذا كانت الحالة الحالية [0]> 0:
Actions.append (حالة lambda: (حالة [0] -1 ، حالة [1]))
إذا كانت الحالة الحالية [0] <4:
Actions.append (حالة lambda: (حالة [0] +1 ، حالة [1]))
إذا كانت الحالة الحالية [1]> 0:
Actions.append (حالة lambda: (حالة [0] ، حالة [1] -1))
إذا كانت الحالة الحالية [1] <4:
Actions.append (حالة lambda: (حالة [0] ، حالة [1] +1))
عودة الإجراءات
def cost_func (current_state، action، next_state):
العودة 1
path = astar_search (start_state، target_state، heuristic_func، Actions_func، cost_func)
إذا كان المسار:
# قم ببناء المسار من حالة البداية إلى حالة الهدف
current_state = target_state
بينما current_state! = start_state:
طباعة (current_state)
current_state = المسار [current_state]
طباعة (start_state)
آخر:
print ("حالة الهدف لا يمكن الوصول إليها.")
مزايا البحث *
- إنها واحدة من التقنيات الرائدة في مجريات الأمور.
- يمكن الاستفادة من البحث * لحل مشاكل البحث المعقدة
تتجه مهارات التعلم الآلي
دورات الذكاء الاصطناعي | شهادة تابلو |
معالجة اللغة الطبيعية | التعلم العميق AI |
عيوب البحث
- يعتمد أداء البحث * بشكل كبير على دقة خوارزميات الاستدلال.
- كفاءة بحث منخفضة.
مدونات AI و ML الشعبية ودورات مجانية
إنترنت الأشياء: التاريخ والحاضر والمستقبل | دروس تعلم الآلة: تعلم ML | ما هي الخوارزمية؟ بسيط سهل |
راتب مهندس الروبوتات في الهند: جميع الأدوار | يوم في حياة مهندس التعلم الآلي: ماذا يفعلون؟ | ما هو إنترنت الأشياء (إنترنت الأشياء) |
التقليب مقابل الجمع: الفرق بين التقليب والجمع | أهم 7 اتجاهات في الذكاء الاصطناعي وتعلم الآلة | التعلم الآلي باستخدام R: كل ما تحتاج إلى معرفته |
دورات مجانية للذكاء الاصطناعي والتعلم الآلي | ||
مقدمة في البرمجة اللغوية العصبية | أساسيات التعلم العميق للشبكات العصبية | الانحدار الخطي: دليل خطوة بخطوة |
الذكاء الاصطناعي في العالم الحقيقي | مقدمة في التابلوه | دراسة حالة باستخدام Python و SQL و Tableau |
يبعد
تعد خوارزميات البحث المستنيرة ضرورية في الذكاء الاصطناعي لأنها تسمح للكمبيوتر بالبحث عن حالة الهدف بكفاءة وفعالية. تستخدم هذه الخوارزميات وظائف استدلالية لتقدير تكلفة كل خطوة ممكنة وتوجيه عملية البحث نحو حالة الهدف. أفضل بحث أول و A * بحث هما مثالان لخوارزميات البحث المستنيرة المستخدمة على نطاق واسع في مختلف المجالات. ومع ذلك ، فإن وظيفة الكشف عن مجريات الأمور المحددة جيدًا أمر بالغ الأهمية لنجاح خوارزميات البحث المستنيرة.
إذا كنت مهتمًا بمعرفة المزيد عن الذكاء الاصطناعي والتعلم الآلي ، فراجع برنامج upGrad's Masters in Machine Learning والذكاء الاصطناعي الذي تقدمه جامعة ليفربول جون مورس . يغطي هذا البرنامج العديد من موضوعات التعلم الآلي والذكاء الاصطناعي ، بما في ذلك الخوارزميات مثل البحث المستنير. من خلال أخذ هذا البرنامج ، يمكنك اكتساب المهارات والمعرفة التي تحتاجها للنجاح في مجموعة متنوعة من الوظائف المتعلقة بالذكاء الاصطناعي.
يمكنك أيضًا الاطلاع علىدوراتنا المجانيةالتي تقدمها upGrad في الإدارة وعلوم البيانات والتعلم الآلي والتسويق الرقمي والتكنولوجيا.تحتوي كل هذه الدورات على موارد تعليمية من الدرجة الأولى ، ومحاضرات حية أسبوعية ، ومهام صناعية ، وشهادة إتمام الدورة - وكل ذلك مجانًا!
ما هو الفرق بين خوارزميات البحث المطلعة والجاهلة؟
تستخدم خوارزميات البحث المستنيرة وظائف إرشادية لتوجيه عملية البحث ، في حين أن خوارزميات البحث غير الواعية لا تفعل ذلك. هذا يعني أن خوارزميات البحث المدروسة يمكن أن تكون أكثر كفاءة عند البحث عن حلول للمشكلات المعقدة ، حيث يمكنها تجنب استكشاف المسارات غير الواعدة.
كيف تختار وظيفة إرشادية جيدة لخوارزمية بحث مستنيرة؟
يجب أن تكون الوظيفة الإرشادية مقبولة ، بمعنى أنها لا تبالغ أبدًا في تقدير التكلفة الحقيقية للوصول إلى حالة الهدف. من الناحية المثالية ، يجب أيضًا أن تكون الوظيفة الاستكشافية متسقة ، مما يعني أن التكلفة المقدرة للوصول إلى أي حالة لاحقة لا تزيد أبدًا عن التكلفة المقدرة للوصول إلى الحالة الحالية بالإضافة إلى تكلفة الوصول إلى الحالة اللاحقة.
ما هي بعض قيود خوارزميات البحث المستنيرة؟
يمكن أن تحد جودة الوظيفة الاستكشافية من خوارزميات البحث المستنيرة. قد يكون أداء الخوارزمية ضعيفًا إذا كانت الوظيفة الإرشادية غير دقيقة أو توفر معلومات مفيدة. بالإضافة إلى ذلك ، يمكن أن تكون خوارزميات البحث المستنيرة مكلفة من الناحية الحسابية ، خاصةً إذا كانت مساحة البحث كبيرة أو كانت الوظيفة الإرشادية معقدة.