[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [computer-go] Pattern matching - example play
----- Original Message -----
From: "Mark Boon" <tesuji@xxxxxxxxxxxxxxxxx>
Subject: RE: [computer-go] Pattern matching - example play
Thanks for your opinion :)
After posting the game, I achieved a little better pro-prediction (50% on my
test game).
But when I proceeded with the part that does the patter-search on database
games, I discovered that there was a rather huge bug in the pattern
harvester. I keep finding massive bugs and by fixing them, I managed to get
from 17% pro-prediction to 50%.
Using the pattern search in the database is a valuable tool to find bugs.
The past days have been very frustrating, as I had to modify the code
significantly and throw away my harvested pattern as well as their learned
values and it took me days to fix just part of the problem. The problem was
that the board's edge was ignored in many cases, which lead to quite a few
bad moves.
I found a few more bugs vut I don't think they will influence the overell
result much.
It is amazing how many bugs there can be in a system based on such a simple
concept.
I have now implemented another significant improvement and all in all I
expect the system to perform significantly better in a week or so (when all
the harvesting, learning and game database pattern indexing has been
completed again).
But there still seems to be a fundamental misunderstanding in what the
purpose is of my pattern matcher.
My pattern matcher is intended as a Fuseki opening book and a Joseki expert
and a "good shape tesuji" alerter module.
Like I have said before, I was pleasantly surprized that this thing actually
is able to play a bit of Go all by itself so I decided to try to improve it
as much as I can, me being a perfectionist. And I was surprized to see that
after fixing the bugs, it achieves an average of 46% pro-prediction.
But by itself, of course the system is totally useless. It does not play Go,
it only fools the observer that it plays Go.
In fact the system has no idea what it is doing.
For example, I noticed that in the partial Game I posted, the system totally
ignores the concept of territory.
It does not have an understanding of territory apart from Fuseki moves, so I
never expected it to be ableto defend or conquer territory.
I have made a Bouzy 21/7 type estimator, and I expect that when I let the
move generator not always select the "best pattern" move but take slightly
lower ranking moves that yield more territory and influence, that the system
will play MUCH better against Go++. I expect the difference to be like night
& day, because when I did a Bouzy 21/7 on some of the intermediate
positions, Go++ always was way ahead, indicating that a major improvement
can be achieved by introducing a sense of influence and territory.
Another major problem with the pattern system is that it has no idea how to
connect two chains that are a bit further apart. The two large chains in the
example game are connectable IMHO, but MoyoGo does not defend them and Go++
simply cuts them.
Another problem is that although the pattern module attempts to form eyes
(not unlike an oversaturated saline sulution forms crystals - it happens
without a plan or a particular purpose and it happens more as a force of
nature than out of neccessity), it neither knows when to stop, nor that a
chain has only one eye.
So the concept of life & death is a total unknown to the pattern module.
My ladder module stopped working and I decided to throw it away, so ladders
are not being prevented/made either.
All in all a great many avenues for improvement. Like I mentioned before,
the pattern system has never been intended to be anything else than a
Fuseki/Joseki library, so I am pretty happy with results like these. My
design for the Go program has no other use for this pattern module than
being a Fuseki/Joseki library. I have often said that I consider Fuseki &
Joseki to be extremely important because the biggest moves are during the
beginning of the game.
The pattern system will therefore be augmented with a territory/influence
module and a sohisticated "ladder" module (in the form of a "net"-solver),
and the result will be a building block that has its main use during the
first say 120 moves of a game, in combination with a tactical module.
Again, it's nice the pattern system plays a little Go, but there were quite
a few bugs in it still and as it stands, it has no use as a move-suggester
APART from Fuseki & Joseki.
> Surprisingly there's was zero response to Frank's post below. Lacking time
> at the moment I hadn't looked at it at all myself until today. Since I
asked
> him to do an experiment just like this and post the results I feel he
> deserved at least a serious look at it from me.
>
> First let me say I think his 'system' (since he doesn't want to call it
> 'program') did very well in this game. Much better than any others I have
> seen so far that attempted something similar. So obviously Frank did a
very
> good job here. I must admit that I didn't think it would be possible to
make
> something play this well based purely on pattern-matching.
>
> Earlier I have voiced my skepticism about how valuable such a system would
> be in a Go playing program. The game here still confirms my opinion in
this
> respect. Now before I get accused again of saying "your shit stinks" or
> something of the kind, please read my analysis given below carefully.
After
> that it's still possible to disagree with me of course, but I hope we can
> keep it civilised this time.
>
> Before I continue, let me make a few statements. I've taken myself as a
> judge of the quality of the moves. I'm not a pro of course. But I consider
> my level close enough to that of a pro to make very little difference for
> this discussion. Although I played through the whole game, I paid
> particularly close attention to the first 100 moves. The choice of this
> number was completely arbitrary. I made a simple tally of each side, how
> many *good* moves they played, and how many *bad* moves. A move was
> considered good if I would have played there myself, or if the move played
> seemed more or less equivalent to the move I would have played. All other
> moves were considered *bad*, without making any qualification how bad they
> actually were.
>
> Out of the 50 moves each side played, I counted 6 bad moves for Black and
12
> for White. A pro would probably only disagree with me on a couple of
those.
> After these 100 moves I think White is about 30 points behind, but that in
> itself I consider of less importance. But it seems to confirm the fact
that
> White is doing better in this game. Now if we look at what Frank's system
> does, which is predict which moves are 'pro' moves, we could conclude that
> his system predicts 64% of the moves correctly. If we look at Go++
however,
> we could similarly say that it scored 88%.
>
> Now if Frank can improve the accuracy of his system to 90%, which I think
> would be quite a feat by itself, then I think we can say that at best it
> would make it play on a similar level as Go++ (for the first 100 moves at
> least).
>
> What I'm trying to say here is that current Go software already achieve
what
> Frank's system tries to achieve. The reason current Go software is still
> weak is in the small number of bad moves they make in the beginning of the
> game and the large number of really bad moves they make in the middle and
> end-game. In my opinion the big difference in playing level could only be
> achieved by improved evaluation and life-and-death (W could kill the B
> corner later on for example), which is why I put much more value in those
> parts of Go software when it comes to playing. How much can be improved by
> doing better pattern-matching? Would 95% accuracy make a huge difference
> over 90%? I'm still very skeptical about that, to say the least.
>
> Mark Boon
>
>
> > -----Original Message-----
> > From: computer-go-bounces@xxxxxxxxxxxxxxxxx
> > [mailto:computer-go-bounces@xxxxxxxxxxxxxxxxx]On Behalf Of Frank de Groot
> > Sent: Monday, November 22, 2004 20:48
> > To: computer-go
> > Subject: [computer-go] Pattern matching - example play
> >
> >
> > Attached & below a game that shows how a purely-pattern system
> > plays against
> > Go++ 5.0 Level 5 (highest):
> > White totally neglects making territory.
> >
> >
> >
> > (;GM[1]FF[4]SZ[19]CA[UTF-8]
> > AP[Moyo Go Studio]
> > GN[Go++ 5.0[B] vs. MoyoGo[W]]
> > PW[MoyoGo]
> > PB[Go++ 5.0]
> > KM[5.5]
> > OT[No byo-yomi]
> > DT[2004-11-22]
> >
;B[cc];W[pp];B[pc];W[dp];B[jq];W[hq];B[mq];W[oq];B[jo];W[kp];B[kq];W[ho];
> > B[jp];W[pe];B[qe];W[qf];B[qd];W[pf];B[nc];W[hm];B[qk];W[qi];B[qn];
> > W[qo];B[pn
> > ];
> > W[rn];B[rm];W[ro];B[oj];W[jm];B[qj];W[pi];B[nl];W[oi];B[ck];W[nj];
> > B[no];W[cm
> > ];
> > B[ch];W[ok];B[ol];W[pj];B[cq];W[dq];B[cp];W[co];B[bo];W[bn];B[do];
> > W[cn];B[dr
> > ];
> > W[er];B[cr];W[fq];B[ap];W[hk];B[df];W[hc];B[fc];W[mp];B[np];W[nq];
> > B[mr];W[mo
> > ];
> > B[mn];W[ln];B[kn];W[km];B[lm];W[ll];B[lo];W[mm];B[kc];W[ln];B[nn];
> > W[he];B[ke
> > ];
> > W[lp];B[lm];W[ml];B[lg];W[ln];B[ko];W[nk];B[hh];W[gg];B[gh];W[eg];
> > B[ei];W[hg
> > ];
> > B[fh];W[ih];B[ii];W[jh];B[ji];W[kh];B[if];W[jf];B[ie];W[ig];B[id];
> > W[hd];B[ki
> > ];
> > W[lh];B[mg];W[kf];B[lf];W[ef];B[de];W[ee];B[fd];W[ed];B[gb];W[hb];
> > B[el];W[em
> > ];
> > B[fe];W[fl];B[hf];W[dd];B[gf];W[cd];B[be];W[bd];B[ce];W[fg];B[bb];
> > W[db];B[dc
> > ];
> > W[cb];B[bl];W[an];B[bc];W[ad];B[ec];W[ae];B[bg];W[ac];B[ds];W[es];
> > B[ps];W[pr
> > ];
> > B[os];W[qs];B[ep];W[eq];B[br];W[qr];B[in];W[hn];B[ir];W[ns];B[im];
> > W[il];B[rf
> > ];
> > W[rg];B[re];W[hr];B[af];W[ek];B[dk];W[ej];B[dj];W[li];B[dl];W[kg];
> > B[nf];W[je
> > ];
> > B[jd];W[ao];B[bp];W[le];B[me];W[kd];B[kb];W[md];B[nd];W[jn];B[dm];
> > W[dn];B[fm
> > ];
> > W[en];B[gl];W[gm];B[fn];W[fo];B[fk];W[gn];B[sg];W[rh];B[og];W[pg];
> > B[mc];W[ld
> > ];
> > B[gj];W[fl];B[fm];W[rj];B[rk];W[sh];B[io];W[sf];B[pk];W[pd];B[qc];
> > W[hl];B[sj
> > ];
> > W[si];B[ri];W[fn];B[dg];W[rj];B[lc];W[ke];B[ri];W[fl];B[gk];W[rj];
> > B[kk];W[sk
> > ])
> >
> >
>
> _______________________________________________
> computer-go mailing list
> computer-go@xxxxxxxxxxxxxxxxx
> http://www.computer-go.org/mailman/listinfo/computer-go/
>
>
_______________________________________________
computer-go mailing list
computer-go@xxxxxxxxxxxxxxxxx
http://www.computer-go.org/mailman/listinfo/computer-go/