私の挑戦は、ニューラルネットワークを訓練して、異なるクラスのタスクに対する特定のアクションやイベントを認識させることです。 トレーニングニューラルネットワークが0または1または[0,1]
の場合、ほとんどの入出力がわかります。しかし、私のシナリオでは、私の入力が任意に大きい整数の形になり、同じ形式が出力に期待されます。機械学習におけるマルチラベル/マルチタスク/マルチクラス回帰
例を挙げましょう: 入力
X = [ 23, 4, 0, 1233423, 1, 0, 0] ->
Y = [ 2, 1, 1]
今すぐXの各要素[i]は、同じエンティティの異なる特性を表します。 Y [i]の中の各エントリは、他の一方で、異なる3つのカテゴリに行うには、人間がより可能性が高いものを意味
23 -> maps to a place he/she was born
4 -> maps to a school they graduated
など
: のは、それが人間を記述したいとしましょう(LEN(Y)が、この場合は3であるとして):
Y[0] = 2 -> maps to eating icecream (from a variety of other choices)
Y[1] = 1 -> maps to a time of day moment (morning, noon, afternoon, evening, etc...)
Y[2] = 1 -> maps to a day of the week for example
タスクは、私は出力層の上にシグモイドを適用し、損失関数としてbinary_crossentropy
を行うのと同じマルチラベルの問題だったが、今の進路場合それはもちろん動作しません。 私の出力が明らかに[0,1]
の間にないからです。 また、Yのすべてのクラス/サブクラスを正確に予測したいので、どのような損失関数を適用するべきかはわかりません。私が基本的に言っているのは、それぞれのY [i]はそれ自身のクラスであるということです。 出力が(3, labels_per_class)
の形であり、損失関数が3つの異なるクラスのそれぞれについて損失を計算すると、より正確になります 結果を最適化しようとすると3つのクラスのそれぞれに正しいラベル。 私はそれが可能かどうか、少なくとも方法はわかりません。
私は本当に神経ネットワークの知識と学習の初めにありますので、私はこの問題に苦労しています。
しかし、実際にはもっと簡単に言えば、私はそれをどのように記述するかをよりよく考えています。多少なりとも自動エンコーダに似ていますが、入力と出力は整数です。違いは、私の場合、出力はオートエンコーダの入力と同じサイズであることです。
私の解決策は、損失関数として、出力層、(および他のすべての層のコースrelu-like activations
の同様)とbinary_crossentropyでrelu
を適用することであったが、ネットワークの精度は約15%、非常に低いです。