2

こんにちは、逆伝播を使用してトレーニングされる単純な多層ネットワークを構築しています。現時点での私の問題は、データセット内の一部の属性が公称 (非数値) であり、それらを正規化する必要があることです。私は最善のアプローチが何であるかを知りたかったのです。私は、属性ごとに個別の値がいくつあるかを数え上げ、それぞれに 0 と 1 の間の等しい数を割り当てるという方針に沿って考えていました。たとえば、属性の 1 つに A から E の値があった場合、次のようにすると適切でしょうか?:

A = 0
B = 0.25
C = 0.5
D = 0.75
E = 1

私の質問の 2 番目の部分は、出力を非正規化して公称値に戻すことです。数値表現を取得するために、最初にデータセット内の個別の出力属性値ごとに上記と同じことを行いますか? また、ネットワークから出力を取得した後、どちらの数値に近いかを確認するだけですか? たとえば、出力として 0.435 を取得し、出力属性値が次のように割り当てられた場合:

x = 0
y = 0.5
z = 1

y (0.5) である出力 (0.435) に最も近い値を見つけるだけですか?

4

2 に答える 2

1

それは、正規化しようとしている属性の意味と、NN 内で使用される関数に大きく依存します。たとえば、属性が非線形である場合、または非線形活性化関数を使用している場合、線形正規化は意図したとおりに実行されない可能性があります。

属性値の範囲が比較的小さい場合は、入力と出力をバイナリの入力と出力のセットに分割する方がおそらく簡単で正確です。

編集:NNがその機能を正確に実行できた場合、出力の1つは他の出力よりも大幅に高くなります。そうでない場合は、いつ不正確な結果が表示されるかによって、問題が発生する可能性があります。

初期のトレーニング中は不正確な結果が予想されます。より多くのトレーニング反復を実行するにつれて、それらはますます一般的ではなくなります。そうでない場合、NN は実行しようとしているタスクに適していない可能性があります。これは、隠れ層のサイズや数を増やすだけの問題である可能性があります。あるいは、何をしようとしているのかについての知識を必要とする、より根本的な問題かもしれません。

NN のトレーニングに成功したが、実際のデータ セットを処理するときに不正確さが見られる場合は、トレーニング セットが十分に代表的ではなかった可能性があります。

これらすべてのケースで、NN が意図したものとはまったく異なることを行った可能性が高いです。したがって、現時点では、最も高い出力を選択するだけで十分です。しかし、それがより良い推測であるという保証は絶対にありません。

于 2013-03-14T13:09:25.680 に答える
1

変数が序数であり、名義ではない場合にのみ、提案していることを行うことができます。それでも、それはやや恣意的な決定です。解決策を提案する前に、用語に関する注意:

名義変数と順序変数

AB、などが色を表しているとします。これらは名義変数の値であり、意味のある順序付けはできません。赤が黄色よりも優れているとは言えません。したがって、名義変数に数値を割り当てるべきではありません。

ここで、 、 、 などはAB、、Cなどの衣類のサイズを表しているとします。これらのサイズを絶対的な尺度で測定しているわけではありません (つまり、胸囲 40 に相当するとは言いません)。< < . それを念頭に置いて、 、、、または、を設定するかどうかは、まだやや恣意的です。smallmediumlargesmallsmallmediumlargesmall=1medium=2large=3small=2medium=4large=8

One-of-N エンコーディングこれを 行うより良い方法は、いわゆる one-of-N エンコーディングを使用することです。5 つの個別の値がある場合、5 つの入力単位が必要で、それぞれが値1またはを取ることができます0。私の衣類の例を続けると、サイズは、、中などとしてextra smallエンコードできます。10000small0100000100

同様の原則がネットワークの出力にも適用されます。衣服のサイズを入力ではなく出力として扱う場合、ネットワークが vector[0.01 -0.01 0.5 0.0001 -.0002]を出力すると、それを size と解釈しますmedium

@Daan の投稿に対するコメントへの返信: 5 つの入力があり、そのうちの 1 つが 20 個の離散値をとる場合、24 個の入力ノードが必要になります。4 つの連続入力の値を range に正規化することをお勧めします[0, 1]。これは、それらが離散変数を支配してしまう可能性があるためです。

于 2013-03-14T13:37:08.083 に答える