New Houdini

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

mjlef
Posts: 1494
Joined: Thu Mar 30, 2006 2:08 pm

Re: re: win adjudication/Re: New Houdini

Post by mjlef »

Houdini wrote:
mjlef wrote:Actually, Komodo's attempt does not modify the value of its own pieces. It does something else to discourage early piece captures and avoid draws (with a positive contempt), or exchange pieces and seek draws (with a negative contempt). But I can see how people might think it modifies piece scores.
Nor does Houdini.
There is a difference between the simple description of the principle I gave ("my pieces are better than yours") and the actual implementation in Houdini which is - of course - not done by modifying the piece values, but by correcting the score based on the game phase.

I have noticed your tendency to describe Komodo's working in an obscure way ("it does something different"), so as to make it appear more complex than it actually is...
And I cannot find you giving any detailed description about how anything in Houdini works (although others have written about them). I assume for the same reason as me...to not give out trade secrets that have not been discovered yet by others.

Some ideas are amazingly simple, and a few words will give them away completely. Part of Komodo's contempt is simple. Other parts quite complex and not easy to describe in even several paragraphs. Although I do not give detailed specifics of how Komodo works, we do describe the effect of the changes in our documentation so user know what they will do. The 10.1 documentation about Contempt says:

"A positive Contempt is used by the computer’s evaluation to discourage (or encourage if negative) piece trades, blocked pawn structures, and repetition draws early in the game."

I am more willing to give out specific ideas if I came up with them myself. I have posted some on talkchess in the past and even shared some with the Stockfish programmers. But Komodo Contempt was a joint work with ideas of mine and Larry, so I have no right to give them out freely.

Mark
User avatar
Laskos
Posts: 10948
Joined: Wed Jul 26, 2006 10:21 pm
Full name: Kai Laskos

Re: re: win adjudication/Re: New Houdini

Post by Laskos »

mjlef wrote:
Houdini wrote:
mjlef wrote:Actually, Komodo's attempt does not modify the value of its own pieces. It does something else to discourage early piece captures and avoid draws (with a positive contempt), or exchange pieces and seek draws (with a negative contempt). But I can see how people might think it modifies piece scores.
Nor does Houdini.
There is a difference between the simple description of the principle I gave ("my pieces are better than yours") and the actual implementation in Houdini which is - of course - not done by modifying the piece values, but by correcting the score based on the game phase.

I have noticed your tendency to describe Komodo's working in an obscure way ("it does something different"), so as to make it appear more complex than it actually is...
And I cannot find you giving any detailed description about how anything in Houdini works (although others have written about them). I assume for the same reason as me...to not give out trade secrets that have not been discovered yet by others.

Some ideas are amazingly simple, and a few words will give them away completely. Part of Komodo's contempt is simple. Other parts quite complex and not easy to describe in even several paragraphs. Although I do not give detailed specifics of how Komodo works, we do describe the effect of the changes in our documentation so user know what they will do. The 10.1 documentation about Contempt says:

"A positive Contempt is used by the computer’s evaluation to discourage (or encourage if negative) piece trades, blocked pawn structures, and repetition draws early in the game."

I am more willing to give out specific ideas if I came up with them myself. I have posted some on talkchess in the past and even shared some with the Stockfish programmers. But Komodo Contempt was a joint work with ideas of mine and Larry, so I have no right to give them out freely.

Mark
What Contempt Komodo uses in TCEC now? Komodo most probably lost half-a-point in a game against Laser by allowing 3-fold rep. Every half-point is important now, and I guess Contempt, if present, didn't quite do its job. 30...Ng6 is allowing 3-fold rep. Komodo with Contempt=0 in MultiPV=2 shows that a small Contempt could have avoided the early draw:

[pgn][Event "?"]
[Site "?"]
[Date "2016.10.14"]
[Round "12"]
[White "Laser"]
[Black "Komodo"]
[Result "1/2-1/2"]
[ECO "B50"]
[Opening "Sicilian"]
[PlyCount "234"]
[TimeControl "2/move"]

1.e4
{book}
1...c5
{book}
2.Nf3
{book}
2...d6
{book}
3.d4
{book}
3...cxd4
{book}
4.Bb5+
{book}
4...Nd7
{book}
5.Qxd4
{book}
5...e5
{book}
6.Qe3
{book}
6...Be7
{book}
7.a4
{book}
7...a6
{book}
8.Bc4
{book}
8...Ngf6
{book}
9.O-O
{book}
9...O-O
{book}
10.Nc3
{book}
10...Nc5
{book}
11.a5
{book}
11...Qc7
{book}
12.b3
{book}
12...Be6
{book}
13.Nd2
{book}
13...Rfe8
{book}
14.Bb2
{book}
14...Rad8
{book}
15.Rfe1
{book}
15...Qc6
{book}
16.Bxe6
{book}
16...fxe6
{book}
17.Nc4
{book}
17...Ncd7
{book}
18.Qf3
{book}
18...Nf8
{book}
19.Re2
{book}
19...Ng6
{book}
20.Rae1
{book}
20...Rf8
{book}
21.Qe3
{book}
21...Nf4
{book}
22.Rd2
{book}
22...Ng4
{book}
23.Qg3
{book}
23...h5
{book}
24.Ba3
{book}
24...Ng6
{book}
25.Qh3
{book}
25...Bg5
{book}
26.Red1
{book}
26...Bxd2
{book}
27.Rxd2
{book}
27...Nf4
{book}
28.Qf3
{book}
28...Ng6
{book}
29.Qh3
{book}
29...Nf4
{book}
30.Qf3
{book}
30...Ng6
{book}
31.Qh1

{3-fold
1/2-1/2}[/pgn]



[D]3r1rk1/1p4p1/p1qpp3/P3p2p/2N1Pnn1/BPN2Q2/2PR1PPP/6K1 b - -[/D]


Komodo 10.1 Contempt=0
-----
29 1:12 0.00 30...Rf6 31.h3 Nh6 32.Bxd6 Nf7 33.Bxe5 Rxd2 34.Bxf6 Rxc2 35.Qd1 Rxf2 36.Kxf2 gxf6 37.Qd4 Ne5 38.Nxe5 fxe5 39.Qb6 Qxc3 40.Qd8+ Kg7 41.Qe7+ Kg6 42.Qe8+ Kh7 43.Qe7+ Kh6 (515.547.999) 7094
29 1:12 0.00 30...Ng6 31.Qh3 (515.548.339) 7094
-----
30 1:39 0.00 30...Rf6 31.h3 Nh6 32.Bxd6 Nf7 33.Bxe5 Rxd2 34.Bxf6 Rxc2 35.Qd1 Rxf2 36.Kxf2 gxf6 37.Qd4 Ne5 38.Nxe5 fxe5 39.Qb6 Qxc3 40.Qd8+ Kg7 41.Qe7+ Kg6 42.Qe8+ Kh7 43.Qe7+ Kh6 (706.148.663) 7094
30 1:39 0.00 30...Ng6 31.Qh3 (706.149.033) 7094
-----
31 2:18 0.00 30...Rf6 31.h3 Nh6 32.Bxd6 Nf7 33.Bxe5 Rxd2 34.Bxf6 Rxc2 35.Qd1 Rxf2 36.Kxf2 gxf6 37.Qd4 Ne5 38.Nxe5 fxe5 39.Qb6 Qxc3 40.Qd8+ Kg7 41.Qe7+ Kg6 42.Qe8+ Kh7 43.Qe7+ Kh6 (987.058.746) 7113
31 2:18 0.00 30...Ng6 31.Qh3 (987.059.099) 7113
-----
32 2:54 0.00 30...Rf6 31.h3 Nh6 32.Bxd6 Nf7 33.Bxe5 Rxd2 34.Bxf6 Rxc2 35.Qd1 Rxf2 36.Kxf2 gxf6 37.Qd4 Ne5 38.Nxe5 fxe5 39.Qb6 Qxc3 40.Qd8+ Kg7 41.Qe7+ Kg6 42.Qe8+ Kh7 43.Qe7+ Kh6 (1.240.190.916) 7120
32 2:54 0.00 30...Ng6 31.Qh3 (1.240.191.117) 7120
-----
33 5:11 0.00 30...Ng6 31.Qh3 (2.247.914.861) 7210
33 5:11 +0.11 30...Rf6 31.h3 Nh6 32.Bxd6 Nf7 33.Bxe5 Rxd2 34.Bxf6 Rxc2 35.Qg3 g5 36.Bxg5 Rxc3 37.Qxf4 Rxb3 38.Nd2 Rd3 39.Nf3 e5 40.Qf5 Rd6 41.Be3 Rf6 42.Qxh5 Qxe4 43.Nh4 Nd6 (2.247.915.263) 7210
-----
34 8:56 0.00 30...Ng6 31.Qh3 (3.908.876.354) 7284
34 8:56 +0.16 30...Rf6 31.h3 Nh6 32.Bxd6 Nf7 33.Bxe5 Rxd2 34.Bxf6 Rxc2 35.Qg3 g5 36.Bxg5 Rxc3 37.Qxf4 Rxb3 38.Ne5 Nxe5 39.Qxe5 Rb5 40.Qg3 Qd7 41.Bf6+ Kh7 42.Qb8 Kg6 43.Qf4 Kh7 (3.908.876.610) 7284
-----
35 26:37 0.00 30...Ng6 31.Qh3 (11.406.287.005) 7141
35 26:37 0.00 30...Qc8 31.Bxd6 Rxd6 32.Nxd6 Qc5 33.Nd1 Qxa5 34.Nc4 Qc7 35.Qc3 Qc6 36.Nce3 Qxe4 37.f3 Nxe3 38.Nxe3 Qd4 39.Rxd4 Ne2+ 40.Kf2 Nxc3 41.Rd3 Nb5 42.Rd7 Rf7 43.Rd8+ Rf8 (11.406.287.226) 7141
shrapnel
Posts: 1339
Joined: Fri Nov 02, 2012 9:43 am
Location: New Delhi, India

Re: re: win adjudication/Re: New Houdini

Post by shrapnel »

Laskos wrote:Contempt, if present, didn't quite do its job.
Yes, I too have noticed that Komodo doesn't really handle Contempt very well...like giving a Sledgehammer to a baby !
Just weakens the Engine with nothing much to show for it.
i7 5960X @ 4.1 Ghz, 64 GB G.Skill RipJaws RAM, Twin Asus ROG Strix OC 11 GB Geforce 2080 Tis
Lyudmil Tsvetkov
Posts: 6052
Joined: Tue Jun 12, 2012 12:41 pm

Re: re: win adjudication/Re: New Houdini

Post by Lyudmil Tsvetkov »

Poor Drawfish just in 3rd, way behind...

One of the reasons I would sometimes hate using SF as an analysis engine is that it sees too much draws, even in completely unbalanced positions.

I guess much higher eval granularity is a nice way to simultaneously pick up the best move and avoid unwelcome early draws.
mjlef
Posts: 1494
Joined: Thu Mar 30, 2006 2:08 pm

Re: re: win adjudication/Re: New Houdini

Post by mjlef »

In the TCEC Rapids, Contempt is set to the default of 10.
mjlef
Posts: 1494
Joined: Thu Mar 30, 2006 2:08 pm

Re: re: win adjudication/Re: New Houdini

Post by mjlef »

My theory of the strong engines having too many draws is that they simply outsearch most opponents, and they assume the opponent's will see the draw too. The search in chess engines always take the "safest" move sequence that they find. Komodo's Contempt helps prevent some draws (and also could lose some games against a strong opponent). If chess engines knew their opponent's names, they could intelligently select an appropriate contempt (like humans do over the board). Unfortunately, sending opponent's names to the engines is not supported here (or in many other GUIs, although there is a UCI command for that).
S.Taylor
Posts: 8514
Joined: Thu Mar 09, 2006 3:25 am
Location: Jerusalem Israel

Re: re: win adjudication/Re: New Houdini

Post by S.Taylor »

mjlef wrote:My theory of the strong engines having too many draws is that they simply outsearch most opponents, and they assume the opponent's will see the draw too. The search in chess engines always take the "safest" move sequence that they find. Komodo's Contempt helps prevent some draws (and also could lose some games against a strong opponent). If chess engines knew their opponent's names, they could intelligently select an appropriate contempt (like humans do over the board). Unfortunately, sending opponent's names to the engines is not supported here (or in many other GUIs, although there is a UCI command for that).
It's very nice to know that an objectively best move is being played.
Milos
Posts: 4190
Joined: Wed Nov 25, 2009 1:47 am

Re: re: win adjudication/Re: New Houdini

Post by Milos »

S.Taylor wrote:
mjlef wrote:My theory of the strong engines having too many draws is that they simply outsearch most opponents, and they assume the opponent's will see the draw too. The search in chess engines always take the "safest" move sequence that they find. Komodo's Contempt helps prevent some draws (and also could lose some games against a strong opponent). If chess engines knew their opponent's names, they could intelligently select an appropriate contempt (like humans do over the board). Unfortunately, sending opponent's names to the engines is not supported here (or in many other GUIs, although there is a UCI command for that).
It's very nice to know that an objectively best move is being played.
I'd argue against it. Problem with current chess programs is that they have almost no measure of accuracy of their eval, i.e. when you engine gives you the score the only measure of its accuracy is reached depth.
So in case you have a 3-fold, score 0.00 is very accurate, almost certain. However, you might have a lot of moves where score is like -0.05 but uncertainty in move horizon of lets say 10 plies is like 0.2, i.e. if you let you engine search 10 plies more the score might have been 0.15 instead. So what would you say is a better move, one that is a certain draw, or one which now has -0.05 score, but has 50% chance to have >0.15 score in 10 plies???
User avatar
hgm
Posts: 27808
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: re: win adjudication/Re: New Houdini

Post by hgm »

The whole idea of contempt is that you want to play objectively worse moves because the stupidity of the opponent is going to make them good. No amount of stupidity of the opponent can make a rep-draw better for you.
voyagerOne
Posts: 154
Joined: Tue May 17, 2011 8:12 pm

Re: re: win adjudication/Re: New Houdini

Post by voyagerOne »

mjlef wrote:My theory of the strong engines having too many draws is that they simply outsearch most opponents, and they assume the opponent's will see the draw too. The search in chess engines always take the "safest" move sequence that they find. Komodo's Contempt helps prevent some draws (and also could lose some games against a strong opponent). If chess engines knew their opponent's names, they could intelligently select an appropriate contempt (like humans do over the board). Unfortunately, sending opponent's names to the engines is not supported here (or in many other GUIs, although there is a UCI command for that).
This is what happen to Chinook.
Checker engine/database that solved checkers.

It became extremely easy to draw against it...since if there are no win moves it just picks a draw move...and the draw move leads to an easy path to draw against the machine.

They had to tweak it so when it picks a draw move...it leads to a more complex path.