サイト内検索
Translation here

2016/03/15(火)alphago 考察

お疲れ様です、野村です。

今日は深層学習に触れます。
正直、AIもあんまりよく分かっていないので的外れを書いてしまうかも知れません、ご了承ください。

色々な文献やサイトがありますので、一部ながらご紹介します。


アルファ碁の強さは序盤の形成判断が恐ろしく強い事にありますが、9路盤でやるとどうなるのか気になります。
9路だとそもそも形成判断が難しく、すぐに戦いになるので裏から食い破るとか奇策の応酬です。
変則的な流れに弱いんじゃないかなぁ、と思うんですよね。
多分これはアルファ碁だけじゃなくて他の囲碁ソフトにも言えると思います。

そういう意味では、9路盤で最強の囲碁ソフトとかの話をするのもいいかもしれませんね。
19路だとやはり地合いや形成判断がカギなので、開発の目がそこに向いてしまうのも仕方のないことかもしれません。

2016/02/18(木)衝立将棋:評価式考察

お疲れさまです、野村です。

日常ブログにある事を技術的にもやろう、という事で残念ながら授業?講義の時間です。
今日はちと物々しいヤツです。

ついたて将棋始めました:きょうのごろう

まず方針を決める必要があります。
攻撃するか、防御するか、情報を集めるか。
この場合、情報を集める事は無駄な手を差していると理解してください。
その代わり、「どんな」攻撃・防御をするかの方針を決めやすくなります。

例えば、中飛車で中央突破に行く場合は4筋と6筋に桂馬を上げ、ついでに2筋か6筋に角を上げておけば銀を取って同金を誘えるので、居玉なら即詰みを狙いやすい。
防御をするなら、さっさと飛車先の歩を角頭にまで持っていって相手の調子をいったん崩し、五手目から飛車筋まで玉を持っていきます。
相手が中飛車だと分かったら玉をそっちに持っていくのが好形である事が多いです。

これはミスリードを誘う意味で重要なのですが、どこから攻められてもいいように全ての歩には紐づけをしましょう。
相手が様子見の一手のつもりであれば、手損で流すのではなくそこを攻撃の拠点にしてしまうぐらいの思い切りも重要です。

評価の仕方はこれぐらいでしょうか。
問題は、どの評価式を適用するのかが見えにくいこと。評価値を決められないのです。
そして、最初の形は一律なので、これを評価式のベースにしてしまうと誤った手を正しいものとしてしまう危険性があります。

例を上げましょう。

12手.png


この状態で△7三歩成と進めた時、後手は何で取られたか分かりますか?
という話にもなるんですがそれより重要なのは、この取られた駒を取っていいのか悪いのか判断が出来ない事です。
この場合、取らずに飛車を逃がす手もありますが、以下のような展開が考えられます。

16手.png


後手、飛車を逃がし先手と金がこれを追い、急ぎ玉を逃がすため金を上げた局面です。
次の先手は王手も駒取もなく後手番が回ります。こういう状況が想定されます。

18手桂馬.png

18手飛車成.png

18手歩.png


どれも対処を間違えると即詰みなのが分かりますかね?
今から玉が角の超えて向こうに逃げるのはできないので、何か対策を考えないとダメなわけです。
受けを間違えにくい手としては、1四玉に逃がす手でしょうか。

22手歩.png


本将棋脳だとこうなりやすいでしょう。
これについては1五金と裁くのが正解です。

そうすると先手がとたんに焦り始めます。
この局面だと無難に1六とで金を取るのが正解ですが、この時金はいないので実は玉にうまく逃げられたように錯覚してしまうのです。

26手歩.png


見えていれば正しく詰められますが、見えていない状態で詰みまで進められますか?
これが評価式を狂わせている要因です。

では戻ります。

18手桂馬.png

20手桂馬.png


これで後手は嫌でも金をと金の前に持ってくるしかなくなりました。
相手に金を与えたことと、金を取ったのは桂馬成だと断定できるからです。

28手桂馬.png


発展します。
▲金打ちで王手に対し△同金と受け、▲同成桂と追ったところに△同玉とします。
この時、同玉とせず△4二玉とすれば詰みます。

問題なのはこの時の王手があまりにも多すぎることです。
どんな手で王手にしてきたのか分からないため、少なくない反則手を稼ぐ事が出来るでしょう。

今、盤面を見ながら言うので、▲1六飛車成の王手に対して1五金と受ければいいじゃん、と思うんですが
後手は8六に飛車が居るなんて夢にも思っていません。ここまで飛車の情報がないのでそんな手を思いつきもしない。
むしろ、2筋の打ち込みだろうと思って飛車を動かしてみたり、全部だめなら玉で取る動きをしてみたり。

この後の展開として、反則負けになるかやっとの思いで2四玉に逃がせたと思ったら2五金で即詰みをされています。

AIを強化するなら、準備の手(何も起こっていない手)をすべて数え、その手の分だけ最悪の可能性を見通したパターンを用意しなければならないため、本将棋のAIルールがそのまま使えない事が多いのです。
これが衝立将棋でAIを正しく作れない事に拍車を掛けています。

ぶっちゃけ、これらを想定してAIを作れれば相当強いと思うんですが、新しい手が研究された時の打ち筋も考察していくと途方もない量に備えなければならず、突き詰めていくと何もない手(見えなくて分からない手)の数だけ危険な可能性が高まっていくわけですから、
人間対人間では防御はそこそこに攻撃の手に重きを置くのが良く見えてしまいますね。

2016/02/06(土)マインスイーパーアルゴリズム(応用編)

この記事は概要からの続きです。
基本編ページ

計算の仕方:
1と2のそれぞれのセルでANDを取り、以下のルールで評価を行う。
・一致数
 →入力が?の場合は結果を問わず0とする
・不一致があった場合は評価値を-1にする
 →入力が?の場合は処理をスキップする

(全てのケースは別ページにまとめます)
今回は他のパターンは不一致で評価値0になるケースですが、以下のようにすると実践的になります。

例図
□|□|□|□|□|
□|□|1|2|□|
これも同じように考えてみましょう。
  • 1だけ
?|●|●|●|?|
?|●|1|2|?|
  • 2だけ
?|?|■|■|■|
?|?|1|2|■|
【凡例】
●:1だけの候補
■:2だけの候補
★:1と2の候補
?:いずれの候補でもない
?|●|★|★|■|
?|●|1|2|■|
同様のルールで評価の高い組み合わせは以下です。
以下はすべて1点です。
?|□|★|□|■|
?|□|1|2|□|
?|□|★|□|□|
?|□|1|2|■|
?|□|□|★|■|
?|□|1|2|□|
?|□|□|★|□|
?|□|1|2|■|
以下はすべて0点です。
?|●|□|□|■|
?|□|1|2|■|
?|□|□|□|■|
?|●|1|2|■|

?+?+?+?+?+?|□+□+□+□+●+□|★+□+□+□+□+□|□+★+□+□+□+□|■+□+■+□+□+□|
?+?+?+?+?+?|□+□+□+□+□+●|1+1+1+1+1+1|2+2+2+2+2+2|□+■+□+□+□+□|
(細かい内容は別ページにまとめます)

さて、最後に今まで出てきたすべてのパターンでORを取り、0になった場所は安全です。
この時の?は1とします。
(今回は例が良くないので安全地帯はありません)


別例で説明しましょう。
□|1|□|□|2|
□|□|□|3|□|
凡例
■:2→3
★:2→3
確:確定
●|1|★|確|2|
●|●|★|3|確|

分離します。

5点
□|1|★|確|2|
□|□|□|3|確|
□|1|□|確|2|
□|□|★|3|確|

 |1|★|確|2|
 |1|★|3|確|
この形まではできます。

配置は運ゲーですが、その際の最適な理論値は求められます。
これにアルゴリズムの話で最適解を求めるところまで突き詰めると
「最短クリック数でマインスイーパーを完了させる時、最短で何クリックで実現できるか」を測るのも面白そうです。
(空白である場所を探してクリックする等)

しかしこれを実装するとなると非常に難しい事に気づくと思います。
試しに6×6ぐらいでやってみるといいかも?
OK キャンセル 確認 その他