इनपुट विशेषता डिज़ाइन
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-23 | 1-4 साँसें (हमारी) | हमारी string में 1/2/3/4 साँसें = 1 |
| 24-27 | 1-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 ने इनपुट विशेषताओं को बहुत सरल किया:
| संस्करण | विशेषता प्लेन संख्या | मानव ज्ञान का उपयोग |
|---|---|---|
| AlphaGo | 48 | बहुत (साँसें, लैडर आदि) |
| AlphaGo Zero | 17 | लगभग कुछ नहीं |
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 Master | 48 | कई महीने | लगभग 5185 Elo |
| AlphaGo Zero | 17 | 40 दिन | लगभग 5185 Elo |
| AlphaGo Zero (3 दिन) | 17 | 3 दिन | मानव से आगे |
कम मानव ज्ञान, बल्कि मजबूत प्रदर्शन।
मानव ज्ञान बोझ क्यों?
1. मानव ज्ञान गलत हो सकता है
मानव द्वारा संक्षेपित Go नियम अनुभवजन्य हैं, इष्टतम नहीं हो सकते। उदाहरण:
- "गोल्डन कॉर्नर, सिल्वर एज, ग्रास बेली"—लेकिन कुछ स्थितियों में केंद्र अधिक महत्वपूर्ण
- "लैडर प्रतिकूल तो मत चलो"—लेकिन कभी-कभी सक्रिय रूप से छोड़ना अच्छा
2. विशेषता एन्कोडिंग प्रतिनिधित्व सीमित करती है
जब हम "साँसें" को 1-4 साँस चार प्लेनों में एन्कोड करते हैं, हम मान लेते हैं कि "साँसें" महत्वपूर्ण वर्गीकरण तरीका है। लेकिन शायद बेहतर वर्गीकरण तरीका हो, और यह एन्कोडिंग network को इसे खोजने से रोकती है।
3. प्रतिनिधित्व बाधा
48 प्लेन अधिक गणना संसाधन लेते हैं। यदि कुछ विशेषताएँ अनावश्यक हैं, तो ये संसाधन बर्बाद।
KataGo का अनुकूलन: 22 विशेषता प्लेन
व्यावहारिक संतुलन
KataGo ने AlphaGo Zero के आधार पर, कुछ चुनिंदा मानव ज्ञान जोड़ा:
| आइटम | AlphaGo Zero | KataGo |
|---|---|---|
| इतिहास प्लेन | 16 | 5 |
| पत्थर स्थिति | हाँ | हाँ |
| किसकी बारी | हाँ | हाँ |
| Ko स्थिति | नहीं | हाँ |
| नियम वेरिएंट | नहीं | हाँ (Komi, आत्महत्या नियम आदि) |
| कुल | 17 | 22 |
KataGo की विशेषता सूची
मूल विशेषताएँ (5)
| प्लेन | नाम | विवरण |
|---|---|---|
| 1 | काला | वर्तमान काले पत्थर स्थिति |
| 2 | सफेद | वर्तमान सफेद पत्थर स्थिति |
| 3 | खाली | वर्तमान खाली बिंदु स्थिति |
| 4 | किसकी बारी (1) | हमेशा 1 का स्थिर प्लेन |
| 5 | किसकी बारी (2) | काले की बारी = 1, सफेद की बारी = 0 |
इतिहास विशेषताएँ (5)
| प्लेन | नाम | विवरण |
|---|---|---|
| 6 | पिछली चाल | प्रतिद्वंद्वी की पिछली चाल |
| 7 | दो चाल पहले | हमारी पिछली चाल |
| 8 | तीन चाल पहले | प्रतिद्वंद्वी की उससे पहले |
| 9 | चार चाल पहले | हमारी उससे पहले |
| 10 | पाँच चाल पहले | प्रतिद्वंद्वी की उससे पहले |
Ko विशेषताएँ (3)
| प्लेन | नाम | विवरण |
|---|---|---|
| 11 | Ko निषिद्ध बिंदु | वर्तमान में नहीं चल सकते 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 दिनों में।
विशेषता डिज़ाइन का दर्शन
तीन दृष्टिकोण
| दृष्टिकोण | प्रतिनिधि | विशेषताएँ | मानव ज्ञान | गणना आवश्यकता |
|---|---|---|---|---|
| बहुत मानव ज्ञान | AlphaGo | 48 | बहुत | मध्यम |
| न्यूनतम मानव ज्ञान | AlphaGo Zero | 17 | लगभग कुछ नहीं | बहुत अधिक |
| उचित मानव ज्ञान | KataGo | 22 | थोड़ा चुनिंदा | कम |
व्यापार विचार
सीमित संसाधन होने पर
यदि गणना संसाधन सीमित हैं (अधिकांश शोधकर्ताओं की स्थिति), कुछ मानव ज्ञान जोड़ना समझदारी:
- प्रशिक्षण अभिसरण तेज़
- कम प्रशिक्षण डेटा की आवश्यकता
- पहिया फिर से आविष्कार करने से बचना
अधिकतम खोजते समय
यदि गणना संसाधन पर्याप्त हों, मानव ज्ञान कम करने से उच्च शक्ति संभव:
- मानव पूर्वाग्रह से बचना
- मानव को अज्ञात रणनीतियाँ खोजना
- वास्तव में "शून्य से शुरू"
सबक
AlphaGo श्रृंखला का विकास हमें बताता है:
- विशेषता इंजीनियरिंग अभी भी महत्वपूर्ण—लेकिन रूप बदल गया
- End-to-end लर्निंग प्रवृत्ति है—network को स्वयं विशेषताएँ सीखने दें
- कोई एकमात्र सही उत्तर नहीं—संसाधनों और लक्ष्यों पर निर्भर
कार्यान्वयन उदाहरण
विशेषता निष्कर्षण (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 | इनपुट सामान्यीकरण | विशेषता इंजीनियरिंग |
| 🎬 D1 | Convolution इनपुट | मल्टी-चैनल इमेज |
| 🎬 E3 | Zero का सरलीकरण | न्यूनतम प्रतिनिधित्व |
आगे पढ़ें
- पिछला लेख: Value Network विस्तृत विश्लेषण — स्थिति मान का मूल्यांकन कैसे
- अगला लेख: CNN और Go का संयोजन — Convolutional neural network बोर्ड कैसे प्रोसेस करता है
- संबंधित विषय: बोर्ड स्थिति प्रतिनिधित्व — निचले स्तर की डेटा संरचना
मुख्य बिंदु
- विशेषता प्लेन बोर्ड का डिजिटल प्रतिनिधित्व है: प्रत्येक प्लेन 19×19 मैट्रिक्स
- AlphaGo ने 48 प्लेन उपयोग किए: बहुत सारा मानव Go ज्ञान शामिल
- AlphaGo Zero ने 17 तक सरल किया: साबित किया network स्वयं विशेषताएँ सीख सकता है
- KataGo ने 22 तक अनुकूलित किया: दक्षता और प्रदर्शन का संतुलन
- विशेषता डिज़ाइन व्यापार है: मानव ज्ञान vs गणना संसाधन
इनपुट विशेषता डिज़ाइन "मानव द्वारा समझा Go" और "मशीन द्वारा प्रोसेस किए जाने योग्य संख्याओं" के बीच का पुल है।
संदर्भ
- Silver, D., et al. (2016). "Mastering the game of Go with deep neural networks and tree search." Nature, 529, 484-489.
- Silver, D., et al. (2017). "Mastering the game of Go without human knowledge." Nature, 551, 354-359.
- Wu, D. (2019). "Accelerating Self-Play Learning in Go." arXiv:1902.10565.
- KataGo Documentation: https://github.com/lightvector/KataGo