เหตุใดจึงต้องใช้ softmax เมื่อเทียบกับการปรับมาตรฐาน


159

ในเลเยอร์เอาท์พุทของเครือข่ายนิวรัลมันเป็นเรื่องปกติที่จะใช้ฟังก์ชั่น softmax เพื่อประมาณการแจกแจงความน่าจะเป็น:

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้มีราคาแพงในการคำนวณเนื่องจากเลขชี้กำลัง ทำไมไม่เพียงทำการแปลง Z เพื่อให้เอาต์พุตทั้งหมดเป็นค่าบวกจากนั้นก็ทำให้ปกติเพียงแค่หารผลลัพธ์ทั้งหมดด้วยผลรวมของเอาต์พุตทั้งหมด


8
ฟังก์ชันไม่แพงในการคำนวณเนื่องจากเลขชี้กำลัง แต่เนื่องจากคุณต้องคำนวณทุก qj การยกกำลังนั้นมีราคาถูกเมื่อเปรียบเทียบกับจำนวนการคำนวณทั้งหมดที่ต้องการ
Seppo Enarvi

คุณพูดถึงการแปลง Z แบบไหน ความหมายของการประมวลผลสัญญาณของคำไม่พอดีที่นี่และการแทนที่ค่าด้วยคะแนน z จะให้ผลลัพธ์เป็นลบหากอินพุตอยู่ต่ำกว่าค่าเฉลี่ย
David Cian

ดูเพิ่มเติม: Stats.SE
Martin Thoma

คำตอบ:


166

มีคุณลักษณะที่ดีอย่างหนึ่งของ Softmax เมื่อเทียบกับการปรับสภาพมาตรฐาน

มันตอบสนองต่อการกระตุ้นที่ต่ำ (คิดว่าภาพพร่ามัว) ของตาข่ายประสาทของคุณที่มีการกระจายค่อนข้างสม่ำเสมอและการกระตุ้นที่สูง (เช่นจำนวนมากคิดว่าภาพที่คมชัด) ที่มีความน่าจะเป็นใกล้กับ 0 และ 1

ในขณะที่การฟื้นฟูมาตรฐานไม่สนใจตราบใดที่สัดส่วนเท่ากัน

ดูว่าเกิดอะไรขึ้นเมื่อ soft max มีอินพุทที่ใหญ่ขึ้น 10 เท่านั่นคือโครงข่ายประสาทของคุณมีภาพที่คมชัดและมีเซลล์ประสาทจำนวนมากเปิดใช้งาน

>>> softmax([1,2])              # blurry image of a ferret
[0.26894142,      0.73105858])  #     it is a cat perhaps !?
>>> softmax([10,20])            # crisp image of a cat
[0.0000453978687, 0.999954602]) #     it is definitely a CAT !

แล้วเปรียบเทียบกับการทำให้เป็นมาตรฐาน

>>> std_norm([1,2])                      # blurry image of a ferret
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?
>>> std_norm([10,20])                    # crisp image of a cat
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?

16
คำตอบนี้แสดงให้เห็นถึงผลกระทบของการใช้การยกกำลังดีที่สุดแทนที่จะเน้นที่การวางรากฐานทางทฤษฎี (ซึ่งยอดเยี่ยม) มันควรจะรวมอยู่ที่จุดเริ่มต้นของคำตอบที่ดีที่สุด หลังจากเห็นว่าการกระจายกำลังกระจายไปในระดับใดและระดับใดคำตอบยอดนิยมจะช่วยอธิบายว่าทำไมคุณต้องการ
Ian Danforth

@IanDanforth ฉันเห็นด้วยกับคุณ ควรจะอยู่ที่จุดเริ่มต้น
Hitesh

11
ไม่แน่ใจว่าทำไมคำตอบนี้จึงได้รับการโหวตมากที่สุด ทำไม [1,2] ถึงตรงกับภาพเบลอในขณะที่ [10,20] ตรงกับภาพที่คมชัดกว่า นี่เป็นเพียงเรื่องของการปรับขนาดและทั้งสองกรณีนั้นเหมือนกัน หากมีสิ่งใดสิ่งนี้น่าจะสนับสนุนมาตรฐานการปรับมาตรฐานซึ่งถือว่าถูกต้องทั้งสองกรณีที่เทียบเท่า
user118967

เมื่อค่าต่างๆได้รับการรับรองว่าอยู่ใน [0, 1] แล้วยังมีข้อได้เปรียบในการรับ softmax แทนการหารด้วยผลรวมหรือไม่?
Martin Thoma

58

ฉันมีคำถามนี้มาหลายเดือนแล้ว ดูเหมือนว่าเราเพิ่งจะคาดเดา softmax เป็นฟังก์ชันเอาต์พุตอย่างชาญฉลาดแล้วตีความอินพุตให้ softmax เป็นความน่าจะเป็นบันทึก อย่างที่คุณพูดทำไมไม่เอามาตรฐานทั้งหมดออกมาโดยหารด้วยผลรวมของพวกมัน? ฉันพบคำตอบในหนังสือเรียนรู้ลึกโดย Goodfellow, Bengio และ Courville (2016) ในหัวข้อ 6.2.2

สมมติว่าเลเยอร์ที่ซ่อนสุดท้ายของเราทำให้เราเปิดใช้งานได้ จากนั้นกำหนด softmax เป็น

คำอธิบายสั้นมาก

exp ในฟังก์ชั่น softmax จะตัดการบันทึกอย่างคร่าว ๆ ในการสูญเสียข้ามเอนโทรปีทำให้การสูญเสียจะเป็นเส้นตรงใน z_i สิ่งนี้นำไปสู่การไล่ระดับคงที่อย่างคร่าวๆเมื่อแบบจำลองผิดพลาดทำให้สามารถแก้ไขตัวมันเองได้อย่างรวดเร็ว ดังนั้น softmax อิ่มตัวที่ไม่ถูกต้องจะไม่ทำให้การไล่ระดับสีหายไป

คำอธิบายสั้น ๆ

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

ตอนนี้เรามุ่งเน้นไปที่ softmax ที่นี่ด้วย z ที่ให้ไปแล้วเพื่อให้เราสามารถแทนที่

โดยที่ฉันเป็นคลาสที่ถูกต้องของตัวอย่าง kth ตอนนี้เราจะเห็นว่าเมื่อเราใช้ลอการิทึมของ softmax เพื่อคำนวณความน่าจะเป็นบันทึกของตัวอย่างเราจะได้รับ:

ซึ่งสำหรับความแตกต่างขนาดใหญ่ใน z ประมาณใกล้เคียงกับ

อันดับแรกเราจะเห็นองค์ประกอบเชิงเส้น z_i ที่นี่ ประการที่สองเราสามารถตรวจสอบพฤติกรรมของ max (z) สำหรับสองกรณี:

  1. หากโมเดลนั้นถูกต้องแล้ว max (z) จะเป็น z_i ดังนั้น log-likelihood asymptotes zero (เช่นความน่าจะเป็นที่ 1) ที่มีความแตกต่างเพิ่มขึ้นระหว่าง z_i และรายการอื่น ๆ ใน z
  2. หากโมเดลไม่ถูกต้องค่าสูงสุด (z) จะเป็น z_j> z_i อื่น ๆ ดังนั้นการเพิ่ม z_i ไม่ได้ยกเลิก -z_j อย่างสมบูรณ์และบันทึกความน่าจะเป็นคือประมาณ (z_i - z_j) สิ่งนี้บอกรูปแบบได้อย่างชัดเจนว่าควรทำอย่างไรเพื่อเพิ่มความน่าจะเป็นในการบันทึก: เพิ่ม z_i และลด z_j

เราจะเห็นว่าตัวอย่างความน่าจะเป็นจะถูกครอบงำโดยกลุ่มตัวอย่างซึ่งรูปแบบไม่ถูกต้อง นอกจากนี้แม้ว่ารูปแบบจะไม่ถูกต้องจริง ๆ ซึ่งนำไปสู่ ​​softmax อิ่มตัวฟังก์ชั่นการสูญเสียไม่อิ่มตัว มันเป็นเส้นตรงใน z_j ซึ่งหมายความว่าเรามีการไล่ระดับสีอย่างคงที่ สิ่งนี้ทำให้โมเดลสามารถแก้ไขตัวเองได้อย่างรวดเร็ว โปรดทราบว่านี่ไม่ใช่กรณีของ Mean Squared Error เช่น

คำอธิบายยาว

หาก softmax ยังคงเป็นตัวเลือกตามอำเภอใจสำหรับคุณคุณสามารถดูเหตุผลในการใช้ sigmoid ในการถดถอยโลจิสติก:

ทำไม sigmoid จึงทำงานแทนอย่างอื่น?

softmax เป็นลักษณะทั่วไปของ sigmoid สำหรับปัญหาหลายชั้นที่ถูกต้องแบบอะนาล็อก


สวัสดีคุณช่วยอธิบายคำแถลงนี้ได้อย่างไรและคุณสามารถประมาณได้อย่างไร "ซึ่งแตกต่างกันมากใน z ประมาณประมาณ"
ลอนดอนคนที่แต่งตัวประหลาด

45

ฉันได้พบคำอธิบายที่นี่จะดีมาก: CS231n: เครือข่ายประสาทเทียมสำหรับการรับรู้ภาพ

บนพื้นผิวอัลกอริทึม softmax ดูเหมือนจะไม่ใช่เชิงเส้นอย่างง่าย (เรากำลังแพร่กระจายข้อมูลด้วยการชี้แจง) อย่างไรก็ตามมีมากกว่านั้น

มีมุมมองที่แตกต่างกันสองแบบ ( ลิงค์เดียวกันด้านบน ):

  1. ทฤษฎีข้อมูล - จากมุมมองของทฤษฎีข้อมูลฟังก์ชั่น softmax สามารถมองเห็นได้ว่าพยายามลดข้ามเอนโทรปีระหว่างการทำนายและความจริง

  2. มุมมองความน่าจะเป็น - จากมุมมองนี้เราอยู่ในความเป็นจริงมองไปที่บันทึกความน่าจะเป็นดังนั้นเมื่อเราดำเนินการยกกำลังเราจบลงด้วยความน่าจะเป็นดิบ ในกรณีนี้สมการ softmax จะหาค่า MLE (ค่าความน่าจะเป็นสูงสุด)

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


2
เพื่อเพิ่มความคิดเห็นก่อนหน้านี้อนุพันธ์ของฟังก์ชั่น softmax เป็นเพียง softmax (1-softmax)
Rouzbeh

11
ฉันได้รับเหตุผลในการใช้ Cross-Entropy Loss แต่นั่นเกี่ยวข้องกับ softmax อย่างไร คุณกล่าวว่า "ฟังก์ชั่น softmax สามารถมองเห็นได้ว่าพยายามลดการข้ามเอนโทรปีระหว่างการทำนายและความจริง" สมมติว่าฉันจะใช้การทำให้เป็นมาตรฐาน / เชิงเส้น แต่ยังคงใช้การสูญเสียข้าม จากนั้นฉันก็จะพยายามลด Cross-Entropy ดังนั้นวิธีที่จะ softmax ที่เชื่อมโยงกับข้ามเอนโทรปียกเว้นเพื่อประโยชน์เชิงตัวเลข?
Kilian Batzner

18
สำหรับมุมมองความน่าจะเป็น: อะไรคือแรงจูงใจในการดูความน่าจะเป็นของบันทึก เหตุผลดูเหมือนจะเป็นแบบ "เราใช้ e ^ x ใน softmax เพราะเราตีความว่า x เป็นความน่าจะเป็นบันทึก" ด้วยเหตุผลเดียวกับที่เราสามารถพูดได้เราใช้ e ^ e ^ e ^ x ใน softmax เพราะเราตีความว่า x เป็นความน่าจะเป็นล็อก - ล็อก - ล็อก (แน่นอนเกินจริงที่นี่) ฉันได้รับประโยชน์เชิงตัวเลขของ softmax แต่แรงจูงใจเชิงทฤษฎีสำหรับการใช้มันคืออะไร
Kilian Batzner

5
@KilianBatzner หากผลลัพธ์ของเซลล์ประสาทเป็นความน่าจะเป็นบันทึกดังนั้นผลรวมของผลลัพธ์ของเซลล์ประสาทจำนวนมากคือการคูณความน่าจะเป็นของพวกเขา นั่นเป็นเรื่องปกติที่มีประโยชน์มากกว่าผลรวมของความน่าจะเป็น
alltom

1
@KilianBatzner หากคุณสมบัติของคุณมาจากกลุ่ม Gaussian ที่แตกต่างกัน (ในคลัสเตอร์ต่อคลาส) คุณสามารถรับตัวแยกประเภทที่สมบูรณ์แบบ (การถดถอยโลจิสติก) มีเงื่อนไขเพิ่มเติมบางอย่าง แต่โดยพื้นฐานแล้วคุณสามารถปรับ / หาค่า softmax และการบันทึกด้วยสมมติฐานที่ว่าคุณต้องการแยกกลุ่ม gaussian
maxy

16

ค่าของ q_i แสดงถึงความเป็นไปได้ในการบันทึก ในการกู้คืนค่าความน่าจะเป็นคุณต้องยกกำลังให้มัน

เหตุผลหนึ่งที่อัลกอริทึมทางสถิติมักใช้ฟังก์ชั่นการสูญเสียโอกาสในการบันทึกคือพวกมันมีความเสถียรเชิงตัวเลขมากกว่า: ผลคูณของความน่าจะเป็นอาจจะเป็นจำนวนจุดลอยตัวที่เล็กมาก การใช้ฟังก์ชั่นการสูญเสียโอกาสในการบันทึกผลิตภัณฑ์ที่น่าจะเป็นกลายเป็นผลรวม

อีกเหตุผลหนึ่งคือความเป็นไปได้ในการบันทึกเกิดขึ้นตามธรรมชาติเมื่อได้รับตัวประมาณค่าสำหรับตัวแปรสุ่มที่สันนิษฐานว่าดึงมาจากการแจกแจงแบบเกาส์หลายตัวแปร ดูตัวอย่างตัวประมาณค่าความน่าจะเป็นสูงสุด (ML) และวิธีการเชื่อมต่อกับกำลังสองน้อยที่สุด

ในฐานะ sidenote ฉันคิดว่าคำถามนี้เหมาะสมกว่าสำหรับ CS Theory หรือ Computational Science Exchange Exchanges


12
q_i ไม่ได้แสดงถึงโอกาสในการบันทึกโดยนัย มันก็ต่อเมื่อเราใช้ softmax ที่เราคิดอย่างชัดเจนว่าพวกเขาทำ
Tom

6

เรากำลังดูปัญหาการจำแนกประเภทหลายคลาส นั่นคือตัวแปรที่คาดการณ์ไว้yสามารถใช้เวลาหนึ่งในประเภทที่k k > 2ในทฤษฎีความน่าจะเป็นนี่มักจะเป็นแบบจำลองโดยการแจกแจงพหุนาม การแจกแจงพหุนามเป็นสมาชิกของการแจกแจงแบบครอบครัวชี้แจง เราสามารถสร้างความน่าจะเป็นขึ้นใหม่P(k=?|x)โดยใช้คุณสมบัติของการแจกแจงแบบครอบครัวแบบเอกซ์โพเนนเชียลซึ่งตรงกับสูตร softmax

หากคุณเชื่อว่าปัญหาสามารถสร้างแบบจำลองโดยการแจกจ่ายอื่นนอกเหนือจาก multinomial คุณสามารถสรุปได้ว่าแตกต่างจาก softmax

สำหรับข้อมูลเพิ่มเติมและรากศัพท์อย่างเป็นทางการโปรดดูที่CS229 เอกสารประกอบการบรรยาย (9.3 Softmax ถดถอย)

นอกจากนี้เคล็ดลับที่มีประโยชน์มักจะใช้กับ softmax คือ: softmax (x) = softmax (x + c) , softmax จะไม่เปลี่ยนค่าคงที่ในอินพุต

ป้อนคำอธิบายภาพ


มันทำงานอย่างไรเป็นฟังก์ชั่นการเปิดใช้งานเพราะมันจะส่งกลับค่าเดียวกันสำหรับ 'x' และ 'x + c'?
Suresh Pokharel

1
พูดอย่างเคร่งครัดsoftmaxไม่ใช่ฟังก์ชั่นการเปิดใช้งาน ฟังก์ชั่นการเปิดใช้งานเป็นการดำเนินการองค์ประกอบที่ชาญฉลาด - ให้องค์ประกอบเทนเซอร์อย่างชาญฉลาดดำเนินการที่ไม่ใช่เชิงเส้นในการผลิตเทนเซอร์อีก แต่softmaxเป็นการดำเนินการแบบเวกเตอร์มันสร้างเวกเตอร์ที่ทำให้เป็นมาตรฐานคุณมีการพึ่งพาภายในระหว่างแต่ละองค์ประกอบ
GabrielChu

5

ฉันคิดว่าหนึ่งในเหตุผลสามารถจัดการกับจำนวนลบและการหารด้วยศูนย์เนื่องจาก exp (x) จะเป็นบวกและมากกว่าศูนย์เสมอ

ตัวอย่างเช่นสำหรับa = [-2, -1, 1, 2]ผลรวมจะเป็น 0 เราสามารถใช้ softmax เพื่อหลีกเลี่ยงการหารด้วยศูนย์


3
โดยปกติคุณจะลบค่าต่ำสุดแล้วหารด้วย max / sum ในกรณีของคุณที่จะทำการ[0, 1, 3, 4]หารแล้ว
ubershmekel

1
@ubershmekel สิ่งนี้ทำให้เกิดปัญหาว่าคลาสที่มีคะแนนน้อยที่สุดจะได้รับความน่าจะเป็นที่ 0
Alessandro Power

4

สมมติว่าเราเปลี่ยนฟังก์ชั่น softmax เพื่อให้ได้การเปิดใช้งานเอาต์พุตโดย ป้อนคำอธิบายรูปภาพที่นี่

ที่cเป็นค่าคงที่บวก โปรดทราบว่าc=1สอดคล้องกับฟังก์ชั่น softmax มาตรฐาน แต่ถ้าเราใช้ค่าที่แตกต่างกันcเราก็จะได้ฟังก์ชั่นที่แตกต่างกันซึ่งก็ค่อนข้างมีคุณภาพคล้ายกับ softmax โดยเฉพาะอย่างยิ่งแสดงให้เห็นว่าการเปิดใช้งานการส่งออกในรูปแบบการกระจายความน่าจะเป็นเช่นเดียวกับ softmax ปกติ สมมติว่าเราอนุญาตที่จะกลายเป็นขนาดใหญ่เช่นc c→∞ค่า จำกัด สำหรับการเปิดใช้งานเอาต์พุตa^L_jคืออะไร หลังจากแก้ปัญหานี้แล้วคุณจะเข้าใจได้อย่างชัดเจนว่าทำไมเราจึงคิดว่าc=1ฟังก์ชั่นนี้เป็นฟังก์ชั่นสูงสุดแบบ "นิ่ม" นี่คือที่มาของคำว่า "softmax" คุณสามารถติดตามรายละเอียดจากแหล่งนี้ (สมการ 83)


สำหรับฉันความคิดของฟังก์ชั่นสูงสุดแบบ "นิ่ม" เป็นวิธีที่ง่ายที่สุดในการปรับการใช้ softmax
tashuhka

3

เมื่อเพิ่มเข้ากับ Piotr Czapla คำตอบยิ่งมีค่าอินพุตมากเท่าใดความน่าจะเป็นของอินพุตสูงสุดจะเพิ่มขึ้นตามสัดส่วนเดียวกันและเมื่อเทียบกับอินพุตอื่น:

ป้อนคำอธิบายรูปภาพที่นี่


2

ทางเลือกของฟังก์ชั่น softmax ดูเหมือนว่าจะเป็นไปตามอำเภอใจเพราะมีฟังก์ชั่นการทำให้เป็นปกติอื่น ๆ อีกมากมาย ดังนั้นจึงไม่มีความชัดเจนว่าทำไมการสูญเสีย log-softmax จะทำงานได้ดีกว่าทางเลือกการสูญเสียอื่น ๆ

จาก " การสำรวจทางเลือก Softmax ที่เป็นของครอบครัว Spherical Loss " https://arxiv.org/abs/1511.05042

ผู้เขียนสำรวจฟังก์ชั่นอื่น ๆ บางหมู่ที่มีการขยายตัวของเทย์เลอร์expและเรียกว่า softmax softmaxทรงกลมและพบว่าบางครั้งพวกเขาอาจจะทำงานได้ดีขึ้นกว่าปกติ

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