ปัญหา“ ตาย ReLU” ในเครือข่ายประสาทคืออะไร?


119

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

"น่าเสียดายที่หน่วย ReLU นั้นบอบบางในระหว่างการฝึกและสามารถ" ตาย "ได้ตัวอย่างเช่นการไล่ระดับสีขนาดใหญ่ที่ไหลผ่านเซลล์ประสาท ReLU อาจทำให้น้ำหนักนั้นอัปเดตในลักษณะที่เซลล์ประสาทจะไม่เปิดใช้งานบน datapoint ใด ๆ อีก เกิดขึ้นแล้วการไล่ระดับสีที่ไหลผ่านหน่วยจะเป็นศูนย์จากจุดนั้นตลอดไปนั่นคือหน่วย ReLU สามารถตายอย่างไม่สามารถกลับคืนได้ในระหว่างการฝึกอบรมเนื่องจากพวกเขาสามารถชนกับข้อมูลได้มากมายตัวอย่างเช่นคุณอาจพบว่า 40 % ของเครือข่ายของคุณอาจเป็น "ตาย" (เช่นเซลล์ประสาทที่ไม่เคยเปิดใช้งานในชุดข้อมูลการฝึกอบรมทั้งหมด) หากอัตราการเรียนรู้สูงเกินไปหากตั้งค่าอัตราการเรียนรู้ที่เหมาะสมจะทำให้เกิดปัญหาน้อยลง "

การตายของเซลล์ประสาทที่นี่หมายถึงอะไร

คุณช่วยกรุณาอธิบายคำอธิบายที่เข้าใจง่ายด้วยคำศัพท์ที่ง่ายขึ้นได้ไหม


2
บางคนสามารถอ้างอิงถึงบทความทางวิทยาศาสตร์เกี่ยวกับ "เซลล์ประสาทที่ตายแล้ว" ได้หรือไม่? เนื่องจากนี่เป็นผลลัพธ์แรกของความพยายามของ Google มันจะดีมากหากคำถามนี้ได้รับการแก้ไขพร้อมการอ้างอิง
Marek Židek

เราสามารถป้องกันอคติโดยการทำให้เป็นมาตรฐานเพื่อแก้ปัญหานี้ได้หรือไม่?
Len

3
Dudes ฉันจัดการเพื่อฟื้นฟูเซลล์ประสาท relu ตายโดยให้ค่าสุ่ม (กระจายแบบปกติ) ใหม่ในแต่ละยุคสำหรับน้ำหนัก <= 0 ฉันใช้วิธีนี้ร่วมกับน้ำหนักแช่แข็งที่ระดับความลึกที่แตกต่างกันในขณะที่การฝึกอบรมยังคงสูงขึ้น m ไม่แน่ใจว่านี่คือสิ่งที่เราเรียกว่าการเปลี่ยนเฟสหรือไม่) ตอนนี้สามารถใช้อัตราการเรียนรู้ที่สูงขึ้นได้ผลที่ดีกว่าโดยรวม (ทดสอบที่ถดถอยเชิงเส้นเท่านั้น) มันง่ายมากที่จะใช้งาน
boli

1
@boli คุณสามารถแบ่งปันการใช้งานที่นี่ได้หรือไม่
anu

คำตอบ:


121

ReLU "dead" จะส่งออกค่าเดียวกันเสมอ (ศูนย์ขณะที่มันเกิดขึ้น แต่นั่นไม่ใช่สิ่งสำคัญ) สำหรับอินพุตใด ๆ อาจเป็นเพราะการเรียนรู้คำศัพท์อคติเชิงลบขนาดใหญ่สำหรับน้ำหนักของมัน

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

เมื่อ ReLU สิ้นสุดลงในสถานะนี้มันไม่น่าจะกู้คืนได้เนื่องจากฟังก์ชั่นการไล่ระดับสีที่ 0 เป็น 0 ดังนั้นการเรียนรู้ทางลาดแบบลาดลงจะไม่เปลี่ยนน้ำหนัก "รั่ว" ReLUs ที่มีการไล่ระดับสีเป็นบวกเล็ก ๆ สำหรับอินพุตลบ ( y=0.01xเมื่อ x <0 พูด) เป็นความพยายามหนึ่งในการแก้ไขปัญหานี้และให้โอกาสในการกู้คืน

เซลล์ประสาท sigmoid และ tanh สามารถทนทุกข์ทรมานจากปัญหาที่คล้ายกันเช่นค่าของพวกเขาอิ่มตัว แต่อย่างน้อยก็มีการไล่ระดับสีเล็ก ๆ น้อย ๆ ให้พวกเขาสามารถกู้คืนในระยะยาว


7
ความคิดเห็นที่ดีและเป็นมูลค่าการกล่าวถึงหน่วยเชิงเส้นเชิงเส้น (ELUs) ซึ่งสามารถช่วยแก้ไขปัญหานั้นในทางที่ดีขึ้น: arxiv.org/abs/1511.07289
padura

14
@alex: เพราะความลำเอียงมีความสำคัญอย่างยิ่งต่อความแม่นยำ การกำจัดความลำเอียงนั้นเหมือนกับการบอกว่าระนาบการตัดสินใจทั้งหมดจะต้องผ่านจุดกำเนิด - โดยมีข้อยกเว้นเล็กน้อยนี่เป็นทางเลือกที่ไม่ดี อันที่จริงแล้วการกำจัดเงื่อนไขอคติในโครงข่ายประสาทเทียมหรือโมเดลที่เกี่ยวข้อง (เช่นการถดถอยเชิงเส้นหรือการถดถอยโลจิสติก) มักจะหมายความว่าแบบจำลองของคุณจะได้รับอคติ! เป็นหนึ่งในไม่กี่วิธีที่คุณสามารถจบลงด้วยแบบจำลองที่มีทั้ง underfit และ overfit ในเวลาเดียวกัน,,
Neil Slater

1
@Alex: ฉันคิดว่าเป็นเรื่องปกติที่จะเพิ่มอคติเชิงบวกเล็กน้อยให้กับ ReLUs ฉันไม่ทราบว่าจะช่วยด้วย "ปัญหา ReLU ปัญหา" - มันน่าจะไม่เปลี่ยนค่าการไล่ระดับสีเป็นตัวเลขมาก (เพราะการไล่ระดับสีเป็น 1 หรือ 0 สำหรับ ReLU และเป็นเมื่อมันเป็น 1 ที่มันสามารถทำงานเกิน อคติเริ่มต้นขนาดเล็กจะสร้างความแตกต่างน้อยมาก) ส่วนใหญ่ฉันคิดว่ามันเป็นเพียงกลลวงที่จะเพิ่มการกระตุ้นเล็กน้อยให้กับการเรียนรู้เริ่มต้น - แต่นั่นอาจช่วยได้โดยการเริ่มต้นที่ดีกว่า
Neil Slater

1
@max: คุณไม่มีส่วน "สำหรับอินพุตใด ๆ " ของคำตอบของฉัน การไล่ระดับสีจะไม่ไหลไปสู่น้ำหนักใด ๆ ที่เกี่ยวข้องกับเซลล์ประสาท "ตาย" ในเครือข่าย feed-forward เพราะเส้นทางทั้งหมดไปยังน้ำหนักเหล่านั้นถูกตัด - ไม่มีเส้นทางอื่นสำหรับการไล่ระดับสีไปยังส่วนย่อยของการให้อาหารน้ำหนักที่หน่วย ReLU คุณอาจดู ReLU ในเช่น CNN หรือมีการแบ่งปันน้ำหนักซึ่งในกรณีนี้สถานที่ทั้งหมดในแผนที่คุณลักษณะจะต้องเป็นศูนย์ในครั้งเดียว อย่างไรก็ตามฉันคิดว่าเป็นอินสแตนซ์อื่นของ "สำหรับอินพุตใด ๆ "
Neil Slater

1
@anu: โดยการไล่ระดับสี การไล่ระดับสีในเชิงบวกขนาดใหญ่ที่เกิดจากค่าความผิดพลาดที่มีขนาดใหญ่อาจส่งผลให้ขั้นตอนเดียวของคำอคตินั้นมีขนาดใหญ่พอที่จะ "ทำลาย" เซลล์ประสาทดังนั้นมันจะไปถึงสถานะ (สำหรับน้ำหนักและอคติ) ถึงฟังก์ชั่น ReLU ไม่เคยสูงกว่า 0
นีลสเลเตอร์

102

ตรวจสอบลักษณะของ ReLU (หน่วยเชิงเส้นเชิงเส้น) ดู:

xn

zn=i=0kwiain
wiainxnReLU=max(0,zn)

สมมติว่าเป็นการวัดความผิดพลาดที่ง่ายมาก

error=ReLUy

errorzn=δn={1zn00zn<0
wj
error=errorwj=errorzn×znwj=δn×ajn={ajnzn00zn<0

=xn

xnx

zn<0

ReLU=max(0.1x,x)ป้อนคำอธิบายรูปภาพที่นี่


คุณไม่ลืมคำอคติในสูตรสำหรับอินพุตไปยังเครื่องปรับหรือไม่
Tom Hale

ฉันคิดว่าฉันทำตามสัญกรณ์ของตำราบางเล่มที่คิดว่า a_0 = 1 สำหรับทุกชั้นและ w_0 เป็นอคติ ความลำเอียงไม่สำคัญดังนั้นเราควรละเว้นมันต่อไป
MohamedEzz

@MohamedEzz ฉันไม่เข้าใจประเด็นของคุณWhat if, for the input 𝑥𝑛, the current weights put the ReLU on the left flat side while it optimally should be on the right side for this particular input ?ถ้าอินพุตเป็นลบการไล่ระดับสีจะเป็น 0 สิ่งที่ดีที่สุดสำหรับกรณีนี้ คุณช่วยทำความเข้าใจมันได้มั้ย
anu

1
ตามความเหมาะสมฉันหมายถึงว่าหากเครือข่ายทำการคาดการณ์ที่ดีกว่าสำหรับอินพุตนี้จำเป็นต้องปรับน้ำหนักเพื่อให้ ReLU ให้ค่าเป็นบวกจะไม่สามารถทำการปรับได้เนื่องจากมีการไล่ระดับสี 0 ด้านแบน
MohamedEzz

คำตอบที่น่าอัศจรรย์ ขอบคุณ
David Refaeli

13

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

L(W)LLWL

โดยทั่วไปสิ่งที่เกิดขึ้นนั้นขึ้นอยู่กับว่าข้อมูลไหลผ่านเครือข่ายอย่างไร คุณสามารถจินตนาการได้ว่าเมื่อการฝึกอบรมดำเนินไปเรื่อย ๆ เซลล์ประสาทที่สร้างคุณค่าสามารถลอยไปมาและทำให้เป็นไปได้ที่น้ำหนักจะฆ่าการไหลของข้อมูลทั้งหมดผ่านบางส่วน (บางครั้งพวกเขาอาจออกจากการกำหนดค่าที่ไม่พึงประสงค์เหล่านี้เนื่องจากการอัปเดตน้ำหนักก่อนหน้านี้ในเครือข่าย แต่!) ฉันสำรวจความคิดนี้ในบล็อกโพสต์เกี่ยวกับการเริ่มต้นน้ำหนัก - ซึ่งสามารถนำไปสู่ปัญหานี้ - และความสัมพันธ์กับการไหลของข้อมูล ฉันคิดว่าจุดของฉันที่นี่สามารถแสดงโดยพล็อตจากบทความนั้น:

การเปิดใช้งานใน ReLU MLP ด้วยกลยุทธ์การเริ่มต้นที่แตกต่างกัน

พล็อตแสดงการเปิดใช้งานใน 5 เลเยอร์ Multi-Layer Perceptron พร้อมการเปิดใช้งาน ReLU หลังจากผ่านไปหนึ่งครั้งผ่านเครือข่ายด้วยกลยุทธ์การเริ่มต้นที่แตกต่างกัน คุณจะเห็นว่าขึ้นอยู่กับการกำหนดค่าน้ำหนักผลลัพธ์ของเครือข่ายของคุณสามารถถูกปิดได้

ภาคผนวกทางคณิตศาสตร์

Lxj(i)jif(s)=max(0,s)sj(i)(i+1)i(i+1)

Lwjk(i)=Lxk(i+1)xk(i+1)wjk(i).

คำแรกทางด้านขวาสามารถคำนวณซ้ำได้ ที่สองทางด้านขวาเป็นสถานที่แห่งเดียวที่เกี่ยวข้องโดยตรงกับน้ำหนักและสามารถแยกย่อยเป็นwjk(i)

xk(i+1)wjk(i)=f(sj(i))sj(i)sj(i)wjk(i)=f(sj(i))xj(i).

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


คำอธิบายที่ยอดเยี่ยม! โปรดช่วยฉันเข้าใจTherefore, if your inputs are on roughly the same scale, a large step in the direction of the gradient can leave you with weights that give similar inputs which can end up being negative.ว่าน้ำหนักตัวเป็นลบได้อย่างไรถ้าอินพุตนั้นเป็นค่าปกติ?
anu

@anu การอัปเดตน้ำหนักคือดังนั้นถ้าคุณทำตามขั้นตอนใหญ่หมายถึงในกรณีนี้การเลือกขนาดใหญ่และถ้าเป็นค่าบวกคุณจะเห็นว่าอาจกลายเป็น เชิงลบ นี่เป็นสิ่งที่ไม่ดีโดยเฉพาะอย่างยิ่งหากเราอัปเดตอคติให้เป็นค่าลบจำนวนมาก wλdwλdww
จอห์นสัน

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

เพราะอคติไม่ได้แก้ไขโดยการป้อนข้อมูล:ดังนั้นหากเป็นลบมากอาจยังคงอยู่ในเชิงลบต่อค่าทั้งหมดของxb z xz=wx+bbzx
จอห์นสัน

5

จะเจาะจงมากขึ้นในภาษาในขณะที่การไล่ระดับสีท้องถิ่นของ ReLU (ซึ่งคือ ) คูณการไล่ระดับสีที่ไหลกลับเนื่องจากการแพร่กระจายกลับผลของการไล่ระดับสีที่อัปเดตอาจเป็นจำนวนลบมาก (ถ้าการไล่ระดับที่ไหล - back เป็นจำนวนลบจำนวนมาก)1

การไล่ระดับสีเชิงลบที่มีขนาดใหญ่ที่มีขนาดใหญ่นั้นสร้างเชิงลบขนาดใหญ่เมื่ออัตราการเรียนรู้ค่อนข้างใหญ่ดังนั้นจะระงับการอัปเดตที่จะเกิดขึ้นในเซลล์ประสาทนี้เนื่องจากแทบจะเป็นไปไม่ได้ที่จะใส่จำนวนบวกจำนวนมาก เสีย" w_iW ฉันwiwi


4

"Dying ReLU" หมายถึงเซลล์ประสาทที่ผลลัพธ์ 0 สำหรับข้อมูลของคุณในชุดการฝึกอบรม สิ่งนี้เกิดขึ้นเนื่องจากผลรวมของน้ำหนัก * อินพุตในเซลล์ประสาท (หรือเรียกอีกอย่างว่าการเปิดใช้งาน ) จะกลายเป็น <= 0 สำหรับรูปแบบอินพุตทั้งหมด สิ่งนี้ทำให้ ReLU ส่งออก 0 เนื่องจากอนุพันธ์ของ ReLU เป็น 0 ในกรณีนี้ไม่มีการอัพเดตน้ำหนักและเซลล์ประสาทค้างที่เอาต์พุต 0

สิ่งที่ควรทราบ:

  1. การตาย ReLU ไม่ได้หมายความว่าผลผลิตของเซลล์ประสาทจะยังคงเป็นศูนย์ในเวลาทดสอบเช่นกัน ขึ้นอยู่กับความแตกต่างของการกระจายนี้อาจจะใช่หรือไม่ใช่ก็ได้
  2. การตายของ ReLU ไม่ใช่การตายอย่างถาวร หากคุณเพิ่มข้อมูลการฝึกอบรมใหม่หรือใช้รูปแบบการฝึกอบรมล่วงหน้าสำหรับการฝึกอบรมใหม่เซลล์ประสาทเหล่านี้อาจเริ่มต้นใหม่
  3. ในทางเทคนิคการตาย ReLU ไม่จำเป็นต้องส่งออก 0 สำหรับข้อมูลการฝึกอบรมทั้งหมด มันอาจเกิดขึ้นที่มันส่งออกที่ไม่เป็นศูนย์สำหรับข้อมูลบางส่วน แต่จำนวนของยุคไม่เพียงพอที่จะย้ายน้ำหนักอย่างมีนัยสำคัญ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.