การเลือกอัตราการเรียนรู้


85

ฉันกำลังทำงานเกี่ยวกับการใช้ Stochastic Gradient Descent SGDสำหรับอวนประสาทโดยใช้การขยายพันธุ์กลับและในขณะที่ฉันเข้าใจวัตถุประสงค์ของมันฉันมีคำถามเกี่ยวกับวิธีเลือกค่าสำหรับอัตราการเรียนรู้

  • อัตราการเรียนรู้ที่เกี่ยวข้องกับรูปร่างของการไล่ระดับสีผิดพลาดตามที่กำหนดอัตราการลดลงหรือไม่?
  • ถ้าเป็นเช่นนั้นคุณจะใช้ข้อมูลนี้เพื่อแจ้งการตัดสินใจของคุณเกี่ยวกับคุณค่าอย่างไร
  • หากไม่ใช่สิ่งที่ฉันควรเลือกค่าประเภทใดและฉันควรเลือกพวกเขาอย่างไร
  • ดูเหมือนว่าคุณต้องการค่าเล็ก ๆ น้อย ๆ เพื่อหลีกเลี่ยงการแก้ไขปัญหา แต่คุณจะเลือกได้อย่างไรว่าคุณจะไม่ติดอยู่ใน minima ท้องถิ่นหรือใช้เวลานานในการสืบทอด
  • มันสมเหตุสมผลหรือไม่ที่จะมีอัตราการเรียนรู้ที่คงที่หรือฉันควรใช้ตัวชี้วัดบางอย่างเพื่อเปลี่ยนค่าของมันเมื่อฉันเข้าใกล้การไล่ระดับสีน้อยที่สุด?

กล่าวโดยย่อ: ฉันจะเลือกอัตราการเรียนรู้สำหรับ SGD ได้อย่างไร

คำตอบ:


69
  • อัตราการเรียนรู้ที่เกี่ยวข้องกับรูปร่างของการไล่ระดับสีผิดพลาดตามที่กำหนดอัตราการลดลงหรือไม่?

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

    • Adagrad เป็นที่รู้จักกันอย่างกว้างขวางที่สุดในเรื่องเหล่านี้และปรับอัตราการเรียนรู้ทั่วโลกηในแต่ละมิติโดยยึดตามบรรทัดฐาน l2 ของประวัติศาสตร์ของข้อผิดพลาดการไล่ระดับสีgtในแต่ละมิติ:

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

    • Adadeltaเป็นอีกหนึ่งขั้นตอนวิธีการฝึกอบรมที่ใช้ทั้งประวัติความผิดพลาดในการไล่ระดับสีอย่าง adagrad และประวัติการปรับปรุงน้ำหนักและมีข้อได้เปรียบที่ไม่จำเป็นต้องกำหนดอัตราการเรียนรู้เลย

  • หากไม่ใช่สิ่งที่ฉันควรเลือกค่าประเภทใดและฉันควรเลือกพวกเขาอย่างไร

    • การตั้งค่าอัตราการเรียนรู้สำหรับ SGD แบบธรรมดาในอวนประสาทมักจะเป็นกระบวนการเริ่มต้นด้วยค่าสติเช่น 0.01 จากนั้นทำการตรวจสอบข้ามเพื่อหาค่าที่เหมาะสม ค่าทั่วไปมีช่วงคำสั่งไม่กี่คำสั่งตั้งแต่ 0.0001 ถึง 1
  • ดูเหมือนว่าคุณต้องการค่าเล็ก ๆ น้อย ๆ เพื่อหลีกเลี่ยงการแก้ไขปัญหาเกินขนาด แต่คุณจะเลือกค่าแบบใดที่คุณไม่ได้ติดอยู่ใน minima ท้องถิ่นหรือใช้เวลานานเกินไปในการสืบทอด มันสมเหตุสมผลหรือไม่ที่จะมีอัตราการเรียนรู้ที่คงที่หรือฉันควรใช้ตัวชี้วัดบางอย่างเพื่อเปลี่ยนค่าของมันเมื่อฉันเข้าใกล้การไล่ระดับสีน้อยที่สุด?

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

1
ในทางปฏิบัติคุณจะใช้อัตราการเรียนรู้กับ adadelta ในปัญหาบางอย่างมันไม่ทำงานโดยไม่มี
bayer

ควรสังเกตว่าเครื่องมือเพิ่มประสิทธิภาพของอาดัมเป็นเรื่องปกติมากกว่า Adagrad หรือ Adadelta ในทุกวันนี้
E_net4 ยังคงมีการประท้วงใน

22

ด้านล่างเป็นบันทึกที่ดีมาก (หน้า 12) เกี่ยวกับอัตราการเรียนรู้ใน Neural Nets (Back Propagation) โดย Andrew Ng คุณจะพบรายละเอียดเกี่ยวกับอัตราการเรียนรู้

http://web.stanford.edu/class/cs294a/sparseAutoencoder_2011new.pdf

สำหรับจุดที่ 4 ของคุณคุณพูดถูกที่ปกติแล้วจะต้องเลือกอัตราการเรียนรู้ที่ "สมดุล" ซึ่งไม่ควรเกินขนาดหรือบรรจบกันช้าเกินไป หนึ่งสามารถวางแผนอัตราการเรียนรู้ wrt โคตรของฟังก์ชั่นค่าใช้จ่ายในการวินิจฉัย / การปรับแต่ง ในทางปฏิบัติโดยปกติแล้วแอนดรูว์ใช้อัลกอริทึม L-BFGS (กล่าวถึงในหน้า 12) เพื่อให้ได้อัตราการเรียนรู้ที่ "ดีพอ"


9

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

นอกเหนือจากการเพิ่มประสิทธิภาพพารามิเตอร์ไฮเปอร์พารามิเตอร์เต็มรูปแบบแล้วฉันต้องการพูดถึงเทคนิคหนึ่งที่ค่อนข้างบ่อยสำหรับการเลือกอัตราการเรียนรู้ที่ยังไม่ได้กล่าวถึง การจำลองการอบเป็นเทคนิคสำหรับการเพิ่มประสิทธิภาพของแบบจำลองโดยที่หนึ่งเริ่มต้นด้วยอัตราการเรียนรู้ที่มีขนาดใหญ่และค่อยๆลดอัตราการเรียนรู้เป็นความคืบหน้าการเพิ่มประสิทธิภาพ โดยทั่วไปคุณเพิ่มประสิทธิภาพโมเดลของคุณด้วยอัตราการเรียนรู้ขนาดใหญ่ (0.1 หรือมากกว่านั้น) จากนั้นลดอัตรานี้อย่างค่อยเป็นค่อยไปตามลำดับความสำคัญ (เท่ากับ 0.01 จากนั้นคือ 0.001, 0.0001 และอื่น ๆ )

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


6

คัดลอกวางจากวิทยานิพนธ์ปริญญาโทของฉัน :

  • หากการสูญเสียไม่ลดลงสำหรับยุคหลาย ๆ อัตราการเรียนรู้อาจต่ำเกินไป กระบวนการปรับให้เหมาะสมอาจติดอยู่ในระดับต่ำสุดในท้องถิ่น
  • การสูญเสีย NAN อาจเป็นเพราะอัตราการเรียนรู้สูงเกินไป อีกเหตุผลหนึ่งคือการหารด้วยศูนย์หรือการหาลอการิทึมของศูนย์
  • การติดตามการอัปเดตน้ำหนัก: Andrej Karpathy เสนอในการบรรยายครั้งที่ 5 ของ CS231n เพื่อติดตามการอัปเดตน้ำหนักเพื่อตรวจสอบว่าอัตราการเรียนรู้นั้นดีหรือไม่ เขาแนะนำว่าการปรับปรุงน้ำหนักควรอยู่ในลำดับที่ 10−3 หากการอัปเดตน้ำหนักสูงเกินไปจะต้องลดอัตราการเรียนรู้ หากการอัปเดตน้ำหนักต่ำเกินไปจะต้องเพิ่มอัตราการเรียนรู้
  • อัตราการเรียนรู้ทั่วไปอยู่ใน [0.1, 0.00001]

4

อัตราการเรียนรู้เปลี่ยนเป็น "ขนาดขั้นตอน" ในระหว่างกระบวนการวนซ้ำของเราเป็นปัญหาที่ร้อนแรงมานานหลายปีและจะดำเนินต่อไป

มีสามตัวเลือกสำหรับขนาดขั้นตอนในของฉันที่เกี่ยวข้อง:

  • หนึ่งมีความเกี่ยวข้องกับ " เวลา " และแต่ละมิติจะแบ่งปันขนาดขั้นตอนเดียวกัน คุณอาจสังเกตเห็นบางสิ่งเช่น

αt

ในขณะที่ t แสดงหมายเลขการวนซ้ำปัจจุบัน alpha คือพารามิเตอร์ไฮเปอร์

  • ส่วนถัดไปเชื่อมโยงกับการไล่ระดับสีและแต่ละมิติมีขนาดขั้นตอนของตนเอง คุณอาจสังเกตเห็นบางสิ่งเช่น

1αβ+s=1t1gs2αβ+s=1tgs2

ในขณะที่อัลฟาและเบต้าเป็นพารามิเตอร์ไฮเปอร์ g แสดงให้เห็นถึงการไล่ระดับสี

  • อันสุดท้ายคือการรวมกันของเวลาและการไล่ระดับสีและควรเป็นเช่นนั้น

1αβ+s=1t1gs2αβ+s=1tgs2+γt

หรือ

1αβ+s=1t1gs2αβ+s=1tgs2γt

หวังว่านี้จะช่วยให้คุณโชคดี -)


คุณมีการอ้างอิงสำหรับสิ่งนี้หรือไม่?
Jon

คุณสามารถอ้างถึงส่วนอัตราการเรียนรู้ของ FTRL เราสามารถกำหนดได้ด้วย TIME และ GRADIENT
joe

3

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

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


3

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

แต่สิ่งนั้นมีอยู่เฉพาะใน fastai / pytorch เมื่อเร็ว ๆ นี้มีคนทำ keras การดำเนินงาน

ซึ่งจะขึ้นอยู่กับเอกสารเหล่านี้:

หวังว่านี่จะช่วยได้


2

ให้ฉันแนะนำสั้น ๆ เกี่ยวกับวิธีการอื่นในการเลือกอัตราการเรียนรู้ตามหลักสูตรการเรียนรู้ลึกของ Jeremy Howard 1 หากคุณต้องการขุดลึกลงไปดูบล็อกโพสต์นี้

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

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

เราจะเห็นว่าการสูญเสียลดลงอย่างรวดเร็วเมื่ออัตราการเรียนรู้อยู่ที่ประมาณ3} การใช้วิธีการนี้เรามีวิธีทั่วไปในการเลือกการประมาณค่าสำหรับอัตราการเรียนรู้คงที่ที่ดีที่สุดสำหรับ netowork ของเรา103

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