- 締切済み
ニューラルネットワークの正規化されたデータを元に戻すには
ニューラルネットワークで正規化し、パラメータを求めた後、パラメータの正規化をもとに戻したいのですが、方法が分かりません。 以下は、私がやっている途中を示します。 たとえば、データの入力が年齢と身長、出力が体重のデータがあるとします。 年齢x1 身長x2 体重y 21 160 55 24 172 63 私は、正規化するために x1’=(x1-ave(x1))/std(x1) x2’=(x2-ave(x2))/std(x2) y’=(y-ave(y))/std(y) として正規化しました。aveは平均、stdは標準偏差 ニューラルネットとしては、次の式で表される三層パーセプトロンを利用しています。 f=W0+Σ{Wj*hj} Σはj=1からJまで (中間層-出力層) hj=sigmoid(Σ{Wjk*xk’}) Σはk=1,2 (入力層-中間層) Error=(f-y’)*(f-y’) 入力層のバイアスはなしで、中間層のバイアスはありを考えています。 活性化関数は、中間層がシグモイド関数、出力層が線形関数です。 正規化したxとyに対して各wを求めるプログラムは作れたのですが、 ここからどうやってwの正規化を解除すればよいか分かりません。 正規化する方法は載っているサイトはいくつかあるのですが、解除する 方法が載っているのは見つかりませんでした。 回答よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- sugakusya
- ベストアンサー率68% (13/19)
>正規化したxとyに対して各wを求めるプログラムは・・・ >ここからどうやってwの正規化を解除すればよいか分かりません。 「w」とは何ですか?正規化を解除するということは正規化したということですよね? とりあえずよくわかりませんが、 w’=(w-ave(w))/std(w) より、wについてとくと、 w’std(w)+ave(w)= w ではないですか? おそらくネットワークの構造を表記しているところからシグモイド関数などの影響を考えての質問でしょうか?どちらにしてもwが何かを教えてください。 あと、 Error=(f-y’)*(f-y’) としてますが、 fはシグモイド関数を通していないようですので1~0以外の数値も出力してしまうことがあるように見えますが、いいのですか? もしかして w=sigmoid(f) ?
補足
>「w」とは何ですか? wは、パラメータ{W0,Wj,Wjk}です。 >正規化を解除するということは正規化したということですよね? 正規化したデータ{x1’,x2’,y’}から学習して得たパラメータw’を 正規化していないデータ{x1,x2,y}から学習して得たパラメータwに 戻したいということです。 手順としては, データ{x,y}の正規化 ↓ ニューラルネットでパラメータwを近似 ↓ wの正規化を解除し、正規化前のデータを回帰できるようにする というような感じ。 元に戻さないと,新しいデータが得られたときに正しく出力を回帰できないので、w’→ w と正規化を解除したいです。 >fはシグモイド関数を通していないようですので1~0以外の数値も 出力してしまうことがあるように見えますが、いいのですか? 回帰式を求めたいので、シグモイド関数には通さないです。