Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Errata #1

Open
asdfjkl opened this issue Sep 28, 2021 · 64 comments
Open

Errata #1

asdfjkl opened this issue Sep 28, 2021 · 64 comments

Comments

@asdfjkl
Copy link
Owner

asdfjkl commented Sep 28, 2021

If you spot mistakes, please leave a note as a reply to this issue.

@asdfjkl
Copy link
Owner Author

asdfjkl commented Sep 28, 2021

[DONE] page 54: Figure 2.15: Baikinman, appylied sobel operator and thresholding -> applied

@asdfjkl
Copy link
Owner Author

asdfjkl commented Sep 28, 2021

[DONE] page 219: Figure 4.23: White to move. There is no reasonable alternative to Bb3 that any
chessplayer would play.. (double colon at the end)

@MSoszynski
Copy link

MSoszynski commented Sep 29, 2021

p7

[DONE] "This book is brief"

This book is a brief

[DONE] "romantic"

Romantic

"referring"

Referring

p8

[DONE] "a chess players perspective"

a chess player's perspective

[DONE] "44... Rd1"
This way to present Black-first moves isn't consistent throughout the book. Compare the very next line on the same page or "1....Bxd1?" on p119. Most books use 3 dots (without a space) not four.

p9

[DONE] "According to Hsiu"

According to Hsu

p11

[DONE] "and Ananad,"

and Anand,

p12

[DONE] "computer scientists perspective,"

computer scientist's perspective,

p13

[DONE] "Based these evaluations,"

Based on these evaluations,

p14

[DONE] "•find a number of candidate moves. Then for each of them sequentially
•calculate all subsequent positions and variation trees that result of those
candidate moves as deep as possible"

•find a number of candidate moves. Then for each of them sequentially...
•calculate all subsequent positions and variation trees that result from those
candidate moves as deep as possible

[DONE] "focus on one specific lines, then decide by instinct
instead by rational though"

focus on one specific line, then decide by instinct instead of by rational thought

p15

[DONE] "have computers plagued"

have plagued computers

[DONE] "to processes and judge"

to process and judge

p16

[DONE] "But how do become good player so good at chess?"

But how do good players become so good at chess?

I hope that's helpful.

Marek Soszynski

@derestup
Copy link

derestup commented Nov 13, 2021

page 31 dnet1/dw1 = ... = 1
page 32 ... create[s] a small bias.
page 49 ... a few lines [of] our simple ...
page 55 equation 2.8 [but your equations are not numbered!]
page 59 Figure 2.17: The third filter matrix of applied to the image of Baikinman [malformed caption]
page 61 ... we weigh[t] ...
page 69 ... medi[c]al ...
page 69 ... it's an[d] old joke ...
page 77 ... pawns on the seventh resp. first [second?] rank.
page 89 ... our we hit our ...
pages 96, 206, 228 silicon[e]
page 125 Another real achievement ... [malformed sentence]
page 127 ... under[s]tand ...
page 132 ... exemplary[ly] ...
page 147 ... lilkely ...
page 150 ... Blacks or White's ...
page 159 ... only if ... [will] the new network ...
page 162 not "Expect maybe ..." but "Except maybe ..."
page 175 player[']s
page 176 cons[e]quently
page 191 pro[g]ramming
page 192 ... state of the art [of]
page 217 under[s]tand

And thank you very much for the book!

@asdfjkl
Copy link
Owner Author

asdfjkl commented Nov 22, 2021

(all fixed in v1.2)

@jkrabbenbos
Copy link

Page 12, 14 Hendrik's = Hendriks' (Willie's surname is Hendriks, see also https://grammar.yourdictionary.com/punctuation/apostrophe-rules.html for more info on the use of the apostrophe)
Page 12 Hendrik = Hendriks
In the bibliography the name is written correct!

page 18 HexapwanZero = HexapawnZero

Very interesting and informative book on the use of neural nets in Computer Chess.

@asdfjkl
Copy link
Owner Author

asdfjkl commented Jan 2, 2022

page 256: instead we desire to select the index 0 only in about 10 percent of
all cases, index 0 in about 20 percent of all cases and index 2 in about 70 percent
of all cases

should read: index 0, ... index 1, ... index 2

@asdfjkl
Copy link
Owner Author

asdfjkl commented Jan 2, 2022

page 262: it’s that alpha-beta searcher[s]! will prevail
for chess.
help
humans becoming better chess players. -> become better...

@asdfjkl
Copy link
Owner Author

asdfjkl commented Jan 24, 2022

(all fixed in v1.3)

@d-kraft
Copy link

d-kraft commented Jan 31, 2022

page 71 line 3
instead of "the the"
write "take the"

@d-kraft
Copy link

d-kraft commented Feb 1, 2022

page 62 last line of paragraph three
I would prefer a comma instead of a hyphen after tensorflow, or -- but worse -- a dash (two hyphens in LaTeX)

@asdfjkl
Copy link
Owner Author

asdfjkl commented Feb 2, 2022

page 28: should be (0.95 − 0)^2 instead of (0.95 − 1)^2

@asdfjkl
Copy link
Owner Author

asdfjkl commented Feb 2, 2022

page 30: E_global should be E_total.
bias w_0 is not mentioned
page 36: we conclude its the first person

@asdfjkl
Copy link
Owner Author

asdfjkl commented Feb 2, 2022

page 79: of tactical threads. -> threats

@asdfjkl
Copy link
Owner Author

asdfjkl commented Feb 2, 2022

page 97: If you do not implement chess knowledge in the implementation function -> evaluation function

@asdfjkl
Copy link
Owner Author

asdfjkl commented Feb 2, 2022

page 99: 37.Be4 (space!)

@asdfjkl
Copy link
Owner Author

asdfjkl commented Feb 3, 2022

p148 In contrary, the rather universal gradient policy rein-
forcement learning is used to improve the SL policy network

@asdfjkl
Copy link
Owner Author

asdfjkl commented Feb 3, 2022

p212: agrees while also searching with around 7,500,000 nodes per
second and evaluates this at
.... despite black being a pawn up

p213: Let’s again check how
our zoo of engines evaluates that position from Black's point of view
evaluation function despite the raw processing power of the machine

p215: about a move he got the replay "Nah you just don’t play like that".

The idea to use neural networks to automatically construct neural networks -> construct evaluation functions
is not new.

p218:we are playing with an handicap of say

p226: It’s a very basic mate threat that most human -> There is a very basic....
p232: It will accepts
as input states of the board and output move probabilities that denote how good
a moves is resp.

@d-kraft
Copy link

d-kraft commented Feb 5, 2022

p. 65 par. 4 line 3

could be that

@d-kraft
Copy link

d-kraft commented Feb 5, 2022

p. 69 4th line above bottom

common themes

@d-kraft
Copy link

d-kraft commented Feb 5, 2022

p. 70 third line from bottom

all required network elements, there.

@d-kraft
Copy link

d-kraft commented Feb 5, 2022

p. 73 par. 3 line 2

none instead of noone? am not sure

@d-kraft
Copy link

d-kraft commented Feb 11, 2022

p. 96 line 2 and on many other places of the text

w.r.t. to
the to is redundant

@AlexisNizard
Copy link

AlexisNizard commented Feb 16, 2022

p. 155 ,the two formulas that give 1.2 and 1.0 as the result use wrong values (not the values used in Figure 4.8).

The first formula should be 0.6 * (sqrt(1+1)/2) = 0.42 = 0.5+0.42 = 0.92
And second should be 0.7 * (sqrt(1+1)/2) = 0.4 + 0.49 = 0.89 ,according to the values in Figure 4.8.

0.92 is still greater than 0.89 so the reasoning doesn't change
Also, is it possible to send you an email ? I would like to ask you a question about the subject (if you don't mind) but I don't know how to contact you.

@asdfjkl
Copy link
Owner Author

asdfjkl commented Feb 17, 2022

(all fixed up to here), #todo: release new pdf
@AlexisNizard : thx for spotting this. As for contact: I've added e-mail information in github
@d-kraft: thanks for your careful reading!

@jbscj
Copy link

jbscj commented Mar 8, 2022

P204 & P205
Formula 4.1 & Formula 4.2: It seems that the subscripts and superscripts of the terms in the first column should be swapped for consistency
P206 has 3 additional formulae within the text with the above problem
P207 & P208 has formulae 4.3 and 4.4 with the above problem
P209 b1 -> b_1

@shindavid
Copy link

Everywhere else, as far as I can tell, the "E" in the acronym NNUE stands for the word "efficiently" (example). But in this book, the word "effectively" is used.

@asdfjkl
Copy link
Owner Author

asdfjkl commented Jun 11, 2022

(all fixed in v1.5)

@asdfjkl
Copy link
Owner Author

asdfjkl commented Jul 5, 2022

page 185, "will be": "These games will naturally of very poor quality initially and it wi"

@asdfjkl
Copy link
Owner Author

asdfjkl commented Jul 5, 2022

p185: ... rethink it ... instead of ... summarize what they investigated and re-think of it

@asdfjkl
Copy link
Owner Author

asdfjkl commented Sep 28, 2022

p205... have think carefully should be have to think carefully

@asdfjkl
Copy link
Owner Author

asdfjkl commented Sep 28, 2022

p204 ... on rather low-end office computer -> on a rather ...

@asdfjkl
Copy link
Owner Author

asdfjkl commented Sep 28, 2022

p216: cite official-stockfish/Stockfish#2916

@asdfjkl
Copy link
Owner Author

asdfjkl commented Oct 3, 2022

p232: Hexapawn is a solved game,

@asdfjkl
Copy link
Owner Author

asdfjkl commented Oct 3, 2022

p219: the difference
is “only” 1.5 centipawns -> should be 1.5 pawns

@rodinhart
Copy link

Excellent book!

found in version 1.5:

page 24: I think it should be: w_0 = -10

page 31: I think the general rule of thumb for updating weights needs index i for the denominator:
w_i^' = w_i = \nu dE_total / dw_i

@asdfjkl
Copy link
Owner Author

asdfjkl commented Oct 20, 2022

p8: DeepBlue should be Deep Blue

@octopus-prime
Copy link

octopus-prime commented Dec 21, 2022

First of all: GREAT STUFF! Thank you very much!!

What about page 198 "enemy king on e8, own knight on c3 from 1 to 0" ?!

I am not sure, but

  • before move -> there was no piece on c3
  • after move -> the black king should see the white kinght on c3 too

So i would expect "enemy king on e8, own knight on c3 from 0 to 1"

Same for "own king on e8, enemy knight on c3 from 1 to 0" ?!

@dericktseng
Copy link

Thanks for this great resource! Went through Ch. 2 (Back-Propagation and Gradient Descent), and I think there might be an issue with the partial derivatives (p. 30)

It should be (for $j = 1, 2$ in the example and $N = 2$):

$$ \frac{\partial E}{\partial w_j} = \sum_{i=1}^{N}\frac{\partial E}{\partial \text{out}_i} \cdot \frac{\partial \text{out}_i}{\partial \text{net}_i} \cdot \frac{\partial \text{net}_i}{\partial w_j} $$

The corresponding calculations might need to be re-worked as well.

@asdfjkl
Copy link
Owner Author

asdfjkl commented Apr 27, 2023

p62: There is one large and deep neural neural network. (neural twice)

@asdfjkl
Copy link
Owner Author

asdfjkl commented Apr 27, 2023

p172:formatting of nxf6 in bullet point (should use \mathrm)

@asdfjkl
Copy link
Owner Author

asdfjkl commented May 12, 2023

Figure 4.12: "convolution" on the left: font is too small

@asdfjkl
Copy link
Owner Author

asdfjkl commented May 17, 2023

(all fixed in version 1.6)

@MrOlegus
Copy link

MrOlegus commented Jun 2, 2023

Page 118. In the formula, Vi must be at the bottom and Vparent at the top. Is not it?

@cakiki
Copy link

cakiki commented Oct 4, 2023

Page 198:

"No book about computers is complete with really bad car analogies."

This should rather read: without really bad car analogies

@boihhs
Copy link

boihhs commented Jan 23, 2024

Page 39. The formula for the softmax function does not have an e on the denominator

@RickGroszkiewicz
Copy link

Page 16:

"If we listen to Grandmaster's advice"

S/B "If we listen to Grandmasters' advice"

"Look careful at the mistakes"

S/B "Look carefully at the mistakes"

Page 23:

"and loose."

S/B "and lose."

@NelloHo
Copy link

NelloHo commented Feb 16, 2024

p 39

image

I guess the softmax function should be 🤔

image

@NelloHo
Copy link

NelloHo commented Feb 17, 2024

p. 85
image

I guess line 22 should be:

minimax ( board , depth -1 , not minimize)

as the child nodes of a black node are white nodes, which should be maximized.

@NelloHo
Copy link

NelloHo commented Feb 18, 2024

p. 123
image
3. Qxc4 is not a legal move 🤔 , hence it wont be checked during MCTS

@NelloHo
Copy link

NelloHo commented Feb 19, 2024

P.160
image
I guess it should be 0.4
because on page 161 the original value of Q is 0.4
image

@NelloHo
Copy link

NelloHo commented Feb 20, 2024

p. 212
the indicies start from 0, so perhaps it should be "1 column and 256 rows"

image

@RickGroszkiewicz
Copy link

Page 30:

In the chain rule for computing partial derivatives, the last term has delta-w-sub-i in the denominator.

S/B "delta-w-sub-1"

@marcps70
Copy link

marcps70 commented Mar 7, 2024

several "loose" and "looses" that I think should be "lose" or "loses" on pages 23, 40, 96, 140, 210, 217

@tttony
Copy link

tttony commented Mar 8, 2024

In page 200, here you meant: Then, right?
Thanks for the book

20240308_125722

@xenos1984
Copy link

p.121 and mcts.py sample code:

In simulate, shouldn't payout be 0 if OPPONENT wins and 0.5 if nobody wins?

In backpropagation, the same payout is recorded at each level in the tree. In the MCTS algorithm, shouldn't the recorded payout at each level be the one for the player who is to move at that level? In the example code, a win (payout of 1) is recorded at each level when white wins, but that means that the selection step will always prefer moves in which white wins, even at those levels where black is to move, and thus it will actually prefer bad choices for black which are unlikely to be made.

@ppeloton
Copy link

First of all thanks a lot for writing this great book.

A couple of comments regarding the section 4.6 about NNUEs

  • HalfKP architecture. It would be good to clarify that this architecture uses rotational mirroring (as is shown in the figures 4.14 and 4.15) and not vertical which would be more intuitive for a chess player.
  • There is a new architecture HalfKA (I guess it was not there, when the book was written). If there is a new version of the book, it would be worth mentioning. There you also have vertical mirroring.
  • p. 199 "Assume we always start at a1 and work towards h8". I think instead one should say that one always looks at the board from the side, whose turn it is to make a move, and you start from the bottom left corner to the upper right corner (in case of White from a1 to h8, in case of Black from h8 to a1). In the figures 4.14 and 4.15 you switched the naming of the squares, so your text is technically right. But I think it is still a bit misleading.

Besides it would make maybe sense to add some more remarks to the code. For example chapter 5, listing 5.18: It would make to remark that the modelobject is passed to the learner and when fitting the model to the new games played the modelobject inside the learneris updated as objects are passed by reference in Python. Again, this is probably a matter of taste and for some people self-evident, but I think it could help some readers.

@asdfjkl
Copy link
Owner Author

asdfjkl commented Jun 20, 2024

page 83: As we can see, the evaluation function give_s_ a
very rough assessment of the position

@actor10
Copy link

actor10 commented Aug 24, 2024

page 226/227: no mention of black's 4th move.

@Peeda
Copy link

Peeda commented Aug 25, 2024

page 11: "Silman explains how to characterizes a position by imbalances, i.e. advantages and disadvantages that characterize the position" should be Silman explains how to characterize

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests