rewritemath's blog

rewritemath’s blog

これマシュマロ。質問も受け付ける(https://t.co/VfNWTuMqau)

How to use Japanese Chess(shogi) program(Part 2 Get program)

Part 1

ritomath-shogi.hatenablog.com

 

There are many programs stronger than humans. I will introduce one of them.

 

Elmo  is a program against AlphaGo

 

(

[1712.01815] Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm

)

If your PC's OS is not 64 bit, please use another engine.

 

This shogi program requires files to evaluate aspect and engine.

If you use standard moves file,you also need book file.

 

Engine

Go here to get

 


github.com

f:id:rewritemath:20180414233047p:plain



 

you can downlode

  • Strategy in the beginning(book)
  • Evaluation file(eval)

↓link

elmo.shogi.zip - Google Drive

f:id:rewritemath:20180414231952p:plain

 

 

Please expand both files

f:id:rewritemath:20180414233438p:plain

↑Engine

f:id:rewritemath:20180414234112p:plain

↑Eval,book

 

 

Please move this file and configure like this↓

f:id:rewritemath:20180414234920p:plain

Up to here for this time

Next(link)

 

Comming soon

 

How to use Japanese Chess(shogi) program(Part 1,Get GUI)

GUI is the Graphical User Interface.

It is intended to make it easy to see when running programs.

 

↓This is

http://www.geocities.jp/shogidokoro/

This is the most famous GUI.(for shogi)

 

If you use translate

https://translate.google.com/translate?hl=en&sl=ja&tl=en&u=http%3A//www.geocities.jp/shogidokoro/download.html

 

 

Please click the ダウンロード(download).

f:id:rewritemath:20180414213349p:plain

 

将棋所4.0.0(shogidokoro-ver4.0.0)is the latest version.

f:id:rewritemath:20180414213852j:plain

You can download anywhere you like.

 

 

When zip is expanded, it looks like this.

f:id:rewritemath:20180414214239p:plain

 

.xml→These files are configuration files. After running and finishing program, the settings are saved and created these filses.

 

The GUI preparation is over. Please proceed to the next article(rink)

 

Comming soon

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.

 

  1. Obtain the GUIlink
  2. Get the program(link
  3. Run the program(link

 

in preparation

Coming Soon

 

 

 

 

 

Rezero(リゼロ)評価関数は何がすごいのか

今更にはなりますが、このすごさってやつを認識できてない人が多いようで悲しいのですよ。特に、振り飛車党のフレンズ(将棋指し)にはよい話なのです。

 

振り飛車は、不利飛車と言われておりますけれども、全くもって完全に、敗北を喫したというわけではないのです。

 

そう。例えば、HoneyWaffleとか。居飛車が群雄割拠するコンピュータ将棋界。この中で生き抜く振り飛車の星なのです。

HoneyWaffle?開発者も、居飛車にペナルティを科すことで強引に振り飛車にしたとかって言ってたじゃないか?

 

去年はやねうらをそのまま使ってたんだった。確か

やねうら王は評価関数がミラー(左右対称)になるようにしているらしいので、それが生きたんでしょうね。

f:id:rewritemath:20180412235356p:plain

 

第27回世界コンピュータ将棋選手権

結果

直近の電王トナメでも決勝リーグ出てるんですよ。shotgunにも勝ってるし、実力派振り飛車党だといっていい。

 

結果としては十分出ているソフト。勿論、人間と比べたら十分強いソフト。

github.com

 

さてこの辺りで本題へと入りましょう。

 

リゼロ評価関数のどこがすごいのかという話でした。

それは、、、

完全に人間の棋譜から独立しているところです!その上、人間のトップくらいなら軽々打ち負かせるくらいの力があります。

 

 

人間の棋譜から今まで独立してなかったんですか?

そうです。

 

人間より強かったのに?

人間の棋譜から学習させたものを元に、それを強くしてコンピュータ将棋の棋譜ができました。そして、そのコンピュータ将棋の棋譜(人間の要素がどこかに入ってる)を元に、コンピュータを強くしてきました。

 

今までできてなかったの?

今までも無かったわけではないものの、弱かったのです。

 

 

さて、細かい内容はやねうら王の作者のやねうらおさんが書いておられます。

elmoがもたらしたオーパーツについて | やねうら王 公式サイト

 

そう。元のアイデアはelmoです。

 

余談

こういうわけで昨年は、elmoの導入記事を頑張って公開当日に書き上げた訳なんですね。(確かそうだったような、そうでなかったような…)

 

人間の棋譜を用いずに評価関数の学習に成功 | やねうら王 公式サイト

細かい経緯はこちらの記事とセットで読んでいただければ通じることと思います。

 

 

何度も言いますが、人間の棋譜なしで人間より強くなれたというところがポイントです。自己対戦を繰り返して、自分で将棋の勝ち方を身に着けたということです。

オッズの魔法使いが気になる~モンテカルロ探索を説明しよう!~(コンピュータ将棋選手権)

オッズという名前に、皆さんは心当たりがあるでしょう。

何?オズの魔法使いをおしゃれに言っただけだろって?

 

お得意のwikiからの引用をしましょう!

 

ギャンブルにおけるオッズ

オッズは競馬などギャンブルのブックメーカーが見込みを示す方法として、長らく使われてきた。

 wikiより

 

ところで、ブックメーカーって何かって?

ここはギャンブルを解説するブログではないので、

ないので…

ritomath-shogi.hatenablog.com

 

 

オッズ比

 
 

オッズ比(オッズひ、Odds ratio)は、ある事象の起こりやすさを2つの群で比較して示す統計学的な尺度である。

オッズとは、ある事象の起こる確率をpとして、p/(1−p)の値をいう。確率論のほかギャンブルでも盛んに使われてきた数値である。

wikiより

 

まぁ、正直ギャンブルの話はいいんだ。オッズというのは、ある出来事が起こりやすいかどうかを示す。「起こりやすいことが起こった!予想してた!」というのは大したことじゃない。

当たり前だ。

だから、起こりやすいことを予想しても、ギャンブルだと配当はあんまり貰えない。起こりにくいことを予想していた人、すごい。配当がたくさんもらえる。

 

つまり、皆が「なかなか起こらないだろう」と考えていることには、配当が高くつく設計になっているのだ。

 

 

気になったのは、モンテカルロ木探索という部分。

そうだよ!モンテカルロ木探索を説明するためだけにこの前置きがあったんだ!

 

今回はモンテカルロ木探索について説明していきたいと思います。

 

この手法、囲碁で効果を上げたことで名高いですね。この手法が出てきた当時、コンピュータ囲碁業界は悲しみの時期にありました。

オセロはとっくに攻略された。

チェスもごり押しだったけどなんとか人間のトップに勝った。

当時は、革命を起こしたボナンザの影響で、将棋が人間を蹴散らす時期に来ている。

 

囲碁は…

 

この理由や背景は他の記事に解説を譲ります。

 

ざっくりとした解説だけしましょう。

まず、囲碁は盤面が大きすぎます。

 

オセロやチェス、将棋は8x8とか9x9とか、そういう次元でした。

 

でも、囲碁は19x19。飛びぬけて大きいのです。

 

これが何を意味するかというと、コンピュータ得意のごり押し(ひたすら計算して未来を見る!)が通じないということになるのです。

 

『どういうことですか?』

これを業界用語(?)で言うと、

囲碁は合法手が多すぎる」という話になるわけです。

その合法手についての話もここでしておきたいと思います。

 

合法手とは、ルール上可能な手のことです

 

将棋で言えば、二歩や、動けない位置にコマを動かすといった反則がありますね。そういった反則以外の、指していい手を、合法手といいます。

 

将棋や囲碁で貴方が普段指したり打ったりしている手、それはほとんどが合法手です。これが、コンピュータが探索する範囲になります。

 

囲碁の問題は、それがとてつもなく複雑であるということだ。チェスの平均的な手数はおよそ35通りだが、囲碁のそれは250通りである。それぞれの手のあとには、さらに250の選択肢がある。そのため最も強力なスーパーコンピューターでさえ、すべての手の可能性を見通すことはできない。ハサビスが言うように「宇宙の原子の数よりも囲碁の打ち手の数の方が多い」のだ。

 

もし、AIが囲碁で人間を打ち負かしたなら|WIRED.jp

から引用。ハサビス氏は、かの有名な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のアピール文が文字化けして見れない人へ(文字コードとは何かざっくり説明)

f:id:rewritemath:20180412165601p:plain

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拡張機能を使ったのです。

↓こちら

chrome.google.com

 

UFT-8

を選択したら正常に見られるようになりましたとさ

f:id:rewritemath:20180412171429p:plain

 

折角だから内容は本家でお読みくださいな