ソシャゲーで上位ランカーになってみた結果


今年の2月ごろの話なんだけど、ゲーム会社の社長とこんな会話をした。


社長「やねさん、クラッシュ・オブ・クラン知ってる?」
やね「知らないっす。」
社長「クラッシュ・オブ・クランみたいなゲーム作りたいんだよねぇ。ちょっとやってみてよ。」


言われるままにクラッシュ・オブ・クラン(クラクラ)をインストールしたのだが、絵柄が生理的に受け付けなかった。そこで、クラクラのパクリゲーと言われる、『進撃の巨人』のほうをやることにした。『進撃の巨人』のほうは、劣化版のクラクラである。一応、今年の4月の時点で200万ダウンロード突破とかなんとかでTV CMをしていたので知っている人も多いだろう。


この手の課金型のソシャゲーは金を使えば、あとは時間さえあれば誰でも上位になれるわけで、今回、私はあえて無課金のままどこまでいけるかやっていたわけだが、先々月の時点で個人ランキング10位台。(特定されるとゲームがやりにくくなるので、現在の順位は秘密。)



無課金部門があれば間違いなく私が全プレイヤー中、1位だと思うんだけど、無課金だと課金組と5倍ぐらいスコアの伸びに差がある。プレイヤースキルでカバーできるのは50%程度。あとはひたすら時間がかかる。デスクワークの合間、合間にポチポチ押している。平均すると1日10時間以上やっている。


上位の奴らは課金組でなおかつ1日14時間ぐらいやってやがる。よくもまあ、こんなゲームを1日14時間もやってやがるなと思うわけだが、読者からは「お前が言うな」とツッコミが入りそうであるな…。


ちなみに上位ランカー、月に10万円か20万円か使っていて、なおかつ時間をどっぷり使っているわけである。そのためか上位ランカー、会社社長が多い。会議中にもずっとポチポチやってやがるのだ。私も社内の会議中にもポチポチやっている。ちなみにうちの社員はパズドラをポチポチやっている。


私 「あの件はどうなってるかね?」(『進撃の巨人』をポチポチやりながら)
社員「あれでしたら、もう八割方完成してます」(『パズドラ』をポチポチやりながら)
私 「そうか…」(ポチポチ…)
社員「はい…」(ポチポチ…)


まあ、読者のまわりにも会議中に社長がポチポチ同じゲームをずっとやってやがる会社があると思うが、そいつらが上位ランカーだ。

やねうら王開発実況用スレッド その2


■ 2014/10/24 22:30 ETV特集棋士VS将棋ソフト 激闘5番勝負」


明日のNHKで、以下の前回の電王戦の特集があります。以前、私が取材を受けたときの映像を再編集したものらしく、今回は1時間番組なので前回の『サキどり』のときより詳しく取り上げてもらえるようです。


【番組概要】
NHK Eテレ ETV特集棋士VS将棋ソフト 激闘5番勝負」
放送日時:2014年10月25日23時
(再放送:2014年11月1日0時 ※10月31日深夜)
http://www.nhk.or.jp/etv21c/file/2014/1025.html


■ 2014/10/24 24:00 Bonanzaのmake_listの38要素化


Bonanzaのmake_listの38要素化について解説記事を書いたので興味のある人は御覧ください。


Bonanzaのmake_listの38要素化
http://d.hatena.ne.jp/LS3600/20141024


Bonanza方式の評価関数 ≡ やね裏評価関数 ≡ make_listの38要素化 となる。(ここでの“≡”は、相互変換可能という意味)
以前、私はこれを数学的に証明した。Aperyの平岡さんが、先日ファジー学会誌にコンピュータ将棋について寄稿するときに「Bonanza方式の評価関数 ≡ make_listの38要素化」について書いてくれた。


ここに俺様の大変エレガントな証明を書いて皆様に堪能していただきたいところだが、このブログの余白はそれを書くには狭すぎる。(とか言って逃げる)


■ 2014/10/25 17:00 人間とコンピューター将棋との違い


よくプロ棋士の方は「将棋ソフトはコンスタントに80点の指し手を出せる。だから強い。」みたいなことを言いますね。また、「人間は100点に近い手を指せるが、たまに0点の指し手を指してしまう。」と。


この意見には賛否あるようですが、勝率が人間とソフトで等しい状況においては、正しいと私は考えます。そのことを以下で簡単に説明します。


人間は短手数の読みを見落とすことがあります。プロでも3手詰めや5手詰めを見落とすことがあります。一方、将棋ソフトは0.1秒の思考時間でも7手詰め以下を見落とすことはないでしょう。


人間には短手数での見落としがあるにもかかわらず、ソフトと勝率が等しいということは、長手数の読みや大局観において人間が短手数での見落としを補うだけの力が総合的見てあるということですね。(勝率が等しい状況においては、です。)


なので、勝率が互角ぐらいの人間とソフトが相対したときに冒頭のような発言が人間側から出てくるのは、これはまことに正しいのです。


ところが、最近は、ソフトのほうが勝ち越すということもあって、そうなってくると「長手数の読みや大局観」においても人間のほうが優れているのか何とも言えなくなってきます。人間のほうがソフトより正確に形勢を判定できるかどうかは、その局面の性質次第と言えるのかも知れません。(例 : 実際に先を読まないと形勢が判断できないような局面だと人間は相対的に苦手である。)


■ 2014/10/26 16:00 これちゃんと動くんか?


いま棋譜からの学習部を一から作ってます。棋譜からの学習部、あとは棋譜読み込みとPV(最善応手列)求めるところを書けばだいたい完成。たぶん今日の深夜ぐらいに完成。それできちんとパラメーターが収束するかどうかはワカラン…。


今日は私の誕生日なので誕生日祝い(?)に一発で動いて欲しいものだが…。


誕生日と言えば11月3日が息子の誕生日なので決勝で上位に入賞して息子の誕生日プレゼントを買ってやりたいのだが、いまのままでは上位に入賞どころか、予選を突破できるかどうかすら怪しい。というか、こんな状態で参加できるかどうかすら怪しい。



■ 2014/10/27 20:00 学習部の並列化


とりあえず棋譜からの学習部は9割ぐらい出来た。AWSを借りようと思っていたが仮想32コアマシンが1時間4,5ドル程度。物理16コアでしかも2.8GHzなのでCorei7 4771 3台分ぐらいの価値しかない。


棋譜からの学習部を並列化したほうがよろしい。並列化するためには別PCとデータの送受信をする必要があるが、もっとお手軽にやるにはWindowsの共有フォルダ上で棋譜からの学習の実行ファイルを動かせば良い。


1. (2PCで学習させるとして)棋譜を2つに分ける。
2. 実行ファイルをネットワーク共有しているフォルダ上に置く
3. それぞれのPCで棋譜からの学習のための実行ファイルを起動する。
4. 片側はmaster、もう片側はslaveだとする。
5. イテレーションごとにslave側はKPP,KKPの値をどう動かすかという勾配値(derivative)をファイルに書き出す。master側はそのファイルを見つけたら丸読みして、その値を自分のderivativeに加算。
6. master側、イテレーションの最後にKPP,KKPの値をファイルに書き出して、derivativeファイルを削除。
7. slave側、derivativeファイルが削除されていたら、(共有フォルダ上にあるmasterが書きだした)KPP,KKPのファイルから読み込んで次のイテレーションへ。
8. master側も次のイテレーションへ。


これなら1時間もあれば実装できる。台数が増えたときもこのやり方を少し変えるだけで対応できる。


■ 2014/10/29 0:00 今日がタイムリミット?


とりあえず棋譜からの学習部は書けた。学習に使う棋譜は64個でテスト中。


駒割りだけだと深さ3の探索において、棋譜との指し手一致率は26%。1回目のイテレーション後、深さ3の探索において指し手一致率32%に上がったので学習自体はうまく書けているようだ。(過学習するかとかちゃんと収束するかとかそのへんは知らん…)


Bonanzaでは指し手一致率は40%ぐらいになるので、最終的に数万棋譜に対してそれぐらいの一致率にならなければならない…が、時間がないな…。


あと、さっき走らせてたら、アクセス違反で落ちた。原因調べるのにデバッグモードで走らせないといけないが、デバッグモードだと100倍ぐらい遅いんだよ…。助けてくれー。


今日中に並列化までやってうまく学習が回せる状態になってなければ、もう駄目ですわ…。
せっかく面白くなってきたのになぁ…。


■ 2014/10/29 3:00 デバッグは終わった


並列化はまだだがデバッグは一応終わった。PC並列化は、もう少しの間、手作業で値をある程度のところまで収束させてからにしようかと思う。


それで私の対局棋譜からのみ(!)学習させてみた。棋譜の数は16局。ちなみに私の棋力は将棋ウォーズで3,4段。


・学習に使った棋譜 = 16局。棋譜の内容 = 私 vs 私。
・depth = 3 , iteration = 16 , step = 4
Bonanzaではrootで1手進めてからdepth分読むのでdepth = 3だと4手読みの意味になるが、ここではrootから数えて3手の意味。
・学習に要した時間 15分ほど。


やねうら王側の棋力、いまの状態でたぶん初段〜3段ぐらい。ちゃんと王を囲ったりするので見ていて面白い。独創的な囲いをする。KPの左右対称で同じ点数をつけているためか、初手38金(たぶん78金と同じように思っているのだろう)とか指すことがある。


試しにBonanza6とやらせてみたら、形勢の評価がまるで違う。もちろん、Bonanza6のほうが正しい。しかし、面白いことに入玉だけは、このバージョンのやねうら王のほうが明らかに強い。Bonanza6が全く入玉しないのに対して、やねうら王はうまく入玉して、自玉の周りを固めながら駒得を果たして逆転してしまった。



これは、次元を極限まで下げて学習させた成果だろう。入玉将棋のような未知の局面に対してもそれ相応の指し手が指せることが証明された。


わずか16局の棋譜(それも私の棋譜!)から学習したのに入玉将棋がきちんと指せるというのはなかなか凄い。これをもって、やねうら未来学習メソッドの有効性が示せたと思う…が、いささか過学習ぎみになっている気もする。このへんの調整が当日までに出来るかどうかは正直わからん…。


■ 2014/10/29 7:00 AWS使うよ!


AWSで32コアマシンを借りたよ!計算資源としてはコスパ悪すぎると思うけど、1分、1秒が惜しいので仕方がない。AWSの料金回収メソッド(なんじゃそりゃ)が現地で炸裂するといいですなぁ…(´ω`)



少ない棋譜から学習する能力はあるので、とりあえず相対KPPのほうがある程度収束するところまで棋譜の数は64ぐらいで回して、そこが収束してから指し手一致率を確認しながら棋譜の数を徐々に増やしていく作戦。



■ 2014/10/29 19:40 AWS高いよ…


AWS借りたけど、iteration思ったほど回らないよ…。1回のiterationに結構時間がかかって、全然回せないよ…。回数まわさないと収束しないというのに…。


今晩並列化して、AWSを100台ほど借りれば2,3日で収束するのかも知れないが…。1時間400円だとして、


400円×24時間×100台×3日 = 288万円


かぁ…。電王トーナメントの1位の賞金超えてるんですけど…。


■ 2014/10/30 5:00 うわっ…私の次元、低すぎ…?


ここで残念なお知らせがあります。


評価関数パラメーターの次元下げですが、どうも学習に時間がかかりすぎることに気づきました。KPP、1つのパラメーターを128に分解していたのですが(NDFは4つに分解)、これだと学習におおよそ128倍の時間がかかります。探索している時間とかもあるので実際は128倍よりは小さな数字のはずですが、仮に50倍程度だとしても本来棋譜からの学習にはハイエンドのマシンで2週間程度はかかるので、50倍はやっぱり大きい数字です。


そこまで次元を下げると、人間のようにわずかな棋譜から学習できて、その人間っぽさに(指し筋のへたれさも含めて)ちょっと興奮していたのですが、いかんせん時間がかかりすぎます。


そこで次元下げは128から16に変更します。これでも通常の16倍近くの時間がかかるのでどうなるかはわかりませんが…。とりあえず初期値を以前のやねうら王の評価関数の値から無理やり次元下げしたものを与えたので、0から回すよりは収束するのは早いかと思います。


AWS(仮想CPU 32コア)
・thread = 32 , depth = 3 , step = 32
・1回のiterationが7時間程度 → その後、高速化して6時間弱になりました。


ソフトの改良はこれにて終了。当日、余力があればブログに何か書きます。
いまの状態だと決勝に残れるかどうかすら怪しいですが…。


■ 2014/10/30 14:00 並列化は辛いよ…


AWSで10台ぐらい借りて並列化しようかといままさに考えているところですが(30万円ぐらいかかりますが…)、学習用の評価関数ファイルが大きくて、これをネットワークごしに送り合わないといけなくてPCを分けてもそんなに効率が出ない & 実装が結構手間がかかる & ネットワークの転送量に対して料金が課せられるところでやりたくない、みたいな理由で今回は見送り。


代わりに学習を少し高速化しました。20%ほど速くなりましたが…誤差です…。


今回は、棋譜からの学習をいろいろやったので、こうやれば強くなるのかな、というのはわかってきました。評価関数の形だけ適切に設計すれば、あとはやねうら未来学習メソッド(この名前いい加減うざいな!)で自動的に強くなるので、ここまでくればあとは開発にそんなに時間を費やさなくとも(評価関数の形が適切であれば)強くなるのでしょう…。


そんなわけで適切な評価関数の形をコメント欄で大募集してます。


■ 2014/10/30 16:20 やねうら未来学習メソッドの詳細


なんかtwitterで「このヒントでは全然わからん」という意見が多かったので、詳しいことを書いておく。隠すつもりはなくて、私としては「これだけ書けばわかるだろう」と勝手に思い込んでいたわけであるが。私が勝手に思い込んでいるだけなので、これがあのヒントでわかったから賢いとか、わからなかったから頭が悪いだとか、そういう類のものではない。(と思う)


ヒント)
・KPPを絶対と相対で128通りに分解
・NDFの手法(4通りに分解)を一般化


私は次のように考えて欲しかったし、また次のように考えてもらえると勝手に思い込んでいた。


3駒相対は3駒絶対から並行移動させて重なる関係にある。3駒絶対のほうの次元を下げると同じ要領で3駒相対のほうの次元を下げることが出来る。
NDFの手法はKPPという三駒関係を4つに分解してあるが、PPを2駒と捉えるのではなく3駒の枠組みで捉えるならば、これはKPPのKが任意の場所にあるものと捉えることが出来る。いま任意の筋、任意の段にあるKをK**と表記しよう。


つまり、NDFの手法は、絶対KPP + 絶対K**PP + 相対KPP + 相対K**PPという4つに分解してあるわけだ。


一方、私がヒントとして書いた128と言えば2^7(2の7乗)である。KPPを分解するときに絶対と相対とで2倍になるから、絶対のほうが2^6通りあって、相対のほうも同じ数である2^6通りに分解できるということである。KPPという3駒を分解して2^6通りにするのだから、1駒2^2ずつ割当たる。NDFからの連想で、言うまでもなくこれは段と筋である。


つまり、いま絶対K78P76P67のような関係があるとして、絶対K7*P*6P6* と書けば、これは7筋目にいる王と6段目にいる歩と6筋にある歩による関係を意味するとしよう。段と筋を表す場所が3駒で6箇所あるから、ここが * (ワイルドカード)になるか否かという2通り^ 6 × 2(絶対・相対) = 128通りなわけだ。


これにより、NDFの手法がより一般化され、より細かく分解されることとなる。こうなっていることで少ない棋譜からそれなりに学習することが出来る(かも知れない)という理屈である。


ただ、相対KPPに関しては結構難しい話があって、これはこの手法が成功したらどこか向けの論文として書こうかと思う。


しかし、細かく分解されすぎていて、これに対して適切に学習させるのはボナメソのままでは結構難しい。ボナメソをいくつかの点で改良するか、あるいはボナメソより優れた学習メソッドが必要だと思う。これについては、一応解決したつもりだが、まだよくわからない。きちんと解決できていたら、これもどこか向けの論文として書こうかと思う。

やねうら王開発実況用スレッド


■ 2014/10/15 9:00 Stockfishの最新版は罠なのか


5日ほど前にStockfishの最新版(GitHub上のもの)を参考に探索部分を調整した。Stockfishの前回からの差分調べたり、デバッグしたりするのに丸2日ぐらいかかって、そのあと2日ほどかけて200戦ほど対戦させると古いバージョンに対して1割ほど負け越していた。なんなんだろう。最新版は罠なのか?もっと対戦させるべきなんだろうけど、やっている戦型が偏っているせいもあってか正確な比較になっていない気もするし、とりあえず負け越しは気分が悪いので涙目でrollback。


■ 2014/10/15 19:30 やねうら未来探索について


コメント欄より。
> 「将棋ソフトの流れを汲まない」ってところについてもう少し詳しく書いてくれると嬉しいです。


(自分以外の)日本人が考え出した将棋ソフトのアイデア・実装を一切使わないという意味です。具体的にはBonanzaの1手詰め、3手詰め、GPS将棋のdf-pn、Bonanza方式の手駒だけ損している局面の検出、Bonanzaメソッド、Bonanza型の3駒関係etc…。(時間の都合で1手詰めと3駒関係はもしかしたら使うかも知れませんが…)


別に私は日本人に恨みがあるわけではありません。彼らが生み出したものがどれくらいのものなのか。コンピューター将棋の歴史(成果)がどれほどのものなのか。それらを正しく評価するためには彼らの成果をいったん全否定して、そしてそれなしに独力でやってみて、そのあと、出来がよくなかったら、「やっぱり1手詰め入れたほうがいいよね。1手詰め偉大だよね。」というように必要性や偉大性が初めて実感できると考えています。ニーチェの言葉で言えば、これが「およそ到達しうる最高の肯定の形式」でしょう。


■ 2014/10/15 21:15 やねうら王はツンデレちゃん


> PVではキオビヤドクガエルみたいなロボットですが、あれは作者からするとやねうら王のイメージとは違うのですか?


誰がキオビヤドクガエルだよ、ウワァァァンヽ(`Д´)ノ
やねうら王のイメージガールは、やねうら王公式*1ツンデレちゃんです。


■ 2014/10/15 21:20 第2回 将棋電王トーナメントPVの件


私の「カップラーメンのお湯を原爆で沸かす人はいない」というくだりは、人間の知性を超越した汎用的な思考エンジンにもなりうるようなコンピューター将棋/チェスの探索エンジンを、たかが将棋ソフトのためだけに使うのは暴挙であり、コンピューター将棋にしか使わないとしたらそれはエンジニアとしての傲慢であり怠惰であり社会的損失である、という意味です。


また「コンピューター将棋の歴史がナンボのもんじゃい」というのは、上で書いた「彼らの成果をいったん全否定して、そしてそれなしに独力でやってみて、(そうして初めて)その必要性や偉大性が初めて実感できる」という流れでしゃべりました。


私の発言の前後は大会を盛り上げる趣旨にそぐわないと判断されたのか例によってカットされており、意味不明な映像になっておりますが…。(´ω`)


まあ、私のサゲサゲな発言をうまく切り貼りしてアゲアゲな感じにする佐藤映像さんの手腕はさすがと言わざるを得ません。(皮肉ではなく、サゲサゲな感じでPVに使われるよりは、アゲアゲな感じで使われたほうが良いという意味です。)


■ 2014/10/16 9:00 やねうら未来学習メソッドについて その1


コンピューター将棋では、ボナンザメソッドを初めとして棋譜から評価関数のパラメーターを機械学習させるのが主流であるが、初代Bonanzaでで3万棋譜、後発の強豪ソフトはその何倍もの棋譜を用いている。果たして本当にそんなに要るのだろうか。人間が将棋を覚えてプロ棋士になるまでに10万棋譜も(他人の棋譜を)並べるだろうか?下手すると1万棋譜にすら及ばないのではなかろうか。それなのに人間はちゃんと学習できるわけである。そこに人間の偉大さがあるわけだが、裏をかえせばとりわけコンピューター将棋の評価関数パラメーターの調整方法には改良の余地が大いにあるわけだ。


例えば、NDFは3駒関係を3駒絶対+3駒相対+2駒絶対+2駒相対のように分解して学習させた。*2 データの次元を下げたわけだ。NDFはNDF独自の学習メソッドを開発したが、その効果のほどは私にはよくわからない。というのも、このように3駒関係を分解してボナンザメソッドで学習させるだけで相当に棋力が向上すると言われている。たぶんAWAKEはこの方法。*3 だから、ボナンザメソッドはボナンザメソッドで改良の余地があるだろうけど、データの次元を下げることでボナンザメソッドのままでももう少し精度の良い学習が出来る。


また別の言い方をすれば、ボナンザメソッドほど優秀な学習方法でなくとも次元をひたすら下げていけばちゃんと学習できる(かも知れない)ということでもある。そうすれば大量の棋譜は要らなくなる。学習時間が短縮化できる。羽生さんの棋譜だけで学習するだとか、長い持ち時間で自己対戦させたコンピューター将棋同士の対局棋譜のみを使う、というようなことも出来るようになる。(かも知れない)


■ 2014/10/16 18:00 やねうら王(笑)


今回、電王トーナメントにエントリーするときに名前をどうしようかと思ったのだが、「やねうら王 2014」だと、今年5月ごろに将棋倶楽部24に放流していたものと紛らわしい。かと言って、「やねうら王 2015」だと来年はどうするのかという問題が出てくる。


「やねうら王 2014 後編」「やねうら王 2014 Alternative」などいろんな名前を考えた結果、「やねうら王(笑)」とかにしたらどうかというアイデアが浮かんだ。ちょうど『STEINS;GATE』に夢中になっていたときで、作品中に出てくる「電話レンジ(仮)」からの着想である。


しかし「やねうら王(笑)」にしてしまったら、ニュースサイトや新聞で取り上げられたときに「Aperyとやねうら王(笑)は、激闘を繰り広げた。」とか書かれても、全然激闘に見えないって言うね。個人的にはそれはそれでやねうら王らしいかなと思うんだけど、なんか記者の人が迷惑しそうなのでストレートに「やねうら王」のままで行くことにした。


■ 2014/10/17 9:00 やねうら未来学習メソッドについて その2


次元の下げ方は他にもある。例えば、王の右隣の金と二つ右隣の金とではどちらが価値が高いだろうか?右隣のほうがいくらか価値が高いだろう。このように2駒相対でも、隣接する升につく値自体は比較的滑らかであると考えられる。これを利用する。Aperyチームはたぶんここを多項式近似でやっている。*4 2変数関数の多項式近似、テイラー展開してほげほげ…うーんそんなの20年ぐらい前にやったなぁ…(遠い目)


時間もないことだし、一発でバグなしで書く自信がないので多項式近似は私は採用見送り。もう少しシンプルな方法でやる。まあ、多項式近似が適しているのかどうかはよくわからない。そのへんは(3駒関係を採用するとして)3駒関係にどういう点数がつくのが適切かという問題でもある。


また例えば、先手の王と角と銀のような3駒関係を考えるとき、角の利きがあるところとないところとでは事情が違ってくる。角が行ける場所(チェッカープレート的な意味で)の銀かどうかでも話が変わってくる。また敵陣にいる生角と、非敵陣にいる生角とでも価値は大きく違ってくる。


何らかの関数で近似するにしてもこれらについては分けて考える必要があると思う。(不連続な関数になるだろうから) このへん比較実験等をやるべきなのであるが、実装→機械学習→ランニング(自己対戦)というサイクル、残り2サイクル回せるか回せないかの時間しかない。バグなしで一発で書けて2サイクル回せる程度。たぶんそれは無理。1サイクルしか回せない。つまりワンチャンスしかない。泣きそう。


ともかく今日中にやねうら未来学習メソッド(うざいな、この名前!)の学習部を完成させてランニングするぞー。


■ 2014/10/18 11:00 OS X Yosemiteはヨウスミテ


OS X Yosemiteの無料配布が始まったので速攻インスコした。VMWare Fusion4が使えなくなった。Fusionの最新版は7らしく、7ならYosemiteに対応しているらしいのだが、OSが無料なのにOSのアップグレードごとにFusionにお金を払うのは馬鹿らしい。もしかすると仮想環境はもうオワコンなのかな…と思いつつ、Fusion4→7はアップグレード扱いにならず新規購入のみだったので、Paralles Desktop 10を購入。


ParallesではFusionのディスクイメージをそのまま使えるのだが、ディスクイメージの変換をしないといけなくて、MacBook Airにその空き容量がないから外付けHDDにいったん移動させて…みたいなことをやってたら丸一日潰れた。こんなんで電王トーナメントに出れるのか見ていて不安になっている読者もおられるだろうが、もちろん私も大いに不安である。


■ 2014/10/19 17:00 妖怪将棋はじめました


土日は息子(5歳)と遊ぶ曜日と決まっているので、息子と遊び倒した。プログラム1行も書いてない…ヤバイ。息子は本将棋になかなか興味を持ってくれないので、毎回将棋の駒を使った新しいゲームを私が考えて、それをやることにしている。今日やった(私がルールを考えた)のは「妖怪将棋」


【妖怪将棋のルール】 59と51に先手、後手の王を置く。先手と後手が交互に「歩」をサイコロ代わりに振る。表が出ると移動であり、盤上の好きな駒を本将棋のルールに従い移動できる。(手駒があればそれを打つことも出来る) 裏が出ると「召喚」か「移動」かを選択できる。召喚したいときは、「召喚〜!」(妖怪ウオッチの妖怪を召喚するときの声で)と言いながら駒箱から好きな駒を1枚召喚できる。召喚した駒は好きな場所に置ける or 自分の手駒化することができる。王を取られると負け。


なかなか面白いと思うのでみんなやってみて。駒を並べる手間が掛からないし、将棋の終盤の醍醐味が楽しめる。


この妖怪将棋のルール140文字にまとめて、ツイートしてきた。流行るといいな.. → https://twitter.com/yaneuraoh/status/523752757883174912


※ 追記 : 難度調整の例)
変更ルール1) 玉の位置が59と51からだといきなり頭上に金を召喚されてしまって短手数で終了してしまうので子供がそれを学習したら、玉の位置を58と52、57と53のように場所を変えてやるとゲーム性が増します。
変更ルール2) あるいは、初期陣形として玉の両側に金を配置してやるだとか。
変更ルール3) 歩を47,57,67(後手は43,53,63)に配置するだとか。
変更ルール4) 折りたためる将棋盤なら盤面を片側(4×9)だけにするだとか。
変更ルール5) 召喚は歩を振って可能にするのではなく、1局に10回まで自分のターンで「召喚」と宣言すると召喚できるようにすると実力勝負に。
変更ルール6) 歩を振る枚数を2枚にして、1枚裏 = 召喚 or 移動。2枚とも裏 = 変身 or 喚 or 移動。として、変身は自分の盤上の駒を駒箱の別の駒と交換できるだとか。
変更ルール7) 歩を振って低い確率において、「変身」以外に「チェンジ」と宣言して盤上の任意の2駒(相手の駒でも良い)を交換できるだとか。
変更ルール8) 歩を振って低い確率において、「変身」以外に「反転」と宣言して盤面を180度回転させられるだとか。


のようにやるごとに新しいルールを追加したり減らしたりして、そのルールにおける最善を息子に考えさせたり、そのルールのルールとしての良し悪しを考えさせたりしている。自分の思考訓練にもなってとても楽しい。


■ 2014/10/19 20:00 やねうら未来学習メソッド3


普通、棋譜に出現回数が少ない因子はゼロに収束する。(というか、0に収束するような力を学習時に加えてやる)


そうすると、学習時に出現していない局面の因子はゼロに収束してしまう。そこで、棋譜の数を桁違いに増やしていろんな特徴因子が必ずたくさん出現するようにする。しかしそんなに大量の棋譜は世の中にはないので(プロの棋譜が3〜5万と、floodgateの棋譜が50〜100万棋譜程度)、NDFがやったように何らかの方法で局面を水増ししないといけない。大量の局面があるので学習にも大量の時間を要する。(局面数に比例した時間を要する)


棋譜や局面数を増やすというのは力技ではあるが、確実に成功する方法である。何故なら、それによって正しい(いい感じの?)値に収束しやすくなるからである。これには電気代と学習に要する時間が必要である。(さらに言えば数億〜数百億局面を与えて正しくパラメーターが収束するような学習メソッドでなければならないが…。)


もう一つ別の方法は、少し手間がかかる方法ではあるが、出現しなかった特徴因子がゼロに収束してもそれほど問題とならないように学習時の評価関数の設計を行なうことである。そうすると棋譜が少なくて済む。学習に要する時間も劇的に短縮される。


どうやって設計するか例示しよう。


例えば、玉の周辺8近傍の空き升の状態(空いている/いないを1bitで表現するとしたら8近傍=8bit=256通り)と玉の位置(81升)との組み合わせとなる。大雑把には256×81通りの組み合わせとなる。これに対する広さのボーナスを評価因子として用意するときのことを考えてみよう。


玉が中段にいて8近傍がすべて駒に囲まれているような局面は現実的には出現しない。かと言って、そのときこの評価因子が0になってはまずい。


そこで、例えば、
玉の左上・真上・右上に駒があるときの広さボーナス = 玉の左上・真上に駒があるときの広さボーナス + 玉の左上・右上に駒があるときの広さボーナス + 玉の真上・右上に駒があるときの広さボーナス + 玉の左上・真上・右上に駒があるときの広さボーナス
というように分解してやる。そうすると、最後の項が出現回数ゼロで、ゼロに収束したとしてもそこそこ正しい値がつく。


このような因子の分解を玉の位置に関しても行なう。


88の玉の真上に駒があるときのボーナス = 8段目に玉がいて、その真上に駒があるときのボーナス + 8筋目に玉がいてその真上に駒がいるときのボーナス + 88の玉の真上に駒があるときのボーナス


ここでは段と筋に対して分解したが、分解の仕方はいろいろな方法が考えられる。なるべく合理性のある分解の仕方が好ましい。穴熊かそうでないかで分けるだけとか、入玉かそうでないかで分けるだとかも考えられる。


88の玉の真上に駒があるときのボーナス = 8段目に玉がいて、その真上に駒があるときのボーナス + 8筋目に玉がいてその真上に駒がいるときのボーナス + 穴熊ではなくて、玉の真上に駒があるときのボーナス + 入玉ではなくて玉の真上に駒があるときのボーナス + その88の玉の真上に駒があるときのボーナス


以下略。


とりあえず今回出場するやねうら王はこの方法で学習させてみる。
因子の分解の方法をまだ考え中なんだが、もう二週間切ってるのにそんなことを言っていて大丈夫か…。


■ 2014/10/20 22:45 MagicBitboardはオワコン


コンピューター将棋では飛・角・香のような遠方駒がどこまで利いているのかを得るため、コンピューターチェスの技法であるMagicBitboard*5を使っている人がいます。PonanzaやAperyなどがそうです。*6


しかし、将棋ではMagicBitboardはテーブルサイズが大きくなるのでCPU cacheの汚染がひどく、速度的なメリットは得られていないというのが私の考えで、やねうら王ではMagicBitboardは使っていません。MagicBitboardを使わない場合でも、簡単な比較実験において速度的にはほぼ同等だとわかっています。


それでも、MagicBitboardを使わないと、StockfishのようなMagicBitboardを使うタイプの探索部を参考にしようと思ったときに、そのソースコードと等価にするために苦労するというのはあります。そこで、MagicBitboard自体は使いたくはないが、MagicBitboardのようなことをしたい、例えば玉の8近傍に駒があるかないかを調べるために、occupied bitboardから、王の8近傍に駒があるかどうか直列化して集めてきたいということはあります。


このような将棋ソフト開発者の声がインテルに届いたのか(?)、HaswellではBMIというビット操作を行なう命令が追加されており、これを使うとMagicBitboardと等価なことが簡単に出来ます。
http://d.hatena.ne.jp/LS3600/20141011


簡単にとは言っても、速度的に数%速くなるかどうかだけの話なので、こんな直前に大改造してバグっていたら大変なので私は今回は採用しませんが、BMIはなかなか夢のある命令セットではあります。


■ 2014/10/20 22:50 やね裏評価関数とは何か?


電王トーナメントのアピール文書、「やる予定」「やる予定だけど効果かどうかはわからん」みたいな書き方をしているものもたくさんありますが、ソフトがアピール文通りになっていないからと言って罰則があるわけではないのでそれを見越してやねうら王は適当ぶっこいてるんだろうと邪推している人もおられるかも知れません。


今年はどうなるかはわかりませんが、しかし、去年は私は書いている通りのことはすべてやりました。そのなかでやね裏評価関数についてだけは、説明を書いてなかったのでそろそろオープンにしてもいいかと思い、解説記事を書きました。興味のある方はご覧ください。


やね裏評価関数とは何か?
http://d.hatena.ne.jp/LS3600/20141020#p1


■ 2014/10/21 9:30 棋譜からの学習部を書き起こし中


特徴因子の次元下げがやっと綺麗に定式化できた。NDFがやっている次元下げよりもっと一般的で、もっと(数式的に)綺麗な形で定式化できた。これだと10倍ぐらい収束が早い(当社比)ような気はする。


あとは、棋譜からの学習部を1から書き起こし中である。(いまごろ…) やっと1/4ぐらい書けた。あと3,4日で書いて、AWS(Amazon Web Services)借りて棋譜からの学習やる。高くつくなぁ…。


学習部はソース行数にして5000行程度になる感じ。これ一箇所でもバグってるとうまく収束しないという…背筋が寒くなるな。


■ 2014/10/21 18:30 NDFの近似的並進対称性


NDFの「相対位置を保ったまま3駒を移動してもそれほど価値が変わらない」(AperyのPR文より)というのは、AWAKEがやって、評価部でR250上がったかのように書いてある。(これだけで上がるのかそうでないのかはこのPR文からはよくわからないが…)


上位の将棋ソフトを作っている開発者は、未知の局面(棋譜からの学習のときに出現しなかった特徴因子がたくさん出てくる局面)に対する適応力を上げるためにこういう小細工をいろいろやっているわけだが、数百万局面しかないのに数億の評価関数パラメーターを求めようというのが土台無理な話であって(連立方程式を解くときに未知変数が多すぎる場合に似ている)、そもそも1兆ぐらいの棋譜があれば、ほとんどの特徴因子を網羅できるはずであり、NDFの手法で暫定的につけてある値よりは遥かに合理性のある値になるはずである。


つまり、
棋譜が足りなくて出現しない評価因子がゼロになってしまう(Bonanza 6.0状態) <<< NDFの手法(+R250) < 多項式近似など <<<(超えられない壁)<<< 超大量の棋譜からの学習
みたいな関係式は成り立つのかなと思う。


あとはNDFがやっているように手番を評価関数に追加するとR50〜100ぐらい上がるのかも知れないけど、私は実験していないのでわからない。


■ 2014/10/22 8:30 番組の途中ですが科研費の時間です


なんか知り合いの大学の先生に誘われて経済学のなんかを共同研究することになっているのだが、科研費を申請の締め切りが迫っているのだよ。


GPS将棋を初めとして、大学関係者はこの時期大変忙しいので電王トーナメントに出場するのは結構厳しいような気がする。特に
科研費 >>> (超えられない壁) >>> 電王トーナメントの優勝賞金
であるようなところにとっては…。


■ 2014/10/22 19:30 やねうら王の開発の進捗


棋譜からの学習部、1/4ほどさらに書いた。あと半分ぐらいで完成。実装上のミスがなければ、そこそこ棋力が上がる気はするんだが、気がするだけかも知れん…。AWAKEの評価部でBonanza6から+R250は信じていいのか、否か。時間もないしR150も上がれば御の字であるが。


■ 2014/10/22 20:00 今年のApery・Ponanzaの強さについて


Aperyが今年5月の選手権(世界コンピュータ将棋選手権)のときのバージョンに7割ぐらい勝ち越すらしいのだが*7、+R150ぐらいか。Aperyは5月の選手権の時点でBonanza6の評価関数よりは(評価部において)+R100ぐらい上だったと思うので、Bonanza6を基準に言うと+R250で、AWAKEの+R250とだいたい計算は合う気はする。


Aperyの選手権バージョンとやねうら王2014(5月時点でのやねうら王)はほぼ同じ強さ。やねうら王がいまから+R150になると、Aperyが選手権バージョンから+R150なら、Aperyと同等。


去年の電王トーナメント時のPonanza(=今年発売されたPonaX)は、やねうら王2014に7割ぐらい勝っていたので+R150。
今年のPonanzaは去年のPonanzaから7割ぐらい勝つらしい。*8


つまり、去年から+R150。ということはやねうら王2014からは+R300。やねうら王がやねうら王2014から+R150上がってもまだ今年のPonanzaにはR150も届かない。(そもそも、やねうら王がこのあとR150も上がるかどうかわからん…)


やねうら王2014は5万円の自作パソコンで将棋倶楽部にてR3300程度であったが、今年のPonanzaはここに+R300。そして最新のパソコンで(16コアXeonで)やるとたぶん+R400ぐらい上がって、R4000。将棋倶楽部24でR4000とかバケモンっすな…。もはや羽生さんを連れて来ても2,3割勝てるかどうかすら怪しい。将棋ソフト、この1年で強くなりすぎだろ!ソフトの改良により年間R50ぐらいの上昇と言われてたのは何だったんだよ!ヽ(`Д´)ノ


※ 追記 : 上記のPonanzaの件、間違っているのではないかとコメント欄で指摘もらいました → http://d.hatena.ne.jp/yaneurao/20141015#c1413986160
「勝率70%はいってくれよ・・」*9とのことなのでまだ前回出場時のものに対して勝率70%には行ってないけど、行きそうな雰囲気ではあります…。


■ 2014/10/23 25:00 やねうら未来学習メソッド -- 次元下げその後


相対KPPの次元下げは一般化するのがかなり難しく、今日、試行錯誤しているうちに、3つの定理を発見した。最初、その難しさについて私は理解できていなかったのだが、いまならハッキリ言える。相対KPPの次元下げ、これは難しい。


いまこの定理を解説している時間はないし、そもそもこのような次元の下げ方が妥当かどうかも疑わしいので詳しい話は割愛する。とりあえず私が検算した結果だけ写真で掲載しておく。この写真だけで意味のわかる人にはわかるようになっている。



■ 2014/10/24 20:30 鏡像問題


KPP絶対でもミラー(左右対称)は考慮されなければならない。これはこれで難しいのだが、いま、問題をすごく簡単化してPP絶対についてのみ書くのでプログラマーの人や数学の得意な人は挑戦してみて欲しい。


問題1)
いま、駒P1,P2があるとして、この盤上の升 P1 = (x1,y1) , P2 = (x2,y2)を考える。
盤上の升なのでx1,y1,x2,y2は筋・段を表す1から9までの整数とする。


任意のP1,P2に対して、P1とP2の組が(5筋を対称軸とする)鏡像関係にあるときは同じidを返す関数が必要である。この関数を設計しなさい。


例)
「31金と72金」の2駒が存在する盤面と、「32金と71金」の2駒が存在する盤面とは鏡像関係にあります。(x1,y1,x2,y2) = (3,1,7,2) と(3,2,7,1)が同じidを返さなければなりません。
※ 注 P1 = P2のケースをアリとするかナシとするか、どちらの方法もそれなりに合理性があるが、ここではBonanza6に倣い、P1 = P2のケースもありうるものとする。


ただし、
1) P1,P2は「金」と「金」のように同じ駒種であると仮定して良い。
2) 得られるidは0から始まり整数として連続していること。(欠番があると配列を確保するときに勿体無いため。)
3) 変換のためにid[x1][y1][x2][y2]のような表引きはしてはならない。(メモリが勿体無いため)
4) 小さな計算量で求まること。長い時間のかかるループをぶん回すの禁止。(ここの処理に時間がかかるの嫌なため)


問題2)
問題1)の関数の逆変換も作ること。問題1)の関数で得られたidから、元のP1,P2の升(2通り)が得られること。


問題3)
P1 = (kind1 , x1 , y1) , P2 = (kind2 , x2 , y2) , kindは駒種(0から19までの整数)であるとしたとき、問題1),問題2)と同じようにidを求める関数とその逆関数を設計しなさい。ただし、すべての駒種の駒は、すべての升に置けるものとする。



まあ、上のように書くと難しそうに見えるが、「鏡像関係のものを除くと、P1,P2の組み合わせは何通りあるか」という数え上げの問題に帰着する。これなら大学入試の数学レベルだ。(15分で解けとか言われると涙でそうだが…)

第二回電王トーナメントPVの撮影が終わりました


第二回電王トーナメントPVの撮影が昨日あって、そこで今大会の抱負とか意気込みとか何かそういうのしゃべったのだけど、そもそも、んなもん何もねえんだよ!ヽ(`Д´)ノ


開発のモチベーション全然上がらないし、コードも1行も書いてねーよ!ヽ(`Д´)ノ


なんでモチベーションが上がらないのか自分でもわからん…。というか、なんでお前ら、そんなにヒートアップしてるんだ?それが信じられん。お前らは熱帯雨林気候か知らんが、こっちはツンドラ気候である。お前らはアゲアゲかも知れんが、こっちはサゲサゲなのである。お前らは追い越し禁止かも知れんがこっちはインポなのである。



何故自分のモチベーションが上がらないのか、インタビュー中もずっと考えていたのだが、例えば、前回の電王戦でお世話になった、将棋観戦記者松本博文さん。松本さんは東大の法学部を卒業して、それで将棋の観戦記者になっている。東大将棋部OBであり、自身の将棋の棋力も相当なものだ。東大の法学部出れば、もう少しマシな仕事につけそうなものだけど(余計なお世話か)、将棋が好きすぎておかしくなった感がなくはない。



また、東大法学部卒と言えば将棋連盟の片上理事もである。将棋のトレーニングによって能力が開花して東大法学部レベルの頭脳になるのか、それとも東大法学部レベルの人を惹きつける魔力が将棋に自体にあるのか。そのへん、私にはよくわからないが、ある知能集団に対して、将棋自体には抜け出せなくなるような重力があることは間違いない。


将棋が好きすぎておかしくなっても、HEROZの林社長のように将棋ウォーズのようなアプリが商業的に成功するパターンもあるので、将棋が好きすぎておかしくなったから駄目だと言うわけでもないのかも知れないが…。


ともかく、将棋にこれ以上関わるのはヤバイと俺の本能が言っている。「これ以上、将棋を好きになってはいけません」と俺の本能が叫び続けている。俺様の卓越した頭脳を将棋なんぞに使ってはならないと俺の直感が警鐘を鳴らしておるのだよ。


それでも今月は電王トーナメントに向けてじわじわと自分のモチベーションが上がると思うのだが、『ケイオスリングス3』の発売が10月16日なんだよな…。*1 発売になったらやらざるを得ない。一体、なんてことしてくれるんだよヽ(`Д´)ノ 先月、夏休みセールとかで安くなってたiOS用の『STEINS;GATE』まだ終わってねーんだけど!こりゃ、ゲーム業界が俺を殺しに来てるな。やねうら王の最大の刺客はPonanzaでもAperyでもなく、『STEINS;GATE』と『ケイオスリングス3』だ!


…などということをPVの撮影のときに言えるはずもなく、本当にPVの撮影はgdgdになってしまった。佐藤映像の人、本当申し訳ない。…。うまく編集して、アゲアゲな感じにしといてください。


ちなみにやねうら王の今回のアピール文書は、こんな感じで出しておきました。



何度も言うようにまだ一行もコード書いてない&モチベーション0の状態からのスタートで10月16日からは『ケイオスリングス3』に没頭する予定だからな!ヽ(`Д´)ノ

もう電王トーナメントの季節がやってきたのか…


早すぎだろ。まだ何もしてないぞ。電王トーナメントにエントリーするかどうかすら躊躇うレベルだ。
そして全くやる気が沸かない。こりゃ今回は駄目かも知れんね。


ところが、先週から息子(5歳)が将棋を始めた。くもん出版の将棋盤を嫁が買ってきたのだ。駒に移動できる升が書いてあるので息子にもわかりやすいようだ。息子に将棋を教えていると何か将棋熱が戻ってくるかも知れない。


NEW スタディ将棋 (リニューアル)

NEW スタディ将棋 (リニューアル)


息子に将棋を教えていると次の将棋の格言がおかしいことに気づいた。



「飛車当たりに香を打つ」の意味で、「飛車取りに香を打つ」と言うから、「両取り」も別に使ってもいいのではないかと言われるかも知れない。ちょっと待って欲しい。「飛車取り」は放置すると次に飛車が取れる。


「お湯をわかす」って言葉があるだろ?実際に沸かしているのは水なのだけど、その結果、お湯になるので、それを先取りして書いてあるわけだ。これを修辞学では「予期的叙述法(prolepsis)」と言う。「飛車取り」という表現はこれに該当する。だから、これはレトリックとしてアリなわけだ。


しかし「両取り」は放置しても次に両方は取れない。放置してたらその次にもう片方も取れますよね、と言われるかも知れない。それは大間違いだ。


その代表格が「桂での両取り」だ。先手が5九桂で後手に両取りをかけた場合、後手が何手放置し続けたらもう片方を取れるというのか。敵陣まで行って、桂を成ったあとそれを自陣まで引いてこないといけないんだぞ?そんなプロの実戦譜を見たことがあるか?ないだろ。ないない。そんなに後手は放置するはずがない。要するにそんなことは現実的に起こりえない。だから予期的叙述法ではない。使ったら駄目、絶対!


というのが私の考えなんだけど…。


同じ理由で将棋の戦法の「縦歩取り」戦法というのもおかしい。普通は実際に歩が取れるわけではないので(本当に歩を取らせた羽生さんの実戦例があるが)、「縦歩狙い」戦法ではないかと思う。この「縦歩取り」という命名をしたのは、確か加藤 治郎先生だったと思うが、その著書『将棋は歩から』という本のなかで、「読者の方から、魚釣りは魚が釣れなくても魚釣りと言うので、縦歩取りも歩が取れなくても縦歩取りと呼んでいいのではないかという意見をもらった」というようなことを書かれていたと思う。


おお、そうか…。じゃあ「縦歩取り」はいいや。でも、「両取り」だけはワシは認めんヽ(`Д´)ノ


なんてことを考えてたら、また私のなかの将棋熱がにわかに戻ってきたかも知れん…。


そういや、最近、私は音楽制作に夢中なんだけど、そろそろいいヘッドホンを買おうと思って、評判のいいBeats by Dr.Dreのヘッドホンをamazonで買ったんだよ。ちょうどamazonがネット最安で25,480円だったんでな…。



ところがこの良さが全くわからん。以前から使っている千円で買ったヘッドホンとほとんど変わらん。曲によっては低音と高音がよく鳴ってるなーという程度。俺の耳は一体どうなっているんだ…。もしかして豚に真珠とはこのことか。いやいや、違いはわかるんだよ。違いは。


例えば、このヘッドホンをつけてからというもの人様の演奏動画で以前は気にもならなかった録音時のシャーっとかザリッとか言うノイズが気になるようになった。確かにノイズが超鮮明に聴こえる。このヘッドホンは大変素晴らしいものだ。こんな小さなノイズまでクリアに聴こえるだなんてな!ただ、ノイズが気になるぐらい聴こえるのはデメリットであって、メリットじゃないよな…。こんなものに25,480円か。また金をドブに捨ててしまったか。


こりゃ、電王トーナメントの賞金もらって取り戻さないとな…。第二回電王トーナメントはありまぁす!もとい、第二回電王トーナメントに出場しまぁす!

NHKはもっとヤラせをすべきではないか


いまどきは世間でもコンプライアンスに五月蝿くて、テレビ放送でヤラせなんかしようものなら強い批判を浴びる。しかし、許される範囲のヤラせというのも現実的には存在する。


例えば、ある会社に訪問するとき、「ここが、XXXを作っているYYY会社ですねー。お邪魔しまーす」みたいな会社の玄関から入ってくるシーンがよくテレビで流れるわけであるが、あれもヤラせと言えばヤラせである。実際は、いったんその会社の担当者と打ち合わせをしたあと、「最後に、玄関から入ってくるところ撮影させてもらっていいっすか?」みたいな話になる。「いいですよ」と言うと、改めて玄関から撮影するわけである。


玄関あけたらいきなりカメラを回しているだとか、そんなことはありえない。私は過去、数十回メディアの取材を受けたが、いきなりカメラを回しているテレビ局や雑誌記者なんて一度もいなかった。


そりゃそうだろう。玄関あけていきなりテレビカメラが回ってたら、「ちょ、ちょっと!何してるんですか!やめてください!!」みたいな感じで猛烈に怒り出す人がいて、取材拒否にもなりかねない。そうでなくとも、「玄関からの撮影はNGです」と言われたら、せっかく撮影したビデオテープが無駄になってしまう。だから、そんな取材の仕方をする人はいないわけである。


だから、「ここが、XXXを作っているYYY会社ですねー。お邪魔しまーす」みたいなシーンは100%ヤラせなのである。


撮影のため、小道具を持たされることもある。例えば私はプログラマーとして紹介される場合、決まって、PCに向かってキーボードを叩いてプログラムしているところを撮影させてください、みたいな話になる。そのプログラムを作ったのが私でなくとも、である。まして撮影中にプログラムが書けるはずもなく、これまた適当に何か文字をタイプしているだけとなる。しかし「普段、こういう風に開発している」ことには違いないので、まあ間違ってはいないのだが、これもヤラせと言えばヤラせである。


また、こんなケースもある。ずいぶん前のことになるが、どうもそのときのテレビ局のディレクターは、私が簡単なプログラムであくどく儲けているところを撮りたかったようなのだ。実際はあくどく儲けてなんかなかったし、私自身はさほど儲かってもなかったのだが、その番組で使う流れ上、そういう風に私を撮影したかったようなのだ。当時、コタツに入って仕事してて、コタツの上に食べかけのお菓子やらミカンやらが散在していた。「このコタツの上を片付けてもらえませんか」みたいな話になって、コタツの上やら部屋のなかやらいろいろ片付けた。私は普段はそんな状態で開発をしていたわけではないので、普段の状態ですらない。全くのヤラせであった。だからと言って許されない範囲のヤラせだとは誰も思わないだろう。


ついでに言うと、私の「これではほとんど儲かっていませんよ」みたいな発言は編集ですべてカットされていた。どちらかと言うとそっちのほうが問題だと思うのだが、本論とはズレるので話を先に進める。


ともかく、普段の仕事風景をありのままに撮りたいのであれば本来は盗撮するべきである。そうしてこそ初めて普段の仕事風景が撮れるわけである。しかし、現実的にはそうは出来ないので、取材でテレビカメラが回っているときに、取材される側の人間は普段の仕事風景っぽく演技しなければならない。もうこの時点でヤラせと言えばヤラせだし、こういうのをヤラせだと言い出すとキリがないのである。取材という性質上、どうしても作った映像になってしまうのは仕方ないのである。


こんなことは、サンタクロースを信じている小学生でもない限り、考えればわかるはずであるが…。


さて、私は先日、NHKの『サキどり』という日曜の朝の番組の取材を受けた。
http://www.nhk.or.jp/sakidori/backnumber/140622.html


その放送内容は電王戦関係の話題に始まり、人工知能が人間の頭脳に迫ろうとしているという内容の放送があった。朝の情報番組なので比較的軽めの内容ではあるのだが、それでも激指の開発者の鶴岡先生の研究室でコンピューター将棋で使われている機械学習を応用して英文の誤りの自動検出プログラムを開発しているだとか、Googleは自動運転カーを作っているだとか、東大合格を目指す東ロボ君のプロジェクトリーダーへのインタビューだとか、取材は多岐に渡り、きめ細かな取材をされていた。さすがNHKだと思った。


この取材のなかで、NHKの番組のディレクターから「コンピューター将棋の開発をしている人はこんな(立派な?)仕事もしているだとか、コンピューター将棋のプログラムはこんなプログラムに応用できる、応用しているみたいなものは何かありませんか?」と尋ねられたので、ああそういや、私が六本木ヒルズにあるセキュリティ会社のCTOをしていることを「やねうらおは見栄を張って嘘言ってんだろw」ぐらいに思ってやがる輩がいまだにいるので、「おっしゃ、ワイの勇姿を全国放送で見せたるわい!おんどれら、メン玉ひんむいてよう見とけ!」とその会社に行ったときに取材してもらおうとNHKのそのディレクターに提案したのだが、取材日に折り合いがつかなかった。


仕方ないので、私が技術顧問をしているゲーム会社でゲーム製作のための授業をしているところでも取材してもらおうと思った。普段、何かのついででないと私はその会社には行かないので取材日を指定するなら交通費ぐらいNHK側で出して欲しいと思ったわけだ。そのことをそのディレクターに相談したところ「最近、ヤラせ報道とかに対して厳しくて、すみませんが、お金は出せないことになっているんです」とのことだった。


あくまで日常的にやっていることを取材して撮影するわけだから、そのための費用をNHKが出すのはご法度ということなのか。いやー、そうは言っても、日常的にやってはいるけど、取材日を指定されるとわざわざその日に行かざるを得ないですよ?宿泊費は自腹で出しますから、交通費ぐらいでませんの?出ない?そうですか…。


みたいなやりとりのあと、そうだ、いま取り組んでいる自動作曲プログラムのほうを取材してもらおうと思った。私は作曲家の芳川よしのさん( http://www.yosshibox.com/ )と定期的に会って自動作曲ソフトのためのミーティングをしているので、コンピューター将棋ソフトの探索技術が自動作曲ソフトに応用できるという趣旨で取材をしてもらうことになった。芳川さんとは、私が東京に出張に行ったときはじかに会って話をしているのだが、そうでないときはSkypeビデオチャットをしている。


番組ディレクターからは「Skypeではなく、実際に芳川さんに来ていただくことは出来ませんか?」と言われたのだが、芳川さんが東京から私の仕事場(大阪)に来る用事もなかったので「交通費でませんか?」と尋ねたが、「それはやはり出せない」とのことだった。


交通費を出したところで、これがヤラせに該当しないことは明らかだと思うのだが、ヤラせにつながるためか、こういう費用は一切出せないことになっているらしい。だったら取材費などの名目で出して欲しいところであるが、NHKは取材費は基本的に出さない。


このように書くと、「やねうらおは目立ちたいから取材費なんかなくても喜んでテレビに出るんだろ(藁)」とか言う声が聴こえてこなくもないが(そういう気持ちが無いとも言い切れないが)、何故私が取材費も出ないような取材に応じているかと言うと、電王トーナメントにエントリーしたときにドワンゴ側にサインして提出した書類には「メディアの取材には応じること」ということが明記されているからである。いや、明記されてなくても基本、取材には応じるけども、今回のように取材に応じてその交通費が自腹というのは非常に理不尽だと思うのだが…。(注:電王戦関係でドワンゴに行く場合の交通費に関してはドワンゴからもらえます。念のため。)


そうこうしているうちに「せっかくテレビに映るなら、PCのモニター越しではなく直接映りたい!」という芳川さんの希望があったので、私が芳川さんの交通費を出してあげて大阪まで来てもらうことになったわけだ。


番組のディレクターからの事前の話では、私と芳川さんがピアノの前で話している映像は番組のエンディングで使われるとのことだった。私と芳川さんとの事前打ち合わせでは、私がピアノを弾く係となるはずであった。芳川さんは作曲家ではあるが、DTMが主体でピアノはブルグミュラー程度の腕前らしく、「それなら私(やねうらお)のほうが上手いよね…」という理由で私が弾く係(ピアノの前に座る)となるはずであった。ところが、その番組ディレクターの希望で私が芳川さんのノートPC(DTM用)を持って椅子に座り、芳川さんがピアノを弾いている映像を撮影することになった。


この『サキどり』の放送されたエンディング部分を見ると、芳川さんには紹介のテロップが入っていないのでどこの誰かもわからない。私がノートPCを持っているので、そのノートPC上で動く自動作曲ソフトで作った曲をあたかも演奏者の人が演奏しているかのような映像になってしまっている。この放送を観てそのように誤解して受け取らない人が一人でも居るというなら教えて欲しいぐらいである。ノートPCのほうは、DAW(曲作りのためのソフト)が立ち上がっているのだが、私は使ったこともないソフトであり、使い方もわからないソフトである。


まあしかし、「コンピューター将棋の技術が自動作曲に使える」というのは事実であり、私が自動作曲ソフトを製作中であることも事実である。それはきちんと視聴者に伝わっているわけで、イメージ映像としてはこれでいいのではないかと思う。この程度のことをヤラせだの捏造だの言うと映像編集という仕事自体が成り立たなくなるのである。


どうかNHKは、世間からのヤラせ批判などに負けず、取材の時には交通費ぐらい出せる体質になっていただきたく、よろしくお願い申し上げます。


あ、あと。ちょうどその番組の放送を見てらしたシンガーソングライターの樋口了一さんからはこんなツイートが。

https://twitter.com/ryoichihiguchi/status/480505494180614144

PonaXの出来がひどすぎてamazonのレビューが大荒れの件


昨年の電王トーナメントで優勝したPonanzaがPonaXとして商品化された。定価13,824円と比較的高めの設定だったが、「高すぎやろw」という棚瀬さん(東大将棋の作者)のツッコミに対して「それだけの価値はありますよ」と自信満々の山本君(Ponanza作者)。



https://twitter.com/issei_y/status/453474099461758977


ところが、発売後、PonaXがあまりにも出来がひどいのでアマゾンでのレビューは将棋ソフトとしてかつてないほど荒れ放題となっている。
http://www.amazon.co.jp/exec/obidos/ASIN/B00JH47X2S/aaaaab0c-22/ref=nosim
※ PonaXがどうひどいのかについて、ここには書かない。具体的な内容はアマゾンのレビューを見ていただきたい。


ここでは長文になるのを避けて
・何故、作者が直接批判されるのか
・PonaXがどれくらい強いのか
の2つに絞って書く。


■ 何故、作者が直接批判されるのか


まず、PonaXが将棋ソフトとして機能面で不足している感は否めないが、バグまわりに関しては、修正パッチでなおるレベルだと私は思う。修正パッチがリリースされる前から大騒ぎするほどのことではないと私は思う。


あと、思考エンジン部以外は山本君が書いているわけではないのに、バグなどについてエンジンの作者(山本君)にtwitterで問い合わせるのはどうなのかという気はする。


こうなってしまった経緯を考えるに、販促用のPVで山本君が自ら「神の一手を体感せよ!」とか言っていたが、こういう販促のために作者(思考エンジン開発者)が前に出て宣伝をするような宣伝の仕方をするから、何かあったときに、それが作者由来の問題ではなくとも、すべて作者のほうにtwitterなどでクレームが来るなど、矢面に立たされるのではないかという気がする。


D


山本君は思考エンジンを提供しただけで、また思考エンジン側に不都合はないことは明らかなのに、このような批判のされかたは全くもって理不尽だと私は思う。


マスターアップ前に商品のクオリティを思考エンジンの作者としてチェックすべきだったなどという意見もあるが、この手の製作物ではスケジュール上、そういう機会が作者に与えられるとは限らないわけである。また、山本君は製品のクオリティコントロールをする立場ではないし(そのへんはディレクター/プロデューサーとかの仕事)、例えば、機能面で不足していることがわかっていたとしても、それをディレクターに進言できる立場でもなかったんだろうなぁと思う。


あと、電王トーナメント/電王戦以降、将棋ソフト開発者がプロ棋士と同系列に扱われることが多くなったが、将棋ソフト開発者なんてただのプログラマであって、本来テレビやメディアに露出することのほうがおかしいわけである。しかしソフト名だけを出して、将棋ソフトの開発者のほうにスポットライトを当てないのでは興業的に成り立たないためか、変に脚光を浴びるようになり、今回のPonaXの一件のように作者としてそれ相応のリスク(何かあったときの反動のきつさ)を背負うようになった。


芸能人やタレント業ならいざしらず、一介のプログラマがこのようなリスクを背負うのは何か状況的におかしいのではないかと思うのだが、いまさら嘆いたところでどうにもならない。


■ PonaXがどれくらい強いのか


PonaXをインストール後、将棋所からエンジン設定をすれば、将棋所で使えるらしい。


PonaX 非公式マニュアル
http://www.ne.jp/asahi/to/yuuhi/ponax_00.html


じゃあ、もう、PonaXの将棋所以下の糞みたいなGUIは要らないじゃんということで、「PonaX、最高です!値段は高いですが、それだけの価値はありますね!!」といきなりPonaX信者に豹変するのが私である。


知らない人のために言っておくが、PonaXは2013年の電王トーナメント版Ponanzaと同等である。つまり、駒落ちは確かにひどく、2枚落ちだとPonaXが穴熊に囲いやすく、これではアマ10級ぐらいでも勝ててしまうだろう。(ニコ生で今年の3月に芸人の小籔千豊さん(アマ1級)が、Ponanzaに2枚落ちで勝っている。) この意味においては、10年以上前に発売された東大将棋であれ、これよりはマシだという意味はある。


私は駒落ちなんかどうでもいいので話を先に進める。


まず、思考エンジンであるが、32bitモードで動作している。64bitモードではないので、おそらく64bit版にコンパイルされたPonanzaと比べると10%ぐらい遅いと思う。おまけにx86用しかなく、SSEも使ってないのではないかと思う。普通は、64bit版のバイナリやSSE2/4が使える環境用なども用意して、64bit環境ならば64bit版が起動するようにするのだが、「そんな小細工しなくともPonanzaは最強!」みたいなことなのか64bit版などは用意されていない。まあ、実際最強なんだからいいじゃん。


次に、置換表(ハッシュ)設定は、小さめ(512MBぐらい)にすること。32bitモードだからあまり大きくすると確保に失敗する。確保に失敗していても停止するわけではない。このとき、そこはかとなく弱くなっているのだが、それでもBonanzaよりは強いようだ。置換表が確保できていない(?)のにBonanzaより強いというのが驚異的で、ちょっとしたミラクルであるのだが。(もしかしてFPGAでコンピュータ将棋、評価関数さえ軽量化すればBonanza以上の強さのものが作れるんじゃまいか…。)


それからHT(HyperThreading)、これは有効にしておいたほうが良い。有効にしているとタスクマネージャーで見るとCPU負荷率は50%になるが、この状態で正常。すべてのコアはきちんと動いているし、将棋所上のレスポンスも良くなるので(HTの余っているスレッドがGUIを受け持つので)、お勧め。


電王トーナメントのときにやねうら王が秒読み時に9秒のところで指し手を送っているのにタイムアウトになっていて、これ何とかしないと…みたいな話を当時このブログに書いたが、あのあとaki.さんから「(別スレッドでタイマーを監視しているのであれば)HTをonにしているとそれは防げませんか?」と言われて、なるほどと思った。


ともかく、HTは有効にして、CPU負荷率50%。これが正常動作&お勧め設定。


さて、気になる勝率のほうであるが、Bonanza6にはほぼ負けなし。負けがなさすぎて、相当の試合数をやらないと正常なサンプルがとれない。100局しか試してないので具体的な数字を書くのは控える。もちろん勝率9割は優に超えている。


GPSfishに対しては勝率7割強。


いま開発版の最新のやねうら王は、先月の世界コンピュータ将棋選手権で優勝したAperyとやっても同等以上であると思うが(Aperyの3月度版には現バージョンは6割弱勝ち越し。Aperyは3月から5月の間でさほど改良はされてないと思う)、このやねうら王が勝率3割強。200局しかやっていないのであまり正確でもないと思うが、R150前後の差はあるのだろう。


この開発版のやねうら王は将棋倶楽部24で自作の5万円PC(CPU = Core i7 4771)にてR3200を突破し、おそらくはR3300〜3350はあると思われるソフトである。これよりまだR150強いのだから、5万円PCであれ将棋倶楽部24にてR3450〜R3500クラスであるのは確実。個人的には、これだけ見ても値段ぐらいの価値はあると思うが、「R3000もR3500も棋力がR2000にも満たない人には変わらないジャン」みたいな人にはこの価値はわかってもらえないのかも。


ともかく、PonaX、5万円PCでR3500という価値のわかる人は買えばいいと思うよ。


■ 2014/6/13 22:00 追記


マイナビ、PonaXの回収・返金を発表
http://i2chmeijin.blog.fc2.com/blog-entry-771.html


amazonマーケットプレイスでは一転してプレミア価格に!