11
binary_crossentropyとcategorical_crossentropyが同じ問題に対して異なるパフォーマンスを提供するのはなぜですか?
CNNをトレーニングして、テキストをトピックごとに分類しようとしています。バイナリクロスエントロピーを使用すると、最大80%の精度が得られます。カテゴリカルクロスエントロピーでは、最大50%の精度が得られます。 なぜなのかわかりません。これはマルチクラスの問題です。それは、カテゴリクロスエントロピーを使用する必要があり、バイナリクロスエントロピーを使用した結果は無意味であることを意味しませんか? model.add(embedding_layer) model.add(Dropout(0.25)) # convolution layers model.add(Conv1D(nb_filter=32, filter_length=4, border_mode='valid', activation='relu')) model.add(MaxPooling1D(pool_length=2)) # dense layers model.add(Flatten()) model.add(Dense(256)) model.add(Dropout(0.25)) model.add(Activation('relu')) # output layer model.add(Dense(len(class_id_index))) model.add(Activation('softmax')) 次にcategorical_crossentropy、損失関数として次のようにコンパイルします。 model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) または model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 直観的には、カテゴリカルクロスエントロピーを使用する理由は理にかなっていますが、バイナリで良い結果が得られ、カテゴリで悪い結果が得られる理由がわかりません。