อะไรคือตัวเลือกของฟังก์ชั่น (Softmax vs Sigmoid) ในลอจิสติกลักษณนาม?
สมมติว่ามี 4 ชั้นเรียนเอาท์พุท แต่ละฟังก์ชั่นด้านบนให้ความน่าจะเป็นของแต่ละคลาสเป็นเอาต์พุตที่ถูกต้อง ดังนั้นอันไหนที่จะใช้สำหรับลักษณนาม
อะไรคือตัวเลือกของฟังก์ชั่น (Softmax vs Sigmoid) ในลอจิสติกลักษณนาม?
สมมติว่ามี 4 ชั้นเรียนเอาท์พุท แต่ละฟังก์ชั่นด้านบนให้ความน่าจะเป็นของแต่ละคลาสเป็นเอาต์พุตที่ถูกต้อง ดังนั้นอันไหนที่จะใช้สำหรับลักษณนาม
คำตอบ:
ฟังก์ชั่น sigmoidจะใช้สำหรับการถดถอยโลจิสติกสองชั้นในขณะที่ฟังก์ชั่น softmaxจะใช้สำหรับการถดถอยโลจิสติก multiclass (aka Maxent ถดถอยโลจิสติกพหุนาม, ถดถอย softmax, เอนโทรปีสูงสุดลักษณนาม)
ในการถดถอยโลจิสติกสองระดับโพรบที่คาดการณ์มีดังนี้โดยใช้ฟังก์ชัน sigmoid:
ในการถดถอยโลจิสติกหลายคลาสด้วยคลาสความน่าจะเป็นที่คาดการณ์มีดังนี้โดยใช้ฟังก์ชัน softmax:
เราสามารถสังเกตได้ว่าฟังก์ชั่น softmax เป็นส่วนเสริมของฟังก์ชั่น sigmoid ไปยังกรณีหลายชั้นดังที่อธิบายไว้ด้านล่าง ลองดูการถดถอยโลจิสติกหลายคลาสด้วยคลาส :
กับbeta_1) เราเห็นว่าเราได้รับความน่าจะเป็นเช่นเดียวกับในการถดถอยสองระดับโดยใช้ฟังก์ชัน sigmoid Wikipediaจะขยายเพิ่มเติมอีกเล็กน้อย
อันที่จริงแล้วพวกเขามีความเท่าเทียมกันในแง่ที่ว่าสามารถเปลี่ยนเป็นอีกแบบหนึ่งได้
สมมติว่าข้อมูลของคุณแสดงโดย vectorของมิติโดยพลการและคุณสร้างตัวจําแนกแบบไบนารีสําหรับมันโดยใช้การแปลงเลียนแบบตามด้วย softmax:
P( C i | x)=softmax( z i )= e z i
ลองเปลี่ยนเป็นตัวแยกประเภทไบนารีเทียบเท่าที่ใช้ sigmoid แทน softmax ครั้งแรกของทั้งหมดที่เราต้องตัดสินใจว่าน่าจะเป็นที่เราต้องการ sigmoid เพื่อการส่งออก (ซึ่งอาจจะเป็นสำหรับการเรียนหรือ ) ทางเลือกนี้เป็นพลอย่างแน่นอนและดังนั้นผมจึงเลือกระดับC_0จากนั้นลักษณนามของฉันจะอยู่ในรูปแบบ:C 1 C 0
P ( C 0
ตัวแยกประเภทจะเท่ากันถ้าความน่าจะเป็นเหมือนกันดังนั้นเราต้องกำหนด:
เปลี่ยน ,และโดยการแสดงออกของพวกเขาในแง่ของและและการทำตรงไปตรงมาบางส่วน พีชคณิตยักย้ายคุณอาจตรวจสอบว่ามีความเสมอภาคเหนือถ้าหากและได้รับจาก:
ฉันสังเกตว่าผู้คนมักจะถูกนำไปยังคำถามนี้เมื่อค้นหาว่าจะใช้ sigmoid vs softmax ในเครือข่ายประสาท หากคุณเป็นหนึ่งในคนที่สร้างลักษณนามเครือข่ายประสาทเทียมนี่คือวิธีการตัดสินใจว่าจะใช้ sigmoid หรือ softmax กับค่าเอาต์พุตดิบจากเครือข่ายของคุณ:
การอ้างอิง: สำหรับคำอธิบายโดยละเอียดมากขึ้นว่าควรใช้ sigmoid vs. softmax ในการออกแบบเครือข่ายประสาทรวมถึงการคำนวณตัวอย่างโปรดดูบทความนี้: "การจำแนก: Sigmoid vs. Softmax"
การเพิ่มคำตอบก่อนหน้าทั้งหมด - ฉันต้องการพูดถึงความจริงที่ว่าปัญหาการจำแนกประเภทหลายคลาสสามารถลดลงเป็นปัญหาการจำแนกเลขฐานสองหลายโดยใช้วิธี "one-vs-all" เช่นมี C sigmoids (เมื่อ C คือจำนวน คลาส) และตีความทุก sigmoid ให้เป็นความน่าจะเป็นที่อยู่ในคลาสนั้นหรือไม่และรับความน่าจะเป็นสูงสุด
ตัวอย่างเช่นในตัวอย่างหลักของ MNIST คุณสามารถใช้ softmax หรือสิบซิกก็ได้ อันที่จริงนี่คือสิ่งที่ Andrew Ng ทำในหลักสูตร Coursera ML ของเขา คุณสามารถตรวจสอบได้ที่นี่วิธีที่ Andrew Ng ใช้ 10 sigmoids สำหรับการจัดหมวดหมู่หลายคลาส (ดัดแปลงจาก Matlab เป็น Python โดยฉัน) และนี่คือการปรับแบบ softmax ของฉันใน python
นอกจากนี้ยังเป็นที่น่าสังเกตว่าในขณะที่ฟังก์ชั่นเทียบเท่า (สำหรับวัตถุประสงค์ของการจำแนกประเภทหลายคลาส) พวกเขาต่างกันเล็กน้อยในการใช้งาน (โดยเฉพาะอย่างยิ่งเกี่ยวกับอนุพันธ์ของพวกเขาและวิธีการแสดง y)
ข้อได้เปรียบที่ยิ่งใหญ่ของการใช้การจำแนกประเภทไบนารีหลายรายการ (เช่น Sigmoids) ในการจำแนกประเภทหลายคลาสเดี่ยว (เช่น Softmax) - คือถ้า Softmax ของคุณมีขนาดใหญ่เกินไป (เช่นถ้าคุณกำลังใช้คำเดียวที่ร้อนแรง ) - มันไม่มีประสิทธิภาพในการฝึก สิ่งที่คุณสามารถทำได้คือนำส่วนเล็ก ๆ ของชุดฝึกอบรมของคุณไปใช้เพื่อฝึกเพียงส่วนเล็ก ๆ ของ sigmoids ของคุณ นี่คือแนวคิดหลักที่อยู่เบื้องหลังการสุ่มตัวอย่างเชิงลบ