
Onrust in computerschaakland: het programma Rybka is beschuldigd
van plagiaat en de plagiateur Vasik Rajlich veroordeeld tot levenslange schorsing. De wortelbroeken hadden dit natuurlijk al vernomen via Slashdot, maar voor de musici en andere kunstenaars hiero doe ik het hier nog even over. Het
leest als een spannend jongensboek: na hardnekkige geruchten gaat een team van dertig internationale specialisten in alle geheim aan de slag. Daarbij wordt de disassembler niet geschuwd. Na een jaar
spitten is het bewijs compleet. En dat varieert van het lenen
van tabellen en methodes, tot het regelrecht rippen van stukken (open source) code. Hoe ernstig is dit nu? Het is natuurlijk onsportief, en strijdig met de reglementen en
statuten. Behalve de geldprijzen heeft ie er zakelijk ook nog financieel geld mee verdiend. Met andermans werk. Alle algoritmes zijn bekend, en de code is (voor een schaakprogrammeur) dus vrij
triviaal. Maar het is moeilijk om het in een keer foutloos in te kloppen. En dat moet je dus wel zelf doen.Een beetje achtergrond.
De eigenlijke methoden en technieken in het computerschaak zijn min of meer publiek domein; en alle schaakengines zullen deze toepassen op de een of andere manier. De basis van een engine is vrijwel altijd alpha-beta-search of een variant daarop. De kern van alpha-beta vormt de evaluatiefunctie. Die probeert een kwantificatie te maken van hoeveel een bepaalde stelling waard is. In het simpelste geval is dat de materiaalwaarde (pion=1, dame=8, koning is oneindig), maar er zijn nog bonuspunten te behalen voor mobiliteit en positie, of strafpunten voor bijvoorbeeld dubbelpionnen. Dat is allemaal prachtig te tunen. Die evaluatie is nodig omdat je de stelling niet veertig zetten diep kunt doorrekenen, daarvoor ontbreekt de rekenkracht. Vrijwel alle engines hebben ook een transpositietabel: een hashtable waarin resultaten van eerdere berekeningen opgeslagen worden.
Geavanceerdere schaakengines hebben ook nog een openingsboek en een eindspelboek aan boord. Dat is handig, omdat je de evaluatie van de openingszetten al precalculated vast hebt liggen, en zodra je in het eindspelenboek terecht komt ligt de evaluatie al vast (winst,verlies of remise). Je hoeft dus minder diep te rekenen.
Het netto effect van het toevoegen van openings en eindspelenboeken is trouwens dat het tunen van de evaluatiefunctie minder belangrijk wordt.
De eigenlijke methoden en technieken in het computerschaak zijn min of meer publiek domein; en alle schaakengines zullen deze toepassen op de een of andere manier. De basis van een engine is vrijwel altijd alpha-beta-search of een variant daarop. De kern van alpha-beta vormt de evaluatiefunctie. Die probeert een kwantificatie te maken van hoeveel een bepaalde stelling waard is. In het simpelste geval is dat de materiaalwaarde (pion=1, dame=8, koning is oneindig), maar er zijn nog bonuspunten te behalen voor mobiliteit en positie, of strafpunten voor bijvoorbeeld dubbelpionnen. Dat is allemaal prachtig te tunen. Die evaluatie is nodig omdat je de stelling niet veertig zetten diep kunt doorrekenen, daarvoor ontbreekt de rekenkracht. Vrijwel alle engines hebben ook een transpositietabel: een hashtable waarin resultaten van eerdere berekeningen opgeslagen worden.
Geavanceerdere schaakengines hebben ook nog een openingsboek en een eindspelboek aan boord. Dat is handig, omdat je de evaluatie van de openingszetten al precalculated vast hebt liggen, en zodra je in het eindspelenboek terecht komt ligt de evaluatie al vast (winst,verlies of remise). Je hoeft dus minder diep te rekenen.
Het netto effect van het toevoegen van openings en eindspelenboeken is trouwens dat het tunen van de evaluatiefunctie minder belangrijk wordt.
Kret-209: Als je verlamd bent is hij moeilijk in te koppen.
Nicko: Misschien had ook deze
meneer de foto gezien van he...
B-sting: Wat ik dus ook al riep
toen iemand de YouTube-versi...
Parallaxhhh: Inderdaad, dat is
'handhaving'. Als ik ooit van die...
Parallaxhhh: Volgens mij is dat
niet eens politie.

Weerman Rapsel: Werken in de cloud. Ik denk dat dit zinnetje
wel ...
Roel Zwaar: Mensen die veel stopwoordjes en tussenwerpselen
geb...
Meneer van Dale: 'Basically' tijdens presentaties die in het
Engels ...
Geenszins Joling: Ook niet naar Zweinstein?
Geenszins Joling: Was 'het zijn van je ding' al voorbij
gekomen? Of ...

Totaal aantal: 1939
Waaronder de leden:
Rattenkoorts, Jagen is n Wildplasser, beroepsweig Stefizzle cspr, drukt van zich af Timbo h00tster WitPaard Het neefje van Tofik J-One Der Webmeister Tha KinGuiN- arrogante R Graaftak, dhimmi gronk N=1 TheStef Meneer van Dale Brinkmeister Susan Heklicht Pikey2ndViolin4ever Weerman Rapsel Ahmed baby! vivagijntje1994 koffieverkeerd pedigree Doe eens raketman
Rattenkoorts, Jagen is n Wildplasser, beroepsweig Stefizzle cspr, drukt van zich af Timbo h00tster WitPaard Het neefje van Tofik J-One Der Webmeister Tha KinGuiN- arrogante R Graaftak, dhimmi gronk N=1 TheStef Meneer van Dale Brinkmeister Susan Heklicht Pikey2ndViolin4ever Weerman Rapsel Ahmed baby! vivagijntje1994 koffieverkeerd pedigree Doe eens raketman















1) Ja.
2) Nee
Hij heeft in wezen twee wetten overschreden: (1) de toernooireglementen, die vereisen dat het een origineel werk is, en dat alle auteurs credit krijgen (2) de (open-source) licenties van crafty en fruit, die copieren en wijzigen toestaan, mits het open-source blijft, credits gegeven worden, en er geen sprake van geldelijk gewin is.
Ik heb in het vonnis nergens iets kunnen vinden over openingsboeken. Misschien valt dat bij een goede evaluatie allemaal wel binen de search-horizon van ~10 ply? Hij heeft trouwens wel meerdere evaluatieconstanten-tabellen, geschakeld door de fase van het spel. (het aantal stukken dat er nog op het bord is)
/strategie /loop
Ik heb even nagezocht: zowel crafty als fruit blijken een openingsboek te hebben. Waarom ze die niet geverifieerd hebben? Misschien dat AB-searcht en evaluatie het makkelijkt te vinden zij: bij een profile springen ze er uit.
Maar het blijft een monnikenwerk om eea boven tafel te krijgen.
/Reetmodus
#ifndef __HCI_CORE_H
#define __HCI_CORE_H
#include
/* HCI upper protocols */
#define HCI_PROTO_L2CAP 0
#define HCI_PROTO_SCO 1
/* HCI Core structures */
struct inquiry_data {
bdaddr_t bdaddr;
__u8 pscan_rep_mode;
__u8 pscan_period_mode;
__u8 pscan_mode;
__u8 dev_class[3];
__le16 clock_offset;
__s8 rssi;
__u8 ssp_mode;
};
Weet je zeker dat die die _u8 dev_class[3] geen [2] moet zijn?
Toch vraag ik mij het volgende af. Je kopieert de code van programma X en Y en vervolgens wint jouw programma keer op keer van zowel X als Y: The 1st places and World Computer Chess Champion titles awarded to the program Rybka in the 2007, 2008, 2009 and 2010 WCCCs are hereby annulled,.
Dan moet je m.i. toch iets significants verschillend toegevoegd hebben - anders gedragen die algorithmes zich niet meetbaar verschillend.
Of speelden X en Y niet (meer) mee? Waarom niet? Waren ze niet goed genoeg? (Wat de vraag over waarom Rybka dan wel alleen maar interessanter maakt).
Hij heeft het programma gewoon goed getuned, misschien wel mbv bestaande prof-partijen. Hier wordt je wegwijs gemaakt in de zieleroerselen van een tunende schaakprogrammeur.
De meeste diffs in het verslag hebben trouwens betrekking op Rybka-1.0. Dat was kennelijk een regelrechte rip-off, met wat obfuscatie. Of ie daarna nog iets substantieels heeft toegevoegd is mij onduidelijk. Da afstand tussen Rybka en de concurrentie is 100-150 ELO-punten, en dat vind ik veel voor alleen een beetje tunen. ELO rating is aan de bovenkant van het spectrum weinig betrouwbaar, omdat er daar minder tegenstanders zijn. Misschien dat je met wat extra corner cases net voldoende kunt winnen, kweeniet.
Dat dus. Met name omdat je alleen maar in rating kunt stijgen als je wint van een spelert met een hogere ranking. En de hoeveelheid vooruitgang díe je dan boekt schaalt omgekeerd evenredig met de hoogte van je eigen ranking. Het is een beetje als met versnellen tot de lichtsnelheid: hoe dichter je er bij komt hoe onevenredig meer energie je er in moet stoppen om er nóg dichter bij te komen.
Maar het kan goed dat ie ook nog andere dingen heeft geoptimaliseerd hier en daar een cache-prefetch, of een hogere locality-of-reference kan wel 10% meer Nps winst opleveren. Een andere CPU slurpert is trouwens de move-generator; misschien dat daar ook nog iets te besparen valt. (ik ben de move-generator nauwelijks tegengekomen in de verslagen).
En nog een andere mogelijkheid is verbeterd parallelisme.
Men heeft doorgaans de neiging de hashtables na iedere zet te ruimen, omdat de alpha-beta estimates afhangen van de startpositie, en de boekhouding heel tricky wordt (het resico is dat er bij hergebruik teveel gepruned wordt, en er dus varianten verworpen worden). Maar als het lukt levert het bijna 1+1 ply winst op, goed voor 100 ELO.
*wortelbroek in de wasmachine doet*