Hacker News new | ask | show | jobs
by adamt 3757 days ago
That was really impressive. Other than playing very accurately, I felt it played far more human-like than most computer chess engines.

I've written several chess engines, and have often wondered for some time whether or not there was a chance for a more AI/pattern-driven approach.

Are you using your AI just for evaluation? E.g. do you have a traditional PVS/negascout (or similar) search? Presumably an 'extreme Type C' (no search) would fail to recognise various draws (50 move/repetition)?

Good work :-)

1 comments

Thanks!

Right now I have just about as close to an "extreme type C" engine as possible. There is a neural network that maps from a board position directly to a ranked list of moves it wants to make., and a little bit of logic on top of that to reject illegal moves.

The recognition of wins/draws/losses is actually done in a layer around the engine, which doesn't understand these things yet. One of "tricks" it is vulnerable to right now is being forced into a draw by repetition, because doesn't know that is a thing to avoid.

Adding a more traditional search (augmented by the network, of course) is on my todo list, and I think it will improve the playing strength a lot. I am pleasantly surprised though, at how well it plays without any of that.

It would be interesting to see how strength and "human like play" scales with the depth of the search.

There's also a really interesting possibility in training policy networks with different attributes by using games from players with certain styles of play.

Training different policies in different styles is a really interesting idea. You could then have a gating process that first chooses the "style" of move to make and then uses the style-specific network to select a move.

I think getting data for this could be difficult though. I wonder how easy it would be to automatically categorize a game record by "style"?

Or, rather than multiple policies, one policy that takes a player vector as an input along with the board position. Players that you predict will make the same move from a given board have their vectors adjusted toward each other and away from a random sample of other player vectors.

If it works, you would be able to perform player vector math ala word2vec. (No idea if it will work)

I don't know a lot about chess, but I would try picking several prolific players with what seem to you to be different styles, and training a classifier to identify the player, as an experiment in viability.