一つ前の記事の補足。
他の人が追試しやすいように詳しく実験条件などを書いておきます。
本文を読みますと持ち時間に揺らぎを持たせているように読めますが、それ以外に何かされてますでしょうか。
序盤が同じ進行になりがちなので、なるべくばらけさせたほうが良いのですが、当初、それはやってなかったです。持ち時間設定を微妙に変えたぐらいです。ただ、それでも自己対戦棋譜2000局から学習させると、ひようら王と同じぐらいか、少し弱いぐらいの棋力にはなったので(npsに6割も違いがあるのに!)、この時点で、それくらいの棋力にならないとしたら、やはり他の条件(次元下げとか学習メソッドとか)が利いているのだとは思います。
学習メソッドには当初SGDを使いましたが、そのあとボナメソでも試して同じ結果が出ました。概して、SGDのほうがボナメソのようなバッチ学習に比べると収束の精度(?)は悪いので、SGDでいけるならボナメソなら十分いけるということのようです。
ボナメソでは棋譜の指し手で1手進めてPVのleafの評価値を得て、他の指し手で1手進めたときのPVのleafの評価値と比較しますが、そのときにαβ探索の探索ウインドウを棋譜の評価値±FV_WINDOWの範囲に窓を設定します。要するに、前者の評価値からあまりにかけ離れた評価値をつけた指し手のことは無視します。
また、棋譜の指し手で1手進めたあとの探索の探索窓はボナメソでは±score_max_evalであり、即詰みのスコアは除外されています。(即詰みのある局面は学習に用いていません。) 私はこれには理由があるんじゃないかとずっと思っていたのですが、BishopLearningで終盤の学習に失敗してようやくわかりました。つまり、即詰みの局面は極端な指し手なので本来学習に使うべきではないようです。即詰みの局面を除外することには意味があったわけですね。保木さんは偉大だと思います。
あと、棋譜をばらけさせたほうが強くなるは自明ですので、なるべくばらけさせようと考えました。まず、持ち時間設定をばらけさせました。これで多少ばらけましたが、序盤が同じ進行ばかりになってしまいます。まあ、それでも中盤以降はばらけるので自己対戦棋譜から中盤以降の何を学習して若干強くはなるようですが。
自己対戦させてその棋譜を追加して学習というのを繰り返しているうちに棋風が少しずつ変わっていきました。それによって多少は序盤もバラけました。棋譜の数が4000になったときに古い棋譜(初期の自己対戦による棋譜)は破棄しました。こうしているうちに、序盤が少しずつ変わってきました。
ただ、居玉と序盤で端歩を突きたがるのがなかなかなおりませんでした。
このイテレーションを繰り返していけば、そのうちなおるのかも知れませんが、わずかしか棋力が上昇しないので、いい加減面倒になってきて、もっとえいやー!で序盤が改善しないかと思ったわけです。
そこでBishopLearningで学習させてその評価関数で序盤の8~32手ほど指して(ここにランダム性を入れることで序盤をばらけさせようとしました)、そのあと評価関数を切り替えるというのをやってみました。これによる、棋力の向上はわずかでしたが、端歩と居玉はずいぶんなおったので、これによる自己対戦棋譜をまた2000ほど作成して、この自己対戦棋譜から学習させてみました。
このイテレーションを繰り返しているうちに棋力が少しずつ(R20ぐらいずつ?)上がったようです。
これを繰り返していけばまだ強くなる見込みはあるはずなのですが、美濃囲いと矢倉っぽい何かは覚えたものの、穴熊をなかなか覚えないようです。穴熊の形が出現しないので見たこともないものは覚えられないということなのでしょうか。
将棋ソフトの教師なし学習において一般的に、序盤の学習が一つの壁としてあります。勝率などから序盤の形の良し悪しを言うには相当高い棋力がないと成り立たなくて、Ponanzaレベルのソフトですら、自力で作った序盤定跡ではあんな変な形ばかりになってしまうことからもわかるように、(棋力の弱いソフトが)勝率ベースで序盤の形を学習させるのはちょっと無理があるんじゃないかと私は考えています。
そんなわけでBishopLearningはなかなかてっとり早く序盤の形を覚えてくれそうだったのですが、いかんせん穴熊がいつまで経っても覚えられません。
自己対戦において穴熊が出現しないから、穴熊に囲ったときに(出現する評価因子に)点数がつかない→穴熊に囲いたがらない→自己対戦において穴熊が出現しない
どう見ても負のスパイラルです。
ではどうやって穴熊の局面を出現させるか。これが課題となったわけです。これを簡単なhackで凌ぎました。次回に続きます。
ひまわりの山本です。
わざわざ記事を起こさせてしまって申し訳ないです。
少し状況が分かりました!
勝手に整理しますと、
評価関数は2種類
A:BishopLearningで学習
(手法は実験結果その3までのもの?)
B:自己対局の棋譜から学習
(学習メソッドはBonanzaメソッド)
1.BishopLearningで学習
↓
2.Aの評価関数で8~32手指す
(手数+時間でばらけさせてる?)
↓
3.Bの評価関数で終局まで指す
(時間で局面をばらけさせる)
↓
4.2と3を2000局繰り返す
↓
5.学習(Bonanzaメソッド)
↓
6.2~5を繰り返す
このような感じでしょうか。
> どうやって穴熊の局面を出現させるか
楽しみにしております!
はい、最終的なイテレーションはそんな感じです。当初、ひようら王の自己対戦の棋譜から学習させても少しずつ強くはなっていたので、もしかするとひようら王の自己対戦棋譜で学習させて、それにより学習させたソフトの自己対戦棋譜で学習させて…というイテレーションだけでも上限まで強くなる可能性はあります。このへん、どなたかAperyで追試していただければと思います。
ひよこカルロを使うことは考えていませんか?
ひよこカルロで(かランダムプレイヤーなどで)序盤だけ指させて、ランダム性を担保するのはアリかなとは思っています。ひよこカルロ自体は旧やねうら王に書いていたコードなので新しいやねうら王にportingしてくるのが大変なのでいまのところ持ってくる気にはなれないですけど…。
穴熊を覚えないというのは、種がなければ芽も出ないということかもしれませんね。
まだ空白の大地ですから残った根もなくまずは種を植えるべきなのでしょうね。
初期配置で玉を99に置くだって!!?
さすがやねうら!おれたちにできない事を平然とやってのけるッ
そこにシビれる!あこがれるゥ!
>Ponanzaレベルのソフトですら、自力で作った序盤定跡ではあんな変な形ばかりになってしまうことからもわかるように・・・
「あんな変な形ばかり」、、、と評価する基準はプロ棋士文化の影響かと。
より客観的な評価基準は、、、どちらが強いのか、、、ではないのでしょうか?
あるいは、どちらが合理的か、、、ですか。
そして序盤定跡では、プロ棋士が正しいのか、Ponanzaが正しいのか?
この話はどうやれば決着がつくとお考えでしょう?
それともプロ棋士が正しいとお考えですか?
同意ですね。
自分のコントロール下にあるということはとても整っているように見えます。
しかし、それを逸脱したとしても主観者のコントロール下にあればちゃんと収束するものです。
その過程の中で、意味が分からないというのは非常にまずいです。
意図を組んで先を詠めないことにはその事象には勝てません。
それはポナンザが未知の道へ踏み込んでいるということなんでしょう。
あの強さになるわけですから序盤に意味がないわけがないと考えるのが一般的では?
一般的な解析数学でも過程に意味をもたせないということがあるのでしょうか。詳しくはないのですが。
いろいろあってなぜかそうなった。っていうのはかなりまずいと思います。
ささやき - いのり - えいしょう - ねんじろ!の過程でかなりの確率で灰になってしまいます。
そういう向きを真面目にやってほしいと勝手に思っているので、事象の逆算と検算をおすすめしておきます。
まぁ、ウルサイだけですよね。
> それともプロ棋士が正しいとお考えですか?
私の場合、プロの対局に出現する/しないという評価基準ではなく、自分の棋理こそが正しいと信じています。
来年の電王トーナメントでやねうら王がその証明をできると良いですが、来年の選手権で、技巧が証明してくれるかも知れませんね。
素晴らしいです。
そこに痺れるあこがれる~。
>自分の棋理こそが正しいと信じています。
うーん、しゅごい!
まるでプロ棋士のようだ!!
>BishopLearningで終盤の学習に失敗してようやくわかりました。つまり、即詰みの局面は極端な指し手なので本来学習に使うべきではないようです。
かつて「ボナメソで学習するプロの手にも悪手があるのはそのままで良いのか」という意見に対して、「評価関数≒プロの感覚とすれば、悪手であろうと良さそうな筋であれば良いのでは」と反論した事を思い出しました。
「場合の手」は探索で確認すればよく、局面評価としては、(末端まで読み切れない限り)何処まで行っても良いかどうかではなく、良さそうかどうかが問題なのかな、と。
まあ、そういう気もします。
>いまから全力で自己対戦させて1万局分の棋譜を用意してそれで学習させてみる。・・・
その後、いかがな様子でありましょうや?
いま自己対戦棋譜、7000局ぐらいのようです。1万局は週末ぐらいかな?
はじめまして。
記事を読む限り、学習前半は棋士の棋譜なり、人間の知識の詰まった棋譜のみを学習に使用しているということでしょうか。
棋譜から局面を用意し、その局面から読ませるということは、探索木の根局面には囲いなど、戦型が出現しているものと思います。
探索木の根局面に囲いが出現している以上、探索木のほぼ全体に囲いの特徴量は出現すると思います。
これを学習しているのならば、囲いを組めるようになるのは真っ当で、根本から棋譜に依存しているので真に「人間の棋譜を用いずに」などとは言えないのではないでしょうか。
囲いに限定せずとも、戦法などの「型」についても同様です。
見当違いの意見でしたら申し訳ございません。
> 記事を読む限り、学習前半は棋士の棋譜なり、人間の知識の詰まった棋譜のみを学習に使用しているということでしょうか。
一切使ってないです。「ひようら王(ひよこ将棋)」という、駒得のみの評価関数のソフトによる自己対戦棋譜からの学習です。
「ひまうら王の実験開始しました」の内容をややこしく誤解していたようです。
大変失礼いたししました。
棋譜の品質に関して、ひようら王自体の読みが深く、下手な手(e.g.駒得する指し手がない状態で指されるであろうランダムな指し手の中でも、
玉が前進するような酷い手)は無い、ということでしょうか。
学習に使用した自己対局棋譜にも興味が出てきました・・・。
別件ですが、やねうら王miniの完成待ってます。
ご返信ありがとうございました。
以下の記事も参考になるかと・・・。
自己対戦棋譜からの学習について
http://yaneuraou.yaneu.com/2015/12/05/%E8%87%AA%E5%B7%B1%E5%AF%BE%E6%88%A6%E6%A3%8B%E8%AD%9C%E3%81%8B%E3%82%89%E3%81%AE%E5%AD%A6%E7%BF%92%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
ひまうら王のバイナリ、公開しました。
http://yaneuraou.yaneu.com/2015/12/25/%E3%81%B2%E3%81%BE%E3%81%86%E3%82%89%E7%8E%8B%E3%81%AE%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E3%80%81%E5%85%AC%E9%96%8B%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82/
その記事も読んでいます。そもそも私自身の勘違いが原因でした・・・。お手数おかけしました。
ひよこ将棋だと、駒得する手がない状態では指し手がほぼランダムになるのでいろいろ疑念があったのですが、
ひようら王自体の読みが十分に深ければ、むやみに玉が前進するような問題もある程度回避された棋譜になる、と今更気づき始めました。
棋譜をホームページで見れるようにしてほしい。
ひまうら王の棋譜ですか?はてはて。
floodgateに参戦させていたことがあるので、floodgate上に何十局かありますけども、それでいかがでしょうか?