ฟังก์ชันการเปิดใช้งาน rectilinear ช่วยแก้ปัญหาการไล่ระดับสีที่หายไปในเครือข่ายประสาทได้อย่างไร


40

ฉันพบหน่วยการเชิงเส้นที่ถูกต้อง (ReLU) ยกย่องในหลาย ๆ ที่เพื่อแก้ปัญหาการไล่ระดับสีที่หายไปสำหรับเครือข่ายประสาท นั่นคือหนึ่งใช้สูงสุด (0, x) เป็นฟังก์ชั่นการเปิดใช้งาน เมื่อการเปิดใช้งานเป็นบวกจะเห็นได้ชัดว่านี่เป็นสิ่งที่ดีกว่าพูดว่าฟังก์ชั่นการเปิดใช้งาน sigmoid เนื่องจากการสืบทอดมาเป็น 1 เสมอแทนที่จะเป็นค่าเล็ก ๆ โดยพลการสำหรับ x ขนาดใหญ่ ในทางกลับกันการได้มานั้นคือ 0 เมื่อ x น้อยกว่า 0 ในกรณีที่แย่ที่สุดเมื่อหน่วยไม่เคยถูกเปิดใช้งานน้ำหนักของหน่วยนี้จะไม่เปลี่ยนแปลงอีกต่อไปและหน่วยจะไม่มีประโยชน์ตลอดไป - ซึ่งดูเหมือนว่า เลวร้ายยิ่งกว่าการไล่ระดับสีขนาดเล็กที่หายไปมาก อัลกอริทึมการเรียนรู้จะจัดการกับปัญหานั้นอย่างไรเมื่อพวกเขาใช้ ReLU


2
สิ่งที่คุณอธิบายว่าเป็นกรณีที่เลวร้ายที่สุดเรียกว่าReLU ที่กำลังจะตาย
Martin Thoma

ฉันคิดว่าความคิดนี้ก็คือฟังก์ชั่นโลจิสติกส์เนื่องจากการไล่ระดับสีอาจมีขนาดเล็กตามอำเภอใจคุณสามารถรับการไล่ระดับสีแบบตัวเลขโดยการเขียนโลจิสติกส์ "เล็กน้อย" หลายประการ (ปัญหาจะเลวร้ายยิ่งขึ้น สำหรับฟังก์ชั่นทางลาดเนื่องจากการไล่ระดับสีเป็นค่าคงที่เป็นจำนวนชิ้นการไล่ระดับสีแบบผสมจะหายไปได้ก็ต่อเมื่อมีองค์ประกอบที่เป็นจริง 0
GeoMatt22

(ฉันไม่แน่ใจว่านี่เป็น "ถาวร" หรือไม่มันจะไม่กลายเป็นศูนย์หลังจากการฝึกอบรมเพิ่มเติมหรือไม่จากการพึ่งพาโหนดอื่นและ / หรือ data-mini-batch ปัจจุบัน (สำหรับการไล่ระดับสีแบบสุ่ม)
GeoMatt22

คำตอบ:


33

นี่คือกระดาษที่อธิบายถึงปัญหา ฉันอ้างอิงบางส่วนเพื่อให้ปัญหาชัดเจน

ฟังก์ชั่นการเปิดใช้งานวงจรเรียงกระแสช่วยให้เครือข่ายได้รับการเป็นตัวแทนเบาบาง ตัวอย่างเช่นหลังจากการกำหนดค่าเริ่มต้นอย่างสม่ำเสมอของน้ำหนักประมาณ 50% ของหน่วยการส่งออกที่ซ่อนอยู่อย่างต่อเนื่องเป็นศูนย์จริงและเศษส่วนนี้สามารถเพิ่มขึ้นได้อย่างง่ายดายด้วยการทำให้เป็นระเบียบแบบกระจัดกระจาย

ดังนั้นฟังก์ชั่นการเปิดใช้งานวงจรเรียงกระแสจะแนะนำผลกระทบที่เบาบางบนเครือข่าย นี่คือข้อดีบางส่วนของ sparsity จากกระดาษเดียวกัน;

  • disentangling ข้อมูล หนึ่งในวัตถุประสงค์ที่อ้างถึงของอัลกอริทึมการเรียนรู้ลึก (Bengio, 2009) คือการคลี่คลายปัจจัยที่อธิบายความแปรปรวนของข้อมูล การแสดงหนาแน่นถูกพันกันมากเนื่องจากการเปลี่ยนแปลงใด ๆ ในอินพุตจะแก้ไขรายการส่วนใหญ่ในเวกเตอร์การแสดงแทน แต่ถ้าการแสดงนั้นทั้งกระจัดกระจายและมีความทนทานต่อการเปลี่ยนแปลงอินพุทขนาดเล็กชุดของคุณสมบัติที่ไม่เป็นศูนย์จะได้รับการอนุรักษ์อย่างคร่าวๆจากการเปลี่ยนแปลงอินพุทเล็กน้อย

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

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

  • กระจาย แต่เบาบาง การกระจายแบบหนาแน่นนั้นเป็นรูปแบบที่ร่ำรวยที่สุดซึ่งอาจมีประสิทธิภาพมากกว่าชี้แจงแบบท้องถิ่น (Bengio, 2009) ประสิทธิภาพของการนำเสนอแบบเบาบางยังคงเพิ่มขึ้นอย่างมากโดยกำลังของเลขชี้กำลังนั้นเป็นจำนวนของคุณลักษณะที่ไม่เป็นศูนย์ พวกเขาอาจเป็นตัวแทนของการแลกเปลี่ยนที่ดีเกี่ยวกับเกณฑ์ข้างต้น

นอกจากนี้ยังตอบคำถามที่คุณถาม:

softplus(x)=log(1+ex)(Dugas et al., 2001) เวอร์ชันที่ราบรื่นของการแก้ไขแบบไม่เป็นเชิงเส้น เราสูญเสียความแน่นอน แต่อาจหวังว่าจะได้รับการฝึกอบรมที่ง่ายขึ้น อย่างไรก็ตามผลการทดลองมีแนวโน้มที่จะขัดแย้งกับสมมติฐานที่บอกว่าศูนย์ฮาร์ดสามารถช่วยการฝึกอบรมแบบมีผู้สอนได้จริง เราตั้งสมมติฐานว่าฮาร์ดที่ไม่เป็นเชิงเส้นไม่เจ็บตราบใดที่การไล่ระดับสีสามารถแพร่กระจายไปตามเส้นทางบางเส้นทางได้นั่นคือบางส่วนของหน่วยที่ซ่อนอยู่ในแต่ละชั้นจะไม่เป็นศูนย์ด้วยเครดิตและความผิดที่มอบหมายให้กับหน่วย ยิ่งกว่านั้นอีกเราตั้งสมมติฐานว่าการเพิ่มประสิทธิภาพนั้นง่ายกว่า

คุณสามารถอ่านกระดาษเพื่อดูรายละเอียดเพิ่มเติม


18

นี่คือเหตุผลที่อาจเป็นความคิดที่ดีกว่าถ้าใช้ PReLU, ELU หรือการเปิดใช้งานเหมือน ReLU อื่น ๆ ที่ไม่เพียงแค่ตายไปที่ 0 แต่สิ่งที่ตกอยู่ในระดับ 0.1 * x เมื่อ x ติดลบเพื่อเรียนรู้ต่อไป สำหรับฉันแล้วดูเหมือนว่า ReLUs จะมีประวัติเหมือนกับ sigmoid แต่ด้วยเหตุผลบางอย่างที่ผู้คนยังคงเผยแพร่เอกสารด้วยสิ่งเหล่านี้ ทำไม? ฉันไม่รู้

Dmytro Mishkin และคนอื่น ๆ ทดสอบเครือข่ายที่มีประเภทการเปิดใช้งานที่แตกต่างกันมากมายคุณควรศึกษาเกี่ยวกับประสิทธิภาพของฟังก์ชั่นการเปิดใช้งานที่แตกต่างกันและสิ่งอื่น ๆ. แม้ว่าฟังก์ชั่นบางอย่างเช่น XOR จะเรียนรู้ได้ดีขึ้นด้วย ReLU ธรรมดา อย่าคิดเกี่ยวกับสิ่งที่เกี่ยวกับระบบประสาทใด ๆ ในแง่ความเชื่อเพราะมุ้งโครงข่ายกำลังทำงานอยู่มาก ไม่มีใครในโลกที่รู้และเข้าใจพวกเขาดีพอที่จะบอกความจริงอันศักดิ์สิทธิ์ ไม่มีใคร ลองทำสิ่งต่าง ๆ ทำการค้นพบของคุณเอง ความคิดที่ว่าการใช้ ReLU นั้นเป็นการพัฒนาล่าสุดและเป็นเวลาหลายสิบปีที่ปริญญาเอกต่าง ๆ ในสาขาได้ใช้ฟังก์ชั่นการเปิดใช้งานที่ซับซ้อนเกินกว่าที่ตอนนี้เราสามารถหัวเราะได้เท่านั้น บ่อยครั้งที่การ "รู้" มากเกินไปอาจทำให้คุณได้รับผลลัพธ์ที่ไม่ดี สิ่งสำคัญคือต้องเข้าใจว่าเครือข่ายประสาทไม่ใช่วิทยาศาสตร์ที่แน่นอน ไม่มีสิ่งใดในวิชาคณิตศาสตร์ที่บอกว่าเครือข่ายประสาทเทียมจะทำงานได้ดีเหมือนจริง มันเป็นแบบวิเคราะห์พฤติกรรม และดังนั้นจึงอ่อนมาก

FYI แม้การเปิดใช้งานค่าสัมบูรณ์จะได้รับผลลัพธ์ที่ดีสำหรับปัญหาบางอย่างเช่นปัญหาที่คล้ายกับ XOR ฟังก์ชั่นการเปิดใช้งานที่แตกต่างกันนั้นเหมาะสมกับวัตถุประสงค์ที่แตกต่างกัน ฉันลอง Cifar-10 ด้วย abs () และดูเหมือนว่าจะแย่ลง แม้ว่าฉันไม่สามารถพูดได้ว่า "มันเป็นฟังก์ชั่นการเปิดใช้งานที่แย่ลงสำหรับการจดจำภาพ" เพราะฉันไม่แน่ใจเช่นหากการเตรียมข้อมูลเบื้องต้นของฉันดีที่สุดสำหรับมัน ฯลฯ ความจริงที่ว่ามันเป็นการเรียนรู้ที่ค่อนข้าง ฉันประหลาดใจมาก

นอกจากนี้ในชีวิตจริง "อนุพันธ์" ที่คุณส่งไปยัง backprop ไม่จำเป็นต้องตรงกับอนุพันธ์ทางคณิตศาสตร์ที่แท้จริง

ฉันจะไปไกลถึงจะบอกว่าเราควรห้ามเรียกพวกเขาว่า "อนุพันธ์" และเริ่มเรียกพวกเขาอย่างอื่นเช่น error activation functionsที่จะไม่ปิดจิตใจของเรากับความเป็นไปได้ของการซ่อมแซมกับพวกเขา ตัวอย่างเช่นคุณสามารถใช้การเปิดใช้งาน ReLU ได้ แต่ให้ค่า 0.1 หรืออะไรทำนองนั้นแทน 0 เป็นอนุพันธ์สำหรับ x <0 ในทางหนึ่งคุณก็มี ReLU ธรรมดา แต่ด้วยเซลล์ประสาทที่ไม่สามารถ "ตายจากการปรับตัว" ฉันเรียก NecroRelu นี้เพราะมันเป็น ReLU ที่ตายไม่ได้ และในบางกรณี (ไม่แน่นอนในที่สุด) ที่ทำงานได้ดีกว่า LeakyReLU ธรรมดาซึ่งจริง ๆ แล้วมีอนุพันธ์ 0.1 ที่ x <0 และดีกว่า ReLU ปกติ ฉันไม่คิดว่าคนอื่นจำนวนมากเกินไปจะตรวจสอบฟังก์ชันเช่นนี้หรือสิ่งที่คล้ายกันจริง ๆ แล้วอาจเป็นฟังก์ชั่นเปิดใช้งานเจ๋ง ๆ ที่ไม่มีใครพิจารณาเพียงเพราะพวกเขาสนใจคณิตศาสตร์

สำหรับสิ่งที่ใช้โดยทั่วไปสำหรับฟังก์ชั่นการเปิดใช้งาน tanH (x) มันเป็นเรื่องปกติที่จะส่ง 1 - x²แทน 1 - tanH (x) ²เป็นอนุพันธ์เพื่อคำนวณสิ่งต่าง ๆ ได้เร็วขึ้น

นอกจากนี้โปรดทราบว่า ReLU ไม่ใช่ทั้งหมดที่ "ดีกว่าอย่างเห็นได้ชัด" เช่น TanH TanH น่าจะดีกว่าในบางกรณี เพียงแค่ดูเหมือนว่าไม่ใช่การจดจำภาพ แม้ว่า ELU จะมีความอ่อนนุ่มของ sigmoid เล็กน้อยและเป็นหนึ่งในฟังก์ชั่นการเปิดใช้งานที่เป็นที่รู้จักมากที่สุดสำหรับการจดจำภาพในขณะนี้ ฉันไม่ได้ลองจริง ๆ แต่ฉันพนันได้ว่าสามารถตั้งหลายกลุ่มที่มีฟังก์ชั่นการเปิดใช้งานที่แตกต่างกันในระดับเลเยอร์เดียวกันเพื่อได้เปรียบ เนื่องจากเหตุผลที่แตกต่างกันอธิบายได้ดีกว่าด้วยฟังก์ชั่นการเปิดใช้งานที่แตกต่างกัน และบางครั้งคุณอาจต้องการการประเมินหลายประเภท

โปรดทราบว่าสิ่งสำคัญคือต้องมีการเน้นข้อความที่สอดคล้องกับประเภทของฟังก์ชั่นการเปิดใช้งานของคุณ ReLU แบบ Leaky ต้องการ init อื่น ๆ ที่ ReLU แบบธรรมดาตัวอย่างเช่น

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


ฉันสนใจ NecroReLU ของคุณ แต่ไม่สามารถรับได้จากสิ่งที่คุณเขียนว่าแตกต่างจาก LeakyReLU อย่างไร คุณช่วยอธิบายได้ไหม
Tom Hale

แตกต่างจากการเปิดใช้งานคือ ReLU แต่อนุพันธ์คือ LReLU
ÍhorMé

@ ÍhorMéตามที่คุณพูดถึงinitialization that corresponds to a type of activation function one is usingในNOTEในโพสต์ของคุณคุณสามารถให้คำแนะนำของคุณสำหรับเรื่องนี้ในบรรทัดเดียวกันฉันไม่มั่นใจอย่างเต็มที่ว่าการใช้การเปิดใช้งาน ReLu ผ่าน sigmoid / tanH เป็นวิธีแก้ปัญหาการไล่ระดับสี / การระเบิด .
anu

16

นี่คือคำอธิบายการแก้ปัญหา:

  • การอัพเดทการไล่ระดับสีใน backprop ประกอบด้วยหลายปัจจัยคูณ
  • ยิ่งคุณเข้าสู่จุดเริ่มต้นของเครือข่ายมากเท่าไรยิ่งมีปัจจัยเหล่านี้คูณเข้าด้วยกันเพื่อให้ได้การอัปเดตไล่ระดับสีมากขึ้นเท่านั้น
  • หลายปัจจัยเหล่านี้เป็นอนุพันธ์ของฟังก์ชั่นการเปิดใช้งานของเซลล์ประสาท - ส่วนที่เหลือเป็นน้ำหนักอคติ ฯลฯ
  • จากปัจจัยเหล่านี้สิ่งที่มีความสำคัญอย่างยิ่งคือน้ำหนักอคติ ฯลฯ อนุพันธ์ของฟังก์ชั่นการเปิดใช้งานนั้นเป็นพารามิเตอร์ปรับค่าชนิดหนึ่งที่ออกแบบมาเพื่อให้การไล่ระดับสีลงไปในทิศทางที่ถูกต้องกับความเร็วที่เหมาะสม
  • หากคุณคูณจำนวนคำที่น้อยกว่า 1 คำเหล่านั้นจะมีแนวโน้มเป็นศูนย์ที่คุณมีคำศัพท์มากกว่าศูนย์ ดังนั้นการไล่ระดับสีจะหายไปเมื่อคุณได้รับเพิ่มเติมจากเลเยอร์เอาท์พุทหากคุณมีฟังก์ชั่นการเปิดใช้งานซึ่งมีความชัน <1
  • หากคุณคูณจำนวนเทอมที่มากกว่า 1 พวกมันจะมีแนวโน้มเพิ่มขึ้นเรื่อย ๆ เมื่อคุณได้รับมากขึ้นจากเลเยอร์เอาท์พุทหากคุณมีฟังก์ชั่นการเปิดใช้งานซึ่งมีความชัน> 1
  • ถ้าเราทำได้อย่างน่าอัศจรรย์ได้รับเงื่อนไขเหล่านี้โดยอนุพันธ์ของฟังก์ชั่นการเปิดใช้งานเป็น 1 ซึ่งหมายความว่าการมีส่วนร่วมทั้งหมดในการอัปเดตไล่ระดับสีนั้นมาจากอินพุตไปสู่ปัญหาและโมเดล - น้ำหนัก อินพุตอคติ - แทนที่จะเลือกใช้ฟังก์ชันการเปิดใช้งานสิ่งประดิษฐ์
  • RELU มีการไล่ระดับสี 1 เมื่อเอาท์พุท> 0 และศูนย์เป็นอย่างอื่น
  • ดังนั้นการคูณอนุพันธ์ RELU เข้าด้วยกันในสมการ backprop มีคุณสมบัติที่ดีของการเป็น 1 หรือศูนย์ - การปรับปรุงไม่ได้เป็นอะไรเลยหรือรับการสนับสนุนจากน้ำหนักและอคติอื่นทั้งหมด

คุณอาจคิดว่ามันจะเป็นการดีกว่าถ้ามีฟังก์ชั่นเชิงเส้นแทนที่จะแบนเมื่อ x <0 แนวคิดที่นี่คือ RELU สร้างเครือข่ายแบบเบาบางที่มีลิงก์จำนวนเล็กน้อยที่มีประโยชน์ซึ่งมีความน่าเชื่อถือทางชีวภาพมากขึ้น น้ำหนักอย่างมากมีประโยชน์จริง ๆ นอกจากนี้การจำลองฟังก์ชั่นที่น่าสนใจด้วยอวนประสาทก็เป็นไปได้เฉพาะกับความไม่เชิงเส้นบางส่วนในฟังก์ชั่นการเปิดใช้งาน ฟังก์ชั่นเปิดใช้งานแบบเชิงเส้นส่งผลให้เกิดผลลัพธ์แบบเส้นตรงซึ่งไม่น่าสนใจมาก


คำอธิบายที่ดีคุณช่วยอธิบายเพิ่มเติมเกี่ยวกับประเด็นที่ 6 ได้หรือไม่โปรดให้คำแนะนำของคุณสำหรับเรื่องนี้ในบรรทัดเดียวกันฉันไม่มั่นใจอย่างเต็มที่ว่าการใช้การเปิดใช้งาน ReLu บน sigmoid / tanH เป็นวิธีแก้ปัญหาการไล่ระดับ / การระเบิด
anu

1
การกำหนดน้ำหนักอย่างเหมาะสมเป็นสิ่งสำคัญเช่นกัน แต่เป็นทางเลือกของฟังก์ชั่นการเปิดใช้งาน เป็นตัวอย่างเล็กน้อยถ้าน้ำหนักของคุณเริ่มต้นเป็นศูนย์และคุณใช้ RELU แล้วผลลัพธ์ทั้งหมดจากเซลล์ประสาทของคุณจะเป็นศูนย์และอยู่ที่ศูนย์ ... ทั้ง RELU เพียงอย่างเดียวหรือเทคนิคการเริ่มต้นเพียงอย่างเดียวแก้ปัญหาหาย / ระเบิดไล่ระดับ ไม่แน่ใจว่าคุณหมายถึงอะไรอย่างละเอียดในจุดที่ 6 สิ่งที่ไม่ชัดเจน?
Tom Walker

1

ลองพิจารณาความสัมพันธ์ที่เกิดซ้ำที่กำหนดการเผยแพร่กลับของสัญญาณข้อผิดพลาด

Wibiif

hii

si=Wi(hi1)+bi

hi=f(si)

δi

δi=Wi+1(δi+1f(si))

ff(si)=(1hi2)hi

f=Relu=max(0,x)ff=numpy.where(hi>0,1,0)

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

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