จะปรับอัตราการเรียนรู้อย่างเป็นระบบโดยใช้ Gradient Descent เป็นเครื่องมือเพิ่มประสิทธิภาพได้อย่างไร


12

คนนอกถึงฟิลด์ ML / DL; เริ่มหลักสูตร Udacity Deep Learning ซึ่งมีพื้นฐานจาก Tensorflow; ทำงานที่ได้รับมอบหมาย 3 ปัญหา 4; พยายามปรับอัตราการเรียนรู้ด้วยการกำหนดค่าต่อไปนี้:

  • ชุดขนาด 128
  • จำนวนขั้นตอน: เพียงพอที่จะเติม 2 epochs
  • ขนาดของเลเยอร์ที่ซ่อนอยู่: 1024, 305, 75
  • การกำหนดค่าเริ่มต้นน้ำหนัก: ตัดปกติด้วย std ส่วนเบี่ยงเบนของ sqrt (2 / n) โดยที่ n คือขนาดของเลเยอร์ก่อนหน้า
  • ความน่าจะเป็นที่จะออกกลางคัน: 0.75
  • การทำให้เป็นมาตรฐาน: ไม่ได้ใช้
  • อัลกอริทึมอัตราการเรียนรู้: การสลายตัวแบบเลขชี้กำลัง

เล่นกับพารามิเตอร์อัตราการเรียนรู้; ดูเหมือนว่าพวกเขาจะไม่มีผลในกรณีส่วนใหญ่; รหัสที่นี่ ; ผล:

Accuracy    learning_rate   decay_steps     decay_rate      staircase
93.7        .1              3000            .96             True
94.0        .3              3000            .86             False
94.0        .3              3000            .96             False
94.0        .3              3000            .96             True
94.0        .5              3000            .96             True
  • ฉันจะปรับอัตราการเรียนรู้อย่างเป็นระบบได้อย่างไร
  • อัตราการเรียนรู้มีความสัมพันธ์กับจำนวนขั้นตอนอย่างไร

1
tpot นำเสนอการจูนท่อส่ง ML อัตโนมัติ
denfromufa

คำตอบ:


4

ใช้เครื่องมือเพิ่มประสิทธิภาพการไล่ระดับสี นี่เป็นภาพรวมที่ดีมาก

เกี่ยวกับรหัสให้ดูที่บทช่วยสอนนี้ นี้และนี้คือตัวอย่างบางส่วน

ส่วนตัวผมแนะนำให้ใช้ทั้ง ADAM หรือ RMSprop ยังคงมีพารามิเตอร์ไฮเปอร์เซ็ตบางตัวที่จะตั้งค่า แต่มี "มาตรฐาน" บางอันที่ทำงานได้ 99% ของเวลา สำหรับ ADAM คุณสามารถดูกระดาษของมันและสำหรับ RMSprop ที่สไลด์นี้

แก้ไข

ตกลงคุณใช้เครื่องมือเพิ่มประสิทธิภาพการไล่ระดับสีอยู่แล้ว จากนั้นคุณสามารถเพิ่มประสิทธิภาพพารามิเตอร์ไฮเปอร์พารามิเตอร์เพื่อเลือกอัตราการเรียนรู้ที่ดีที่สุด เมื่อเร็ว ๆ นี้เป็นวิธีการแบบอัตโนมัติได้รับการเสนอ นอกจากนี้ยังมีผลงานมากมายที่น่าสนใจโดย Frank Hutterเกี่ยวกับการปรับจูนพารามิเตอร์อัตโนมัติ

โดยทั่วไปแล้วดูที่AutoML Challengeซึ่งคุณสามารถค้นหาซอร์สโค้ดของทีมได้ ในความท้าทายนี้เป้าหมายคือการเรียนรู้ของเครื่องโดยอัตโนมัติรวมถึงการปรับพารามิเตอร์ไฮเปอร์

ในที่สุดบทความนี้โดย LeCunและบทช่วยสอนล่าสุดโดย DeepMin (ตรวจสอบบทที่ 8) ให้ข้อมูลเชิงลึกที่อาจเป็นประโยชน์สำหรับคำถามของคุณ

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


ฉันใช้ Gradient Descent Optimizer ในรหัสอยู่แล้ว ขอบคุณสำหรับลิงค์!
Thoran

@Thoran Ok ไม่ได้อ่านรหัส: D (และคำถามไม่ได้พูดถึงเครื่องมือเพิ่มประสิทธิภาพ) ฉันได้แก้ไขคำตอบของฉันเพื่อให้ความช่วยเหลือเพิ่มเติมบางอย่าง :)
Simon

การพัฒนาที่ดีทำให้งานง่ายขึ้นสำหรับบุคคลภายนอกเช่น < คุณทราบหรือไม่ว่ามีจำนวนขั้นตอนและอัตราการเรียนรู้ที่เกี่ยวข้องกันอย่างไร ลำไส้ของฉันบอกฉันว่าถ้ามีขั้นตอนมากขึ้นกระบวนการเรียนรู้ควรช้าลง
Thoran

@Thoran โดยทั่วไปแล้วยิ่งจำนวนขั้นตอนมากเท่าไหร่กระบวนการก็จะยิ่งช้าลงเท่านั้น แต่ยังมีความเสถียรมากกว่าเช่นกัน ฉันแก้ไขเพิ่มเติมคำตอบของฉันโดยเพิ่มการอ้างอิงบางอย่างสำหรับ "ลูกเล่น" บางอย่างที่อาจเป็นประโยชน์สำหรับการปรับพารามิเตอร์ไฮเปอร์พารามิเตอร์
Simon

สิ่งที่เจ๋งมากมันต้องใช้เวลาสักพักนึงก่อนที่ฉันจะย่อย: D
Thoran

1

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

ห้องสมุดหนึ่งที่ได้รับความนิยมในการทำเช่นนี้คือสเปียร์มินต์

https://github.com/JasperSnoek/spearmint


1

จูนเนอร์อัตราการเรียนรู้แบบอัตโนมัติล่าสุดได้รับในการปรับอัตราการเรียนรู้ออนไลน์ด้วย Hypergradient Descent

วิธีนี้เป็นวิธีที่ง่ายมากที่จะใช้งานผลลัพธ์หลักของสกุลเงิน SGD คือ:

αt=αt1+βf(θt1)Tf(θt2)

โดยที่เป็นพารามิเตอร์ไฮเปอร์ (ไฮเปอร์) วิธีนี้ยังใช้กับการอัปเดตไล่ระดับสีอื่น ๆ (วิธีการอิงโมเมนตัม) ไม่ได้ตั้งค่าการตรวจสอบเป็นสิ่งจำเป็น: แต่จะต้องจัดเก็บการไล่ระดับสีก่อนหน้านี้{t-2}) ความคิดคือการใช้อนุพันธ์บางส่วนของฟังก์ชั่นวัตถุประสงค์ wrt อัตราการเรียนรู้ ( ) เพื่อรับกฎการอัปเดตสำหรับอัลฟ่าเช่น f ( θ t - 2 ) αβe.g.f(θt2)α

โดยทั่วไปฉันใช้สิ่งนี้กับปัญหาที่มีอยู่แล้วและสังเกตผลลัพธ์ที่ดีกว่ามาก ฉันไม่ได้ปรับหรือแต่เลือกจากช่วงที่แนะนำจากกระดาษอัลฟ่า0βα0


0

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


ชุดข้อมูลแบบโฮลด์เอาท์แตกต่างจากชุดทดสอบหรือการตรวจสอบความถูกต้องอย่างไร
Thoran

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

ขอบคุณ @Alireza ที่สละเวลาอธิบาย ฉันใช้ชุดข้อมูลการตรวจสอบแล้ว และหากไม่มีการทดสอบจะไม่สามารถวัดความแม่นยำได้!
Thoran

คำถามเดิมของคุณเกี่ยวกับการกำหนดอัตราการเรียนรู้: หากคอลัมน์แรกในโพสต์ดั้งเดิมของคุณถูกจัดขึ้น (ไม่ใช่การฝึกอบรม) ความแม่นยำคุณสามารถพูดได้ว่า 0.5 ดีกว่า 0.1 (แม้ว่าคุณควรลองใช้ค่า> 0.5) [หมายเหตุ: หากคุณทำการทดลองของคุณอีกครั้งเพียงแค่แบ่งพาร์ติชันออกจากข้อมูลบางส่วนเพื่อใช้เป็นแบบทดสอบ]
Alireza
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.