Cypha / দাবা

পণ্যের প্রদর্শনী

দাবা খেলুন, প্রতিপক্ষ Cypha

Cypha কখনও একটি দাবার খেলাও দেখেনি। সে শিখেছে একটি সাধারণ দাবা প্রোগ্রামকে ভাবতে দেখে — ২৬,৫৬৮টি অবস্থান, প্রতিটিতে কে জিতছে তা নিয়ে ওই প্রোগ্রামের নিজের রায় লেবেল হিসেবে দেওয়া — যতক্ষণ না Cypha নিজেই রায়টা দিতে পারল।

নিচে আপনি তার সঙ্গেই খেলছেন, আপনার ব্রাউজারে একটি অগভীর অনুসন্ধানের ভিতরে চলছে। একে হারানো যায়, আর যার কাছ থেকে সে শিখেছে তার কাছে সে এখনও হারে। এই পাতার প্রতিটি সংখ্যা এসেছে সেই প্রশিক্ষণ-চালনা থেকে, যা এই পাতার লোড করা ওজনগুলি তৈরি করেছে।

মাপা, দাবি করা নয়

নিচের বর্গমূল গড়-বর্গ ত্রুটি (RMSE) হলো একগুচ্ছ আন্দাজ কতটা দূরে ছিল তার চেনা মাপকাঠি; যত ছোট, মডেল তত তার শিক্ষকের কাছাকাছি।

আলাদা রাখা অংশে R²
—
RMSE
—
অবস্থান
—
শিক্ষকের বিপরীতে
—

R² মাপা হয়েছে আলাদা করে রাখা এমন অবস্থানের বিপরীতে, যা ফিটিংয়ের সময় মডেল কখনও দেখেনি। ম্যাচের লাইনটি হলো গভীরতা ২-এ Cypha বনাম একই গভীরতায় শিক্ষক ইঞ্জিন, এলোমেলো ওপেনিং আর রং বদলে বদলে। চারটি সংখ্যাই বর্ণনা করে সেই মডেলকে যেমনটি ডিস্টিল করা হয়েছিল — এগুলি স্থির, আর এগুলি আপনার কপির মাপজোক নয়।

আপনার কপিটি এখনও শিখছে। Cypha একটি অনলাইন শিক্ষার্থী, তাই ডাউনলোড শেষ হলেই হেডের বসা থেমে যায় না। আপনার বিরুদ্ধে দেওয়া প্রতিটি চালই আরও একটি প্রশিক্ষণ জোড়া, আর বোর্ডের নিচের প্যানেলটি দেখায় আপনার কপিটি পাঠানো কপি থেকে কতদূর সরে এসেছে।
আর এতে এখনও সে ভালো খেলে না। মাপা, ধরে নেওয়া নয়। ১২টি স্ব-খেলায় এই সংশোধন নিজের অনুসন্ধানের বিপরীতে হেডের ভুল কমায় 0.76 থেকে 0.67 পনে — আর একটি সেশনে জমে থাকা হেড যেখানে 4.6% খারাপ হয়, সেখানে শেখা হেডটি হয় 5.2% ভালো। কাজেই ফিটিংটা সত্যি। কিন্তু ১,১১৯টি অবস্থানে প্রশিক্ষণ পাওয়া একটি কপিকে পাঠানো কপির বিপরীতে খেলালে, রং বদলে বদলে গভীরতা ২-এ ২৪টি খেলায়, ফল দাঁড়ায় ৬ জয়–৭ হার–১১ ড্র: হাড্ডাহাড্ডি।

এটাই প্রত্যাশিত ফল, আর লুকিয়ে রাখার চেয়ে বলে দেওয়াই ভালো। সংকেতটা আসে মডেলের নিজের গভীরতা-২ অনুসন্ধান থেকে, যা জমে থাকা হেডের নিজের দৃষ্টির চেয়ে সামান্যই গভীর — নিজের সঙ্গে একমত হতে শেখা আর শক্তিশালী হওয়া এক কথা নয়। যে ২৬,৫৬৮টি অবস্থানের উপর একে ডিস্টিল করা হয়েছিল, তার পাশে হাজারখানেক অবস্থান কিছুই নয়। সৎ দাবিটা হলো, অনলাইন শিক্ষার্থীটি কাজ করে এবং যা বলে তা-ই করছে; পাঠানো মডেলকে সে হারাবে, এই দাবিটা অর্জিত হয়নি।
সহজ কথায়

এটি কী, এক মিনিটে

সমস্যা

প্রতিটি নতুন কৃত্রিম বুদ্ধিমত্তার (AI) নকশা আসে কেন সেটির কাজ করা উচিত তার ব্যাখ্যা নিয়ে। ব্যাখ্যাটা পড়ে সত্যিই কাজ করে কি না তার কিছুই জানা যায় না। দাবা সেটা মিটিয়ে দেয়, কারণ উত্তরটা মতামতের ব্যাপার নয়: হয় সে বৈধ ও বুদ্ধিমান দাবা খেলে, নয় খেলে না — আর আপনি বসে গিয়ে দেখে নিতে পারেন।

সমাধান

একটি সাধারণ দাবা প্রোগ্রাম চালগুলির ভিতর দিয়ে সামনে খুঁজে একটি অবস্থান বিচার করে। Cypha-কে সেই বিচারের ২৬,৫৬৮টি দেখানো হয়েছে, আর সেগুলি হুবহু ফিরিয়ে দিতে বসানো হয়েছে একটিমাত্র সূত্র — বোর্ডের বর্ণনা দেওয়া ৩৮৮টি সংখ্যার উপরে এক লাইনের গণিত। দাবার জন্য স্থাপত্যে কিছুই যোগ করা হয়নি। কেবল তাতে ঢোকানো সংখ্যাগুলিই বদলেছে।

কাদের জন্য

Cypha-কে যাঁরা মেপে দেখছেন, শোনা কথায় ভরসা না করে যাচাই করতে চান। যাঁরা মেশিন লার্নিং নিয়ে কাজ করেন আর দেখতে চান একটি মডেল ব্যবহারের মধ্যেই শিখে চলেছে। আর যাঁর স্রেফ একটা খেলার শখ — সবই আপনার ব্রাউজারে চলে, আর আপনি যা খেলেন তার কিছুই কোথাও পাঠানো হয় না।

একটি দাবা ইঞ্জিনের বিচার নকল করা মানে দাবা শেখা নয়। এই পাতা তেমন দাবিও করে না। পাতার বাকিটা হলো কীভাবে করা হলো, প্রতিটি সংখ্যার মানে কী, আর এই নকশা যে চারটি জিনিস পারে না।

cypha::Cypha — দাবার হেড শিখছে

একটি ঘুঁটিতে ক্লিক করুন, তারপর যেখানে যাবে সেখানে ক্লিক করুন। বৈধ ঘরগুলি চিহ্নিত।

অবস্থান

মডেল লোড হচ্ছে…
ডিস্টিল করা ওজনগুলি আনা হচ্ছে।
Cypha-র মূল্যায়ন
—
নোড
—

Cypha কী কী ভেবেছিল

চাল

আপনার কাছ থেকে শেখা

এই গভীরতায় রেটিং
—
ব্যবহৃত মডেল
গভীরতা ২
শেখা অবস্থান
0
শেষ হওয়া খেলা
0
পাঠানো মডেল থেকে ড্রিফট
0.00%
শেষ সংশোধন
—

ড্রিফট মানে ওজন-ভেক্টরে হওয়া পরিবর্তনের মাপ, ডিস্টিল করাটির তুলনায়। শেষ সংশোধন মানে, এইমাত্র যে অবস্থান থেকে চাল দেওয়া হলো তা নিয়ে জমে থাকা হেডটি কতটা ভুল ছিল, পনে মাপা, তার নিজের আরও গভীর অনুসন্ধানের বিপরীতে।

রেটিং একটি অভ্যন্তরীণ সিঁড়ির মাপ, Fédération Internationale des Échecs (FIDE) মাপ নয় — যে কখনও রেটিংধারী মানুষের সঙ্গে খেলেনি তার গায়ে সৎভাবে FIDE সংখ্যা বসানোর উপায় নেই। গভীরতা ১-এ রেফারেন্স ইঞ্জিনকে ১০০০-এ বাঁধা হয়েছে, আর সবটাই বসানো হয়েছে ২১০টি খেলা থেকে Bradley-Terry সর্বাধিক সম্ভাব্যতা দিয়ে, তাই খেলাগুলি কোন ক্রমে হয়েছিল তার উপর এটি নির্ভর করে না। মাপা সিঁড়ি: গভীরতা ১–৩-এ রেফারেন্স ১০০০ / ১১৭১ / ১২৪৫, Cypha ৭৯৮ / ১০১০ / ১১৬১। যে ইঞ্জিন থেকে Cypha ডিস্টিল করা, তার চেয়ে সে প্রায় এক ধাপ অনুসন্ধান-গভীরতা পিছিয়ে চলে, আর ত্রুটির দণ্ড মোটামুটি ±৫০ — ২১০টি খেলায় এটুকুই মেলে।

প্রতিটি শক্তি-সেটিং রাখে নিজের আলাদা মডেল। গভীরতা ১-এ খেলা একটি হেডকে গভীরতা ১-এর অনুসন্ধানের দিকে শোধরানো হয়; গভীরতা ৩-এ লক্ষ্যটা অন্য, আরও ভালো একটা। দুটোকে একই ওজন-ভেক্টরে প্রশিক্ষণ দিলে তারা কেবল নিজেদের মধ্যে ঝগড়া করবে। শক্তি বদলান, সঙ্গে গোনাগুনতিও বদলাবে।

মূল্যায়নটি ৩৮৮টি ফিচারের একটি রৈখিক ফাংশন। এর নিজের কোনো অনুসন্ধান গভীরতা নেই, কোনো ওপেনিং বই নেই, শেষ-খেলার কোনো জ্ঞান নেই। একে হারানো প্রত্যাশিত; মজার ব্যাপারটা হলো, একটিমাত্র হোয়াইটেন করা রৈখিক হেড একটি ইঞ্জিনের অনুসন্ধান-মূল্যায়ন আদৌ ফিরিয়ে আনতে পারছে — আর তারপর আপনি খেলতে খেলতেই নিজেকে শুধরে নিচ্ছে।
ইঞ্জিন, ফিচার, ডিস্টিল করা ওজন আর খেলোয়াড় সবই স্থানীয়ভাবে চলে। কোথাও কিছু পাঠানো হয় না, আর কয়েক কিলোবাইট সহগ ছাড়া কোনো মডেল ডাউনলোড হয় না। আপনার কপি যা শেখে তা আপনার ব্রাউজারেই থাকে, আপনারই, আর কখনও আপলোড হয় না — তাই অন্য কারও খেলা আপনার মডেলকে নাড়াতে পারে না, আর আপনারটাও তাদেরটাকে নয়।
পদ্ধতি

একটি ইঞ্জিন কীভাবে Cypha মডেল হয়ে ওঠে

এটি নলেজ ডিস্টিলেশন, আর করা হয়েছে অন্য প্রতিটি Cypha প্রয়োগের মতো একই অংশ দিয়ে। স্থাপত্যে দাবা-নির্দিষ্ট কিছুই যোগ করা হয়নি — শুধু ফিচারগুলি ছাড়া।

ডিস্টিলেশনের শৃঙ্খল: perft দিয়ে যাচাই করা একটি রেফারেন্স ইঞ্জিন ২৬,৫৬৮টি অবস্থানে লেবেল দেয়, সেগুলি হয়ে ওঠে ৩৮৮টি ফিচার, আর ৯.৪ কিলোবাইটের একটি Cypha হেডে বসে গিয়ে আলাদা রাখা অংশে R স্কয়ার ০.৮৬৬ অর্জন করে
পুরো চিত্রটি দেখতে স্ক্রল করুন →
ডিস্টিলেশন, আবিষ্কার নয়। শেষ বাক্সের প্রতিটি সংখ্যা মাপা হয়েছে সেই প্রশিক্ষণ-চালনায়, যা এই পাতার লোড করা ওজনগুলি তৈরি করেছে।
ধাপ ১

শিক্ষক

একটি 0x88 ইঞ্জিন, সঙ্গে পূর্ণ বৈধ চাল তৈরি, ঘুঁটির মান ও ঘুঁটি-ঘর মূল্যায়ন, সবচেয়ে দামি শিকার – সবচেয়ে সস্তা আক্রমণকারী (MVV-LVA) ক্রম আর শান্ত-অবস্থা অনুসন্ধান। kiwipete-সহ পাঁচটি আদর্শ perft অবস্থানের বিপরীতে যাচাই করা, তাই তার কাছ থেকে কিছু শেখার আগেই নিয়মগুলি প্রমাণসহ ঠিক।

ধাপ ২

ডেটা

এলোমেলো ওপেনিং আর ইচ্ছাকৃত গোলমালসহ স্ব-খেলা থেকে নেওয়া অবস্থান, যাতে সেটটি একটি সরু ধারার বদলে সত্যিকারের খেলার বিস্তার ধরে। প্রতিটিতে লেবেল দেওয়া হয়েছে শিক্ষকের নিজের অনুসন্ধান স্কোর দিয়ে, ±১২ পনে কেটে রাখা, যাতে মেটের স্কোর সব দখল করে না নেয়।

ধাপ ৩

ফিচারগুলি

৩৮৮টি মাত্রা: ৩৮৪-প্রশস্ত একটি ঘুঁটি-ঘর দখলের পার্থক্য (৬ ধরন × ৬৪ ঘর), সঙ্গে বিশপ জোড়া, দ্বৈত পন, চলাচলের স্বাধীনতা ও খেলার পর্যায়। সবসময় যার চাল তার দিক থেকে দেখা, তাই একটিমাত্র ওজন-ভেক্টর দুই রঙেরই কাজ চালায়।

ধাপ ৪

বসানো

WorldPrior θ₀ Welford দিয়ে অনলাইনে বসানো, প্রাকৃতিক-গ্রেডিয়েন্টের মেট্রিক হিসেবে হোয়াইটনিং, স্বাভাবিকীকৃত ন্যূনতম গড় বর্গ (LMS) ওজন-হালনাগাদ, ন্যূনতম বর্ণনা-দৈর্ঘ্যের (MDL) ক্ষয় ওজনগুলিকে পূর্বধারণার দিকে ফিরিয়ে আনছে, আর Cypha-র রেফারেন্স ০.৩০ অনুপাতে বিস্ময়-ওজনযুক্ত রিপ্লে বাফার।

এটি কেন একটি ন্যায্য প্রদর্শনী

কাজটা করেছে স্থাপত্য, বিষয়ক্ষেত্র নয়

৪ নম্বর ধাপের প্রতিটি অংশ একটি সত্যিকারের Cypha অংশ, নিজের সত্যিকারের কাজটাই করছে। WorldPrior সেই একই অনলাইন গাউসীয় বণ্টন, যা Cypha পাতার দ্বিমাত্রিক ক্লাসিফায়ারকে তার সিদ্ধান্তের পৃষ্ঠ দেয়। হোয়াইটেনিং হলো তথ্য-জ্যামিতির দাবিটিকে মূর্ত করা: হালনাগাদ কাঁচা গ্রেডিয়েন্ট নয়, প্রাকৃতিক গ্রেডিয়েন্ট ধরে চলে। MDL ক্ষয় হলো Solomonoff পূর্বধারণা, যা সংকোচন-পদ হিসেবে প্রকাশিত।

দাবার জন্য যা বদলেছে তা হলো ফিচার-মানচিত্র আর হেড — শ্রেণিবিভাগের বদলে রিগ্রেশন। Cypha README একটিই টাইপ কয়েকটি কাজ করে বলে যে যুক্তিটি দেয়, এটি ঠিক সেটাই, পরখ করা হয়েছে এমন একটি ক্ষেত্রে যেখানে উত্তরটি দ্ব্যর্থহীন: হয় সে বৈধ, যুক্তিসঙ্গত দাবা খেলে, নয়তো খেলে না।

এটি যা দেখায় না

সৎ সীমা

  • এটি রৈখিক। ঘুঁটি-ঘর ফিচারের একটি রৈখিক ফাংশন রাজার নিরাপত্তা, বোড়ের গঠনের পারস্পরিক ক্রিয়া, কিংবা দুটি ফিচারের গুণফল লাগে এমন কিছুই প্রকাশ করতে পারে না। Cypha README এক্সক্লুসিভ অর (XOR) নিয়ে যে ছাদের কথা বলে, এরও সেই একই ছাদ।
  • শিক্ষকটি সাধারণ মানের। রেফারেন্স ইঞ্জিনটি একজন দক্ষ চিরায়ত অনুসন্ধানকারী, Stockfish নয়। একে ভালোভাবে ডিস্টিল করার মানে একটি সাধারণ মানের মূল্যায়নকারীকে ভালোভাবে মেলানো।
  • নিজের কোনো অনুসন্ধান গভীরতা নেই। এখানে শক্তির বেশিরভাগটাই আসে আলফা-বিটা মোড়ক থেকে, শিক্ষকের ক্ষেত্রে যেমন আসে ঠিক তেমনই।
  • ডিস্টিলেশন আবিষ্কার নয়। Cypha তাকে দেখানো একটি মূল্যায়ন ফাংশন ফিরিয়ে এনেছে। সে শূন্য থেকে দাবা শেখেনি, আর এই পাতায় কোথাও তেমন দাবিও করা হয়নি।
নিজে করে দেখুন: node tools/chess/perft.js ইঞ্জিনটিকে আদর্শ পরীক্ষা-অবস্থানগুলির বিপরীতে যাচাই করে, আর node tools/chess/train.js একটি নির্দিষ্ট সিড দিয়ে মডেলটি গোড়া থেকে আবার তৈরি করে। এই পাতার উপরের সংখ্যাগুলি ওই চালনায় তৈরি হওয়া ফাইল থেকে সরাসরি পড়া।