2016-08-13 23 views
3

コンテキスト:私は、それぞれに2つの関連する確率値を持つ一連のドキュメントを持っています:クラスAに属する確率またはクラスBに属する確率です。クラスは相互に排他的です。確率は1になる。したがって、例えば文書Dは、地面の真理として関連付けられる確率(0.6、0.4)を有する。ニューラルネットワーク回帰予測のカットオフ

各文書は、0から1に正規化された用語のtfidfで表されます。私はdoc2vec(正規化された形式-1から1)と他のいくつかの方法を試しました。

私はこの確率分布を予測する非常に単純なニューラルネットワークを構築しました。多くのノードを有する

  • 入力層ソフトマックスと
  • 単一の隠れ層
  • ノード一つと出力層と2つのノードがありますよう
  • クロスエントロピー損失関数Iは、異なる更新機能を試み
  • 学習率

これはnolearnを使用して書いたコードです:

net = nolearn.lasagne.NeuralNet(
    layers=[('input', layers.InputLayer), 
     ('hidden1', layers.DenseLayer), 
     ('output', layers.DenseLayer)], 
    input_shape=(None, X_train.shape[1]), 
    hidden1_num_units=1, 
    output_num_units=2, 
    output_nonlinearity=lasagne.nonlinearities.softmax, 
    objective_loss_function=lasagne.objectives.binary_crossentropy, 
    max_epochs=50, 
    on_epoch_finished=[es.EarlyStopping(patience=5, gamma=0.0001)], 
    regression=True, 
    update=lasagne.updates.adam, 
    update_learning_rate=0.001, 
    verbose=2) 
net.fit(X_train, y_train) 
y_true, y_pred = y_test, net.predict(X_test) 

私の予測にはカットオフポイントがあり、予測値はそのポイントを下回っていません(私の意図を理解するために画像をチェックしてください)。 This plot shows the difference between the true probability and my predictions。ポイントが赤線に近ければ近いほど予測は良くなります。理想的には、すべての点がライン上にあるでしょう。私はこれをどのように解決できますか?なぜこれが起こっていますか?

編集:実際に私は単に隠れ層除去することによって、問題を解決:

net = nolearn.lasagne.NeuralNet(
    layers=[('input', layers.InputLayer), 
     ('output', layers.DenseLayer)], 
    input_shape=(None, X_train.shape[1]), 
    output_num_units=2, 
    output_nonlinearity=lasagne.nonlinearities.softmax, 
    objective_loss_function=lasagne.objectives.binary_crossentropy, 
    max_epochs=50, 
    on_epoch_finished=[es.EarlyStopping(patience=5, gamma=0.0001)], 
    regression=True, 
    update=lasagne.updates.adam, 
    update_learning_rate=0.001, 
    verbose=2) 
net.fit(X_train, y_train) 
y_true, y_pred = y_test, net.predict(X_test) 

をしかし、私はまだ、私はこの問題と、なぜ隠された層を除去することは、それを解決していた理由を理解することができません。何か案は?ここで

新しいプロット:私はあなたのトレーニングセットの出力値は、[0,1]または[1,0]であるべきだと思う 2

答えて

0


[0.6,0.4]ソフトマックスには適していません/ Crossentropy 。

+2

なぜそれが問題になるのかわかりません。私が知る限り、ソフトマックスの出力は1つを加算し、クロスエントロピーは2つの確率分布の差を測定します。 –

関連する問題