Men bara faktiska experiment kommer att berätta om AlphaZero har lämnat en meningsfull mängd av schackutrymmet outforskat. Schack, som alla spel, kokar ner till två grundläggande komponenter:
- Utforska rymden för möjliga drag
- Utvärdera "godheten" för varje sådant drag
AlphaZero använder en teknik som heter Monte Carlo Tree Search för att utföra 1, och Deep Convolutional Neural Network för att utföra 2. Och Bob är din farbror! Okej, det är en grov överförenkling, men låt mig förklara kort hur varje bit fungerar.
Sök
Spel har en uppsättning tillstånd och en uppsättning rörelser som övergår mellan staterna. Eftersom de vanligtvis har ett enda starttillstånd, och för enkelhetens skull, modellerar vi vanligtvis denna uppsättning tillstånd som ett träd (snarare än ett diagram). "Att blicka framåt" betyder bara att korsa lager längs "spelträdet". För ett spel som schack, som är en hög förgreningsfaktor, slutar du med ett enormt antal stater på bara några få nivåer, så mycket arbete går för att undvika så många statliga noder som möjligt (genom att försöka identifiera uppenbara förlorare och baila på det eller följa starka vägar företrädesvis). MCTS går för djup över bredd genom att "spela ut" ett särskilt drag mycket djupt in i spelet. Eftersom det finns ett begränsat antal drag för vilka man kan utföra denna beräkningsmässigt dyra operation gör den det endast för en slumpmässig delmängd av möjliga drag. Delmängden väljs dock inte med en enhetlig fördelning . De drag som utforskas kan vägas av vilken heuristik du helst vill. Mer om det senare.
Utvärdering
Om du tittar på en vinnande stat är det lätt att göra en utvärdering. Om du inte tittar på ett vinnande tillstånd måste du bestämma om det är "bra" eller "dåligt". Det är här det neurala nätverket kommer in. Det är svårt att säga om flytten hade en positiv eller negativ inverkan på din vinstpotential direkt efter att du gjort ett drag. Men det är mycket lättare att avgöra när spelet är över. Så när spelet är klart har du nu en vinn / förlust-signal för alla brädstatus i det spelet. Detta är nu trivial träningsingång för att avgöra om vart och ett av dessa kortstatus var "bra" eller "dåligt" för dig, och du kan backpropagera den signalen genom det neurala nätverket som ger dig "bra / dålig" -signalen för varje kortstatus. Detta är den "deep learning" delen av AlphaZero.
Eftersom detta är den statefula delen av AlphaZero, kan du också säga att det här är "kunskapen", om än i en ganska abstrakt form som inte är verkligen tillgänglig för inspektion eller förfrågan.
Bias
Om vi antar att AlphaZero börjar med att göra enhetligt slumpmässiga val under MCTS, är det rättvist att säga att det utforskar schackutrymmet utan någon särskild partiskhet. DCNN kan informera MCTS-skiktet och få det att följa "bra" vägar snarare än "dåliga", men från vad jag har läst föredrar det att följa "okända" vägar snarare än "kända". I grund och botten använder AlphaZero varje spel för att öka sin kunskap om schack snarare än att bara försöka vinna det aktuella spelet. Eftersom det fokuserar på att täcka utrymmet snarare än att bara följa den mest lovande vägen, lär sig det mycket bredare än schackmotorer med en icke-statlig sökalgoritm, som måste använda sina sökcykler så ekonomiskt som möjligt.
Av denna anledning bör man misstänka att AlphaZero inte lämnar många lovande vägar ur sin repertoar. Och som andra har noterat är stilen redan helt annorlunda än de flesta stormästare, och den fortsätter att lära oss nya saker. Ändå finns det fria parametrar i AlphaZero-designen, som du kan ställa in för att extrahera olika resultat.
Strategi
Om du skulle skapa en "mest främmande AlphaZero", kan du ta den grundläggande arkitekturen och träna den sedan på mänskliga spel. Denna utbildning skulle dock bygga ett sekundärt nätverk som heter Human Predictor. Målet med HP-nätverket skulle helt enkelt vara att förutsäga de rörelser som mest sannolikt kommer att spelas av en människa för ett visst brädestatus.
Nu när du utför MCTS-fasen istället för att föredra "drag har jag inte inte utforskat förut ", föredrar du" rörelser som människor inte skulle göra ", vilket lämnar resten på samma sätt som AlphaZero. Detta bör i princip implementera det du letar efter. Min gissning är att pjäsen kommer att se ut som AlphaZero i områden där AZ redan spelar i främmande stil och kommer att vara sämre än AZ i spel där AZ överlappar mer med "mänsklig stil".
Anledningen borde vara uppenbar: AZ har inga begränsningar för vilka typer av drag det gör. När det spelar annorlunda än människor är det inte för att det försöker att. Det beror på att det, genom uttömmande försök och fel, fann att dessa drag är helt enkelt bättre . Och inte bara bättre mot människor heller: bättre även mot sig själv! Det är möjligt att man kan träna AZ för att slå människor ännu mer effektivt genom att använda HP-modulen som beskrivs ovan för att modellera de motdrag som motståndaren sannolikt kommer att göra under MCTS-fasen. En sådan modifierad AZ kan tycka att "ren" AZ är alltför konservativ eftersom den ger sina mänskliga motståndare för mycket kredit.
Det är också möjligt att träna en "Stockfish killer" -variant genom att helt enkelt använda Stockfish själv för att tillhandahålla motåtgärder under MCTS-fasen. Du skulle behöva göra detta strikt under inlärningsfasen, för du skulle inte ha datorerna för att göra detta under en live turnering, men effektivt skulle DCNN lära sig att spela uteslutande mot Stockfish, snarare än AZ, och hoppa över eventuella mot- spela som en annan motor kan ge. Under en turnering kunde MCTS sedan återgå till standardalgoritmen, eftersom DCNN redan har fångat kärnan i Stockfish och stoppat den i en flaska.
Hur som helst, låter som ett roligt experiment. Lycka till!