ทางเลือกของ Gradient Descent คืออะไร?


45

Gradient Descent มีปัญหาในการติดอยู่ใน Local Minima เราจำเป็นต้องใช้เวลาเอ็กซ์โพเนนเชียลของการไล่ระดับสีเพื่อค้นหาค่าต่ำสุดของโลก

ใครสามารถบอกฉันเกี่ยวกับทางเลือกอื่น ๆ ของการไล่ระดับสีแบบลาดเอียงที่ใช้ในการเรียนรู้เครือข่ายประสาทเทียมพร้อมกับข้อดีข้อเสีย

คำตอบ:


37

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

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

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

วิธีที่ดีที่สุดในการหลีกเลี่ยงมินิมาท้องถิ่นในโครงข่ายประสาทเทียมคือการใช้แบบจำลองกระบวนการเกาส์เซียน (หรือเครือข่ายนิวรัลพื้นฐานฟังก์ชัน Radial) ซึ่งมีปัญหาน้อยกว่ากับมินิมาท้องถิ่น


8
จริงแท้แน่นอน. ปัญหาของการไม่ค้นหาค่าต่ำสุดของโลกนั้นเกินจริง
bayerj

2
การเกิด overfitting เกิดขึ้นเมื่อคุณใช้พารามิเตอร์จำนวนมากในแบบจำลอง (กรณีการใช้งาน NN ทั่วไป) มันไม่เกี่ยวข้องกับ minima ท้องถิ่น - อย่างน้อยก็ไม่ได้ในรูปแบบที่ชัดเจน คุณสามารถติดขัดในระดับต่ำสุดในท้องถิ่นไม่ดีแม้จะมี NN ขนาดเล็กเช่นมีพารามิเตอร์ฟรีน้อยมาก
carlosayam

1
L(ω)=(x(1)ω)2+(x(2)ω)2x(1),x(2)ω. มันง่ายที่จะเห็นว่ามีจุดต่ำสุดในท้องถิ่นระหว่างทุก ๆ สองจุดติดต่อกันนั่นคือยิ่งมีข้อมูลมากน้อยแค่ไหน! ทั่วโลกบรรลุถึงระหว่างจุดที่ใกล้ที่สุดในชุดข้อมูล นี่มันสุดขีดฉันรู้ แต่ฉันเคยเห็นพฤติกรรมที่คล้ายคลึงกันในการแก้ไขปัญหาจุดเปลี่ยน
carlosayam

1
@DikranMarsupial - ฉันไม่มีตัวอักษรเพียงพอที่จะจบประโยคของฉัน :) ฉันเคยเห็นพฤติกรรมที่คล้ายคลึงกันในการแก้ปัญหาจุดเปลี่ยน ... โดยใช้เครือข่ายประสาท ในปัญหาประเภทนี้ค่าต่ำสุดในท้องถิ่นมักจะไม่ดี ดังนั้นฉันจึงไม่เห็นด้วยว่าปัญหานี้ได้รับการแก้ไขมากเกินไป
carlosayam

1
@DikranMarsupial ใช่ ข้อสังเกตด้านข้าง: ในขณะที่คุณเห็นว่าการไล่ระดับสีที่นี่ถูกใช้เพื่อแสดงภาพเลเยอร์ที่ซ่อนอยู่ในโครงข่ายประสาทเทียมซึ่งเป็นวิธีการที่ได้รับความนิยม ฉันเห็น "magpie" เป็นเพียงหนึ่งใน minima ท้องถิ่นจำนวนมาก - แต่ผู้เขียนไม่เห็นด้วยวิธีนี้และฉันเชื่อว่าไม่มีร่างกายทำ ความผิดพลาดครั้งใหญ่ในความคิดของฉัน
carlosayam

24

การไล่ระดับสีเป็นขั้นตอนวิธีการปรับให้เหมาะสม

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

  • Stochastic Gradient Descent (SGD) , minibatch SGD, ... : คุณไม่ต้องประเมินการไล่ระดับสีสำหรับชุดการฝึกอบรมทั้งหมด แต่สำหรับตัวอย่างหนึ่งชุดหรือตัวอย่างกลุ่มชุดเดียวซึ่งโดยทั่วไปจะเร็วกว่าชุดไล่ระดับสีแบบแบทช์ มีการใช้ minibatches เพื่อไล่ระดับสีให้เรียบและปรับขนานไปข้างหน้าและ backpropagation ข้อได้เปรียบเหนืออัลกอริธึมอื่น ๆ คือการทำซ้ำแต่ละครั้งจะอยู่ใน O (n) (n คือจำนวนน้ำหนักใน NN ของคุณ) SGD มักจะไม่ติดอยู่ใน minima ท้องถิ่น (!) เพราะมันสุ่ม
  • การไล่ระดับสีแบบไม่เชิงเส้นเชิงเส้น : ดูเหมือนว่าจะประสบความสำเร็จอย่างมากในการถดถอย O (n) ต้องใช้การไล่ระดับแบทช์ (ดังนั้นจึงอาจไม่ใช่ตัวเลือกที่ดีที่สุดสำหรับชุดข้อมูลขนาดใหญ่)
  • L-BFGS : ดูเหมือนว่าจะประสบความสำเร็จอย่างมากในการจัดหมวดหมู่ใช้การประมาณแบบ Hessian ต้องการการไล่ระดับแบทช์
  • Levenberg-Marquardt Algorithm (LMA) : อันที่จริงแล้วนี่เป็นอัลกอริธึมการเพิ่มประสิทธิภาพที่ดีที่สุดที่ฉันรู้ มันมีข้อเสียว่าความซับซ้อนของมันนั้นประมาณ O (n ^ 3) อย่าใช้มันสำหรับเครือข่ายขนาดใหญ่!

และมีขั้นตอนวิธีการอื่น ๆ อีกมากมายที่นำเสนอสำหรับการเพิ่มประสิทธิภาพของเครือข่ายประสาทคุณสามารถ google สำหรับการเพิ่มประสิทธิภาพหรือ v-SGD รัฐฟรี (มีหลายประเภทของสิงคโปร์ที่มีอัตราการเรียนรู้การปรับตัวเช่นดูที่นี่ )

การเพิ่มประสิทธิภาพสำหรับ NNs ไม่ใช่ปัญหาที่แก้ไขได้! จากประสบการณ์ของฉันความท้าทายที่ยิ่งใหญ่ที่สุดคือไม่ต้องหาคนท้องถิ่นให้เจอ อย่างไรก็ตามความท้าทายคือการออกจากพื้นที่ราบเรียบจัดการกับฟังก์ชันข้อผิดพลาดที่ไม่ดี ฯลฯ นั่นคือเหตุผลที่ LMA และอัลกอริทึมอื่น ๆ ที่ใช้การประมาณค่าของ Hessian มักจะทำงานได้ดีในทางปฏิบัติและผู้คนพยายามพัฒนาเวอร์ชั่นสุ่ม ที่ใช้ข้อมูลลำดับที่สองที่มีความซับซ้อนต่ำ อย่างไรก็ตามบ่อยครั้งที่พารามิเตอร์ที่ได้รับการปรับมาเป็นอย่างดีสำหรับ minibatch SGD นั้นดีกว่าอัลกอริธึมการเพิ่มประสิทธิภาพที่ซับซ้อนใด ๆ

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


15

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


+1 ควรคำนึงถึงว่าการเพิ่มประสิทธิภาพเกณฑ์การฝึกอบรมอย่างจริงจังมีแนวโน้มที่จะนำไปสู่การปรับตัวให้เหมาะสมมากเกินไปเว้นแต่จะดำเนินการตามขั้นตอนเพื่อป้องกันมันดังนั้นฉันจะหลีกเลี่ยง PSO และ EA ยกเว้นเกณฑ์การฝึกอบรม การลงโทษ
Dikran Marsupial

5
@ anna-earwen คุณช่วยระบุข้อมูลอ้างอิงที่ PSO ทำงานได้เปรียบเทียบกับ SGD ได้ไหม
emrea

8

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

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

วิธีแรกคือเคล็ดลับการปรับให้เหมาะสม (ฉันเรียกมันว่าการขุดอุโมงค์แบบ Convolutional เนื่องจากใช้การแปลงค่าพารามิเตอร์เพื่อเปลี่ยนฟังก์ชั่นเป้าหมาย) มันทำให้พื้นผิวของแนวการทำงานของต้นทุนลดลงและกำจัด minima ท้องถิ่นบางส่วนออกไป ทำให้การค้นหาขั้นต่ำทั่วโลกง่ายขึ้น (หรือต่ำกว่าท้องถิ่นขั้นต่ำ)

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

ต่อไปนี้เป็นตัวอย่างผลลัพธ์สำหรับปัญหาแบบสองเกลียว สถาปัตยกรรมเครือข่ายเหมือนกันสำหรับทั้งสามคน: มีเลเยอร์ที่ซ่อนอยู่เพียง 30 โหนดเท่านั้นและชั้นเอาต์พุตเป็นแบบเชิงเส้น อัลกอริทึมการเพิ่มประสิทธิภาพที่ใช้คือ LMA ภาพด้านซ้ายใช้สำหรับตั้งค่าวานิลลา ตรงกลางใช้วิธีแรก (คือลดซิกม่าซ้ำ ๆ ไปที่ 0); ที่สามคือการใช้ sigma = 2

ผลลัพธ์ของปัญหาแบบสองเกลียวโดยสามวิธี

คุณจะเห็นได้ว่าวิธีการแก้ปัญหาวานิลลานั้นเลวร้ายที่สุดการขุดอุโมงค์แบบ Convolutional ทำได้ดีกว่าและการฉีดสัญญาณรบกวน (ด้วยการขุดอุโมงค์แบบ Convolutional) นั้นดีที่สุด (ในแง่ของคุณสมบัติทั่วไป)

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


1

Extreme Learning Machinesโดยพื้นฐานแล้วพวกเขาเป็นเครือข่ายประสาทที่น้ำหนักที่เชื่อมต่ออินพุตกับโหนดที่ซ่อนอยู่จะถูกกำหนดแบบสุ่มและไม่เคยปรับปรุง น้ำหนักระหว่างโหนดที่ซ่อนอยู่และผลลัพธ์จะได้เรียนรู้ในขั้นตอนเดียวโดยการแก้สมการเชิงเส้น (เมทริกซ์ผกผัน)

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