ইঞ্জিন প্লে এলোমেলো


11

যদি আমি দুটি ইঞ্জিন একই রঙের সাথে একে অপরের বিরুদ্ধে খেলতে পাই তবে প্রতিবার একই গেমের ফলাফল হবে কি? যদি তা না হয় তবে ইঞ্জিন প্লেতে এলোমেলো কোথা থেকে আসে? (উদ্বোধনী বইটিকে অবহেলা করা, যেখানে আমার যদি ভুল না হয় তবে বইটি ইঞ্জিনকে এলোমেলোভাবে দুটি পদক্ষেপের মধ্যে বেছে নিতে বলবে যেহেতু তারা সমানভাবে ভাল)

আমি ধরে নিচ্ছি যে এলোমেলোতা আছে কারণ আলফাজেরো বনাম স্টকফিশ ম্যাচে, আমরা একই খেলায় টানা অনেকবার ঘটতে পারি নি। তবে কেন বুঝতে পারছি না। সম্ভবত এটি করার একমাত্র উপায় হ'ল ইঞ্জিনকে সাব্পার চালানোর জন্য কিছু সময় চালনা করা, যা সেপুকুর মতো শোনাচ্ছে।


আলফাজিরো খেলতে শিখেছে, সুতরাং প্রতিটি গেমের পরে এর মডেলটি আপডেট হয়।
5717

মূল্যায়নে ছোট এলোমেলো মান যুক্ত করা সম্ভাব্য উপায়গুলির মধ্যে একটি। আমি মনে করি স্টকফিশ এটি করছে।
hoacin

উত্তর:


8

AlphaZero বনাম Stockfish ম্যাচ প্রসঙ্গে, এই প্রশ্নের ইতিমধ্যে আবৃত করা হয়েছে এখানে দ্বারা SmallChess

আলফাজেরো একপাশে (যা তার খেলার পংক্তির সন্ধানে বিশেষায়িত মন্টি কার্লো 1 রুটিন নিয়োগ করে ), যা নির্মাণের মাধ্যমে অ- প্রতিরোধমূলক হিসাবে তৈরি করা হয়েছে, সাধারণ হিউরিস্টিক ভিত্তিক দাবা ইঞ্জিন যেমন স্টকফিশ এবং অন্যদের জন্য (যদিও অন্যান্য রয়েছে) এমসি-ভিত্তিক রুটিনযুক্ত ইঞ্জিনগুলিতে, এএফআইএইচআইপি রাইবকা এ জাতীয় বৈশিষ্ট্য ব্যবহার করতেন), এলোমেলোতার উত্স সাধারণত ইঞ্জিনের সিদ্ধান্ত নেওয়ার ক্ষেত্রে অ্যালগরিদমতভাবে ইচ্ছাকৃতভাবে এলোমেলোভাবে পরিচয় করানোর পরিবর্তে বাস্তবায়নের প্রযুক্তিগত দিকগুলির একটি পরিণতি মাত্র। বিমূর্তভাবে বলা যায়, এর একটি কারণ হ'ল ইঞ্জিনগুলি খাঁটি অনুক্রমিক পদ্ধতিতে চলছে না (একের পর এক কাজ সম্পাদন করছে)। পরিবর্তে, ইঞ্জিনগুলিকে আরও দক্ষ করে তোলার জন্য, তারা সম্ভাব্য পদক্ষেপের গাছের বিভিন্ন শাখায় সমান্তরাল অনুসন্ধান করে। তারা কি বলা হয় মাধ্যমে এটি করতে মাল্টি থ্রেডিং (অথবা -processing কিন্তু যে একটু ভিন্ন)। সুতরাং সিপিইউগুলির একাধিক থ্রেড একই সাথে হয়গাছটি অনুসন্ধান করার জন্য ক্রিয়াকলাপ চালাচ্ছে (এবং পরিদর্শন করা অবস্থাগুলির মূল্যায়ন ক্যাশে), সুতরাং প্রতিটি থ্রেডকে একটি সাবট্রি বরাদ্দ করা হয়েছে তা কল্পনা করুন। এই ধরণের বাস্তবায়নের সমস্যাটি হ'ল থ্রেডের সামগ্রিক সম্পাদনটি সমস্ত ধরণের অবস্থার (অপেক্ষার সময়, র‌্যামের অদলবদল, ...) উপর অত্যন্ত নির্ভরশীল হয়ে ওঠে, সুতরাং শেষ পর্যন্ত অন্য সমস্তকে অনুমতি না দিয়ে একটি মূল প্রকরণ বেছে নেওয়া যেতে পারে থ্রেডগুলি তাদের অনুসন্ধান শেষ করতে।

প্রকৃতপক্ষে এটি প্রায়ই ঘটে কারণ ইঞ্জিন একটি নির্দিষ্ট সময়ের অধীনে কোনও সিদ্ধান্ত নিতে প্রস্তুত হয়, তাই সময় ব্যবস্থাপনার আচরণটি পরিবর্তন করে। আপনি এই বক্তব্যটিও এই বলে ফিরিয়ে দিতে পারেন: অ্যালগরিদম জেনে এবং নির্ধারিত থ্রেডিং রুটিনগুলি বাস্তবায়ন কোনও সময়ের পরে প্রোগ্রামের অবস্থা নির্ভরযোগ্যভাবে পূর্বাভাস দেওয়ার পক্ষে যথেষ্ট নয়। অবশ্যই যদি সর্বদা সমস্ত থ্রেডগুলি তাদের অনুসন্ধান শেষ করতে দেয়, এবং সেই মৃত্যুদণ্ডের সময় কোনও সমঝোতার সমস্যা না ঘটে (উদাহরণস্বরূপ একটি থ্রেড একটি নির্দিষ্ট ক্যাশে যা অ্যাক্সেসযোগ্য নয় access প্রদত্ত সমস্ত কিছু একই 2


1 : একসাথে যে অতিরিক্ত প্রশিক্ষণের মাধ্যমে (উদাহরণস্বরূপ স্ব-খেল) এর স্নায়ুবিক নেটওয়ার্ক বিবর্তিত হয় (পুনরায় সমন্বিত পরামিতি), অথবা আপনি যদি এটির মূল্যায়নের ক্রিয়ায় স্থির, স্থির সংজ্ঞা না রাখেন (হিউরিস্টিক ভিত্তিক ইঞ্জিনগুলির বিপরীতে) )।

2 : তবুও, আপনি যেমনটি বলেছিলেন, খোলার স্তরে, একটি খোলার বইয়ের সাথে, মাঝে মাঝে ইঞ্জিন দ্বারা ইচ্ছাকৃতভাবে এলোমেলো সিদ্ধান্ত নেওয়া হয় যে কোন প্রকরণটি বেছে নিতে হবে। একইভাবে, উদ্বোধনী পর্বের বাইরেও এমন মুহুর্তগুলি থাকতে পারে যেখানে একাধিক প্রকরণের সমান মূল্যায়ন (এভালের জন্য নির্বাচিত রেজোলিউশনের মধ্যে) কাছাকাছি থাকতে পারে, তারপরে ডিজাইনের ভিত্তিতে এটি এলোমেলোভাবে বেছে নেওয়া শেষ করতে পারে। পরিশেষে, ইঞ্জিন সেটিংসের স্তরে আপনাকেও সতর্কতা অবলম্বন করতে হবে, উদাহরণস্বরূপ প্রতিটি ইঞ্জিনের জন্য বেছে নেওয়া অনুসন্ধান এবং গভীরতার সময়গুলির গভীরতা (এবং তারা একে অপরের চিন্তাভাবনার সময় আরও গণনা করতে পারে কিনা)।


6

আমার পূর্ববর্তী উত্তরগুলি বিশদে আবরণে @ ফননকে ধন্যবাদ জানাই। আমি আরও একটি পয়েন্ট যোগ করতে চাই: সময় নিয়ন্ত্রণ

একমাত্র নিয়ামবাদী সময় নিয়ন্ত্রণ হ'ল নোড দ্বারা , তবে এটি অস্বাভাবিক। আরও বেশি সাধারণ সময় নিয়ন্ত্রণ - সেকেন্ডের নির্দিষ্ট সংখ্যক সংখ্যা বা গেমের সময় সাধারণত নির্বিচারক হয় না।

আসুন একটি উদাহরণ চেষ্টা করুন। আপনার টার্মিনালে স্টকফিশ চালান। টাইপ করুন:

মুভটাইম 20000 যান

এই কমান্ডটি ইঞ্জিনকে 20 সেকেন্ড পরে একটি পদক্ষেপ নেওয়ার নির্দেশ দেয়। আমার ফলাফল:

info depth 23 seldepth 32 multipv 1 score cp 6 upperbound nodes 24325860 nps 1216171 hashfull 999 tbhits 0 time 20002 pv g1f3 d7d5
bestmove g1f3 ponder d7d5

পদক্ষেপটি ছিল 1.Nf3। এরপরে, আমি আমার স্টকফিশকে হত্যা করেছি, একটি নতুন শুরু করেছি। আবার, 20 সেকেন্ড। আমি পেয়েছি:

info depth 23 seldepth 32 multipv 1 score cp 20 nodes 26185280 nps 1309067 hashfull 999 tbhits 0 time 20003 pv d2d4
bestmove d2d4 ponder g8f6

এটি 1.d4! একই পজিশনে, উভয়ই 20 সেকেন্ড অনুসন্ধান!

তুমি কি দেখছ? সরানোর জন্য উভয়ই 20 সেকেন্ড, তবে লিনাক্স অপারেটিং সিস্টেমে ওঠানামার কারণে আমার দ্বিতীয় রানটির আরও গভীর অনুসন্ধান (26185280> 24325860) ছিল।

দয়া করে মনে রাখবেন যে এই সামান্য পরীক্ষাটি মাল্টিথ্রেডও করা হয়নি (থ্রেডের সংখ্যা = 1)। মাল্টিথ্রেডিং জিনিসগুলিকে আরও অ-সং-বিরোধী করে তুলবে।

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


প্রকৃতপক্ষে, খুব শিক্ষামূলক উদাহরণ এবং মন্তব্য।
ব্যবহারকারী 929304

চমৎকার! এমনকি 1 থ্রেড কেস প্রদর্শন করতে দুর্দান্ত ধারণা।
এলি

উত্তরের জন্য ধন্যবাদ. বোকা ফলো-আপ প্রশ্ন: একটি নোড কী (দাবা খেলা ইঞ্জিনের প্রসঙ্গে)?
মোহন

@ user3727079 নোড ছেদচিহ্ন (অনন্য অবস্থানের) গেমে হয় গাছ । উদাহরণস্বরূপ, যদি রুট নোডটি শুরুর অবস্থান হয় তবে তার 20 টি শিশু নোড রয়েছে যা 20 টি অনন্য আইনী অবস্থান যা মূল থেকে এক-প্লাই দূরে থাকে।
এলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.