Alpha Go Zeroの論文の翻訳 その4

途中で挫折しそうだったこのシリーズ…。

Alpha Go Zeroの論文の翻訳 その3

の続きでございます。

またまた、間違いなどありましたら、指摘してください。m(_ _)m

原文はこちら。
https://www.nature.com/articles/nature24270.epdf

 

論文本体はもう翻訳し終わってますが、付録みたいなのがまだでした。

今回は、その付録

METHODS

の翻訳です。

ハァハァ(´Д`)ハァ… がんばろう…!!

Reinforcement learning

ポリシーの繰り返しは、昔からあるアルゴリズムで、ポリシーを改善する一連の流れである。

どのように実現するかというと、ポリシーの測定と、ポリシーの改善(ポリシーの測定を使う)を繰り返し行って、ポリシーを改善していくのである。

ポリシー改善のシンプルなアプローチ方法としては、どん欲にバリュー関数に沿って、手を選んでいくというのがある。

広大な選択肢の空間では、大体でやる、というのが必須である。

分類をベースとした強化学習はシンプルなモンテカルロ探索を使ってポリシー改善をしている。

ゲームを最後まで行ってみる。平均的に価値が最大になる手だけが正の値で、それ以外の手は負の値として、トレーニングのサンプルが記録される。

こうやって、ポリシーは手を正か負かに分類さて、次のゲームに使われる。

このやり方の後継版のようなことを、Alpha Go Zeroでも、γが0に近い場合、ポリシー部分のトレーニングアルゴリズムで使っている。

 

最近の例で行くと、分類ベースのポリシー改善は(CBMPIというらしい)、ポリシーの測定をゲームの結果に向かって回帰するバリュー関数で行っている。(これもAlpha Go Zeroでやっていることに近い)

この手法は、テトリスなどでは非常に良い結果を残している。

しかし、これらの研究結果はシンプルなゲーム結果とか手作りの近似的な関数に頼っていた。

 

Alpha Go Zeroのセルフプレイのアルゴリズムは、前述のやり方によく似ている。

ポリシーの改善は、ニューラルネットワークのポリシーで始まり、MCTSベースのポリシーの推薦と、より強いポリシーを探索してまたニューラルネットワークに返す。

これらのステップはニューラルネットワークをトレーニングして、探索の確率を、セルフプレイの結果に近づけていくことにより達成される。

 

グオさんは、同じくMCTSの結果をニューラルネットワークに入れることを試みた。

探索結果に回帰するバリューネットワークを使うか、MCTSによる分類のどちらかによってである。

この試みは、アタリのゲームをニューラルネットワークを使って解くことに使われた。しかし、MCTSが固定されていて、ポリシーの反復がなかったことと、訓練されたニューラルネットワークを利用していなかった。

 

Self-play reinforcement learning in games.

 

我々のアプローチは、完全情報ゲームで、ゼロサムゲームには直接応用ができるだろう。

その後の一文、ちょっと意味がわかんなかったです。(^_^;

We follow the formalism of alter­ nating Markov games described in previous work12, noting that algorithms based  on value or policy iteration extend naturally to this setting39.

 

セルフプレイ+強化学習という手法は、以前も碁につかわれたことがある。

「ニューロ碁」はバリュー関数にニューラルネットワークを使っていたし、碁の知識をベースにした洗練されたアーキテキチャーを持っていた。

このニューラルネットワークは、タイミングをずらした学習で、セルフプレイの次の手でのテリトリー(碁の陣地のことでしょうね)を予想していた。

関連した試みで、「RL碁」はバリュー関数を線形の組み合わせではなく、3×3の石の置き方のパターンを数え上げる方法だった。そのニューラルネットワークはタイミングをずらした学習で、セルフプレイの勝者を予想するというものだった。

「ニューロ碁」も、「RL碁」も、弱いアマチュアのレベルにしかならなかった。

MCTS自体もセルフプレイの強化学習ともいえる。

探索木のノードはポジションに応じたバリュー関数を持っている。これらのバリューはセルフプレイのシミュレーションでの勝者を予想する。

MCTSのプログラムは碁ではそれなりに強いアマチュアレベルまでは達成している。しかし、それは手作りの早くゲームを終わらせる関数を作ったりしていて、ポリシーも手作りの関数でできている。

セルフプレイの強化学習のアプローチは、チェス、チェッカー、バックギャモン、オセロ、スクラブル、つい最近ではポーカーで非常によいパフォーマンスを残している。

すべての例で、バリュー関数は回帰、あるいはタイミングをずらした、セルフプレイの結果による学習でトレーニングされている。

トレーニングされたバリュー関数は、アルファ・ベータサーチ(シンプルなモンテカルロ探索)あるいはの counterfactual regret  minimization中で評価関数として使われる。

しかし、これらの手法は手作りの特徴入力を使ったり、手作りの特徴のテンプレートを使ったりしている。

加えて、学習のプロセスで教師あり学習を最初の「重み」を算出するために使ったり、手作業でコマの価値を出したり、手作業で手の制限をしたり、すでにある別のプログラムを使って敵手の戦績を作ったりしている。

最も成功し、広く使われている強化学習の手法は、ゼロサムゲームの分野で、最初に登場した。それは、タイミングをずらした学習で、最初にチェッカーのプログラムで使われた。一方で碁にはMCTSがつかわれていた。

しかし、似たようなアルゴリズムは、その後ビデオゲームやロボティクスや、産業用、レコメンデーションシステムなどで使われた。

 

AlphaGo versions.

 

我々は、Alpha Goの3つのバージョンを比べてみることにする。

(1)AlphaGo Fanは以前公開したプログラムで、ファン フイさんと2015年に対戦したプログラム。176GPUも使っていた。

(2)AlphaGo Leeは2016年3月にリーセドル氏に4-1で勝利したプログラム。

これは公開していないが、AlphaGo Fanとだいぶ似ている。しかし、公正な比較のためにいくつかのカギとなる違いを上げておく。

最初に、バリューネットワークは、ポリシーネットワークによるものではなく、素早いゲームの結果によってトレーニングされていた。

これらは何度も繰り返される。

次に、ポリシーとバリューのネットワークは、もともとの論文に書かれているより大きい。

256個の平面のレイヤーのある、12個の畳み込みネットワークと、さらに反復回数が多かった。

このバージョンはGPUでなく、48TPUを利用し、探索の間にニューラルネットワークをより早く評価できるようになっていた。

(3) AlphaGo Masterは2017年の1月に人間のトッププレーヤーを60-0で負かしたプログラムである。

このプログラムは公開されておらず、この論文に載っているのと同じニューラルネットワークと、強化学習とMCTSのアルゴリズムを使っている。しかし、まだ手作りの特徴とAlpha Go Leeと同じゲームを最後まで行う手法、そしてトレーニングは教師あり学習により初期化されていた。

(4) AlphaGo Zero この論文のプログラムである。セルフプレイの強化学習であり、ランダムな重みを最初に使い、ゲームを最後まで行わず、教師は必要ない。ただ単に、ボードの状態があればよいのである。Google Cloud上のたった4TPUしか使わない。

 

まだ続くよ!

 

K君歓迎会

めちゃくちゃ暑い日が続きますね!

私、暑いの好きなんで、こういうのは好きです⊂(^-^)⊃

ただ、冷房の効いている室内と、外の往復が体に本当に厳しい…(つД`)

いっそのこと、冷房がなければと思うぐらいです。みんなに反対されるけどね。

さてさて、弊社に新メンバーが加わりました!

 

長坂彼方(かなた)君です。↓

長い坂の彼方に何があるのか…。

なんてパワーネームなんだ…。(`・ω・´)

 

なんと、人狼で知り合って情報学部というのと、見込みがありそうな学生さんだったので、私がスカウトしました.゚ヽ(*´∀`)ノ゚

人狼って仕事にも役立つなぁ!⊂(^-^)⊃

飲み込み早いし、テキパキと要領のよい方です。

 

歓迎会は先月のことでしたが…

合わせ鏡のある居酒屋でスタート!

2次会はボーリング。

スポーツエリートで、ボーリングでは常に200点越えをたたき出すSがいなかったため、平均点70点前後の大変レベルの低い争いwww

ま、楽しかったからいっかo(>▽<)o

OCテックノートができました。

弊社の新しいオウンドメディア、OCテックノートができました!

OCテックノート

 

パチパチパチパチ。(๑•̀ㅂ•́)و✧

実は、以前、「でじうぃき」って名前で運営していたWikiで作った情報サイトがあったのですが、それをWordPressに移行した形になります。

理由は、「でじうぃき」はPukiwikiというWikiのクローンでできていましたが、もう10年ぐらい前からあるので、劣化が激しかったからです…。

Pukiwikiも進化しないしね…。

移行はちょっと大変だったんですけど、弊社のMが移行プログラムを書いてくれました。ありがとう!⊂(^-^)⊃

こだわったのは、コードが見やすいこと。

どうでしょうか?

 

でじうぃきは、名刺を渡したりすると、

「あ、このロゴ見たことあります」

って言ってもらえることが多かったりして、それなりに世間の役にたってたのかなと思ったりしました。

 

んで、OCテックノートはどういう位置づけかっていうと、いわゆる、ITの会社が運営するテックブログとは違います。

もっと現場に近い形で、じゃんじゃん書いて、じゃんじゃん検索してもらえるサイトを目指しています。(๑•̀ㅂ•́)و✧

誰かがノートのはしっこに書いたことが、誰かの役にたてばいいな~。っと。

でじうぃきから変わらない方針ですね。

 

この業界って、日本語情報ってやっぱり全然少ないんですよね。

なので、Stack Overflow見て解決したことでも、誰かが日本語で書き直してくれると、助かりませんか?

私的には大変ありがたいです。

 

後は、

「みんなが!驚くような!最先端かつ全く間違いのない記事を書いてやるぜ!!ハハハ (゜∀゜)」

とか思っていると、おそらく永遠に書く日が来ません。。。(´ω`)

なので、勉強中でもいいし、間違っててもいいので、アウトプットすることが大切と思っています。⊂(^-^)⊃

アウトプットしていると、間違ってると誰かが教えてくれて、それが自分の進化につながりますからね!

それがこの業界っぽいじゃないですか!

 

後は、アウトプットすると、アウトプットした分、自分のものになるって側面ありますよね。

ジャスミン殺人事件

初夏のさわやかな青空の下…

人狼をよくする仲の良いグループ、男女15人で、山の中のコテージに出かける。

バーベキューしたり、温泉へ入ったり、人狼したり…。

その時のみんなは、この後恐ろしい事件が起こるなんて夢にも思わなかったんだ…。

「ねぇ、本当に人狼が現実になって、一人ずつ、誰か死んでったら…どうする?」

「やだーw やめてよ!」

…。

夜になって、まさか、それが現実になってしまうとは!

「きゃああああー!!だ、誰か~ ジャスミンが!」

「し… 死んでる!」

「じゃ、ジャスミン~!!」

コテージに向かう唯一の道は、嵐で通行止めになっている…。

「犯人は… この中にいる…!!」

(この中↓)

 

…。

…。

 

ということを、一度やってみたくってですね!

最初、人狼やるメンバーで温泉とか、バーベキューとか、やりたいことやろうって企画だったんですが、人狼ばっかりやってると、結局横浜でやるのと変わらないじゃんw

って、なんか企画しようと思いまして!

「仲間同士で旅行って言ったらやっぱり殺人事件じゃんw」

という私の軽口に、ジャスミン嬢が、なんとなんと、ちゃんとした殺人事件のプロットを作ってくれまして、ちゃんとした推理ゲームになりました!

持つべきものはノリがよい友達!!⊂(^-^)⊃ ありがとうジャス!!!💛

それにしても、死体役のジャスミン嬢がすごかった。

ちゃんと、ぴくりともしないし、表情筋もまったく動かないの。

あんた、いい女優だよ~!!!文才もあるし!!! o(>▽<)o

 

それに対して、私は…

「あきさんがニヤニヤしているので、あ、これはサプライズなんだなってわかりました」

って言われちゃう始末…。(;^ω^)

 

血糊はamazonで買いましたが、なかなか本物っぽいでしょw

サイコパスみたいと言われた写真↓

「ジャスミン… これで永遠にあなたは私のモノ…」

とかいうキャラなんでしょうね。(´ω`)

シャイニングバージョン。ひゃあああ(´・ω・`)

さて、血なまぐさい写真が続きましたが、これ以外は、超普通の旅行ですよ!

 

横浜駅に集合して、海へ向かう電車でGo!

 

場所は湯河原です。

ほんっとうにいい天気!真っ青な海も見える!.゚ヽ(*´∀`)ノ゚

バーベキュー!

肉は最高です!

とてもきれいにお肉が並べられている….゚ヽ(*´∀`)ノ゚

夏のお嬢さん!

かわいい、かわいいよ、ジャスミン!!(*´Д`)ハァハァ

 

なかなか素敵なコテージでして、全体的にかわいらしい雰囲気があってよかったです。

ハンモックがあったり

 

ブランコがあったり💛

Dくんがケーキを焼いてきてくれました!!

ありがとう~!!.゚ヽ(*´∀`)ノ゚ めちゃおいしかった!!💛

ガールズのみなさん!💛  かわいい~.゚ヽ(*´∀`)ノ゚ 後ろのレースのカーテンがよく似合ってる⊂(^-^)⊃

人狼してて夜~

海鮮などで飲み会!

んで、途中にジャスミン殺人事件があったり、人狼したりで午前3時まで遊びました⊂(^-^)⊃

人狼していると時間が経つのがあっというま!

途中、

「なぜだ!なぜ、こんなことに!!!し、死にたくない!死ぬのはいやだ!うわぁぁぁぁっ…以下略」

藤原竜也の真似をして死んでいったS君w またもや名演w

翌朝…

この日も快晴!

なんか、「君の名は」っぽい風景ですよね~。

私の不手際により、皆様に朝食が用意できませんでした(>_<)

申し訳ない…m(_ _)m

この日はお昼ぐらいまでお風呂に入ったり、ポーカーや「コードネーム」などして遊びました。

その後、真鶴へ移動。

海鮮を食す!!私、アジなどの近海魚、好きなんですよね~。

食後は、ワードウルフ中にウィンクキラーするというちょっと難しいゲームしたりしてました⊂(^-^)⊃

で、その後遊覧船に乗るはずが… またまた私がバスを2駅も乗り過ごすという失態をおかしてしまいました…。

「こんな近距離で2駅も乗り過ごすわけがないッ!だからこれはスタンド攻撃!!」

とか言いたかったですが、100%私のせいですね。

 

気温30度越え…

炎天下の中を、30分ほど皆様を歩かせてしまい、大変申し訳ございませんでした!!!×10。m(_ _)m

ファイナルファンタジーっぽい写真w

真鶴のアサシン。

優しい皆様が、

「いや、きれいな海を見ながら散歩できたのでよかったですよ~(^_^)」

と言ってくれたりして、本当に涙ちょちょぎれです。神のように優しい~º·(ฅωฅ*)‧º·˚

 

そして、やっと真鶴港に着きました!

出航~!!

なんと、かっぱえびせんを海に巻いて、とんびやカモメに餌をあげられるというアクティビティが!

楽しい~ 鳥ってすごいね。ちゃんとキャッチして食べてました!

私はまったくキャッチできないw

海も、空も真っ青ですっごくきれい!⊂(^-^)⊃

で、真鶴で解散。

いやー、と~っても楽しかったです!⊂(^-^)⊃⊂(^-^)⊃⊂(^-^)⊃

それにしても、幹事である私の不始末が量産されていましたが、皆様笑って許してくださってありがとうございます。

そもそも、参加してくださってありがとうございます!!!m(_ _)m

 

私は狼牙風風拳のポーズで!

意外と(?!)高評価だったので、またこんな企画ができたらいいな~って思ってます!⊂(^-^)⊃

 

Alpha Go Zeroの論文の翻訳 その3

空梅雨なんでしょうか?
意外と晴れの日が続いてうれしいですね!!ヾ(´ω`○).

Alpha Go Zeroの論文の翻訳 その2

の続きです。

またまた、間違いなどありましたら、指摘してください。m(_ _)m

原文はこちら。
https://www.nature.com/articles/nature24270.epdf

 

Empirical analysis of AlphaGo Zero training

 

Alpha Go Zeroにはランダムなアクションから初めて、450万回のセルフプレイをさせたそうです。

セルフプレイ中、それぞれ1600回のMCTS(モンテカルロ木探索)を行います。

つまり、MCTSが7,200,000,000回、回ったわけですね。

7200億回ですよ。ほげーー!!!

それぞれの手を進めるのに、0.4秒だそうです。

学習に使うミニバッチは2048のポジションのミニバッチで、70万個あるそうです。

 

上記でいうと、かなり大変な演算をしているように思いますが、Alpha Go Zeroは、たった1台のマシン・4TPUで、多くの(笑)マシン・48TPUのAlpha Go Leeを打ち負かしています。

しかも、トレーニングを始めて、わずか37時間後に、Alpha Go Leeが何か月もかかって到達したレベルに達したんです。

すごい。すごすぎる。

72時間後には、Alpha Go Leeがリ・セドルさんを負かした、あの記録的な試合の状態と同じAlpha Go LeeとAlpa Go Zeroが戦って、Alpa Go Zeroが100戦100勝しています。

どんだけ強いんだ!範馬勇二郎みたいですね!

この章は、後はどれだけAlpa Go Zeroが今までのAlphaシリーズより優れているか、というデータなどになります。

ので、割愛します。

Knowledge learned by AlphaGo Zero

 

Alpha Go Zeroは、囲碁の伝統的な手法も覚えたけれども、まったく新しい手法も覚えたということです。

定石も覚えたのですが、新しい定石の方を好んで使うらしいです。

最初はランダムだったプレイが、だんだんと碁のコンセプトを理解した洗練されたうち筋になり、布石とかテスジ?とかコ、ヨセなどの手法も取り入れていくそうです。(この辺、囲碁がわからないのでわからない…(>_<))

しかし、シチョーという人間だったら最初に覚えるような手法は、Alpha Go Zeroは相当後に覚えたそうです。

 

Final performance of AlphaGo Zero

 

もっと大きなニューラルネットワークに投入してみたらどうだったかという話。

40日間かけて、トレーニングしてみました。

2900万回のセルフプレイ、2048個のミニバッチが3100万個でトレーニングしました。

このニューラルネットワークは40個の residual blockでできています。

その場合、グラフを見てもらった方がよいのですが、Eloの指標が5日で4000を突破し、25日後ぐらいに5000を超え、その後も緩やかに増えています。

前述したパターンだと、4000に到達するのは35日あたりで、5000に届いていなかったので、こちらのやり方の方が強くなる、ということです。

その後は、他のAlphaシリーズと対戦させてみたけど、やっぱりAlpha Go Zeroが強かったよという話。

すごいぞ!かっこいいぞー!

 

Conclusion

結論!

…結局のところ、教師あり学習よりも、純粋な強化学習はよい結果を残せる。

さらに、この純粋な強化学習は、教師データがいらないし、数時間しかトレーニングにかからないし、それでいて教師あり学習よりずっと強い。

最後に妙に残酷なこと書いてありますが…。

 

人間は、何百万もの棋譜を数千年かけてつみあげ、パターンにし、本にして囲碁を研究してきた。

しかし、Alpha Go Zeroは数日で、何もないところから、囲碁の知識を再発見したり、今までに考えられなかった手法も生み出したのだ。

 


 

なんか、最後の方、真面目に囲碁に取り組んでこられている方々に石を投げられそうな話ですね(>_<)

ジブリでいえば完全に悪役ですね。

論文に書いてあるママなので、ご容赦ください。m(_ _)m

余談ですが、「ヒカルの碁」がすきだったのですが、サイがこの話を聞いたら嘆きそうですね。。。ρ(。・_・、)

それとも、喜んでAIと対戦するのでしょうか??

 

以上でこの論文は終わりですが、この翻訳はまだまだ続きます!

おまけの部分に、実装の詳しい部分が掘り下げられているのでその部分を次回に紹介します~。

 

Alpha Go Zeroの論文の翻訳 その2

はぁー 寒いような変な天気の日が続きますね。

早く、毎日30度以上の気温になる日々が来てほしいです…。(´ω`)

 

さて、前回↓

Alpha Go Zeroの論文の翻訳 その1

http://summer-snow.sakura.ne.jp/wordpress/2018/06/15/alpha-go-zero%e3%81%ae%e8%ab%96%e6%96%87%e3%81%ae%e7%bf%bb%e8%a8%b3%e3%80%80%e3%81%9d%e3%81%ae1/

 

の続きです!

またまた、間違いなどありましたら、指摘してください。m(_ _)m

原文はこちら。
https://www.nature.com/articles/nature24270.epdf

 

今回から本格的な実装の話!わくわく。てかてか。

 

Reinforcement learning in AlphaGo Zero

 

fθがニューラルネットワーク。
(p, v) = fθ(s)

sは盤面の場所。
pはその場所にいく可能性。vはプレイヤーがsにいて、且つ可能性で価値。

pは1次元テンソルでaという動作を次に取る確率で

pa= Pr(a| s)

としてあらわされる。

vは0次元テンソルで現在のプレーヤーがポジションsに於いて勝利する可能性。

このポリシーネットワークとバリューネットワークの役割を組み合わせて一つにしたようなニューラルネットワークで、Residual Blockを含んだ畳み込みレイヤーで、batch normalizationとrectifier nonlinearities(ReLU  Rectified Linear Unitではない?)はでできている。

 

Alpha Go Zeroのニューラルネットワークは新しい強化学習のアルゴリズムで、セルフプレイのゲームでトレーニングされる。

それぞれのポジションsからの動作の勝率πをMCTS(モンテカルロ木探索)でfΘを参考にして計算する。

この確率は、普通はニューラルネットワークから得た確率より強い動作を選択する。

MCTSは強力なpolicy improvement operator(訳せない…)として働くように見えるだろう。

探索を伴ったセルフプレイ…より強力になったMCTSベースのポリシーが手を選ぶ。
その時、ゲームの勝者zをバリューのサンプルとして動作する。

zはpolicy evaluation operator(訳せない…)とみなされる

 

我々の強化学習のメインアイデアは、探索者(MCTSのことだと思う)をポリシー改善のイテレーションの中で繰り返し使うことである。

ニューラルネットワークはp,vをπ、zに近づけるようにアップデートされる。

そのパラメーターは次のイテレーションに使われる。

MCTSはニューラルネットワークfΘをその計算のために使う。

それぞれのエッジ(s, a)は事前確率P(s, a)と訪問回数N(s, a)、アクションバリューQ(s, a)を保存する。

それぞれのシミュレーションはルートから始まって、葉ノードのstまで信頼上限(Q(s, a) + U(s, a),)が一番高い動作を選択していく。

信頼上限は、事前確率を訪問回数+1で割った数に比例する。

U(s, a) ∝ P(s, a) / (1 + N(s, a))

この葉ノードは一回だけ(P(s′ , ·),V(s ′ )) = fθ(s′ )を取得するために拡張されて、評価される。

それぞれのエッジ(s,a)はN(s, a)をインクリメントカウントするためと、これらのシミュレーションたちの平均的な(?)アクションバリューになるようにアップデートされる。

s,a→s‘とはシミュレーションがsからの動きaが最終的にs’に行きつくということを示している。

 

MCTSはセルフプレイのアルゴリズムのように見えるだろう。

MCTSはニューラルネットワークのパラメーターΘとルートポジションのsを渡され、そのポジションでの勝率に近い手πを算出する。

πはそれぞれの動作の訪問回数のべき乗に比例する。

 

ニューラルネットワークはセルフプレイで一手ごとに強化学習のMCTSを使ったアルゴリズムでトレーニングされる。

最初に、ニューラルネットワークはランダムな重みΘで初期化される。

続くイテレーションで、セルフプレイが続けられる。(図1a この図よくできてるのでぜひ参照してください。)

それぞれのタイムステップtでMCTS πt= α=θi-1(st) が繰りかえされるが、それぞれのMCTSでは、前回使われたニューラルネットワークの結果を使っている。

ステップTで最後。

探索の価値が終了の閾値まで下がったらあるいは最大の手の数を超えたら終わり。

ゲームは最終的な報酬である、-1か1を返す。

それぞれの手のデータは保存されている。

(st, πt, zt)

Ztはー1か1。勝者かそうでないか、ということ。

平行して、NNのパラメーターΘはずっと、(s,π,z)の値で次のようにトレーニングされる。

vがzに近づくように(vとzの間のエラーが少なくなるように)、pがπに近づくように。

パラメーターΘは損失関数l、勾配降下法(平均二乗誤差と交差エントロピーの合計)によって最適化されていく。

損失関数lの式。

パラメーターcは、過学習を防ぐためのL2正則化のレベルためのパラメーター。

図1の説明(この図がよいので、原文を見てみてください)

図1a

プログラムはゲームを自分自身を相手に進める。s1,s2,…sTと手を進めていく。

それぞれのポジションsでニューラルネットワークfΘを利用してMCTS αΘが実行される。

手はMCTSの計算結果によって選択されていく。最後のポジションsTで、ゲームの勝敗zを算出する。

図1b

Alpha Go Zeroにおけるニューラルネットワークのトレーニングについて。

ニューラルネットワークはボードのポジションstをそのまま入力として受け取る。

ニューラルネットワークはstを入力すると、いくつかの畳み込みレイヤーにパラメーターΘと一緒に入力され、次の2つを出力する。

①pt(ベクトル(1次元テンソル))

このベクトルptは動作の確率分布。

②バリューvt(スカラ(0次元テンソル))

現在のポジションsからの現在のプレーヤーの勝率

ニューラルネットワークはpはπへの類似が最大になるように、vはzと比べた時のエラーをなるべく少なくしていくようにアップデートしていく。

新しいパラメーターは次のセルフプレイの繰り返しの時に使われる。

 

 

——————————————————————————————————————————————–

以上でReinforcement learning in AlphaGo Zeroの部分は終わり。

MCTSの計算で使うパラメーターをニューラルネットワークでアップデートしていくわけです。

ニューラルネットワークで使うパラメーターp,v,πはMCTSで生み出されるわけです。

MCTSとニューラルネットワークが相互に依存しながら進化しあっていくわけですね~。

Alpha Go Zeroの論文の翻訳 その1

前回

Alpha Go Zeroのすごさを機械学習とか知らない人向けに説明してみる

http://summer-snow.sakura.ne.jp/wordpress/2018/06/13/alpha-go-zero%e3%81%ae%e3%81%99%e3%81%94%e3%81%95%e3%82%92%e6%a9%9f%e6%a2%b0%e5%ad%a6%e7%bf%92%e3%81%a8%e3%81%8b%e7%9f%a5%e3%82%89%e3%81%aa%e3%81%84%e4%ba%ba%e5%90%91%e3%81%91%e3%81%ab%e3%83%89/

で紹介した、下記の論文を自分の理解のために翻訳していこうと思います。

Mastering the game of Go without human knowledge

https://www.nature.com/articles/nature24270.epdf?author_access_token=VJXbVjaSHxFoctQQ4p2k4tRgN0jAjWel9jnR3ZoTv0PVW4gB86EEpGqTRDtpIz-2rmo8-KG06gqVobU5NSCFeHILHcVFUeMsbvwS-lxjqQGg98faovwjxeTUgZAUMnRQ

 

今回から、Deep learningの知識がある方向けです。

ちなみに、英語がつらかったw

そして、私は論文を読むのに慣れてるわけでもなく、ただのプログラマーですので、間違いなどあるとは思いますが、ご容赦頂ければと思います。

間違いあれば、ぜひ指摘してください!m(_ _)m

 


 

最初の部分は、今までのAlpha Goである、Alpha Go FanとAlpha Go Lee,の説明。

 

Alpha Go Fanは2つの深層ニューラルネットワークからできていた。

一つはポリシーネットワーク。移動の確率と、バリューを生み出す。

人間のエキスパートの動作を予測して強化学習によりその値を新しくしていた。

バリューネットワークは、ポリシーネットワークで生み出されたポリシーを使って、勝者を予測する。

モンテカルロ木探索をこれらの2つのネットワークと融合。ポリシーネットワークを使ってより可能性の高い手を選択、バリューネットワークを利用して(モンテカルロ木探索のRollout(勝負を最後まで疑似的にしてみる)を利用)その手の価値を計算していた。

 

次の世代のAlphaGo LeeもほぼFanと一緒。

 

Alpha zeroはLee、Fanと違って、人間のエキスパートの動きの予測は一切しない。(ので、人間のエキスパートのデータはいらない)

インプットするのは、盤面の白い石、黒い石の位置だけ。

たった一つのニューラルネットワークを使用する。

シンプルな木探索で、モンテカルロ木探索のRolloutみたいなことがいらない。


 

あっ あっさり終わっちゃいましたね。

ま、これは冒頭部分だけですから!

次回がAlpha Go zero実装に関係ある部分ですね。(`・ω・´)

Alpha Go Zeroのすごさを機械学習とか知らない人向けに説明してみる

Deep Mind社のAlpha Goという囲碁のAIが人間のプロ棋士を負かした、というニュースは皆さんご存知かと思いますが、実はAlpha Goはそれからさらに進化していて、Alpha Go Zeroになっています。

Alpha Go Zeroの何がすごいかっていうと、

①自分自身との対戦で強くなった(教師とするデータがいらない)

②GPUなどの消費がずっと少なくなった

③以前のAlpha Goが数か月で達成した強さをAlpha Go Zeroは数日で達成

③それでいてAlpha Goよりずっと強い(100-0でAlpha Goに勝利)

 

というところなのです!!

この教師とするデータがいらない、というのはすごいことで、なぜかというとデータを集めるのが大変なんですよね。

碁の棋譜データとかは、もうデータになってるんですが(1000年以上分ぐらいらしい(´ω`))昔に紙に書かれたものを、集めるのも大変だっただろうし、データにするのはさぞかし大変だっただろうし、というわけです。

 

2017年10月19日に学術誌Natureに下記のAlpha Go Zeroの論文が発表されていますので、今これを勉強してます。

Mastering the game of Go withouthuman knowledge

https://www.nature.com/articles/nature24270.epdf?author_access_token=VJXbVjaSHxFoctQQ4p2k4tRgN0jAjWel9jnR3ZoTv0PVW4gB86EEpGqTRDtpIz-2rmo8-KG06gqVobU5NSCFeHILHcVFUeMsbvwS-lxjqQGg98faovwjxeTUgZAUMnRQ

 

自分でも考えをまとめるために、いろいろとここに記述しておきたいと思います。

このブログでは、あまり技術的なことは書かないつもりなんですが、現在弊社の技術的なオウンドメディアはメンテナンス中なので、ここに書きます。

 

さて、私の好きな名言に

『6才児に説明できなければ、理解したとはいえない byアインシュタイン』

というのがありますので、ならってやってみようと思います。

Alpha Go Zeroの理論のすごさをAiとか機械学習とかまったく知らない人に説明したいと思います。

 

私の大好きなマンガ、ドラゴンボールの主人公、孫悟空にたとえてみますね!

———————————————————————————————————————————-

孫悟空は亀仙人とか、カリン様とか、界王様とか、いろんな師匠に教えられたり、ピッコロ、ベジータ、フリーザなどの強敵と戦って強くなるじゃないですか。

しかし、孫悟空のクローンが作れるとしたら、孫悟空は自分自身のクローンとずっと対戦してた方が、いろんな先生に教わるよりも、敵と戦うよりも強かった。ということ発見されたわけですね。

 

ここでミソとしては、ただたんにクローンと対戦しててもダメなのです。

6人ぐらいの孫悟空のクローンが同時にいたとして、2人ずつ3組に分けます。

3組は同時に戦います。うち一組を①とすると、①チームは

「最初は軽いパンチ、次にカメハメ波を出したほうが強い」

とかそういうことをひたすら研究します。研究結果はメモって記録していきます。

もう一つの2組目②は、①の研究結果を使って実践で対決します。

んで、本当に強いのー??ということを研究します。研究結果はメモって記録していきます。

最後の3組目③は、②の結果を使って、本当に試合形式で対決します。

そして、勝ったクローンを残し、負けたほうは消滅する、という手段で最強のクローンを残します。

(③の結果は、①チームにも②チームにもフィードバックされます。)

 

これが同時に繰り返し行われることで、この最強のクローンがどんどん強くなっていく、ということです。

ただ、100万回ぐらい繰り返さないとダメなんですけどね(;^ω^) 「精神と時の部屋」でやればいいんでしょう。

 

悟空が強くなるためには、最初に格闘技の知識すら必要ありません。

———————————————————————————-

 

 

以上はだいぶ概略のイメージです。

伝わったでしょうかー?!( ゜Д゜)

 

しかし、6歳児には説明できてないなw

 

ドラゴンボール好きな人には説明できたかもしれないww

実はこのたとえ話を書きたかったw

 

AIの強さがどんどんインフレしていく感じが、少年漫画っぽいじゃないですか。

前回のシリーズで敵だったキャラが、今回の敵キャラにまったく歯が立たない、というのはよくある展開ですよね!!

Alpha Goは、もうAlpha Go Zeroにまったく歯が立たないんです。

「おめー、つええなぁ。オラ、わくわくすっぞ!!」

 

 

ところで、この仕組みを

「いたって単純」

という人がいます。上のたとえを読んだ人も、そう思われたのではないでしょうか?!

スゴイプログラムというのは、なんかもっとそんな単純なことじゃなくって、何万行もあったり、その中でヽ(*`Д´)ノ【ス】【ゴ】【イ】ヽ(`Д´*)ノことが行われたんじゃないか、と思われたのではないでしょうか?!

 

ちなみに、論文読んでるだけではわかりにくい部分もあるので、下記のソースコードをサンプルにして勉強しました。

下記はオセロをAlpha Go Zeroの仕組みで学習する、というプログラムです。

https://github.com/suragnair/alpha-zero-general

確かに、とってもシンプルです。

 

 

印刷すると、ホワイトボード一枚に収まるらしいですね。

 

「AlphaZeroのソースコードはわずかホワイトボード一枚に収まる : 情熱のミーム 清水亮」

https://japanese.engadget.com/2018/02/12/alphazero/

 

わかってしまえばそうだな、なんぜ今までやらなかったんだ!ということって、結局それを発見、発案した人はすごいですよね。

コロンブスの卵と一緒ですよね。

 

単純なことだとしても、「わかる」までの道のりは、果てしなく遠かったわけじゃないですか。

今までのAlpha Goでの取り組み、モンテカルロ木探索、強化学習、ResNetとか今までの研究結果のいろんなことを詰め込んでなされたわけですよね。

 

この仕組みを考えた方の努力と天才性に拍手喝采、そしてそれを公開してくれることに感謝感激です。

 

実用性に異議を唱える人もいますが、世のいろいろな人が試してみたところ

・完全情報公開ゲーム

・ゼロサムゲーム

では、この方法が相当強いことがだいぶ証明されているようです。

 

 

次回は論文の中身を真面目に紹介する予定でーす(`・ω・´)

ベトナム行ってきた話(後半)

ベトナム行ってきた話(前半)の続きです~ヾ(´ω`○).

 

さて、Iちゃんが日本に帰ってしまい、一瞬一人旅。

ブラブラと街を歩いて、写真撮ったり…

とうふを手づかみで売っているおばあちゃん。

 

ホーチミン廟へ行ってみたり…。

移動は、ほぼGrabというアプリ使いました。

これ、東南アジアのUberみたいなやつで、ソフトバンクさんも出資してるんですよね。

めっちゃ便利!

何がいいかっていうと、いっぱいいるからすぐ来るし、前編で書いたように、タクシーだとぼられるのですが、Grabだと初めから料金きまってるので、ぼられないんですよ。

そこが観光客向けですよね~。

タクシーよりも安いし!10分ぐらいの、ちょっとの移動が、150円ぐらいでできます。

しかし、ある意味いっぱいいすぎて、一度、呼んだバイクが来たのかな?って思ったら、違う人で、勝手にアプリの画面を見てキャンセルされて

「いいから俺のに乗りなよ~(^_^)」

みたいなことをジェスチャーでされて、びっくりした( ゚Д゚) 下はGrabのバイクに乗るとこ。(普通の車もあります)

しかし、Grabのバイク乗ると、運転手さんが平気で運転中にスマホ操作してるから怖い((((;゚Д゚))) 前見て!前!って言いたくなる~。

しかも、ベトナムの道路ってめちゃくちゃ( ゚Д゚)

誰も信号も車線も守ってないw 空いてたら、通るって感じです。

そりゃ、駐在の日本人に運転させないわけだわ~。

お昼はグリーンタンジェリンってお店で取りました。今までと打ってかわって、こじゃれたフレンチなのだ。

https://www.tripadvisor.jp/Restaurant_Review-g293924-d808373-Reviews-Green_Tangerine-Hanoi.html

お店の内装もかわいい~o(>▽<)o

 

外国人しかいないwww

めちゃおいしかったです!ランチが2000円ぐらいなのに、ちゃんとした感じですた⊂(^-^)⊃

カフェにも入ってみた。注文をどのタイミングですればいいのかわかんない(;^ω^)

タンロン遺跡というところに行ったんだけど、昔千原ジュニアさんが来て

「天下一武道会の会場みたいな建物があるだけやな」

と評されたそうですが、まさにその通り。

司会のサングラスのおにーさんが出てきそうですね。

特に見どころないわりに広い…(;^ω^)

行かないことをお勧めしますw

 

夕方から、Tちゃんにまた遊んでもらうの巻。

なんと、Tちゃんの滞在しているホテルには、湖へ向かってゴルフの打ちっぱなしという施設があるのだ。

船で、時々ボールを集めてます。どんだけ貴族の遊びやねん!!

というわけで、普段ゴルフしない私も、やってみました。めっちゃ下手なんだけどw

夜は、Tちゃん一家と最初の日に行っておいしかったカニ食べたくって、また同じ店に行っちゃいました。o(>▽<)o

Tちゃん一家と別れてから、ホアンキエム湖の近くで歩行者天国とナイトマーケットというのをやってるというので行ってみました。

めっちゃにぎやかで楽しかったよ~o(>▽<)o

路上でディスコみたいなことやってるwww

なんか、ハノイは治安がいいらしく、危ない感じあんまりないんですよ。一人で夜ふらっと歩いてても大丈夫だった。

 

次の日。

Tちゃんと、アオザイ着て、シクロという人力車の自転車版みたいなやつに乗る、という体験をしました。

民族衣装とか!コスプレとか!大好きっ子としては!!!!
アオザイ!!!ぜひ着たかった!!今日!その夢が!かなう!!!! o(>▽<)o

Tちゃんは、白に青の刺繍で、これよく似合ってた~💛

私の足元はコンバース。カッコ悪っ!!

シクロというのはこんなの。シクロのおじちゃんはノリがよかった(^_^)

シクロで移動すると、ゆっくりだから、街の風景もなんか変わって見えるヾ(´ω`○).

ゆったりとした時間が流れました…。

美しいTちゃん!!

ところで、私には一つ疑問が。町の中で、時々アオザイを着ている女の子(普段着ではなく、大体なんかのコスチューム)は、皆さん凹凸が大変はっきりしていらっしゃる!!( ゚Д゚)

だけど、路上に歩いている洋服のベトナム女子は、それほど凹凸がない。

はて…(´ω`)

 

この答をTちゃんが教えてくれましたが、ベトナムでは女性はアオザイ着る時用の下着があるらしいです。

胸のところ、めっちゃ何かが詰まってるらしいwww

ありったけの夢かな??

よかった(ホッ) ←何が

 

お昼ご飯は、ブンチャーというそうめんのつけ麺みたいなものを食べました!

これも… Tちゃんがいなかったらとてもこの店に入れなかったかも(;^ω^)

隣の人との距離、ちかっ!

その後、ちょっと体調悪かったので、薬飲んでホテルで休憩(>_<)

夜ご飯をTちゃん一家とサムソンタワーの上の方にある中華のレストランで食べました⊂(^-^)⊃

この丸っこいのが、メロンパンみたいなのの中にひき肉が入ってておいしかった!💛

サムソンタワーから見下ろす夜景。都会だよな~もう!

最後に、空港でベトナム料理の中でも人気の高い、バインミーを食べました!

フランスパンに、レバーペーストと、肉が挟まってる。

確かに、シンプルだけどおいしい!o(>▽<)o 日本でも売ってくれるところ増えないかな~。

 

ベトナムについて思ったこと。

とにかく活気がある!平均年齢25歳ぐらいらしいですね。日本人の高齢な方が来ると、

「昔の日本みたいじゃのう」

というそうですが、確かにそんな感じなんだろうな~。(´ω`)

 

ベトナムにいると、自分が背が高くなったように感じるwwww

なんかね、平均身長低くないですか?(;^ω^)

弊社のHが外国のTシャツを集めているそうなので、お土産にXLのTシャツ買ってたんですが、178センチのHには小さかった!

ちなみに、Tシャツ買うとき、迷っているとどんどん値段が下がっていく。

最終的には500円ぐらいで買ったんだけど、なんか日本で改めて見ると、素材もなんか綿じゃなさそうだし、前と後ろのすそがまっすぐじゃなかったりしてwww

500円でも高かったのでは?!と思いました。

ヤバいTシャツ屋さんです。

 

ガイドブックにある観光名所はあまり行く価値はないw

ハノイ限定かもしれませんけど!

それより、町をぶらぶらしておいしいもの食べたり、町の様子見てる方が楽しかったかな⊂(^-^)⊃

 

親日!

日本の援助で建った橋とかあるそうで、日本人はとにかく受けがいいです。

 

冷房があまりない!

基本的に路上。店内を締め切ってないのでオープンエアー。私は冷房嫌いだから、本当に助かる!ヾ(´ω`○).

冷房大好きマンはベトナムつらいかもね(;^ω^)

でも、緑多いからかな、日本よりも涼しく感じるときさえありました。

 

そして、とにかくTちゃんと、そのご一家にお世話になりました!!

ありがとう~(>_<)(>_<)(>_<)

現地をよく知っている人がいる旅は、そうでない旅と違ってずっと楽しめるよね💛

ところどころゴチにもなってしまいました。感謝感激雨嵐。m(_ _)m

 

そして、熊本から来てくれたIちゃん~💛

私の適当な思いつきに乗ってくれてありがとう⊂(^-^)⊃

旅は道連れ世は情け!おかげでずっと楽しかったです。ヾ(´ω`○).

 

中学時代からね、大体くだらない話しかしないんですけどね(;^ω^)

 

 

ベトナムに行ってきた話(前編)

先日のことですが、ベトナムのハノイに行ってきました!

熊本の中学時代の友達が、旦那さんの仕事の都合でベトナムのハノイにいまして。

「ハワイの次はハノイに来なよ」

という一言で決めちゃいました!⊂(^-^)⊃

ベトナムは、一度は行ってみたいと思っていた国!

グルメな友達が、

「世界で一番ごはんがおいしい国はベトナム」

と二人も言っていたからです(`・ω・´)

 

同じく、熊本の中学時代の友達、Iちゃんと、現地で待ち合わせ。

会えるかな~ ドキドキ。でも、今どきは、Wifiさえあれば、LINEとか使えてすぐ連絡取れるから便利だよね~o(>▽<)o

 

ホテルからはタクシー。とにかく、わかりにくいのがベトナム ドン!

ドン!

支払いの時、メーターに加算して若干ぼられる…。早速の洗礼を浴びた感じです(;^ω^)

Iちゃんと、ちゃんと会えた!!

もう夜だったので、ホテルの近くで適当に食事。

カニがおいしかった!!!

 

ホテルは、オーセンティックハノイというホテルをBooking.comで予約しました。

一泊5千円ぐらいだけど、きれいだったよ!町の中心に近いので便利だし。

https://www.booking.com/hotel/vn/authentic-hanoi.ja.html

シーツが時々生乾きの嫌なにおいしたけど(;^ω^) フロントに言えば替えてくれますw

 

 

次の日!

現地にいるTちゃんと再会。なんと、15年ぐらいは会っていない。

Tちゃんには、旦那氏の会社から運転手つきの車が支給されているのだッ!すごい!セレブ!!

その車で、バッチャンという陶器の村に行きます。

ひたすら、陶器が売られている。

かわいいし、安い!

変なのも、ある。

早速友達へのお土産をお買い上げ~ スーツケースが大きければ、もっと買い物したかった、と思う楽しい場所でしたo(>▽<)o

昼食は、Tちゃんおすすめのフォーの店に。

現地の人々でごった返す店内。こっ これは入りづらい… Tちゃんがいなかったら、日本から来たふたりぐみだけだったら入れなかったと思う。

おいしかった!!ここです↓

フォー ティン

https://www.tripadvisor.jp/Restaurant_Review-g293924-d1124697-Reviews-Pho_Thin-Hanoi.html

 

そのあと、マーケットを見て

やっぱりアジア。ワイルド!

服は、買うんじゃなくって作るのが主流なんだって。布を買って、作ってもらうらしい。

 

街をぶらぶら。

とにかく、どこを切ってもなんかかわいい!

ごちゃごちゃしてるんだけど、うまく緑を使ってるんですよね。

西洋風なんだけど、アジアがうまく混ざりこんでいて、町全体がおしゃれなのです。

写真じゃなかなか伝わらないけど(つД`)

そして、とにかく路上に人がいる!排気ガスすごいのに、気にならないの~?( ゚Д゚)

道路上にはとにかくバイクいっぱいで、歩道にも留めてあるバイクたくさん。

一人一台バイクを持っているらしい…。

 

Tちゃんが連れてってくれた、おしゃれなカフェでコーヒー!

コーヒーはとにかくおいしかったですo(>▽<)o

ベトナムはコーヒーの生産世界一ィィ らしいですね。

 

Tちゃんはお子さんのお迎えがあるので、いったん帰り、Iちゃんとホアンキエム湖へ。

ガイドブックに一押しの名所みたいに載ってるけど… 湖自体は大したものではないwww

しかし、町の中心って感じなので、周りがにぎやかだし、行ってみるといいと思います!

観光名所の大聖堂へ。

見たことあるロゴ…。

なんと、この「メイソウ」というお店。

カタカナでメイソウって書いてあるのに、英語は「MINISO」じゃないですか。日本語はなんかギャグなのかな?って思って、

中に入ると、日本語のオンパレード!!製品名も日本語で大体書いてある。

もしや?

と思って裏を見ると、日本の名古屋市に本社がある日本の会社であった…。( ・∀・)

ワロタ。

このシリコンウォッチ、安いしかわいかったし、自分用に買っておけばよかったかな~。

 

またもやシャレオツなカフェでお茶。

なんなんだろう?インテリア・エクステリアの趣味がいい店が多い!

そのあと、Tちゃん家へ!

 

「見せてもらおうか!駐在妻のセレブな暮らしとやらを!!」

 

と言ってお邪魔したら、本当にセレブやった~( ゚Д゚)

湖畔の高級ホテルと一体型のレジデンス。

広い!きれい!おうちがおしゃれ!!

朝食はホテルが用意。お掃除も運転手もついている。

SUGEEE( ゚Д゚)

何より、Tちゃんがベトナム暮らしを楽しんでいて、

「ずっといたい」

とまで言っていたのがよかったです⊂(^-^)⊃ さすが、適応能力半端ない。

旦那氏と子供のHちゃんも一緒に、夜ご飯!

クアアンゴーンというレストランに連れてっていただきました(^_^)

ここは、おしゃれだし、おいしいし、観光客にも入りやすくておすすめ!

https://www.tripadvisor.jp/Restaurant_Review-g293925-d809040-Reviews-Quan_An_Ngon-Ho_Chi_Minh_City.html

飲みやすいハノイビール!オープンエアで飲むとおいしい~!!o(>▽<)o

Tちゃん一家になんとごちそうになってしまった!あざざざざすm(_ _)m

まだ寝る気にならないIちゃんと、ホテルの一番上にあるバーで飲み。

二人が中学生だった、二十数年前wは、まさか、ベトナムでこうやって乾杯することになると思わなかったよね…。

などと感慨に浸る(つД`)

人生とは数奇なものです。(`・ω・´)

 

うわわ 1日目だけでボリューム大!

2日目はあっさり行きます…

2日目は、Iちゃんとハロン湾というところに。片道4時間かかるので、オプショナルツアーで。

道中、道の両側に最近できたばかりの街、みたいなのがいっぱいあり、活気を感じる!

 

なんか、西部劇に出てくる建物みたいに、なんか適当なんですよw

日本語のツアーなので、もちろん周りは日本人の皆様。

異国情緒まったくなしwww でも、ガイドさんの話はためになった!

4時間ほどバスに揺られ…船に乗ります。昼食がついてる。

出航だ~

♪ありったけの~ 夢を~ かきあつめ~♪

…。

Iちゃんと乾杯!グラスには何も入ってないwww

 

しばらく行くと… おおっ!!きれい!( ゚Д゚)

ものすごい晴天にも恵まれ、ラッキー!!

鍾乳洞にもいきやした。

メタルのジャケっぽい写真。

バスから見る夕焼け。日本っぽいけど、どこか違う不思議な感じです。

しかし…ベトナムに旅行に行く人に、ハロン湾をお勧めするかというと、そうでもないw

片道4時間かけていくので、ほぼ1日つぶれてしまうし、ほぼ車の中だし。

 

そして… この日の夜、Iちゃんは日本に帰ってしまうのであった!

 

みじかっ(つД`)

でも仕方ない…。お仕事の都合と、福岡へはあまり便が飛んでないのです…。