รูปแบบการเรียนรู้แบบลึกใดที่สามารถจำแนกหมวดหมู่ที่ไม่ได้เกิดร่วมกัน


9

ตัวอย่าง: ฉันมีประโยคในรายละเอียดงาน: "วิศวกรอาวุโสของ Java ในสหราชอาณาจักร"

ฉันต้องการที่จะใช้รูปแบบการเรียนรู้ที่ลึกที่จะคาดการณ์ว่ามันเป็น 2 ประเภทและEnglish IT jobsถ้าฉันใช้รูปแบบการจำแนกแบบดั้งเดิมมันสามารถทำนายได้เพียง 1 ฉลากที่มีsoftmaxฟังก์ชั่นที่ชั้นสุดท้าย ดังนั้นฉันสามารถใช้โครงข่ายประสาทเทียม 2 แบบในการทำนาย "ใช่" / "ไม่" กับทั้งสองหมวดหมู่ แต่ถ้าเรามีหมวดหมู่มากขึ้นมันก็แพงเกินไป ดังนั้นเราจึงมีรูปแบบการเรียนรู้หรือการเรียนรู้ด้วยเครื่องเพื่อคาดการณ์ 2 หมวดหมู่ขึ้นไปพร้อมกันหรือไม่

"แก้ไข": ด้วย 3 ป้ายกำกับโดยวิธีดั้งเดิมมันจะถูกเข้ารหัสโดย [1,0,0] แต่ในกรณีของฉันมันจะถูกเข้ารหัสโดย [1,1,0] หรือ [1,1,1]

ตัวอย่าง: หากเรามี 3 ป้ายกำกับและประโยคอาจเหมาะกับป้ายกำกับเหล่านี้ทั้งหมด ดังนั้นถ้าผลลัพธ์จากฟังก์ชัน softmax คือ [0.45, 0.35, 0.2] เราควรแบ่งมันออกเป็น 3 label หรือ 2 label หรืออาจเป็นหนึ่ง? ปัญหาหลักเมื่อเราทำคือ: เกณฑ์ที่ดีในการจำแนกเป็น 1, หรือ 2 หรือ 3 ป้ายคืออะไร?


เราต้องใช้ฟังก์ชั่น sigmoid แทนฟังก์ชั่น softmax มันสามารถกำหนดหลายคลาสให้กับจุดข้อมูล
NITISH MAHAJAN

คำตอบ:


6

คุณสามารถบรรลุการจำแนกประเภทหลายฉลากนี้โดยแทนที่ softmax ด้วยการเปิดใช้งาน sigmoid และใช้ไบนารี crossentropy แทน crossentropy เด็ดขาดเป็นฟังก์ชั่นการสูญเสีย จากนั้นคุณก็ต้องใช้เครือข่ายเดียวที่มีหน่วย / เซลล์ส่งออกมากเท่าที่คุณมีป้าย

คุณต้องเปลี่ยนการสูญเสียให้เป็น crossentropy แบบไบนารีเนื่องจากเอนโทรปีของการข้ามแบบเป็นหมวดหมู่จะได้รับการสูญเสียจากการทำนายสำหรับเป้าหมายเชิงบวกเท่านั้น เพื่อทำความเข้าใจนี้ดูสูตรการสูญเสีย crossentropy เด็ดขาดสำหรับตัวอย่างหนึ่ง (ดัชนีระดับคือ ):ij

Li=jti,jlog(pi,j)

ในการตั้งค่ามัลติคลาสปกติคุณใช้ softmax เพื่อให้การคาดคะเนสำหรับคลาสที่ถูกต้องขึ้นอยู่กับการทำนายสำหรับคลาสอื่นโดยตรง หากคุณแทนที่ softmax ด้วย sigmoid นี่จะไม่เป็นจริงอีกต่อไปดังนั้นตัวอย่างเชิงลบ (โดยที่ ) จะไม่ถูกใช้ในการฝึกอีกต่อไป! นั่นเป็นเหตุผลที่คุณต้องเปลี่ยนเป็นไบนารี crossentropy ซึ่งใช้ทั้งตัวอย่างบวกและลบ: ti,j=0Li=jti,jlog(pi,j)j(1ti,j)log(1pi,j)


ทำไมเราต้องใช้ไบนารี่ครอสโตรปี้แทนฟังก์ชั่นการสูญเสียอย่างเด็ดขาด? คุณอธิบายเพิ่มเติมได้ไหม ตอนนี้ฉันกำลังใช้การเปิดใช้งาน sigmoid @robintibor
voxter

ฉันได้เพิ่มคำอธิบายลงในคำตอบ @voxter
robintibor

ยอดเยี่ยม! ขอบคุณ. นอกจากนี้คุณสามารถให้เอกสารหรือแบบฝึกหัดที่อธิบายคณิตศาสตร์เพิ่มเติมเกี่ยวกับฟังก์ชั่นใน deeplearning เหมือนที่คุณอธิบายฉันได้ไหม?
voxter

1
ยิ่งใหญ่ บทเรียนเหล่านี้อาจช่วย: neuralnetworksanddeeplearning.com deeplearning.net/tutorial deeplearning.stanford.edu/tutorial
robintibor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.