Hatena::ブログ(Diary)

小宮日記 このページをアンテナに追加 RSSフィード

らき☆すた・七ならべ| COM将棋の基礎知識

2003 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 |
2005 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 |

2009-02-28

PM8:00の回からFloodgateに参加

また参加してみます。初戦はyowai_gps_pieceでした

読みを深くなるように改良してるのもあって44手で瞬殺でした。

http://wdoor.c.u-tokyo.ac.jp/shogi/tools/view/index.cgi?go_last=on&csa=http://wdoor.c.u-tokyo.ac.jp/shogi/logs/LATEST//2009/02/28/wdoor%2Bfloodgate-900-0%2Byowai_gps_piece%2Bmisaki%2B20090228200006.csa


やはり終盤は読みの深さですね。

csa0001は山田さんかな? まだ当たったことがないので当たらないかな?(R的に負けそうですが)

MyMove vs 山田@CSAさん

http://wdoor.c.u-tokyo.ac.jp/shogi/tools/view/index.cgi?go_last=on&csa=http://wdoor.c.u-tokyo.ac.jp/shogi/logs/LATEST//2009/02/28/wdoor%2Bfloodgate-900-0%2BMyMove900%2BCSA00001%2B20090228200005.csa

MyMove vs 山田@CSAさん
後手の持駒:銀 桂 歩
  9 8 7 6 5 4 3 2 1
+---------------------------+
|v香v桂v玉 ・ ・ ・ ・ ・ ・|一
|v飛 ・ ・ ・ ・v金 ・ ・ ・|二
| ・ 角v歩 龍v歩v歩 ・ ・v歩|三
| ・v歩 ・ ・ ・ ・ ・ ・ ・|四
|v歩 ・ ・ ・ 角 ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ 歩 ・ 香|六
| 歩 歩 銀 歩 歩 銀 ・v桂 歩|七
| ・ ・ 金 玉 金 ・ ・ ・ ・|八
| 香 桂 ・ ・ ・ ・ ・ ・ 香|九
+---------------------------+
先手の持駒:金 銀 歩五

乱戦になるとコンピュータ強いですね


27手目、

後手の持駒:角
  9 8 7 6 5 4 3 2 1
+---------------------------+
|v香v桂 ・ ・v玉 ・ ・v桂v香|一
| ・v飛 ・ ・v金 ・v金 ・ ・|二
| ・ ・ ・v銀v歩v歩v銀v歩v歩|三
| ・v歩v歩v歩 ・ ・v歩 ・ ・|四
|v歩 ・ ・ ・ ・ 桂 ・ 歩 ・|五
| ・ ・ 歩 ・ ・ 歩 歩 ・ ・|六
| 歩 歩 銀 歩 歩 銀 ・ ・ 歩|七
| ・ ・ 金 玉 金 ・ ・ 飛 ・|八
| 香 桂 ・ ・ ・ ・ ・ ・ 香|九
+---------------------------+
先手の持駒:角

MyMoveの桂がはねたあと、銀が下がって角を71に打ち込んで、以下15手ぐらいPVが表示されていて

MyMoveが読みの深さで押し切った感じですね

MSXゲームiPhone版「レリクス

http://www.gpara.com/article/cms_show.php?c_id=12006&c_num=14

D4エンタープライズは、MSXゲームタイトルのiPhone/iPod Touch向けアプリ移植の第3弾として、
『レリスク』の配信を近日スタートすると発表した。

懐かしいー。

MSX版はやったことないけど、PC-8801mkIISRで遊んでいた

原作はもともと8801用でしょ。

デザインHRギーガーっぽいのよ(エイリアンの)

っていうか画面を見れば解るけど、背景が色が少ないのは、

森田さんのアルフォスと同じく

RGBプレーンで背景とキャラを合成するPC-8801高速化テクニックを生かしたゲーム


そうそう、ボーステック製でしたね

夜話レリクス

http://members.jcom.home.ne.jp/ancoro/YawaRelics.html

キャラクターの体のパーツを別々に動かすという表現方法
(プレステの「ガンダム ザ バトルマスター」と同じシステム)は当時としては新鮮で、

そうそう。そんなゲームは当時皆無だった。(ドット絵パターン毎書き換えるゲームがほとんど)


ボーステックといえば、スキーゲーム「HOTDOG」が忘れられない

これはFM-77AV用画面だけど、初めてプレイしたときの映像や音のリアル間や空気感

もう何十年経っても忘れられない

シナリオ生成が斬新な『ティル・ナ・ノーグ』PS2PSP4月29日発売

http://gimpo.2ch.net/test/read.cgi/moeplus/1235736253/-100

『ティル・ナ・ノーグ 〜悠久の仁〜』の最大のポイントは、固定のシナリオが存在しない点で、 
ゲームを始めるには「シナリオジェネレートシステム」で、シナリオを生成する必要がある。 
「シナリオジェネレートシステム」では、ベースとなる8つのメインストーリーを選択後、 
10桁の数字を入力して詳細な設定を作り出していく。

ジェネレートの仕組みが面白そう。

みなみけ おかえり」 なにかがおかしい

http://blog.livedoor.jp/basicchannel/archives/51610008.html

これは全然気づかなかった。わざとか? ミスか?


ミスだとすると、原画一枚のレベルで見ると間違いはないわけで(家の設定まで考えると間違い)

原画が間違ってないと、周辺の動画も間違ってないわけで。

原画原画連続性に間違いがある


しかし、原画は詳細設計で、動画コーディングで、絵コンテは基本設計で、

あみちゃんとみのりんの殴り合い

http://yunakiti.blog79.fc2.com/blog-entry-2370.html

いやいやこれは偶然でしょ(^^; アニメーターの作画技術的刷り込みというか

みのりんジムで、あみちゃんがシャアズゴックってことはないだろうし


しかし、二人はガチで大喧嘩してましたが、

考えてみたら、

ってことで、二人とも自分のことではなく他人のために喧嘩している


しかし、あみは可哀想な状況で、

  • 相手の気持ちに気づかない北山君や竜児には「バカは嫌い」といらだち
  • 相手の気持ちに気づきすぎるみのりんには「嫌み」を言っていらだち
  • 自分自分にもいらだち
みのりんvs亜美じゃ体力に差がありすぎる 
ソフト部の4番だったら多分学校内の全女子生徒の中で1、2を争うパワーの持ち主だろ 

つか、なんでこの作品は女vs女が殴り合いになるんだ?

実際は傍観していた大河が一番喧嘩が強いんだろうけど。

(負かせた引退した生徒会長も実際はかなり強そうだし)

しかし、泳げない、スキーもできない、大河って運動神経悪そうだけど強い。凶暴だから?


なぜ、女vs女で殴り合うのか?

ガンダムだって同じですよ

別に、プロレスみたいに男と男が殴り合えばいいんだけど、

それじゃ普通すぎてなんにも面白くない。

だから、ロボットロボットが殴り合うから「面白い」んですよね。

同じ原理で、女と女が殴り合うから「面白い」んですよね

らき☆すたOVA 柊かがみ コスプレver.続々

Figmaも出るらしいので予約

Figma らき☆すたOVA 柊かがみ コスプレver.

Figma らき☆すたOVA 柊かがみ コスプレver.

頭はかがみの髪の毛を緑色に塗って初音ミク身体に刺せば同じで、

身体は共通なんかな? (耳当てが違うけど)

金型(っていうの?)同じで済むし、効率が良さそう


そういえば、うちのかがみfigmaってモニターの上に座らせておいたら

転落して首が折れちゃって(汗

瞬間接着剤で首をつないでいる状態です(汗

つかさとかこなたは何度転落しても大丈夫なんだけど、

かがみはツインテールだから、落下して着地した瞬間に、テコの原理で、

首にすごい圧力がかかるらしく、「柊かがみの転落事故は首が折れるのでたいへん危険


ねんどろいどは既に予約済み

PS3で動くものはXBOX360でも動く


海外開発者PS3ソフトの開発はとんでもなくやっかい。Xboxは性能の悪いPC

http://gs.inside-games.jp/news/180/18044.html

“差別的な答えを言わせてもらうと、PS3ソフトの開発はとんでもなくやっかいです。
ゲームをPS3とXbox 360の両方で開発するなら、PS3をリードさせたほうが良いでしょう。
なぜなら、PS3でいったん動作したものは、Xbox 360でも動作するからです。

皮肉ですね。


しかし、PS4Larrabee採用が検討されている

http://pc.watch.impress.co.jp/docs/2009/0226/kaigai492.htm

という話があるだけでも、Cellで悪戦苦闘してる人は萎えるんじゃないだろうか。

どうせこの苦労は無駄になる……とか思うと

こういう話は絶対外部にもらしてはだめなんでは? SCE的には。たとえ検討してても。

 SCE、Microsoft、任天堂の中で、現在、コンソールハードウェアの世代交代を最も切実に望んでいるのはSCEだ。
PSとPS2での市場寡占から一転、PS3ではSCEは風下に立たされた。

なんかvistaを思い出す

しかし、互換性とかどうするんだろう? CPUが大幅に変った場合。LarrabeeCellエミュレーション

体内時計

http://anond.hatelabo.jp/20090227203001

■日曜日の「情熱大陸」はぜひ見るべき
 
上田泰己さんが出るから。
 
彼は33歳なんだが、すでに生物学(システム生物学)では世界的な権威だ。
20代で理化学研究所のチームリーダーになった、というエピソードは彼のサイエンティストとしての才能を端的に示しているが、
実際の業績はそれ以上だ。

 爆笑学問で見た人だったかな? 太田が「若いですねえ?」とか言ってた人(違うかも)


http://www.nikkeibp.co.jp/archives/326/326385.html

東大医学部に現役合格しながら、医師の道には進まなかった。「根本的な治療法が確立していない病気があまりに多く、
現代の医学に失望した」と上田氏は言う。

 考えてみたら「風邪すら直す根本法無いですもんねえ」

 風邪薬なんて頭痛も鼻水も熱冷ましも、全部身体を騙して「異常信号カット」させてるだけで、

 むしろ危険っすよ(^^;(本当は寝ないと行けないのでサイン出してるのに無視)

 まあ、鼻水、咳は辛いので、止めておいて、寝て体内治癒力で直すというのは有効でしょうけど。

上田氏は、1日の中で規則的に量が変化する遺伝子に注目した。
そこで、1万個以上の遺伝子の濃度を網羅的に解析できるDNAチップという機器を使い、
体内リズムの周期に沿って量が変わる遺伝子を160個以上見つけ出した。
まるで、大きなパズルを解くような作業だが、そのうちの数十個の遺伝子の濃度が分かれば、
体内の時刻を1時間程度の誤差で計れることを突き止めた。

体内時計があるから、寝たり食べたりが規則正しく要求される

というか、体内時計があるのは何故?

それは、寝たり食べたりを規則正しくしないと、死にやすいから?

(寝ないといけないのに寝ないと、昼間に危険動物に襲われて死ぬ可能性が高まる)


バイオリズムというのは、VC++のPGOみたいに、生物の暮らしを「動的に最適化」しているのかもなー

別に体内時計無くても、寝たり喰ったりすれば「生物は生きられる」と思うんですよ。

でも、生物の長い歴史で培ったPGOに従って、食欲、睡眠欲を外部コントロールした方が、暮らしが最適化されるんじゃないかね

その点、一般の動物は性欲もPGOされていて、繁殖期にしか発情しない。

(ロングスパン体内時計


その点、人間本能が壊れているから、いつでも発情できる。

壊れているというのは違うかな。

食欲、睡眠欲のレベルまで、性欲の時間スケールが短くなったんじゃないかなあ?

本能が壊れているという言い方はものぐさ精神分析の岸田さんの言葉だけど、

生物として完成する前に人間赤ちゃんは生まれてくる。馬なんて生まれた直後に立つ)

いつ発情して、子供を作っても、人間の群れは子供を育てられる

動物はエサの多さが季節に依存するので、季節に合わせて子作りしないと無駄になる)


しかし、現在社会においては、収入が少なかったり出会いがないので「子作りできない」ようになっている。

季節が来れば子作りできる動物と比較して、一生、子作りできない人間社会

本能が壊れていつでも発情できるけど、動物より厳しい子作り条件w

二次元萌えてるのが、生物として最先端じゃないすか?ww

動物化するポストモダンというけど、全然動物化してねぇよw

性欲時計も、子作り条件もどんどん動物とかけ離れて独自に邁進する人類進化(生物的、社会的

2009-02-27

JavaScript勉強会

毎週金曜は会社勉強会なんですが、JavaScript勉強会でした。

JSオブジェクト指向の話なんですが、


まずスコープ関数単位なんですね。いわゆる{}単位ではない。


で、thisなんですが、基本的にオブジェクト自身を指すのは普通なんですが、

ややこしいのは、DOM要素でイベントで呼ばれた関数とか、

prototype.jsでコールバック的に呼ばれた関数内の処理(updaterとか)

その場合、thisはオブジェクト自身では無く、

動かしている人自身になる。

イベント起動なら、window自身だし、ajaxのコールバックならそちらがthisになる。

(prototype要のbindをすればthisが適切に入る)


普通言語、Cとかでコールバックすれば、それは関数ポインタの参照渡しだけど、

JavaScript関数は、実は変数に値で入っているので、プログラム自体が値渡しだから、

thisが何になるかは動的に決定されるということらしい


var a = function(a) { alert(a); }
a(3);
document.write(a);

aという変数無名関数をセットして、()を付けて中身を読む=中身が実行される。

a自身に処理が(おそらくそのまま)値で入っているから、表示もできる。

実行すると3のアラート

function (a) { alert(a); }

が表示される。確かに変数aには、無名関数が代入されている。

こう考えた方が解りやすいかも

var a = "function(a) { alert(a); }";

(代入されているモノは、実際は中間言語? functionが文字通りfunctionと入っていてはメモリ無駄




var a = function(a) {
	alert(a);
	//misaki
}

のaを表示させると

function (a) { alert(a); //misaki }

改行は詰ってるけど、コメントがそのまま入っている(^^;マジっすか?


JavaScriptの場合、メソッドとプロパティという区別はなく、

すべてが連想配列ハッシュkeyとvalueになっているらしい

ある意味すっきりした仕様

<script>
document.write("abc<br>");
document.write(  document.write );
</script>

試しにこういうコードを実行してみる

documet.write("abc")というのは、documentのwriteメソッドを起動しているのではなく、

documentのwriteキーのハッシュ値関数として引数"abc"を渡して動かすといイメージのはず


chromeでの実行結果

abc
function write() { [native code] }

たしかにdocumet.writeにはwrite関数が値として入ってた(write関数の中身は組み込みだけど)

プログラムと値に区別がないのはLispみたいな感じ


このへんは自分で作っているインタプリターにもハッシュを実装して取り込んでみたい。

電子マネー

やねうらおさんがedyの話を書かれていた。

便利な反面、たいへんな部分が残っている

http://d.hatena.ne.jp/yaneurao/20090225

私 「とりあえず、この一万円でまず買ったものを精算してもらえませんか」

もう落語のオチみたいですね(^^;


suicaとかpasmoは常に使ってるんですが、

最近クレジットカードで、スーパーで買物をよくします。食料品はほとんどカード

レジスムーズですし。

あと、TSUTAYATSUTAYAカードコミックレンタルしてます。

一回10冊580円でカード決済だと、手数料考えたら、TSUTAYA赤字かも?(^^;

自分トコのカードだからいいかな?(^^;


実はedyは一度も使ったことがないんですが、

以前、5000円分をコンビニで作ったことがあります。

が、そのあと、何か買う前に財布毎落としてしまって、

それ以来「edy鬼門」と思っています。

ひさしぶりのFloodgage

Rが下のソフトには勝つけど、上のソフトには全敗

Rが下がりました(^^;


評価関数が重いので、読みがちょっと浅いようです。

ある程度深く読めないとだめですね。

進歩本問題も20問しか解けないし。

もうちょっと深く読めるように軽くしてみます。

MyMoveとかPV見てると化け物って感じに読みが深いので。

今晩は9500局で学習させてみます。

というわけで寒いですが、ちょっと近所の西友に行ってみます。

西友と言えば、実家地元スーパーサニーが、西友系列になってるようです。

ネットチラシでサニーちらしを見ると「KY」とキャッチフレーズがありました。

なんと「KY=カカヤスク」の略ですw

チラシの発行元が西友でした。


元々サニーは、地元百貨店岩田屋系列だったのですが、いつのまにか西友系列

その西友も今は西武ではなく、外資ウォルマート系列だったりしますが

全然関係ない話になってる(・∀・)

2009-02-26

選手権の入場枠

> > ●入場者
> > 今回は確保できた会場が狭いため、大変申し訳ありませんが、
> > 大会期間中の会場への入場は、各チーム3名以内に限らせて
> > いただきたいと思います。(ご自分の対局がない日も見学できます)
> >
各チームの入場者として申請される方は、各チームのスポンサー筋・家族・友人・応援団など
特に制限はありません。
一人分の入場者枠を複数人でタイムシェアリングされても結構です。
(各チームに入場用パスを3枚お渡しするようなイメージです)

香山さんから追加でCSAにメールが流れてました。


もともとチームは3人まで枠があるということで、

一人参加はチームじゃないので、枠は一人と思ってました。

もしかして個人参加も3人?


それだと、GPSとかまったりゆうちゃんとかTacosとか激指とか

人数の多い所が大変なので、個人参加と複数参加で傾斜をかけてもいいんじゃないかと思います。


例えば、個人は2人枠まで、チームは4人枠とか(一人枠を借りてくるだけで5人にできる)

参加料の観点で不公平かもしれませんが、

チーム参加は大学が多いので、「アカデミック学割」と思えばいいと思います。

研究教育目的ですから、社会人とは区別されてもいいと思いますし。


あと、謎電高橋さん枠を作って欲しいですね。

あと、もし詰め将棋メモの加藤さんが来られれば当然入れないといけないでしょうし

(事実上、PRESSでしょう)


#なんだかコミケのサークル参加券の様相を呈してきましたw

強化学習のchess

ga将さんのga将がついにLesserKaiより勝率7割ぐらい強くなったようです。

おめでとうございます。

http://d.hatena.ne.jp/streakeagle/20090226/1235642148



ga将さんに教えて貰いましたが

KnightCapというTD学習で強くなったchessがあるそうで


openSourceらしいですが、ソースは見つかりませんでしたが、

http://samba.org/KnightCap/


つ論文


KnightCap: A chess program that learns by

combining TD(􀀀) with minimax search

http://cs.anu.edu.au/~Lex.Weaver/pub_sem/publications/knightcap.pdf

↑オーストラリア国立大学みたいですね

もう明日金曜か速いなあ

今週の週末は、Floodgateに復活させるのを目標にします。

相対距離で学習

まだ相対距離はやったことなかったので初チャレンジ

序盤の駒組みは絶対位置、終盤の攻めは相対距離が良い気がする

すくなくとも相対距離の方が学習回数は増えるので過学習が抑えられそうな気がする

ペナルティ調整中

id:ak11さんやid:issei_yさんがペナルティの工夫を書かれてましたが、

うちも強めて学習中。

手動の終盤位置評価+学習位置評価で行きます。


いったん、評価値の絶対値を集計してそれを原資にやってみたんですが、

なんかJ’が下がらないので、いったんやめました。

bona4のソースには、calc_penaltyとして、評価値の絶対値を合算して学習した手で割って

penaltyを計算する部分があるんですが、画面表示しているだけで、

とくにプログラムでは使ってないようなんですよね。

	penalty = calc_penalty() / obj_norm;
	target  = ( pdata[0]->target + target_out_window ) / obj_norm;
	objective_function = target + penalty;
double
calc_penalty( void )
{
  uint64_t u64sum;
  int i;

  u64sum = 0;

#define Foo(x) u64sum += (uint64_t)abs((int)x);
  GO_THROUGH_ALL_PARAMETERS_BY_FOO;
#undef Foo

  return (double)u64sum * FV_PENALTY;
}

targetは探索中にwindowにはっていた値で、outはwindow外。

目的関数はJと思われてるけど、実は、J+penaltyを目的関数と考えている模様。

(元々そうなんだけど、このpenaltyが学習に反映されてないのが謎)


ペナルティ自体は例の

  if      ( v > 0 ) { dv -= (float)FV_PENALTY; }
  else if ( v < 0 ) { dv += (float)FV_PENALTY; }

結局、これって頻度を見ずに値があれば一定のペナルティってことで、微妙ですよねえ

値によってペナルティをかけると値が一定に潰れるから良くないんでしょうけど、

フラグしか見てないのがミソで

これで上手く行くのが謎なんですが、fv.binを後から正規化するプログラムとかが別にあるのかなあ?

処理自体はコメントアウトされてるけど、-10000〜10000に要素の値を抑えようとした形跡がありますね

実際は32で割るので312として足されるわけですが、これって終盤の位置評価として足りないし、

序盤の定跡として多すぎるし。


とにかくbona4のpenaltyは謎なので、うちは頻度も見てペナルティをかけることにします。

amazonダンボー安っ

【Amazon.co.jp限定】 リボルテック ダンボー Amazon.co.jpボックスver

【Amazon.co.jp限定】 リボルテック ダンボー Amazon.co.jpボックスver

750円になってる(^^;

まだ買ってないので金曜にでも注文しよう(土曜着のために)

続1層のニューラルネットワーク

ソースを整理。

今夜あたり2層にしてバックプロパゲーションをやってみよう

続きを読む

1層のニューラルネットワーク

学習勉強用に

基本的な1層の2入力ニューラルネットワーク

		float z = nn(x1,x2,(x1&x2));

与える教師の(x1&x2)はANDで、

(x1|x2)にすればORを学習する

ただし1層の場合はXOR学習できない

1
|
|
+------1

というグラフで考えた場合、ANDとORはw1*x+w2*y+w3という直線で分離できるけど

XORはできないので(線形分離不能)

普通将棋の評価関数は「駒割+位置評価+王脅威+大駒脅威」という足し算なので、

00→0

10→1

01→1

11→0

みたいに入力に相関がある出力は学習できないはず(11→1になる)

隠れ層がないのでバックプロパゲーションはない。

普通の2乗誤差の最小二乗法。

続きを読む

2009-02-25

iPhone値下げ

http://jp.ibtimes.com/article/biznews/090225/30129.html


夏に新型出るって話が海外でも流れていたし

Appleサムスンに大量にフラッシュメモリ発注してるらしいので

出るのでしょう。

新型は現行のiPodTouchがベースなのかな? 薄くなって速くなる?

さすがに解像度とかは変えないでしょう。


ソフトバンクも上限が下がるみたいで助かります。

現在980円+6000円ぐらいなのが、980円+4500円ぐらいですか?

先月はパケット代が3万5千円だったので(上限があるので値引きになりますが)

値下げで気兼ねなく3Gを使えるかも?


また、同キャンペーンでは、本体価格のほかにパケット定額サービスの上限料金も割り引かれる。
通常は5,985円/月だが期間中は4,410円/月となる。
なお、既存のiPhoneユーザーには本体価格の割引は適用されないが、パケット定額サービスは割引の
対象となっており、4月1日から5月31日までに申し込めば割引が適用される。

なーんだ期間限定か(^^;


そういえばNTT.COMの無線LAN申し込んでたけどまだ全然使ってない(^^;

WiMaxモニター落選

[UQコミュニケーションズ]WiMAX無線LAN併用,インフラ貸し借りの時代?

http://itpro.nikkeibp.co.jp/article/COLUMN/20090130/323767/?ST=network

モバイルWiMAXは「モバイル」の名を捨てて勝負するべき

http://trendy.nikkeibp.co.jp/article/column/20090217/1023795/

通信速度は実測で下り10M〜15Mbps、上り4Mbps前後
月額固定で4480円、年契約による縛りなし
端末価格が1万2000〜1万3000円程度
将来的にはプロバイダーによる提供が中心に

しばりが無いのがいいね。イーモバイルあと1年縛られてますよ(^^;

しかもイーモバイルサイトで解約手数料探そうと思ったら見つからない見つからない、

わざと隠してるでしょ? FAQにものってないし。

イーモバイルUSBモデムになんで4万円も2年かかって分割払いしないといかんの?

あんなもん1万円ぐらいでしょ?


WiMax月固定4480円で10M出るなら、まじADSL無くして、これ一本でいいよ。

これ普及すると携帯電話はだんだん減って、Voipの時代来るかもね。

電話番号という枠組みがもう古いかもしれない。sipならメールアドレスに電話するイメージだし



5000人限定の無料モニターに応募してたんですが、落選メールが来ました

一応端末を自腹で買えば、無料モニター期間は無料で使えるらしいですが

USBタイプなんかの端末がだいたい1万円ぐらいですね。

サービスが始まったら4500円ぐらい固定で速度はイーモバイルより速い


高速回線下克上ですね(^^;

イーモバイルも今は調子いいけど、もっと速い回線がもっと安くなれば

いつ逆転されてもおかしくない。

LT-H90DTV+DIGA+PinPAVCRECを見ながらPCで作業

BuffaloのLinkTheater LT-H90DTV

DIGA DMR-BW730で、DLNAAVCRECLAN配信ができるようになってたんですが、

テレビの無いパソコン部屋で、28インチモニターPinPができるようになりました。


そもそも28インチPinPの場合、D-subメインのsubHDMIで、DVIが使えないという変った仕様でしたが、

DVI→D-SUB変換をかまして解決。

昔のイメージだとD-SUBで高解像度は汚いってイメージだったんですが、

意外に問題ないですね。D-Sub進歩しているんですね。

f:id:mkomiya:20090225073204j:image

これでDigaで録画したアニメを見ながら作業ができて快適

テレビ部屋に行くと、コタツノートPCVNCという構成なので

作業が進まないんですよね。いつのまにか寝るし(^^;


LT-H90DTVですが、DLNAリストを作成が遅いですね。

初めだけならいいんですけど、憶えてくれないようで、

なにかあるとリスト作成を始める(^^;

ただ、30秒スキップもあるのでCMも飛ばせていいです。

Digaチューナー地デジは選択しても映像が出ないですね?

DLNA的にチューナー映像も配信してるけど対応してない?

DTV90は地デジチューナーも内蔵してるのでいいんですけど、

DIGAチューナーDLNA経由で使えると便利ですけどねえ

2009-02-24

簡易強化学習 成果出ず

評価関数の特徴を二重にもって、後手だけ学習させて


507戦で先手の274勝233敗 (勝率54%)


後手の方が勝率が悪い orz

っていうか誤差の範囲


そう簡単に成果が出るとは思ってないけど、

案の定だめだった

2009-02-23

インタープリターを作る

ぼちぼち作成中。

インタープリターは作ったことがなかったんですが、

コンパイラより難しいですね。

コンパイラはある意味、整形するだけですけど、

インタープリターはメモリ管理とかがたいへん。


x=2;
print x+3*(2-x);
y="abc";
print y=="abc"
if(x==2) print "ok";

みたいな感じで、変数は小文字の一文字だけですが使えるようになりました。

あと文字列サポートしていて、

文字列文字列の比較をstr==strでできます。

C言語だとstrcmpを使うわけですが、値と文字列変数に型を持たせて

文字列==文字列の場合は、ポインターではなくstrcmpで比較するようにしました。


文字列同士の加算もOK。

x="abc";
y="def";
z=x+y;

x+yのstrlenだけmallocして、memcpyでzにコピーしてます

x="abc";
x="def";

みたいな場合は、defを代入するときにabcを持っている領域をfreeしてます。

よく考えたらreallocしてmemcpyでdefを代入した方がメモリ断片化しないかな?

この場合長さが同じからreallocしないでもいいし。


まだ関数がないので変数スコープという概念はないですが、

スコープが出来た場合は、関数から抜けた場合に、文字列変数自動的にfreeしてやる必要があります。

ただ、厳密にフリーしていると、ループ関数が呼ばれる場合に

mallocとfreeを繰り返すことになって、効率が悪いので、

JavaとかのGC付き言語は、良く使う変数スコープから抜けてもfreeせずに

時間差を持たすようです(要するにキャッシュと同じ考え方ですね)

強化学習チャレンジ

別段、微分とかそういうのは使わずに

お気楽に実施中。

自己対戦で、後手のみ学習させているので、

うまく行くと勝率が50%から後手有利になっていくはず。

1手1秒でもなかなか対戦が進まないので気長に観察してみます。

明日の朝はどうなっているだろうか?

強化学習迷路を解く

強化学習で迷路を解く

これは解りやすい。Javaグラフィカルに見れる。

ソースとか説明はないので、想像すると、


迷路スライムが初めはランダムにゴールを目指すけど、

たまたまゴールにたどり着くと、歩いた経路に+1で報酬をつけるんでしょう。

これを繰り返すと、

ゴールに行けた経路のうち重複したマスは報酬が積み重なる。

あとは、なるべく報酬が積み重なったマスを移動するようにすれば

迷路の経路を学習して最短経路で進めるようになる。



粘菌迷路を解くのと似ている。ただ、粘菌は一人ではなく、複数の経路に

同時に枝を伸ばす。そこが並列処理になっている。

このサンプルはスライムは1匹だけど、本来、何匹もいてもいい。

とか考えると、スライム報酬は、アリのフェロモンと同じだ。

アリは並列処理でエサを探し、フェロモンで同期をとっている。

自然はなんと賢いのだろう。

四校史2

http://d.hatena.ne.jp/yonkoushi/20090201

前からウォッチしているHSP3Dゲーム作ってる方がゲームの紹介をニコ動に上げていた

こーゆーのが作れるようになると楽しいでしょうねえ。


女子高生が校内で敵と戦う感じですが、多対多の戦いが面白いと思う。

最近3DゲームFPSも含めてやってないのでよく解らないんですが、

味方のNPCを誘導して戦うシステムは、AI的な感じがします

(昔、ボコスカウォーズとか好きだったんですよ←古すぎる)


例えば、飛んでくる敵に対して飛び道具が有効なので、

仲間の飛び道具を持っているNPCに指示をしてやっつけてもらう。

このへんはむしろ、AI兵器を展開して戦うって感じがして面白いです。


スライムが岩を越えて追いかけてこれない(知能がない)のは

ある意味、逆にゲーム要素にしている感じですが、

オライリーの「ゲーム開発者のためのAI入門」には

追跡と逃避とかブロッキングとかで面白い手法が色々と書かれています)


あんまり関係ないけど懐かしかったので

D

mpnその2

参考になるか分かりませんが、ym将棋では
「カットノードでの全探索手数/全カットノード数」の方で測っているので、1を下回ることはありません(1〜5くらいになっているようです)。
ひょっとしてリーフノードもノード数に勘定してます?

ym将棋さんのコメント


リーフノードも全ノード数の勘定に入れてました。

エスパーですか?(^^;


通常探索の末端で、静止探索の値を返すだけのノードですね。

これは探索ノード数から外してみました。

しかし、これを外すとnpsまで下がってしまう とほほ(^^;


というわけで、mpn=1273854/247657=5.14という数字が出ました。

それらしい感じです。これは序盤なので終盤になってくると代わってくると思う。

後手の持駒:飛 歩三
  9 8 7 6 5 4 3 2 1
+---------------------------+
|v香v桂 ・ 角v銀 角 ・v桂v香|一
| ・ ・ ・ ・v金 ・ ・ ・ ・|二
|v歩 ・v歩v歩 ・ ・v銀v玉v歩|三
| ・ ・ ・ ・v歩v歩v歩 ・ ・|四
| ・v飛 ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ 歩 歩 歩 ・ ・ ・ 歩|六
| 歩 歩 ・ 金 ・ 歩 桂 ・ ・|七
| ・ 銀 ・ ・ ・ 銀 ・ ・ ・|八
| 香 桂 ・ 金 玉 ・ ・ ・ 香|九
+---------------------------+
先手の持駒:金 歩
後手番
先手:misaki_smp
後手:ssp

終盤に近い局面だと

mpn=1261076/158864=7.938

序盤より悪くなってますね


今はPVノードカットノード含めて考えてますけど、カットノードだけで考えた方がいいのかな?

akiさんのブログによれば、カットノードはnullWindowなのでbetaカットが起きなかった場合は、

すべての手を探索するのでオーダリングが関係ない(良い順に探索しなくてもwindow幅がもともと1なので)

ただ、βカットが起きる場合は、オーダリングが良いほうが速くカットノード探索が終わる

2009-02-22

mpn(平均何手でβカットが発生するか)

西村さん直伝のmpnを調べてみたが

http://chocobo.yasuda-u.ac.jp/~nisimura/mymove/index.cgi?no=967

mpn という値(私が勝手に考えた値で「平均何手でβカットが発生するか」)がありますが、
この値がマイムーブは 10 程度であるのに対し Bonanza はほぼ1に近いとのことで、
かれこれ1年くらい「凄いよなあ」と思っていたのですが、私は「全探索手数/全ノード数」
という計算をしていたのですけれど今回保木さんにお聞きしたところ、
保木さんは「カットノードでの全探索手数/全カットノード数」という計算をされたのだそうです。 

どうも数字がおかしい。

mpn=searchを読んだ回数(調べた手の数)/全ノード数(通常探索での)


でいいのかな?と思ったら、全ノード数の方が数が大きい。

mpn=1どころか、0.9ぐらいの値になる。

たとえばhashでEXACTLYだった場合は、ノード数は1増えるが、探索ノードは0になるのでmpnは下がってしまう

(詰みハッシュがヒットした場合もそう)

FutilityCutでβカットの場合も、ノード数だけが増える。

NullMoveもパスして次の深さが静止探索の場合は、+1/+1となりmpnが増えない

bonaと違って、Killer手を先に探索するので、ここでbetaカットが起きても、+3/+3でmpnは増えない

なんか間違ってる気がする。


念のため、nullMove探索と多重反復進化でsearchを呼び出した場合もカウントしてみたが、

mpn=1197600/1290301=0.9281

みたいな値になる(?_?)


PVSで再探索するので、nullWindow探索で+1して、再探索時はさらに+1してみると

mpn=1564157/1564474=0.99979でやや1に近づいた。(再探索が少ないからPVSに意味がある)


ほとんどの場合にhashに格納した手でbetaカットが起きるので、

hashの手でカットが起きなかった場合(killerも1手詰めもbetaカットしなかった場合)

にbetaカットが何手で起きるか?を計測した方がいいかもしれない

どうやって計るのかな?(^^;

森内vs渡辺竜王 NHK杯凄かった

見応えあったなあ(^^)

凄かった。最後はどっちが勝つのかさっぱり解らなかった。

終盤の評価関数のつもりで対局を見ていましたw

桂馬で守りの金に利きをつけるとか

解説で「王手はやらないように。最後にやりましょう」って一般向けのアドバイスも参考になるw

互いに縛り方の見本というか。

NHK杯裏番組絶対可憐チルドレンがあるのでDRで録画しているんですが、

今回はHLモードでBD-Rにダビングしておきます。

最後は先手の森内さんの周りは全部後手の利きがある状態で、

身動きできない状態。

この前のオープン戦のMyMove vs K-Shogiを思い出しました。


#今週の絶チルDeathNoteネタかよ!

いくら小学館集英社親会社みたいなもんとはいえ、

他の出版社マンガパクるのはいかがなものかw(パクりではなく素敵なパロディでした)

bitboardのメリットとしてメモリアクセスが減る

CPUが速くなることで、相対的にメモリアクセスは遅くなる大きな原因になると思う

ハッシュもあふれるし

bona4は、持ち駒の情報もbitboardで持っていて目から鱗だった。

自分はhand[SFU〜ERY」というよくある形式で持っていたが、

bona4は、

  xxxxxxxx xxxxxxxx xxx11111  pawn
  xxxxxxxx xxxxxxxx 111xxxxx  lance
  xxxxxxxx xxxxx111 xxxxxxxx  knight
  xxxxxxxx xx111xxx xxxxxxxx  silver
  xxxxxxx1 11xxxxxx xxxxxxxx  gold
  xxxxx11x xxxxxxxx xxxxxxxx  bishop
  xxx11xxx xxxxxxxx xxxxxxxx  rook

とint変数一つで持っている(hand)。

hand配列形式だと8bitx32個ぐらいのメモリアクセスすることになる。

デコードシフトはしないといけないけど、


デコードするコスト < メモリレイテンシ


というのが現在CPUの特徴かもしれない

(昔PopCntの高速化でもそういう結果が出た。表で持っておくというのは今の時代成り立たない場合もある)

rotated bitboardは本当に速いのか?

rotateをやろうと思うと、90度、45度x2で、3つのbitboardをmakeMoveで更新しないといけない

unmakeMoveも同様。一つのbitboardは3個の32bitのint変数演算を行うことになる。

これはけっこうばかにならないコスト。(駒を動かすと3x3x2=18回の演算がいる)


自分アセンブラでbitを抜いてくるやり方は、move/undoで処理がいっさいいらない。

手生成する時や評価関数で呼ばれることになるが、飛、角、香車だけなので、そんなにコストは無いと思う。

しかも斜めに抜く場合は、位置が真ん中じゃない限りは、9bit抜かないといけないわけじゃない。

角の方だと、一つのbitboardの一つだけを3bitぬくだけで済む場合もある。

実はrotated bitboardより速いんじゃないだろうか?


証明する手段は無いが(^^;


chessの世界ではMagicBitboardというのもあり、rotatedBitboardより速いらしいが

http://chessprogramming.wikispaces.com/Magic+Bitboards

32bit x 3な将棋では使えないっぽい


真似師真似蔵さんがyssの掲示板過去に紹介している

http://www.yss-aya.com/bbs_log/bk2007-5.html#bbs324

進行度の計算をbitboardでやる

以外に進行度計算が遅くて、bitboardで簡易計算させると速くなって自己対戦の成績が良い模様

こういう方向だとbitboardのメリットがありますね

(そもそも進行度計算を差分計算させるべきなんでしょうけど)

とりあえず終盤を手動に戻す

学習させても終盤がめためたなので、

いったん昔のソースを引っ張ってきて、位置評価を手動で作ってるやつに差し替えてみました。

(序盤の評価はいっさい無し。落とし穴もなにもなし。終盤の位置評価だけの右ストレート一本)

sspと30戦を互いに3秒思考でやらしたところ、

28勝2敗でした。いやー手動は強い(^^;

sspシングルmisakiは2並列なので同じ条件ではないが)


選手権時間切れになったら、

とりあえず序盤中盤だけ学習させて、終盤は学習させない方式で選手権に出るしかないですが、

まだ70日あるので、なんとか終盤の学習に取り組んでみましょう

(という終盤だけ学習させるようにすれば、学習時間も少なくて済むし)


中盤でも探索末端は終盤になってるので、終盤が強いと棋力はほんとに安定すると思いますね。

最強戦で解説を聞いていて思ったんですが、

コンピューターは序盤が弱い」

ボナメソでそこそこいけるようになったとはいえ、確かにまだまだだと思う。

そもそも構想力が無いですからね。

(序盤がダメでも、中盤から終盤力で勝ってしまうんでしょうけど)

序盤を学習しているソフトは、定跡を短めで切って、乱戦に持ち込んだほうが有利かもしれないですね

(でも乱戦になると終盤力があるソフトが勝つかも?)

2009-02-21

鉄のラインバレル(九条美海が死んでいたら)

ネタバレですが、


今週のラインばれる。

てっきり、九条美海は死ぬと思った。死亡フラグキタ━━━━(゚∀゚)━━━━ッ!!?

と思ったのだが、死ななかったので、

もし死んでいたらというネタ

続きを読む

■スーパ^で売ってるうずらの卵を温めたらホントに孵化したw

http://souryoku.blog88.fc2.com/blog-entry-298.html

とにかくこれで、「有精卵が混ざっている」という情報の確認はできた。
兄の言っていたことは本当だったのだ。5個中1個が有精卵であると考えると、
確率的には残り25個の中に5個は発生中の卵があるということになる。
ひひひ、ひな鳥ーーーー!!! ひな鳥いるーーーー!!!

学習用のquadマシンであれば常に快適な温度を保っているが

棚瀬将棋欠場の理由

takodori 2009/02/10 09:53
shogi-l で話題にした方がいて、滝沢さんから、棚瀬さんのプログラムが大会までに間に合わないからという旨の回答がでています。
http://groups.google.co.jp/group/shogi-l/browse_thread/thread/1ecb6268cd8d346f#
  mkomiya 2009/02/10 22:29

http://shogi.typepad.jp/brainstorm/

のtakadoriさんからコメント覧で教えてもらってたんですが、


引用させてもらいます

http://groups.google.co.jp/group/shogi-l/browse_thread/thread/1ecb6268cd8d346f?pli=1

Mark Schreiber  	
2月5日, 午前2:57

I don't see Tanase Shogi. Tanase Shogi won 2nd place in the WCSC 18? 
Why isn't Tanase Shogi playing in the WCSC 19? 

訳:棚瀬将棋がないようですか? 棚瀬将棋はなぜWCSC19に欠場?


TAKIZAWA Takenobu  	
2月7日, 午後4:58

Dear Mark: 
Thank you for your question.  Alas, Mr. Tanase has not coompleted his 
work on his program (I am 90% sure) so that he will not enter. 
The answer is NO. 

訳:棚瀬さんは彼のプログラムを完成させられなかったようです(90%程度)


Mark Schreiber  	
Dear Mr. Takenobu Takziawa, 
    Thank you for replying. 
    I misunderstood your answer. I thought Mr. Tanase would not attend 
the tournament because of his job. Now I understand he will not attend 
because the shogi program is not ready to play. So Mr. Tanase thinks 
he will need more than 3 months to prepare the shogi program. I 
thought Mr. Tanase’s program was ready last year. He almost won except 
for a program bug. 
Mark 

(four_seasonsさんがコメント欄で訳を紹介してくれたので引用)

あなたの回答を誤解していました。棚瀬氏が仕事が原因でトーナメントに欠席するのかと思っていました。(訳註:「『プログラムはできているが仕事で出席できない』と思っていた」の意か)そうではなく、彼の将棋プログラムが準備できていないので、欠席するということなのですね。(以下略)

TAKIZAWA Takenobu  	
2月10日, 午後12:29
Dear Mark: 
Sorry for your misunderstanding. 
His job is busy (it is right), but the main reason why he does not 
enter the championship is because he thinks his work on the program 
is not enough. 
Takenobu

いえいえ。

仕事が忙しく、決勝戦に出場するのには不十分な完成度と彼が考えているのが主な理由でしょう。

今年の選手権の入場条件などについて

せっかく都内になったのはいいのですが、

  • 同一チームから同時に3人までしか対局室に入れない
  • 解説ルームには出場登録者しか入れない
  • エキシビジョンマッチがない(後日あるかも)

などの制限がつくようです。


 従来は決勝は椅子を用意して将棋ファンも観戦できるようになってるんですが、

今回は部屋が狭いらしく致し方ないようです。

 エキシビジョンマッチがないのも、部屋が狭いから観戦者を入れられないから

かもしれません。

 メディアの取材などはプレス登録で入場自由になるんでしょうけど。

 大学によってはチームの人数が多いので3人はたいへんでしょうけど、

 サッカーみたいに「○○アウト、○○イン」という感じで入れ替えればいいでしょう(^^;

 もしくは二酸化炭素みたいに、チーム間で入場者数枠をやりとりするとか(冗談です)


 同じ家賃だったら、田舎なら広い部屋借りれても、都会なら1ルームでも高いですから

 同じ理屈ですよね。

 開場的には手狭になっても、参加者の利便性を考慮しても開催場所変更ですから、仕方ないでしょう。

 取材が増えてより話題になってくれれば、という方向性では問題無いでしょうし。


 でも、考えてみたら、かずさアークの開場は広かったですね。


2chのスレの反応を見たら「せっかく都内なのに一般入場できないの残念」って意見がちらほらあったので

なにかリカバリ手段を考えてもいいんではないだろうか?

ネットで棋譜を見れば……と言うのならfloodgateでも対戦はできるのだし、

生イベントには生の良さがあると思う(そういう意味でDVDを買うより映画館に足を運びたい)

今年は確定申告をせねばならない

レーシック手術を去年の夏にしていて、

あと前の年の年末調整が間違っていたこともあって、

確定申告をすることになりました。


e-TAXとかのシステムもあるけど、事前に証明の登録とかが面倒くさいので

もう行ってやったほうがいいかと。

レーシック医療費の控除やらそのへんしかないし、自営業じゃないから領収書うんぬんもないし


明日の日曜日東京国税局が開いていて、確定申告ができる(たぶん激混み?)

http://www.nta.go.jp/sonota/sonota/osirase/heichoubi.htm


うーん。面倒くさい。

Excel InterpreterVLIW計算機を作る

特殊なインタプリターを作りたいと言っていたら

take-w1さんが紹介してくれたのですが


昔のやねうらおさんの記事で、こんなのが

Excel Interpreter(ExcelによるExcelのための変態プログラム

http://www.sun-inet.or.jp/~yaneurao/rsp/rsp29to2F.html

Excelというのは、ワークシート上の関数で制御構造を持つことが出来ない。
早い話、forやwhileと言ったものが無いのである。そこで、繰り返して何かをしようと思うと、
必ずモジュール(いわゆるマクロのことである。Excelでは、
マクロはユーザーの行なった動作をVBA形式で記録したもののことを言うようだ)を組まなくてはならない。
非常に単純なプログラムだが、必要な言語機能は一通り完備している。

プログラムは行方向に記述して行く。ラベルをサポートしているので、
ジャンプ等はすべてラベル参照で行なう。よって行番号という概念はない。

A列には行ラベルを書く。B列にはコマンドを書く。内部で定義されているコマンドは、以下のもの。

get,set,if,return,end

たったこれだけしかないが、あとはお客様の仕様に合わせてモジュール内に自由に追加していけば良い。
コマンド名をすべて日本語にして、「ぴゅう太」(誰も知らん?)のような日本語プログラミング環境を構築することも可能である。

なるほど〜。これは面白い。


エクセルには関数があって何かを処理できるけど、制御を書く機能がない(もちろんVBで書けば書けるけど)

そこで、VBで制御を担当する部分だけ書いて、制御機能だけ追加してやればいいということかな(関数自体は強力あるので)


エクセルのワークシート上のA列にラベル、B列にプログラムを上から下に時系列に並べる

と、VBで書いた命令解釈部分(ある意味バーチャルマシン、ある意味マイクロプロセッサ

がB列の命令群を解釈実行しつつ、A列のメモリ情報の解決もしてくれる


そこでですよ

エクセルはせっかく横にセル定義できるんだから、

C列、D列に、E列にも、命令を書けるようにする。

すると、VLIW計算機ができるわけですよw

解釈実行する部分は4命令を同時解釈実行できるようにする。ラベルに関しては共有でいいでしょう。

変数の同期処理はどうするんだ?って話はありますが、基本違う変数を使って貰うってことで。

続きを読む

最強戦の予想がかなり当たってしまた

マイムーブ西村さんは罰ゲーム決定になりましたが、


意外にてきとーに書いていた自分の予想がばしばし的中していたw

6試合中5試合が的中!(すげー!)

http://d.hatena.ne.jp/mkomiya/20090219/1234997107

自分はこんな感じで予想しておきますかね
激指-YSS○
激指-TACOS○
激指-棚瀬●
YSS-棚瀬○
YSS-TACOS●
TACOS-棚瀬●

激指が棚瀬に負けているのを当てている(これは去年の選手権通りですがw)

凄いのがYSSが棚瀬に勝つのを当てている。

(対COM戦のYSSの強さはガチ

残念ながらYSS-TACOSはTACOSの勝ちを予想して外れましたが、

さすがに主催チームが全敗という予想はできず……(本当なら全問正解にできたはずが)

2009-02-20

お手軽に強い将棋プログラムを作る10の方法

http://d.hatena.ne.jp/ak11/20090219#p1

akiさんがBlunder開発で培ったノウハウを10個にまとめて紹介

2. 計測重要
正確さと速度のトレードオフになったりするケースが凄く多いので、
最適化で言われるように、予想通りに行かない事も多いです。

このへんが自分は苦手。お手軽にはできない(^^;


例えば、PVS・AspirationSearch・再帰的反復深化が3桁以下の間に、
評価関数や指し手生成は6桁以上、手の適用は7桁以上、なんて具合に、
言葉通り回数の桁が違う事が多いため、どこに力を入れるのか、どこの無駄を省くのかが重要で、
それも相まって予想通りの挙動を示さない事が多いです。

 これはありますよね。

 探索でも、圧倒的に静止探索>通常探索の動く割合になるんですよ。当然ですけど。

 ってわけで、misakiの通常探索は手の深さをfloatで持っていて、0.5手延長は文字通り0.5手延長してますw

 普通はこことは整数化するのが定跡ですけど、(乗算するわけじゃないし)


 通常探索の深さをfloatだろうとintだろうと「全体での速度に大差はない」と思います。

 もちろん作りにもよるし、少しのことの積み重ねが全体の速度にはなるんでしょうけど(^^;

 極端な例でw


それと、探索木の形状の把握も重要です。これを勘違いすると枝刈りとかの性能予測が上手く出来ません。

 このへんが解ってないんですよねえ。色々と計測する仕組みを入れてみよう……

2009-02-19

最強戦は全然観れなかった

いちおう音は聞いてたんですが、さすがに音だけではよく解らなかった。

棚瀬さんと山下さんが話していたのは聞きました

山下さんが「棚瀬将棋が実際に負けたのは初めてですよね」と言われていたのが印象に残りました。

しかし、YSSしぶとい(^^;

2chの公式掲示板でも、「YSSは勝つための手ではなく、負けないための手を指す」と言われていた。

入玉はある程度学習できてると思うんですが、やはり学習型は入玉が弱点ですね。

全部学習しないでも入玉ぐらいはカリカリに書いてもいいんではと思う。

YSSと棚瀬将棋の対局を見ていて、持将棋にするしかない場面で、

YSSはちゃんと棚瀬将棋入玉を防いでいたのが印象に残った。

勝ちから遡って学習する

http://www.ai-gakkai.or.jp/jsai/whatsai/AItopics4.html

右の図は,前の図の一つ前の黒番の場面です.この配置から2回コマを動かして赤が勝ったので,
この場面での赤の勝算を,前の図の場面と同じように増やします.このように,強化学習では,
勝った場面からどんどん前にたどった場面の勝算も増やすようにすることで,
コマを動かすたびに教えてもらわなくても,いろいろな場面での勝算を学習できます.
(中略)
さらに,もう一つ工夫があります.勝敗が決まる一つ手前と二つ手前のどちらの場面でも
勝算を増やすのですが,その増加分は一つ前の方が二つ前より多くなるようにします.

試合結果から遡って学習って激指やってましたよね? そういえば。

それって強化学習だったんだ……


ただ、1試合の結果でパラメータを調整すると、オーバーフィッティングしそうですね。

とりあれず憶えておいて、5000試合ぐらい集計して、1更新するとかすれば

ボナメソみたいに汎化能力が出そう。

もしくは1試合単位で小数点単位で調整して、直接、評価関数に影響が出ないようにするとか


このへんはGA将!さんは色々とノウハウがありそうですね

今日からJAISTコンピュータ将棋世界最強決定戦」

http://www.jaist.ac.jp/rccg/saikyo/

2009年2月19日午前9時半開始!! 動画中継も行います
19日 9:30-16:00頃
20日 9:30-12:00頃
同時開催討論会:
「電子社会におけるヒトの知と人工知の融合―将棋ソフトの可能性を探る―」
審判長:
大内延介九段
持ち時間:
60分切れたら一手60秒

動画および棋譜の実況中継もあるようです。

去年の記憶だと、参加者の生の声が動画で流れることがあるので

生々しい会話が聞けた気がします。



持ち時間が長い場合は、

全幅+静止探索

実現確率探索

選択的探索(浅いところは全幅)

どれが有利なんでしょうね?

インタプリタ

うちの会社仕事中に音楽を聴くのは基本OKらしいので、

世界最強戦の動画の音声を聞きつつ、時々映像も見るというスタイル今日明日はやろうかと思います(^^;


自分音楽聞きながらコーディングはできないので、

要件定義とかドキュメント仕事をしようと思います。

というわけで、昨日は一日中プログラム自然言語処理系の自社開発案件)を書いてました。

↑これが凄い面白いんですよ(^^;


あと、仕事の合間にインタプリターを作り始めてまして、

四則演算計算できるようになりました。括弧にも対応するので

(5+2)*1+2-(4-1)/4

とかも計算できます

term :- term2 +- term | term2
term2 :- factor */% term2 | factor
factor :- digit | ( term )

みたいな感じかな? こーゆーのはyaccとか使うべきなんだろうけど、

ややこしい構文定義がちゃんと動くようにするまでが面白いので自分で書きたい


変数を使えるようにしたいんですが、

factor :- digit | ( term ) | alphabet

拡張して、英数文字列が来たら、ハッシュで中身を参照するような仕組み?

型宣言とか面倒なのは無しにしよう。

代入ができないといけないので

statement :- alphabet = term | print term

とりあえずprint組み込み関数ってことで

でも、代入ってのが諸悪の根源なので、代入できないようにするかな?

西村さんの罰ゲーム条件

http://chocobo.yasuda-u.ac.jp/~nisimura/mymove/index.cgi?no=1690

今年も恒例の世界最強戦予想が外れた場合の罰ゲームの条件を決める時間がやって参りました

ぱふぱふ、どんどん、ぱふぱふ

なので今年の罰ゲームを行う条件は、正解が半分以下、つまり6局中の正解が3局以下だった場合とします。 

半分正解でも罰ゲームのようです。今年は強気ですね!

順位の予測ではなく個別の勝ち負けの予測のようです


西村さんの予想を検証してみましょう

激指      YSS●TACOS○棚瀬将棋○2勝1敗   1位
YSS       激指○棚瀬将棋●TACOS○2勝1敗  1位
TACOS     棚瀬将棋○激指●YSS●1勝2敗    3位
棚瀬将棋  TACOS●YSS○激指●1勝2敗       3位

やはり激指先生強しですね。

棚瀬将棋が3位が意外な感じです。

選手権参加をしなかったぐらいなので完成度が低いという読みでしょうか。



6試合に分解すると今回の予想はこうですね

激指-YSS●
激指-TACOS○
激指-棚瀬○
YSS-棚瀬●
YSS-TACOS○
TACOS-棚瀬○

しかし、逆に3割しか当たらなかったそれはそれで凄いかもしれない(^^;


自分はこんな感じで予想しておきますかね

激指-YSS○
激指-TACOS○
激指-棚瀬●
YSS-棚瀬○
YSS-TACOS●
TACOS-棚瀬●

TD-バックギャモン

強化学習(森北出版)を寝る前にぼちぼち読んでるんですが、

TDバックギャモンが凄いですね。

TDチェッカーゲーム学習の成功例で有名ですけど


TDギャモン (TD-Gammon)

http://www.ai-gakkai.or.jp/jsai/whatsai/AItopics4.html


TDバックギャモンは、隠れユニットを持った階層型のニューラルネットを使ってて

勝利確率をバックプロパゲーションで学習している

バックギャモンの知識はなにも入れて無くて、自己対戦30万回ぐらいやらしたら、

当時最強のバックギャモンプログラムと互角まで強くなった。

1989年バックギャモン国際オリンピック大会圧勝

人間が知らないような序盤を作り出して、

1995年ごろの話では、人間の最強プレイヤーもTDギャモンの序盤を採用するようになったらしい(えー


バックギャモンの盤面から198入力で、中間層に40-80の隠れユニット

入力の重みは、将棋だったら、位置評価だったり駒割だったりでしょうけど、

隠れユニットには何が学習されるんでしょうね?

2009-02-18

吉祥寺のとらのあな閉店

http://www.toranoana.jp/sorry/090216_kichi.html

皆様にご愛顧頂きました、なんば2号店及び吉祥寺店ですが、
この度、2009年3月15日をもって閉店する運びとなりました。

閉店してる(^^;

吉祥寺ってアニメーションのフェスティバルもしてるし、

駅前にケロロの「吉祥寺はもらった」看板もあるし

実際、アニメ関係者とかマンガ関係者とかもいっぱい住んでるんでしょうけど、


前は上石神井に住んでたんで近いんでよく行ってたけど、

しょせんおしゃれな町であって、オタ的には別に行きたい町ではなかった。


吉祥寺WAVE

http://blog.kichimani.com/?eid=248566

このへんもどうなんですかねえ?(^^;


WAVEのすぐ側にこういうもあったりしますが、

青二塾 東京校

http://www.naruniha.net/189/index.html

なにか特殊なインタープリターが作りたい

 昔、LOGOというのがありましたが、

 あれはタートルという亀なカーソルの動きをプログラムで書いて、

 なにか図形を書くものだった。

 ビジュアルプログラミングといえばそうかもしれない。


Structure Synth - 文脈自由文法3Dアート

http://d.hatena.ne.jp/KZR/20090215/p1

 これは凄い

文脈自由文法を使って 3D CG を作成するソフトウェア。つまるところ, Context Free の 3D 版だ

ちょっと前に、

5分間オーディオプログラミングChucK入門

http://d.hatena.ne.jp/KZR/20090203/p1

というのも紹介されていたけど、

こっちはプログラム音楽を作成する言語

いわゆるドレミを定義するものとは全然違う(たぶん)


変数と即値と演算子と中括弧{}とかセミコロンとかが字句解析できて、

構文をパースできれば、

インタプリター的な言語解釈はできるので、

その上で、なにか特殊なインタプリターを自分作ってみたくなった。

2D,3D,音楽以外でも、なにかあるはず。


ストーリーデータベース仕様

http://d.hatena.ne.jp/eiji8pou/20090218/1234885587

このへんも面白そう。

ギャルゲー要素のデータベースサイトとかは見たことがありますけど

ストーリー構成のための要素を言語仕様的に作れると面白い。凄い面白い

絵本世界ストーリー自動生成できます的なAI研究は昔から見るけど。ICOTとかもやってそう)

もっと、なにか違うものができる気がする。


オブジェクト指向の一環で、アクターモデルとかありますけど、

文字通りストーリーの役者はアクターですから。

アクター同士の相互作用で、カオス的なストーリー展開が自動生成される

スートリー生成インタープリターとかできると超面白い。それガンパレ

2009-02-17

学習で詰みからみの手を捨てて学習

GA将さんのコメントで

私は「軽い探索で詰みが発見出来たなら、実際の対局でも読めば分かる。だからあえて学習しない。」
って選択肢もありかな−、とか考えています。
ボナンザメソッドと強化学習では色々違うかもしれませんが…

が参考になった。読まないと解らない手は捨てるは考えていたので、

SEEでかなり駒損する手(-400)が棋譜の手は学習せず捨ててるんですが

逆に、読めば解る手を捨てるという考えがありませんでした。

読めば詰むと解る局面は読めば解るし、裏を返せば読まないと解らないと言えるかも。

あくまで、一般常識学習させたいだけなので、

その局面がシミュレートできるようにしたいわけではないし。


詰みからみの局面を捨てると

まず初期状態でJ'がかなり下がります(学習対象が減るので学習も速くなる)

実験で400局なのでアレですが、J'自体は終盤も下がるようになってます。

今まで位置評価だけだと全然終盤が下がらなかったのに。

26ステップ 400局 合計43131手 J=526624.000000 J'=12.209872 0時間16分33秒
 Objective Func=40.817720 target=12.209872 penalty=28.607847
12.8/24829|12.2/5216|13.2/4740| 9.9/8346|
  歩   香   桂   銀   金   角   飛   と   杏   圭   全   馬   龍
 100, 260, 286, 442, 570, 682, 836, 524, 414, 527, 547, 914,1066,
-------------------
-468 -411 -342 -276 -215 +190  +32 +248  +32  1
-473 -407  -59 -275  +18 +104 -179    X +217  2
-474 -209  -95 -231 +172 +201  +32  +32  +32  3
-472  -95 -106  +27  +72  +27 +250 +249 +140  4
 -73 -128  -31 -103  -28  +24 -169 -114 -217  5
  -9   +5   +3   +3   +5   +4   +3   -3   -9  6
  -3   +0   +3   +4   +5   +0   +2   -6   -7  7
  -8    X   +2   -2   +4   -5   -6   -5   -3  8
 -10   -4   +5   -3   -2   -9   -5   -2   -4  9

位置評価は初期値でマニュアルである程度増減させてるので0からこうなってるわけではないけど、

重要なのは、1ステップでJ'が下がるかどうかなので、

下がれば良し


位置評価だけで下がってくれれば、かなりいいかもしれない。

あとはクローズテストで未知の棋譜でもちゃんとJ'が終盤も含めて低めの値が出れば

将棋の一般常識を獲得できたことなるのだが……

あーなんとかなってくれー(最後は神頼み)

次の1手を教えると学習する将棋ブログパーツ

yowaさんのテトらせおよび、テトさせに次の1手教えるブログパーツアイデアが面白いので

テトリス自体をWEBで遊べるようにすると権利問題が発生するから?)

これを将棋に転用しても面白いと思う。


基本的にまっさらな思考エンジンActionScriptなりで作り、

次の1手を提示し、ユーザーが次の1手を指すと、それを正解手としてボナメソ学習する

それなりに強くするなるためにはかなりの数を教えないといけませんが、

地道に鍛錬をつめば「あなたの考え方を反映した将棋感覚」を憶えると思います。


このアイデアを実現するにはもう一つ技術が必要で、

魅力的な次の1手を作り出すことが必要です。

基本的に棋譜を流用してもいいんでしょうけど、

自己対戦で対戦しながら「この局面は面白い」と判断できたら

ユーザー「次の1手を聞く」という

進歩本で「面白い詰め将棋とはどういう詰め将棋か?」を理論的に追求した論文があるんですが、

あれを本将棋に応用してみる。



このへんのブログパーツ的には、オセロもできるし、あと麻雀の次の1手も面白いかもしれない

麻雀のボナメソ学習はなかなか強くするのが難しくて、次の年のGPWではSVMを使う方式になってましたが……)

そういえば、プロ野球マンガで、今NTV系でアニメ放送中のONEOUTSは、

プロ野球版のカイジみたいな気がしますが、かなり面白いです。

http://park5.wakwak.com/~tanaka02b/comic/comic06.htm

先読みの天才



yowaさんはししゃもという人工無能を作られていて、

http://yowaken.dip.jp/tdiary/20050418.html#p02

単語に区切った文章を元に、マルコフ連鎖を使って文章を作ります。 
それも一つだけでなく、10個とか20個とかたくさん作ります。
より返事っぽい文章を選び出す

これってマルコフ連鎖モンテカルロ法になるんじゃないかと思います。


モンテカルロですが、いづれ囲碁も作るつもりで時々ネットをまわって勉強してるんですが、

単純ランダムモンテカルロマルコフ連鎖考慮したMCMCに分かれるみたいで、

囲碁モンテカルロみたいにPlayoutをもっともらしくする工夫(例えばパターンの導入)

というのは、結局のところ、囲碁の着手の連続マルコフ過程と仮定していることじゃないかと思います。

価値の違い問題

探索の返値と、PVを下った先で評価関数の値が違う問題ですが、

勘違いしてました。

静止探索では、stand_pat=評価関数ではなく、

stand_pat=評価関数+SEE/2

ということで脅威的に軽く足してるので、PV末端で評価関数を呼んで一致するわけがない(^^;


ということで合わせて比較してみたところ200局ぐらいまで一致していて

でも一致しない局面が出てきました。

121手目 手番:先手 進行度=15/15
▼v銀
 9 8 7 6 5 4 3 2 1
---------------------------+
v香v桂 ・ ・ ・ ・v金v桂v王|一a
 ・ ・ ・ ・ ・v金 ・v銀v香|二b
v歩 ・ ・ ・ ・ ・ ・ ・ ・|三c
 ・ ・ ・ ・ ・ 歩 ・v金 ・|四d
 ・ ・v歩 ・ 全 桂v歩v銀 歩|五e
 ・ 歩 ・ ・ ・ ・ ・ 玉 ・|六f
 歩 ・ ・ ・ 歩 ・ ・ ・ 香|七g
 ・ ・ ・ 龍 ・v歩v馬 ・ ・|八h
 香 ・ ・ ・ 角 ・ ・ ・ 桂|九i
---------------------------+
△ 歩九 金 飛
棋譜の手=▼25歩打
▼25歩打△25銀▼25銀
EVpro=29997 EVpro2=386

詰みがからむ局面です。

学習用は1手詰めを読んでないので、詰みが発生するのは

王手されて受けが無くなった場合です。

29997ということはおそらく3深さで詰みになっていると思う。


問題はこの差がどう学習に影響するのか?

山田@CSAさんはRが2277もあるのか

http://www.computer-shogi.org/blog/computer-shogi_open_11/#comments


山田@CSAさんは24でR2277もあるんですね。

Floodgateではmisakiより上に行っています(^^;

私の将棋倶楽部24のレーティングは現在、2277です。
私の場合かなりvolatileな数字ではありますが(笑)、ここ何年かは2000を切ったことはないと思います。

http://syo-gi24.sblo.jp/article/3950880.html

2277だと24で4段と5段の間ぐらいみたいですね。町道場だと+2段で、6段〜7段相当?

探索PVがおかしいから終盤が学習できないかもしれない

前々からmisakiの読み筋PVは、合法手じゃない場合があると言われていて、

FloodgateでPVがおかしくても、勝ち負けには関係ないし放置してたんですが、


終盤の学習がオカシイのはそもそもPVがオカシイからという可能性があるんじゃないかと思います。

その点序盤は取り合い探索が不要なので、PVが無いので、PCがおかしくなることもない。

と考えると、辻褄が合います。


misakiPVはれさぴょんを参考に三角行列でやってるですが、

まずPVが合法手かどうかをチェックすると、それは大丈夫でした。


で、探索した評価値と、PVを下って行った局面での評価値を比較すると

46手目 手番:後手 進行度=0/0
▼v歩
 9 8 7 6 5 4 3 2 1
---------------------------+
v香v桂v銀v金 ・ ・ ・v桂v香|一a
 ・ ・v王 ・ ・ ・v飛 ・ ・|二b
v歩 ・v歩v金 ・v銀 ・ ・ ・|三c
 ・v歩 ・v歩 ・v歩 ・ 歩v歩|四d
 ・ ・ 歩 ・v歩 ・v歩 ・v角|五e
 ・ 歩 銀 ・ ・ ・ ・ ・ 飛|六f
 歩 ・ ・ 金 銀 歩 歩 ・ 歩|七g
 ・ 角 玉 ・ ・ ・ ・ ・ ・|八h
 香 桂 ・ 金 ・ ・ ・ 桂 香|九i
---------------------------+
△ 歩二
棋譜の手=△55歩
△55歩▼55歩△24歩
EVpro=-12 EVpro2=88

価値が一致してない局面が出てきます。

静止探索のロジックPV生成に問題がある可能性が出てきました。


こういう基礎的な部分の不具合とすると、かなり間抜けなことに……

おかしなPVで、静止探索という近似評価値を使って学習してJ'が下がっても、

学習に使ってない棋譜によるクローズテストでJ'が下がるわけがないし、

強くなるはずもない。


正しいPVが作れるようにすれば終盤も学習できる可能性が出てきました。

まったく原因が分からないよりは少しは前進しました

2009-02-16

1手+静止探索

現在、棋譜の手+0手+静止探索で学習しているので、

Bona4のように棋譜の手+1手+静止探索にしてみたら

とてつもなく遅いので、3秒でCtrl+Cを押しました。

棋譜の手だけ1手+静止探索で、兄弟手は0手+静止探索なら、

耐えられる遅さかもしれませんが、

そんなことして意味があるか解らないのでやめておきます。

vista x64マシンは一台しかない

64bit版vistaが入ってるのは去年選手権に出たquadデスクトップだけです。

misaki自体x64化してしまったので

3cpuで学習中は何もできません(^^;しまったっ

もう寝ようか。

その前に西友にご飯を買いに行こう

今日寒いです。

ランダムに選択して学習

脅威とか大駒の位置とかそのへんを入れるとちゃんとJ'は下がります。

オーバーフィッティングは意味がないとはいえ、

下がらないより下がる方がいい。

大量の棋譜で下がれば「それは一般常識」と信じて多めでやってみるしかないです。


akiさんのやりかたにならって、ランダム棋譜を選択して学習中。

2ch棋譜を使ってるんですが、

元々がki2でちょっと変換しづらい方式(○○右とか○○直とか人間向けの棋譜なので)

将棋道場が対応しているのでCSAに変換して使ってるんですが、

フォルダ全体で変換はできないので、ダイアログ関係で2000局単位ぐらいしかできないようです。

それで、

"c:\\misaki2\\study\\44000-45257.csa",
"c:\\misaki2\\study\\42000-43999.csa",
"c:\\misaki2\\study\\40000-41999.csa",

"c:\\misaki2\\study\\38000-39999.csa",
"c:\\misaki2\\study\\36000-37999.csa",
"c:\\misaki2\\study\\34000-35999.csa",

"c:\\misaki2\\study\\32000-33999.csa",
"c:\\misaki2\\study\\30000-31999.csa",
"c:\\misaki2\\study\\28000-29999.csa",

"c:\\misaki2\\study\\6000-7999.csa",
"c:\\misaki2\\study\\4000-5999.csa",
"c:\\misaki2\\study\\2000-3999.csa"

こんな感じで保存してます。異常棋譜とか駒落ちを除外してるのでやや減ります。女流は使ってます。

3cpuで、この中から7200局で学習させてます(1200x2x3)

ランダムに変えてますが、1局単位ではなく、

ファイル単位で入れ替えるのであまりバリエーションがないです。

あとランダムが標準なので偏ってる感じがします。

ハッシュの性能に関わるので、いづれMT乱数あたりに変えてみようかと思います、

vc rand()」でググる山下さんのメモがトップに出ますね(^^;

位置評価だけでは終盤は学習できない?

位置評価だけで利きの脅威とかない評価関数学習させても

序盤は多少下がるけど、終盤はダメでした

やはり脅威がいるのかと。

脅威があるから、位置評価も理解できるのかも?

2009-02-15

学習させても強くない(^^;

J'はそれなりに下がってるし、きっと強くなってるのかなーとか

思ってたら、強くないっす(汗


lesserKaiには勝つんですけど、Spearとやらすとなんか緩い手を指す

序盤はね。駒損しないように形を作ればいいんだから、

位置評価の総計の増減が、

歩兵の価値である100(もしくは交換値)より少なくするようにすれば

駒損して形優先はしないと思うんですけど、


問題は終盤ですよ。

学習させると終盤はそっぽの位置をマイナスに評価はしますけど、

でも、中盤とかは、そっぽであっても拠点作っていくのが大事じゃないですか。

必ずも位置評価的にマイナスじゃないんですよ。

詰める段階まで行ったら、そっぽは強く減点しないといけないんですけど、

中盤はそうじゃない。

そのへんがどうも上手く行ってないようです。

やはりなんらかの進行度の判断がいるかもしれない。


進行度x評価関数で揺れるのは散々困らされたので、選手権まで時間もないし、

いまさらやってる暇はないし、気力もない、棋力もない。

明らかに終盤かどうかを判断して、評価を切り替える方式でやってみますかねえ?


あと、終盤の学習。これもJ'が下がっても、それってたんにオーバーフィッティング。

終盤はバリエーションが凄いあるので、汎用の評価を獲得しないとダメですね。

特にbitboardしか無いので、やはり限界というか無理かもしれない。

やはり差分利きかな……orz


ここにきて、差分利き復活させて、進行度も考えないと行けないのでは、かなり後退することになります。

はあ(ため息)

2009-02-14

bitboardから斜め45度にbitを抜いてくるアセンブラ関数(汗

どんだけアホなことしているのか、って意味で記念に貼っておきます

RotateBitboard使おうよ(^^;

↑保木さんにも「意味ないですよw」って笑われました


bitboardが64bit一つならすっきりするんですが、32bit変数を三つなので

解りにくい。

[bit1,bit2,bit3,x,y]

x,yは9x9の盤上の位置です。


長いので見ない方がいいですw

続きを読む

x64でコンパイルOKだけど……

コンパイルはできるようになったが、

動かしてみると案の定暴走した

ひとつひとつ関数を動かしてみて確認してみるしかない


アセンブラ関数の問題じゃなくて、bitboard関係でかなりおかしくなってる模様

32bit→64bitで思わぬ副作用

なにか符号関係で値がおかしくなってるのか?

ポインタキャストして使ってたりはしてないんだけど、

ってことで、こりゃ64bit化するだけで土日全部潰れるかも試練。

さっぱりワカラン orz


解決しました。bitboardは関係なかった。やはりアセンブラに問題があった

rbxレジスタは呼ばれた方が保存しておく必要があった

http://homepage1.nifty.com/herumi/prog/x64.html

ここ見ててっきり保存不要と思いこんでたら、rbxのことは書いてないじゃん orz


MSDNで正確に調べた

http://msdn.microsoft.com/en-us/library/ms794547.aspx

RAX	Volatile	Return value register.
RCX	Volatile	First integer argument.
RDX	Volatile	Second integer argument.
R8	Volatile	Third integer argument.
R9	Volatile	Fourth integer argument.
R10:R11	Volatile	Must be preserved as required by caller; used in syscall/sysret instructions.
R12:R15	Nonvolatile	Must be preserved by called function.
RDI	Nonvolatile	Must be preserved by called function.
RSI	Nonvolatile	Must be preserved by called function.
RBX	Nonvolatile	Must be preserved by called function.
RBP	Nonvolatile	Can be used as a frame pointer. Must be preserved by called function.

RBXはEBXとして使ってるので保存する必要あり。

r10レジスタは、呼んだ方が保存する義務があるので、r10に入れて保持しておくことにしました。

mov r10,rbx
処理
mov rbx,r10

これでばっちり動くようになりました!

misakiは64bit対応になりました。これでメモリ問題に悩まされずに済む。

せっかく4GBメモリ積んでるのに、win32では宝の持ち腐れ!


疲れた orz

スーパー行って美味しいモノでも買ってこよう。

今日は、プログラミングはもう終り! また明日!

アセンブラ実験3

無駄だけど、関数内でいったん引数で渡ってきたレジスタメモリ待避して

戻るときに復帰してやるというのフレームワーク的に使ったほうが移植が楽そう

edx,ecxレジスタは使ってるので、戻るときに値を戻してやらないと、

戻った先で暴走するだろうし

http://homepage1.nifty.com/herumi/prog/x64.html

っていうかEM64Tのx64なコードってpush/popは使わないものなの? push edxとか書くとエラーになる

Rotate90 PROC
        mov     DWORD PTR [rsp+32], r9d
        mov     DWORD PTR [rsp+24], r8d
        mov     DWORD PTR [rsp+16], edx
        mov     DWORD PTR [rsp+8], ecx

;処理

        mov     edx,DWORD PTR [rsp+16]
        mov     ecx,DWORD PTR [rsp+8]
	ret 0

Rotate90 ENDP

8byte毎に領域を使わずに4byte毎でいいような気がするが、int引数関数アセンブルすると

8byte単位で確保するし、よくわからんが

ま、細かいことは気にせず、動けばいいんです。

アセンブラ実験

32bit変数引数渡しの所が解らないので

コンパイルしてアセンブラを見てみる

int LastOne(unsigned int a,unsigned int b,unsigned int c)
{
	a=2;
	b=3;
	c=4;
	return c;
}
PUBLIC  ?LastOne@@YAHIII@Z
; Function compile flags: /Odtp
_TEXT   SEGMENT
a$ = 8
b$ = 16
c$ = 24
?LastOne@@YAHIII@Z PROC
        mov     DWORD PTR [rsp+24], r8d
        mov     DWORD PTR [rsp+16], edx
        mov     DWORD PTR [rsp+8], ecx
        mov     DWORD PTR a$[rsp], 2
        mov     DWORD PTR b$[rsp], 3
        mov     DWORD PTR c$[rsp], 4
        mov     eax, DWORD PTR c$[rsp]
        ret     0
?LastOne@@YAHIII@Z ENDP
_TEXT   ENDS

ecxが第一引数で edxが第二引数で、r8dが第三引数みたいですね。

返値はeaxみたい。

32bit環境では引数スタック渡しだったので、使うレジスタを変更しないといけないな

移植がちょっと面倒になってきた。

a$ = 8
b$ = 16
c$ = 24
?LastOne@@YAHIII@Z PROC
        mov     DWORD PTR c$[rsp], r8d
        mov     DWORD PTR b$[rsp], edx
        mov     DWORD PTR a$[rsp], ecx

こう書いていいはず。なぜそうしないか謎

あと、ポインタも調査

 void Lock (volatile int *hPtr)	// volatile は外部から書き換えの可能性があるので
{
	int a=*hPtr;
}
_TEXT   SEGMENT
a$ = 0
hPtr$ = 32
?Lock@@YAXPECH@Z PROC
; File l:\misaki\64bit.cpp
; Line 2
$LN3:
        mov     QWORD PTR [rsp+8], rcx
        sub     rsp, 24
; Line 3
        mov     rax, QWORD PTR hPtr$[rsp]
        mov     eax, DWORD PTR [rax]
        mov     DWORD PTR a$[rsp], eax
; Line 4
        add     rsp, 24
        ret     0
?Lock@@YAXPECH@Z ENDP
_TEXT   ENDS

ポインタは64bitレジスタで渡りますね。そりゃそうだ。

64bitアセンブル

山下さんLockでまずは実験

ml64.exeというのが64bit版masm


ml64 -c lock.asmでコンパイルOK

Lock PROCにしてるとなぜかエラー。仕方ないのでLockFuncに改名する

あとラベルでendを使ってたが、本来の予約後とバッティングするらしく

これもエラー成るのでend2に改名


http://www.marbacka.net/asm64/

ここが参考になります

rcxに第一引数、rdxに第二引数が入ってるらしい。

レジスタが増えてるからスタック経由せずに渡せるんですね。

引数4つまではレジスタで渡るみたいなので4つまで抑えると遅く成らずにいいかも

classのメソッドの場合は第一引数はthisかな?

RCX                ; 1番目の引数
RDX                ; 2番目の引数
R8                 ; 3番目の引数
R9                 ; 4番目の引数
QWORD PTR [rsp+40] ; 5番目の引数
QWORD PTR [rsp+48] ; 6番目の引数
RAX                ; 返値

これって引数が64bitの場合かな? レジスタ名から64bitなのか32bitなのかわからん。

rsp+40→rsp+48になってるから64bitか?


.code

LockFunc PROC
   la:  mov     eax, 1
        xchg    eax, [rcx]	; このレジスタとメモリを交換する命令は複数CPUでも動作保障されている
        test    eax, eax
        jz      end2
   lb:
        mov     eax, [rcx]
        test    eax, eax
        jz      la
        jmp     lb
   end2:
    ret 0
LockFunc ENDP

end

動的にアセンブル

http://homepage1.nifty.com/herumi/soft/xbyak.html

ぐぐってたら凄いモノがあった

Xbyak(カイビャック)はx86(IA32), x64(AMD64, x86-64)のマシン語命令を生成するC++のクラスライブラリです. 
プログラム実行時に動的にアセンブルすることが可能なため, 柔軟な最適化(動的コード生成)が可能となります
(利用シーン:量子化の高速化, 式の計算).
暗号ライブラリに使って高速な実装をしてみた(very fast etaT pairing for Core 2 Duo)

動的にマシン語命令を生成できるらしい。

関数型言語のような、プログラムデータとして持つような

実行時のコード改変ができてしまうじゃないですか(意味合いが違う)

たとえばJPEGではエンコード中はqTbl[]は固定なのですが, その内容はエンコード時に指定する
画質パラメータに依存して決まります.
さて, 割り算は足し算や掛け算に比べてはるかに重たい処理です(演算コスト比はdiv:mul:add=30〜40:3:1ぐらい). 
したがってコンパイラは固定の数で割る場合は割り算命令を使わないような最適化を行います. 
たとえば10で割る場合VC6++では次のようなコードを生成します.
// C
uint32 func(uint32 n)
{
    return n / 10;
}

// asm
    mov    eax, cccccccdH
    mul    DWORD PTR _n$[esp-4]
    mov    eax, edx
    shr    eax, 3
    ret
これはコンパイル時に割る数が決まっているからこそできる最適化技術であり, 上記quantize()内部では不可能です.
ならば数値が確定してから上記コンパイラが行う最適化と同等なことを, 実行中にさせましょう. 
そのためにJITアセンブラXbyakを使います.

割り算命令は遅いので、コンパイル時に解っていれば足し算とかに置き換えられるけど

実行時に決まる場合はどうしようもない。

実行時にアセンブラ生成できれば、実行時情報を利用して高速化できるわけか。

ただ、JITだと動かしてるうちに速くはなるだろうけど、初回は遅いだろうな

乗算を何度もやるような処理なら有効そう。


こういう仕組みはMS自身が実装してもおかしくないと思う。IntelCompilerにはあるんだろうか?

PGOなら近いことまでしてくれるのかな?


C++と比べてjavaやC#が必ずしも場合によっては遅くないってのはJITの仕組みのおかげなのかも

井上さん vs gps(1st)

けっこう対等に熱戦。おそらくCOM将棋界で現在最強に近いgps相手に凄い

http://homepage.mac.com/junichi_takada/open11/kifu/open11_1_INS_GPS.html

ChromeJavaクラッシュした(^^;

Flashビュアーは動いているけど、Javaビュアークラッシュしてしまった(^^;

まったりゆうちゃん vs 山田さん(1st)

http://homepage.mac.com/junichi_takada/open11/kifu/open11_1_YUU_CS1_2.html

後手の飛車地下鉄飛車っていうんだったかな?

農工大はボナメソの論文を書いてるし、まったりゆうちゃんはボナメソ化されているんだろうか?


見事に山田さんが勝ってた。

銀が蝶のように舞い、ゆうちゃんの飛車は閉じこめられ、

飛車を取ってからは端から2枚飛車で一気に攻略。

MyMove vs K-shogi(1st)

MyMoveは竜をつくって駒得で、いいんじゃないですかね?

竜を作るとMyMoveは強いですよ


http://homepage.mac.com/junichi_takada/open11/kifu/open11_1_MYM_KSH.html

あーMyMove攻められずに竜を引かされた。

しっかり拠点を作ってるK-shogiが良くなったかも? 先手王だいぶ薄いし

オープン戦ですよ

中継ページ

http://homepage.mac.com/junichi_takada/open11/

連絡掲示板

http://cgi3.tky.3web.ne.jp/~kayaken/csabbs/open/

お待たせしました。

組み合わせは次の通りです。
プログラム・サーバの準備が出来次第始めていただいて結構です。

まったりゆうちゃん(先)−山田剛(人間)
GPS将棋−(先)井上浩一(人間)
柿木将棋−(先)なのは
がっかりゆうちゃん−(先)奈良将棋
K-Shogi−(先)マイムーブ

あ、なのはがちゃんと参加している! 偉いっ


スケジュール

2009年2月14日(土)
1回戦 13:15〜
2回戦 14:30〜
3回戦 15:45〜
4回戦 17:00〜

うちは、ぼちぼちアセンブラの64bit化を始めようとかと思っている所です。

アセンブラの部分はrotateBitboardを使わずに無理矢理ビット回転する処理なので、

 rotateにすればほぼいらなくなるのだが、もうこのへんは面倒くさいので手を入れたくない

でも、垂直と斜め45度でbitを切り出してくる処理なんですけど、rotateBitboardと比べても

そんなに速度は落ちてないと思う。makeMoveとかUnmakeのときにrotateを更新する必要ないし。

chessみたいに64bitで収まるならrotateBitboard方式がはっきりまさってるでしょうけど。

(処理対象が大駒だけなので全体に占める呼び出し回数も少ない)

SSEで128bitレジスタあるわけだし、bitboardをSSEのレジスタ化して速くならないものか?

斜めに取り出す処理もSSE命令でいい命令があるかもしれないし。



さて観戦しながら移植を進めましょう。

今、vista x64でコンパイルしたらエラーの嵐

GDH(GONZOアニメ事業さらなるリストラ 

http://gimpo.2ch.net/test/read.cgi/moeplus/1234489906/-100

リストラっていっても契約クリエイターフリーランスでしょ?

93 :なまえないよぉ〜:2009/02/13(金) 16:35:35 ID:74pm55BN
>>68 
離れたんじゃなくて切られたんだよ。 
本人発表よりも早くゴンゾスレに 
朝一で2ちゃんに書き込んだ社員が居た。 
421 名前: 名無しさん名無しさん [sage] 投稿日: 2007/09/20(木) 08:06:48 
池田がロミジュリの歴史的惨敗でクビになったらしいぞ! 
DVD1000枚以下とかありえねえwww 
あいつカレイドを自分の功績と勘違いして態度だけは社長並にでかかったからな 
まああそこまで無能だとはさすがに思わなかったが 

95 :なまえないよぉ〜:2009/02/13(金) 16:50:33 ID:JlDnz80o
ロミジュリは確か制作費4億で広告宣伝に2億回したって聞いたが 
駅の床にデカデカと広告打つとかアホすぎるw 

ロミオとジュリエットアニメ化ってのが企画段階で既に……

他にもサムライ7GONZOでしょ?

岩窟王もGONZOじゃん

企画段階で共通する間違いがある

16 :なまえないよぉ〜:2009/02/13(金) 11:14:02 ID:zbyE2gzP
「銀色の髪のアギト」と「ブレイブストーリー」が派手にコケたのがなぁ。 
アギト、OPはむちゃくちゃ面白かったのに。 
総じて設定・脚本のIQが低いという印象だな。 

アギトは酷かった……

CGとか良くて一見いいのに酷いのが判りにくいから傾くのかもしれない


鉄のラインバレルとか、ストパンはいいと思うんだけど……

何かを失う必要のある主人公

 契約僧になると屍姫にパワーを吸い取られる。星村さんは呪いもあるので吸われる率が高い

 ↑星村さんが好きなんだから仕方ないべ。嫌なら断ればいいし

 契約すると、パワーを吸われる。ルートじゃないと余計に吸われる←これは酷いw

 ファクターになるということは実は死んでいるということ


スタンドとかサーヴァントとか悪魔とかなんかと契約すると、契約者はそれなりに代償を払う必要がある

等価交換の法則みたいなものか。


鉄のラインバレルは時々、城崎が「ごめんなさい。あなたを巻き込んでしまって……」と詫びるが

正直デメリットが見えない。ファクターなると喧嘩は強くなるし、マキナは呼べるし、

死んでるっていっても幽霊じゃないし、具体的にどういうデメリットがあるのかわからん。

このへん作者はちゃんと考えているのだろうか?(原作は読んでないので判らんが)

バグってたので学習失敗

v+=(w[要素]*=((条件?)4:1));

みたいに書いていたところがバグってた(^^;

v+=(w[要素]*((条件?)4:1));

こう書くのが正しい。


バグっててもそれなりにJ'が下がるのが恐ろしい。まるで生き物のようだ。

コードを修正して再学習中。

なのでオープン戦参加はたぶん無理かな?

今期のアニメ感想まとめて

まず好みの順

とらドラ! > アキカン! > とある魔術 > メジャー > みなみけおかえり > 鉄のラインバレル > ソウルイーター > 鋼鉄のレギオス > 黒神 > RIDEBACK > エリン > まりあ+ほりっく > ef > 宇宙をかける少女 > 屍姫-玄- > VIPER'S CREED > マリア様が見てる4th

続きを読む

普通の液晶モニターでも立体視可能グラス(オリンパス

http://www.olympus.co.jp/jp/news/2009a/nr0902133dkitj.cfm

このたび、「PC用3D立体視聴キット」を当社推奨モニターとセットで、クリエーター向けに販売を開始します。
これまで3D立体視聴には特殊仕様の3D専用モニターが必要でした。しかし「3D立体視聴キット」の製品化により、
市販の液晶モニターでもこのキットを取り付けるだけで視聴が可能になりました。

http://z800.blog.shinobi.jp/Entry/967/#comment

価格はBenQE2400HDとセットで42,000円だそうです。
この件については、ちょっと大人の事情で私はノーコメント。

もう充分安いんだけど、モニターはいらないんだよねえ(^^; 最近28インチも買ってるし(^^;

グラス単体で売ってくれないかなあ


仕組みはこんな感じ

http://z800.blog.shinobi.jp/Entry/820/

モニター上に同期信号映像を写して、センサーで読み取ってグラスの液晶シャッターを閉開するらしい

なるほどねえ。

従来は専用の液晶を用意して、左右の目の情報の切り替えをやっていたけど、

これなら、普通の今もってる液晶が使える!

(Wiiも位置検出にセンサーを併用しているので似た発想)

冷蔵庫で冷やす

http://www.watch.impress.co.jp/akiba/hotline/20090214/etc_ttake2.html

小型コンプレッサを使ったガス冷機能付きのATXケース
「XPRESSAR(VG40031N2Z)」がThermaltakeから発売された。
 実売価格は99,800円(詳細は「今週見つけた新製品」参照のこと)。
「水冷よりも高冷却」「空冷よりも静音」をウリとする製品で、
ガス冷製品としては数年ぶりの新製品だ。

高ぇ 本格室内用クーラーの方がもっと安く買える

まりあ+ほりっく

まだ録画してるだけで見てなかったので一気に視聴中。

コミックアライブ連載

監督が新房監督なので、映像表現が斬新なシーンが多い。

OP/EDも凝っている斬新。


主人公高身長百合(男に触られると蕁麻疹がでる)で、ヒロイン女装

そういえば、天使な小生意気も好きだったけど、あれも男装と言うか、魔法で女に変身させられた話

ジンマシンといえば、はいからさんが通るの紅緒が就職した出版社編集長を思い出す(古い)

編集長! じんましん直ってる!」「あれ?」みたいな。


D

オープン戦は?

明日はオープン戦ですね。

今6900局でまた初めから学習中なので、その結果によっては参加してみるかも。

Intelの次期8coreCPU

http://pc.watch.impress.co.jp/docs/2009/0212/kaigai490.htm

http://pc.watch.impress.co.jp/docs/2009/0212/intel.htm


32nmのプロセスが予想以上に順調らしい。

面白いのが、プロセッサには32nmので、周辺の制御回路やメモリに45nmってハイブリッドになってる。

リーク電流を抑えるのも上手く言ってるらしい

使わないcoreには電源を切ってしまう(待機電力カットみたいな)

地デジ移行の頃には16nmとかになってそう(^^;

動作周波数は伸びないけど、コア数は順調に増えそうです。

土日の予定

・64bit対応のため、インラインアセンブラアセンブラ単体のソースに変更する

・Spearと対戦させて強くなってるか確認する


色々、特徴はアイデアは浮かんでるんですが、

現状、充分J'が信じられないぐらい下がってるのでもういいかもw

あとは、ちゃんと強さに繋がってるか確認しないといけない。

結局、勝てなかったら意味がないし。


汎化能力を現す指標を導入すべきかもしれない。

Jは単に棋譜との一致度だから、未知の棋譜に対して性能が出ないと意味が無い。

オープンテストクローズテストみたいなものもあるけど、

学習しながら計算できる指標があれば……位置評価から駒割を引いて差を見ればいいかも?

コンピュータ将棋同士の棋譜の一致度

gpsの金子さんがbona4の時間制御について解説されていた

http://www.sgtpepper.net/kaneko/diary/20090213.html#p01


2chのスレは自分も読んでました。自分で一致度を調べたことがないですが

たとえば、仮説として学習で評価関数を作っているプログラム同士はそうでないプログラム同士よりも似ているか、
とか、一致しなかった局面にそれぞれの個性は現れるか? 

このへんは興味がありますね。

仮に同じ評価関数でも学習対象の棋譜によっても変わってくるんでしょうね。

古い棋譜から学習すれば、序盤が古い囲いになるんでしょうし

終盤はあまり時代によって変わらないのかもしれない。

あと、前から疑問なのは、プロの棋譜だけじゃなくて、少し弱い人同士の棋譜も使ったほうがいいのか?とか

2009-02-12

TD学習メモ

dW(t)/dt=α(P(t+1)-P(t)Σλ▽P(i)

※Wは評価関数の重み

※P(x)は予想勝利確率

※P(x)=1/(1+e(-eval(x)/delta)でP(x)は評価関数をシグモイドで正規化した値

※▽P(i)は勾配で、=(dP(i)/dW1,dP(i)/dW2,……,dP(i)/dWn)

※P(x)=T[ΣWX] 探索末端の評価関数をシグモイドに入れた値(こうするとTD-leaf?)

※dP/dW=dT/dx[ΣWX]ΣX


P(x)はシグモイドだから微分した関数インパルスでボナメソのフィルターと同じ形

(x=0近傍で大きく、差が広がると0で、負にはならない)


ということは、P(t+1)-P(t)の正負で更新される値の向きが決まり、

フィルターの大きさが小さくなると更新幅が収束する

tは1手1手のタイムスケールらしい。

1手指して、勝率予測の差を出して、勝率予測の差の勾配をかけた値でWを更新する?

兄弟手じゃなくて、親子関係学習する?

局面が良くなれば盤面の特徴は強化され、局面が悪くなれば盤面の特徴は抑制される?


プロの棋譜と探索結果の差を0にするように学習するのがボナメソで、

次の1手後の探索結果と今の探索結果の差を0にするのTD学習?(教師無し学習


これだと学習対象がいかにも少ないし、ボナメソは1万局の差を貯めて多数決で更新するけど

インクリメンタル更新すると、近視眼的な更新になりそうな気がする。

ボナメソの良さを取り入れて、なにか改良できそうな気がする


指した手だけを対象にせず、兄弟手をすべて学習対象にしたら?

探索した手は特別扱いにして。

局面が悪くなった場合は、探索手による盤面を抑制するのはやるとして、

兄弟手による盤面も抑制する。でも、本当は探索手より良い手が兄弟に含まれている

その兄弟の評価の差をどう解決するか? 教師はいないので

6600局で学習

寝てる間に一晩学習させましたが、J'は3を切ってました。

なかなか頑張っています(^^)

50stepになったら止まるので、会社に行ってる間にも追加で50stepさせてみましょう。

成銀が銀より低い価値になってますね。

と金の価値が高い。

43ステップ 6600局 合計721108手 J=1688176.750000 J'=2.341087 6時間44分39秒
 2.3/405868| 2.6/85206| 2.4/80764| 2.2/149270|
  歩   香   桂   銀   金   角   飛   と   杏   圭   全   馬   龍
 100, 292, 318, 444, 558, 769, 838, 423, 346, 361, 423, 850,1061,
-------------------
-234 -276 -218 -100  -48  +51 -119  -81 -151  1
-444 -187 -155 -175  -14  +90 -132    X -204  2
-225 -121 -193 -127  -42  +63  -76  +20  -90  3
-219 -192 -105 -165 -144  +14  +26  +16 +111  4
-226 -250 -114 -129 -103  -91  -58  -88  -88  5
 -57   -5   +6   +2   +8  -18  -66  -85 -295  6
-118  +13   +8   +9  -37  -53 -106 -150 -292  7
-141    X  +23  -37  -84  -87 -119 -127 -219  8
-233  -88  -60 -151 -180 -260 -194 -355 -358  9

2009-02-11

6600局で学習

これでJ'がけっこう下がったら評価関数的にはそこそこ完成していると言えるかもしれない。

1CPUで50局を10秒で集計できるので、3300局を11分で集計できるはず

2cpuでやってるので1step13〜14分ぐらいで更新できてるようです。

(3cpuにするとメモリが足りない)


位置評価に関してですが、

v+=score/FV_SCALE;

的に位置評価の集計結果を割って足しこむのは、情報を残したまま駒割重視で良いと思うんですが、

問題は敵王の周囲です。


本来なら金なら160%増しで、そっぽは-80%減とかにしないといけないのに、

FV_SCALE=32だと、そっぽを下げるには、位置評価が-600*0.8*32のような大きな値になる必要があります。

ペナルティを無くしても、なかなかこの値に行かないと思います。


2chのスレを読むとbona4は激指8より中盤は強いそうですが、

終盤に逆転負けが多いようです。終盤に関してはbona3>bona4のようです。

と万さんが絶賛してるくらいなので、序盤中盤の流れはbona4かなり強くなってるんでしょう

(3駒の2億特徴)

終盤が弱いとしたら、そっぽが認識できてないんじゃないだろうか?

終盤のJ'がどのくらい下がってるのか気になります。


misakiのほうは、敵王の周辺とか敵陣はペナルティをものすごぐ減らすとか学習更新幅を増やすとか

ドーピングをやってますが、なかなかいい値がつきません。

少ない棋譜数なら見かけ上J'は下がってますが、オーバーフィッティングな気がします(未知の棋譜に弱い)

後ろ向きですが初期値でマニュアル位置評価を入れて、追加学習する方向を今試しています。

貸し出し・返却による再来店効果でレンタル市場が急拡大

http://gimpo.2ch.net/test/read.cgi/moeplus/1234319147/-100

出版物の販売が不振な中、漫画のレンタル市場が急拡大している。2004年に著作権法が 
改正され出版物にも貸与権が認められたのがきっかけだ。大手レンタル店が参入し、 
手ごろな値段で借りられるため、再び漫画を手に取る人が増えている。 

おー市場が拡大してきてるんだ!

まだ、ツタヤ実験中で、一部の店舗しかコミックレンタルしてないんですよ

コンビニとかでもやり始めると便利。


コミックレンタルが有望なのが、ネットでのレンタルと比較すると

ネットレンタルは送料がネックになるんですよ

DVDレンタルペラペラなので郵便で送ればたいしてコストがないけど、

コミックの場合は1冊単位で借りる人はいないし(単価がDVDの1/10)


それと、漫画買うと家に置いておくのがたいへん。

新刊買って読んですぐブックオフに売るんなら、はじめから借りるので充分。


ブックオフコミックレンタル市場は競合すると思いますね

コミックレンタル貸与権の元に著作権料を負担してるけど、ブックオフはしてないですから、

権利団体的にブックオフのような新古書店を潰したいなら、コミックレンタルを押した方がいいと思う。

(おまけにブックオフはただで立ち読みまでさせている)

J'が1を割っていた

200局というへたれ学習ですがJ'が1を割ってました。

こんなの理論上あるんだろうか?

sigmoidは1/(1+exp(-x/36ぐらい))なので

一致してx=0なら1/2=0.5だよね(exp(0)は1ってことで)

オーダリング前方に不一致はすくなくとも0.5より増大するので

理論上0.5より下がるはずはないはず


50ステップ 200局 合計21072手 J=17860.615234 J'=0.847599
0時間16分11秒
  歩   香   桂   銀   金   角   飛   と   杏   圭   全   馬   龍
 100, 314, 340, 472, 609, 781, 881, 370, 433, 428, 487, 882,1115,
 0.8/6421| 0.7/1130| 0.9/1070| 0.9/2009|

徴用配列がでかすぎて、学習中にchromeを起動するとメモリエラーで落ちる

はやく64bit環境を構築したい

IT】見積もり2億円のIP電話を820万円で構築した秋田県大館市から学べること

http://mamono.2ch.net/test/read.cgi/newsplus/1234296817/-100

「IP電話を導入する場合のベンダーの見積もりは約2億円だった。 
アナログ交換機を更新する場合でも費用は約2000万円。 
しかし自分たちで敷設することでサーバーは20万円,電話機500台は800万円で導入でき,電話料金も年間400万円削減できた」 
---秋田県大館市産業部商工課商業労政係主事の中村芳樹氏は,IP電話導入の経緯と効果をこう振り返る。 

2億円→820万円


Asterisk自分Linuxに入れてみたことがある。オープンソース電話交換機ソフト

SIP電話機は電話機にIPをふってやって、内部のusernameでAsteriskから区別できる

電話機と対応する内線番号を設定すれば、電話機自体はどこに動かしても番号はそのまま

普通電話だと回線に番号が紐づいているので引越しが面倒)


自治体の職員でこのへんの設定ができるのは凄いな。

趣味でIT系詳しい人もいるのでネット情報詳しい人も多いからできる人はできるんでしょう。

本来、ソフトウェア開発を必要としないので、SIerに依頼する必要はないんだよね。

SIPフォン自体を通販で買えばいいし。

AsteriskのIVRのスクリプト自体は簡単なので、時報を作ったり、時間外音声ガイダンスを流したり工夫もできる。

もし、このへんを電機メーカーに依頼して交換機を導入してたら、

保守も含めてすべての作業にお金がかかる。


ただ、こういうのって職場空気しだいなんだよね。

前にいた会社はWindowsServerでIISでMS SQLServerを使う職場で「LAMPでやれば開発費も減るし、クライアントのためにもなる」

と主張すると「なにかあったときに責任は?」という話になる。

そういわれると個人では反論できない。

トラブルをMSが解決してくれるわけじゃなくて、顧客に対して言い訳するための材料)

でも、導入機器が高いために、案件落札できなかったら損なんだけど?

機器は粗利が低いので高額機器を導入してもメリットはあまりない)


自治体お金税金道路工事建設会社に還流するのか、IT系に還流するのか、投資会社に還流するのか、

でも、無駄なものを買わないことで、無駄産業が淘汰されることで、

意味のある産業が正しく評価されることは、重要


担当者も凄い頑張っていい仕事をしたと思うけど、それを承認した上司の度量も凄い。

chromeはてなダイアリを見るとGoogleAdsのところがはまってるみたい?

なんかステータスを見ているとGoogleAdsの所でハングしている感じ

もしかしてGoogleAds用のJavaScriptchromeが問題を起こしているのかもしれない

IE7なら問題なかった。

会社でもchromeを使ってるんですが、久しぶりにIE7を使ったら文字表示が汚い

完全に風邪を引きました

喉が痛かったんですが、鼻水も出るようになってしまいました。

会社は休まずに行ってたんですが、ちょうど今日祝日なので今日で直してしまいたいです。

どこにもでかけずに、水分を多めにとって体内の老廃物を出し、食事は消化の良いものを控えめに

本当は寝てるのが一番なんでしょうけど、そういうわけにもいかないので(^^;

Bona4のペナルティについて

以前、akiさんがbona4のペナルティについてL1ノルム、L2ノルムの話をされてましたが、

http://d.hatena.ne.jp/ak11/20090202#p1

論文のやり方がL2正則化で、ソースのやり方がL1正則化*1なんでしょうか。
Al(v)はまたなんか違う気もしてよく分かりませんが。

http://www.geocities.jp/kashi_pong/research_diary-2007.html

半正定値行列のトレースは、固有値の絶対値の和(つまり、固有値をベクトルと見た場合のL1ノルムに相当する)
であるから、これを正則化項として小さくすることは、多くの固有値が0になり、結果的に、行列のランクが下がるのである。

理論的背景とかはよく判らないんですが、考え方はわかる気がします

L1ノルムはノイズリダクションになってるのかもしれない。

パース化が進むけどゴミ情報の値がついてても意味が無いので、それなら0になったほうがいい。


ある程度の子は伸ばすけど、基準まで上ってこれない子は谷底に叩き落す?

で、あがってきた子は、能力に応じて教室を分けるのがL2ノルム?

(よく発言する子の意見は控えめに聞いて、あまり発言しない子の意見重要視する。ucb1に似ている)


bona4のL1ノルムらしき値は FV_PENALTY=( 0.5 / (double)FV_SCALE )=0.5/32=0.015625

この値が大きすぎると未完の大器も谷底に叩き落す気がするの、エンジンの特性に合わせて調整すべきかもしれない。

http://d.hatena.ne.jp/issei_y/20090201/1233505643

試合中に相手の特徴を学習する

ってのはできると面白いかもしれない。

そういえばKCC将棋は対戦相手の棋譜をつかってチューンナップして

相手の弱点を突いてくるとか聞きましたけど、

ボナメソでソフトごとの棋譜をつかって学習させて、相手ごとに切り替えたら有利ですね

相手番だけは相手の棋譜から学習した評価関数を使えば一致度は増すので、予測がはずれないので、

より正しいPVを探索できるはず(自分の手番は好きなことを考えてよい)


ずるい? 人間だったら誰でもやってますよね? 人間はずるいので。


#ただ相手の試行内容が大幅に変わってる可能性があるので(渡辺竜王vsBona3みたいに)

#一致率が悪い場合は、汎用的な評価関数に切り替えたほうが良いかも

1000局で学習42ステップ

早起きするつもりが朝寝してしまった orz

42ステップ 1000局 合計220716手 J=778271.875000 J'=3.526124
5時間47分50秒
  歩   香   桂   銀   金   角   飛   と   杏   圭   全   馬   龍
 100, 302, 330, 463, 585, 688, 797, 334, 370, 393, 477, 873,1112,
 4.1/3275| 3.7/546| 3.8/530| 2.9/941|

棋譜を増やすと駒割も値が逆転せずに良い値がついている模様

序盤はもっと棋譜を増やしても通用すると思うけど

終盤はだめですね。やはり1万局とかで学習させないと

汎用的な終盤の常識は学べないと思う

機械はどれだけ人間に近づけるのか」チームラボ人工無能コンテストを開催中

http://codezine.jp/article/detail/3561

オモロ検索エンジン「サグール」や「サグールテレビ」で知られるチームラボは2月5日、
第2回チームラボアルゴリズムコンテストの募集を開始した。
「人間の手によらずさまざまな行動を起こす機械をつくること」をテーマに、
Webアプリケーションやボットの制作を競う。受付期間は、2009年3月16日(月)午前0時まで。
作品はWeb上に公開し、審査にはソーシャルブックマークサービス「はてなブックマーク」を活用する。
一般の利用者が、「いかに人間らしい振る舞いをするか」を判断基準として作品をブックマークし、
受付期間内に一番多くの人からブックマークされた作品を、MBP(Most Bookmarked Programmer)
として表彰する(賞金7万円)。その際、他の参加者のブックマークがあれば、100ブックマークとして換算する。

めちゃめちゃ興味あるんだけど、将棋作ってるので参加は無理そう

はてブ獲得数の審査で、

事実上審査員はてな住民なので、ややバイアス意識した方がいいと思う。


今、ヒラメイタアイデア

本屋万引きしたことを自慢するブログを書く人工万引き無能

俺様は昨日amazon万引きしてやったぜ!できるかそんなこと!突っ込むの速っ!」

コメントで「通報しました」「通報.in」とかの単語を発見すると

コメントを削除する

しつこく人間様がコメントであおると、ブログの内容が書き換わる

2chime.nu経由で人がいっぱい来るとついにブログが閉鎖する

「Virtualブログ炎上Machine



#かのせさんに土下座してartifactで紹介してもらえばおそらく優勝w←おい

今夜は大目の棋譜学習させてみよう

そろそろいったん他のソフトと対戦とかさせてみたいと思う

明日はspearとスパーリングさせてみよう。

たぶんオープン戦出場は無理かな。

左打ちから右打ちにコンバートしたようなもんで、やらないといけないことが山積み。

コンピュータ将棋は止まらない −人間トップに勝つコンピュータ将棋−」

http://www.ipsj.or.jp/10jigyo/taikai/71kai/event_program.html#t2

会   場 立命館大学 
びわこ・くさつキャンパス 
[大会総受付] 
クリエーションコア1F エントランスホール 

特別セッション(2) 3月10日(火)14:30-17:20 [会場:第1イベント会場(プリズムハウス 1F プリズムホール)] 
「コンピュータ将棋は止まらない −人間トップに勝つコンピュータ将棋−」 
【プログラム】 
司会:伊藤毅志(電通大) 
14:30-15:00 講演「コンピュータ将棋のXディに向けて」   松原仁(はこだて未来大) 
15:10-16:00 公開対局解説「激指 VS 立命館将棋部学生」 *別室にて13:00から対局開始 
           解説:中川大輔(日本将棋連盟プロ七段) 聞き手:伊藤毅志(電通大) 
16:20-17:20 パネル討論「コンピュータ将棋の現状と課題」 
           司   会:松原仁(はこだて未来大) 
           パネリスト:中川大輔(日本将棋連盟プロ七段),伊藤毅志(電通大),瀧澤武信(早大/コンピュータ将棋協会), 
                  鶴岡慶雅(University of Manchester),横山大作(東大,激指開発者) 

激指将棋部(個人じゃなくて団体?)の対戦が見たいけど

琵琶湖は遠すぎるなあ(^^;

加藤一二三スペシャル

http://anchorage.2ch.net/test/read.cgi/bgame/1226106698/927

927 :名無し名人:2009/02/10(火) 13:05:55 ID:bptMB+zh
ボナ4を改造して 
加藤一二三の全盛期の棋譜を元に 
「加藤一二三スペシャル」を作成中。 
採用する作戦は棒銀。 
・6手目で大長考する 
・駒が割れんばかりの打ち駒 
・駒をチョンチョン 
・あと何分? 
・キレる記録係 
・対局中に賛美歌ハミング 
・詰めを発見すると「ウヒョー!」 
など実装予定。乞うご期待。 

棒銀学習は、飛車と銀と端の位置関係を強化すると有効かな?

100局でも位置評価は求まるみたい

100局で25ステップでの銀の位置評価。

表が三つありますが、上から、後手王x先手銀、先手王x先手銀、三つ目は1と2の表の合算

-------------------
 -61 -101 -101  -98 -116   +2   +0  -72   +0  1
-111  -90  -75  -99  +29  +75 -100    X  -68  2
 -97  +33  -87  -30  -83  +13   +0   +0   +0  3
-108  +15  -19  +33   -4  +20 +106   +7  -85  4
 -90  -36  -69  -90  -22  -53  -13  +22 -119  5
-110   -9  +50  +20   +7   -5  +49  -64 -111  6
 -89  -31   -3  +31 -100   -1  -53   -4  -69  7
 +55    X -107   +3   +4  -69  -25 -111 -101  8
 -74  -92  -94  -92  -86   -9  -53  -41 -114  9
-------------------
 -57 -111 -105  -85 -113  -95  -34  -82  -74  1
-110  -74  +36  -29  +54  +12  -90    X  -77  2
 -72  +59 -113  -58  -95  +29  -87  -49  -99  3
-114  -83  +21  +42  -96  -41  +64  -52  -82  4
  +1  -33  +62  -51  +17  -16  +42  -54  -60  5
 -28   +5   +5  +48   +8  -21  +29  -80  -92  6
 -86  -15   +3  -21  -53   -6  -69 -103 -107  7
  +7    X  +19  -49  -36  -92 -107 -113  -93  8
 -92 -106  +66  -28  -97 -116 -117  -88 -116  9
-------------------
-118 -212 -206 -183 -229  -93  -34 -154  -74  1
-221 -164  -39 -128  +83  +87 -190    X -145  2
-169  +92 -200  -88 -178  +42  -87  -49  -99  3
-222  -68   +2  +75 -100  -21 +170  -45 -167  4
 -89  -69   -7 -141   -5  -69  +29  -32 -179  5
-138   -4  +55  +68  +15  -26  +78 -144 -203  6
-175  -46   +0  +10 -153   -7 -122 -107 -176  7
 +62    X  -88  -46  -32 -161 -132 -224 -194  8
-166 -198  -28 -120 -183 -125 -170 -129 -230  9

位置評価は合計を32で割ってます。

いままで位置評価をそのまま足したら駒損するので、2とか4で割ってて、

gpwで「ボナンザメソッドやってるんですか?」って聞かれたら

「いちおうやってるんですけど、2で割って足してます。とほほ」

みたいに言ってたんですが、bona4は32で割ってるじゃないですか!どなどな

2009-02-10

mini-Pythonインタプリターの作成

http://d.hatena.ne.jp/kera/20090127/p1

より


電気系B演習 (言語処理系演習)

http://www.logos.ic.i.u-tokyo.ac.jp/lectures/enshu2007/index.php?%B9%D6%B5%C1%BB%F1%CE%C1

これって激指の近山研究室みたいですね。

mini-Pythonインタプリターを作る授業らしい

この演習を通して学んでほしいこと
は,インタプリタをC 言語で書くことで,C/C++言語の実行の仕組み,およびそれを通してみた
コンピュータソフトウェアの低水準な(機械語に近い) 部分の動きである

読んでると、なんか自分インタプリターを作りたくなりますね。

自分の大学にはインタプリターを作る授業は無かったけど(電子系だったので知能系ならあったのかも?)、

高校生のときに、整数型のサブセットC言語コンパイラを個人的に作ってました。


それまでN88-BASICを使ってましたが、「C言語の小文字のプログラムがやたらかっこよく」感じて

どうしてもC言語プログラムを書きたかったけど、PC-8801mkIISR用で使えるC言語コンパイラを持ってなかった

そのとき、softbank雑誌に、CP/MAPIと互換で、ファイルシステムMS-DOS互換の

IOSという独自のOSが掲載されて、その上で動くアセンブラも紙上公開されていた。

OSアセンブラもダンプリストを打ち込んだんですよ!今考えたら地獄だw←細かい単純作業を確実にやる練習になるw)

ならばと、Z80アセンブラC言語コンパイラを作り、コンパイルしたらZ80アセンブラを出力して、

後はアセンブラバイナリにしてもらいました。

画面出力やファイル入出力はOSAPIを呼んでました。

putcとかgetcだけアセンブラ組み込みで作って、putsやprintfはC言語で書きました。


変数3=変数1+変数2

変数構文解析で領域を確保して、

グローバル関数内のローカルスコープを作っていた。

PUSH HL
PUSH DL
LD HL,@V1
LD DE,@V2
ADD HL,DE
LD @V3,HL
POP DL
POP HL

要するに使う前にスタックに退避して終わったら戻す、でとりあえず動く

リテラルからむなら、短くなる。

変数3=変数1+1023
PUSH HL
LD HL,@V1
ADD HL,1023
LD @V3,HL
POP HL

2PASSでソースをなめて、あらかじめ用意している順番に命令が並んでいたら置き換える最適化もしていた。


サブセットなので、残念ながら浮動小数点と構造体と共用体はサポートしていなかったが、

ポインタ配列サポートしてました。

2009-02-08

templateの解説

Functorの前にtemplateを覚えよう(^^;;

http://wisdom.sakura.ne.jp/programming/cpp/cpp33.html

#include <iostream>
using namespace std;

template <class X> void println(X out) {
	cout << out << '\n';
}

void println(float out) {
	cout << 'F' << out << '\n';
}

int main() {
	println("Kitty on your lap");
	println(56.025f);
	println(100.01);

	return 0;
}
もっとも、データ型によって処理が異なる関数の生成は
テンプレートではなくて関数のオーバーロードが専門分野です
テンプレートの中のある特定のデータ型でのみ処理が異なるという場合に用います

なるほど。判った気がする。型が違うと処理も違うなら個別のどうせコードを書かないと行けないけど

型が違うだけでやってることが同じなら

一つのコードで使いまわしたい。

そのためにテンプレートでオーバーロードするわけか。

さっそく、特徴を一つtemplate化してみよう

template <typename T>
void Shogi::element(T W,short&SCORE,float F,int KING)
{
	SCORE+=(W[KING][要素]+=F);
}

呼ぶときは
	element(www2,dummy,f,eou2);//学習用
	element(w2,score,0,eou2);//評価用

こんな感じでいいようです。

ただ、w2もww2はグローバル変数なので引数でわざわざアドレスを渡すのは無駄

やはりこれは#defineのマクロ定義のほうがいいかも……eou2も引数渡しする必要ないし

Functorを使えばいいんでしょうけど

functorの判りやすいソース

http://www.project-enigma.jp/members/kagelow/locus/archives/2006/02/fanctor.html

#include <stdio.h>

class FooFunc {
public:
    int operator( )( int arg1, int arg2 ) {
        return arg1 + arg2;
    };
};


void main()
{
	FooFunc func;
	int ret = func( 5, 3 );

	printf("ret=%d",ret);
}

コンパイルできた。結果はret=8である

実際に生成しているアセンブラを見てみればinlineされているかわかるはず

でもこれはFunctorであって、templateは使ってない(のか?)

Functorの解説

第C7回  functorは函数合成の夢を見るか(何のこっちゃ^^;) 00/09/27

http://www.sun-inet.or.jp/~yaneurao/rsp/rspC1toC8.html

ファンクタがよくわからぬ

http://d.hatena.ne.jp/niso1985/20081004/1223126269


Functorがよく判らない。断片的に判ったのは

class compare_class {
  public:
  bool operator()(int A, int B) {
    return (A < B);
  }
};

まず、operator()のオーバーロードしてなにか処理をclassとして宣言しておく

これをFunctorと呼ぶ。関数オブジェクトと呼ぶらしい。

JavaScriptの無名関数みたいなものかもしれない。


演算子オーバーロードの理解が怪しいのでぐぐる

http://www.geocities.jp/ky_webid/cpp/language/017.html

// +演算子オーバーロード
CPoint CPoint::operator+(CPoint& obj)
{
	CPoint tmp;
	tmp.m_x = m_x + obj.m_x;
	tmp.m_y = m_y + obj.m_y;
	return tmp;
}

operatorの後ろの+に対してインタフェースがオーバーロードされる

ということは、関数オブジェクトでは

()じたいがオーバーロードされるわけか。なんじゃそりゃ! ()は演算子だったのか?

()は関数を呼び出す演算子だったのか! (たまげた)

ということは()をoverloadすると、関数呼び出しはすべて置き換わるわけか?


int main() {
    int items[] = {4, 3, 1, 2};
    compare_class functor;
    sort_ints(items, sizeof(items)/sizeof(int), functor);
}

呼ぶほうは、定義しているFunctorを宣言して、sort用の比較関数として呼び出してやると

普通なら関数のポインタ渡しで、functorの中身で、実行されるはずが、

functorが関数オブジェクトなので、inline展開されて、その場で動いてしまう(らしい)

という気がしてきた。

functorは()をオーバーロードしてしまっているので、functorを呼ぶと関数オブジェクトが起動するのはわかるけど、

なぜその前の引数が渡るのか?

1+2は、1というオブジェクトに2を引数に+というメソッドを呼び出すけれど、

sort_ints(items, sizeof(items)/sizeof(int), functor);

は?functorの()演算子がoverloadされているので、判らん。頭がうになってきた。


operator()の部分はテンポラリのオブジェクトのコンストラクタが生成されるらしい

    CObject( ).func( ); // CObjectのテンポラリオブジェクトを作り、そのメンバ関数funcを呼び出す。
と同様、functorのテンポラリオブジェクトを作るためにコンストラクタを呼び出しているのです。ここで面白いのは、
このように行なったfunctorの合成は、インライン展開される

やねうらおさんの記事で、こう解説してあった。


これは実際に動かしてみないと判らない。debugモードは関数呼び出して、releseモードはinline展開されるらしい

かなり難解で100回読んでも判らない気がしますが、このへんが判ると仕事にも活かせるので一石二鳥

BuffaloのLinkTheater LT-H90DTVを買ったのは

失敗だったかもしれない。全然使わない(^^;

2DKの一人暮らしで、別の部屋にハイビジョンがLANで配信できるようになっても

あまりメリットが無かった。

長いHDMIケーブルを1本買えば良かっただけかもしれない。


#そんなこんなで使わないAV機器やPC周辺機器がたまっていく

学習用と評価関数用の特徴を共有したい

short eval()
{
  score+=Σ○○
}
void inc_param(float f)
{
  Σ(○○+=f)
}

ということで○○の部分は同じ処理になる。(実際は更新する配列は別物)

akiさんはブログで、コピーして置換するマクロを使われていると書かれていた。

自分はどっちかを書いて、片方にコピペして修正している。修正点は僅かなので手間は少ない。

でも、同じような関数が複数あるのは精神衛生上悪い。

(ちなみにbona4はmake_listが学習用と評価用に2つある。

評価関数自体がものすごくシンプルなので、もはや共有したいとか思わないレベル

続きを読む

人間プレイをお手本に真似て上手くなるテトらせ

やねうらおさんも紹介していた。

http://yowaken.dip.jp/tdiary/20090207.html#p01

評価関数はバリバリの手調整。
誰か、777さんのプレイ動画などを元に、ボナンザメソッドで学習を!
最初に作りたかったのは「人がプレイすると、その特徴をマネるCPUが育ってゆく」みたいなヤツ。
でも人がプレイできるようにすると、きっとアリカに怒られるよ!!

動画からボナメソをしようと思うと、動画からブロックを動かす位置情報を取り出すのに

画像認識がいるので敷居が高いですね(^^;


ってことで、人間プレイできるようにしてそのプレイを手本に覚えていく

テトらせってアイデアは秀逸。

オセロ人間プレイを真似るオセロゲーム作ってる人が居たんですけど、

学習アルゴリズムが悪いので全然強くならないんですが、

ボナメソならやれるはず。

たしかに試行回数が少ないけど、10回でもちゃんとJは下がる。

たとえばFlash不特定多数向けに公開した場合、不特定多数技能を真似て訓練されるはず。

ハム将棋プレイ回数なんてのは膨大なので、ヒットすればプレイ回数は飛躍的に伸びる。

続きを読む

ツタヤコミックレンタル

西友に行くついでにツタヤに行ってきた

最近は借りてなかったので久しぶりにコミックレンタル


カグツチ 上下

地平線でダンス(5)

ハチワンダイバー(9)

蒼天航路13−15

まりあ・ほりっく1

PLUTO4−5


カグツチパニック災害モノで構成を外園昌也さんなのできっと面白い。

最近原作だったりシリーズ構成が多い気がしますね(かなり分厚い上下巻)

黒神を借りようと思ったら、さすがに全巻借りられていた。

ONEOUTSはネタバレすると面白くないのでアニメが終わったら全巻読むつもり


借りたい漫画がなかなか無くて、帰宅するまですごい時間がかかってしまった。

PLUTOは重すぎるので読んでなかったが仕方ないので借りてみた。

地平線でダンスドラマにすると面白そう。異次元とかサイクロトロンとかの話

まりあほりっく現在アニメ放送中(女装主人公

女装といえば、みなみけおかえりは、男装の話ばかりで、女装ネタが封印されている。

どっちもやって欲しい

400局で学習してみる

100ステップ 400局 合計42519手 J=59565.523438 J'=1.400915
1時間28分19秒
歩   香   桂   銀   金   角   飛    と   杏   圭   全   馬    龍
 100, 360, 535, 485, 636, 758, 833, 400, 443, 488, 541,1033,1318,
 1.5/5097| 1.3/828| 1.3/785| 1.3/1480|

J'は2を切っていた。もう40stepぐらいで2になっていた。

なかなか調子が良い。忍者の訓練のように少しづつ棋譜を増やしていこう

51ステップ 400局 合計42539手 J=56897.550781 J'=1.337539
0時間49分14秒
歩   香   桂   銀   金   角   飛    と   杏   圭   全   馬    龍
 100, 326, 460, 496, 614, 747, 855, 400, 392, 471, 526, 956,1247,
42539 [400-0] time= 0時間49分20秒 J=56897 J'=1.34

さらに特徴追加して50stepで1.33まで下がるようになった。ヨシヨシ

2009-02-07

400局でやってみます

50局ばっかりやってたんで、200局2並列の400局で試しにやってみます

40局が14秒なので70秒で1step終わるはずですね

100stepだと7000秒なので、116分。約2時間

ちょっとスーパー行ってくるかな

BS11でエウレカセブンが再放送

金曜から始まりましたが、前回は神様家族で、なかなか選択が良いですね

パチンコのエクレカのCMが流れるんでサミーのおかげかもしれませんが

アキカン!

集英社スーパーダッシュ文庫が原作らしい

ヒロインはメロンというメロンジュース。

自動販売機の缶ジュースから人間の女の子に変化するw


一応話のバックグラウンドとして、自動販売機の缶ジュースの材質を、アルミとスチールのどちらに統一するか?

という問題を取り扱っている国家公務員(ゲイ)と秘書(ご苦労アイリン君。木崎です)がいて、

スチール缶とアルミ缶の女の子が互いに戦って、材質を統一するという目的がある。

とんでもない馬鹿な設定だが、

意図的にわざと馬鹿な設定にしている感じで、個人的に、この作者は只者ではないと個人的には思う

なかなか説明できないけどw


例えば、アキカン達が生まれてくる自動販売機はよくある「しゃべる自動販売機」なんですが、

主人公はこの自動販売機と会話をする。それをなじみがつっこんだりするんですが、

この会話が、ギャルゲーのようでもあり、人工知能との対話でもあるように見えて、なかなか面白い



主人公はへたれではなく、むしろ男らしい。

幼馴染は、なじみという名前で、炭酸を飲むと酔う。


同じスーパーダッシュ文庫で「電波的な彼女」の映画が作品の中で上映されている

(紅の作者の小説)製作会社がブレインズベースで紅を作ってた会社

この作品はエンディング曲が毎週変わるという実験をしている

あと、最後におまけコーナーがかなり潤沢にあり、

原作小説を一部読んで紹介するコーナーがあるが、

読み上げているのは、紅で弥生さんの声優の大久保さんである。

(今週は猿のきぐるみで頬紅をつけた顔で読んでいた。

 クールな弥生さんのファンとしては複雑な心境である。

 原作小説は官能小説のような描写が多く、作者の凄さが伝わってくる)

特徴の更新に慣性項を追加

52ステップ 50局 合計5284手 J=5774.807617 J'=1.092886
0時間18分14秒
歩   香   桂   銀   金   角   飛    と   杏   圭   全   馬    龍
 100, 360, 356, 503, 693, 733, 861, 417, 396, 479, 574, 943,1130,
 1.0/2618| 1.1/417| 1.3/392| 1.2/705|

前回更新時の集計結果を残しておいて、符号が反転したら更新幅を-1

符号がそのままなら+1

というのをやってみました。

ニューラルネットワークでも収束を早めるために前回の微分値に係数をかけて足したりしますね。


他にもいくつか特徴を追加したのもあって40stepぐらいではJ'が1になるようなりました

しかし、50局とは言え、本当に1になるとは(^^;

実際はdT(x)/dxのフィルターで、評価関数の差が大きい場合はdJ/dwが0になりますが、

J'の集計自体は T(x)の和で、

T(x)=1/(1+exp(-x/delta)ですが、

(J'のstep1ではJ'=17ぐらいから始まります)

パイオニア:薄型テレビ生産撤退、DVD機器開発も移管・車載機器に集中…

http://anchorage.2ch.net/test/read.cgi/bizplus/1233961901/-100

テレビとDVDから撤退? レーザーディスクも部品が手に入らないから製造停止になってたけど

カーナビに集中ですか……

車が売れない上にカーナビ自体が価格破壊が進むだろうし

B2Cのエンドユーザーがターゲットの商売はたいへんだなあ……


IBMがハードウェアの比重をどんどん下げてるらしいけど、

LENOVOが9500万ドルの赤字ってのを見ると懸命な判断だったのかもしれない。

ネットブック台頭も車が売れないのも、オーディオがiPod化したのも

実は必要ないスペックにお金を払っていたことに消費者が気づいたわけで。

これならわかる人工知能入門(PDF)

http://ai-gakkai.or.jp/jsai/activity/teachme-egg-dog-12.pdf

はてブから

コンピュータ将棋の話題も(^^;

URL的に人工知能学会が作ってるようですね

でも、コンピュータ将棋の論文とかって情報処理学会が多い気がしますね。

テトリスマシン

http://yowaken.dip.jp/tdiary/20090207.html#p01

テトらせ

これ面白いですね。

ランダム(?)に出現したブロックをテトリス自身が考えて(?)

回転させて解いて得点を重ねていく

本来のテトリスはブロックを出現させるだけで(魔王)

考えるのは宇多田ヒカルだが、(勇者さま)

CPUが自分で考えてプレイしているさまをみているのは

なんだか応援したくなる


http://yowaken.dip.jp/tdiary/20070720.html#p03

どういう思考だろう?

まず地面の様子を見て、出現したブロックを回転させたり移動させたりして、

どこにどういう向きで突っ込むのがいいかを判断しないといけない

でも、一気にブロックを成立させたほうが得点は加重されるという

悪魔のささやきもあるだろうし

blocksDuoは手持ちのブロックが決まってて、どういう順に置くかを考える必要があるけど

テトリスは何がくるかはランダム

一方、たとえば麻雀のアルゴリズムを書くとしたら、評価値は「この局の得点期待値」だとか
「この半荘でトップを取れる確率」だとかを見積もる形になるだろう。この場合、新たな要素を加える
(たとえば「相手の食い仕掛けに対応したい」)としたら、それが起きる確率やその時の得失点を見積もって、

たしかにリスクバランスを考える必要性は、麻雀と同じようなことを考える必要があるのだろう

Fuzzyな探索はできないのか?

評価関数自体は二つあってもOK

それぞれ違う値を返せる。本来、序盤、終盤を別々に評価関数を作ってもいい。

問題は二つの値を受け取っても、

探索できるアルゴリズムが無い。探索できる服が無い。

このへんの話は、昔、やねうらおさんの将棋方程式で話題なった記憶があるけど

fuzzyのメンバーシップ関数みたいな考えで、幅のある探索はできないか?

いや、幅なら、今でも探索windowということでもっている。

複数の概念を探索したいのだけど、

それは、複数のalphabetaを同時にやればいいだけの話で、

それは、違う評価関数の探索をやる話で、それはmagiシステムなので、

最後はどうやって多数決に持ち込むかの話にすぎないのか……



メンバシップ関数とは?

http://www.geocities.jp/turtle_wide/softcomp/fuzzy/2_3.htm

ベイジアンと似てない?

間違って会社に出勤してしまった(汗

うわ。今日、土曜じゃん!

昨夜は韓国料理屋で飲み会だったんですが、

考えてみたら金曜だから飲み会だったんだよ

というわけでとぼとぼと帰宅しました。


新聞も取ってないし、ニュースインターネットでしか読まないし

TVは録画したものしか見ないし、時間感覚が無くなってた(汗

バカすぎる(w

電車に乗るならさすがに気づくと思うんだけど、

人気の少ない裏道を通って自転車通勤なので……(機動隊基地とか明治乳業本社前の道を通る)


でも、早起きは三文の徳。とっかに遊びに行こうかな?

50局で学習しようシリーズ最終回

100ステップ 50局 合計5254手 J=10280.809570 J'=1.956759
0時間33分10秒
歩   香   桂   銀   金   角   飛    と   杏   圭   全   馬    龍
 100, 396, 317, 419, 754, 661, 808, 438, 369, 437, 623, 988,1215,
 1.9/2611| 1.9/413| 2.2/393| 2.1/693|

ペナルティ計算バグがあったので直したらJ'がついに2を切った。

2を切るのが目的だったので最終回です


次回からは200局で学習しよう(50step)シリーズにします



評価関数で評価値を再現する行為は、連想配列に似ている。いわゆるハッシュ

ただ、ハッシュのような単純なものではない。ハッシュは定跡と同じで同じ局面しか再現できないから。

そう考えると分散化した記憶を用いた連想記憶になっていると思う

学習のやり方自体は、ボナメソ以外にもTDとか色々あるだろう

でも、連想記憶という概念人間とも同じだし、ここはガチで定理なのかもしれない

他にも手段はあるだろうか?

モンテカルロは評価関数を使わずに末端を利用するのでやはり異端かなあ)

SMAPテレ朝50周年記念番組

生で見てたんですが、昔の映像が見れて面白かった。

草薙君のキャラの変わりように驚いた

・初めてあったとき、草薙君は周囲にものすごい目つきでガンを飛ばしていた

グループ内で草薙君は気が短かった

草薙君がファンにミドルキックをしていた

今のある意味癒しキャラから想像できないDQNぶり

いや、人間本質はそう変わるわけは無いので、草薙君は本当は今でもDQNかもしれない。


キムタクが、森さんのハイキックの話を始めたのは、絶妙だった

いきなり森さんがレースで優勝の話を始めるのは唐突で難しい(映像もそれませカットされていたし)

このタイミングハイキックを持ち出すのは、草薙君へのフォローになってるし(打ち消し効果)

同時に、森さんを落としながら話題にして導入をスムーズにして、

レースの話題まで話せる。

http://oshiete1.goo.ne.jp/qa1880576.html


稲垣さんは以前、交通事故で逃げた実績があるけど、実は、すごい「平和」な人なのが判った。

ハイキックの場面で、舞台袖で一人で逃げていた。

仮面ライダーGも面白かった

D

高額ギャラタレント一掃 TV界の本格リストラ 伊東四朗上沼恵美子...大物が次々消えていく

http://anchorage.2ch.net/test/read.cgi/mnewsplus/1233932071/-100

伊東四朗が今春限りで「脳内エステ IQサプリ」(フジテレビ)を降板。 
上沼恵美子が司会を務める名物ローカル番組「週刊えみぃSHOW」(読売テレビ)も打ち切りが決まった 
という。いずれも、1本200万円前後の高額ギャラだ。 
「開運!なんでも鑑定団」(テレビ東京)の石坂浩二にも降板のウワサが流れ、続投を危ぶむ声も

 芸能人はギャラが下がらない仕組みらしいので、

 ベテランで生き残ってると年功序列的にギャラが上がるので、

 視聴率低下でスポンサー料が激減の現在ベテラン芸能人受難らしい

 (今ままで散々もうけてるんだから、若手芸能人より恵まれている)

 寂しい感じもするけれど、

 同じ構造は、声優もそうみたいで、ベテランはギャラが高い。


 当たり前といえば当たり前だろうけど、

 能力主義世界でも、年功序列があるのが面白い。ギャラ=年功x能力

 将棋の段数も下がることは無いのと似ている。相撲も位が下がると横綱なら引退させられるし

 ある意味日本文化の特徴が現れていると思う

 プロ野球は活躍できなければベテランでも年俸は急激に落ちるし、いつ自由契約やらトレードされるか判らない

JASRAC公取委独占禁止法違反(私的独占)で排除命令へ、新規参入を阻害

http://mamono.2ch.net/test/read.cgi/newsplus/1233943983/-100

JASRAC独禁法違反

14 :名無しさん@九周年:2009/02/07(土) 03:16:06 ID:egLWlNd80
次はBCASの番だな 

独占&新規参入阻害&外資圧力&放送局天下りフリーオ役満裏ドラ

42 :名無しさん@九周年:2009/02/07(土) 03:19:44 ID:bg0MO+Fy0
郵便局よりJASRACを分社化すべきだったな。 
曲を等分して5社くらいに分けたらいい。 

この前、郵便局行ったら、郵便事業の受付は行列なのに、

銀行業務の受付は暇そうにぼーっとしてた。

昔だったら、臨機応変に手伝ってたと思う(銀行業務の客が来たら戻ればいいし)

83 :名無しさん@九周年:2009/02/07(土) 03:24:04 ID:+KeKHeVI0
戦前から続いていた団体も終わりか・・・・ 
次は電通かな。 
236 :名無しさん@九周年:2009/02/07(土) 03:44:19 ID:XxytBcex0
電通は無理だろうな 

666 :名無しさん@九周年:2009/02/07(土) 05:19:04 ID:kDFQ0s3g0
>>116がいい話をしてるがゲーム会社なんかは自分ところで作った曲を次回作に使うためには 
カスラックに登録できないんだよな 
登録しちゃうと自社のゲームで同じ曲使うのに楽曲使用料がカスラックに掠め取られる 
で、テレビラジオで無断利用されても泣き寝入り 
カスラックは包括契約でウマウマ 
一番の癌はカスラック 

こういう構造を見ると、JASRACって島のみかじめりょうを徴収する必要悪

50局で学習しよう5だっけ?

100ステップ 50局 合計5265手 J=11477.435547 J'=2.179950
0時間33分12秒
歩   香   桂   銀   金   角   飛    と   杏   圭   全   馬    龍
 100, 380, 334, 439, 761, 715, 874, 411, 405, 419, 623, 980,1153,
 2.3/2612| 2.3/416| 2.3/392| 2.0/698|

てな感じ。100ステップ33分。(初期化して0から始めている)

昨日から比べて、駒割に駒割の和のペナルティを足したのと、

飛車の安全度の特徴を足してみました(現在学習以外の手動評価値ゼロ

あと特徴の更新ランダム雑音を追加。ローカルミニマムから抜けて、

さらに落ちる落とし穴を見つける効果がありそう。


竜とか馬はほって置いても自分でなんとかするでしょう。

角はへんな打ち込みが怖いので安全度を特徴で持つべきかも知れない(悩む暇があれば入れよ)


香車価値が不当に高い。というか桂馬が低い。成ると逆転する

あと銀と成り銀は紙一重と思うけど、なぜか成るとでかい。

50局なので、50局に特化した常識を導いているかも

評価関数階層型にしたい

コタツでいつのまにか寝てた。喉が痛い(^^;


ニューラルネットワークの可能性

http://www.thinkit.co.jp/article/30/2/2.html

一般向けの記事なので読みやすい


階層型を学習するための学習則がバックプロゲーション


おさらいすると、ニューラルネットは、

続きを読む

TCP/IPには状態が無い

状態が無い。(断言できるほど詳しいわけでもないけれど、便宜上言い切って見ます)

だからこそ上位層であるHTTPでもセッションを発行したりするし

KEEPALIVEとかやらないといけなかったり。

でも、状態があるってことは、状態を保存しないと行けないので、

メモリが入る。

しかもそのオブジェクトを利用するユーザーの数だけ状態を持たないといけない。

状態が無いからこそ、TCP/IPはこんなに普及して長年使われているのかもしれない

状態が無いってことは、関数型言語のような変数の再代入が無いメリットもあるような気もする。

コンピュータ将棋には状態が無い

どこのノードからやってこようと、

基本、同じ局面は同じ評価である。

千日手という状態は考慮するが、基本、状態が無い。

ハッシュで置換表は持つが、それは、局面評価の代わりである

詰め将棋で、局面がループする問題も状態が無いことが起因だと思う

状態の無いコンピュータがボナメソをやった場合の問題点

でも、流れとかは考えるべきではないかと思う。

ボナメソで学習すると、上手く囲うけど、次のような場合が発生する


明らかに、次は金が寄るような序盤の囲ってる形勢。

ボナメソは常に、金が寄る手をリコメンドしてくるので、

探索は、常に金が寄る手を初手として評価関数に探索「させられる」

これを逆手に取ると、

「明らかに金が寄る」状態で、金を寄せずに、他の手を指すと、

ボナメソをやっている相手は、常に「金を寄せる」と思って探索をするため、

余計な処理を使わされて、読みが浅くなる。悪手を出す可能性が高くなる


GPW2008で、棚瀬将棋加藤さんに負けた試合で、

加藤さんの玉が不自然に一歩下がり、あと1手で囲いが完成する状態で

対局していた時、棚瀬将棋は思っていたのではないか?

「次は王が上がる。だから、次の手を僕は考えよう」

2009-02-06

タスクシステムと並列化

http://d.hatena.ne.jp/yaneurao/20090203#p1

やねうらおさんがゲームでのタスクシステムについて書かれていたので、

会社で熟読しました。

templateも苦手なんですけど、std:listってリストなんですね

perlではリストが無いとプログラム作れないので、

C++でも使えるリストと思えば、理解できるかも(^^;

紹介されていたカプコンのタスクシステムも面白かった。


以前、Flashでウィッチーズのシューティングゲームを作ってたけど(そして途中で投げ出した)、

オブジェクトの数が少ないので、タスクシステムみたいなことはやらなかったけど、

並列処理で大量のオブジェクトがあるゲームなら必須なんだろうと思う。

ここでいうタスクとタスク番号って概念は、OSのプロセス管理とプロセス番号とかと同じかなと思いました。

GCが無い言語で、オブジェクトの生き死にを管理するのは難しいんだなあと

オブジェクト同士が通信するのはプロセス間通信みたいなやり方なのかなあ。

スレッド間だとshared_ptrというやつかな? とか思いながら読みました。

実際はゲームはリアルタイム性を要求されるのでTronみたいなマルチタスク?

みたいなことを想像したり


ボナメソの学習の並列化だと、


例えばshort wという評価要素があって、学習時はfloat wwという配列に対してやるとして

short eval()
{
 score += w[x];
}

short inc_param(float f)
{
 ww[x]+=f;
}

学習するときはwwを更新していって、集計が終わったらwwの値の正負でwを更新する。

並列化する場合、wwをCPUの数だけ持てば、互いに非同期にwwを更新できる

カプコンのフレームワークで言えば、CPU間が並列動作できる。

で最終的にCPU別のwwをwに足しこんでやって、wの更新は1CPUで行う。


仮にwwが超巨大なときはCPUの数だけ確保できないので、一つのwwを複数のCPUが更新する仕組みでもいける

ただし、そのときはww[x]+=fの部分は前後をlockする必要がある

書いていたら自明な気もしますけど。

あと、カプコンのやつを見ていて面白いのは依存関係の無い処理をキューに入れるんですね。

http://game.watch.impress.co.jp/docs/20070131/3dlp.htm

興味深いのはXBOX360のメモリが遅いけど、アクセスしている間にhyperThreadingをやることで

レイテンシを隠蔽して全体で遅くならないことですね

ゲーム機は安いので、ハードを安く押さえて性能が出るのは良いことと思います

一方でCorei7みたいな高速なCPUだとHTのメリットはまた別なのかなと

Bona4のソースを読むべきかどうか

http://d.hatena.ne.jp/streakeagle/20090205/1233847243

まず、自分がどうするかですが、ライブラリは使いませんし、ソースも当分は読まないつもりです*1。
*1:読んでる時間が無いとも言う

気持ち的に読まずに……というのは判るんですが、読んでおいても損は無いと思うけど

このへんは個人的な信条の問題だし、モチベーションにもからむので簡単な話ではないですね


ただ、米国は戦時中、ゼロ戦を解体して研究してるし、日本も欧米の技術を真似て前進してるわけだし

真似なくても車輪の再発見を防ぐ意味もあるし

(艦船のレーダーなんか技術的には大事だって話が判ってるのに、日本軍は取り入れずに夜戦は肉眼を重視したとか

一方で、パイロットの鉄板を薄くして軽量化は学ぶところがあるかもしれない)

そんな大層な話ではないかもしれないけど(^^;


別にゴーイングマイウェイはいいと思いますが、敵を知り、己を知って、進むのもいいのではないかと。

昔、岐阜チャレンジの会場で加藤(gg)さんが

他国が流行の流行廃りを激しく追っている中

ヨーロッパはこつこつとPrologの研究を進めていたみたいな姿勢の違いを話されていました

↑埋もれていたモンテカルロ法を復活させたのはヨーロッパ人と考えるとかっこよくないですか?

 この話はUCT以前の話です(まだ自分もCOM将棋を作ってない頃)

50局で学習しようシリーズ4.1

100ステップ 50局 合計5327手 J=11714.976563 J'=2.199170
0時間33分28秒
歩   香   桂   銀   金   角   飛    と   杏   圭   全   馬    龍
 100, 379, 346, 498, 765, 653, 798, 319, 325, 439, 633, 972,1123,
 2.2/2623| 2.3/422| 2.4/400| 1.9/718|

特徴の処理にバグを見つけたのでとったらさらに下がった。J'が2を切る日も近い。


あと歩兵を100のまま変動させないようにしてみた。

桂馬より香車の価値の方が大きい。このへんはやるたびに変わる。ま、50局だし


保木さんのPDFでは、駒割の学習に関しては

拘束条件は駒割の和を一定に保つと書かれていた。

なぜ全体を一定に保つ必要があるのか? と誰かが疑問を書かれていた記憶がありますが、

これは特定の駒が不当に大きくなりすぎることでの別解を防ぐことになるんだろうか?


あと、駒割に関しては、学習の対象であるプロ棋士の棋譜においては

飛車を取れる局面は取ると不利になる局面だったりすることが多いため、

棋譜で飛車を取った手は仕方なく取らされた場合が多く、

なかなか大駒の価値を正しく学習できていないという話もあるらしい。

ボナメソの問題点の一つと思う

深い読みが伴わないと大駒のやり取りの真意は判らないということだろうか

2009-02-05

50局で学習しようシリーズ

100ステップ 50局 合計5327手 J=13678.582031 J'=2.567783
0時間33分17秒
歩   香   桂   銀   金   角   飛  王   と   杏   圭   全  金  馬    龍
  71, 334, 365, 528, 757, 683, 782,   0, 342, 281, 478, 618,   0, 965,1116,
 2.7/2623| 2.8/422| 2.9/400| 2.2/718|

駒割の学習をして見ました。ペナルティはなし。J'はやや下がりました

はじめ歩兵が120ぐらいまで増えましたが

最終的に71まで落ちてしまった。

ま、50局なので参考になりませんが……

初期値
  歩   香   桂   銀   金   角   飛 王   と   杏   圭   全 金   馬   龍
 100, 369, 394, 521, 650, 752, 860, 0, 398, 436, 450, 538, 0, 940,1176
↓
100ステップ後
  歩   香   桂   銀   金   角   飛 王   と   杏   圭   全 金   馬   龍
  71, 334, 365, 528, 757, 683, 782, 0, 342, 281, 478, 618, 0, 965,1116,

ハルヒ2期はあるのか?

http://mew5.com/nikki.html

■2009-02-04 - MOON PHASE 雑記
>伊藤敦Pは、「喰霊-零-」に掛かりっきりでハルヒを止めてたと言ってたらしいけど、
>「空を見上げる少女の瞳に映る世界」か「RIDEBACK-ライドバック-」の後番になるんだろうか?
>あと、「けいおん!」のスタッフが気になるところ。京アニが2ライン動いてるのか、それとも京アニじゃないのか…?

■J-CASTニュース _ 「涼宮ハルヒ」新作放映! 今度こそ本当なのか
■今日もやられやく 4月放映開始と言われていた『涼宮ハルヒ』は再放送でした
>角川側では今のところ発表は一切していないという。そして、4月からの放送については、
>「再放送です。『テレ玉』などのU局を中心に放送します」
GIGAZINE「2期は4月から」って言い切ってるのに。

ハルヒは録画してない(というか全部見てない)ので

ハイビジョン再放送ありがたい。

おそらく、GIGAZINE勘違いでは?

CLANNAD AFTER STORYが終わったら、次はけいおん?

けいおんみたいな、CD販売が見込める作品アニメ化はおいしい。


マクロスF映画の話題が載ってる角川の雑誌の表紙に、次はクランクランが主役か?

と書いてあったけど、なんか露骨に商売優先な気がする。歌姫を増やせばCDが売れる

#角川は出版は好調だけど、映像部門は低調らしい

http://animeanime.jp/biz/archives/2009/01/3q_10.html

4月から「BS―TBS」に…BSデジタル局「BS―i」

http://anchorage.2ch.net/test/read.cgi/bizplus/1233745576/-100

BS-iが局名変更らしい。他者はBS朝日BS日テレBSフジと判りやすいのが

たしかに判りにくかった。

しかし、BS-TBSはいかがなものか? 衛星放送-東京放送の略だが。

ここは変形して、TBS-BS→T-BS^2→T-BS2

とかどうだろうか?

TBSが黙ってない?(^^;


あと、テレビ東京衛星局はBS-J。どうするんだろう?

BSテレビ東京にすればいいかも。


#昼休み帰宅して更新健康&昼飯代節約になります

50局で学習しようシリーズ

100ステップ 50局 合計5327手 J=13962.627930 J'=2.621105
40局 J=10964.148438 J'=2.633713 0時間33分17秒
 2.6/2623| 2.6/422| 3.0/400| 2.4/718|
↑進行度別のJ'

特徴を追加。さらに下がった。ついにgps_lのJ'を超えたw(おい

そろそろ会社に行かねば

今夜は駒割の学習に挑戦してみよう予定は未定乗数法ラグランジュポイントはサイド7

to be continued ...

PCCPRMのVRのDVD-Rが見れなかった

ダビング10なので、試しにDVD-Rに変換ダビングでVR形式でダビングしてみた

ファイナライズしてHPノートPCに入れてみたところ

HP QuickPlayはCPRMに対応していません」のメッセージ orz


検索するとPowerDVD Ultraは、CPRMのVRどころかAVCRECにも対応していて、

かなりいいのですが、1万円もする!

http://shop.vector.co.jp/service/catalogue/powerdvd/


これだったら、AVCREC対応付属再生ソフト付で2万円ぐらいのBluRayドライブを探して買った方が得そう……

そろそろBluRayドライブ買うか……

Panasonic製を買っておいた方があとあと安心かもしれない。

使いまわせるように外付けにするかな?

50局で学習しようシリーズ

寝てしまっていた

100ステップ 50局 合計5327手 J=18550.644531 J'=3.482381
0時間32分45秒
 3.2/2623| 3.6/422| 4.2/400| 4.3/718|

終盤向けの特徴を追加して再度50局を100回転

お、下がった下がった

バグが無いか確認の意味で50局で学習

53ステップ 50局 合計5327手 J=26626.322266 J'=4.998371
学習評価を書き込みました。
  core#0 search c:\misaki2\study\40000-41999.csa
40局 J=20432.046875 J'=4.908010 0時間0分43秒
 4.0/2623| 4.8/422| 6.1/400| 7.6/718|
  core#0 search stop
core#0 idling...

50局だとさすがにJ'下がりますね。まだgps_lより悪いですが(^^;

1stepで18秒ぐらいなので、がんがん回りますよw

102ステップ 50局 合計5327手 J=25560.291016 J'=4.798252
 4.1/2623| 4.3/422| 5.6/400| 6.6/718|

100回まわってもJ'=4.79

もう限界っぽい。なんか終盤が全然下がってないorz

壱岐の都万さんbona4改造中

CSA将棋の作者でもある都万さんがbona4のことを書かれていた

http://8318.teacup.com/tsuma/bbs

らはカネを払ったものの、ちょっとBonanzaの強さにビビッていて、どうなるかは未定です。
と言うのは、あまりにも強すぎて、多分、現状でトッププロにも勝つ強さがあります。
だから、隠岐を治す気力が消えうせて、Bonanzaのソースコードを取り込んだ新しいBonanzaを作っているところです。

みさきは、マイブームに水鉄砲攻撃を計画してるようですね。(^_^)
らは、そういう攻撃は考えてません。

にゃはは。都万さんは世界一周旅行に行かれたようなので

マーライオンはその時の写真でしょうか。

皆、話題にしないけど棚瀬さんはなぜ欠場?

運営関係者の方はご存知なのかな?

さすがにbona4が強いから欠場ってことではないと思いますが(^^;

仕事が忙しくなったのかなあ?

なんだかんだでまだ棚瀬将棋は優勝してないのに(実質全勝とは言え)


今年の選手権は、GPS激指とbona4、しゅうそ辺りの争い?

ここにKCCが絡むかどうか?

でも、一番、将棋界に脅威なのは山下さんがボナメソを始めた時かもしれない。

2009-02-04

NAS上に学習結果を書き出すのは注意

if ( fwrite( w2, sizeof(short), size, fp ) != size )
{
	printf("write error\n");
}

みたいな感じで学習要素をファイルに書き出していたら

なぜかエラーになる。

sizeof(w2)がでかすぎるのか? と思ったけど、size_tはunsigned intなので32ビットあるはず。


どうしても原因がわからずはまっていたら

試しにNASじゃなくて、ローカルHDDに書き込んだらエラーが無くなった orz

なんかうちの環境だと9.6MBぐらいのとこに上限があるらしい。

buffaloNASだけかもしれないけど……。

gps_lのレーティングは順調に右肩上がり

http://wdoor.c.u-tokyo.ac.jp/shogi/logs/LATEST/rating/g/gps_l+1dadf572b9a37a29d77f3eb2f812f6f4-large.png

順調に上がり続けてますね。

ちょっと前にissei_yさんが金子さんにヒアリングされたときに

J'=2.9でしたっけ?

J'ってどこまで下がる可能性があるんだろう? 理論上は1までは行くんだろうけど。


棋譜が1万局だと平均120手で、1200000手。

兄弟手が平均100あるとすると、120,000,000手(=1億2千万手)が学習対象

これらの入力を受けて、J'を1に保つための最適制御ができれば、

未知の入力に対してもJ'を1に保てる可能性が高い。みたいな感じ。


浅い探索でプロ棋士棋譜の大多数を近似できるとなれば、

深く読めば、さらに良い手を見つけられる(はず)



コンピュータ将棋は複数人で開発の分担はたいへんと思うけど、

同じエンジンで、特徴を各自が考えて、それぞれ勝手に足して行って、時々マージする

ってやり方なら、うまくできそう。

社会】 「834092×0.124232」を5秒で解く小3女児

http://mamono.2ch.net/test/read.cgi/newsplus/1233741616/-100

岐阜市中鶉の岐阜聖徳学園大付属小3年の赤堀愛果さん(9)が、全国珠算教育連盟の 
 試験で最高位の珠算10段に合格した。正式通知が1月末に届いた。9歳と4カ月の取得は、 
 小学生としては県内初。全国の最年少記録(9歳3カ月)に続く史上2番目の記録になる。 
 コツは「練習量」と話す愛果さん。あこがれの「名人」を追って文字通りの日本一になるのが夢だ。 

すげー。

そろばんをやっていると暗算が上手くなるというけど、

これって、頭の中にそろばんを仮想的に作って、そろばんエミュレーションしてるんじゃないかな。

ビジュアルとしてのそろばんの珠の配置を記憶できるようになればビジュアル的に計算できる


そろばんのチャンク?


将棋のチャンクにも通じるものがあると思う。

プロ棋士のチャンクはもはや映像ではない何かに化けているらしいけど(将棋クオリア?)


サヴァン症候群の人の暗算力はまた違うと思う。

訓練で頭の中にそろばんを作って暗算するのではなく

おそらく生まれつきにそろばんのようなものが頭にあり、意識せずに計算結果が出てくるのだろう。


もし、サヴァン症候群の人が、将棋を覚えたらどうなるだろう?

チェスなら事例があるかもしれないと思ったけど、検索しても見つからなかった。

単なる記憶自明的な計算はできても、

因果関係バックトラックを含む探索はできないのかもしれない。


http://rakuto.blogspot.com/2007/07/blog-post_14.html

直感や意識など高次の抽象的な感覚がイノベーションにより登場した入力デバイスから
計算機にINPUTできるようになれば、データ処理は計算機が行い人は感覚的な
高次の概念を左脳(計算機)に入力する事に徹する事になる。
人間はそれを意識する必要も無いし、人類の進化という長い時間軸で考えるなら
コンピューターの発展はホモサピエンスの左脳を萎縮させるのではないだろうか?

2009-02-03

FV_SCALE=32

評価関数で駒割はmakemoveですでにMATERIALとして差分計算されていますが

それ以外の位置評価は

score /= FV_SCALE;

と割られている

32なのでけっこうでかい。


他にも学習時にinc_paramでも変微分計算値であるdincを

f = (float)( dinc / (double)FV_SCALE );

と割っている

駒の学習自体は

  pd->pawn       += dinc * (double)anpiece[pawn];

なので割ってない。


これは、駒損を避けるためかなあ。

ペナルティもかけてるわけで、かなり対策されている感じ

でも、王の周囲の敵駒の評価も/32されるのは少ない(というかもったいな)感じがする


http://d.hatena.ne.jp/ak11/20090129#p1

ここを読んで考えるに、これは単に少数の精度でやりたいけど

少数だと遅いので便宜上32倍した整数を足しこんで、

全体で32で割ってるだけ?

scaleだし。

ま、でも、駒割と位置評価の有効数字を比較した場合、どっちも同じ意味かもしれない。よくわからないけど

王の周囲の敵駒の位置評価がおかしい

高速化以前は王の周囲の敵駒は学習するほどにマイナスが大きくなっていい感じの位置評価だったんですが

高速化後はなんだかおかしい

よく原因がわからん

PVの中身とか静止探索の内容とか、基礎的なところを地道に確認しているところ。

じれったいが、やみくもにやっても意味が無い。

位置評価用のインデックスは領域を重ねている

http://anchorage.2ch.net/test/read.cgi/bgame/1233229938/

24 :名無し名人:2009/01/30(金) 09:55:53 ID:qCKCzvnn
short kkp[nsquare][nsquare][kkp_end]; には双方の玉の位置と、 
盤上の各駒、持ち駒の各駒の評価値が入っている 

enum { f_hand_pawn = 0, 
.... 
kkp_hand_pawn = 0, 
kkp_hand_lance = 19, 
kkp_hand_knight = 24, 
kkp_hand_silver = 29, 
kkp_hand_gold = 34, 
kkp_hand_bishop = 39, 
kkp_hand_rook = 42, 
kkp_hand_end = 45, 
kkp_pawn = 36, 
kkp_lance = 108, 
kkp_knight = 171, 
kkp_silver = 252, 
kkp_gold = 333, 
kkp_bishop = 414, 
kkp_horse = 495, 
kkp_rook = 576, 
kkp_dragon = 657, 
kkp_end = 738 }; 
28 :名無し名人:2009/01/30(金) 11:39:42 ID:qCKCzvnn
>>24 のコーディングはあまりよろしくないな。 
以下の様に書いた方が分かりやすい 

enum { f_hand_pawn = 0, 
.... 
kkp_hand_pawn = 0, 
kkp_hand_lance = kkp_hand_pawn + 18 + 1, 
kkp_hand_knight = kkp_hand_lance + 4 + 1, 
kkp_hand_silver = kkp_hand_knight + 4 + 1, 
kkp_hand_gold = kkp_hand_silver + 4 + 1, 
kkp_hand_bishop = kkp_hand_gold + 4 + 1, 
kkp_hand_rook = kkp_hand_bishop + 2 + 1, 
kkp_hand_end = kkp_hand_rook + 2 + 1, 

kkp_pawn = kkp_hand_end + 11, 
kkp_lance = kkp_pawn + 8*9, 
kkp_knight = kkp_lance + 7*9, 
kkp_silver = kkp_knight + 7*9, 
kkp_gold = kkp_silver + 9*9, 
kkp_bishop = kkp_gold + 9*9, 
kkp_horse = kkp_bishop + 9*9, 
kkp_rook = kkp_horse + 9*9, 
kkp_dragon = kkp_rook + 9*9, 
kkp_end = kkp_dragon + 9*9 }; 
29 :名無し名人:2009/01/30(金) 11:41:55 ID:qCKCzvnn
>>28 
持ち駒の部分は、最大持ち駒数+1( for 持ち駒無し) 

盤上の駒の部分は、先手の歩は1段目には存在し得ない、 
先手の桂香は1段目、2段目には存在しない 
(香車は2段目に行ったら必ず成ることにしているため) 
ので、歩、香、桂馬の部分は + 9*9 とはなっていない 

はじめ28は領域が重なっていることに気づかずに書いてるのかと思ったら

同じIDでしたね。たしかに28のように書いたほうが判りやすい

多少せこいと思いながらも掛け算なんで全体の削減量は多い

保木さん頭イイ


さらに飛車と角が敵陣では必ず成るというのを考慮すると、

飛車と角の位置インデックス

9x3づつ重ねられるかな?←打ったときがあるので無理

2009-02-01

鉄砲ネットワーク攻撃

http://chocobo.yasuda-u.ac.jp/~nisimura/mymove/index.cgi?no=1622

さて、『完璧な運営が出来るか』という話になると、今でもその気になれば、「水鉄砲」が使えたりとかw、
色々と穴はあります。他にも、通信プロトコルがあぁなので、もにょもにょするとあーいうことが出来るとか、
色々と気になる点がwwww

鉄砲キタ━━━━(゚∀゚)━━━━ッ!!?

http://d.hatena.ne.jp/mkomiya/20080718/1216314166


GG加藤さんの不動碁がクラスターの通信にブロードキャストをつかってるので

http://www.geocities.jp/hideki_katoh/

迷惑をかけないためにルーターを使ってネットワークと分離しているということは、

逆に言うと、

f:id:mkomiya:20090201113330j:image

bona4の定跡

bona4の定跡はかなり大きくなってるんですが、

ボナメソ学習時に、定跡も自分で作ってるようですね。

bonaスレの様子では、bonaが苦手な戦型を避ける定跡になってるらしく、

どういう仕組みかソースをちゃんと読んでないのでよく解りませんが、

画期的だと思います。

今までは、過去棋士が選択した回数で確率的に選択するぐらいしか技術が無かったし。

将棋米長さんら電子申告 納税システムPR

http://www.kobe-np.co.jp/knews/0001675828.shtml

ひとしきり感心していた米長さんだが、
研修後には「最近は棋士よりコンピューターの将棋ソフトのほうが強いことも。そういう時代なんですねえ」としみじみひと言。

えー?

e-taxシステムに対するお世辞ですよね?(^^;

Bonanzaオリジナリティを加える問題の議論が盛ん

http://d.hatena.ne.jp/yos92/20090131/1233404368

http://chocobo.yasuda-u.ac.jp/~nisimura/mymove/index.cgi?no=1622

香山さん

現時点の個人的な見解では、ちょっとだけ手を加えた程度ではアウト、
ただし、その場合でも性能に大きな変化が見られれば、あるいは新規性のあるアイディアであれば可

うさ親さんは

やねさんとこでもコメントされてますが、追加された概念の質で判断される感じですね

たった1行であっても、その1行を追加しただけでレーティング換算で400点違うとか、
そういう劇的な変化があるのならば、オリジナリティがあると判断されるかと思います。

結局は、CSAのライブラリ委員など審判団による恣意的な判断しかないと思います。

diffで変更のあった行数をカウントして機械的に判断するのは無理ですよね

変数を書きかえるなどで、いくらでも物理的な改ざん自動的に出来る)

でも、強くなったから「オリジナリティあり」弱くなったら「オリジナリティなし」ってのも変な話です。

強いオリジナリティが、オリジナリティ


奈良さん

Bonanza ライブラリをれさぴょん風に使い易くしてくれない
かなー、と思っている人は(これから大会に出ようとしている
人の中にも)多いかも(^_^

 ライブラリですから、本来、手生成とかを開発者の代行してくれるものかなと思います。

 れさぴょんの場合は、完成品とはいえ、うさ親さんがわざと処理を抜いて、

 開発者自分で手を入れる余地を残しているので、練習用スターターキットの感じがありますね。


遠見さん

良い成績を残したとしても「こいつほんとに自分でなんかしたのか?」みたいな目で見られることは確実だし。

結局は、使う人の己との葛藤ですね(^^;



自分だったら、使わない。というか使いたくない。使っても面白くないから。

でも、bonaライブラリソフトに負けたら悔しいだろうけど、

(それは相手に対してじゃなくて、自分も使っておけばという後悔の気持ちになるかな)


西村さん

そもそもコンピュータ将棋ソフトの一部ではなく全部なのに、ライブラリと言えるんでしょうかね。 

 れさぴょんも完成品ですけど、弱いから問題になってなかったんでしょうね(計算された弱さ)

 CSAがrejectしても、保木さんが個人的に公開することもできますよね。

 うさぴょんもそうですし。


 bona4に機能を追加するのはたやすいと思う

 そもそも評価関数が、駒割と位置評価しかないし

 大駒の移動可能数や脅威を入れてやればいい。

 もともとbonaは終盤が弱いと言われているように、利き情報を完全に持ってないというbitboardによる弱点がある

 ならば、bona4に差分利きを入れて、脅威をちゃんと盛り込む改良だってできる(速度は落ちるにせよ)

 あと、bona4の場合、弱くなる機能を追加しても、二次予選上位には食い込む強さがある。


 だけど、このような追加は、本当にオリジナリティだろうか? nullMoveにしてもfutiliyにしても、

 オリジナリティはchessにある。

 結局、概念は同じでも、自分で苦労してコーディングしてパラメーターをいじるのが楽しいのだし、

 それでいいのかもしれない。

 ラジコンレースだって、タイヤは買ってくるわけで

 (タイヤウォーマーで暖めておいて摩擦を増やすなどの工夫や努力個性が出てくる)

なにもできんかった orz

しまった

土曜日は結局なにもプログラムを書かなかった。

結局、アニメを見たり、アニメを見たり、ドラマを見たり、

回転寿司を食べに行ったり、西友フライパンを買ったりで、

終わってしまった orz


もう、ファミレスノートPC持って行くしかないかもしれん。

最後は自分との戦いだw


しかし、最近フライパンは安いよ

フッ素加工の26cmの深いやつで399円とかで売ってるのでたまげた。


あと土曜日選手権の参加費は間違いなく送金完了。

これは土曜の成果。