# It is too easy to beat AlphaGo.jl

**URL:** <https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518>\
**Category:** Offtopic\
**Created:** [January 11, 2019, 2:19pm UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518 "2019-01-11T14:19:08Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![rapasite](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rapasite/32/3719_2.png) [@rapasite](https://discourse.julialang.org/u/rapasite)\
**Post date:** [January 11, 2019, 2:19pm UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/1 "2019-01-11T14:19:08Z")

</div>

At least on [https://fluxml.ai/experiments/go/](https://fluxml.ai/experiments/go/), suffice to create an “eye” and grow from it.  
maybe the network is not trained enough but maybe something is wrong

@MikeInnes  
@tejank10

I am just starting machine learning

I have to say amazing doc for flux.jl [https://fluxml.ai/Flux.jl/stable/](https://fluxml.ai/Flux.jl/stable/) thank you for the good work.

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [January 11, 2019, 6:20pm UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/2 "2019-01-11T18:20:32Z")

</div>

Yeah. Agree. It’s harder than people think to make it good

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [January 11, 2019, 8:39pm UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/3 "2019-01-11T20:39:42Z")

</div>

I think it’s just poorly trained. The MNIST classifier is also currently sub-par. It should be able to do much better with the network structure that it’s using.

---

<div class="post-metadata">

**Author:** ![mcognetta](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mcognetta/32/3826_2.png) [@mcognetta](https://discourse.julialang.org/u/mcognetta)\
**Post date:** [January 14, 2019, 3:53am UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/4 "2019-01-14T03:53:14Z")

</div>

Yes, I brought this up with the maintainers but they seemed to not think it was a big deal.

[https://github.com/FluxML/fluxml.github.io/issues/28](https://github.com/FluxML/fluxml.github.io/issues/28)

---

<div class="post-metadata">

**Author:** ![Liso](https://avatars.discourse-cdn.com/v4/letter/l/898d66/32.png) [@Liso](https://discourse.julialang.org/u/Liso)\
**Post date:** [January 15, 2019, 10:39am UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/5 "2019-01-15T10:39:42Z")

</div>

Seeing how weak this is I was just curious and tried to play with it using random moves (random choice from A-I and 1-9 repeating “dice” if move is illegal). Everytime during first 50 moves random bot was better! (BTW. flux-bot thought pass is best in 6-th and 8-th moves!)

Then random-bot made some self-ataris which changed position.

But flux-bot is so weak that it screwed it up again…

In this (clearly winning by radom bot (\*)) position flux-box went to never ending cycle with “dancing” green line on top of board:

 ![BadJokeGo](https://global.discourse-cdn.com/julialang/original/3X/5/7/57216a538398ed3cc688f5d7044b1899af7a8535.jpeg)

In my humble opinion and some could see it otherwise, this is … (I don’t want to be too harsh so I say it very politely) disappointing.

If JuliaComputing (\*\*) wants to advertise Julia and show serious work on problems (at least in pillar packages in ecosystem) then I propose (and well I could be wrong!) to remove this example immediately! (or improve it radically)

(\*) yes - random moves of black still had some chance to do suicide but I couldn’t test it due to bug (in flux? in bot? in javascript?) … BTW. white stones around J5 was several moves in atari…  
(\*\*) @MikeInnes is from JuliaComputing right? (see [https://www.youtube.com/watch?v=R81pmvTP\_Ik](https://www.youtube.com/watch?v=R81pmvTP_Ik) ; BTW about go-bot look around 5:30 )

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [January 15, 2019, 10:41am UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/6 "2019-01-15T10:41:26Z")

</div>

I think it was trained by a summer intern with limited time. I am a go player and i have read the alphago papers. I am interested in having a crack at some point.

---

<div class="post-metadata">

**Author:** ![Liso](https://avatars.discourse-cdn.com/v4/letter/l/898d66/32.png) [@Liso](https://discourse.julialang.org/u/Liso)\
**Post date:** [January 15, 2019, 11:18am UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/7 "2019-01-15T11:18:22Z")

</div>

If it want to show how simple is work with API maybe it could be good example.

Maybe it is enough to rename it to “OmegaGo.jl” (see [omega male](https://en.wikipedia.org/wiki/Alpha_(ethology)#Beta_and_omega)) or JokeGo.jl and say clearly that it is not about go or AI but about API.

And yes it could be good to see some serious results from Julia ecosystem so I am happy if you want to try to improve (means rewrite?) it.

> [@xiaodai](#):
>
> I think it was trained by a summer intern with limited time.

I am afraid it is not just about training. With current HW (and human knowledge) it need some cooperation with MCTS (or something similar) part. I mean it is kind of unbelievable that MCTS didn’t find that filling one of two eyes of own big group is bad.

I don’t see any problem to have unsuccessful experiment or work in progress, but why to publish it? 😱

BTW if you are to trying to play with source code you could do more automatic tests against random bot.

It is some kind of philosophical question if there is more stupid play than random moves. (ie you need some intelligence to be able to choose worse moves than random). My guess is that random bot will win at least in 10% of games against current version… 😛

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [January 15, 2019, 10:24pm UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/8 "2019-01-15T22:24:02Z")

</div>

> [@Liso](#):
>
> I am afraid it is not just about training. With current HW (and human knowledge) it need some cooperation with MCTS (or something similar) part. I mean it is kind of unbelievable that MCTS didn’t find that filling one of two eyes of own big group is bad.

Agreed, this level of play cannot be explained by a lack of training. Even random play enhanced with a tiny bit of search should beat pure random play handily.

> [@Liso](#):
>
> It is some kind of philosophical question if there is more stupid play than random moves. (ie you need some intelligence to be able to choose worse moves than random).

Philosophical question indeed. The answer depends critically on the definition of random play, the choice of go rules, and the definition of stupid play. The full range from “no” to “yes” via “meaningless question” is plausible.

---

<div class="post-metadata">

**Author:** ![Liso](https://avatars.discourse-cdn.com/v4/letter/l/898d66/32.png) [@Liso](https://discourse.julialang.org/u/Liso)\
**Post date:** [January 16, 2019, 11:39am UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/9 "2019-01-16T11:39:53Z")

</div>

> [@GunnarFarneback](#):
>
> Philosophical question indeed. The answer depends critically on the definition of random play, the choice of go rules, and the definition of stupid play. The full range from “no” to “yes” via “meaningless question” is plausible.

You could propose another definition! 🙂 Here I was trying to answer to practical question how much more stupid could go bot be (in eyes of public audience) than flux bot.

Maybe people which are not go players or AI researchers could think it is good example. But from a little more experienced point of view it is **very very very** stupid bot. (very probably most stupid ever published)

Please don’t get me wrong! I just think that **Julia community needs some self reflection and some kind of internal processes to support quality and suppress non-quality.**  
(At least if we don’t want to look like bunch of … which looks happy with similar impractical … “toys”)

Maybe some “review branch” on discourse where constructive criticism will be wanted and welcomed could help here?

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [January 16, 2019, 12:16pm UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/10 "2019-01-16T12:16:04Z")

</div>

@Liso IIUC, this is an open source MIT licensed project [GitHub - tejank10/AlphaGo.jl: AlphaGo Zero implementation using Flux.jl](https://github.com/tejank10/AlphaGo.jl). Criticizing is fine and all but actually figuring out what’s wrong, and fixing it or proposing the fix is more constructive IMO. Please take this as a mild criticism of your criticism 🙂

---

<div class="post-metadata">

**Author:** ![Liso](https://avatars.discourse-cdn.com/v4/letter/l/898d66/32.png) [@Liso](https://discourse.julialang.org/u/Liso)\
**Post date:** [January 16, 2019, 5:54pm UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/11 "2019-01-16T17:54:31Z")

</div>

> [@mohamed82008](#):
>
> IIUC, this is an open source MIT licensed project [GitHub - tejank10/AlphaGo.jl: AlphaGo Zero implementation using Flux.jl](https://github.com/tejank10/AlphaGo.jl).

(BTW I am quite of sad to see how often is (mis)used this kind of excuse for some results here)

I probably didn’t described problem clearly. It is **perfectly fine** to have draft WIP project at that level of immaturity on github. (every project needs to start at basic level)

Problem is [here](https://fluxml.ai/experiments/) (publishing/advertising it at flux page) and [here](https://www.youtube.com/watch?v=R81pmvTP_Ik) (publishing/advertising it at conference).

From my point of view - using project with this level of immaturity as example of using flux is damaging flux’s (and very probably JuliaComputing’s too) reputation.

> [@mohamed82008](#):
>
> Criticizing is fine and all but actually figuring out what’s wrong, and fixing it or proposing the fix is more constructive IMO.

Well first one is easy to answer, there is probably everything wrong 😛

How to fix some things:

GO and GUI:

1. solve deadlock or livelock bug. (I played 3 games yesterday and 2 ended in this kind so it has to be not difficult to simulate problem)
2. find end game criteria. Bot is still playing in hopeless position, for example with less 5 legal position where to play (and without any chance to make living group). Without this I am not sure how could MCTS work!
3. if MCTS starts to work properly it has to give some number of lost and some number of won possible games. Define some threshold (for example 90% of lost games) as resign threshold. It is pity to play against stubborn machine. (show this winning expectation percentage on screen)
4. give possibility to save game (in sgf format for example) - this has to be very easy.
5. create some versioning system and show version of bot (I propose something like 0.0.1 in this moment) it could help people to forgive bugs and weaknesses and give them some hope in the future! 🙂
6. add undo possibility (this one probably in the future where one would like to analyze game)

AI:

1. This one is probably hardest. Try to show that flux could do some job here! 😉
2. fight trained version vs untrained and show results.
3. try bot against other bots offline and online on go servers (for example on [KGS](http://michna.com/kgsbot.htm) or [OGS](https://github.com/online-go/gtp2ogs/blob/devel/README.md)) and show results.
4. beat best bots on specialized competition 😉
5. give best human players 5 stones handicap and crush them

Meta:

1. you don’t need to hire European champion of go (Fan Hui) like Deepmind, at least just consult some go player about product before you sell it. (I mean show it at conference)
2. remove it from flux web page or describe it properly as something very very very draft…
3. try to create or help to create team where people could work on partial tasks (some of them I wrote above)
4. try to motivate teachers and students to participate on partial works (there are people who like to work on something like this)

Some of proposals is easy to fulfill (if there is understanding of problem and will to solve it) some of them are harder and some of them really hard (some maybe impossible).

There is still possibility to resign and start to do something different. Sometimes this is the best option 😉

EDIT:

1. mark last put stone differently
2. add resign button for human player (although it is not needed now 😛 maybe in future it would be useful )
3. there are plenty of topics how to negotiate result (it is useful in human games too) for example status of living groups could be resolved by reopening playing in disputable position, etc, etc. This is probably more advanced topic which I am not sure it is here any will to analyze.

But maybe I have to emphasize that I don’t see biggest problem in technical weaknesses of that particular project!!

I see it (and sorry I don’t know how to say it more mildly) in level of professionalism which choose this project as public example of flux’s usability.

---

<div class="post-metadata">

**Author:** ![Liso](https://avatars.discourse-cdn.com/v4/letter/l/898d66/32.png) [@Liso](https://discourse.julialang.org/u/Liso)\
**Post date:** [January 16, 2019, 6:40pm UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/12 "2019-01-16T18:40:20Z")

</div>

BTW choosing to make go bot is good idea. It is what Deepmind did to show that it was worth for Google to buy this company. It is very good area where to start tests and show that AI is working as it have to.

So it is very good to test flux in this area too. 🙂

---

<div class="post-metadata">

**Author:** ![MikeInnes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mikeinnes/32/3656_2.png) [@MikeInnes](https://discourse.julialang.org/u/MikeInnes)\
**Post date:** [January 17, 2019, 9:55am UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/13 "2019-01-17T09:55:45Z")

</div>

Yes, the AlphaGo model is not fully trained. Building a good AlphaGo model is a very non-trivial project even if you have a huge team of Google engineers at your disposal. Aside from the basic engineering of the model itself, ML papers don’t generally have a high standard for reproducibility, which means a lot of time needs to be spent just figuring out hyper-parameters. Then, even once you are seeing improvement during training, doing a full run means tens of thousands of dollars of compute time.

In my opinion our GSoC students made quite remarkable progress in the face of these challenges, and we wanted to showcase their hard work. We should probably add a note to the website just to set expectations, though. And I wholeheartedly second the idea that anyone interested should check out the repo, give it a go themselves and try to improve on it; we’d happily take improved weights for the website.

---

<div class="post-metadata">

**Author:** ![sridhar\_vijendran](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sridhar_vijendran/32/9108_2.png) [@sridhar\_vijendran](https://discourse.julialang.org/u/sridhar_vijendran)\
**Post date:** [June 30, 2019, 3:51am UTC](https://discourse.julialang.org/t/it-is-too-easy-to-beat-alphago-jl/19518/14 "2019-06-30T03:51:48Z")

</div>

Would it be possible to translate the best trained models from [http://zero.sjeng.org/](http://zero.sjeng.org/) to Flux models?  
If so how can I do that ?
