मुख्य कंटेंट तक स्किप करें

इनपुट विशेषता डिज़ाइन

Neural network केवल संख्याएँ प्रोसेस कर सकता है। इसे Go समझाने के लिए, हमें बोर्ड को संख्याओं में "अनुवाद" करने का एक तरीका चाहिए।

यह अनुवाद प्रक्रिया इनपुट विशेषता डिज़ाइन है।

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

कई विशेषता प्लेन

Neural network को कई प्रकार की जानकारी चाहिए, इसलिए हम कई विशेषता प्लेन स्टैक करते हैं:

इनपुट tensor: 19 × 19 × N

प्लेनविवरण
प्लेन 1काले पत्थर स्थिति
प्लेन 2सफेद पत्थर स्थिति
प्लेन 3खाली बिंदु स्थिति
......
प्लेन Nअन्य विशेषताएँ

प्रत्येक प्लेन का आकार: 19×19

यह रंगीन तस्वीर के R, G, B तीन चैनलों जैसा है। Go "तस्वीर" में N चैनल हैं।


AlphaGo के 48 विशेषता प्लेन

पूर्ण सूची

AlphaGo ने 48 विशेषता प्लेन उपयोग किए, कई श्रेणियों में विभाजित:

1. पत्थर स्थिति (3 प्लेन)

प्लेननामविवरण
1कालाकाला पत्थर = 1, अन्यथा = 0
2सफेदसफेद पत्थर = 1, अन्यथा = 0
3खालीखाली बिंदु = 1, अन्यथा = 0

2. इतिहास रिकॉर्ड (16 प्लेन)

प्लेननामविवरण
4-11काले पत्थर इतिहास1-8 चाल पहले काले पत्थरों की स्थिति
12-19सफेद पत्थर इतिहास1-8 चाल पहले सफेद पत्थरों की स्थिति

इतिहास क्यों आवश्यक?

  • Ko निर्णय: जानना चाहिए कि क्या तुरंत वापस कैप्चर कर सकते हैं
  • चाल इरादा: हाल की चालें दोनों पक्षों की योजना बताती हैं
  • समय जानकारी: CNN समय प्रोसेस नहीं करता, इतिहास प्लेन इसकी पूर्ति

3. साँसें विशेषताएँ (8 प्लेन)

प्लेननामविवरण
20-231-4 साँसें (हमारी)हमारी string में 1/2/3/4 साँसें = 1
24-271-4 साँसें (प्रतिद्वंद्वी)प्रतिद्वंद्वी string में 1/2/3/4 साँसें = 1

साँसें Go में सबसे महत्वपूर्ण रणनीतिक अवधारणा:

  • 1 साँस: अतारी, जल्द कैप्चर
  • 2 साँसें: खतरनाक स्थिति
  • 3 साँसें: ध्यान देने योग्य
  • 4+ साँसें: अस्थायी रूप से सुरक्षित

4. अतारी विशेषताएँ (8 प्लेन)

प्लेननामविवरण
28-31अतारी स्थिति (हमारी)यहाँ चलने से प्रतिद्वंद्वी के 1/2/3/4 पत्थर अतारी
32-35अतारी स्थिति (प्रतिद्वंद्वी)यहाँ चलने से हमारे 1/2/3/4 पत्थर अतारी

अतारी Go में सबसे आम रणनीति:

  • अधिक पत्थरों का अतारी = बड़ा खतरा
  • अलग-अलग आकार के अतारी को अलग प्रतिक्रिया चाहिए

5. लैडर विशेषताएँ (8 प्लेन)

प्लेननामविवरण
36-39लैडर संबंधित (हमारा)हमारे लैडर से संबंधित स्थितियाँ
40-43लैडर संबंधित (प्रतिद्वंद्वी)प्रतिद्वंद्वी के लैडर से संबंधित स्थितियाँ

लैडर (Ladder) Go में प्रसिद्ध रणनीति:

  • विकर्ण रेखा पर प्रतिद्वंद्वी के पत्थरों का पीछा
  • "लैडर अनुकूल" या "लैडर प्रतिकूल" निर्धारित करना होगा
  • इसके लिए वैश्विक दृष्टि चाहिए, पारंपरिक कंप्यूटर Go की कठिनाई

6. वैधता विशेषता (1 प्लेन)

प्लेननामविवरण
44वैध स्थितिवैध चाल चल सकते हैं = 1

यह network को अवैध चालें आउटपुट करने से रोकता है:

  • पत्थर वाली स्थिति पर नहीं चल सकते
  • आत्महत्या बिंदु (कैप्चर के बिना आत्महत्या) पर नहीं चल सकते
  • Ko तुरंत वापस कैप्चर नहीं कर सकते

7. किनारा-कॉर्नर विशेषताएँ (4 प्लेन)

प्लेननामविवरण
45किनारे से दूरी 1पहली लाइन पर = 1
46किनारे से दूरी 2दूसरी लाइन पर = 1
47किनारे से दूरी 3तीसरी लाइन पर = 1
48किनारे से दूरी 4+चौथी लाइन या अंदर = 1

किनारा-कॉर्नर Go में विशेष महत्व:

  • पहली लाइन: मृत्यु रेखा, पत्थर आसानी से घेरे जाते हैं
  • दूसरी लाइन: जीवित रेखा, लेकिन कम कुशल
  • तीसरी लाइन: क्षेत्र रेखा, स्थिर
  • चौथी लाइन: प्रभाव रेखा, प्रभाव की खोज

इतनी विशेषताएँ क्यों?

DeepMind का डिज़ाइन दर्शन अधिकतम जानकारी प्रदान करना था, network को तय करने दें कौन सी उपयोगी:

कच्चा बोर्ड → 48 विशेषता प्लेन → Neural Network → निर्णय

विशेषता इंजीनियर का काम: Go ज्ञान को विशेषताओं में एन्कोड करना
Neural network का काम: इन विशेषताओं को संयोजित करना सीखना

यह "गेंद network को देने" की रणनीति है—मानव विशेषता डिज़ाइन के लिए, network संयोजन सीखने के लिए।


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. रंग (1 प्लेन)

प्लेननामविवरण
17किसकी बारीकाले की बारी = सभी 1, सफेद की बारी = सभी 0

इतना सरल क्यों?

AlphaGo Zero की मुख्य अंतर्दृष्टि:

यदि पर्याप्त गणना संसाधन और प्रशिक्षण समय दें, तो neural network स्वयं ये विशेषताएँ सीख सकता है

"साँसें", "अतारी", "लैडर" जैसी अवधारणाएँ, मानव ने हजारों वर्षों में विकसित कीं। लेकिन AlphaGo Zero ने साबित किया कि neural network कुछ दिनों में स्वयं सीख सकता है—और शायद मानव से बेहतर प्रतिनिधित्व सीख सकता है।

प्रभाव तुलना

आश्चर्यजनक रूप से, कम विशेषताओं वाला AlphaGo Zero अधिक मजबूत है:

संस्करणविशेषताएँप्रशिक्षण समयअंतिम शक्ति
AlphaGo Master48कई महीनेलगभग 5185 Elo
AlphaGo Zero1740 दिनलगभग 5185 Elo
AlphaGo Zero (3 दिन)173 दिनमानव से आगे

कम मानव ज्ञान, बल्कि मजबूत प्रदर्शन।

मानव ज्ञान बोझ क्यों?

1. मानव ज्ञान गलत हो सकता है

मानव द्वारा संक्षेपित Go नियम अनुभवजन्य हैं, इष्टतम नहीं हो सकते। उदाहरण:

  • "गोल्डन कॉर्नर, सिल्वर एज, ग्रास बेली"—लेकिन कुछ स्थितियों में केंद्र अधिक महत्वपूर्ण
  • "लैडर प्रतिकूल तो मत चलो"—लेकिन कभी-कभी सक्रिय रूप से छोड़ना अच्छा

2. विशेषता एन्कोडिंग प्रतिनिधित्व सीमित करती है

जब हम "साँसें" को 1-4 साँस चार प्लेनों में एन्कोड करते हैं, हम मान लेते हैं कि "साँसें" महत्वपूर्ण वर्गीकरण तरीका है। लेकिन शायद बेहतर वर्गीकरण तरीका हो, और यह एन्कोडिंग network को इसे खोजने से रोकती है।

3. प्रतिनिधित्व बाधा

48 प्लेन अधिक गणना संसाधन लेते हैं। यदि कुछ विशेषताएँ अनावश्यक हैं, तो ये संसाधन बर्बाद।


KataGo का अनुकूलन: 22 विशेषता प्लेन

व्यावहारिक संतुलन

KataGo ने AlphaGo Zero के आधार पर, कुछ चुनिंदा मानव ज्ञान जोड़ा:

आइटमAlphaGo ZeroKataGo
इतिहास प्लेन165
पत्थर स्थितिहाँहाँ
किसकी बारीहाँहाँ
Ko स्थितिनहींहाँ
नियम वेरिएंटनहींहाँ (Komi, आत्महत्या नियम आदि)
कुल1722

KataGo की विशेषता सूची

मूल विशेषताएँ (5)

प्लेननामविवरण
1कालावर्तमान काले पत्थर स्थिति
2सफेदवर्तमान सफेद पत्थर स्थिति
3खालीवर्तमान खाली बिंदु स्थिति
4किसकी बारी (1)हमेशा 1 का स्थिर प्लेन
5किसकी बारी (2)काले की बारी = 1, सफेद की बारी = 0

इतिहास विशेषताएँ (5)

प्लेननामविवरण
6पिछली चालप्रतिद्वंद्वी की पिछली चाल
7दो चाल पहलेहमारी पिछली चाल
8तीन चाल पहलेप्रतिद्वंद्वी की उससे पहले
9चार चाल पहलेहमारी उससे पहले
10पाँच चाल पहलेप्रतिद्वंद्वी की उससे पहले

Ko विशेषताएँ (3)

प्लेननामविवरण
11Ko निषिद्ध बिंदुवर्तमान में नहीं चल सकते Ko बिंदु
12संभावित Ko बिंदु (हमारा)हम यहाँ चलेंगे तो Ko बनेगा
13संभावित Ko बिंदु (प्रतिद्वंद्वी)प्रतिद्वंद्वी यहाँ चलेगा तो Ko बनेगा

नियम विशेषताएँ (9)

प्लेननामविवरण
14-22नियम एन्कोडिंगKomi, आत्महत्या नियम, सुपर Ko आदि

ये विशेषताएँ क्यों जोड़ी?

KataGo के लेखक lightvector ने समझाया:

1. Ko बहुत महत्वपूर्ण

Ko Go में सबसे जटिल अवधारणाओं में से एक है। कच्ची बोर्ड स्थिति से Ko नियम सीखने के लिए बहुत नमूने चाहिए। Ko निषिद्ध बिंदु स्पष्ट रूप से चिह्नित करने से सीखना तेज़।

2. नियम विविधता

Go के कई नियम हैं:

  • Komi: चीनी नियम 7.5 अंक, जापानी नियम 6.5 अंक
  • आत्महत्या नियम: कुछ नियम आत्महत्या की अनुमति देते हैं
  • सुपर Ko: लंबे चक्र के लिए अलग-अलग तरीके

इनपुट में स्पष्ट रूप से नियम एन्कोड करने से, एक network सभी वेरिएंट संभाल सकता है।

3. प्रशिक्षण दक्षता

थोड़ा मानव ज्ञान जोड़ने से प्रशिक्षण बहुत तेज़। KataGo ने 50 GPU दिनों में वह शक्ति प्राप्त की जो AlphaGo Zero ने 5000+ TPU दिनों में।


विशेषता डिज़ाइन का दर्शन

तीन दृष्टिकोण

दृष्टिकोणप्रतिनिधिविशेषताएँमानव ज्ञानगणना आवश्यकता
बहुत मानव ज्ञानAlphaGo48बहुतमध्यम
न्यूनतम मानव ज्ञानAlphaGo Zero17लगभग कुछ नहींबहुत अधिक
उचित मानव ज्ञानKataGo22थोड़ा चुनिंदाकम

व्यापार विचार

सीमित संसाधन होने पर

यदि गणना संसाधन सीमित हैं (अधिकांश शोधकर्ताओं की स्थिति), कुछ मानव ज्ञान जोड़ना समझदारी:

  • प्रशिक्षण अभिसरण तेज़
  • कम प्रशिक्षण डेटा की आवश्यकता
  • पहिया फिर से आविष्कार करने से बचना

अधिकतम खोजते समय

यदि गणना संसाधन पर्याप्त हों, मानव ज्ञान कम करने से उच्च शक्ति संभव:

  • मानव पूर्वाग्रह से बचना
  • मानव को अज्ञात रणनीतियाँ खोजना
  • वास्तव में "शून्य से शुरू"

सबक

AlphaGo श्रृंखला का विकास हमें बताता है:

  1. विशेषता इंजीनियरिंग अभी भी महत्वपूर्ण—लेकिन रूप बदल गया
  2. End-to-end लर्निंग प्रवृत्ति है—network को स्वयं विशेषताएँ सीखने दें
  3. कोई एकमात्र सही उत्तर नहीं—संसाधनों और लक्ष्यों पर निर्भर

कार्यान्वयन उदाहरण

विशेषता निष्कर्षण (AlphaGo शैली)

import numpy as np

def extract_features_alphago(board, history, current_player):
"""
AlphaGo शैली के 48 विशेषता प्लेन निकालें

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):
"""
AlphaGo Zero शैली के 17 विशेषता प्लेन निकालें

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
...

विशेषता प्लेन की अंतर्दृष्टि

विभिन्न विशेषता प्लेनों को देखकर समझ सकते हैं मॉडल क्या "देखता" है:

विशेषतासहज अर्थमॉडल क्या सीख सकता है
काला/सफेद स्थितिकौन कहाँआकृति, कनेक्टिविटी
इतिहासहाल में क्या हुआचाल इरादा, लड़ाई दिशा
साँसेंकौन खतरे मेंहमला/बचाव लक्ष्य
अतारीरणनीतिक अवसरस्थानीय रणनीति
किनारा-कॉर्नर दूरीस्थिति महत्वओपनिंग चयन, कॉर्नर joseki

एनिमेशन संदर्भ

इस लेख की मुख्य अवधारणाएँ और एनिमेशन नंबर:

नंबरअवधारणाभौतिकी/गणित संदर्भ
🎬 A8विशेषता एन्कोडिंगTensor प्रतिनिधित्व
🎬 A10इनपुट सामान्यीकरणविशेषता इंजीनियरिंग
🎬 D1Convolution इनपुटमल्टी-चैनल इमेज
🎬 E3Zero का सरलीकरणन्यूनतम प्रतिनिधित्व

आगे पढ़ें


मुख्य बिंदु

  1. विशेषता प्लेन बोर्ड का डिजिटल प्रतिनिधित्व है: प्रत्येक प्लेन 19×19 मैट्रिक्स
  2. AlphaGo ने 48 प्लेन उपयोग किए: बहुत सारा मानव Go ज्ञान शामिल
  3. AlphaGo Zero ने 17 तक सरल किया: साबित किया network स्वयं विशेषताएँ सीख सकता है
  4. KataGo ने 22 तक अनुकूलित किया: दक्षता और प्रदर्शन का संतुलन
  5. विशेषता डिज़ाइन व्यापार है: मानव ज्ञान vs गणना संसाधन

इनपुट विशेषता डिज़ाइन "मानव द्वारा समझा Go" और "मशीन द्वारा प्रोसेस किए जाने योग्य संख्याओं" के बीच का पुल है।


संदर्भ

  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