ซอฟต์แม็กซ์ที่ทำให้เข้าใจยาก

Apr 15 2023
จะรับฟังก์ชัน softmax จากข้อกำหนดการออกแบบงานจำแนกประเภทได้อย่างไร
วิธีการทั่วไปในการจำแนกประเภทหลายชั้นคือการใช้ตัวแยกประเภทไบนารีแยกต่างหากสำหรับทุกชั้น ลักษณนามแต่ละตัวมีหน้าที่จดจำคลาสที่เกี่ยวข้องของตนเอง
ภาพถ่ายโดย Ramakant Sharda บน Unsplash

วิธีการทั่วไปในการจำแนกประเภทหลายชั้น คือการใช้ตัวแยกประเภทไบนารีแยกต่างหากสำหรับทุกชั้น

ลักษณนามแต่ละตัวมีหน้าที่จดจำคลาสที่เกี่ยวข้องของตนเอง

ขั้นแรก ให้พิจารณาตัวเลือกการออกแบบที่อยู่เบื้องหลังการสร้างลักษณนามไบนารีตัวเดียว ต่อไปนี้ เราจะขยายการออกแบบไปยังคอลเล็กชันของตัวแยกประเภทไบนารี

จากจุดเริ่มต้น ให้ใช้สมการเชิงเส้นที่รับเวกเตอร์ของคุณลักษณะ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/