Giter Club home page Giter Club logo

Comments (3)

kblomdahl avatar kblomdahl commented on June 14, 2024

To be able to use DP4A #8 (whenever that gets finished) the number of features must be a multiple of four. So we either need to add two more features or add padding features.

If we are not adding padding features then we can re-add the scoring features. For example, the following two:

  • Point is only reachable from our stones.
  • Point is only reachable from opponent stones.

These features conform to the Tromp-Taylor Rules. But we removed some similar features earlier because we disliked them for giving the neural network an overly simplistic view of the game state, so re-adding them may be a bad idea.

from dream-go.

kblomdahl avatar kblomdahl commented on June 14, 2024

The first question to answer when it comes to implementing some algorithm to determine whether a move is a ladder capture is what defines such a move. I've compiled some examples of interesting moves to consider in Figure 1. Move A, B, C and D are fairly obvious ladder capturing moves, while E and F are questionably ladder capturing moves. Move G should not be considered a ladder capturing move, but is there to highlight the problem of differentiating it from move B.

Figure 1: Ladder capturing moves

According to the definition given by Sensei's Library a ladder is any sequential series of ataris forcing the opponent's stones around.

Further Marel Crasmaru and John Tromp [1] gives the following definition of the ladder problem Given a position on an arbitrarily-sized Go board, and a white group with 2 liberties, an Black keep putting white in atari (that is, reduce white to 1 liberty) until capture?

This would make only move A, C, and D ladder capturing moves, leaving out B which I would consider a ladder capturing move. For the sake of simplicity (and an efficient implementation) that might be an acceptable implementation.


With the definitions given above one can derive the following fairly straightforward recursive implementation to determine whether a move is a ladder capture:

  1. Play the suggested move a on a board.
  2. If any of a neighbours (henceforth called b) were reduced to one liberty then play a move at that liberty.
  3. If the group at b has exactly one liberty then this is a ladder capture move.
  4. If playing the move in step 2 put any of my stones in atari then the suggested move a is not a ladder capturing move.
  5. If the group at b has more than two liberties then move a is not a ladder capturing move.
  6. If the group at b has exactly two liberties and at least one of them is a ladder capturing move then the suggested move a is a ladder capturing move.

From this algorithm one can trivially derive a ladder escaping algorithm:

  1. Play the suggested move a on a board.
  2. If the number of liberties of the group at a is not exactly two then this is not a ladder escaping move.
  3. If playing at neither of the liberties of a is a ladder capturing move, then the suggested move a is a ladder escaping move.

Note that this algorithm will miss the very last move in the ladder sequence that actually saves the group, but that should not be a problem anyway since the program should find that easily itself. It is only reading out the 12+ long sequence that is problematic.

from dream-go.

kblomdahl avatar kblomdahl commented on June 14, 2024

I added the ladder features and trained another network from human games based on it, and the network still fails the ladder tests.

So questionable whether they are worth the effort, but I am leaving them in and we can see in the future whether they are necessary.

from dream-go.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.