Page 2 of 4

Re: I Got youy, Norman Brando

Posted: Thu Dec 28, 2017 1:50 pm
by Michael Sherwin
BrendanJNorman wrote:
Michael Sherwin wrote:
Michael Sherwin wrote:
BrendanJNorman wrote:
Michael Sherwin wrote:
BrendanJNorman wrote:
fern wrote:I think I have caught at least ONE of the keys of your manipulation of Rodent for your Tal version.
You give the program very optimistic score in position that when played by me with other engines only produce indifferent scores. So, with that optimistic scores, you push the program to follow suit in certain lines even if the supposed advantage is just a supposition, a phantom, BUT doing so is a way to perhaps discover certain chances. Beyond that, I am sure you have made some other things too.

Fern
I don't know... :lol:

I simply used the UCI options that Pawel gave us in Rodent, tweaked them in accordance with how I understood Tal's playing style to be...

I then tested it on key positions from Tal's games - especially his most speculative sacrifices - and adjusted accordingly until there was mostly agreement.

I hope you enjoy the misery OpenTal gives us...I've lost countless times against his "bullshit" sacrifices too. :lol:

Sometimes, as Pawel has mentioned, he will sacrifice something...and then make a quiet move to remind you that you can't do anything...later he will get bored and kill you. :?
It would be interesting to train RomiChess against these engines a few thousand games and see if Romi will incorporate this style or what antidotes Romi might come up with. Just a thought.
Would definitely be interesting.

I have a couple questions for you, Mike.

1. Would you be able to create a version of Romi which we can tweak the settings in UCI options? I'd love to make it even more positional!

2. Did you see the beautiful win against Alfil Romi achieved? I posted it in my positional engines thread.
1. Romi is winboard because winboard supports learning with the result command. UCI did not have a result command ten years ago. Has that changed? Given that I have been giving some thought to how a learning engine can skirt around the UCI protocol's interference of engine freedom to learn. With SF in mind (without really knowing very much about SF or UCI) I imagine SF could store the game as it happens in an empty game file. Then on start up or new game SF could look at the game file and if not empty could then incorporate the game into its learn file. As far as Romi and UCI options I do not know if a Winboard/UCI hybrid protocol is possible or not.

2. No I have not seen that game. Was it just Romi or was it Romi+RL? I will take a look. :D
I had a hard time pulling up the game. The pgn tag seems confused. It was only after I clicked on the 0-1 selection that the game came up. It was not as clean as I would have liked but nonetheless it is typical of Romi's games. The way that white's dark squared bishop was made useless reminds me of the A0/SF match. lol
I wasn't as impressed by the trapped bishop, as by the knight maneuvering around to blockade on d6 (Na6-c7-e8-d6!). And then angling to reach a position with that knight against white's shitty bishop (Bb7-c8-f5-d3-c4 swapping light squared bishops).

If you've studied Nimzowistch's work, this type of positional "planning" is very impressive coming from an engine.
Definitely agreed. I used a lot of if type statements in the eval to achieve that kind of planning. :D Sam Hamilton once said, 'RomiChess and its dancing knights'.

Re: I Got youy, Norman Brando

Posted: Thu Dec 28, 2017 3:45 pm
by Michael Sherwin
Ovyron wrote:
Michael Sherwin wrote:It would be interesting to train RomiChess against these engines a few thousand games and see if Romi will incorporate this style or what antidotes Romi might come up with.
Is that necessary? Or can one just play thousands of games between those engines to produce a big pgn and then make Romi learn from it?
I started a training session of 2,000 total games between RomiChessP3n1, RomiChessP3n2 and Opental at 40/2 repeating. 40/2 should be roughly the same as the CCRL 40/4 standard on my computer. I will send the learn file to whomever ask for it when the training session is finished. It is from the initial opening position. I'm relying on the Opental internal opening book to provide some variance to the openings?

Re: I Got youy, Norman Brando

Posted: Thu Dec 28, 2017 3:47 pm
by BrendanJNorman
Michael Sherwin wrote:
Ovyron wrote:
Michael Sherwin wrote:It would be interesting to train RomiChess against these engines a few thousand games and see if Romi will incorporate this style or what antidotes Romi might come up with.
Is that necessary? Or can one just play thousands of games between those engines to produce a big pgn and then make Romi learn from it?
I started a training session of 2,000 total games between RomiChessP3n1, RomiChessP3n2 and Opental at 40/2 repeating. 40/2 should be roughly the same as the CCRL 40/4 standard on my computer. I will send the learn file to whomever ask for it when the training session is finished. It is from the initial opening position. I'm relying on the Opental internal opening book to provide some variance to the openings?
Please do share the results (and the learn file) with us Mike - sounds very interesting.

Re: I Got youy, Norman Brando

Posted: Fri Dec 29, 2017 9:53 am
by Ovyron
Michael Sherwin wrote:While Romi does benefit from pgn files of other engines or humans it is weak compared to Romi experiencing the games as one of the contestants and guiding those games with her accumulated experience. In short Romi benefits more from discovering what is right for it and no so much what is right for others. But one can certainly start with a merged pgn file and letting Romi learn from that point.
Well, I tried! But the Shredder GUI doesn't seem to send a game result for Winboard engines, and in ChessPartner's Engine Research Tool, Romi doesn't obey "average time per move" or "fixed time per move", and when I tried a 5 minute game it lost on time :shock:

How can one merge a PGN file into Romi's learning? The readme.txt doesn't mention this, and typing help on the console doesn't bring anything related.

Re: I Got youy, Norman Brando

Posted: Fri Dec 29, 2017 2:12 pm
by Michael Sherwin
Ovyron wrote:
Michael Sherwin wrote:While Romi does benefit from pgn files of other engines or humans it is weak compared to Romi experiencing the games as one of the contestants and guiding those games with her accumulated experience. In short Romi benefits more from discovering what is right for it and no so much what is right for others. But one can certainly start with a merged pgn file and letting Romi learn from that point.
Well, I tried! But the Shredder GUI doesn't seem to send a game result for Winboard engines, and in ChessPartner's Engine Research Tool, Romi doesn't obey "average time per move" or "fixed time per move", and when I tried a 5 minute game it lost on time :shock:

How can one merge a PGN file into Romi's learning? The readme.txt doesn't mention this, and typing help on the console doesn't bring anything related.
I only have Arena and Winboard and RomiChess works fine in them. Graham Banks uses another and Romi works there also. I have no idea what other people use for an interface. I'm sorry that your prefered GUIs do not work with RomiChess. :cry:

I must do better next time to recreate the detailed readme that once came with RomiChess. Two back to back hard drive failures and years of sickness meant that it was all I could do starting with P3k was to get the exe's sent out.

From the command line start RomiChess. It will look for the learn.dat file and if it does not find one then RomiChess creates one. Then type merge some.pgn and hit enter. The pgn must be in the same folder as RomiChess. Do this for as many pgn files as you like. The largest pgn file that I ever loaded was 1.5 million games and it created an 800 MB file. You also have the option of being in Book 1(default) or Book 2 mode. Just type book 1 or book 2. Book 1 type is mutable and Book 2 type is immutable. And there are the commands book_on, book_off, learn_on and learn_off. You can load as many book 2 type pgn's as you like that can never be altered by Romi's learning then switch back to book 1 and load as many book 1 type pgn's as you like. You must do book 2 first as once a record is set to immutable it cannot be made mutable. Alway type quit to flush the data buffers. IIRC and I'm not sure that I do after all these years book 2 alternative moves are purely selected randomly. Before I got sick there was more that I intended to do with the learn file. I'm not sure that I am up to the task anymore. I'll need to relearn my code first. Sorry for the ramble. My best hope for RomiChess now is that it might be an interesting example for other engine authors to explore. Too bad Marco didn't decide to improve RomiChess instead of Glaurung, :lol: .

Re: I Got youy, Norman Brando

Posted: Fri Dec 29, 2017 2:54 pm
by Ovyron
Thanks, got it!
Michael Sherwin wrote:The largest pgn file that I ever loaded was 1.5 million games and it created an 800 MB file.
Well, the other day I was feeling greedy and downloaded Ed Schröder's 2.2 Million game database (that day I also downloaded all the bin books I could find, including Dann Corbit's 1.7GB book, I must have gone insane), I suddenly feel the urge to feed all of it to Romi.

I also wonder what would happen if I fed all the games that the top rating lists have played between engines, I may feed Romi so many games that her brain would explode :twisted:
I'm sorry that your prefered GUIs do not work with RomiChess. :cry:
Well, they work, they just don't send the result data to Romi...

So what happens if instead of relying on the result command, every time Romi plays a game I record it as PGN and merge it to the learn file? Would that be workable or would it be fundamentally different form getting the result data?

Re: I Got youy, Norman Brando

Posted: Fri Dec 29, 2017 3:11 pm
by Michael Sherwin
Ovyron wrote:Thanks, got it!
Michael Sherwin wrote:The largest pgn file that I ever loaded was 1.5 million games and it created an 800 MB file.
Well, the other day I was feeling greedy and downloaded Ed Schröder's 2.2 Million game database (that day I also downloaded all the bin books I could find, including Dann Corbit's 1.7GB book, I must have gone insane), I suddenly feel the urge to feed all of it to Romi.

I also wonder what would happen if I fed all the games that the top rating lists have played between engines, I may feed Romi so many games that her brain would explode :twisted:
I'm sorry that your prefered GUIs do not work with RomiChess. :cry:
Well, they work, they just don't send the result data to Romi...

So what happens if instead of relying on the result command, every time Romi plays a game I record it as PGN and merge it to the learn file? Would that be workable or would it be fundamentally different form getting the result data?
Interesting question! It would work but to know if it were optimal I would have to study my code. I will get back to you on that. It sounds tedious though. Maybe you can do it every 100 or 1000 games.

Re: I Got youy, Norman Brando

Posted: Fri Dec 29, 2017 6:24 pm
by Michael Sherwin
Michael Sherwin wrote:
Ovyron wrote:Thanks, got it!
Michael Sherwin wrote:The largest pgn file that I ever loaded was 1.5 million games and it created an 800 MB file.
Well, the other day I was feeling greedy and downloaded Ed Schröder's 2.2 Million game database (that day I also downloaded all the bin books I could find, including Dann Corbit's 1.7GB book, I must have gone insane), I suddenly feel the urge to feed all of it to Romi.

I also wonder what would happen if I fed all the games that the top rating lists have played between engines, I may feed Romi so many games that her brain would explode :twisted:
I'm sorry that your prefered GUIs do not work with RomiChess. :cry:
Well, they work, they just don't send the result data to Romi...

So what happens if instead of relying on the result command, every time Romi plays a game I record it as PGN and merge it to the learn file? Would that be workable or would it be fundamentally different form getting the result data?
Interesting question! It would work but to know if it were optimal I would have to study my code. I will get back to you on that. It sounds tedious though. Maybe you can do it every 100 or 1000 games.
I looked into it. And yes my code converts a pgn game to the internal format and learns it exactly like Romi would learn one of its own games. So loading Romi's games from a pgn file has the same result! :D

Re: I Got youy, Norman Brando

Posted: Sat Dec 30, 2017 2:21 am
by Michael Sherwin
BrendanJNorman wrote:
Michael Sherwin wrote:
Ovyron wrote:
Michael Sherwin wrote:It would be interesting to train RomiChess against these engines a few thousand games and see if Romi will incorporate this style or what antidotes Romi might come up with.
Is that necessary? Or can one just play thousands of games between those engines to produce a big pgn and then make Romi learn from it?
I started a training session of 2,000 total games between RomiChessP3n1, RomiChessP3n2 and Opental at 40/2 repeating. 40/2 should be roughly the same as the CCRL 40/4 standard on my computer. I will send the learn file to whomever ask for it when the training session is finished. It is from the initial opening position. I'm relying on the Opental internal opening book to provide some variance to the openings?
Please do share the results (and the learn file) with us Mike - sounds very interesting.
Just an update. Actually 2,000 games was a typo. It is 3,000 games. I did not realize that 40/2 would take this long. However, 366 games have been played. RomiChessP3n1 was -200 elo against Opental but now has climbed to -182. RomiChessP3n2 must have stumbled upon some good lines early because it is only -72 elo against Opental. There are 2,634 games to go!

Re: I Got youy, Norman Brando

Posted: Sat Dec 30, 2017 4:30 am
by Ovyron
Michael Sherwin wrote:Interesting question! It would work but to know if it were optimal I would have to study my code. I will get back to you on that. It sounds tedious though. Maybe you can do it every 100 or 1000 games.
I looked into it. And yes my code converts a pgn game to the internal format and learns it exactly like Romi would learn one of its own games. So loading Romi's games from a pgn file has the same result! :D[/quote]

Great news! So that's what I'll be doing :)

As for this being tedious, back in 2008 I was applying Monkey See Monkey Do, and manual reinforcement learning with opponent modeling (play the losing move if it defeated this opponent before) for my engine tournaments before each game, called "manual book learning", so having to merge a PGN to the learn file after each game is nothing :)