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']) โดยสัญชาตญาณมันสมเหตุสมผลแล้วว่าทำไมฉันถึงต้องการใช้เอนโทรปีแบบข้ามหมวดหมู่ฉันไม่เข้าใจว่าทำไมฉันถึงได้ผลลัพธ์ที่ดีด้วยเลขฐานสองและผลลัพธ์ที่ไม่ดีกับการจัดหมวดหมู่