Programmed by God
I read "One Jump Ahead" by Jonathan Schaeffer. This book, which was very similar in spirit to "Behind Deep Blue"
about the development of the chess computer Deep Blue that beat Garry
Kasparov in the famous media event, is a not-too-light but at the same
time enthralling story of the development of the checkers program
Chinook, and how this program improved in strength and eventually beat Marion Tinsley,
a God-fearing Southern gentleman, professor of mathematics and a
Baptist minister who was the greatest human checkers player of all
time. The book describes how the author used then-really-mighty 30 MHz
computers to search through position trees and generate endgame
databases. It also describes the bugs that haunted him and the
optimizations that he made in an interesting fashion. I also learned a
handy new word "tyro", which
was actually used in Barclay Cooke's book too but which I didn't bother
to look up but guessed its meaning from the context.
While I was reading this book, I kept casually thinking on the background how to write a checkers program, and realized that it would make an excellent example of not only the details of and additions to the minimax algorithm (plus that representation and storage of states and quickly generating the legal moves feels like an interesting and educational algorithmic problem), but also of machine learning techniques. Also instead of choosing weights for various board features by hand and intuition, why not use self-play and reinforcement learning techniques to find them? Seeing that Arthur Samuel already did something like this in the fifties, this task shouldn't really be that complicated with today's programming tools. As long as the resulting program can beat me and the checkers applets that I can find on the web, I am happy.
I also wondered how genetic algorithms would fare in finding and optimizing these weights static evaluation function, with some kind of tournament evalution used to find the breeders in each generation. All these topics together might make an interesting chapter or two for my next book. Speaking of which, I received an email from the publisher, and if I was able to read and interpret the attached spreadsheet page correctly, about half of the initial print run has already been sold, even though the book has been out only for a few weeks now. I hope that this book turns out to be useful for its readers. I can only try to imagine some guy out there, perhaps some CS freshman or maybe some otherwise interested older gentleman, picking up my book and learning at least a few useful things and techniques from it, so that all my work has not been in vain. I simply try to write the books that I would have wanted to read when I was a beginner. Back then, I had SICP and CLR to go with. I am not trying to pretend that my puny books would even deserve to be mentioned in the same paragraph, but at least they are in Finnish, reasonably well-written (even if I say it myself) and contain very little explicit math. Boo, math, especially any kind of non-discrete math, which is an affront to nature and thus an abomination.
I also picked up the latest novel from Douglas Coupland, "JPod", that my wife had reserved for herself. But the book looks so interesting (and no, it is not a biography of the well-known neocon, despite the name) that I'll see if I can sneak it away from her for my bedtime reading tonight. I can still remember the day when I read my first Coupland novel, "Shampoo Planet", during some lazy Sunday that must have been during the second year we were married. About midway through, I noted to my wife how this book rules like nothing has ever ruled before, and it's like they had followed my life and turned it into a novel. My memory is somewhat hazy about the details of what followed, but I think she answered "Yes, dear" or something equivalent and patted me on the head, but with a somewhat skeptical tone that was dripping with, like, hipsterish irony. But at least this book indelibly imprinted the name "Heather Jo Lockheed" to our mutual married-couple vocabulary. And I can't believe how young the two of us looked like in that memory.
While I was reading this book, I kept casually thinking on the background how to write a checkers program, and realized that it would make an excellent example of not only the details of and additions to the minimax algorithm (plus that representation and storage of states and quickly generating the legal moves feels like an interesting and educational algorithmic problem), but also of machine learning techniques. Also instead of choosing weights for various board features by hand and intuition, why not use self-play and reinforcement learning techniques to find them? Seeing that Arthur Samuel already did something like this in the fifties, this task shouldn't really be that complicated with today's programming tools. As long as the resulting program can beat me and the checkers applets that I can find on the web, I am happy.
I also wondered how genetic algorithms would fare in finding and optimizing these weights static evaluation function, with some kind of tournament evalution used to find the breeders in each generation. All these topics together might make an interesting chapter or two for my next book. Speaking of which, I received an email from the publisher, and if I was able to read and interpret the attached spreadsheet page correctly, about half of the initial print run has already been sold, even though the book has been out only for a few weeks now. I hope that this book turns out to be useful for its readers. I can only try to imagine some guy out there, perhaps some CS freshman or maybe some otherwise interested older gentleman, picking up my book and learning at least a few useful things and techniques from it, so that all my work has not been in vain. I simply try to write the books that I would have wanted to read when I was a beginner. Back then, I had SICP and CLR to go with. I am not trying to pretend that my puny books would even deserve to be mentioned in the same paragraph, but at least they are in Finnish, reasonably well-written (even if I say it myself) and contain very little explicit math. Boo, math, especially any kind of non-discrete math, which is an affront to nature and thus an abomination.
I also picked up the latest novel from Douglas Coupland, "JPod", that my wife had reserved for herself. But the book looks so interesting (and no, it is not a biography of the well-known neocon, despite the name) that I'll see if I can sneak it away from her for my bedtime reading tonight. I can still remember the day when I read my first Coupland novel, "Shampoo Planet", during some lazy Sunday that must have been during the second year we were married. About midway through, I noted to my wife how this book rules like nothing has ever ruled before, and it's like they had followed my life and turned it into a novel. My memory is somewhat hazy about the details of what followed, but I think she answered "Yes, dear" or something equivalent and patted me on the head, but with a somewhat skeptical tone that was dripping with, like, hipsterish irony. But at least this book indelibly imprinted the name "Heather Jo Lockheed" to our mutual married-couple vocabulary. And I can't believe how young the two of us looked like in that memory.
I sometimes use chess engine Crafty in evaluating positions. It gives numerical estimates given in percentages, e.g. 45%-55% for a black advantage. It often gives a considerable advantages in positions that are clearly inevitable draws and no patzer can lose the games without deliberately playing to it. It even gives a significant advantages in cases where there are no theoretical chances of mate whatsoever due to insufficient material, a lone bishop or a lone knight with the king e.g..
Posted by Catilina | 6:02 AM