انتقل إلى المحتوى الرئيسي

تصميم ميزات المدخلات

الشبكات العصبية لا تستطيع معالجة سوى الأرقام. لجعلها تفهم الغو، نحتاج طريقة "لترجمة" الرقعة إلى أرقام.

عملية الترجمة هذه هي تصميم ميزات المدخلات.

استخدم AlphaGo 48 مستوى ميزات، بسّطها AlphaGo Zero إلى 17، وحسّنها KataGo إلى 22. ستحلل هذه المقالة بالتفصيل الاعتبارات وراء هذه الخيارات التصميمية.


ما هو مستوى الميزات؟

المفهوم الأساسي

مستوى الميزات هو مصفوفة 19×19، كل عنصر يمثل خاصية معينة للموقع المقابل على الرقعة.

مثلاً، مستوى ميزات "مواقع الأسود":

حالة الرقعة:               مستوى الميزات (الأسود):
A B C D E A B C D E
1 . . . . . 1 0 0 0 0 0
2 . ● . . . 2 0 1 0 0 0
3 . . ○ . . → 3 0 0 0 0 0
4 . . . ● . 4 0 0 0 1 0
5 . . . . . 5 0 0 0 0 0
  • موقع فيه حجر أسود = 1
  • موقع بدون حجر أسود = 0

مستويات ميزات متعددة

الشبكة العصبية تحتاج أنواعاً متعددة من المعلومات، لذا نراكم عدة مستويات ميزات:

موتر المدخلات: 19 × 19 × N

المستوىالوصف
مستوى 1مواقع الأسود
مستوى 2مواقع الأبيض
مستوى 3النقاط الفارغة
......
مستوى Nميزات أخرى

كل مستوى بحجم 19×19

هذا مشابه للصورة الملونة التي لها قنوات R، G، B. "صورة" الغو لها N قناة.


48 مستوى ميزات في AlphaGo

القائمة الكاملة

استخدم AlphaGo 48 مستوى ميزات، مقسمة إلى عدة فئات:

1. مواقع الأحجار (3 مستويات)

المستوىالاسمالوصف
1الأسوديوجد حجر أسود = 1، غير ذلك = 0
2الأبيضيوجد حجر أبيض = 1، غير ذلك = 0
3فارغنقطة فارغة = 1، غير ذلك = 0

2. سجل التاريخ (16 مستوى)

المستوىالاسمالوصف
4-11تاريخ الأسودمواقع الأسود في آخر 1-8 حركات
12-19تاريخ الأبيضمواقع الأبيض في آخر 1-8 حركات

لماذا نحتاج التاريخ؟

  • حكم الكو: تحتاج معرفة إذا كان يمكن الاسترجاع فوراً
  • نية اللعب: الحركات الأخيرة تكشف خطط الطرفين
  • معلومات زمنية: CNN بذاتها لا تعالج الوقت، مستويات التاريخ تعوض ذلك

3. ميزات الحريات (8 مستويات)

المستوىالاسمالوصف
20-231-4 حريات (جانبي)سلسلتي لها 1/2/3/4 حريات = 1
24-271-4 حريات (الخصم)سلسلة الخصم لها 1/2/3/4 حريات = 1

عدد الحريات هو أهم مفهوم تكتيكي في الغو:

  • 1 حرية: في أتاري، على وشك الأسر
  • 2 حريات: حالة خطرة
  • 3 حريات: تحتاج انتباه
  • 4+ حريات: آمنة مؤقتاً

4. ميزات الأتاري (8 مستويات)

المستوىالاسمالوصف
28-31مواقع الأتاري (جانبي)اللعب هنا يضع الخصم في أتاري 1/2/3/4 أحجار
32-35مواقع الأتاري (الخصم)اللعب هنا يضعني في أتاري 1/2/3/4 أحجار

الأتاري هو التكتيك الأكثر شيوعاً في الغو:

  • أتاري أحجار أكثر = تهديد أكبر
  • أحجام أتاري مختلفة تحتاج استجابات مختلفة

5. ميزات السلم (8 مستويات)

المستوىالاسمالوصف
36-39متعلق بالسلم (جانبي)مواقع متعلقة بسلمي
40-43متعلق بالسلم (الخصم)مواقع متعلقة بسلم الخصم

السلم (Ladder) هو تكتيك شهير في الغو:

  • مطاردة أحجار الخصم على القطر
  • يحتاج تحديد "السلم مفيد" أو "السلم غير مفيد"
  • هذا يحتاج رؤية شاملة، وهو صعب على برامج الغو التقليدية

6. ميزات المشروعية (مستوى واحد)

المستوىالاسمالوصف
44مواقع مشروعةيمكن اللعب هنا بشكل قانوني = 1

هذا يمنع الشبكة من إخراج حركات غير قانونية:

  • لا يمكن اللعب في موقع فيه حجر
  • لا يمكن اللعب في نقطة انتحار (انتحار بدون أسر)
  • لا يمكن الاسترجاع الفوري في الكو

7. ميزات الحافة والزاوية (4 مستويات)

المستوىالاسمالوصف
45مسافة 1 من الحافةعلى الخط الأول = 1
46مسافة 2 من الحافةعلى الخط الثاني = 1
47مسافة 3 من الحافةعلى الخط الثالث = 1
48مسافة 4+ من الحافةعلى الخط الرابع أو أعمق = 1

الحافة والزاوية لها أهمية خاصة في الغو:

  • الخط الأول: خط الموت، الأحجار تُحاصر بسهولة
  • الخط الثاني: خط الحياة، لكن كفاءة منخفضة
  • الخط الثالث: خط الأرض، مستقر
  • الخط الرابع: خط النفوذ، يسعى للتأثير

لماذا نحتاج هذا العدد الكبير من الميزات؟

فلسفة تصميم DeepMind هي توفير أكبر قدر ممكن من المعلومات، ودع الشبكة تقرر ما هو مفيد:

الرقعة الأصلية → 48 مستوى ميزات → الشبكة العصبية → القرار

عمل مهندس الميزات: ترميز معرفة الغو في ميزات
عمل الشبكة العصبية: تعلم تجميع هذه الميزات

هذه استراتيجية "تمرير الكرة للشبكة العصبية" — البشر مسؤولون عن تصميم الميزات، الشبكة مسؤولة عن تعلم التجميع.


تبسيط AlphaGo Zero: 17 مستوى ميزات

التغيير الثوري

AlphaGo Zero بسّط ميزات المدخلات بشكل كبير:

الإصدارعدد مستويات الميزاتاستخدام المعرفة البشرية
AlphaGo48كثير (الحريات، السلم، إلخ)
AlphaGo Zero17تقريباً لا شيء

تكوين الـ 17 مستوى

1. تاريخ مواقع الأحجار (16 مستوى)

المستوىالاسمالوصف
1-8الأسود T-0 إلى T-7مواقع الأسود في الحاضر وآخر 7 خطوات
9-16الأبيض T-0 إلى T-7مواقع الأبيض في الحاضر وآخر 7 خطوات

2. اللون (مستوى واحد)

المستوىالاسمالوصف
17دور مندور الأسود = كله 1، دور الأبيض = كله 0

لماذا يمكن هذا التبسيط؟

الرؤية الأساسية لـ AlphaGo Zero:

إذا توفرت موارد حسابية ووقت تدريب كافيين، الشبكة العصبية يمكنها تعلم هذه الميزات بنفسها

مفاهيم "الحريات"، "الأتاري"، "السلم" استغرق البشر آلاف السنين لتطويرها. لكن AlphaGo Zero أثبت أن الشبكة العصبية يمكنها تعلمها في أيام قليلة — وربما تعلم تمثيلات أفضل من البشر.

مقارنة النتائج

المدهش أن AlphaGo Zero مع ميزات أقل أقوى في الواقع:

الإصدارعدد الميزاتوقت التدريبالقوة النهائية
AlphaGo Master48عدة أشهرحوالي 5185 Elo
AlphaGo Zero1740 يوماًحوالي 5185 Elo
AlphaGo Zero (3 أيام)173 أياميتفوق على البشر

معرفة بشرية أقل، أداء أعلى.

لماذا المعرفة البشرية قد تكون عبئاً؟

1. المعرفة البشرية قد تكون خاطئة

القواعد التي لخصها البشر للغو تجريبية، قد لا تكون الأمثل. مثلاً:

  • "الزوايا ذهب والحواف فضة والوسط عشب" — لكن في بعض الأوضاع الوسط أهم
  • "لا تلعب السلم إذا كان غير مفيد" — لكن أحياناً يمكن التضحية بالأحجار عمداً

2. ترميز الميزات يحد التمثيل

عندما نرمّز "الحريات" كـ 4 مستويات لـ 1-4 حريات، نفترض ضمنياً أن "الحريات" هي طريقة تصنيف مهمة. لكن ربما هناك طريقة تصنيف أفضل، وهذا الترميز يمنع الشبكة من اكتشافها.

3. عنق زجاجة التمثيل

48 مستوى تستهلك موارد حسابية أكثر. إذا كانت بعض الميزات زائدة، هذه الموارد تُهدر.


تحسين KataGo: 22 مستوى ميزات

التوازن العملي

KataGo بنى على أساس AlphaGo Zero، وأضاف كمية صغيرة من المعرفة البشرية المختارة:

البندAlphaGo ZeroKataGo
مستويات التاريخ165
مواقع الأحجارنعمنعم
دور مننعمنعم
حالة الكولانعم
متغيرات القواعدلانعم (الكومي، قاعدة الانتحار، إلخ)
المجموع1722

قائمة ميزات KataGo

الميزات الأساسية (5)

المستوىالاسمالوصف
1الأسودمواقع الأسود الحالية
2الأبيضمواقع الأبيض الحالية
3فارغالنقاط الفارغة الحالية
4دور من (1)مستوى ثابت دائماً 1
5دور من (2)دور الأسود = 1، دور الأبيض = 0

ميزات التاريخ (5)

المستوىالاسمالوصف
6موقع الحركة السابقةموقع حركة الخصم السابقة
7موقع الحركة قبل السابقةموقع حركتي السابقة
8موقع الحركة الثالثةموقع حركة الخصم الثانية
9موقع الحركة الرابعةموقع حركتي الثانية
10موقع الحركة الخامسةموقع حركة الخصم الثالثة

ميزات الكو (3)

المستوىالاسمالوصف
11نقطة الكو المحظورةنقطة الكو المحظورة حالياً
12كو محتمل (جانبي)اللعب هنا ينتج كو
13كو محتمل (الخصم)لعب الخصم هنا ينتج كو

ميزات القواعد (9)

المستوىالاسمالوصف
14-22ترميز القواعدالكومي، قاعدة الانتحار، السوبر كو، إلخ

لماذا إضافة هذه الميزات؟

يشرح lightvector مؤلف KataGo:

1. الكو مهم جداً

الكو هو من أعقد المفاهيم في الغو. تعلم قواعد الكو من حالة الرقعة الخام يحتاج عينات كثيرة. تحديد نقطة الكو المحظورة صراحة يسرّع التعلم.

2. تنوع القواعد

للغو قواعد متعددة:

  • الكومي: القواعد الصينية 7.5 نقطة، القواعد اليابانية 6.5 نقطة
  • قاعدة الانتحار: بعض القواعد تسمح بالانتحار
  • السوبر كو: طرق مختلفة للتعامل مع الدورات الطويلة

ترميز القواعد صراحة في المدخلات يسمح لشبكة واحدة بالتعامل مع جميع المتغيرات.

3. كفاءة التدريب

إضافة كمية صغيرة من المعرفة البشرية يمكن أن تسرّع التدريب بشكل كبير. KataGo وصل بـ 50 GPU يوم إلى القوة التي وصل إليها AlphaGo Zero بـ 5000+ TPU يوم.


فلسفة تصميم الميزات

ثلاث طرق

الطريقةالممثلعدد الميزاتالمعرفة البشريةمتطلبات الحساب
معرفة بشرية كثيرةAlphaGo48كثيرةمتوسطة
معرفة بشرية قليلة جداًAlphaGo Zero17تقريباً لا شيءعالية جداً
معرفة بشرية معتدلةKataGo22كمية صغيرة مختارةأقل

اعتبارات المقايضة

عند محدودية الموارد

إذا كانت الموارد الحسابية محدودة (حالة معظم الباحثين)، إضافة بعض المعرفة البشرية قرار حكيم:

  • تسريع تقارب التدريب
  • تقليل بيانات التدريب المطلوبة
  • تجنب إعادة اختراع العجلة

عند السعي للحدود

إذا كانت الموارد الحسابية وفيرة، تقليل المعرفة البشرية قد يصل إلى قوة أعلى:

  • تجنب التحيز البشري
  • اكتشاف استراتيجيات غير معروفة للبشر
  • "البدء من الصفر" الحقيقي

الدروس المستفادة

تطور سلسلة AlphaGo يخبرنا:

  1. هندسة الميزات لا تزال مهمة — لكن الشكل تغير
  2. التعلم من الطرف إلى الطرف هو الاتجاه — دع الشبكة تتعلم الميزات بنفسها
  3. لا توجد إجابة صحيحة واحدة — يعتمد على الموارد والأهداف

أمثلة التنفيذ

استخراج الميزات (طريقة AlphaGo)

import numpy as np

def extract_features_alphago(board, history, current_player):
"""
استخراج 48 مستوى ميزات بطريقة AlphaGo

board: رقعة 19×19، 0=فارغ، 1=أسود، 2=أبيض
history: تاريخ آخر 8 حركات
current_player: 1=أسود، 2=أبيض
"""
features = np.zeros((48, 19, 19))

# 1-3: مواقع الأحجار
features[0] = (board == 1) # الأسود
features[1] = (board == 2) # الأبيض
features[2] = (board == 0) # فارغ

# 4-19: مواقع التاريخ
for i, hist_board in enumerate(history[:8]):
features[3 + i] = (hist_board == 1) # تاريخ الأسود
features[11 + i] = (hist_board == 2) # تاريخ الأبيض

# 20-27: ميزات الحريات
liberties = compute_liberties(board)
for i, lib_count in enumerate([1, 2, 3, 4]):
my_color = current_player
opp_color = 3 - current_player
features[19 + i] = (liberties == lib_count) & (board == my_color)
features[23 + i] = (liberties == lib_count) & (board == opp_color)

# 28-35: ميزات الأتاري
capture_counts = compute_captures(board)
for i, cap_count in enumerate([1, 2, 3, 4]):
features[27 + i] = (capture_counts[current_player] == cap_count)
features[31 + i] = (capture_counts[3-current_player] == cap_count)

# 36-43: ميزات السلم (مبسطة)
ladder_status = compute_ladder(board)
# ... حذف التنفيذ المفصل ...

# 44: المواقع المشروعة
features[43] = compute_legal_moves(board, current_player)

# 45-48: مسافة الحافة
for i in range(19):
for j in range(19):
dist = min(i, j, 18-i, 18-j)
if dist == 0:
features[44, i, j] = 1
elif dist == 1:
features[45, i, j] = 1
elif dist == 2:
features[46, i, j] = 1
else:
features[47, i, j] = 1

return features

استخراج الميزات (طريقة AlphaGo Zero)

def extract_features_zero(board_history, current_player):
"""
استخراج 17 مستوى ميزات بطريقة AlphaGo Zero

board_history: قائمة آخر 8 حالات للرقعة
current_player: 1=أسود، 2=أبيض
"""
features = np.zeros((17, 19, 19))

# 1-8: مواقع الأسود T-0 إلى T-7
for i, board in enumerate(board_history[:8]):
features[i] = (board == 1)

# 9-16: مواقع الأبيض T-0 إلى T-7
for i, board in enumerate(board_history[:8]):
features[8 + i] = (board == 2)

# 17: دور من
if current_player == 1: # الأسود
features[16] = np.ones((19, 19))
else:
features[16] = np.zeros((19, 19))

return features

مقارنة الأداء

import time

# محاكاة 1000 استخراج ميزات
board = np.random.randint(0, 3, (19, 19))
history = [np.random.randint(0, 3, (19, 19)) for _ in range(8)]

# طريقة AlphaGo (مع حسابات معقدة)
start = time.time()
for _ in range(1000):
features = extract_features_alphago(board, history, 1)
alphago_time = time.time() - start

# طريقة AlphaGo Zero (بسيطة)
start = time.time()
for _ in range(1000):
features = extract_features_zero(history, 1)
zero_time = time.time() - start

print(f"طريقة AlphaGo: {alphago_time:.2f}s")
print(f"طريقة AlphaGo Zero: {zero_time:.2f}s")
# نتيجة نموذجية: طريقة AlphaGo أبطأ 5-10 مرات

تصور مستويات الميزات

مثال لوضع فعلي

الرقعة الفعلية:
A B C D E F G H J K L M N O P Q R S T
19 . . . . . . . . . . . . . . . . . . .
18 . . . . . . . . . . . . . . . . . . .
17 . . . ● . . . . . . . . . . . ○ . . .
16 . . . . . . . . . . . . . . . . . . .
15 . . . . . . . . . . . . . . . . . . .
...

مستوى الميزات 1 (الأسود):
A B C D E F G H J K L M N O P Q R S T
19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
17 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
...

مستوى الميزات 2 (الأبيض):
A B C D E F G H J K L M N O P Q R S T
19 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
...

رؤى من مستويات الميزات

ملاحظة مستويات ميزات مختلفة تساعد على فهم ما "تراه" الشبكة:

الميزةالمعنى البديهيما قد تتعلمه الشبكة
مواقع الأسود/الأبيضمن أينالأشكال، الاتصال
التاريخما حدث مؤخراًنية اللعب، اتجاه القتال
الحرياتمن في خطرأهداف الهجوم/الدفاع
الأتاريفرص تكتيكيةتكتيكات محلية
مسافة الحافةأهمية الموقعاختيار الافتتاح، جوسيكي الزوايا

الرسوم المتحركة المقابلة

المفاهيم الأساسية في هذه المقالة وأرقام الرسوم المتحركة المقابلة:

الرقمالمفهومالمقابل الفيزيائي/الرياضي
A8ترميز الميزاتتمثيل الموترات
A10تطبيع المدخلاتهندسة الميزات
D1مدخلات الالتفافصور متعددة القنوات
E3تبسيط Zeroالتمثيل الأدنى

قراءات إضافية


النقاط الرئيسية

  1. مستويات الميزات هي التمثيل الرقمي للرقعة: كل مستوى مصفوفة 19×19
  2. AlphaGo استخدم 48 مستوى: تتضمن كثير من معرفة الغو البشرية
  3. AlphaGo Zero بسّطها إلى 17: أثبت أن الشبكة يمكنها تعلم الميزات بنفسها
  4. KataGo حسّنها إلى 22: توازن بين الكفاءة والأداء
  5. تصميم الميزات هو مقايضة: المعرفة البشرية مقابل الموارد الحسابية

تصميم ميزات المدخلات هو الجسر الذي يربط "الغو كما يفهمه البشر" مع "الأرقام التي يمكن للآلة معالجتها".


المراجع

  1. Silver, D., et al. (2016). "Mastering the game of Go with deep neural networks and tree search." Nature, 529, 484-489.
  2. Silver, D., et al. (2017). "Mastering the game of Go without human knowledge." Nature, 551, 354-359.
  3. Wu, D. (2019). "Accelerating Self-Play Learning in Go." arXiv:1902.10565.
  4. KataGo Documentation: https://github.com/lightvector/KataGo