How to use Japanese Chess(shogi) program
I am Japanese, so I am not good at English.I am glad if you read with kind heart.
I wrote articles of the same content in Japanese. If you understand Japanese,please see that.
For studying English, so I would be happy if you pointed out my mistake.
I will explain to use in three steps.
in preparation
Coming Soon
Rezero(リゼロ)評価関数は何がすごいのか
今更にはなりますが、このすごさってやつを認識できてない人が多いようで悲しいのですよ。特に、振り飛車党のフレンズ(将棋指し)にはよい話なのです。
振り飛車は、不利飛車と言われておりますけれども、全くもって完全に、敗北を喫したというわけではないのです。
そう。例えば、HoneyWaffleとか。居飛車が群雄割拠するコンピュータ将棋界。この中で生き抜く振り飛車の星なのです。
HoneyWaffle?開発者も、居飛車にペナルティを科すことで強引に振り飛車にしたとかって言ってたじゃないか?
去年はやねうらをそのまま使ってたんだった。確か
やねうら王は評価関数がミラー(左右対称)になるようにしているらしいので、それが生きたんでしょうね。
結果
直近の電王トナメでも決勝リーグ出てるんですよ。shotgunにも勝ってるし、実力派振り飛車党だといっていい。
結果としては十分出ているソフト。勿論、人間と比べたら十分強いソフト。
さてこの辺りで本題へと入りましょう。
リゼロ評価関数のどこがすごいのかという話でした。
それは、、、
完全に人間の棋譜から独立しているところです!その上、人間のトップくらいなら軽々打ち負かせるくらいの力があります。
人間の棋譜から今まで独立してなかったんですか?
そうです。
人間より強かったのに?
人間の棋譜から学習させたものを元に、それを強くしてコンピュータ将棋の棋譜ができました。そして、そのコンピュータ将棋の棋譜(人間の要素がどこかに入ってる)を元に、コンピュータを強くしてきました。
今までできてなかったの?
今までも無かったわけではないものの、弱かったのです。
さて、細かい内容はやねうら王の作者のやねうらおさんが書いておられます。
elmoがもたらしたオーパーツについて | やねうら王 公式サイト
そう。元のアイデアはelmoです。
余談
こういうわけで昨年は、elmoの導入記事を頑張って公開当日に書き上げた訳なんですね。(確かそうだったような、そうでなかったような…)
人間の棋譜を用いずに評価関数の学習に成功 | やねうら王 公式サイト
細かい経緯はこちらの記事とセットで読んでいただければ通じることと思います。
何度も言いますが、人間の棋譜なしで人間より強くなれたというところがポイントです。自己対戦を繰り返して、自分で将棋の勝ち方を身に着けたということです。
オッズの魔法使いが気になる~モンテカルロ探索を説明しよう!~(コンピュータ将棋選手権)
オッズという名前に、皆さんは心当たりがあるでしょう。
何?オズの魔法使いをおしゃれに言っただけだろって?
お得意のwikiからの引用をしましょう!
ギャンブルにおけるオッズ
オッズは競馬などギャンブルのブックメーカーが見込みを示す方法として、長らく使われてきた。
wikiより
ところで、ブックメーカーって何かって?
ここはギャンブルを解説するブログではないので、
ないので…
オッズ比
まぁ、正直ギャンブルの話はいいんだ。オッズというのは、ある出来事が起こりやすいかどうかを示す。「起こりやすいことが起こった!予想してた!」というのは大したことじゃない。
当たり前だ。
だから、起こりやすいことを予想しても、ギャンブルだと配当はあんまり貰えない。起こりにくいことを予想していた人、すごい。配当がたくさんもらえる。
つまり、皆が「なかなか起こらないだろう」と考えていることには、配当が高くつく設計になっているのだ。
気になったのは、モンテカルロ木探索という部分。
そうだよ!モンテカルロ木探索を説明するためだけにこの前置きがあったんだ!
今回はモンテカルロ木探索について説明していきたいと思います。
この手法、囲碁で効果を上げたことで名高いですね。この手法が出てきた当時、コンピュータ囲碁業界は悲しみの時期にありました。
オセロはとっくに攻略された。
チェスもごり押しだったけどなんとか人間のトップに勝った。
当時は、革命を起こしたボナンザの影響で、将棋が人間を蹴散らす時期に来ている。
囲碁は…
この理由や背景は他の記事に解説を譲ります。
ざっくりとした解説だけしましょう。
まず、囲碁は盤面が大きすぎます。
オセロやチェス、将棋は8x8とか9x9とか、そういう次元でした。
でも、囲碁は19x19。飛びぬけて大きいのです。
これが何を意味するかというと、コンピュータ得意のごり押し(ひたすら計算して未来を見る!)が通じないということになるのです。
『どういうことですか?』
これを業界用語(?)で言うと、
「囲碁は合法手が多すぎる」という話になるわけです。
その合法手についての話もここでしておきたいと思います。
合法手とは、ルール上可能な手のことです
将棋で言えば、二歩や、動けない位置にコマを動かすといった反則がありますね。そういった反則以外の、指していい手を、合法手といいます。
将棋や囲碁で貴方が普段指したり打ったりしている手、それはほとんどが合法手です。これが、コンピュータが探索する範囲になります。
囲碁の問題は、それがとてつもなく複雑であるということだ。チェスの平均的な手数はおよそ35通りだが、囲碁のそれは250通りである。それぞれの手のあとには、さらに250の選択肢がある。そのため最も強力なスーパーコンピューターでさえ、すべての手の可能性を見通すことはできない。ハサビスが言うように「宇宙の原子の数よりも囲碁の打ち手の数の方が多い」のだ。
から引用。ハサビス氏は、かの有名なAlphaGoの開発者である。
更に、囲碁は同じ型の反復が存在する。
これを、コウという。
そっくりな局面が繰り返すことで、これもコンピュータの探索を複雑かつ負荷の多いものにしている。
将棋には、千日手をいうルールがあり、これを回避している。チェスは、試合が進むに従って駒が減るので、同じ形が訪れることはほぼない。
それに、評価関数が作れない。駒を取ったら優勢とか、そういう分かりやすい基準がないのだ。広い場所を占拠していると思っても、その石が死んでいたら何の意味もない。
これらの問題によって、コンピュータ囲碁はなかなか発展できずにいた。
その膠着状態を破ったのが、モンテカルロ木探索である。
評価値が作れないなら、なくてもいいようにすればいいのよ!
というと大袈裟だが、要するに、勝ち負けを見ればいいというは究極の発想に至るのである。
「さっきコンピュータで読み切れないって言ったじゃないか!」
その通り。だから、全部は見ない。
自分がいい局面とは、
「ランダムに手を打ちまくって、勝負が決まった時に勝ってるのが多いやつ」
という考え方なのである。もちろん、説明は極端なくらいに簡単にしたものだが、このランダムなところが、モンテカルロの名を持つ由来である。
モンテカルロ法というものがあってそこから命名されている。
元来物理の世界で、細かいものが沢山ある中から一部をピックアップして割合をざっくりつかむという用途で使われているものです。
正直関係ない気がしてきたし、なんか説明がめんどいので需要があれば説明を後日書く。
この手法をイメージとしてつかむには、くじを考えるといい(適切な画像があれば、円周率を求めるやつが一番わかりやすいんだが、そちらはwikiにあるので私の説明で分からなかったらそちらを参照してほしい)
5000兆本のくじがあると考えてくれ。
当たりが何本入ってるかな~?
この時、本数をざっくり考えるなら、とりあえずたくさん引いてみればいい。
1000本引いて500本当たりだったとしたら、大体この中に当たりは2500兆本入ってるんじゃないかという予想ができる。勿論、正確ではないけれど、十分満足な予測だと考えられると思う。
この方法、試行回数を増やせば、よりその予想は正確になる。
「有利な局面と不利な局面があったら、有利な局面からの方が沢山勝ちがある。」
と考える。だから、「ランダムに手を指して、終局したときに勝ちが多い局面は、『有利!』」としてしまう。そして、その『有利』な局面を目指すように指す。これがモンテカルロ系の探索だ。
※仮定であるから、これが合っていようが間違っていようがどちらでもいいのだ。この手法が上手くいかなかったら手法を切り替えるか、改良する。こういう考え方がいい。この考え方でソフトを作っていると何が起こる?そう。「どうして上手くいっているのか、分からない」上手くいくと思って入れたものが、結局上手くいくとは限らない。AIはブラックボックスなんだという話の理由の一つがここにある。
ちなみに、木というのは樹形図みたいなものだと思ってほしい。局面が進むにつれて枝が分かれていく。この木を、「ゲーム木」という。
最後に
モンテカルロが上手くいくかどうかは分からないし、個人的には将棋では上手くいかないように思っている。でも、頑張って欲しい。今まで数多の人が挑戦して、現在強豪の中にはモンテカルロは残っていない。逆説的に、ブレイクスルーは常に今までの手法じゃないところから現れる。実際、囲碁のモンテカルロも、最初は弱かった。でも、改良することで劇的に強くなった。
やっぱり、今いる強豪と根本から違うと期待しちゃうわけです。
私は、全てのコンピュータ将棋開発者を応援しておりますよ
ブックメーカー、ブックメーカー方式とは何か(あとパリミュチュエル方式について)そして少しアービトラージについて
なんでや!さっきギャンブルのブログじゃないっていったやんけ!
ということで(どういうことだ)茶番は抜きにして解説していきたいと思います。ちなみにこちらのブログは、主にコンピュータ将棋について取り扱っております。
ブックメーカーというと、賭け屋、賭けの運営のことを指します。
終わり!ではなくて、ここから先はブックメーカー方式について話します。
基本的にこういう場合、運営が設ける仕組みは、
客が賭ける→賭けに勝った客にはお金を渡し、負けた客からはお金を取る
というのが基本です。特に、一部のギャンブルでは”必ず”、”どんな結果になろうとも”運営が儲けられるようになっている仕組みがあるのです。
同じ賭けでも、お金の流れに種類があります。~方式という名前がついています。今日は、その中で有名な二種類を紹介します。
パリミュチュエル方式
ブックメーカー方式(ブックメーキング方式)
といいます。
実際の賭けの流れで説明しましょう。
皆が各自のタイミングで賭けていくわけですが
パリミュチュエル方式では、賭けた時点で配当はまだ決まっていません。
この方式は、
全員が賭けたお金の中から、運営が一部を引いて、その後勝った人に分配する
というものだからです。これから賭ける人が増えたら、配当は変化します。
これはつまり、運営が必ず儲けられることを意味します。
(正確に言うと少し違って、全員が当たりに賭けた場合、配当は1倍以上という日本での決まりから、全員に1倍のお金を払い戻す必要が出てきます。こうなると、賭けを主宰する人たちの儲けはゼロです。)
勿論、運営するのに色々経費がかかるのでその限りではありませんけどね。
日本の競馬ではこの方式が使われているらしいです。
さて、ブックメーカー方式ではどうでしょう。こちらも配当は段々変化しますが、少し違うところがあります。買った時点で、その人の配当は固定(買ったときに配当が表示されていて、その配当がそのまま買ったときに払われる)だということです。
変化するというのは、買う時間によって、運営が変えるということです。
例えば、「一時間で2倍のやつが100枚も売れちゃったけど、このままこれが売れ続けて皆に配当を払うことになると赤字だ…」ということになったら、その次の人からは違う配当で売るのです。
こちらは賭けの主催者が試行錯誤して、適切に配当を決めます。うっかりすると赤字になってしまうからです。
ブックメーカー方式で裏技っぽいことをする人たち
ブックメーカー方式では、様々な賭け屋が、別々の配当を設定しています。
そこで、AチームとBチームが対戦することに賭けるとします。
賭け屋ーあ
Aチーム 2.0倍
Bチーム 1.2倍
賭け屋ーい
Aチーム 1.1倍
Bチーム 2.1倍
という配当を発表していたとしましょう。
賭け屋ーあ
1万円分、Aチームを買う
賭け屋ーい
1万円分、Bチームを買う
としたらどうなるでしょう。
Aチームが勝つ
賭け屋ーあ
から2万円。利益なし
Bチームが勝つ
賭け屋ーい
から2万1000円
これは…絶対に損をしないじゃないか!?
これはアービトラージと言われている賭け方です(多分)
みたいなことを考える人たちが居ます。実際、賭けをやってるところは沢山あるので、探しまくればどっかでこういう組み合わせを見つけることもあるでしょう。探しまくってどこかでドカンとお金を賭けたら、それで大儲け!?
とまぁ、そんなうまい話には裏がありますね。
そもそもそんな美味しい組み合わせが探せないだろ!
とか(まぁ実は、ブックメーカー方式で賭けをやってるところって、イギリスで多いみたいです。政府公認の賭け場もたくさん、、1000の単位であって…それぞれ配当が違うと。情報収集をする環境を整えればもしかして…?)
と、ここまで言っても、早とちりしないでくださいね。儲からないんだって話が結論なんですから最後まで聞いて下さい。数字で騙されないためにも、こういう実例を知っておくのは重要です。
まず、賭けの配当が時間で変わること。理論上、瞬間的に賭ければ勝てるわけですが、瞬間的に賭けるのは無理。お金の入金とか色々。
賭け場まで走るのは無理だから、オンラインになるでしょう。
色々なところにアカウント作って、入金の手間を考えて事前に振り込んで…無理だ!手間もかかりすぎるしいろんなところに分散してお金を入れておくなんて、お金もじゃないんだからむりでしょ!
次
勝ちすぎたら追い出される(知らんけど)
最後。重要
注文が勝手に取り消されることがある。らしい
まぁ、そういうことです。儲からないらしいよってね。
elmoのアピール文が文字化けして見れない人へ(文字コードとは何かざっくり説明)
elmoのアピール文。
https://www.apply.computer-shogi.org/wcsc28/appeal/elmo/wcsc28_appeal.txt
アピール文を漁っていたら早速一番上からこういう事態になっておりまして、大変です。しかもelmo…悲しいなぁ。
思い当たる節があります。問題を解決するのに必要な知識はこちら
文字コード(もじコード)とはコンピュータ上で文字(キャラクタ (コンピュータ))を利用する目的で各文字に割り当てられるバイト表現。もしくは、バイト表現と文字の対応関係(文字コード体系)のことを指して「文字コード」と呼ぶことも多い。
wikiより
コンピュータは1と0でを処理しているという話は聞いたことがありますでしょうか。
例えば、
あ 01
い 10
う 11
だとすると、
01 10
これは
あい
になるといった具合です。
しかし、文字コードが違って
あ 11
い 10
う 01
だとすると、
01 10
これは
うい
になります。例えば、数字割り当てが違ったりとか、そもそも割り当てがなかったりとかこの番号の並びの規則が、想定していたものと違うと、さっきの画像みたいにあべこべな訳になってしまいます。
普段は、大体のものに自動で判別してくれる機能があるおかげでそれを気にすることなく生活できるわけですね。
ということで、文字コード(暗号表みたいなものだと思ってください)を変えたらきちんと翻訳できるわけです。
変え方は、各々の環境によって違うでしょうから
[ブラウザの名前 文字コード]
みたいに検索すれば、変える方法が見つかると思います。
ちなみに、私はChromeをPCで使っていてこうなりました。解決策としては、Chromeの拡張機能を使ったのです。
↓こちら
UFT-8
を選択したら正常に見られるようになりましたとさ
折角だから内容は本家でお読みくださいな
(これは情報が古い記事です)やねうら王の使い方(※2017early時点)の解説になります。やねうら王からはじめるコンピュータ将棋ライフ
検討用に使えるソフトの中で、個人的に一番好きなやねうら王を導入する方法、使い方を紹介するぞ。このブログでは将棋所を先に紹介しているんで、将棋所でのやねうら王を使い方を教えます。こちらが最新版です。
やねさんから、Masterを入れたほうが簡単でしょうというご指摘を頂いたので、その方向で解説します。
続きを読む
elmo優勝記念!elmoの使い方、導入の仕方を簡単に解説します。スマホ、shogidroid利用者向けに追記しました
WCSC27(世界コンピュータ将棋選手権優勝)にて、elmoが優勝しました。おめでとうございます。
追記
スマホでも利用できるようになったようです。しかしながら、私の使っているスマホはメモリが足りないので検証できませぬ。ごめんなさい。利用可能スペックは、64bitOS(android),64bitCPU,かつ3GBメモリが必要なようです。一応リンクを張りました。下のリンクからアクセスできます
http://shogidroid.siganus.com/
まずは、公開されているelmoの場所から案内します
elmoの評価関数と定跡を公開します。https://t.co/NJQ95elVma
— 瀧澤 誠@elmo (@mktakizawa) 2017年5月5日
ご自由にお使いください。説明文等無く申し訳ございませんが、使っていただけると幸いです。
このリンクから、
クリックして飛んで
ここからダウンロードできます。
続けて
ダウンロードしたこいつを右クリックから解凍(展開)してください。
中身がこうなっていますので、この2つをとりあえず置いといて、受け皿の準備をしましょう。
乱雑にならないように将棋所(GUIをお使いの方は少々お待ち下さい)の近くにelmoというファイルを作りましょう。
ところで、公開されているファイルはevalとbookになります。
つまり、定跡と評価関数だけになります。
ですから、エンジンの用意が必要です。やねうら王をお使いの方向けにまずは書いています。
エンジン("YANEURA~"という感じの名前のやつ)をコピーして先程作ったelmoのファイル内にコピーしましょう。
最新のエンジンはリリースから(段ボール箱の、三つ並んでるうちの一番上のzipを解凍して、そこからエンジンを取り出してください)
Releases · yaneurao/YaneuraOu · GitHub
エンジンのこととかわけわからないよ、教えて下さい。という人はこちらへどうぞ。
PCの古さによっては動かない場合があります。
nosse,sse2,sse41,sse42,無印
左から順に古いPCでも動きます。
自分のPCが対応しているのはどれかわからないという人は、左から古い順に
nosse < sse2 < sse41 < sse42 < 何も後ろに書いてないやつ
ですから、nosseでも選んでおけば動きます。
目安として、PCを買った時期が
2000年より前のものならnosse
2000-2006年ならsse2
2007-2008年ならsse41
2009-2010年ならsse42
2011年以降なら無印
で動きます。
こんな感じにファイル内を整備しましょう。
エンジンの名前を変えないと動きません!注意して下さい。
YaneuraOu-2017-early.exe
という名前に変更して下さい。
あなたの環境でもし、ダウンロードしたソフトの名前の語尾に".exe"がついていなかった場合は、”.exe”より前の部分をコピペ(コピーして貼り付け)してからの実行をお願いします
後は将棋所にエンジン登録すれば動くはず。動作確認できました。
将棋所導入できていない方はこちらへどうぞ
将棋GUIでも同じ方法で動くと思います。登録されたエンジンの名前がelmoじゃないのは気にしないでね。修正方法とかがあるのであれば情報ください
とりあえず動作した皆さんへ、定跡の入れ方を説明します。
elmoの、bookファイルの中の、yaneura_formatの中身、”standard~.db”
これを、コピー又は切り取り等々をつかって移動して、bookファイルの中に入れてください。
こういうことです。
記事に追記しました。 ※SILENT_MAJORITY1.25でelmoの定跡を使用する場合、エンジン設定でOwnBookにチェックを入れてください。 ※やねうら王2017でelmoの定跡を使用する場合、エンジン設定でBookDepthLimitを16から0に変更してください。 pic.twitter.com/x9eMzfAxQQ
— suimon (@floodgate_fan) 2017年5月5日
floodgateの棋譜と、WCSC27での棋譜のまとめを作ってあります。興味のある方、棋譜を並べたい方、検討したい方、他の方にも是非どうぞ。(2017/05/05午後6時37分現在)
下は、開発者の方が公開されたものです。上のには評価値や読み筋は入ってないので、当日の空気を楽しみたい方とかは下からどうぞ。
第27回世界コンピュータ将棋選手権(wcsc27)の棋譜を公開します。
— 瀧澤 誠@elmo (@mktakizawa) 2017年5月6日
elmoの評価値と読み筋が入っています。https://t.co/C3XX4PwaCu
お前の説明じゃあできなかった!動かなかった!という方へ。申し訳ありません。大手様の説明を参考になさって下さいませ。下がリンクになっております。
第27回世界コンピュータ将棋選手権優勝ソフト、elmoの導入方法を説明します - コンピュータ将棋研究Blog
追記(2017,05,05午後5時47分)
将棋所のリンクを貼りました。必要なCPU、使えるバイナリ(エンジン)
について詳細な追記をしました
追記2(2017,05,05午後6時04分)
定跡の使い方について追記しました。
追記3(2017,05,05午後6時23分)
私の説明じゃ分からん!とか、動かないよ!とか、SilentMajorityで動かしたい!という人のために大手様であるfgfanさんの記事へのリンク貼りました(現状でははてなブログのトップに出ていますし、必要ない気もしますが…後から見る方のことも考えて)
追記4(2017/05/05,午後7時56分)
大変失礼しました。定跡がそのままの設定では動かないようです(定跡の動作をあまり気にしていなかったので取りこぼしていました…)ツイッターで情報を見たのでそのツイートを置いておきます。追記3のブログを書いておられる方のツイートです。
追記5(2017/05/05,午後9時29分)
名前の変更(リネーム)について大きい文字で追記しました。リネームを行わないと動作しませんのでお気をつけて。
追記6(2017/05/06,午後0時7分)
エンジンの使い方や入手の方法が分からない人向けの記事にリンクを貼りました。
追記7
リンク切れを修正しました