2014年06月23日
羽生快進撃がソフトを強くする?
将棋。自分より1つ下の羽生と森内はずっと見てたけど、いまえげつない。
世の中では羽生のが目立つけど、森内も強くて、名人戦は2011年から三期続けて 4-3, 4-2, 4-1 と羽生を跳ね返し、名人戦では圧倒的な強さを見せていた。森内はさらに去年最高峰竜王も獲得、森内時代到来かと思わせる強さだった。
しかし、四月から始まった名人戦で羽生が4度目の挑戦で4-0の完封で名人を奪還。続いて今行われている棋王戦では羽生棋王に森内が挑戦しているが、昨日までで 2-0 と対森内6連勝。羽生・森内・渡辺が今3強なんだけど、その一角に対して6連勝とかあり得なくね?
ということで、今年度羽生は対森内の6勝含め8戦全勝の一方、森内は4勝9敗と大きく負け越し。しかも4月3-3、5月0-4、6月1-2とここ2か月さんざんな目に。3強のはずなのに、羽生被害者の会に仲間入りしてしまいそうだ。
それにしても今期の羽生は強い。電王戦で、コンピュータ将棋がとても注目されているけれど、それにもかなり刺激されているのではないだろうか。
手元の将棋ソフト激指12で羽生の対局を分析してみると、羽生は中盤から終盤に入る辺りが驚異的に強いように思う。
激指12は最強のソフトではないから、最強のソフトでどうかは分からないけど、激指12の特徴を書くと、まず終盤にはとても強い。他のソフトも含め将棋ソフトの特徴であろう。
一方、中盤の分析はあまり役に立たない。中盤で先手有利が出て、それにしたがって暫く進めても、互角に戻ったりする。
羽生の対局の中盤は、激指12では有利と出ていることもあれば、不利と出ていることもあるし、解説者の分析相手がやや有利かと言われることが多い。序盤中盤から圧倒なんてことはまずない。
しかし、ちょうど激指12の評価が信頼できるものになる直前数手が、羽生はいつも強い。中盤ふらふらしていた評価が、ほんの数手でするするっと羽生有利に傾き、そのまま定着する。その間、対局者に決定的な悪手がなくてもだ。もし、激指12がもっと強ければ、その数手前から羽生有利を出せるのではないかと思うが、まだできないし(より強いソフトならできているのかもしれない)、対局者が羽生に勝てない決定的な数手ではないだろうか。
羽生は終盤は極めて安定していて、ソフトの評価を大きく外した手を指すことはほぼ皆無。したがって毎局、今コンピュータソフトにとって最も参考になる中盤から終盤にかけての貴重な数手のデータを増やしていることになる。各ソフトの開発者が参考にしないわけがない。
今期どこまで羽生の快進撃が続くのか興味深い一方(7冠も今のところ可能)、羽生の「せいで」コンピュータソフトはあっという間に強くなるんじゃないだろうかと気をもんでしまう。
2014年02月12日
エクセルでデータを間引いてグラフを描く。maxif の実現
エクセルで何万レコードもあるデータをそのままグラフにしようとかなんとかしようとすると、とっても時間がかかるし、そもそも無駄なので、データを間引きたくなります。
これを書き始めてから、ふと検索してみたら、
データを間引く方法−INDIRECT関数・ROW関数:Excel(エクセル)の関数・数式の使い方-検索・行列
と、数行ごとにする方法を見つけて、なるほどですが、ここでは今回行った maxif みたいなことができる別解を自分のためにメモ。「エクセル maxif 」とか検索すると間引きには使えない方法ばかりヒットするので。(以前もこうしたのに忘れててまた一から考えてしまいました)
データはA,B列にあるとして、A列でソートしてあるとします。
J列にA列で取り上げたい数値を並べます(10, 20, 30, 40, ....とか)。
K列を =COUNTIF(A$2:A$10000,"<"&J2) として、
M列を =INDEX(A$2:A$10000,K2)
L列を =INDEX(B$2:B$10000,K2)
とすると、M,L列に新しい間引かれたデータ列ができます。
COUNTIF のところで、与えた数字(J2の値)を超えない最大の行を求めて、
INDEXで、その行のデータを取り出しています。
なお、J2が小さくて countif が 0 になる場合は誤動作するので、正確には
M列を =IF($K2>0,INDEX(A$2:A$10000,$K2),0)
L列を =IF($K2>0,INDEX(B$2:B$10000,$K2),0)
とかします。
2014年02月09日
規模別対象値合計関数の両対数グラフ
ニッチ度補遺
で作った窓についての続きです。
対象値視点の規模別対象値合計関数 S_1(x) は次のように表せました。
このS_1(x)の対数は次のようになります。
したがって、S_1を両対数のグラフに書くとその曲線は
となります。たとえば、pが正規分布の確率密度関数の場合、log(p)は上に凸の二次関数となり、+ξ で軸が正の方向に少し移動しますが、全体としては、やはり上に凸の二次関数になっています。
ということで、以前書いたこのグラフは、 S_1 を両対数で描いたグラフということが分かりました。
手元にあるいくつかの分布は、このグラフを描いたとき、二次曲線で近似するのは少し誤差が大きいようです。今後、どのような関数で近似できるのかを調べるのが今後の興味深い問題です。

