ซอฟต์แม็กซ์ที่ทำให้เข้าใจยาก
วิธีการทั่วไปในการจำแนกประเภทหลายชั้น คือการใช้ตัวแยกประเภทไบนารีแยกต่างหากสำหรับทุกชั้น
ลักษณนามแต่ละตัวมีหน้าที่จดจำคลาสที่เกี่ยวข้องของตนเอง
ขั้นแรก ให้พิจารณาตัวเลือกการออกแบบที่อยู่เบื้องหลังการสร้างลักษณนามไบนารีตัวเดียว ต่อไปนี้ เราจะขยายการออกแบบไปยังคอลเล็กชันของตัวแยกประเภทไบนารี
จากจุดเริ่มต้น ให้ใช้สมการเชิงเส้นที่รับเวกเตอร์ของคุณลักษณะxและส่งกลับเอาต์พุตyซึ่งเป็นผลรวมถ่วงน้ำหนักของคุณลักษณะอินพุตและพารามิเตอร์ ผลลัพธ์yเป็นจำนวนจริงที่ควรแมปกับการตัดสินใจ: อินพุต x เป็นตัวแทนของวัตถุที่เป็นของคลาสที่ฉันควรจะตรวจจับหรือไม่ ตัวเลือกที่ง่ายที่สุดคือส่งคืนข้อความ ' my class'เมื่อyรับค่าเป็นบวกและเก็บลักษณนามไว้เมื่อyเป็นค่าลบ
แต่แล้วเราจะพลาดข้อมูลเกี่ยวกับความไม่แน่นอน/ความเชื่อมั่นของผลลัพธ์ของตัวแยกประเภท นอกจากนี้ เรายังสามารถส่งคืนค่าดิบของเอาต์พุตตัวแยกประเภทy เพื่อวัดความเชื่อมั่นของตัวแยกประเภทในผลลัพธ์ อย่างไรก็ตาม ช่วงตั้งแต่ -∞ ถึง +∞ จะไม่สะดวกสำหรับการตีความ การเปรียบเทียบ และการประมวลผลภายหลัง
ข้อกำหนดการออกแบบ№1: ส่งออกเป็นความน่าจะเป็น
แต่เป็นการดีกว่าที่จะส่งคืนค่าในช่วงที่จำกัดอย่างเคร่งครัด ซึ่งอาจตีความได้ว่าเป็นความน่าจะ เป็น pที่อินพุตxแทนวัตถุที่เป็นของ ' คลาสของฉัน '
ดังนั้น คำถามคือจะฉายค่า yที่ค่าpที่สามารถตีความได้ว่าเป็นความน่าจะเป็นได้อย่างไร
ในตอนแรก ค่านี้ควรอยู่ในช่วง<0,1> ถัดไป0.5ควรเป็นจุดเปลี่ยนของการตัดสินใจ ประการสุดท้าย ค่าที่มากกว่า0.5ควรสนับสนุนการตรวจหาคลาสในเชิงบวก
จากมุมมองทางคณิตศาสตร์ เราค้นหาฟังก์ชันต่อเนื่องφ :
เช่นว่า0ที่ดินที่0.5 , +∞ ถูกคาดการณ์ที่1และ -∞ ที่0
ในกรณีนี้ วิธีง่ายๆ คือวิศวกรรมผกผัน: เริ่มจากp แล้วกลับไปที่y ความน่าจะเป็นของคลาสpสามารถคาดการณ์ได้อย่างง่ายดายจาก <0,1> ที่ช่วงเวลา < 0 , +∞) โดยใช้อัตราส่วนอัตราต่อรอง:
การแม็พถัดไปควรแปลงค่าที่ได้รับเป็น (-∞, +∞) ตัวเลือกที่ชัดเจนคือฟังก์ชันลอการิทึม
จากนั้นทั้งสองก็มาบรรจบกันที่นี่ เราเริ่มจาก < 0 , 1 > ช่วงเวลา และมาถึงช่วงเวลา (-∞,+∞) ซึ่งสันนิษฐานว่าในตอนแรกจะถูกส่งกลับโดยy :
สำหรับตอนนี้ ฐานBของลอการิทึมยังไม่ระบุ
ขั้นตอนต่อไปคือการเปลี่ยนความสัมพันธ์กลับเป็นp = φ ( y ) ที่ต้องการ :
ในที่สุดเราก็มาถึงสูตรที่ต้องการ:
ตอน นี้เราต้องตัดสินใจเกี่ยวกับค่าของB ให้เราดูกราฟที่แสดงตัวแปรของ ฟังก์ชัน φสำหรับค่าต่างๆ ของB
ตัวที่น้อยที่สุดน่าจะเป็นB= 2.71 น่าประหลาดใจที่ค่าที่คล้ายกันมีสัญลักษณ์e ของตัวเอง และเรียกว่าฐานธรรมชาติ ดังนั้น สำหรับลอการิทึมฐานธรรมชาติ สูตรสุดท้ายจะอยู่ในรูปแบบต่อไปนี้:
ยินดีด้วย!
เราเพิ่งค้นพบฟังก์ชันsigmoid ที่โด่งดังอีกครั้ง
คำถามสำหรับคุณคือ e เป็นตัวเลือกที่ดีที่สุดจริงหรือ? จะเกิดอะไรขึ้นหากเราเลือกค่าอื่น เราจะสูญเสียการตีความความน่าจะเป็นหรือไม่?
พิจารณาสิ่งนี้ด้วย: ทำไมไม่ใช้ความสัมพันธ์แบบไม่เชิงเส้นระหว่าง y และ x ล่ะ จำได้ว่าจะได้มา φ เราแค่สันนิษฐานว่าค่าของ y อยู่ในช่วง (-∞,+∞)
เมื่อจัดการกับคลาส (เช่นM ) จำนวนมาก เราจะกำหนดให้แต่ละคลาสเป็นตัวแยกประเภทไบนารีของตัวเอง
หากตัวแยกประเภททำงานแยกกัน อาจเป็นไปได้ว่าความน่าจะเป็นที่ส่งกลับทั้งหมดไม่รวมกันเป็น1ซึ่งทำให้การตีความความน่าจะเป็นของเอาต์พุตมีข้อบกพร่อง นี่คือความท้าทายที่ต้องจัดการในตอนนี้
ข้อกำหนดการออกแบบ№2: รวมเป็นหนึ่ง
ตัวแยกประเภททั้งหมดใช้x เหมือน กัน i -thลักษณนามคำนวณy_i เราต้องการฉายภาพy_iที่p_i อีกครั้ง แต่คราวนี้ประสานกับตัวแยกประเภทอื่นๆ ทั้งหมดเพื่อให้
การซิงโครไนซ์ระหว่างตัวแยกประเภทเป็นเรื่องเกี่ยวกับข้อตกลงร่วม กันเกี่ยวกับวิธีการคำนวณโดยอิสระy_iที่p_i สำหรับตัวแยกประเภทเดียว อัตราส่วนอัตราต่อรองเกี่ยวข้องกับความน่าจะเป็นของสองผลลัพธ์: ' คลาสของฉัน ' ที่มีความน่าจะเป็นp เทียบ กับ' ไม่ใช่คลาสของฉัน ' ที่มีความน่าจะเป็น1-p ยิ่งค่าของy สูง เท่าใด เอาต์พุต ' my class ' ก็น่าจะเป็นไปได้มากขึ้นเท่านั้น ตอนนี้ แทนที่จะเป็นเอาต์พุต ' not my class ' เราควรจะเจาะจงมากขึ้นและแนะนำเอาต์พุต ' your class ' ดังนั้น เวอร์ชันทั่วไปจะเป็น: ' my class ' ที่มีความน่าจะเป็นp_kเทียบกับ ' คลาสของคุณ ' ด้วยความน่าจะเป็นp_l และยิ่งผลลัพธ์ของฉันy_k สูง กว่าผลลัพธ์ของคุณy_lความน่าจะเป็นที่ ' คลาสของฉัน ' จะมากกว่า ' คลาสของคุณ '
ข้อกำหนดการออกแบบ№3: ความสัมพันธ์ระหว่างความน่าจะเป็น
นี่คือสมการเวอร์ชันอัปเดต (1):
ขอให้สังเกตว่าข้อกำหนดนี้เป็นเวอร์ชันเพิ่มเติมของข้อกำหนดการออกแบบ№1
ภารกิจคือใช้ทั้ง ข้อกำหนดการออกแบบ №2และ№3 ซึ่งแสดงด้วยสมการ (2) และ (3) และรับสูตรสำหรับฟังก์ชันดังกล่าว Φ _iที่:
เราได้ตัดสินใจใช้ลอการิทึมฐานธรรมชาติe แล้ว ดังนั้นให้เราใช้มันเพื่อการพิจารณาที่เหลือ:
ในการใช้ประโยชน์จากข้อมูลที่อยู่ในสมการ (2) เราใช้ผลรวมของทั้งสองฝ่าย:
และแยกองค์ประกอบที่ไม่แปรผันด้วยkก่อนเครื่องหมายผลรวม ขอให้สังเกตว่า ตามสมการ (2) ผลรวมของความน่าจะเป็นทั้งหมดเท่ากับ1 :
ในที่สุดเราก็มาถึงฟังก์ชั่นต่อไปนี้:
ซึ่งสามารถเขียนใหม่สำหรับiแทนlเป็น:
ขอแสดงความยินดีอีกครั้ง!
ด้วยวิธีนี้ ในที่สุดเราก็ได้ค้นพบฟังก์ชันsoftmax ที่รู้จักกันแพร่หลายอีกครั้ง
ความคิดสุดท้าย
ฉันหวังว่าคุณจะขอบคุณที่เราได้ดำเนินการไปสู่ฟังก์ชั่น softmax ในแบบที่ชัดเจน เราไม่ได้อาศัยการเปิดเผย การเปรียบเทียบแบบหลวม ๆ จากวิทยาศาสตร์กายภาพ หรืออำนาจตามการพิจารณาของเรา ในบทความนี้ฟังก์ชัน softmax เป็นผลจากการให้เหตุผลแบบเส้นตรงที่เกิดจากความต้องการทางธรรมชาติสำหรับปัญหาหลายคลาส
ความตั้งใจของฉันคือเพื่อให้คุณรู้สึกแข็งแกร่งขึ้นเกี่ยวกับที่มาของฟังก์ชัน softmax ในการแก้ปัญหาแมชชีนเลิร์นนิง
ฉันขอแนะนำให้คุณตรวจสอบวิธีการที่สร้างแรงบันดาลใจอีก วิธีหนึ่งในการสืบทอดฟังก์ชัน sigmoid ที่สร้างขึ้นในบล็อก Will Wolf
สุดท้ายพิจารณาด้วยตัวคุณเองว่าทั้งหมดนี้สามารถทำได้ด้วยวิธีอื่นหรือไม่: ใช้ตัวแยกประเภทที่ดำเนินการโดยอิสระ ปรับ p_i ทั้งหมดให้เป็นมาตรฐาน ในภายหลัง แล้วแทนที่ p_i ด้วยค่าที่ทำให้เป็นมาตรฐาน
อ้างอิง
[1] Gabriel Furnieres : ฟังก์ชัน Sigmoid และ SoftMax ใน 5นาที https://towardsdatascience.com/sigmoid-and-softmax-functions-in-5-minutes-f516c80ea1f9
[2] Will Wolf : ได้รับ Softmax จากหลักการแรกhttps://willwolf.io/2017/04/19/deriving-the-softmax-from-first-principles/





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)