データサイエンティストAnchorBluesのブログ

とある民間企業で数学とコンピュータサイエンスをやっている研究員のブログです。

どうして詰将棋で棋力が上がるのかがわかった気がする

一般的な本に掲載されている詰将棋ってだいたい以下の様な感じですよね。

f:id:AnchorBlues:20180131184333p:plain

こういう詰将棋を見て自分は毎回、

「こんな局面実戦では出てこないだろ。実戦で出てこないような局面を考えることで将棋の腕が上達するとは思えない」

と考えていました。

だから、今まで詰将棋をほとんどやってきませんでした。

とある日、App Storeを徘徊していると、詰将棋アプリが目に飛び込んできました。

試しにダウンロードして、久しぶりに詰将棋をやってみることに。

そのアプリに収録されている詰将棋も、やはり実戦では見ないようなコマの配置になっているものばかりでした。

「こんなものやっても棋力は上達しないよなあ、でも、他にやることないし、何問かといてみるか」

このようなモチベーションが低い状態で取り組み始めました。

で、やってみた結果、自分は一つの事に気が付きました。それは

「将棋の強さは結局、手筋や戦法をある程度暗記してしまえば、その後は戦局を脳内に映し出す力が大きく影響してくる」

ということです。

詰将棋を解くためには、脳内で駒の動きを細かく追っていかなければいけません。5手先や7手先まで、画面上のコマを動かさずに脳内でコマを動かして、脳内に戦局を映し出すことが必要です。

具体的には、「ここでこのコマをこの場所に動かした時の相手の最善手はこれで、それに対して今度はこのコマを〜」というプロセスを脳内でイメージしないといけないのです。

詰将棋では、この「脳内イメージ力」を鍛えることに主眼を置いた将棋トレーニング法であるということ、そして、この「脳内イメージ力」こそが、将棋で強くなるうえで最も重要な要素ではないかということに気がつきました。

なぜなら、手筋などの知識は、使える局面が限られていますが、「脳内イメージ力」は、将棋のどの局面においても「手を読む力」として使うことができる能力だからです。

手筋などを覚える能力も勿論大事です。しかし、それだけだと強くなれません。「脳内イメージ力」がないと、脳内の知識だけで太刀打ち出来ないような難解な局面では手も足も出なくなるからです。

まとめると、

  • 従来の自分の考え方
    • 将棋の強さは、戦法や手筋・寄せの技術をどれくらい知っているかによって決定する
    • なので、将棋に強くなるためには、そのような実戦的な知識を蓄えることが重要である
    • 従って、手筋や寄せの技術に直結しない(つまり実戦的でない)詰将棋をやっていても、将棋は強くならない
  • 今の自分の考え方
    • 将棋の強さに関して、知識も勿論重要だが、それ以上に「脳内に戦局を映し出す力」が重要である。
    • この力を蓄えることで、どのような局面においても、最善手を見切ることができるようになる。
    • この能力は、知識とは異なり、いついかなる局面でも発揮することができる、非常に汎用性の高い能力である。
    • 羽生善治さんが本の中で、「将棋の練習を毎日やれば、必ず有段者になれる。その代わり、1日でも練習を怠ってはならない。1日でも間隔が空いてしまうと、感覚が鈍ってしまう」と書いていたが、ここで言う「練習」とは、知識の習得ではなく、脳内イメージ力のことを指していたのだろう。
  • 将棋の知識やスキルは習得しようと思ったら誰でも習得することができるものである。ただ記憶すればいいだけのことだから(勿論記憶する量は膨大になるのだろうけど)。
    短時間で習得可能であり、即効性があるが、知識で太刀打ち出来ない問題が解けないので、あるレベルで能力の上昇が止まってしまう。
  • 脳内で戦局をイメージする力というのは、すぐに身につけることができるものではない。日々努力を積み重ねていく課程でしか習得することができない。
    習得に時間がかかり、すぐに効果を得ることができるものではないが、鍛えれば鍛えるほど強くなっていくので、レベルアップし続けていくことができる。

就職活動で考えても同じことが言えるかもしれないです。

「将棋が強い人がほしい」企業であれば、「現時点で知識をたくさん持っていてその御蔭である程度強い人」よりも、「現時点では知識を持っていないのであまり強くないが、脳内イメージ力に関するポテンシャルが高い人」の方が、貴重な人材であることが伺えます。

 

...もっと脳トレやろう。

シンボルグラウンディング問題について -人工知能が超えつつある壁

最近は人工知能技術の発展が目覚ましい。
どうして最近になって急激に人工知能技術が発展したのだろうか?
その理由の一つとして、Deep Learningによって、「シンボルグラウンディング問題」を克服することが出来たから、というのがあげられる。
Deep Learningについては今回はひとまず置いておいて、今回はこの「シンボルグラウンディング問題」についてまとめたいと思う。

シンボルグラウンディング問題とは

記号(文字列、言葉など)を、それが意味するものと結びつけることが出来るかどうか、という問題。
コンピュータは2012年頃まで、このシンボルグラウンディング問題を克服できずにいた。
つまり、記号がどのような概念を指すものなのかを理解したり、記号をその意味するところと結びつけたりすることが出来ずにいたのだ。

シンボルグラウンディング問題の具体例

あなたはどのようにして「ツノメドリ」の概念を獲得する?

例をあげて説明しよう。
以下の画像を見ていただきたい。

f:id:AnchorBlues:20180131180913p:plain

この画像は、「ツノメドリ」という鳥の画像である。
画像をじっくり見て、ツノメドリの特徴をしっかりと捉えていただきたい。
その上で、以下の質問に答えてみよう。
下の画像に写っている鳥はツノメドリだろうか?

A. B.
f:id:AnchorBlues:20180131181012p:plain:w300 f:id:AnchorBlues:20180131181034p:plain:w300

なんと馬鹿げた問題だろう。Aはツノメドリで、Bはツノメドリではない(ハトだ)。当然のことである。
ではあなたは、どのようにしてそのように判断することが出来たのだろうか?
恐らく、最初にツノメドリの画像を見た際に、ツノメドリの特徴を抽出していたのではないかと思う。以下のような感じに。

  • 目が縦に細く見えるような模様
  • ペンギンみたいな白黒の身体
  • クチバシが短い
  • 足に水かきがついている

そして、Aに写っている鳥はこの特徴に合致しているから「ツノメドリである」、Bに写っている鳥はこの特徴に合致していないから「ツノメドリではない」と判断したはずだ。

コンピュータが一から概念を獲得することは至難の業

これは人間にとって、ごくごく自然なことであるように思われる。
しかし、コンピュータではこの処理を的確に行うことが出来ないのだ。
何故か。画像のどこをどう見たらいいのか、つまりツノメドリの特徴として何に着目したらいいのか分からないからである。
あるコンピュータは、ツノメドリの特徴を以下のように捉えてしまうかもしれない。

  • 翼は常に閉じている
  • 鳥の背景の色が灰色っぽい

そしてこの特徴を元に、翼を開いていて背景の色が灰色っぽくないAの画像の鳥は「ツノメドリではない」、翼を閉じていて背景の色が灰色っぽいBの画像の鳥は「ツノメドリである」と判断するかもしれない。
普通の人間はこんなふうには考えない。ある種類の鳥を認識する時に、翼が閉じているかだとか、背景が何色だとかに着目しても、ツノメドリという概念を獲得することが出来ない、ということを「直感的に(あるいは経験的に)」分かっているからだ。
しかしコンピュータはそれが分からない。画像のどこを見たらツノメドリという概念を獲得することになるのかわからないのである。
もしコンピュータのツノメドリの認識精度を上げさせたい場合には、「鳥のある種類の概念を獲得するときには、その身体の色やクチバシの形状を見ればいいんだよ」というように、どこに着目したらいいのか、ということをまず教えてあげないといけない。

Deep Learningの登場によって

しかし最近出てきたDeep Learningでは、この問題を克服しつつある。
画像を見た時に、その画像のどこをどのように見たらいいのか、というところまで、コンピュータが自動的に識別できるようになってきたのだ。
このDeep Learningの技術の発展が、人工知能技術の発展を押し上げているのである。

参考文献

松尾 豊 著『人工知能は人間を超えるか』(角川EPUB選書)

Ubuntuが重いと思った時には

デュアルブートで入れたUbuntuが重いと思ったときには、そのPCにGPUが搭載されていたかどうかを確認してみよう。 GPU搭載PCにUbuntuデュアルブートした場合、そのGPUのドライバーをインストールしないと、Ubuntuの動作はとてつもなく重くなってしまう。 もしNVIDIAグラフィックカードを使っている場合には、

qiita.com

↑のサイトを参考にするといい。 なお、ドライバーをインストールした後には再起動を忘れずに。 再起動後には高速に動作ししているはずである。

来シーズン、西部の牧田和久の成績はきっと悪くなる。

http://blog.livedoor.jp/nanjstu/archives/50263372.htmlblog.livedoor.jp

で、牧田和久WBC代表に選ばれたことを知った。 この選手、貴重なアンダースロー枠だから間違いなく必要ではあるが、 その実力は一体如何ほどなのであろうか?

->エクセルで簡単なセイバー・メトリクスをやってみた。

https://ja.wikipedia.org/wiki/%E7%89%A7%E7%94%B0%E5%92%8C%E4%B9%85

牧田和久 - Wikipedia

から牧田和久のこれまでの詳細成績のデータを獲得し、そのデータからBABIPとFIPを計算してみた。

その結果、以下の通りとなった。 f:id:AnchorBlues:20161220203547p:plain

なお、計算の際には、

BABIP=(被安打-被本塁打)/(打席数-四死球数-被本塁打数-奪三振数)

FIP=(被本塁打数×13+(四死球数-敬遠数)×3-奪三振数×2)/(イニング数)+3.12

という式を利用した。

2016年度シーズン、牧田和久防御率1.60という素晴らしい成績を残したが、一方で、被BABIPも0.213と、例年に比べるとかなり小さな値となった。 つまり、今シーズンの牧田和久防御率が良かったのは、「フェアゾーンに飛んだ打球が運良くヒットでなくアウトになった確率が高かった」、つまり「運が良かった」から、と言うことが出来る。

その証拠に、投手の成績から運の要素を取り除き、投手の実力を反映した指標である「FIP」の数字を見ていると、2016年シーズンの成績は3.44であり、この数字は牧田和久の通算のFIPの数字(3.53)と大きく変わらない。 2016年シーズンに牧田和久の実力が大きく向上したというわけではないのだ。

というわけで、来シーズン牧田和久の成績は悪化するという予想を立てたのだが、実際はどうだろうか。 何はともあれ、WBCにおける活躍にまず期待したい。