rewritemath's blog

rewritemath’s blog

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

やねうら王からはじめるコンピュータ将棋ライフ(Part 1最新)

github.com

 

ここです。これからは、releaseからご確認下さい。

f:id:rewritemath:20180414233047p:plain

これを解凍すると、

f:id:rewritemath:20180414233438p:plain

こうなります。後は以前までの記事に従ってください。

 

自分のPCが対応しているのはどれかわからないという人は、左から古い順に

nosse < sse2 < sse41 < sse42 < 何も後ろに書いてないやつ

です

 

 

目安として、PCを買った時期が

 

2000年より前のものならnosse

2000-2006年ならsse2

2007-2008年ならsse41

2009-2010年ならsse42

2011年以降なら無印

How to use Japanse Chess(shogi) program (Part 3 Run the program)

Part 1

ritomath-shogi.hatenablog.com

Part 2

ritomath-shogi.hatenablog.com

 

Please start shogidokoro.exe

f:id:rewritemath:20180414235845p:plain

 

Please click here

 

f:id:rewritemath:20180415000508p:plain

 

f:id:rewritemath:20180415000643p:plain

 

f:id:rewritemath:20180415000957p:plain

For CPUs not compatible with 64bit OS / AVX2, from the following
Select the CPU of the target environment.

 

Older   nosse < sse2 < sse41 < sse42 < No mark  Newer

 

 

Change Language

You can change the language to use English

f:id:rewritemath:20180415004749p:plain

f:id:rewritemath:20180415004835p:plain

f:id:rewritemath:20180415004928p:plain

Rebooting is necessary to change settings

 

 

f:id:rewritemath:20180415010211p:plain

f:id:rewritemath:20180415010248p:plain

After the setting, then click OK to play

 

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はブラックボックスなんだという話の理由の一つがここにある。

 

ちなみに、木というのは樹形図みたいなものだと思ってほしい。局面が進むにつれて枝が分かれていく。この木を、「ゲーム木」という。

 

最後に

モンテカルロが上手くいくかどうかは分からないし、個人的には将棋では上手くいかないように思っている。でも、頑張って欲しい。今まで数多の人が挑戦して、現在強豪の中にはモンテカルロは残っていない。逆説的に、ブレイクスルーは常に今までの手法じゃないところから現れる。実際、囲碁モンテカルロも、最初は弱かった。でも、改良することで劇的に強くなった。

やっぱり、今いる強豪と根本から違うと期待しちゃうわけです。

私は、全てのコンピュータ将棋開発者を応援しておりますよ