2007年03月

炭色地帯2007年03月の日記。

17日

超強い仮想対戦キャラを作るには

2007/03/17-11:40

力量が不足し過ぎて全く実行できないので、あくまで妄想。まずある種の対戦ゲームにおいて、コンピュータの強みは演算速度と正確さであり、人間の強みは戦闘全体の組み立ての上手さである。そして、後者はニューラルネットで学習させればコンピュータ上で再現可能である。しかしニューラルネットが不完全な人間の操作を不完全にコピーしているからには、それを使った対戦プログラムには柔軟性と不完全性を伴う。そこで、ニューラルネットが導いた"その瞬間"の戦略を、柔軟性はないが正確無比の通常部分のプログラムによってより完璧な運動曲線に補正してしまえば、事実上生身の人間には絶対に勝てない仮想対戦キャラを作れるのではないか。

ニューラルネット部分を人間に、通常のプログラム部分をコンピュータに例えれば、人間が弾き出した合ってはいるが誤差の大きな値をコンピュータを使って正確な値に修正した上で利用するという手順に相当する。現在のニューラルネットを使ったコンピュータ対戦プログラムはあくまで人間の行動を手本にしているだけであって、人間以上の強さは持ちえない。人間の行動が対戦ゲームの戦術組み立てにおいて"最強"ならば、人間が"最弱"である正確な軌道予測を対戦プログラムに組み込んだらエラいことになるのではないか、という、まぁ最初に述べた通りの妄想。いつか本気で考察してみたい。

脱線するが、こうやって脳に可能なこと(不完全だが的確な答えを導く)とコンピュータに可能なこと(高速演算と絶対記憶)を明確に区分すると、少し昔に流行った妄想である頭に入力端子をつけてHDDにデータを記録するが如く流し込まれた情報を記憶するのは、脳の構造上不可能か、そうでなくともかなり不向きであると言える。本気で頭に入力端子をつけてデータを記憶したいなら、脳にフラッシュメモリーでも埋め込んだほうが早い。

悲劇(Reversi)

2007/03/17-11:40

AIが仮想上の碁盤であるGameFieldを自由に操作するには、ゲーム進行と混ざったGameField操作関数が邪魔になるようだ。というわけで、現在HTMLを操作する処理系と,GameFieldを操作する処理系と,Game進行を操作する処理系の3つに分割中。処理内容はこれまで作った関数を流用すれば足りるが、システム全体の流れを変更せざるをえない。最終的にはHTML操作,GameField操作,Game操作,AI操作の4つのパーツから構成されるだろう。作りたてのシステム全体を次の日にバラすって、悲劇。

15日

Reversi

2007/03/15-21:50

コードを書き換えたReversiを公開。といっても、対戦機能がないからトップページの更新には載せていない。

13日

ミニマックス法

2007/03/13-21:45

解説サイトを見ると面白くなくなるので、自分で考えたい。

まず、自分と相手が取りうる向こう数ターンを以下の簡単なモデルに示す。赤カッコが相手の手、青カッコが自分の手、カッコ内の数値は取れる"敵"のコマの数。

リバーシの取りうる手の樹形図

/ 1 2 3 4 5 6 7 8
総数(自分) +03 +08 +04 +03 +08 +07 +14 +06
総数(相手) +08 +08 +03 +03 +04 +04 +07 +07
差分 -05 +00 +01 +00 +04 +03 +07 -01

希望としては、差分が一番高い数値となる7番目を選びたい。しかし、ここでの選択権は相手にもあり、相手もこの結果を予測してくるなら、自分が選べるのは5番目か6番目になる。計算手法としては、行動選択権が自分にある時は、差分が最も大きい選択を、相手の場合差分が最も小さい選択をさせればよい。これを樹形図全体でシミュレートし、最初の2択から枝分かれしている各4つから最も可能性が高いものを選択。この2つのうち値が大きいほうを選択すればよい。

関数の組み方としては、取り敢えず再帰関数。その時点での差分の数値を返す関数を入れ子構造にして、親ノードは子ノードから送られてくる差分の数値のうち、自分のターンなら最大値、相手のターンなら最小値をreturnさせるようにすれば、最終的に最上位ノードに送られてくる差分データのうち、最も数値の大きい選択をすればいい、ということになる。尚、最深部のノードは引き継いだ差分と操作すべき手を操作した後、考えうる次の手を計算せずに計算した差分をそのまま上位ノードに送り返せばいい。

まー、適当に自力で考えてみたが、大体これでミニマックス法は合ってるよーだ。

雑記(科学)

2007/03/13-21:45

脳科学 + 重力物理学 = オカルト、という方程式。一重に量子力学の非日常的振る舞いを脳に適用した所以かもしれないし、一重に脳の作動原理が全く未解明だからかもしれない。概してオカルトとは現在の科学知識では説明不可能な現象を指すから、外から見れば後者が適当だろう。まぁ、内から見たこの方程式というのは・・・。

波動関数の収縮の具体的な発生要因を考えていくと中々面白い。ようは物理的には"存在する"のに観測された時になって初めて波動関数が収縮するが、具体的に観測された瞬間というのは何時を指すのか。例えば、シュレーディンガーの猫の代わりに人間を用いた場合、箱の中の人間には現実はただ一つしか存在しないにも関わらず、箱の中が見えない外の人間には箱の中の人間は波動関数として存在する。この考え方を突き詰めれば、"観測できない"全現象は波動関数に展開されているとも考えることができる。そして、結局観測をするのは人間であるから、観測者の意識として現実が投影されるとき、初めて世界は古典物理学として記述されることになる。つまり、世界は波動状態であり、脳の観測によってただ一つの現実が選択される。ただし、これは脳が特別な物理学的機能を備えているかということを証明するものではない。問題となるのは意識だ。ここに量子力学と大脳生理学の融合が見出せてしまうから、面白い。

まぁ、後半の解釈は基本的に現代のオカルト思想に侵食されてしまっているだけと取ることもできるが。

overflowで気づいたが

2007/03/13-21:45

多分エラーを計算に入れたCSSのテクニックとしては既に確立されているだろう。_overflowとするとブラウザによって無効化が解除されてしまうということは、逆にいえばを構文エラーを自動修正できるブラウザだけに実行させることが可能だと言う事だ。個人的にはキツネブラウザのデバッグウインドウにエラー通知が出るのは出来うる限り避けたいところだが、技巧を突き詰めるなら中々面白い芸当が出来そうだ、邪道ではあるが。

11日

雑記

2007/03/11-01:30

今まで転載した中では最大規模となるレベル低常識が潰れた後に立てられた新設サイトの技術向上を楽しみに閲覧中。技術に重きを置いたサイト設計というのは個人的に面白い。

本人がここを見ているか否かは全く当てにしていないけど、アンダーバーで無効化したoverflowがIEでは自動修正され有効なり、ページスクロールが効かなくなっていると言ってみる。私は素直なエンジンが好きだが現実にはブラウザは賢すぎるので、プロパティを一時無効化する際は_overflow:hiddenではなく/*overflow:hidden*/とすべきだろう。

08日

XMLをHTMLに変換する際の問題点

2007/03/09-04:10

というか、多分自分の使っているXalan固有の問題なのだろう。属性中の&は、XMLモードではこのまま変換後のXHTMLに移されるが、HTMLモードで変換するとエスケープが解けて&になってしまう。結果として、HTMLのエラーを検出してしまうのが今の状態。Xalanを改造するなり、設定をいじくるなりして改善方法を模索中。

どーでもいいが、MSXSLTは惨劇だった。

ニューラルネットワーク

2007/03/09-04:10

誤差逆伝播法なんて書かれても、直感理解に乏しいので全く手を出していなかったが、最近読んだ脳科学の本にニューラルネットワークの原型的な考え方が記載されていたので、それに基づいてJSで簡単なコードを書き出しておこう。make_Nnetで任意のニューロンの個数を持ったニューラルネットを作成。input_Nnetには生成したニューロンの個数と長さの等しい1次配列を突っ込んで、学習させる。output_Nnetには、ニューラルネットから取り出したいデータを配列で突っ込む。inputは1か-1の数字で、outputは1か0か-1の数字で。

var n_data;

make_Nnet = function( size )
{
  n_data = new Array( size );
  var i,j;
  for( i=0 ; i<size ; i++ )
  {
    n_data[i] = new Array( size );
    for( j=0 ; j<size ; j++ )
      n_data[i][j] = 0;
  }
}

input_Nnet = function( ary )
{
  var i,j,k;
  var asize = n_data.length;
  for( i=0 ; i<asize ; i++ )
    for( j=0 ; j<asize ; j++ )
    {
      k = ary[i] + ary[j];
      if( k==2 )n_data[i][j]++;
      else n_data[i][j]--;
    }
}

output_Nnet = function( ary )
{
  var i,j,k;
  var asize = n_data.length;
  var output = new Array( asize );
  for( i=0 ; i<asize ; i++ )
  {
    output[i] = 0;
    for( j=0 ; j<asize ; j++ )
      output[i] += n_data[i][j] * ary[j];
    if( output[i]<0 )output[i] = -1;
    else if( output[i]>0 )output[i] =1;
  }
  return output;
}


送信フォーム

2007/03/09-04:10

面接官がやるような答えても何ら有益だと思われない質問が激増中。自分の意見も交えて書いているものなら対応する気があるものの、本当に真剣に質問しているのかさえ疑わしいテンプレートのような単純質問をバンバン送りつけられても、こっちの脳は1個で睡眠時間を削っているわけだから、幾ら何でも対応しきれない。ので、その辺自主規制して欲しいところ。以前は"常識の範囲内"で通用していたものの、最近そういうのが非常に多いから注意書きを強硬なものにせざるをえないし、1つにかけられる時間も限られているので、返事も安っぽくならざるをえない。尤も、興味関心のない質問は安っぽい答えを返すことしかできないが。

まぁ線引きが微妙なので自主規制してもらうか投稿を一時中止するしかないが、取り敢えず目安として、答えてもらっても大したメリットがないと思うような投稿は自主規制して欲しい。

06日

雑記

2007/03/06-23:50

意図的に内容を読み違えようが、名前を変えようが、結果論として100%反論が来ることを予測した上で区切りをつけたのは、どうやら正解。

2次元系恋愛小説から、現代科学と宗教の位置付けに関する考え方を得るのは珍しい。丁度、全宗教の中でもより学術的な仏教の勉強でもしようと思っていたところだった。ただ思想系の本は疲労の溜まり方が普通じゃないのが問題。向こう10年は頭を酷使するだろうし、実際疲れているからライトノベルに逃げている最近。

作ったはいいけど実際弱すぎる中途半端なリバーシの戦闘プログラムを、簡素且つ正攻法のミニマックス方式に切り替えるべく、美しさを排除してでも一番速い記述方式を考案中。ただし、戦略が画一的になってしまって面白くない、という点もある。まぁ、どんな方式にしろ、ようはどうやって選択肢に優劣をつけるべきか、という点が問題になる。

04日

転載

2007/03/04-10:45

転載元が活動停止したので、閉鎖後の転載としてアップロード。トップページに記載する更新には該当しないとしておく。愚作の箱>転載リソースより、閲覧可能。有用な情報が入っているか否かについては、あまり重視していなかったりする。

01日

目的

2007/03/02-01:35

広島市の平和記念資料館が見学者に感想を書いてもらうために設置している「対話ノート」に、悪質な落書きが見つかったことが1日、分かった。ハングルや中国語の感想に対して、韓国人や中国人らを差別する言葉が書かれていたといい、同館はノートを撤去した。

ノートは1970年に設置されて以来1000冊目に当たり、撤去は初めてという。

同館によると、4カ所に韓国人らを直接、やゆする差別用語が書かれていた。このほか、「しょせん君らは僕らの植民地です」など、約12カ所に差別的な文言が記されていた。筆跡から同一人物によるものとみられる。

後先考えない単なるバカの仕業と断定してしまうのが一番すっきりする。しかし、これによって恩恵を受けるのはむしろ左翼側だったりするから、ややこしい。特にこの程度の落書きをニュースとしてアピールする辺り、信用できるかどうかは微妙なところだ。中国や韓国では大々的に反日デモをやってくれちゃうから、やってるほうの勢力や目的は実に分かりやすいものの、特に左翼が陰湿な日本では同じ考え方では解決しづらい。まぁ、下らない推測はなしにして、前者であることを祈るが。

後、だからといって撤去するのはどうかと思う。バカの書き込みなら尚更、この程度のことで撤去するのは宜しくないし、これを晒した上でこのような愚かな書き込みを戒めるべきだろう。それに世の中に素直になれない私としては、一通り騒いだ後に証拠隠滅しているように見えて仕方がないのだが、筆跡(2)とか。

君が代

2007/03/02-01:35

法的に言えば公務員にスト起こす権利はないわけで。まぁここではそんな意味のない法律では終わらせないでおこう。以下、裁判自体とは関係なく、この問題全般に対する感想。

単純に考えて、君が代を強制するのも、君が代を歌わせないのも、どちらも彼らの言う"思想・良心の自由"を侵害していることに変わりない。あえて優劣をつけるのであれば、学習指導要領と一教師の個人思想という違いにおいて、学習指導要領に従うべきだろう。何故なら、こういう指導要領によって教えられる思想・良心と他の思想・良心が異なる点は数多く存在する。それらについて一々正誤の問題を議論してしまうと、そもそも"ある思想を教えざるを得ない"教育というものは成り立たない。教師は自分の思想の為ではなく、あくまで指導要領を代行する者として児童・生徒に君が代を歌わせている。従ってこの段階において、教師が自分の思想を持ち出し、結果的に児童・生徒の思想を強制するのは間違いだ。指導要領の思想を強制しているとしても、思想を教えなければ教育もくそもない。

生徒だった人間から言わせてもらうと、君が代を歌わせるほうも、歌わせないほうも、所詮同レベルの"思想の強制"に過ぎない。思想・良心の自由を尊重するなら、そんな表面的な正誤ではなく、児童・生徒に理解力と判断力を与え、将来自分たち自身の考えで自分の思想を持つ又は選択するのが、真の思想・良心の自由だろう。従って、この問題は指摘そのものが間違っている。教員自身の思想を持ち出すのは論外として、児童・生徒に君が代を強制することは一方的な思想・信念を教え込むことになるから止めるべきだ、ではなく、今のままでは児童・生徒が思想・信念を一方的に教え込まれるだけなので、児童・生徒自らが判断を下せるようになるための教育を施すべきだ、と言うべきだろう。

まぁ、あえて"そこ"を突くこと自体、こういう行動を起こすほうもある一定の目的を持ってやってそうだ。

ページ情報

作成日時
2007/03/02
最終更新日時
2007/03/17
HTML4.01版
07_03th.html
XHTML1.1版
07_03th.xhtml
XML原本
07_03th.xml