แบบจำลอง deep learning พอสังเขป

พิจารณาปัญหาการจำแนกข้อมูล ถ้าให้ เป็น input space เราสามารถมองแบบจำลอง deep learning เป็นฟังก์ชัน

ที่รับข้อมูลจาก และให้ผลเป็นเวกเตอร์ของจำนวนจริง มิติ เมื่อ เป็นจำนวนของชนิดข้อมูลที่ต้องการจำแนก ตัวอย่างเช่น หากเราต้องการจำแนกภาพสีขนาด 244244 พิกเซล ออกเป็น 1000 ชนิด เราสามารถสร้างแบบจำลองให้รับ input ใด ๆ เป็นเวกเตอร์ขนาด 2442443 มิติ โดยที่สมาชิกแสดงความเข้มของแสงสีแดง / เขียว / น้ำเงิน ในแต่ละพิกเซล และให้ผลลัพธ์เป็นเวกเตอร์ 1000 มิติ () สัญลักษณ์ ใน เป็นเวกเตอร์ที่แสดงพารามิเตอร์ทั้งหมดของแบบจำลอง เช่นค่า weight matrix ใน fully-connected layer หรือค่า weight ใน convolutional filter เป็นต้น ซึ่งค่าของเวกเตอร์ นี้จะถูกปรับให้เหมาะสมที่สุดเท่าที่จะทำได้ในขั้นตอนของการเทรนข้อมูลนั่นเอง

Loss function

ในการพิจารณาความเหมาะสมของ เราต้องเริ่มจากการนิยาม loss function

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

เป็น loss หรือความเสียหายเมื่อคลาสที่ถูกต้องคือ และผลการทำนายเป็น

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

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

มีค่ามากที่สุด จากตรงนี้ จะเห็นว่าหากเรานิยามให้ loss ที่เกิดจากตัวอย่างข้อมูล เป็น

เราก็จะได้ว่าแบบจำลองนี้สอดคล้องกับตัวอย่างข้อมูล เมื่อ loss มีค่าน้อย ฟังก์ชัน loss นี้มีชื่อเรียกว่า softmax cross entropy

การเทรนแบบจำลอง

ในกระบวนการเทรนแบบจำลอง deep learning นั้น เราจะได้รับเซตของตัวอย่างข้อมูล โดยที่ และ สำหรับ เราเรียก นี้ว่า training set ซึ่งจะใช้ในการคำนวณค่าของพารามิเตอร์ ที่เหมาะสม โดยเราต้องการหาค่าของ ที่ทำให้ค่าเฉลี่ย loss ของตัวอย่างข้อมูลใน มีค่าน้อยที่สุด เราสามารถเขียนปัญหานี้ในรูปแบบของปัญหา optimization ได้ดังนี้

อัลกอริทึมพื้นฐานในการแก้ปัญหานี้เรียกว่า stochastic gradient descent ซึ่งจะวนรอบปรับค่า ให้ค่าเฉลี่ยของ loss นี้ลดลงเรื่อย ๆ โดยในแต่ละรอบ เราพิจารณา minibatch และทำการคำนวณ เกรเดียนต์ (gradient) ของค่าเฉลี่ย loss ของ เมื่อเทียบกับ ซึ่งเขียนแทนด้วย

โดยการคำนวณเกรเดียนต์สามารถทำได้โดยเทคนิคที่เรียกว่า backpropogation จากนั้นเราทำการปรับ ไปยังทิศทางตรงข้ามกับเกรเดียนต์โดย หาก เป็นค่าของพารามิเตอร์ หลังการทำงานรอบที่ เราจะปรับให้

เมื่อ เป็นค่าคงที่เรียกว่า learning rate

เราจะทำการวนรอบปรับ เช่นนี้เรื่อย ๆ จนกระทั่ง ลู่เข้าสู่ค่าคงที่ หรือมีการเปลี่ยนแปลงน้อยว่าค่าที่กำหนดก็เป็นอันเสร็จสิ้นกระบวนการเทรน

การทดสอบ

หากแบบจำลอง deep learning ที่เราใช้มีความซับซ้อนมาก จะทำให้แบบจำลองมีความสามารถในการปรับค่าพารามิเตอร์ให้เข้ากับข้อมูลที่ใช้สอนได้ดี ซึ่งอาจเกิดปัญหาได้หากแบบจำลองของเราปรับตัวให้เข้ากับข้อมูลใน training set มากเกินไป แต่ไม่มีความ generalize นั่นคือ เมื่อนำแบบจำลองไปทดสอบบนชุดข้อมูลที่ไม่เคยเห็นมาก่อนกลับพบว่ามีความแม่นยำน้อย เราเรียกปัญหานี้ว่า overfit ในกระบวนการเทรนแบบจำลองทาง machine learning โดยทั่วไป มักจะนำชุดข้อมูลที่มีแบ่งออกเป็นสามส่วน ได้แก่

อย่างไรก็ดี ตัวอย่างต่าง ๆ ในบทความชุดนี้เราจะไม่มีการใช้ validation set ในการทดสอบความ overfit เพื่อความสะดวกในการสร้างแบบจำลอง

References

  1. Z. Kolter, A. Madry. Adversarial Robustness - Theory and Practice
  2. I. Goodfellow, Y. Bengio, A.Courville. Deep Learning, MIT Press, 2016

Next: การสร้าง adversarial example