あなたの「必」の書き順を教えてください

将棋ソフトの開発者の棋力は大して高くない、と聞いたことがあります。
中には「なぜこのソフトがこの手を選んだのか、開発者である私にもわかりません」とか基本的な手筋や定跡を知らない、などという人もいるらしいです。
それなのに、なぜトッププロを負かし、現在では対プロ戦が終了してしまうほど、将棋ソフトは強くなったのでしょうか?

スポーツの世界では「名選手、名監督ならず」という言葉があります。
選手時代の実績と、監督としての手腕は別物、ということです。
たしかに、選手として大成しなかった人でもコーチや監督として率いたチームや教え子が非常に良い成績を修めた例はたくさんあります。これは教え方が上手、とか選手のやる気や潜在能力を引き出すのがうまい、ということが起因しているわけです。逆に選手時代に大選手、大記録を残した人は、監督やコーチとして実績を残せない場合も多いです。これは努力家の元選手が選手に対して自分と同じ努力や猛練習を強要して潰してしまう、とか、天才選手が人並みはずれたことを天性の能力でこなしてしまうのに対して、凡人の選手が同じことができないとか、タイミングとか間、勘、といったことが言葉で上手く伝えられない、といったことが理由のようです。

将棋ソフトも同じことが言えるのでしょうか?プログラムの組み方さえ上手なら、基本的な手筋や守備の駒組みや駒の損得や手損・手得、定跡などを知らなくても、勝てる将棋ソフトが作れるのでしょうか?

しかしながらもしこの仮説が正しいとするならば、別の疑問が生じます。
人間が将棋を強くなるときも、同じように
「基本的な手筋や守備の駒組みや駒の損得や手損・手得、定跡を知らなくても将棋に勝てる」
ようになるはずです。(この考え方、おかしいでしょうか?)

なぜ将棋ソフトの開発者は自分より棋力が高いソフトを作れ、さらにはトッププロを負かしてしまうような強大なソフトを作れるのでしょうか?
それとも本当は開発者はトッププロを負かすほどの棋力があるにも関わらず、謙遜しているのでしょうか?

A 回答 (9件)

(仮説)「基本的な手筋や守備の駒組みや駒の損得や手損・手得、定跡を知らなくても将棋に勝てる」??



非常に素晴らしい着眼点ですが結論が間違っています。
いまのコンピュータが無茶苦茶強いのは、
人間・プロ棋士よりも、基本的な手筋や守備の駒組みや駒の損得や手損・手得に関する評価(すなわち大局観)が優れているからです。


昔のプログラムは、「飛車をとったら何点、歩をとったら何点、敵玉の近くにと金を作ったら何点、自王の周りを金銀で囲ったら何点、相手の王様を詰ましたら何点」って感じで、プログラマの持つ知見(棋力)をコンピュータに教えて、コンピュータは高得点を目指す手を選択するように作っていました。この時代は、先を読む力こそコンピュータは優れていましたが、最終的な局面を評価する力「大局観」(この世界では評価関数と呼ぶ)がプログラマに由来するので、たいして強くなかったのです。

いまは、すでに指摘がある通り「ディープラーニング」という手法が発達し、「巨大・膨大なデータを与えて、それをコンピュータ自身に分析させることでそのデータの中に潜む関係・関連をコンピュータ自身に発見させ覚えさせる」ことができるようになりました。

さらに、かつては、コンピュータに与える「巨大・膨大なデータ」としてはプロ棋士さんたちの作った棋譜データが用いられていましたが、現在では、「コンピュータ同士による対局の結果」を用いることができるようになりました。

ルールだけを教えてコンピュータ同士に対局させると、最初は「人間の初心者同士」のような稚拙な勝負にしかならないのですが、やがてどうすれば勝ちやすいのかをコンピュータ自身が発見し(←ここがディープラーニングのキモ)、飛車先を突き、角道を開け、自玉を金銀で囲うようになりとどんどん上達していくのです。
この結果、評価関数がどんどん改善(改良)されていくのです。
コンピュータ同士の対局は、時間と電力とパソコン台数さえあればすぐに数千万局以上を重ねることができ、このようにして上達したプログラムが、過去にプロ棋士を破ったソフトウェアよりはるかに強くなったことが確認されています。

---
人は生まれてからたくさんの「猫」と出会い触れ合ったことで猫の特徴を体の中に染み込ませています。
いま、これまで出会ったことのない「初めての猫」を見てもそれが「猫」だとわかるのは、たくさんの経験を経て「猫の特徴」がわかっているからです。これがディープラーニング。
決して「いままで見たこと(出会ったこと)がある猫」だから猫だとわかるのではなく、自分の知っている猫の特徴と突き合わせて目の前の動物が「猫」だとわかるのです。
これが「人が行っている」ディープラーニング。


これと同じで、決して「過去に覚えた、棋譜の中にある手」を選んでいるのではなく、「膨大な棋譜の分析を踏まえ、勝つにはどうするのが望ましいか」という「勝つための指し手の特徴」と突き合わせて指し手を選択しているのです。
これがディープラーニング。

冷静に考えれば、人も将棋を上達する過程で同じことをしています。
人も基本的な手筋や守備の駒組みや駒の損得や手損・手得、定跡について、言語化されたもの(棋書や先生の指導)を学び、また自身のたくさんの対局を通じて「勝つための指し手の特徴」を獲得していくのです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます

>最終的な局面を評価する力「大局観」(この世界では評価関数と呼ぶ)がプログラマに由来するので、たいして強くなかったのです。

過去の将棋ソフトはプログラマの棋力に依存するので、プログラマの棋力を超える将棋ソフトは作れなかったんですね。だからトッププロと比較すると弱かったんですね。

>ルールだけを教えてコンピュータ同士に対局させると、最初は「人間の初心者同士」のような稚拙な勝負にしかならないのですが、やがてどうすれば勝ちやすいのかをコンピュータ自身が発見し(←ここがディープラーニングのキモ)、飛車先を突き、角道を開け、自玉を金銀で囲うようになりとどんどん上達していくのです。

なるほど、ディープラーニングとは、コンピュータ(ソフト)自身が、勝手に自習を積み重ねて、その中からよりよい方法(この場合でいえば将棋の勝ちパターン)を見出していく、ということなんですね。

ディープラーニング、恐るべし! ですね。

ご回答ありがとうございました

お礼日時:2019/06/08 09:51

コンピュータが円周率31兆桁を達成したそうですが、開発者やプログラマーが手計算や電卓でできると思います?


仮説がそもそも違います。
    • good
    • 0
この回答へのお礼

ご回答有難うございます

お礼日時:2019/06/07 15:53

誤字発見。


 大局感→×
 大局観→○
失礼。
    • good
    • 0
この回答へのお礼

ご回答有難うございます

お礼日時:2019/06/07 15:53

他の回答にあるように、ソフト(プログラム)は作成した時点では単にプログラムでしょ。


ディープラーニング、膨大な過去の棋譜を入れていると思う。
違う用途で、人間の顔認証がありますよね。
中国ではすでに実用化していますが、空港のカウンターでマーク中の要注意人物をピックアップする、など。
多少の変装でも瞬時に見抜く。
毎秒何人も何十人もカメラの前を通過するだけでモニターがマークの人物を見つける。

人間も強い相手に番を指せば、書籍で勉強すれば、もちろん定跡を覚える、詰め将棋を解く、を繰り返せば上達しますよ。
だが、悲しいかな人間は根気が続かない(笑)
それに覚える(単に記憶)だけでは限界がある。

おそらくだが、飽きずに続けさえしたら、時間はともかく誰でもアマ初段にはなる。
あとは努力と才能ですよ。
将棋より彼女と映画見てたほうが楽しいし。
ソフト相手に将棋指すよりドライブでも釣りでも時間を楽しく使える。

じゃ、才能とは?
反対に、過去の定跡にとらわれない。
漠然と言えば「大局感」。

覚えるのは記憶だが、記憶するだけでは限界が来る。
「なぜこう指すのか?」
「こうしないとなぜダメなのか?」
「それは本当か?」
これを記憶じゃなく理解するわけ。

局面を眺め最善を瞬時に見つける。
わかります?
言い換えたら無駄な手ははなから読まない。
コンピュータのように瞬時に多数の手を読むことはできないが、切り捨てることはできる。

あなたが今、自分の部屋の中を見回してごらん。
パソコン、モニターだけじゃなく、デスク、テーブル、コーヒーカップ、回りは部屋の壁、天井、床、それぞれの質感も一目でわかるだろう。
これはあなたが今まで育った経験の積み重ねもあるし、「無」から「有」を発明してきたのが人間だ。
よちよち歩きの幼児でもお母さんは見つけるし、お腹が空けばおっぱいにしがみつく。
人間には生まれながらに本能がある。
五感を連続させて脳は判断できる。

人類より先にコンピュータがあったら(笑)コンピュータに火は起こせたかな?
(コンに手足は無いがこする摩擦で発火する発見ができたか)

定跡は無から有を作り発達、見直し、新しい「新手」ができてきた。
これからコンピュータがさらに強くなるにはディープラーニングの元になる強い棋譜を叩き込む必要がある。
人間が強ければコンピュータも強くなる。

だがすでに人間がソフトに勝つ可能性は無くなってきた。
アルゴリズムの見直しと膨大なデータの合わせ技の勝利と思う。

一応、、、
ソフトがプロ棋士に勝っても将棋の面白さが減るわけじゃないからね。
ソフトがひふみんアイを食らってカッカしてオーバーヒート(熱暴走)するくらいに進化したらオモロイが(笑)

去年だっけ?
例の藤井さんの「△7七飛成」。
あの手でポナンザなどソフトの指し手の反応を見れば、ソフトはまたまだとも思いますよ。
(一応発見はしていたが悪手と決めつけその先は打ち切った)
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます

なるほど、大局観がひつようですね。

奥深い回答ありがとうございました

お礼日時:2019/06/07 15:53

人間も暗譜できれば強くなれるでしょうね。

ただし1局2局では話になりませんよ?記録に残っている過去の対局数10年分すべてを覚えておけるくらいであれば強いはず。まあそんなのは不可能に近いから、コンピュータ的な力技による解決方法を人間がやるのは非現実的です。

ただこのような力技は常識的な対局しか学習しかできません。とっぴな指し方をされると対応できないわけです。プロ棋士はその弱点を突いて、人間同士の対局ではあり得ないような変な指し方でプログラムの弱点を見つけ出し、そこを突き崩して勝っていました。このような指し方をされた場合の対処はプログラマの棋力がなければ無理でしょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます

>人間も暗譜できれば強くなれるでしょうね。

暗譜すればいいんですね。
それなら私、暗譜の得意な人、知ってますよ。羽生って人です。

>人間同士の対局ではあり得ないような変な指し方でプログラムの弱点を見つけ出し、そこを突き崩して勝っていました。

角不成でコンピュータをパニックにさせて勝った人、いましたね。まあ賛否両論のようでしたが。
あと、米長元名人も、後手初手6二玉作戦をしましたが、コンピュータはパニクらなかったようで負けてしまいましたね。

>このような指し方をされた場合の対処はプログラマの棋力がなければ無理でしょう。

まあ、上記の二つの手は、もうソフト上に組み込まれているか、ハードディスクに棋譜が載っているでしょうからもうこの手で勝つことは不可能でしょうね。
あと、やるとすればなんでしょうね。歩不成でしょうか?桂不成でしょうか?銀不成でしょうか? ま、このあたりは人間でもやりますからね・・・ もうムリでしょうね。

ご回答ありがとうございました

お礼日時:2019/06/06 12:26

デープランニング、という方法です。



データーさえ与えてやれば、勝手に
学習して強くなっていきます。

データーの蓄積量はプロ棋士とは
桁違いになっており、これが強さの
秘密です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます

>デープランニング、という方法です。

この方法がつよくなる秘訣なんですね。

ご回答ありがとうございました

お礼日時:2019/06/06 10:13

プログラムはルールを組み込むだけです。


将棋を知らなくてもルールブックを見ればでていることです。

>「基本的な手筋や定跡も知らない」
ルールでも公式でもありません。
人間が経験的に積み重ねてきた物であって論理的に考証された物ではありません。

他のプログラムでも機械でも作るのに必要なスキルと実行するのに必要なスキルは違います。

電卓を作ったプログラマーより電卓の方が遙かに計算能力は高いし自動車を作ったエンジニアと自動車がかけっこをすれば自動車の方が早い。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます

>プログラムはルールを組み込むだけです。
将棋を知らなくてもルールブックを見ればでていることです。

なるほど、ルールさえ組み込めばいいのですね。

>他のプログラムでも機械でも作るのに必要なスキルと実行するのに必要なスキルは違います。

スキルの違いなんですね

>電卓を作ったプログラマーより電卓の方が遙かに計算能力は高いし自動車を作ったエンジニアと自動車がかけっこをすれば自動車の方が早い。

これはまたどういうことでしょうか?
ちょっと言葉足らずというか、発想の飛躍というか、説明不足だとおもいますが。いかがかな、とおもいます。

(もうちょっと詳しく返答してもよいのですが、質問の本題と外れるのでここまでにしておきます。まあ貴殿もまさか
「せっかく回答してあげたのに、反論するとは何事だ!」
などとはおもっておられないとはおもいますが。)

ご回答ありがとうございました

お礼日時:2019/06/06 10:28

最近のものは機械学習ですね。


コンピュータに勝てる方法を学習させまくってるので、強くなります。

「基本的な手筋や守備の駒組みや駒の損得や手損・手得、定跡を知らなくても将棋に勝てる」

については、
コンピュータと同じように学習できればYesです。が、

コンピュータは、
 コンピュータの中で物凄く高速に対局を繰り返しますし、
 その対局から得た勝つための情報は全て覚えています。

人間にはまず不可能なことでしょう・・・
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます

>最近のものは機械学習ですね。
>コンピュータに勝てる方法を学習させまくってるので、強くなります。

そういうやりかたなんですね。

>コンピュータと同じように学習できればYesです。

同じようにやればいいんですね。

>コンピュータは、
 コンピュータの中で物凄く高速に対局を繰り返しますし、
 その対局から得た勝つための情報は全て覚えています。

学校にもいかず、飯も食わず、延々とただひたすら将棋をやり、全ての棋譜を記憶にとどめておけば人間も自然と強くなれるでしょうか?

>人間にはまず不可能なことでしょう・・・

無理なんですね。

ご回答ありがとうございました

お礼日時:2019/06/05 20:25

手筋を読む理論を組み込めば良いだけ



人間の脳みそでは、読む手数に限界があるからね
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます

>人間の脳みそでは、読む手数に限界があるからね

なるほど、コンピュータは計算能力にモノを言わせて、人間より深い読みをするから勝てる、ということなんですね。

しかしながら疑問があります。


質問に書いたように開発者の中には「基本的な手筋や定跡も知らない」という人もいます。
>手筋を読む理論を組み込めば良いだけ
とのことですが、そのような開発者、プログラマが作ったプログラムが正しい手筋を読めるかどうか、という点が気になるのですが・・・
誤った手筋の読み方をコンピュータに教え込ませたら、当然誤った手筋を最善手として選ぶのでは?
極端に言えば将棋の川柳にある、「へぼ将棋 王より飛車をかわいがり」のような手を最善手とする可能性だってあるわけです。

この点はどうなのでしょうか?

ご回答ありがとうございました

お礼日時:2019/06/05 20:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報