dポイントプレゼントキャンペーン実施中!

ニューラルネットの学習前に,データ[X,Y] を標準化
 (x-ave(x)) / std(x)
 ave(x):xの平均
 std(x):xの標準偏差
というようにすべてのデータについて,[0,1]に標準化しています.
学習後(BP法),ニューラルネットから得られた回帰式は,標準化したので,
パラメータが[0,1]の範囲になってしまっています.
この学習後得られたパラメータの標準化を解除して,標準化しないで学習して得られたパラメータのようにしたいのですが,
学習後のパラメータの標準化はどういうふうに解除すればいいのでしょうか?

A 回答 (1件)

階層型のNeural Networkで入力層への入力を標準化したということでよろしいでしょうか。


中間層(出力層でも)への入力は、結合荷重wとバイアスを用いて
 s=wx'+bias
とかけます。ここでx'は標準化された変数で
 x'=(x-μ)/σ μは平均、σは標準偏差
です。これより、元のxを用いると
 s=w*(x-μ)/σ+bias
  =w/σ*x-w/σ+bias
  =w'x+bias'
となるので、
結合荷重を1/σ倍し
中間層のbias項を-w/σする
とすれば同じになります。
複数の入力Nodeがある場合でも同様です。

中間層から出力層は中間層まででその効果を吸収で来ているので
同じになります。

この回答への補足

以下のようで正しいのか確認をお願いします.

各変数を次のように定める.
 入力層のバイアス:x_bias
 中間層のバイアス:z_bias
 wj0:入力-中間層のバイアス重み
 wjk:入力-中間層の重み(k>=1)
 wij:中間-出力層の重み
 教師信号:y ー> y'=(y-μ_y)/σ_y
 バイアスを除いた全入力:x ー> x'=(x-μ_x)/σ_x

以上のように定めて,3層パーセプトロンで学習する.
学習した結果,wjk*,wij* が得られた.
標準化を解くために次の操作をする.
 wj0* = (wj0*) - (wjk*)/σ_x (入力-中間間,バイアス)
 wjk* = (wjk*) / σ_x    (入力-中間間,バイアス除く)
 wij* = wij*       (中間-出力間,変化なし)

あと気になることがあるのでもうひとつ質問させてください.
入力層にバイアスがない3層パーセプトロンではどうすればいいのでしょうか?(wj0がない)

補足日時:2008/06/28 11:43
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!