กระบวนการ 1 Cycle Policy


Share this article

หากพูดถึงการพัฒนาโมเดลการเรียนรู้เชิงลึก (Deep Learning) ที่มีประสิทธิภาพสูงมากในปัจจุบัน นักพัฒนาโมเดลส่วนใหญ่อาจจะนึกถึงความยุ่งยากในการปรับแต่งค่าตัวแปรต่างๆ ของโมเดล เพื่อให้โมเดลที่สร้างขึ้นสามารถทำนายได้ตามที่ต้องการ ไม่ว่าจะเป็นตัวแปรของสถาปัตยกรรมของโครงข่ายประสาทเทียม (Neural Network Architecture) เอง เช่น จำนวน layer หรือจำนวน neuron ในแต่ละ layer รวมไปถึงค่า hyperparameter ของตัวโมเดล อย่างเช่น อัตราการเรียนรู้ จำนวนข้อมูลที่จะถูกใช้ในการอัพเดทการเรียนรู้ของโมเดล ซึ่งการปรับค่าตัวแปรมากมายเหล่านี้มักใช้เวลาและทรัพยากรในการประมวลผลสูง

ด้วยเหตุนี้ นาย Leslie N. Smith จาก US Naval Research Laboratory Washington, DC, USA จึงได้เสนอแนวคิดการปรับค่าตัวแปร 4 ตัวที่เขาสนใจ ได้แก่

  • Learning Rate: อัตราการเรียนรู้
  • Batch Size: จำนวนข้อมูลที่จะถูกใช้ในการอัพเดทการเรียนรู้ของโมเดล
  • Momentum: ค่าอัตราการเร่งของการเรียนรู้ของ Stochastic Gradient Descent (SGD) Optimizer
  • Weight Decay:  ค่าอัตราการปรับ weight

โดยเขาสนใจค่าของตัวแปรเหล่านี้จากผลการทำนายของโมเดลระหว่างการเกิด overfitting และ underfitting ที่จะให้ผลการทำนายได้อย่างแม่นยำที่สุด

หมายเหตุ: Overfitting คือการที่โมเดลสามารถทำนายผลลัพธ์จากข้อมูลที่ใช้ในการเรียนรู้ (Training Set) ได้อย่างแม่นยำ แต่ไม่แม่นยำเมื่อใช้ข้อมูลอื่นๆ ส่วน Underfitting คือการที่โมเดลทำนายผลลัพธ์ไม่แม่นยำแม้แต่กับข้อมูล Training Set

นาย Leslie เสนอการค้นหา learning rate โดยการทดลองค่อยๆ เพิ่มค่า learning rate จากน้อยไปมาก ซึ่งในการ train จะใช้เพียง 1 epoch เท่านั้นสำหรับแต่ละค่า learning rate จากนั้นนำค่า Loss ที่ได้ไปพล็อตกราฟเทียบกับค่า learning rate เพื่อเปรียบเทียบประสิทธิภาพการทำนายข้อมูลของโมเดล ดังแสดงในรูปที่ 1

รูปที่ 1 ค่า loss ต่อการเพิ่มค่าของ learning rate

จากกราฟในรูปที่ 1 จะสังเกตได้ว่า ค่า learning rate ระหว่าง 10-2 – 3×10-2 เป็นค่าก่อนที่ค่า loss จะลู่ออกจากแกน x (divergence) ซึ่งนาย Leslie เสนอให้เลือกค่า learning rate เป็นค่าระหว่างนั้นที่จะให้ผลการทำนายดีที่สุด เนื่องจากทำนายได้ค่า Loss ต่ำสุด เมื่อเทียบกับค่า learning rate ค่าอื่น นอกจากนี้ยังควรเลือกค่าเป็นช่วงแคบๆ อย่าง 10-2 – 3×10-2  จะดีกว่าค่าในช่วงกว้างอย่าง 10-4 – 10-1 เรียกกระบวนการนี้ว่า Learning Rate Range Test หรือ LR range test

หลังจากนั้นนาย Leslie เสนอให้ใช้ ค่า learning rate ระหว่าง 10-2 – 3×10-2 ในการ train โมเดล โดยมีขั้นตอนดังต่อไปนี้

1. กำหนดให้ค่าได้มาเป็นค่า maximum learning rate

2. กำหนดค่า step size ในการปรับ learning rate

3. หารค่าของ maximum learning rate ด้วย จำนวน step size จะได้ค่า minimum learning rate

4. ในแต่ละรอบของการ train โมเดล ให้ทำการเพิ่มค่า learning rate ไปเรื่อยๆ ด้วยจำนวนที่เท่ากันจนถึงค่าของ maximum learning rate จากนั้นให้ทำการลดค่าจาก maximum learning rate จนเหลือค่า minimum learning rate ไปเรื่อยๆ จนจบการ train โมเดล

วิธีการนี้ เรียกว่า Cyclical Learning Rates รูปที่ 2 แสดงกราฟการเพิ่มค่า learning rate เทียบกับจำนวนรอบในการ train โมเดล

รูปที่ 2 การเพิ่มค่าของ learning rate ต่อจำนวนรอบในการ train โมเดล

นาย Leslie นำเสนอว่า การปรับ learning rate ตาม LR range test นี้จะทำให้เกิดเหตุการณ์ที่เรียกว่า Super Convergence คือการที่โมเดลสามารถเรียนรู้ training set ได้ดียิ่งขึ้น ดังแสดงในรูปที่ 3 โดยกราฟด้านขวามือจะมี loss ของ validation set กับ training set ที่ใกล้เคียงกันมากกว่ากราฟทางด้านซ้ายมือ ซึ่งเป็นการลู่เข้า (Convergence) ที่ดีกว่า จากการที่โมเดลสามารถเรียนรู้จากตัวข้อมูลได้ดีกว่าด้วยค่า learning rate จากวิธีการ learning rate range test โดยภาพทางด้านซ้ายเลือกค่า learning rate ระหว่าง 10-4 – 10-1 (ช่วงกว้าง) และ ภาพทางด้านขวาเลือกค่า learning rate ระหว่าง 10-2 – 3×10-2 (ช่วงจาก LR range test)

READ  AI กับ Particle Physic

นอกจากการปรับ learning rate แล้ว นาย Leslie ยังพบอีกว่า หากเราลดค่าของ momentum ให้น้อยลงจะได้ผลที่ดีขึ้นได้ ซึ่งแนวคิดนี้เข้ากับการ train ตัวอย่างด้านบน ทั้งนี้ ค่า momentum เป็นตัวแปรหนึ่งที่ทำให้ตัวโมเดลสามารถเร่งการ optimize ให้เข้าสู่ค่าต่ำสุดได้เร็วยิ่งขึ้น โดยไม่สนใจความแปรปรวนอื่นที่อาจจะทำให้ โมเดลทำนายผิด โดยค่า momentum ยิ่งเยอะ ตัวโมเดลจะเรียนรู้ได้เร็วมากแต่มีโอกาสที่จะเกิดการ overfitting สูง แต่ถ้าค่า momentum น้อยลง ตัวโมเดลก็จะเรียนรู้ได้ช้าลง

นาย Leslie เพิ่มเติมอีกว่า การเปลี่ยนแปลงค่า momentum ในกระบวนการทั้งหมดนี้จะทำตรงกันข้ามกับวิธีการของ cyclical learning rates กล่าวคือ หาก learning rate เพิ่มจากค่า minimum ไปจนถึงค่า maximum ค่าของ momentum จะทำการลดลงจากค่า maximum จนถึงค่า minimum โดยนาย Leslie แนะนำค่าของ momentum ว่าควรอยู่ระหว่าง 0.85 และ 0.95

รูปที่ 4 การเปลี่ยน learning rate เทียบกับและการแปลงค่า momentum ต่อจำนวนรอบ

ในส่วนของ batch size (จำนวนข้อมูลที่จะถูกใช้ในการเรียนรู้ของโมเดลแต่ละรอบ) นั้น นาย Leslie เสนอความเห็นว่า จำนวน batch size ควรเป็นค่าที่มากที่สุดที่เป็นไปได้ (มากที่สุดที่ memory ของเครื่องสามารถรับได้) และกำหนดให้ค่า learning rate เป็นค่ามากๆ แทนเพื่อที่จะให้ผลการเรียนรู้ได้เร็วมากที่สุด แต่การกำหนด learning rate มากเท่าใดนั้น จะโดนปรับไปแล้วโดยวิธีการ Cyclical Learning Rates

รูปที่ 5 ผลจากการปรับค่า batch size

กราฟ 5 (a) แสดงถึงผลลัพธ์ test accuracy ของการปรับเพิ่มขนาด batch size โดยยิ่ง batch size มีขนาดใหญ่ก็จะได้ผลลัพธ์ที่ดีเร็วขึ้นด้วย ซึ่งค่า CLR หรือ Cyclical Learning Rates จะถูกปรับให้มากขึ้นตามขนาดของ batch size ด้วย ในขณะที่กราฟ 5 (b) แสดงถึง loss ของผลลัพธ์ที่ได้จากการปรับเพิ่มขนาดของ batch size ยิ่งมีขนาดใหญ่มากก็จะได้ผลลัพธ์ที่มีค่า loss ลดลงเร็ว แต่ batch size ที่มีขนาดเล็กกว่า ท้ายที่สุดแล้วเมื่อใช้จำนวนรอบมากกว่าจะให้ค่า loss ที่ต่ำกว่าได้

สำหรับตัวแปรสุดท้าย weight decay (การลดขนาด weight ของตัวโมเดล ก่อนจะทำการ Train ครั้งต่อๆไป) นาย Leslie เสนอว่า ให้เราลองทำการประมวลผลลัพธ์จาก weight decay หลายๆ ค่า แล้วสังเกตดูว่าค่าของ weight decay ไหนให้ค่าความแม่นยำมากที่สุด โดยอาจจะไล่จากค่า weight decay เท่ากับ  10-4, 10-5, 10-6 หรือไล่จากค่าที่มากขึ้นอย่าง 10-2, 10-3, 10-4 สำหรับตัว Network ที่ไม่ซับซ้อนมาก

วิธีการทั้งหมดนี้ นาย Leslie เรียกว่า กระบวนการ 1 Cycle Policy

ทั้งนี้ ทางผู้เขียนได้ทดลองทำตาม 1 Cycle Policy และการ Training แบบธรรมดาเทียบกัน โดยใช้ข้อมูล MNIST กับ Pre-trained model ResNet18 สำหรับการ train ทั้ง 2 แบบ และใช้จำนวน 2 epoch กับ 2 step size จากผลการทดลอง ดังแสดงในตารางด้านล่าง พบว่า ด้วยระยะเวลาที่ใกล้เคียงกัน การ train แบบ 1 Cycle Policy ให้ความแม่นยำสูงกว่าการ train แบบปกติ โดยภาพทางด้านซ้ายเป็นผลลัพธ์จากการ train แบบปกติ และภาพทางด้านขวาเป็นผลลัพธ์จากการ train แบบ 1 Cycle Policy

นอกจากนี้ยังมีการนำเสนอในงานหนึ่งว่า เมื่อเขาใช้ 1 cycle Policy  ในการ train กับ model ResNet56 สำหรับข้อมูล cifar10 เพียง 70 รอบ แต่ได้ Accuracy 93% เมื่อเทียบกับการ train ปกติที่ต้องใช้จำนวนรอบถึง 7000 รอบ ถึงจะได้ค่าความแม่นยำที่เท่ากัน

นั่นแหละครับ เหมือนอย่างที่นาย  Leslie N. Smith บอกไว้ในเปเปอร์ของเขา โดยการยกคำมาจาก Aristotle ที่ครั้งหนึ่งเคยบอกเอาไว้ว่า “Well begun is half done.” ก็คล้ายๆ กับการทำ application ของ deep learning ที่เพียงแค่เราสามารถปรับจูนพารามิเตอร์ให้ดีได้ตั้งแต่ตอนเริ่มต้น ก็ถือว่าเราทำสำเร็จไปกว่าครึ่งแล้วละครับ

READ  Siamese Neural Network: การตรวจจับการปลอมแปลงลายเซ็นด้วยปัญญาประดิษฐ์

Reference :

Sylvain Gugger Blog – 1 Cycle Policy

Ghost – The 1 Cycle Policy

A Disciplined Approach to Neural Network Hyper-parameters: Part 1 – Learning rate, Batch size, Momentum, and Weight decay


ลงทะเบียนรับข่าวสาร

ไม่พลาดทุกการอัพเดทจาก Big Data Experience Center

Big Data Experience Center (BX)

ชั้น 14 อาคาร Knowledge Exchange Center (KX)
110/1 ถนนกรุงธนบุรี, แขวงบางลำภูล่าง เขตคลองสาน กรุงเทพฯ 10600
อีเมล์: [email protected]

ABOUT

SERVICES