« 2007年12月 | トップページ | 2008年2月 »

2008/01/29

だめかもしれん。

もうちょっと、調査必要。

| | コメント (0) | トラックバック (0)

2008/01/28

バグ修正と計測結果

結局バグだった。同一局面を回避するハッシュの処理がバグってた。
直して、計算したら一人麻雀(親、18ツモ、裏ドラなし、海底撈月なし、一発なし、ダブリーなし、嶺上なし、テンパイはすべて即リー)で新アルゴリズムのほうが期待値が180点ほど点数が高かった。

しかし時間かかりすぎるし、メモリもめちゃくちゃ食う。
メモリを食う原因はハッシュキーの持ち方に無駄が多いから。まずはここから修正してみる。

| | コメント (0) | トラックバック (0)

2008/01/27

羽生マジックの正体

天才の言葉というものは、分かり難いものである。
長嶋茂雄などはその典型例といえるだろう。
プロ野球のキャンプで身振り手振りを交えて、「もっとこう、ビュッと。そう、ビュって感じで」と擬態語擬音語で熱心にコーチングしているけれど、TVで見ているこっちには何がなんだかさっぱり分からない。

どうも天才というものは、問題解決の手順を追わず、にいきなりズバッと結論が出てしまうようだ。

一般人にも多少は、そういった傾向がある。
たとえば、「3×5=は?」と質問されたとき、
3掛ける5とは小学校のときに習った知識によると、
3を5回足すことである。よって
=3+3+3+3+3
=6+3+3+3
=9+3+3
=12+3
=15
なんて面倒なことはしない。
なんども練習して体にしみこんだ知識でいきなり「さんごじゅうご」と理論や手順を経ずに答えをはじき出すわけだ。天才というものは、九九のような簡単なものだけでなく、それぞれの専門分野の技能を理屈が分からない子供の頃に無意識に体に叩き込んだ結果、時間を変えてじっくり考えなくても、理屈無しにぱっと答えが出てくるようになった人なのだろう。だから天才の言葉は一般人には分かりにくくて、解説に解説が必要だとか言われるような状態になるのだと思う。

羽生2冠の言葉も当初私には理解しずらくて、決断力などの書籍を読んだもののすぐにはピンとこなかった。
ただ、いろいろ調べているうちに結構理解できたような気分になったので、忘れないうちにブログに書いておく。

実験によると、将棋の局面を初心者、中級者、上級者、プロに見せ、その局面を覚えてもらうとき大体以下のような感じになるらしい。

●超初心者の認識
  「隅っこ香車があって、その横に桂馬があって、歩があそこに並んでいて…」
  =>個々の駒をバラバラに認識
●級位者の認識
  「先手後手とも矢倉囲いだな、後手はまだ矢倉の中に王様が入っていなくて、攻撃側の銀が…」
  =>一部を固まりとして認識、その他はバラバラに認識。
●上級者の認識
  「森下システムの序盤戦の定跡形に似てるな、でも端歩が特徴的だな。」
  =>ほぼ全体を塊として認識。
●プロクラスの認識
  「A名人vsB八段の第○回名人戦の第2局目の出だしだな。あの時は1局目も矢倉戦で……」
  =>全体を塊とした上に、時間的前後関係も含めて認識。


つまり、上達するにつれ、認識する事象の塊が大きくなる。しかも、認識する塊は空間レベルではなく、時間レベルにも広がっていくそうである。プロ棋士の局面認識はアマチュアレベルのそれとは、文字通り、「次元が違う」のだ。

ただ、認識が時間レベルに広がっているのは何も羽生2冠だけではなく、プロ棋士ならば大抵そのような認識をしている。というよりも、認知科学者に言わせれば、これは、経験量よるものであり、人間誰でも(多分動物も)、経験を積むにしたがって、日常的な事柄を時間的広がりも含めたひとつの塊として認識するようになるらしい。

弱肉強食の世界を生き抜くためには、その方が都合が良いため、脳がそのような作りに進化したのだろう。けれど、ゲームに関しては、流れを交えた認識が必ずしもプラスに作用するとは限らない。麻雀のオカルト論などその典型だ。

羽生2冠がすごいのは、認識の塊の広さそのものにあるのではなく、自分の局面評価の思考が時間的広がりにも影響されていることを客観的に認識していること。必要とあれば、時間的広がりをあえて狭めて局面を評価することができることにある。実際、羽生2冠は、講演で流れを意識した読みをしていること、不利な局面に立ったら一度考えをリセットすることを述べている。
さらにもっとすごいのは(羽生2冠自身の口から語られたことはないと思うが)相手の認識の塊の時間的広がりをも、コントロールすることで、相手を常識のワナにハメ、逆転への流れの変化を気づかせないようにしていることにある。

素人でも不利とわかる形勢からプロでも思いつかない手でゲームの流れを一気に変える大逆転の妙手「羽生マジック」はこうして生まれる。

昨年秋に放映されたNHK杯2回戦の羽生2冠vs中川七段。NHK杯の現役最多優勝回数を誇る解説の加藤九段が思わず「ひゃーっ」と奇声を上げた、NHK杯史上でも稀な大逆転のシーンが動画サイトにアップされている。
場面は終盤に差し掛かったところ、王手角取りを決められた上に、王を守る陣形も崩れ、羽生2冠は形勢不利。早めに王が逃げることで辛うじて詰みを逃れているシーンから、動画は始まる。

棋士は独特のきれいな手つきで駒を扱うが、その差し方、駒の升目への置かれ方は癖が出る。ある棋士は、気持ちが守りに傾いているときは、升目の自分側の線ギリギリに駒を置き、攻めに気持ちが傾いているときは、相手側の線ギリギリに駒を置く癖がある。守備から攻撃に転じたときの歩の動きは1.5マス前進しているかのようだ。
さすがにそこまで極端な例は少ないが、多くの棋士に共通しているのが、形勢有利だと思っているときは、アクションが大きく、指もしなってビシビシ駒音が大きくなること。もうひとつは「明らかにすぐに取られてしまう駒は雑に升目に置く」こと。
麻雀やポーカーのような手札を隠すゲームではしぐさを隠すのが当たり前だが、完全情報ゲームの将棋では割としぐさや表情を露にするようだ。そのことを踏まえて、駒を扱う手つきと駒の置かれ方に注目して動画を見てみる。

駒音高くビシビシ攻めてくる中川七段。逃げまくる羽生2冠だが、解説に、「どうもここで羽生2冠としては差す手が無くなった。<中略>受けが無い。全くね。攻めも無い」といわれた直後の、2六飛車。頭をかき、自信なさげな表情、こまを持ち上げもせずに指す手つきと飛車の乱れた置かれ方が印象的だ。だがこれはトリックだった。
次に、中川七段2度目の王手角取りをかける。羽生2冠は王を逃がすが、羽生の王は詰む寸前、飛車も角も両方ともただで取られる局面。

後に2チャンネルの将棋板に将棋ソフトを使って調べた結果が載っていたが、この時点で、中川七段は羽生2冠の王を詰ます手順があった。最低でも角を取っておけば中川玉が詰まされることは無かったようだ。けれど、羽生2冠の術中にはまったのか、中川七段は飛車を取る。これが敗着手となり、羽生2冠の逆襲を受け一気に投了となった。


今後、手つきに注目してNHK杯を観戦してみよう。
羽生がすっと雑に駒を動かした瞬間。それは、羽生マジックが炸裂する合図なのかもしれない。


羽生のインタビューを人工知能と認知科学の専門家が解読している本です。お勧め。


| | コメント (0) | トラックバック (3)

2008/01/25

バグっぽい

どうもバグっぽい。同一局面での処理高速化のためのハッシュ処理に間違いがある模様。
もう少し詳しく調べる予定。

| | コメント (0) | トラックバック (0)

2008/01/22

バグか!?

2200試合程度データは取った。新アルゴリズム惨敗。
ちょっと考察は後回しにして、データだけ。

平均順位
  新アルゴリズム
  2.592と2.57
  旧アルゴリズム
  2.402と2.431

和了率
  新アルゴリズム
  18.85と18.74%
  旧アルゴリズム
  22.20%と22.38%

和了素点
  新
  5230と5155
  旧
  5045と5054

放銃率
  新
  12.88%と12.66%
  旧
  11.94%と12.4%

両面以上率
  新
  51.72%、52.29%
  旧
  47.27%と、47.71%

先制リーチ率
  新
  22.35%、21.47%
  旧
  28.41%、27.76%

今の4人麻雀は他家の挙動の部分を大雑把に処理しているのは事実。
その結果、順目継続率の見積もりが甘すぎて、旧アルゴリズムに先制リーチを許してしまってるのが、原因かもしれない。向聴数を戻すケースも含めて読むようにしたんだが、想像以上に向聴数を戻すケースがあるようだ。今ちょっと調べたら、1人麻雀でも結構向聴数を戻している。

単純な、バグの可能性も含めてもう一度調べなおさないとだめだな。
(たぶん単純バグではないと思うけど……)

まず、一度1人マージャンのほうに戻って再検討する。

| | コメント (0) | トラックバック (0)

ショッキングな結果が……

2人?ずつ旧アルゴリズムと新アルゴリズムを4人麻雀に組み込んで対戦させてみた。
1000試合戦わせて見たが、なんと衝撃的な結果が……
1向聴のときに打ち方以外はすべて一緒。しかも1向聴でも打ち方が違うのは10回に一度程度なので、1000試合程度では、有意さがつかないのではないかと予想していたのだけれど、すでに、はっきりと有意差がついている。

原因について考察を加えたいのでもう少しいろいろデータ取ってみる。詳細は後日記事にしたい。

| | コメント (3) | トラックバック (0)

2008/01/17

一手替り処理速度計測

新アルゴリズムの処理速度計測。
95%は1秒以内に終わってる。一方で30秒以上かかるケースもあるので、やはり、反復深化法のようなやり方で、制限時間で処理を打ち切るような仕組みの作りこみが必要っぽい。
Cpu_time


| | コメント (0) | トラックバック (0)

2008/01/16

全体レイアウト案

画面のレイアウト案いくつか考えてるけれど……ホント、センス無いな私。

公開できるのは相当先になりそうです。あしからず。
画像をクリックすると実物大で表示されます。
プランA

Plana_2

でもこれ、捨てパイの表面の長方形を横にしただけだから見え方が変。
河に捨ててある縦になってる牌は細長く見えて、横になってる牌は幅広く見えちゃう。
そこらへんを考慮して牌画を画像しないといけないだけど……
画面スカスカ感は幾分マシかもしれないけれど、牌の大きさ自体は今と一緒。
あとテーブルの緑一色は、フリーの壁紙か何かに置き換えたいところ。

もう一個。プランB
Planb_2


真上からの視点で手牌だけは大きくするパターン。これで800x640のサイズがある。下部に鳴きボタンを配置して、上部のメニューやウインドウバーがあるから1024x768ギリギリになる。これだと、手牌だけは今より大きくなるけれど、テーブルのスカスカ感は解消されないだろうな。
それに、大きなサイズの牌画をどうするのかって問題もある。今使わせてもらっているマツセンパイの牌画を単純に2倍するか、自分で書き直すか両方やってるけれどいまいちしっくりこない。

| | コメント (9) | トラックバック (1)

2008/01/06

Core2Duoならいけるかも

昨年末新しくPCを買った。
機種は、FMV-DESKPOWER CE55XNのカスタム版。
CPUは、Core(TM)2 Duoプロセッサー E6600(2.4GHz)なのだが、この機種なら、期待値型評価関数で割と複雑な3向聴でも実用的な速度(2秒)で演算可能なようだ。
これならば、将棋ソフトのように考慮時間のLimitを設ける形でCPUの速度にあわせた強さ調整が可能だろう。


ってことは、頑張れば、人間が太刀打ちできない領域までいけそうな気がしてきた。

| | コメント (7) | トラックバック (0)

2008/01/02

データは取れた

副落している面子数、順目ごとの鳴き率(ポンチー大明槓)の集計。
だんだん手がまとまってくるので、副落している場合は順目が深まるごとに鳴かれる率は低くなっていく模様。
Naki


| | コメント (0) | トラックバック (0)

2008/01/01

やっぱやめない

もうちょっと粘ってみる。

| | コメント (0) | トラックバック (0)

やめた

4人うち麻雀の他家の動向を詳細化して期待値型評価関数に入れ込もうとしたけどやめた。
面倒すぎてやってられん。っていうか、一応データとったけど、なんだか数字怪しい。

少なくとも次のリリースは、現行のやり方のままにする。

| | コメント (0) | トラックバック (0)

« 2007年12月 | トップページ | 2008年2月 »