[Computer-go] Move Evaluation in Go Using Deep Convolutional Neural Networks

2014-12-20 Thread Hugh Perkins
On Fri Dec 19 23:17:23 UTC 2014, Aja Huang wrote:
 We've just submitted our paper to ICLR. We made the draft available at
 http://www.cs.toronto.edu/~cmaddis/pubs/deepgo.pdf

Cool... just out of curiosity, did a back-of-an-envelope estimation of the
cost of training your and Clark and Storkey's network, if renting time
on AWS GPU instances and came up with:
   - Clark and Storkey: 125 usd (4 days * 2 instances * 0.65usd/hour)
   - Yours: 2025usd(cost of Clark and Storkey * 25/7 epochs *
   29.4/14.7 action-pairs * 12/8 layers)

Probably a bit high for me personally to just spend one weekend for fun,
but not outrageous at all in fact, if the same technique was being used by
an organization.
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional Neural Networks

2014-12-20 Thread Stefan Kaitschick
Great work. Looks like the age of nn is here.
How does this compare in computation time to a heavy MC move generator?

One very minor quibble, I feel like a nag for even mentioning it:  You write
The most frequently cited reason for the difficulty of Go, compared to
games such as Chess, Scrabble
or Shogi, is the difficulty of constructing an evaluation function that can
differentiate good moves
from bad in a given position.

If MC has shown anything, it's that computationally, it's much easier to
suggest a good move, than to evaluate the position.
This is still true with your paper, it's just that the move suggestion has
become even better.

Stefan
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional Neural Networks

2014-12-20 Thread Robert Jasiek

On 20.12.2014 09:43, Stefan Kaitschick wrote:

If MC has shown anything, it's that computationally, it's much easier to
suggest a good move, than to evaluate the position.


Such can only mean an improper understanding of positional judgement. 
Positional judgement depends on reading (or MC simulation of reading) 
but the reading has a much smaller computational complexity because 
localisation and quiescience apply.


The major aspects of positional judgement are territory and influence. 
Evaluating influence is much easier than evaluating territory if one 
uses a partial influence concept: influence stone difference. Its major 
difficulty is the knowledge of which stones are alive or not, however, 
MC simulations applied to outside stones should be able to assess such 
with reasonable certainty fairly quickly. Hence, the major work of 
positional judgement is assessment of territory. See my book Positional 
Judgement 1 - Territory for that. By designing (heuristically or using a 
low level expert system) MC for its methods, territorial positional 
judgement by MC should be much faster than ordinary MC because much 
fewer simulations should do. However, it is not as elegant as ordinary 
MC because some expert knowledge is necessary or must be approximated 
heuristically. Needless to say, keep the computational complexity of 
this expert knowledge low.


--
robert jasiek
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional Neural Networks

2014-12-20 Thread Detlef Schmicker
Am Samstag, den 20.12.2014, 09:43 +0100 schrieb Stefan Kaitschick:
 Great work. Looks like the age of nn is here.
 
 How does this compare in computation time to a heavy MC move
 generator?
 
 
 One very minor quibble, I feel like a nag for even mentioning it:  You
 write
 The most frequently cited reason for the difficulty of Go, compared
 to games such as Chess, Scrabble
 or Shogi, is the difficulty of constructing an evaluation function
 that can differentiate good moves
 from bad in a given position.
 
 
 If MC has shown anything, it's that computationally, it's much easier
 to suggest a good move, than to evaluate the position.
 
 This is still true with your paper, it's just that the move suggestion
 has become even better.

It is, but I do not think, that this is necessarily a feature of NN.
NNs might be a good evaluators, but it is much easier to train them for
a move predictor, as it is not easy to get training data sets for an
evaluation function?!

Detlef

P.S.: As we all might be trying to start incorporating NN into our
engines, we might bundle our resources, at least for the first start?!
Maybe exchanging open source software links for NN. I personally would
have started trying NN some time ago, if iOS had OpenCL support, as my
aim is to get a strong iPad go program

 
 
 Stefan
 
 
 
 
 ___
 Computer-go mailing list
 Computer-go@computer-go.org
 http://computer-go.org/mailman/listinfo/computer-go


___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional NeuralNetworks

2014-12-20 Thread Hiroshi Yamashita

Hi Aja,


I hope you enjoy our work. Comments and questions are welcome.


I have three questions.

I don't understand minibatch.
Does CNN need 0.15sec for a positon, or 0.15sec for 128 positions?

 ABCDEFGHJ
9.   White(O) to move.
8...OO   Previous Black move is H5(X)
7..XXXOO..
6.XXO.
5...X.
4.
3XO...
2OX...
1.
 ABCDEFGHJ

Liberties after move means 
 H7(O) is 5, F8(O) is 6.

Liberties means
 H5(X) is 3, H6(O) is 2.
Ladder move means
 G2(O), not E6(O).

Is this correct?

Is KGS rank set 9 dan when it plays against Fuego?

Regards,
Hiroshi Yamashita

___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional Neural Networks

2014-12-20 Thread Robert Jasiek

On 20.12.2014 11:21, Detlef Schmicker wrote:
 it is not easy to get training data sets for an evaluation function?!

You seem be asking for abundant data sets, e.g., with triples Position, 
Territory, Influence. Indeed, only dozens are available in the 
literature and need a bit of extra work. Hundreds of available local 
joseki positions do not fit your purpose, e.g., because also the Stone 
Difference matters there. However, I suggest a different approach:


1) One strong player (strong enough to be accurate +-1 point of 
territory when using his known judgement methods) creates a few 
examples, e.g., by taking the existing examples for territory and adding 
the influence stone difference. It should be only one player so that the 
values are created consistently. (If several players are involved, they 
should discuss and agree on their application of known methods.)


2) Code is implemented and produces sample data sets.

3) The same player judges how far off the sample data are from his own 
judgement.


Thereby, training does not require many thousands of data sets. Instead 
it requires much of a strong player's time to accurately judge dozens of 
data sets. In theory, the player could be replaced by program judgement, 
but I wish happy development of the then necessary additional theory and 
algorithms! ;)


As you see, I suggest human/program collaboration to accelerate program 
playing strength. Maybe 9p programs can be created without strong 
players' help, but then we will not understand much in terms of go 
theory why the programs will excel. For getting much understanding of go 
theory from programs, human/program collaboration will be necessary anyway.


--
robert jasiek
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Computer-go Digest, Vol 59, Issue 25

2014-12-20 Thread Hugh Perkins
 in Go Using Deep
   Convolutional Neural Networks
 Message-ID:
   CAJRqE7xjy5r=rwxq9pjmoxsv3baca1j1qiq3a-cgfzajnre...@mail.gmail.com
 Content-Type: text/plain; charset=utf-8

 Great work. Looks like the age of nn is here.
 How does this compare in computation time to a heavy MC move generator?

 One very minor quibble, I feel like a nag for even mentioning it:  You write
 The most frequently cited reason for the difficulty of Go, compared to
 games such as Chess, Scrabble
 or Shogi, is the difficulty of constructing an evaluation function that can
 differentiate good moves
 from bad in a given position.

 If MC has shown anything, it's that computationally, it's much easier to
 suggest a good move, than to evaluate the position.
 This is still true with your paper, it's just that the move suggestion has
 become even better.

 Stefan
 -- next part --
 An HTML attachment was scrubbed...
 URL:
 http://computer-go.org/pipermail/computer-go/attachments/20141220/27c1afe7/attachment-0001.html

 --

 Message: 5
 Date: Sat, 20 Dec 2014 10:24:03 +0100
 From: Robert Jasiek jas...@snafu.de
 To: computer-go@computer-go.org
 Subject: Re: [Computer-go] Move Evaluation in Go Using Deep
   Convolutional Neural Networks
 Message-ID: 54954033.8090...@snafu.de
 Content-Type: text/plain; charset=UTF-8; format=flowed

 On 20.12.2014 09:43, Stefan Kaitschick wrote:
 If MC has shown anything, it's that computationally, it's much easier to
 suggest a good move, than to evaluate the position.

 Such can only mean an improper understanding of positional judgement.
 Positional judgement depends on reading (or MC simulation of reading)
 but the reading has a much smaller computational complexity because
 localisation and quiescience apply.

 The major aspects of positional judgement are territory and influence.
 Evaluating influence is much easier than evaluating territory if one
 uses a partial influence concept: influence stone difference. Its major
 difficulty is the knowledge of which stones are alive or not, however,
 MC simulations applied to outside stones should be able to assess such
 with reasonable certainty fairly quickly. Hence, the major work of
 positional judgement is assessment of territory. See my book Positional
 Judgement 1 - Territory for that. By designing (heuristically or using a
 low level expert system) MC for its methods, territorial positional
 judgement by MC should be much faster than ordinary MC because much
 fewer simulations should do. However, it is not as elegant as ordinary
 MC because some expert knowledge is necessary or must be approximated
 heuristically. Needless to say, keep the computational complexity of
 this expert knowledge low.

 --
 robert jasiek


 --

 Message: 6
 Date: Sat, 20 Dec 2014 11:21:16 +0100
 From: Detlef Schmicker d...@physik.de
 To: computer-go@computer-go.org
 Subject: Re: [Computer-go] Move Evaluation in Go Using Deep
   Convolutional Neural Networks
 Message-ID: 1419070876.13427.7.ca...@physik.de
 Content-Type: text/plain; charset=UTF-8

 Am Samstag, den 20.12.2014, 09:43 +0100 schrieb Stefan Kaitschick:
 Great work. Looks like the age of nn is here.

 How does this compare in computation time to a heavy MC move
 generator?


 One very minor quibble, I feel like a nag for even mentioning it:  You
 write
 The most frequently cited reason for the difficulty of Go, compared
 to games such as Chess, Scrabble
 or Shogi, is the difficulty of constructing an evaluation function
 that can differentiate good moves
 from bad in a given position.


 If MC has shown anything, it's that computationally, it's much easier
 to suggest a good move, than to evaluate the position.

 This is still true with your paper, it's just that the move suggestion
 has become even better.

 It is, but I do not think, that this is necessarily a feature of NN.
 NNs might be a good evaluators, but it is much easier to train them for
 a move predictor, as it is not easy to get training data sets for an
 evaluation function?!

 Detlef

 P.S.: As we all might be trying to start incorporating NN into our
 engines, we might bundle our resources, at least for the first start?!
 Maybe exchanging open source software links for NN. I personally would
 have started trying NN some time ago, if iOS had OpenCL support, as my
 aim is to get a strong iPad go program



 Stefan




 ___
 Computer-go mailing list
 Computer-go@computer-go.org
 http://computer-go.org/mailman/listinfo/computer-go




 --

 Message: 7
 Date: Sat, 20 Dec 2014 20:33:30 +0900
 From: Hiroshi Yamashita y...@bd.mbn.or.jp
 To: computer-go@computer-go.org
 Subject: Re: [Computer-go] Move Evaluation in Go Using Deep
   Convolutional   NeuralNetworks
 Message-ID: BC600A945BD9499E9D0B86865BA36BD5@i3540
 Content-Type: text/plain; format=flowed; charset=UTF-8;
   reply-type

Re: [Computer-go] Computer-go Digest, Vol 59, Issue 25

2014-12-20 Thread Hugh Perkins
(sorry for forgetting to delete the digest before replying :-( )
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

[Computer-go] Building a database for training CNNs

2014-12-20 Thread Álvaro Begué
Hi,

There are things a CNN could probably do well, if only we had the right
database to train it. I have in mind these two possibilities:
 * using a CNN as an evaluation function,
 * using a CNN to estimate ownership for each point (i.e., a number
between -1 and 1 that is an estimate of who is going to end up scoring it).

So we need a large set of positions labelled with a final score for the
game and who ended up scoring each point.

I believe the right database to use for this purpose would consist of
positions from games played by strong computer opponents which play to
maximize score and which play to the bitter end, passing only when the
opponent has no dead stones left on the board.

I would like to know if you think this would be an interesting resource to
have, if you have any recommendations on what engine(s) to use and if you
would be willing to collaborate in creating it. Any other comments are
welcome too, of course.

Cheers,
Álvaro.
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional NeuralNetworks

2014-12-20 Thread Aja Huang
2014-12-20 11:33 GMT+00:00 Hiroshi Yamashita y...@bd.mbn.or.jp:

 I don't understand minibatch.
 Does CNN need 0.15sec for a positon, or 0.15sec for 128 positions?


0.15 sec for 128 positions.


  ABCDEFGHJ
 9.   White(O) to move.
 8...OO   Previous Black move is H5(X)
 7..XXXOO..
 6.XXO.
 5...X.
 4.
 3XO...
 2OX...
 1.
  ABCDEFGHJ

 Liberties after move means  H7(O) is 5, F8(O) is 6.
 Liberties means
  H5(X) is 3, H6(O) is 2.
 Ladder move means
  G2(O), not E6(O).

 Is this correct?


Yes, all correct.


 Is KGS rank set 9 dan when it plays against Fuego?


Yes.

Aja
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional NeuralNetworks

2014-12-20 Thread Aja Huang
Hi Hiroshi,

2014-12-20 3:31 GMT+00:00 Hiroshi Yamashita y...@bd.mbn.or.jp:

 But it looks playing strength is similar to Clark's CNN.


Against GnuGo our 12-layer CNN is about 300 Elo stronger (97% winning rate
against 86% based one the same KGS games). Against Fuego using their time
setting (10 sec per move on 2 threads) our CNN scored about 30%. To
precisely compare with their results, we also ran 6 sec per move (since our
CPU is faster) and got 20-25% (against their 12%). So, our network is
clearly much stronger.


 MCTS with CNN is interesting. But CNN (0 playout) vs 1 playout is 67%
 seems small. Maybe playout is weak? I'm curious if playout uses CNN.


MCTS + CNN (10k playouts) scored 67% against CNN alone. Yes the playout is
still very simple.


 In page 6, approximately 5,000 rollouts per move
 Christopher Clark's CNN used Fuego with 10 seconds a move, 2 threads on
 an Intel i7-4702MQ. So maybe it is about 40,000 rollouts per move.


Thanks for the information. I'll verify that again.

Aja
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Building a database for training CNNs

2014-12-20 Thread Erik van der Werf
Hi Álvaro,

I've done things like that, except I didn't use games by strong
computer opponents (none existed at the time), so just human amateur
games. In my experience the critical part is in learning about life 
death. Once you have that, estimating ownership is fairly easy,
asymptotically reaching near 100% prediction accuracy toward the end
of the game. See the following papers for more details:

http://erikvanderwerf.tengen.nl/pubdown/learning_to_score_extended.pdf
http://erikvanderwerf.tengen.nl/pubdown/learningLifeandDeath.pdf
http://erikvanderwerf.tengen.nl/pubdown/predicting_territory.pdf

or just read the second half of my PhD thesis :)

http://erikvanderwerf.tengen.nl/pubdown/thesis_erikvanderwerf.pdf


BTW it's great to see this list come back from the dead. Thanks Petr  Michael!

Best,
Erik


On Sat, Dec 20, 2014 at 4:43 PM, Álvaro Begué alvaro.be...@gmail.com wrote:

 Hi,

 There are things a CNN could probably do well, if only we had the right
 database to train it. I have in mind these two possibilities:
  * using a CNN as an evaluation function,
  * using a CNN to estimate ownership for each point (i.e., a number
 between -1 and 1 that is an estimate of who is going to end up scoring it).

 So we need a large set of positions labelled with a final score for the game
 and who ended up scoring each point.

 I believe the right database to use for this purpose would consist of
 positions from games played by strong computer opponents which play to
 maximize score and which play to the bitter end, passing only when the
 opponent has no dead stones left on the board.

 I would like to know if you think this would be an interesting resource to
 have, if you have any recommendations on what engine(s) to use and if you
 would be willing to collaborate in creating it. Any other comments are
 welcome too, of course.

 Cheers,
 Álvaro.




 ___
 Computer-go mailing list
 Computer-go@computer-go.org
 http://computer-go.org/mailman/listinfo/computer-go
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional Neural Networks

2014-12-20 Thread Detlef Schmicker
Hi,

I am still fighting with the NN slang, but why do you zero-padd the
output (page 3: 4 Architecture  Training)?

From all I read up to now, most are zero-padding the input to make the
output fit 19x19?!

Thanks for the great work

Detlef

Am Freitag, den 19.12.2014, 23:17 + schrieb Aja Huang:
 Hi all,
 
 
 We've just submitted our paper to ICLR. We made the draft available at
 http://www.cs.toronto.edu/~cmaddis/pubs/deepgo.pdf
 
 
 
 I hope you enjoy our work. Comments and questions are welcome.
 
 
 Regards,
 Aja
 ___
 Computer-go mailing list
 Computer-go@computer-go.org
 http://computer-go.org/mailman/listinfo/computer-go


___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional Neural Networks

2014-12-20 Thread Álvaro Begué
If you start with a 19x19 grid and you take convolutional filters of size
5x5 (as an example), you'll end up with a board of size 15x15, because a
5x5 box can be placed inside a 19x19 board in 15x15 different locations. We
can get 19x19 outputs if we allow the 5x5 box to be centered on any point,
but then you need to do multiply by values outside of the original 19x19
board. Zero-padding just means you'll use 0 as the value coming from
outside the board. You can either prepare a 23x23 matrix with two rows of
zeros along the edges, or you can just keep the 19x19 input and do your
math carefully so terms outside the board are ignored.



On Sat, Dec 20, 2014 at 12:01 PM, Detlef Schmicker d...@physik.de wrote:

 Hi,

 I am still fighting with the NN slang, but why do you zero-padd the
 output (page 3: 4 Architecture  Training)?

 From all I read up to now, most are zero-padding the input to make the
 output fit 19x19?!

 Thanks for the great work

 Detlef

 Am Freitag, den 19.12.2014, 23:17 + schrieb Aja Huang:
  Hi all,
 
 
  We've just submitted our paper to ICLR. We made the draft available at
  http://www.cs.toronto.edu/~cmaddis/pubs/deepgo.pdf
 
 
 
  I hope you enjoy our work. Comments and questions are welcome.
 
 
  Regards,
  Aja
  ___
  Computer-go mailing list
  Computer-go@computer-go.org
  http://computer-go.org/mailman/listinfo/computer-go


 ___
 Computer-go mailing list
 Computer-go@computer-go.org
 http://computer-go.org/mailman/listinfo/computer-go

___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional Neural Networks

2014-12-20 Thread Mark Wagner
Thanks for sharing. I'm intrigued by your strategy for integrating
with MCTS. It's clear that latency is a challenge for integration. Do
you have any statistics on how many searches new nodes had been
through by the time the predictor comes back with an estimation? Did
you try any prefetching techniques? Because the CNN will guide much of
the search at the frontier of the tree, prefetching should be
tractable.

Did you do any comparisons between your MCTS with and w/o CNN? That's
the direction that many of us will be attempting over the next few
months it seems :)

- Mark

On Sat, Dec 20, 2014 at 10:43 AM, Álvaro Begué alvaro.be...@gmail.com wrote:
 If you start with a 19x19 grid and you take convolutional filters of size
 5x5 (as an example), you'll end up with a board of size 15x15, because a 5x5
 box can be placed inside a 19x19 board in 15x15 different locations. We can
 get 19x19 outputs if we allow the 5x5 box to be centered on any point, but
 then you need to do multiply by values outside of the original 19x19 board.
 Zero-padding just means you'll use 0 as the value coming from outside the
 board. You can either prepare a 23x23 matrix with two rows of zeros along
 the edges, or you can just keep the 19x19 input and do your math carefully
 so terms outside the board are ignored.



 On Sat, Dec 20, 2014 at 12:01 PM, Detlef Schmicker d...@physik.de wrote:

 Hi,

 I am still fighting with the NN slang, but why do you zero-padd the
 output (page 3: 4 Architecture  Training)?

 From all I read up to now, most are zero-padding the input to make the
 output fit 19x19?!

 Thanks for the great work

 Detlef

 Am Freitag, den 19.12.2014, 23:17 + schrieb Aja Huang:
  Hi all,
 
 
  We've just submitted our paper to ICLR. We made the draft available at
  http://www.cs.toronto.edu/~cmaddis/pubs/deepgo.pdf
 
 
 
  I hope you enjoy our work. Comments and questions are welcome.
 
 
  Regards,
  Aja
  ___
  Computer-go mailing list
  Computer-go@computer-go.org
  http://computer-go.org/mailman/listinfo/computer-go


 ___
 Computer-go mailing list
 Computer-go@computer-go.org
 http://computer-go.org/mailman/listinfo/computer-go



 ___
 Computer-go mailing list
 Computer-go@computer-go.org
 http://computer-go.org/mailman/listinfo/computer-go
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional Neural Networks

2014-12-20 Thread David Fotland
This would be very similar to the integration I do in Many Faces of Go.  The 
old engine provides a bias to move selection in the tree, but the old engine is 
single threaded and only does a few hundred evaluations per second.  I 
typically get between 40 and 200 playouts through a node before Old Many Faces 
adjusts the biases.

David

 -Original Message-
 From: Computer-go [mailto:computer-go-boun...@computer-go.org] On Behalf
 Of Mark Wagner
 Sent: Saturday, December 20, 2014 11:18 AM
 To: computer-go@computer-go.org
 Subject: Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional
 Neural Networks
 
 Thanks for sharing. I'm intrigued by your strategy for integrating with
 MCTS. It's clear that latency is a challenge for integration. Do you have
 any statistics on how many searches new nodes had been through by the time
 the predictor comes back with an estimation? Did you try any prefetching
 techniques? Because the CNN will guide much of the search at the frontier
 of the tree, prefetching should be tractable.
 
 Did you do any comparisons between your MCTS with and w/o CNN? That's the
 direction that many of us will be attempting over the next few months it
 seems :)
 
 - Mark
 
 On Sat, Dec 20, 2014 at 10:43 AM,  lvaro Begu  alvaro.be...@gmail.com
 wrote:
  If you start with a 19x19 grid and you take convolutional filters of
  size
  5x5 (as an example), you'll end up with a board of size 15x15, because
  a 5x5 box can be placed inside a 19x19 board in 15x15 different
  locations. We can get 19x19 outputs if we allow the 5x5 box to be
  centered on any point, but then you need to do multiply by values
 outside of the original 19x19 board.
  Zero-padding just means you'll use 0 as the value coming from outside
  the board. You can either prepare a 23x23 matrix with two rows of
  zeros along the edges, or you can just keep the 19x19 input and do
  your math carefully so terms outside the board are ignored.
 
 
 
  On Sat, Dec 20, 2014 at 12:01 PM, Detlef Schmicker d...@physik.de
 wrote:
 
  Hi,
 
  I am still fighting with the NN slang, but why do you zero-padd the
  output (page 3: 4 Architecture  Training)?
 
  From all I read up to now, most are zero-padding the input to make
  the output fit 19x19?!
 
  Thanks for the great work
 
  Detlef
 
  Am Freitag, den 19.12.2014, 23:17 + schrieb Aja Huang:
   Hi all,
  
  
   We've just submitted our paper to ICLR. We made the draft available
   at http://www.cs.toronto.edu/~cmaddis/pubs/deepgo.pdf
  
  
  
   I hope you enjoy our work. Comments and questions are welcome.
  
  
   Regards,
   Aja
   ___
   Computer-go mailing list
   Computer-go@computer-go.org
   http://computer-go.org/mailman/listinfo/computer-go
 
 
  ___
  Computer-go mailing list
  Computer-go@computer-go.org
  http://computer-go.org/mailman/listinfo/computer-go
 
 
 
  ___
  Computer-go mailing list
  Computer-go@computer-go.org
  http://computer-go.org/mailman/listinfo/computer-go
 ___
 Computer-go mailing list
 Computer-go@computer-go.org
 http://computer-go.org/mailman/listinfo/computer-go

___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Building a database for training CNNs

2014-12-20 Thread Erik van der Werf
On Sat, Dec 20, 2014 at 9:35 PM, Robert Jasiek jas...@snafu.de wrote:
 On 20.12.2014 17:04, Erik van der Werf wrote:

 the critical part is in learning about life 
 death. Once you have that, estimating ownership is fairly easy

 [...] See the following papers for more details: [...]

 http://erikvanderwerf.tengen.nl/pubdown/predicting_territory.pdf


 Estimating ownership or evaluation functions to predict final scores of
 already played games are other things than estimating potential territory.
 Therefore I dislike the title of your paper. Apart from lots of simplistic
 heuristics without relation to human understanding of territorial positional
 judgement, one thing has become clear to me from your paper:

 There are two fundamentally different ways of assessing potential territory:

 1) So far mainly human go: count territory, do not equate influence as
 additional territory.

 2) So far mainly computer go: count territory, equate influence as
 additional territory.

 Human players might think as follows: The player leads by T points.
 Therefore the opponent has to use his superior influence to make T more new
 points than the player. Computers think like this: One value is simpler
 than two values, therefore I combine territory and influence in just one
 number, the predicted score.

 Both methods have their advantages and disadvantages, but it does not mean
 that computers would always have to use (2); they can as well learn to use
 (1). (1) has the advantage that counting territory (or intersections that
 are almost territory) is easy for quiet positions.

 Minor note on your paper: influence and thickness are defined now (see
 Joseki 2 - Strategy) and influence stone difference and mobility are
 related concepts if one wants simpler tools. aji has approached a
 mathematical definition a bit but still some definition work remains.


Sure, I tried lots of simple heuristics to ease the learning task for
the networks. One might hope that 'deep' networks would be able to
learn advanced concepts more easily, perhaps more on par with human
understanding, but for the near future that might still just be
wishful thinking.

At the time I didn't really care much for a fundamental distinction
between territory and influence; I just wanted to have a function to
predict the outcome of the game for every intersection as well as
possible (because it seemed useful as an evaluation function).
Intersections colored with high probability for one side tend to
coincide with what human players call territory, while mediocre
probabilities tend to coincide more with influence. I know there are
non-probabilistic ways to define the two, but I'm not sure it really
matters. Perhaps the more effective approach is to just go directly
for the probability of winning (like MC does).

Best,
Erik
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional Neural Networks

2014-12-20 Thread Martin Mueller
I think many of the programs have a mechanism for dealing with “slow” 
knowledge. For example in Fuego, you can call a knowledge function for each 
node that reaches some threshold T of playouts. The new technical challenge is 
dealing with the GPU. I know nothing about it myself, but from what I read it 
seems to work best in batch mode - you don’t want to send single positions for 
GPU evaluation back and forth.

My impression is that we will see a combination of both in the future - 
“normal”, fast knowledge which can be called as initialization in every node, 
and can be learned by Remi Coulom’s method (e.g. Crazy Stone, Aya, Erica) or by 
Wistuba’s (e.g. Fuego). And then, on top of that a mechanism to improve the 
bias using the slower deep networks running on the GPU.

It would be wonderful if some of us could work on an open source network 
evaluator to integrate with Fuego (or pachi or oakfoam). I know that Clark and 
Storkey are planning to open source theirs, but not in the very near future. I 
do not know about the plans of the Google DeepMind group, but they do mention 
something about a strong Go program in their paper :)

Martin

 Thanks for sharing. I'm intrigued by your strategy for integrating
 with MCTS. It's clear that latency is a challenge for integration. Do
 you have any statistics on how many searches new nodes had been
 through by the time the predictor comes back with an estimation? Did
 you try any prefetching techniques? Because the CNN will guide much of
 the search at the frontier of the tree, prefetching should be
 tractable.
 
 Did you do any comparisons between your MCTS with and w/o CNN? That's
 the direction that many of us will be attempting over the next few
 months it seems :)

___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Teaching Deep Convolutional Neural Networks toPlay Go

2014-12-20 Thread Erik van der Werf
On Sat, Dec 20, 2014 at 6:16 AM, Hiroshi Yamashita y...@bd.mbn.or.jp wrote:
 I put two commented games on

 http://webdocs.cs.ualberta.ca/~mmueller/fuego/Convolutional-Neural-Network.html

 Thank you for the report. It was fun.
 I'm also surprised CNN can play move 185 in Game 1.
 CNN uses 1, 2, or 3 or more liberties info. B libs changed
 from 4 to 3. And W libs was 3. It looks CNN can not understand
 this difference, but he could.

Indeed surprising, but maybe it just got lucky. With some sense of
move history this one would have been more easily explained...

Erik
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional Neural Networks

2014-12-20 Thread hughperkins2
Aja wrote:
 We haven't measured that but I think move history is an important feature 
 since Go is very much about answering the opponent's last move locally 
 (that's also why in Go we have the term tenuki for not answering the last 
 move).

I guess you could get some measure of the importance by looking at the weights? 

___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

[Computer-go] Fuego 1.1 vs current Fuego

2014-12-20 Thread Martin Mueller
 I ran Fuego (latest svn version) on our machine (Intel(R) Xeon(R) CPU

Aja,
the 1.1 release of Fuego is from 2011 and much different from current svn 
Fuego. Current version has many different kinds of knowledge added. It is also 
much slower, maybe 5x. If you read my blog it explains this a little more.

Martin
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Fuego 1.1 vs current Fuego

2014-12-20 Thread Aja Huang
Hi Martin,

Thanks for the explanation. I'll write Fuego runs

2 (considering early stop) * 2.2 / 3.1

roughly 14200 playouts per move on the empty board using their time limits.

Thanks,
Aja

On Sat, Dec 20, 2014 at 11:27 PM, Martin Mueller mmuel...@ualberta.ca
wrote:

  I ran Fuego (latest svn version) on our machine (Intel(R) Xeon(R) CPU

 Aja,
 the 1.1 release of Fuego is from 2011 and much different from current svn
 Fuego. Current version has many different kinds of knowledge added. It is
 also much slower, maybe 5x. If you read my blog it explains this a little
 more.

 Martin
 ___
 Computer-go mailing list
 Computer-go@computer-go.org
 http://computer-go.org/mailman/listinfo/computer-go
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

[Computer-go] Interesting paper from Nando de Freitas team, possible replacement for UCT?

2014-12-20 Thread Hugh Perkins
Interesting looking paper: On correlation and budget constraints in
model-based bandit optimization with application to automatic machine
learning, Hoffman, Shahriari, de Freitas,  AISTATS 2014

I can't say I've entirely understood yet, but I *think* that:
- targets scenario where there are many more arms than we can try, ie
trying an arm is quite expensive.
  - I think this sounds like the situation somewhere around depth 2 to
4 of an MCTS tree, where we only have time to try a couple of
different moves?
- using Gaussian Processes to model correlations between the arms
   - means that they dont actually have to try all arms
   - though I haven't figured out yet where they are getting this
correlation information from yet, if they havent tried the arms yet...
- in their experiments, their UGap compares favorably with UCBE, which
is a variant of UCB (and which UCB is the basis of UCT, right?)

From the point of view of UCT, I'm thinking:
- might be more principled approach to deciding what to do when there
are still few children of an MCTS node
- my understanding is that currently we are using 'magic numbers',
like 'if there are less than 30 children, then always explore, dont
use UCT'?

My own interest in this line of thought initially is slightly
different angle from replacing UCT.  It seems to me that there are
lots of hyper-parameters we need to optimize, or choose from, lots of
magic numbers, like the  30 magic number for applying UCT, but
also things like:
- what is the value of adding RAVE?
- what is the value of different numbers of playoff?
- what if I vary the maximum playoff depth?
- etc ...

Searching through all these hyper-parameters seems to me to be
tedious, and time-consuming, and unprincipled, and I'm looking for a
better way, which has taken me through a bunch of papers such as :
- Algorithms for hyper-parameter optimization, Bergstra, Bardenet,
Bengio, Kegl, NIPS 2007
- Random Search for Hyper-Parameter Optimization, Bergstra, Bengio, JMLR 2012
- Hyperopt: A Python Library for Optimizing the Hyperparameters of
Machine Learning Algorithms, bergstra, yamins, cox, scipy 2013
- (and now) On correlation and budget constraints in model-based
bandit optimization with application to automatic machine learning,
Hoffman, Shahriari, de Freitas, AISTATS 2014
___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional Neural Networks

2014-12-20 Thread Aja Huang
Hi Mark,

2014-12-20 19:17 GMT+00:00 Mark Wagner wagner.mar...@gmail.com:

 Thanks for sharing. I'm intrigued by your strategy for integrating
 with MCTS. It's clear that latency is a challenge for integration. Do
 you have any statistics on how many searches new nodes had been
 through by the time the predictor comes back with an estimation? Did
 you try any prefetching techniques? Because the CNN will guide much of
 the search at the frontier of the tree, prefetching should be
 tractable.

Did you do any comparisons between your MCTS with and w/o CNN? That's
 the direction that many of us will be attempting over the next few
 months it seems :)


I'm glad you like the paper and would consider to attempt. :)
Thanks for the interesting suggestions.

Regards,
Aja



 - Mark

 On Sat, Dec 20, 2014 at 10:43 AM, Álvaro Begué alvaro.be...@gmail.com
 wrote:
  If you start with a 19x19 grid and you take convolutional filters of size
  5x5 (as an example), you'll end up with a board of size 15x15, because a
 5x5
  box can be placed inside a 19x19 board in 15x15 different locations. We
 can
  get 19x19 outputs if we allow the 5x5 box to be centered on any point,
 but
  then you need to do multiply by values outside of the original 19x19
 board.
  Zero-padding just means you'll use 0 as the value coming from outside the
  board. You can either prepare a 23x23 matrix with two rows of zeros along
  the edges, or you can just keep the 19x19 input and do your math
 carefully
  so terms outside the board are ignored.
 
 
 
  On Sat, Dec 20, 2014 at 12:01 PM, Detlef Schmicker d...@physik.de
 wrote:
 
  Hi,
 
  I am still fighting with the NN slang, but why do you zero-padd the
  output (page 3: 4 Architecture  Training)?
 
  From all I read up to now, most are zero-padding the input to make the
  output fit 19x19?!
 
  Thanks for the great work
 
  Detlef
 
  Am Freitag, den 19.12.2014, 23:17 + schrieb Aja Huang:
   Hi all,
  
  
   We've just submitted our paper to ICLR. We made the draft available at
   http://www.cs.toronto.edu/~cmaddis/pubs/deepgo.pdf
  
  
  
   I hope you enjoy our work. Comments and questions are welcome.
  
  
   Regards,
   Aja
   ___
   Computer-go mailing list
   Computer-go@computer-go.org
   http://computer-go.org/mailman/listinfo/computer-go
 
 
  ___
  Computer-go mailing list
  Computer-go@computer-go.org
  http://computer-go.org/mailman/listinfo/computer-go
 
 
 
  ___
  Computer-go mailing list
  Computer-go@computer-go.org
  http://computer-go.org/mailman/listinfo/computer-go
 ___
 Computer-go mailing list
 Computer-go@computer-go.org
 http://computer-go.org/mailman/listinfo/computer-go

___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go

Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional NeuralNetworks

2014-12-20 Thread Hiroshi Yamashita

Hi Aja,


It's more than 5000 playouts but less than 20k. Which version


I tried Fuego 1.1(2011, Windows version) on Intel Core i3 540,
2 cores 4 thread. 3.07GHz.
I played first 4 moves randomly, and next 4 moves are

GamesPlayed28952, Time   6.8, Games/s4249.8
GamesPlayed28750, Time   6.8, Games/s4249.4
GamesPlayed42853, Time   9.7, Games/s4416.4
GamesPlayed32541, Time   7.5, Games/s4357.0

Average is 33000 playout/move.

config.txt
---
uct_param_search number_threads 2
uct_param_search lock_free 1
uct_param_player reuse_subtree 1
uct_param_player ponder 0
---
C:\Program Files\Fuego\fuego.exe --config config.txt

I did not add go_param timelimit 10, because 10sec is default.

i7-4702MQ is 4 cores, 8 threads. 2.2 GHz, 3.2 GHz(Turbo Boost)
I'm not sure its speed and whether it used 3.2GHz, but I think
turbo boost is on when 2 threads.

I summed Fuego's cpu time from their first 10 sgfs.
Total is 2861 moves, cpu time 21443 sec.
21443 / (2861/2) = 15.0 sec / move
It is over 10sec. a bit strange.

Regards,
Hiroshi Yamashita


- Original Message - 
From: Aja Huang ajahu...@google.com

To: computer-go@computer-go.org
Cc: y...@bd.mbn.or.jp
Sent: Sunday, December 21, 2014 8:16 AM
Subject: Re: [Computer-go] Move Evaluation in Go Using Deep Convolutional 
NeuralNetworks



Hi Hiroshi,

On Sat, Dec 20, 2014 at 3:31 AM, Hiroshi Yamashita y...@bd.mbn.or.jp wrote:


In page 6, approximately 5,000 rollouts per move
Christopher Clark's CNN used Fuego with 10 seconds a move, 2 threads on
an Intel i7-4702MQ. So maybe it is about 40,000 rollouts per move.



I ran Fuego (latest svn version) on our machine (Intel(R) Xeon(R) CPU
E5-2687W 0 @ 3.10GHz) for 10 secs with the following config in the empty
position (I actually had to manually play 4 moves at the corners to make
Fuego out of book, but the speed should be similar anyway):

boardsize 19
uct_param_search number_threads 2
uct_param_search lock_free 1
uct_max_memory 10
uct_param_player reuse_subtree 0
uct_param_player ponder 0
uct_param_player resign_threshold 0.1
go_param_rules capture_dead 1
go_rules kgs

Count  16648
GamesPlayed16648
Nodes  4989633
Time   8
GameLen435.4 dev=24.7 min=361.0 max=543.0
InTree 6.9 dev=1.9 min=0.0 max=18.0
Aborted0%
Games/s2089.3

It's more than 5000 playouts but less than 20k. Which version of Fuego did
you run? Did I set anything wrong? I would appreciate if you could help me
run Fuego with the strongest and fastest settings.

Regards,
Aja


___
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go