Sparse_categorical_crossentropy vs categorical_crossentropy (keras ความแม่นยำ)


20

ข้อไหนดีกว่าเพื่อความถูกต้องหรือเหมือนกัน แน่นอนถ้าคุณใช้ categorical_crossentropy คุณใช้การเข้ารหัสแบบร้อนและหากคุณใช้ sparse_categorical_crossentropy คุณจะเข้ารหัสเป็นจำนวนเต็มปกติ นอกจากนี้เมื่อใดจะดีกว่าอีกอัน

คำตอบ:


26

ใช้ crossentropy เด็ดขาดหมวดหมู่เมื่อชั้นเรียนของคุณเป็นพิเศษร่วมกัน (เช่นเมื่อแต่ละตัวอย่างเป็นของชั้นหนึ่งเท่านั้น) และหมวดหมู่ crossentropy เมื่อตัวอย่างหนึ่งสามารถมีหลายชั้นเรียนหรือฉลากมีความน่าจะเป็นนุ่ม (เช่น [0.5, 0.3, 0.2])

สูตรสำหรับ crossentropy เด็ดขาด (S - ตัวอย่าง, C - classess, sc - ตัวอย่างเป็นคลาส c) คือ:

1NsScC1sclogp(sc)

สำหรับกรณีที่คลาสมีเอกสิทธิ์คุณไม่จำเป็นต้องหาผลรวมสำหรับแต่ละตัวอย่างเท่านั้นค่าที่ไม่เป็นศูนย์คือแค่logp(sc)สำหรับคลาสจริง c

ช่วยให้ประหยัดเวลาและหน่วยความจำ พิจารณากรณีของ 10,000 คลาสเมื่อพวกเขาเป็นเอกสิทธิ์เฉพาะบุคคล - เพียง 1 ล็อกแทนการรวม 10,000 สำหรับแต่ละตัวอย่างเพียงหนึ่งจำนวนเต็มแทน 10000 ลอย

สูตรจะเหมือนกันทั้งสองกรณีดังนั้นจึงไม่มีผลกระทบต่อความแม่นยำ


1
พวกมันส่งผลกระทบต่อความถูกต้องแตกต่างกันหรือไม่ตัวอย่างเช่นชุดข้อมูลหลัก mnist
ปรมาจารย์ M

1
ในทางคณิตศาสตร์ไม่มีความแตกต่าง หากมีความแตกต่างอย่างมีนัยสำคัญในค่าที่คำนวณโดยการใช้งาน (พูด tenorflow หรือ pytorch) แล้วนี่ฟังดูเหมือนเป็นข้อบกพร่อง การเปรียบเทียบข้อมูลสุ่มอย่างง่าย (1,000 คลาส, 10,000 ตัวอย่าง) ไม่แตกต่างกัน
frenzykryger


คุณถูก. ขอบคุณ!
frenzykryger

@frenzykryger ฉันกำลังทำงานกับปัญหาหลายเอาต์พุต ฉันมีเอาต์พุตแยก 3 รายการo1,o2,o3และแต่ละอันมี167,11,7คลาสตามลำดับ ฉันได้อ่านคำตอบของคุณว่ามันจะไม่สร้างความแตกต่าง แต่จะมีความแตกต่างถ้าฉันใช้sparse__หรือไม่ ฉันสามารถไปสำหรับcategorical2 คนสุดท้ายและsparseสำหรับคนแรกที่มี 167 คลาสในชั้นแรกได้หรือไม่?
Deshwal

5

คำตอบสั้น ๆ

หากเป้าหมายของคุณได้รับการเข้ารหัสร้อนแรงให้ใช้ categorical_crossentropy ตัวอย่างการเข้ารหัสแบบร้อนแรง:

[1,0,0]
[0,1,0] 
[0,0,1]

แต่ถ้าเป้าหมายของคุณเป็นจำนวนเต็มให้ใช้ sparse_categorical_crossentropy ตัวอย่างของการเข้ารหัสจำนวนเต็ม (เพื่อความสมบูรณ์):

1
2
3

ฉันต้องการโหนดเอาต์พุตเดี่ยวsparse_categorical_crossentropyหรือไม่ และการfrom_logitsโต้แย้งหมายถึงอะไร
Leevo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.