2015年11月2日月曜日

バックギャモンフェスティバル 光吉戦 その2

前回のつづき

小刻みに点数が動き、5-3/15pとなった第6ゲームで、ブランダーを連発しました。

その前に、まずは黒(光吉さん)の振り番です。キューブアクション?


ピップはほぼ互角ですし、白はバックマンを一枚逃がしています。黒からダブルするほど有利には見えませんでしたが、XGはダブルせよと言います。
黒の自慢はフロントの形のよさでしょうか? ポイントが連続していますし、次のロールでフルプライムが出来る目もあります。一方の白は、ポイントが連続しておらずフルプライムはできそうにありません。インナーの強さでも負けています。

黒の出目を見ると、すぐにいい目が10通りはあります。これらを考慮するとダブルすべきとなるんだなと思いました。see also

XGID=-bB-B-C-B--AbD---b-cbbb-A-:0:0:-1:00:5:3:0:15:10

X:backammon   O:mkisono
Score is X:3 O:5 15 pt.(s) match.
 +13-14-15-16-17-18------19-20-21-22-23-24-+
 | X  O        O    |   | O     O     O  X |
 | X           O    |   | O     O     O  X |
 |                  |   | O                |
 |                  |   |                  |
 |                  |   |                  |
 |                  |BAR|                  |
 |                  |   |                  |
 | O                |   |                  |
 | O                |   | X                |
 | O           X    |   | X  X  X  X       |
 | O           X    |   | X  X  X  X     O |
 +12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 132  O: 133 X-O: 3-5/15
Cube: 1
X on roll, cube action

Analyzed in Rollout
No double
  Player Winning Chances:   60.77% (G:30.00% B:0.92%)
  Opponent Winning Chances: 39.23% (G:11.80% B:0.83%)
Double/Take
  Player Winning Chances:   60.71% (G:31.13% B:0.93%)
  Opponent Winning Chances: 39.29% (G:12.12% B:0.91%)

Cubeless Equities: No Double=+0.404, Double=+0.872

Cubeful Equities:
       No double:     +0.559 (-0.067)
       Double/Take:   +0.626
       Double/Pass:   +1.000 (+0.374)

Best Cube action: Double / Take

Rollout:
  1296 Games rolled with Variance Reduction.
  Moves: 3-ply, cube decisions: XG Roller
  Confidence No Double: ± 0.012 (+0.547..+0.571)
  Confidence Double:    ± 0.019 (+0.608..+0.645)

  Double Decision confidence: 100.0%
  Take Decision confidence: 100.0%

  Duration: 5 minutes 24 seconds

eXtreme Gammon Version: 2.10, MET: Kazaross XG2

実戦ではキューブが動かず、光吉さんが41を振り、エースポイントに打ち込みました。私はオンザバーから62を振りました。


2でエンターして、あとの6をどーするか? 一番作りたいのは5ポイントじゃないかと思い11/5としましたが、ブランダーでした。
バーポイントにスロットすると、6の目はデュプリケートしているし、スタックを解消することもできます。

XGID=-bB-B-C-B--AbD---b-bbbb-aA:0:0:1:62:5:3:0:15:10

X:mkisono   O:backammon
Score is X:5 O:3 15 pt.(s) match.
 +13-14-15-16-17-18------19-20-21-22-23-24-+
 | X           O    |   | O  O  O  O     O |
 | X           O    |   | O  O  O  O       |
 | X                |   |                  |
 | X                |   |                  |
 |                  | X |                  |
 |                  |BAR|                  |
 |                  |   |                  |
 |                  |   |                  |
 |                  |   | X                |
 | O           X    |   | X     X     X  O |
 | O  X        X    |   | X     X     X  O |
 +12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 134  O: 127 X-O: 5-3/15
Cube: 1
X to play 62

    1. XG Roller++ Bar/23 13/7                  eq:-0.611
      Player:   40.91% (G:12.61% B:0.98%)
      Opponent: 59.09% (G:33.00% B:1.35%)

    2. XG Roller++ Bar/23 11/5                  eq:-0.718 (-0.107)
      Player:   39.40% (G:12.74% B:1.12%)
      Opponent: 60.60% (G:34.95% B:0.79%)

    3. 1-ply       Bar/23 8/2                   eq:-0.980 (-0.369)
      Player:   35.22% (G:10.48% B:0.60%)
      Opponent: 64.78% (G:35.75% B:1.17%)


eXtreme Gammon Version: 2.10, MET: Kazaross XG2

次のロールも連続ブランダー。バーポイントにスロットして、打たれなければまだ戦えそうです。


XGID=-aB-BAC-B---cD---b-bbbbAa-:0:0:1:61:5:3:0:15:10

X:mkisono   O:backammon
Score is X:5 O:3 15 pt.(s) match.
 +13-14-15-16-17-18------19-20-21-22-23-24-+
 | X           O    |   | O  O  O  O  X  O |
 | X           O    |   | O  O  O  O       |
 | X                |   |                  |
 | X                |   |                  |
 |                  |   |                  |
 |                  |BAR|                  |
 |                  |   |                  |
 |                  |   |                  |
 | O                |   | X                |
 | O           X    |   | X     X     X    |
 | O           X    |   | X  X  X     X  O |
 +12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 126  O: 116 X-O: 5-3/15
Cube: 1
X to play 61

    1. XG Roller++ 13/7 6/5                     eq:-0.316
      Player:   44.43% (G:14.13% B:0.62%)
      Opponent: 55.57% (G:25.39% B:0.47%)

    2. XG Roller++ 8/2 6/5                      eq:-0.499 (-0.183)
      Player:   39.18% (G:10.89% B:0.40%)
      Opponent: 60.82% (G:22.57% B:0.47%)

    3. 1-ply       13/7 8/7                     eq:-0.840 (-0.523)
      Player:   37.41% (G:10.32% B:0.35%)
      Opponent: 62.59% (G:34.08% B:1.10%)

    4. 1-ply       13/6                         eq:-1.000 (-0.684)
      Player:   32.93% (G:8.61% B:0.29%)
      Opponent: 67.07% (G:30.76% B:0.58%)

    5. 1-ply       13/7 5/4                     eq:-1.000 (-0.684)
      Player:   32.15% (G:7.94% B:0.25%)
      Opponent: 67.85% (G:30.23% B:0.62%)


eXtreme Gammon Version: 2.10, MET: Kazaross XG2



バックギャモンフェスティバル 光吉戦 その1

バックギャモンフェスティバルが終わった後は、燃え尽き症候群みたいな感じでしたが、またやる気が出てきたので、フェスでの対戦をじっくり振り返ってみることにします。

一回戦の相手は光吉さんでした。GGでは何度か対戦いただいたことがあり、対戦成績もそんなに悪くない相手だと認識してました(XGの記録によると6勝7敗)。リアルでの対戦は初めてだったし、先入観を持たすに試合できましたが、対戦後に光吉さんのレーティングを確認してビビったわけです。知らなくていいこともあるんだなーと思いましたw

さて、15ポイントマッチのオープニングゲームはありきたりの展開。私がバーポイントのホールディングゲームです。以下の局面で光吉さんダブル。


ピップ差は20くらいだし、まあいいだろうと思ってテイクしましたが、80点のエラーでした。

XGID=-----BDBB---bC-bcbBc-ba---:0:0:-1:00:0:0:0:15:10
X:backammon   O:mkisono

Score is X:0 O:0 15 pt.(s) match.
 +13-14-15-16-17-18------19-20-21-22-23-24-+
 | X           O  O |   | O  O             |
 | X           O  O |   | O  O             |
 |                  |   | O                |
 |                  |   | O                |
 |                  |   |                  |
 |                  |BAR|                  |
 |                  |   |                  |
 |                  |   |                  |
 | O        X       |   | X                |
 | O     X  X  X  O |   | X     X          |
 | O     X  X  X  O |   | X     X  X       |
 +12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 118  O: 139 X-O: 0-0/15
Cube: 1
X on roll, cube action

Analyzed in Rollout
No double
  Player Winning Chances:   78.75% (G:1.51% B:0.03%)
  Opponent Winning Chances: 21.25% (G:0.82% B:0.02%)
Double/Take
  Player Winning Chances:   79.31% (G:1.37% B:0.03%)
  Opponent Winning Chances: 20.69% (G:0.85% B:0.03%)

Cubeless Equities: No Double=+0.582, Double=+1.198

Cubeful Equities:
       No double:     +0.941 (-0.059)
       Double/Take:   +1.080 (+0.080)
       Double/Pass:   +1.000

Best Cube action: Double / Pass

Rollout:
  1296 Games rolled with Variance Reduction.
  Moves: 3-ply, cube decisions: XG Roller
  Confidence No Double: ± 0.007 (+0.934..+0.947)
  Confidence Double:    ± 0.009 (+1.071..+1.089)

  Double Decision confidence: 100.0%
  Take Decision confidence: 100.0%

  Duration: 6 minutes 19 seconds

eXtreme Gammon Version: 2.10, MET: Kazaross XG2

この場面、よく見ると黒が8,9,10ポイントを持っているので、光吉さんのミッドから安全に着地できるポイントが多いです。実戦の進行はこのあと以下のポジションのようになりました。仮にここでキューブアクションだったとすると、Double - Take です。実戦での私は、このような形と同じじゃないかと考えていたと思われます。


XGID=----BCBBB---bB--cbBbbbb---:0:0:-1:00:0:0:0:15:10
X:backammon   O:mkisono

Score is X:0 O:0 15 pt.(s) match.
 +13-14-15-16-17-18------19-20-21-22-23-24-+
 | X           O  O |   | O  O  O          |
 | X           O  O |   | O  O  O          |
 |                  |   |    O             |
 |                  |   |                  |
 |                  |   |                  |
 |                  |BAR|                  |
 |                  |   |                  |
 |                  |   |                  |
 |          X       |   |                  |
 | O        X  X  O |   | X  X  X  X       |
 | O        X  X  O |   | X  X  X  X       |
 +12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 105  O: 127 X-O: 0-0/15
Cube: 1
X on roll, cube action

Analyzed in Rollout
No double
  Player Winning Chances:   74.85% (G:1.83% B:0.05%)
  Opponent Winning Chances: 25.15% (G:1.57% B:0.05%)
Double/Take
  Player Winning Chances:   74.93% (G:1.71% B:0.04%)
  Opponent Winning Chances: 25.07% (G:1.57% B:0.05%)

Cubeless Equities: No Double=+0.500, Double=+1.013

Cubeful Equities:
       No double:     +0.796 (-0.084)
       Double/Take:   +0.880
       Double/Pass:   +1.000 (+0.120)

Best Cube action: Double / Take

Rollout:
  1296 Games rolled with Variance Reduction.
  Moves: 3-ply, cube decisions: XG Roller
  Confidence No Double: ± 0.008 (+0.788..+0.804)
  Confidence Double:    ± 0.009 (+0.872..+0.889)

  Double Decision confidence: 100.0%
  Take Decision confidence: 100.0%

  Duration: 8 minutes 08 seconds

eXtreme Gammon Version: 2.10, MET: Kazaross XG2

焦点がバーポイントクリアであることを考えると、黒は8,9,10ポイントを維持する価値が高いようです。以下の51で10ポイントを外してしまうとエラーです。


XGID=-----CCBBA--bB-bbbBbabb---:1:1:-1:51:0:0:0:15:10
X:backammon   O:mkisono

Score is X:0 O:0 15 pt.(s) match.
 +13-14-15-16-17-18------19-20-21-22-23-24-+
 | X        O  O  O |   | O  O             | +---+
 | X           O  O |   | O  O             | | 2 |
 |                  |   | O  O             | +---+
 |                  |   |                  |
 |                  |   |                  |
 |                  |BAR|                  |
 |                  |   |                  |
 |                  |   |                  |
 |                  |   |                  |
 | O     X  X  X  O |   | X     X  X       |
 | O     X  X  X  O |   | X  X  X  X       |
 +12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 111  O: 134 X-O: 0-0/15
Cube: 2, O own cube
X to play 51

    1. XG Roller++ 6/1 3/2                      eq:+0.430
      Player:   75.43% (G:2.09% B:0.03%)
      Opponent: 24.57% (G:1.42% B:0.02%)

    2. XG Roller++ 6/1 4/3                      eq:+0.418 (-0.012)
      Player:   75.04% (G:1.84% B:0.02%)
      Opponent: 24.96% (G:1.47% B:0.02%)

    3. XG Roller++ 6/5 6/1                      eq:+0.415 (-0.015)
      Player:   74.91% (G:1.76% B:0.02%)
      Opponent: 25.09% (G:1.42% B:0.02%)

    4. XG Roller++ 6/1 5/4                      eq:+0.408 (-0.023)
      Player:   74.69% (G:1.69% B:0.02%)
      Opponent: 25.31% (G:1.54% B:0.02%)

    5. XG Roller++ 10/9 10/5                    eq:+0.398 (-0.032)
      Player:   74.00% (G:2.40% B:0.06%)
      Opponent: 26.00% (G:1.45% B:0.02%)


eXtreme Gammon Version: 2.10, MET: Kazaross XG2

教訓:ミッドからの着地点が多いときは、テイクは慎重に

つづく

2015年10月13日火曜日

バックギャモンフェスティバル 2015

今年もバックギャモンフェスティバルに参加しました。2日間たっぷり遊べて楽しかったです。
「あれ? 3日間じゃないの?」という話はありますが、理由は後述します。


日本選手権 メイン

毎年このトーナメントに出たいなと思っていたのですが、いまいち実力が足りなくて予選で負けてました。今年こそは出るぞと意気込みネット予選にエントリーしました。ところが、一回戦で会社の同僚である丸山さんに負けてしまい、リエントリーしました。こちらのトーナメントの対戦相手はいずれも「オープンクラス」の強豪ぞろいだったのですが、運良く勝ち上がることができ、念願のメイントーナメント出場を果たしました。
メイン一回戦の対戦相手は光吉さんでした。GGでは"backammon"さんと何度か対戦していただいたことがあったのですが、リアル対戦は初めてです。途中11-4/15pとリードし「これは勝てるかも」などと思っていたのですが、結局はDMPの末に逆転負け。とても悔しかったです。マッチのふりかえりはこのあとゆっくりと。


ベースキャンプ

「オープンクラス」ってどんな感じかあまり考えたことがなかったのですが、バックギャモンの最高峰を目指す登山だと考えると、頂上へアタックするための「ベースキャンプ」みたいなところだと感じました。そこには私のような無名の登山家もいれば伝説のクライマーみたいな人も集っている。
そしてそこはとても混んでいるじゃないかと感じました。麓からすごいスピードで走ってキャンプにたどり着いた若者も、百戦錬磨のシニアプレーヤーも、Mister XもFrankもみんな一箇所にギュウギュウしている。ここから抜け出すのは並大抵ではないぞと強く感じました。
もっと強くなって、さらに空気の薄いところを目指したいと思います。


脳の体力不足

光吉さんに勝てなかったのも、フェス三日目に参加できなかったのもこれが原因です。今の私にはロングマッチを何試合もこなすだけの「脳力」が足りないのでした。つまり、一試合こなす毎に気力と体力を使い過ぎてしまい、どっと疲れます。これではチャンピオンになれないなーと思ったので、そのためのトレーニングを考えたいと思っています。
Backgammon Aceに君臨するFrankが来日していました。彼とはぜひお話ししたいと思っていたのですが、チャンスが無くて残念でした。プレイしているところをちょっと見てましたが、いかにもタフなドイツ人って風情で、こいつなら一日中ずっとプレイしてても全然平気そうだなーと思いました。


ニコ生オフ会

活気のあるニコ生コミュニティの皆さんは、面白い企画を次々生み出していてすごいと思います。去年に続きオフ会に混ぜていただき、楽しい時間を過ごすことができました。ありがとうございました。

[生放送の様子]
ニコ生放送中 #theta360 - Spherical Image - RICOH THETA


[オフ会]
ニコ生オフ! #theta360 - Spherical Image - RICOH THETA

Yahoo!ギャモン

さっきふぃりあさんのブログを読んで、昔のことを少し思い出しました。
当時の私はまだ二十代で、会社の独身寮で一人暮らししてました。ギャモンを覚えたてでYahoo!ギャモンに入り浸り、電話代が月二万円とかになってしまい「これはまずいぞ」なんてことになってました。そう、当時はインターネットに接続するために、電話回線にモデムをつないでたんですよね・・
今年のフェスでは、1ポイント勝ち抜きバトルで4連勝したところでふぃりあさんが登場し、連勝ストップ。メインのコンソレではucoさんに負け。Yahoo!ギャモンに集っていたメンバーと十数年経っても、いまだに楽しく遊べるバックギャモンとはなんと奥深いゲームなんでしょう! 


JBLスタッフのみなさん、プレイヤーのみなさん、ありがとうございました。また来年のフェスでお会いしましょう!

2015年9月9日水曜日

Backgammon dice recognition with Caffe

このブログでは異色の、技術ネタシリーズその2です。

前回は、バックギャモンをプレイしている動画からダイスと思われる領域を切り出して拡大表示してみました。今回は一歩進んで、画像認識技術を使ってダイスの目を読んでみました。

やったこと:
  1. 前回作ったシステムを使って、YouTubeで公開されている有名プレーヤーのプレイ動画から、ダイス部分を切り出して保存する。
  2. これらの大量の画像を手作業でラベル付け(1,2.. 6)する。
  3. Caffeというツールでニューラルネットワークに深層学習させる。
  4. 前回作ったシステムを改造して、リアルタイムにダイスの目を認識させて、結果を表示するようにした。
この中でもっとも大変な作業は2番目のラベル付けです。これまでに21000枚以上の画像を分類しましたが、あまりに単調な苦行でした。

ということで、こんなものが出来ました。


ニューラルネット自体は95%以上の正解率まで学習されているはずなのですが、まだまだ認識間違いが多いです。特に"6"がダメだなって感じです。人間にははっきり違いが分かるのですが、3とか4と誤認識する場合が多いです。

次は何しよっかなと思案していますが、チェッカーの位置を認識してピップ表示したり、あわよくばキューブの判断をしてくれる"リアル"Aceボタンとか作ってみたいです。

2015年8月12日水曜日

ULTIMATE GAMING MACHINE

夏休みに、画像処理プログラムの開発を進めようと思い、新しいノートパソコンを買いました。


画像処理を高速に行うために、NvidiaのGPUが入っているモデルにしました。つまりゲーミングマシンですね。
名目はプログラムの開発なわけですが、当然ギャモンもします。XGの解析速度がどれくらい速くなったか、これまで使っていたパソコンと比べてみました。

これまでは2010年モデルのiMacに、bootcampでWindows 8を入れて使ってました。これでも十分速いと思ってました。CPUはCore i5 2.8GHzです。


新しいノートPCは、ざっくりこれの2倍くらいの速さです。XG Roller++の解析なら、パソコンのファンが少しうなりを上げるとすぐに終わります。今時のCPUは速いですね。


最近の対戦で気になったポジションがあったのでロールアウトしました。
5ポイントマッチのオープニングゲームで、白の私からダブルしました。黒が4ポイントにアンカーしている形はよくあると思うのですが、それがブロットだとどう判断したものか、よく分かりませんでした。


ロールアウト結果は以下の通りで、勝率80%以上の大パスでした。こちらには悪い目は無いし、相手としては、せいぜい分の悪いランニングに持ち込むくらいしか勝ち目がないのだなと思いました。

処理時間は、これまで使っていたパソコンと比べて、やっぱり2倍くらい高速でした。XGの解析がGPUで高速化できるとしたら、ぜひ対応してもらいたいです。

XGID=--A-aCE-C---dC---bbbb---b-:0:0:1:00:0:0:0:5:10

X:mkisono   O:uco
Score is X:0 O:0 5 pt.(s) match.
+13-14-15-16-17-18------19-20-21-22-23-24-+
| X           O  O |   | O  O           O |
| X           O  O |   | O  O           O |
| X                |   |                  |
|                  |   |                  |
|                  |   |                  |
|                  |BAR|                  |
|                  |   | X                |
| O                |   | X                |
| O           X    |   | X  X             |
| O           X    |   | X  X             |
| O           X    |   | X  X  O     X    |
+12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 110  O: 127 X-O: 0-0/5
Cube: 1
X on roll, cube action

Analyzed in Rollout
No double
  Player Winning Chances:   80.29% (G:14.16% B:0.07%)
  Opponent Winning Chances: 19.71% (G:1.50% B:0.03%)
Double/Take
  Player Winning Chances:   80.91% (G:14.46% B:0.07%)
  Opponent Winning Chances: 19.09% (G:1.65% B:0.06%)

Cubeless Equities: No Double=+0.722, Double=+1.504

Cubeful Equities:
       No double:     +0.982 (-0.018)
       Double/Take:   +1.356 (+0.356)
       Double/Pass:   +1.000

Best Cube action: Double / Pass

Rollout:
  1296 Games rolled with Variance Reduction.
  Moves: 3-ply, cube decisions: XG Roller
  Confidence No Double: ± 0.004 (+0.979..+0.986)
  Confidence Double:    ± 0.010 (+1.346..+1.366)

  Double Decision confidence: 100.0%
  Take Decision confidence: 100.0%

  Duration: 3 minutes 08 seconds (新しいPC)


  Duration: 5 minutes 35 seconds (これまでのPC)

eXtreme Gammon Version: 2.10, MET: Kazaross XG2

2015年8月11日火曜日

偽リファレンスに気を付けろ

先日の日野くんの対戦より。
7ポイントマッチのオープニングゲーム。私はバックマンを11ポイントへ進めていましたが、日野くんが5ゾロを振ってブリッツの体勢です。

ダブルされた私は、景山さんの本に書いてある「リファレンス」と比較して局面を判断しました。

  1. 相手のインナーにあるブロットが攻撃される(2,5,4の目中心に)
  2. (リファレンスには存在しない)アウターのブロットが攻撃される(3の目を中心に)

ということでリファレンスではテイクの状況だったとしても、この局面はより悪いと思ってパスしたのでした。

ところが、上記の考察には大きな間違いがあって、本に書いてあるリファレンスはスプリットしているインナーのバックマンがアタックされる形なので、自分のコマはオンザバーなのでした。
オンザバーとアウターにブロットがあるのでどちらがよいのか? 当然盤上にいる方がましなのでした。すぐに危ない出目が多いとはいえ、アタックをしのいでアンカーを取れれば十分に戦えるはずです。よってここはテイクが正解でした。

XGID=-aa---E-C-A-dD-Aaa-c-Ab-b-:0:0:-1:D:0:0:0:7:10

X:hinognu   O:mkisono
Score is X:0 O:0 7 pt.(s) match.
+13-14-15-16-17-18------19-20-21-22-23-24-+
| X     O     O    |   | O           X  X |
| X           O    |   | O                |
| X           O    |   | O                |
| X                |   | O                |
|                  |   | O                |
|                  |BAR|                  |
|                  |   |                  |
| O                |   |                  |
| O                |   | X                |
| O                |   | X        X     X |
| O     O  X  X    |   | X     O  X     X |
+12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 142  O: 152 X-O: 0-0/7
Cube: 1
X on roll, cube action

Analyzed in XG Roller++
Player Winning Chances:   61.27% (G:33.82% B:1.04%)
Opponent Winning Chances: 38.73% (G:8.70% B:0.49%)

Cubeless Equities: No Double=+0.488, Double=+1.022

Cubeful Equities:
       No double:     +0.591 (-0.122)
       Double/Take:   +0.713
       Double/Pass:   +1.000 (+0.287)

Best Cube action: Double / Take

eXtreme Gammon Version: 2.10, MET: Kazaross XG2





2015年8月2日日曜日

Backgammon dice detection with OpenCV

最近、仕事でOpenCVというツールの使い方を少し覚えました。OpenCVというのは、コンピュータビジョン用のライブラリで、様々な画像処理を行うことができます。OpenCVにはいろんな機能があるので、全部分かったなんてことは全く無いのですが、とりあえず使えるようになった機能だけでも、そこそこ役に立つものができそうな雰囲気になってきたので、バックギャモンに応用してみました。


ご覧の通り、ダイスを検出して拡大表示するプログラムです。最近のバックギャモンのネット中継は高画質なので、ダイスの目まではっきり見えます。ただし問題は自分の目が悪いこと。ダイスだけ拡大してくれたらなぁ、と思ったことが多々あるので、自分でやってみました。

現在のプログラムは「背景差分法」というアルゴリズムを使っています。バックギャモンの動画では、ボードが固定されており、動いているのはプレイヤーの手やチェッカー、それと今回検出したい「ダイス」です。背景差分法を使うと、これらの動いている物がどこにあるか検出することができます。それらの物体の中から、ダイスの動きの特徴をするものを取り出す処理を書きました。
「ダイスの動きの特徴」を観察すると、プレイヤーの手やチェッカーに比べて小さい物体が動いてきて、最後には「止まる」ことが分かりました。というのはバックギャモンプレーヤーなら誰でも知っていますが、コンピューターのプログラムにはいちいち教えてやらないといけません。面倒ですね。

これくらいのプログラムでも、ネット中継のエクスペリエンス向上にはちょっと役い立つだろうと思います。
ついでに、今後の開発ロードマップも明らかにしておきましょう。

  1. 検出したダイスの目をコンピュータで認識して、きれいな画像で表示する(現在は動画から切り出して拡大表示)。
  2. タイムラプス動画でもダイスを認識できるようにする

とりあえずここまでです。そうすれば、私の棋譜入力ライフがだいぶ改善するはずです!

やってみて分かったのですが、この処理は計算量が多いので、動画をリアルタイムで処理できません。GPUで処理させればもっと高速に処理できると期待できるのですが、うちにはGPU搭載のパソコンが無いのでした。Macはオシャレ過ぎて役に立た無いことが分かったので、ここはWindowsの”ゲーミングマシン"でも新調しようかと思います。そうすれば、XGの解析もあっという間に終わるんじゃ無いかな。そろそろWindows 8パソコンが投げ売りになってたりするとうれしいのですが。

ダイス画像からの出目認識は、今をときめくDeep learningでやってみようと思います。これが有名な手段の目的化ですね。実際のところ、今回試作したプログラムは、ダイス画像を収集するためのツールとして作ろうと思い立ちました。Deep learningでは学習用に大量のデータが必要だと聞きました。ダイスくらい簡単なものならそれほどデータはいらないのかもしれませんが、所詮Deep learningをやってみたいだけなので気にしないでください。

Deep learningでダイスが判別できるようになれば、背景差分法をタイムラプス動画に適用した場合でも、差分を手当たり次第認識させることでダイス認識がうまくいくんじゃないかと考えています。

2015年7月18日土曜日

バックマン初期配置でもダブルせよ

先週末は、望月さんと景山さんの対戦を途中まで観戦していました。素晴らしい攻防で見応えありました。難解過ぎて分からない展開も多かったのですが、その中からひとつ取り上げます。


スコア5-5/25pのこの場面で、景山さんがダブルしました。まったく予見していなかった私の反応は、
なぜここでダブルなんでしょうか?


次の出目を調べると、少なくとも18通りはいい目です。なおかつポイントオンやアタックをしかける展開になるので、ギャモン率も30%と高いです。

ものすごくいい目
66 24/18(2) 9/3*(2) +1.188
55 8/3*(2) 6/1*(2) +0.972

非常にいい目
33 24/18(2) +0.877
64 24/14* +0.871
22,62 9/3* 5/3 +0.839
43,61 24/17* +0.828
65 9/3* 8/3 +0.791
52 8/3* 5/3 +0.744

いい目
44 9/1*(2) +0.613
11 5/3* 3/1* +0.598

XGID=-a-aBCB-BB--dBa--a-bc-b-B-:0:0:1:00:5:5:0:25:10

X:michy   O:mochy
Score is X:5 O:5 25 pt.(s) match.
 +13-14-15-16-17-18------19-20-21-22-23-24-+
 | X  O        O    |   | O  O     O     X |
 | X                |   | O  O     O     X |
 |                  |   |    O             |
 |                  |   |                  |
 |                  |   |                  |
 |                  |BAR|                  |
 |                  |   |                  |
 | O                |   |                  |
 | O                |   |    X             |
 | O        X  X    |   | X  X  X          |
 | O        X  X    |   | X  X  X  O     O |
 +12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 143  O: 150 X-O: 5-5/25
Cube: 1
X on roll, cube action

Analyzed in XG Roller++
Player Winning Chances:   63.02% (G:30.64% B:2.71%)
Opponent Winning Chances: 36.98% (G:11.46% B:0.80%)

Cubeless Equities: No Double=+0.476, Double=+0.979

Cubeful Equities:
       No double:     +0.618 (-0.079)
       Double/Take:   +0.697
       Double/Pass:   +1.000 (+0.303)

Best Cube action: Double / Take

eXtreme Gammon Version: 2.10, MET: Kazaross XG2


一方のわたくし。BGAceを振り返っていたら、似たような場面でmissed doubleしてました。



以下の17通りはいい目です。インダイレクトショットが決まる、バーポイントを塞ぐ、5ポイントボードにするなど、有利な展開になります。

66 24/18(2) 13/7(2) +0.976
64 24/14* +0.917
33 24/18(2) +0.910
22,62 13/7 9/7 +0.904
11 9/7 8/7(2) +0.862
21 9/7 8/7 +0.855
53 24/16* +0.849
61 13/7 8/7 +0.766
65 9/3 8/3 +0.703

上のポジションとの違いは、黒が2ポイントにセミデッドマンがいる、アウターを支配されているなど不利な点がありますが、バックマンを割っていないためアタックされる危険はありません。よってギャモン率は21%台です。

XGID=-bB-BBB-BA---Ba-ab-bb-bcB-:0:0:1:00:0:0:3:0:10

X:Player 1   O:Player 2
Score is X:0 O:0. Unlimited Game, Jacoby Beaver
 +13-14-15-16-17-18------19-20-21-22-23-24-+
 | X  O     O  O    |   | O  O     O  O  X |
 | X           O    |   | O  O     O  O  X |
 |                  |   |             O    |
 |                  |   |                  |
 |                  |   |                  |
 |                  |BAR|                  |
 |                  |   |                  |
 |                  |   |                  |
 |                  |   |                  |
 |             X    |   | X  X  X     X  O |
 |          X  X    |   | X  X  X     X  O |
 +12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 133  O: 118 X-O: 0-0
Cube: 1
X on roll, cube action

Analyzed in XG Roller++
Player Winning Chances:   65.69% (G:21.66% B:1.48%)
Opponent Winning Chances: 34.31% (G:10.89% B:0.69%)

Cubeless Equities: No Double=+0.429, Double=+0.879

Cubeful Equities:
       No double:     +0.572 (-0.063)
       Double/Take:   +0.635
       Double/Pass:   +1.000 (+0.365)

Best Cube action: Double / Take

eXtreme Gammon Version: 2.10

これらのポジションから得た私の教訓は、特に無いのが実情なのですが、そもそもバックマンが初期配置の状態でボケっとしていると、ダブルのチャンスを逃すこともあると気づいたことくらいです。

2015年7月8日水曜日

How Giant Thinks

先週日曜日の夜、だらだらとBackgammonAceで遊んでいた。さてそろそろ寝ようかと思ったところで、望月プロがプレイしているのに気がついた。観戦を始めるとそのゲームはすぐに終わったので、頃合いを見計らって”PLAY NOW!”ボタンを押すと、幸運にも望月プロとマッチアップされました!
以下の動画の18分過ぎからが私と望月プロのゲームです。


Watch live video from bgmochy on Twitch

望月プロは最近自分のプレイを中継されていますが、これはとてもよいコンテンツだと思います。なぜその手を選ぶのか、どう考えたらよいのか、ヒントがたっぷり詰まっているように思います。以前望月プロの対戦をライブで観戦していたとき、望月プロが何気無くつぶやいた一言で「ああ、そうやって考えるのか!」とすごく勉強になったことがありました。それが山盛り満載なのですから、見ない手はありません。

さて、ゲームは序盤に私が有利な展開となり、以下の場面でダブルしました。これでパスは無いだろうと思っていましたが、BGAce曰くパス、XG曰くテイクでした。


XGID=aaa-BaC-C--AdC-A-c-d-A-A--:0:0:1:00:0:0:1:0:10

X:mkisono   O:mochy
Score is X:0 O:0. Unlimited Game, Jacoby 
 +13-14-15-16-17-18------19-20-21-22-23-24-+
 | X     X     O    |   | O     X     X    |
 | X           O    |   | O                |
 | X           O    |   | O                |
 |                  |   | O                |
 |                  |   |                  |
 |                  |BAR|                  |
 |                  | O |                  |
 | O                |   |                  |
 | O           X    |   | X                |
 | O           X    |   | X     X          |
 | O  X        X    |   | X  O  X     O  O |
 +12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 159  O: 192 X-O: 0-0
Cube: 1
X on roll, cube action

Analyzed in Rollout
No double
  Player Winning Chances:   66.45% (G:30.79% B:3.17%)
  Opponent Winning Chances: 33.55% (G:6.22% B:0.26%)
Double/Take
  Player Winning Chances:   66.12% (G:31.71% B:3.66%)
  Opponent Winning Chances: 33.88% (G:6.32% B:0.32%)

Cubeless Equities: No Double=+0.604, Double=+1.220

Cubeful Equities:
       No double:     +0.810 (-0.139)
       Double/Take:   +0.948
       Double/Pass:   +1.000 (+0.052)

Best Cube action: Double / Take

Rollout:
  1296 Games rolled with Variance Reduction.
  Moves: 3-ply, cube decisions: XG Roller
  Confidence No Double: ± 0.015 (+0.795..+0.824)
  Confidence Double:    ± 0.025 (+0.924..+0.973)

  Double Decision confidence: 100.0%
  Take Decision confidence: 100.0%

  Duration: 36 minutes 21 seconds

eXtreme Gammon Version: 2.10


自分の対戦を後から見返すのも意外と楽しいです。あのときなんでこんなに長考していたのかと思うようなところもあります。
たとえば以下の局面では、望月プロが即座に指摘していたように、8ポイントに4枚乗せる手は悪いです。実際私も、ダイスをピックアップした直後に「しまった」と気がつきました。


XGID=aaa-BaC-C--AdC-A-c-d-A-A--:1:-1:1:54:0:0:1:0:10

X:mkisono   O:mochy
Score is X:0 O:0. Unlimited Game, Jacoby 
 +13-14-15-16-17-18------19-20-21-22-23-24-+
 | X     X     O    |   | O     X     X    | +---+
 | X           O    |   | O                | | 2 |
 | X           O    |   | O                | +---+
 |                  |   | O                |
 |                  |   |                  |
 |                  |BAR|                  |
 |                  | O |                  |
 | O                |   |                  |
 | O           X    |   | X                |
 | O           X    |   | X     X          |
 | O  X        X    |   | X  O  X     O  O |
 +12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 159  O: 192 X-O: 0-0
Cube: 2, O own cube
X to play 54

    1. XG Roller++ 21/16 15/11                  eq:+0.272
      Player:   62.65% (G:21.60% B:1.51%)
      Opponent: 37.35% (G:7.23% B:0.26%)

    2. XG Roller++ 15/11 13/8                   eq:+0.232 (-0.040)
      Player:   60.66% (G:22.94% B:1.71%)
      Opponent: 39.34% (G:7.94% B:0.28%)

    3. 4-ply       23/18 15/11                  eq:+0.238 (-0.034)
      Player:   61.91% (G:20.08% B:1.26%)
      Opponent: 38.09% (G:7.51% B:0.23%)

    4. 4-ply       15/10 6/2*                   eq:+0.223 (-0.049)
      Player:   59.74% (G:24.14% B:2.15%)
      Opponent: 40.26% (G:8.89% B:0.37%)

    5. 3-ply       11/2*                        eq:+0.212 (-0.061)
      Player:   59.31% (G:23.65% B:2.13%)
      Opponent: 40.69% (G:8.48% B:0.32%)


eXtreme Gammon Version: 2.10


ゲームはその後、望月プロがタイミングの良いバックゲームの体勢に持ち込みました。コメントを聞いていると、自分がどれだけ遅れているからタイミング十分など、状況を実に正確に把握しているんだなということを学びました。私の方は、望んでいたわけではありませんが、上手のバックゲームに相対しているので難しかったです。

その後、私が発生させたブロットを望月プロがヒットし、そろそろ十分かというところで「さて4倍キューブを返しましょうか」と提案されました。How I was thinking at that time?


正直に言うと、このキューブはどう考えたらいいかよく分かりませんでした。ピップは勝っているし、望月プロはまだ23ポイントに2枚残しています。「迷ったらテイク」に従い、テイクすることは決めた上で、あまりにもヒドいdecisionだと恥ずかしいので、こっそりAceボタンで確認してました。 (パスしてたらだいぶ恥ずかしかったw)

XGID=-CbCC-B-B--a-----bbbbbBb--:1:-1:-1:00:0:0:1:0:10

X:mochy   O:mkisono
Score is X:0 O:0. Unlimited Game, Jacoby 
 +13-14-15-16-17-18------19-20-21-22-23-24-+
 |    X        O    |   | O     O  O  X  O |
 |             O    |   | O     O  O  X  O |
 |                  |   |       O  O     O |
 |                  |   |                  |
 |                  |   |                  |
 |                  |BAR|                  |
 |                  |   |                  |
 |                  |   |                  |
 |                  |   |                  | +---+
 |             X  X |   | X  X  X  O  X    | | 2 |
 |             X  X |   | X  X  X  O  X    | +---+
 +12-11-10--9--8--7-------6--5--4--3--2--1-+
Pip count  X: 124  O: 96 X-O: 0-0
Cube: 2, X own cube
X on roll, cube action

Analyzed in Rollout
No redouble
  Player Winning Chances:   68.49% (G:17.33% B:0.58%)
  Opponent Winning Chances: 31.51% (G:5.71% B:0.12%)
Redouble/Take
  Player Winning Chances:   68.86% (G:17.97% B:0.65%)
  Opponent Winning Chances: 31.14% (G:5.80% B:0.13%)

Cubeless Equities: No Double=+0.491, Double=+1.008

Cubeful Equities:
       No redouble:     +0.788
       Redouble/Take:   +0.787 (-0.001)
       Redouble/Pass:   +1.000 (+0.212)

Best Cube action: No redouble / Take
Percentage of wrong pass needed to make the double decision right: 0.5%

Rollout:
  1296 Games rolled with Variance Reduction.
  Moves: 3-ply, cube decisions: XG Roller
  Confidence No Double: ± 0.009 (+0.780..+0.797)
  Confidence Double:    ± 0.014 (+0.773..+0.802)

  Double Decision confidence: 54.7%
  Take Decision confidence: 100.0%

  Duration: 6 minutes 51 seconds

eXtreme Gammon Version: 2.10


緊張するゲームでしたが、ER的にはよい結果が残せて満足でした。
ということで、BGAceでは"mkisono"ではなく、なぜか”insanity”のIDでプレイしています。みなさんよろしく!