犀角(Diceros Horn) 2005 05

とくながの「書き散らかし」です

ここは研究・調査・開発などの記録がメインのページです。 日常の雑事、読書記録は はてなダイアリー の方に書いています。よろしければそちらもどうぞ。

Tue, 24 May 2005

ニューラルネット

今さらながら、だが、ニューラルネットを実装しておこうと思い、 多層パーセプトロンと誤差逆伝播学習法を調べてみた。 産技研の栗田先生の「パターン認識とニューラルネットワーク」 に知りたいことのほとんど全てが書いてあった。感謝。 ただ、誤差逆伝播学習法で実際に学習させてみると、 学習率や教師データによって、うまく学習できたり (十分速く収束したり)、しなかったりする。 少し調べてみると、学習の高速化については今も研究の 対象となっているらしい。

せっかく作ったのだから、何かに応用させないとつまらない。 一番メジャーな応用としては画像認識、音声認識の手法としてだろう。 経済時系列データに適用している研究もあるみたい。面白そうなのは、 ニューラルネットによる3次元形状自動モデリングを研究している 東工大の能澤研究室

とりあえずは、ニューラルネットと学習過程を可視化する プログラムを作ることを目標にしてみることにする。

posted at 01:13 | category: /Math/Bayes | 固定リンク(ニューラルネット)

Sun, 22 May 2005

Java5 の拡張 for 文

Java5 の拡張 for 文は Array や配列の要素を全て表示するような場面で とても便利な機能である。しかし、内部では iterator を使って、 インスタンスをコピーして使っているので、要素全てにある処理を施すような 処理には向いていない。例えば、

     int a[] = new int[10];
     for(int i=0;i<10;i++){
         a[i] = 1;
     }
     for(int n : a){
	n = n*2;
     }
最後の for が拡張 for 文であるが、これを実行しても配列 a の要素を 2倍するわけじゃない。注意。

posted at 13:51 | category: /Java | 固定リンク(Java5 の拡張 for 文)

Thu, 05 May 2005

byte 型を符号無しの値に変換する

Java で画像処理をしようとするとき、ピクセルの色情報を byte 型の配列で得る場合がある。しかし、Java の byte 型は 符合付であるから、0から255の値だと思うには変換しなければならない。 ビット列からちょっと計算すればいいのだが、簡潔な方法はないかと と試してみると、

byte b;  // すでに適当な値が入っているとする
int x = (int)(b & 0xff);
でうまくいくことがわかった。一度知ってしまうと常識かもしれないが、 結構はまりそうなトピックなので、メモで残しておく。

posted at 14:05 | category: /Java | 固定リンク(byte 型を符号無しの値に変換する)

Tue, 03 May 2005

NumberFormatter

今回EMアルゴリズムのプログラムを作るに当たって、 SWING の JTextField の代わりに JFormattedTextField を使ってみた。 JFormattedTextField に NumberFormatter を組み合わせて使うことで、 数値を表す文字列の処理を追加することができる。 JTextField と NumberFormat を単に足したものではなく、 フォーカスが失われたときに、規定の値の場合だけ値を更新するような validator や直接オブジェクトして書かれた値を取得する機能 などが実装されている。

これを使って、必ず0以上の値を入力するところの指定などが可能になる。 つまり、負の値や数値と解釈できないような文字列が書かれた場合は、 データを更新しない。

Microsoft の MFC の DDX/DDV と似ている。(構文は全然違うが、 やろうとしていることが似ている、と言う意味)

posted at 23:54 | category: /Java | 固定リンク(NumberFormatter)

EMアルゴリズム(続)

EMアルゴリズムを実装してみた。2項の混合正規分布をひとつ与え、 その分布に従うサンプルをいくつか作り、初期値とそのサンプルから 元の混合正規分布を学習するプログラムである。

例によって Java Web Start で作った。 jnlpファイル で起動してみてください。

answer が学習の対象となる混合正規分布。それぞれの項の標準偏差(σ)と平均(μ) および第1項が選ばれる確率をαで与える。 同様に mix に学習の初期値を与える。 sample には学習の材料となるサンプルの個数を与える。 INIT ボタンを押すと、赤色で answer の確率分布、青色で mix の確率分布が 表示され、answer に従うサンプルのヒストグラムがそれに重ねて書かれる。 STEP ボタンを押すたびに一回EMアルゴリズムを実行する。mix には実行後の 混合正規分布の標準偏差、平均が表示される。 結構収束は速い。

posted at 23:40 | category: /Math/InfoGeom | 固定リンク(EMアルゴリズム(続))