เรียนรู้และทำความเข้าใจเรื่อง Convolutional Neural Network (CNN) คืออะไร



Convolutional Neural Network (CNN) คืออะไร?

โครงข่ายประสาทตรวจจับแบบคอนโวลูชัน

บทคัดย่อ

           ปัจจุบันโครงข่ายประสาทเทียมแบบคอนโวลูชัน (CNN) เป็นระบบรู้จำภาพใบหน้าที่มีประสิทธิภาพใกล้เคียงกับมนุษย์ อย่างไรก็ตามวิธีการนี้ต้องใช้ข้อมูลจำนวนมากในการสอน ซึ่งเป็นเรื่องยากหากนำไปใช้งานกับการประยุกต์ทางด้านความปลอดภัย วิทยานิพนธ์นี้นำเสนอระบบรู้จำภาพใบหน้าบุคคล โดยใช้โครงข่ายประสาทเทียมแบบคอนโวลูชันด้วยวิธีการถ่ายโอนการเรียนรู้ (TLCNN) สำหรับฐานข้อมูลขนาดเล็ก ในขั้นตอนแรก CNN จะถูกสอนด้วยฐานข้อมูลขนาดใหญ่ จากนั้นชั้นจำแนกจะถูกแทนที่ด้วยชั้นใหม่และถูกสอนด้วยภาพใหม่ ซึ่งเป็นฐานข้อมูลขนาดเล็ก อิทธิพลของอัตราการเรียนรู้ต่อประสิทธิภาพการรู้จำภาพใบหน้าบุคคลถูกนำมาศึกษาเช่นกัน ผลการทดลองเบื้องต้นพบว่าความถูกต้องของ CNN อยู่ในระดับที่ยอมรับได้ (ร้อยละ 80) นอกจากนี้ ผลการทดลองพบว่า TL-CNN ที่มีอัตราการเรียนรู้เท่ากับ 0.001 แสดงความถูกต้องที่ดีที่สุดเมื่อเปรียบเทียบกับ PCA สำหรับการดึงลักษณะ และ k-Nearest Neighbors (kNN) และ Support Vector Machine (SVM) สำหรับการจำแนก

Deep Learning Start-up สัญญาชาติญี่ปุ่น ชื่อ Alpaca.ai ทำเรื่องพวกนี้อยู่ โดยโมเดลที่เค้าใช้มีทั้ง CNN และ RNN (LSTM) แต่ในส่วนของ CNN เค้าก็ได้แปลงข้อมูลเป็นรูปภาพเหมือนกัน
โดยมีทั้งการสร้างอัลกอริทึ่มสำหรับการเทรด การหาแพทเทริน ต่อจากนี้พูดถึง ข้อสำคัญ
ของการทำ Deep Learning
1) ข้อมูล การที่ Deep Learning สามารถทำผลงานได้ดีกว่าอัลกอริทึ่มทั่วไปของ Machine Learning อื่นๆ ก็เพราะการที่ยุคสมัยใหม่นี้มันมีข้อมูลถูกเก็บไว้มากกว่ายุคก่อนๆ  ถ้าเรามีข้อมูลน้อยๆ เช่น ไม่กี่สิบแถวไม่กี่ร้อยแถว บางที Deep Learning ก็ไม่สามารถให้ผลที่ดีไปกว่าอัลกอริทึ่มแบบอื่นมากนัก
2) การเตรียมข้อมูลต้องถูกต้อง เหมาสมแม้ว่า Deep Learning จะถูกสร้างมาให้หา Combination ของ Feature เพื่อทำการสร้างโมเดลก็เถอะ แต่ถ้าข้อมูลของเรามันไม่เกี่ยวข้องกันเลย เช่น ไปนำข้อมูล การแข่งขันนกพิราบเช่น ความเร็วของนก สีของนก มาทำนายข้อมูลลงทุน มันก็ไม่สามารถหา Combination มาทำนายเป้าหมายได้



Convolutional neural network (CNN)

Convolutional Neural Network เป็นโครงข่ายประสาทที่เค้ามีไอเดียในการแก้ปัญหาทางด้านรูปภาพ ซึ่งในเวลานั้นถือเป็นการปฎิวัติวงการ Image Recognition การทำงานแบบคร่าวๆ มีรูปมาใช้ นำรูปมาเข้ากระบวนการ Convolution เพื่อเพิ่มรายละเอียด เพิ่ม Noise ให้กับรูป Input จากนั้นก็ใส่ Polling เข้าไป (มีหลายแบบ Average, Max) คือ ทำไปเพื่อให้มันช่วยในการหา Pattern ในขั้นตอนต่อไป จากนั้นก็นำ output ที่ได้ ส่งต่อไปให้กับโมเดล Neural Network เพื่อเรียนรู้ปรับ Weight และ ทำให้เกิดกระบวนการสอนให้เรารู้ว่าแต่ละ Combination ของ Feature ที่ถ่วงน้ำหนักมาแล้วนั้นหมายถึงอะไร โดยกระบวนเรียนรู้จะถูกทำซ้ำเพื่อปรับค่าพารามิเตอร์หลายๆรอบ (Epoch) เพื่อให้ค่า Error จากการทำนายลดลงในแต่ละรอบ

ถ้า มีหู มี ปาก เล็กหน่อย มีหัวที่ทรงแบบนี้ เป็นรูปแบบกลมๆหน่อย(สมมุติ)มันก็จะตีความว่าเป็นแมว แต่ถ้าถ้าหูใหญ่กว่า หน้ายาวกว่าก็เป็นหมา เป็นต้น

การใช้งาน Deep Learning ในการเทรด มันก็มีหลายวิธี พูดให้ง่ายสุดก็คือ แปลงข้อมูลการเทรด เป็น รูปภาพ แต่เปลี่ยนข้อมูลเป็นข้อมูลหลักทรัพย์ที่เราต้องการทำนายแทน ส่วนหลักการทำงานก็เหมือนข้างบน มีรูปแบบข้อมูลมาในลักษณะนี้ เช่น ราคา xx วันที่แล้ว ก่อเกิดในรูปแบบ (pattern) หนึ่งๆ ขณะที่ราคาที่ yy วันทำอีกรูปแบบหนึ่งมันมีโอกาสที่อนาคตในจะมีรูปแบบที่เราต้องการจะ Classification มัน เช่น เทรนข้อมูลราคาเพื่อ จำแนกว่าในอนาคตจะ ขึ้น หรือ ลง หรือ ไม่เปลี่ยนแปลง โดยที่แต่ละอย่างนั้นมีโอกาสเป็นกี่ %  อันนี้แล้วแต่เราต้องการจะ Classification บางคนอาจจะทำในรูปแบบอื่นก็ได้ไม่จำเป็นต้องจำแนกแค่ขึ้นหรือลง



Feature Extraction

แนวคิดของ CNN นั้นค่อนข้างเป็นแนวคิดที่ดีมาก แต่สิ่งที่ซับซ้อนของมันคือระบบการคำนวณที่สอดคล้องกับ Concept ของมันเองและต้องมีคณิตศาสตร์มารองรับ โดยการคำนวณตามแนวคิดนี้ใช้หลักการเดียวกันกับ คอนโวลูชันเชิงพื้นที่ (Spatial Convolution) ในการทำงานด้าน Image Processing
การคำนวณนี้จะเริ่มจากการกำหนดค่าใน ตัวกรอง (filter) หรือ เคอร์เนล
(kernel) ที่ช่วยดึงคุณลักษณะที่ใช้ในการรู้จำวัตถุออก โดยปกติตัวกรอง/เคอร์เนลอันหนึ่งจะดึงคุณลักษณะที่สนใจออกมาได้หนึ่งอย่าง เราจึงจำเป็นต้องตัวกรองหลายตัวกรองด้วย เพื่อหาคุณลักษณะทางพื้นที่หลายอย่างประกอบกัน

ลักษณะของ Filter

สำหรับ Filter ของภาพดิจิทัลนั้น โดยปกติแล้วจะเป็นตารางสองมิติที่มีขนาดตามพื้นที่ย่อย ๆที่เราอยากพิจารณา  สมมุติว่าถ้าเราต้องการหาเส้นตรงทะแยงสีขาว ตัวกรองของเราอาจจะอยู่ในลักษณะนี้

ตัวกรอง 3×3 สำหรับหาเส้นตรงทะแยงสีขาว
ตำแหน่งตรงกลางที่มีกรอบสีฟ้าคือ Anchor ที่เอาไว้ทาบบนพิกเซลของภาพข้อมูลเข้า ตัวกรองจะถูกทาบลงในพิกเซลแรกของภาพข้อมูลเข้า จากนั้นจะถูกเลื่อนไปทาบ
บนพิกเซลอื่นในภาพทีละพิกเซลจนครบทุกพิกเซลในภาพ เราอาจจะไม่ทาบตัวกรองบนพิกเซลที่อยู่ใกล้กรอบภาพ เพราะตัวกรองจะล้นออกไปนอกภาพ เมื่อเราเลื่อนตัวกรองไปเรื่อยๆจนครบทุกพิกเซลที่สามารถเลื่อนได้ในภาพ สิ่งที่เราได้นั้นจะเป็นสิ่งที่เรียกว่า ผังคุณลักษณะ (feature map)



Stride และ Padding

Stride เป็นตัวกำหนดว่าเราจะเลื่อนตัวกรอง (filter) ไปด้วย Step เท่าไร (ตัวอย่างด้านล่างกำหนด Stride เท่ากับ 1)

เราสามารถกำหนดค่าของ Stride ให้มากขึ้นก็ได้ ถ้าเราต้องการให้การคำนวนหาคุณลักษณะมีพื้นที่ทับซ้อนกันน้อยขึ้น แต่อย่างไรก็ตามการกำหนดค่าของ Stride ที่มากขึ้นจะทำให้เราได้ผังคุณลักษณะ (feature map) ที่มีขนาดเล็กลง

Padding จากรูปด้านล่างเราจะพื้นที่สีเทารอบๆ Input พื้นที่เหล่านี้เป็นพื้นที่ที่เรามักเติมเข้าไป โดยอาจจะเป็นเติม 0 หรือค่าต่างๆเข้าไป เพื่อให้เวลาในการทำ CNN นั้น Feature Map ที่ได้ยังคงมีขนาดเท่ากับ Input

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

Max Pooling

ก่อนอื่นเรามองลองดูหนึ่งในปัญหาของการทำ CNN กันก่อน สมมติเราใช้ CNN ด้วยขนาดตัวกรอง 3×3 พิกเซล แต่เรารู้ดีว่าเวลาเรามองภาพแล้วเราตอบได้ว่ามันคืออะไร เพราะเรามองไปในบริเวณที่กว้างกว่านั้น

จากภาพ จะเห็นว่าต่อให้รูปภาพมีขนาดสเกลที่เล็กลง แต่เราก็ยังสามารถมองออกว่ามันคือเครื่องปั้นดินเผา แสดงว่า เราจำแนกวัตถุชิ้นนี้ที่ความละเอียดต่ำลง แต่เรากำลังทำ CNN ที่ความละเอียดสูง

มนุษย์เราจำแนกวัตถุ โดยอาศัยทั้งการดูที่รายละเอียดเล็ก ๆ และ
การดูแบบคร่าวๆ บนพื้นที่ใหญ่ ลองสังเกตการจำแนกแมวในภาพสองภาพนี้



ในภาพบนแม้จะมีแมวหลายตัว แต่เราแยกแมวพวกนี้ออกจากกันได้ง่ายๆ ด้วยการดูสีหรือพื้นที่ใหญ่ๆ บนตัวแมว ในขณะที่แมวทางภาพล่างสองตัวนี้เรากลับ ต้องลงไปดูรายละเอียดเล็กๆ เช่นตาและจมูก เพื่อแยกให้ออกว่ามีแมวกี่ตัว
Multiscale Analysis จากปัญหาด้านบนเราจะเห็นว่าเป็นไปได้ยากมากหากเราต้องอาศัยข้อมูลที่หยาบหรือละเอียดอย่างใดอย่างหนึ่งในการจำแนกวัตถุ ดังนั้นในการฝึกเครื่องเราจึงจะเป็นต้องมีข้อมูลทั้งหยาบและละเอียดควบคู่กันไป
ตอนนี้เรารู้แล้วว่าเราจำเป็นต้องคำนวณภาพในหลายสเกล แต่ปัญหาที่สำคัญคือเราจะทำให้การคำนวณอยู่ในรูปหลายสเกลได้อย่างไร หากเราใช้ตัวกรองขนาด 3×3 เรากำลังจะจัดการกับรายละเอียดเล็กๆ (ภาพใหญ่มีรายละเอียดมาก จึงถือว่าเป็นสเกลละเอียด) แต่ด้วยตัวกรองขนาดเท่าเดิม หากทำกับภาพที่ขนาดเล็กลงแล้ว มันจะครอบคลุมพื้นที่วัตถุเดิมมากขึ้น ดังนั้นถ้าโครงข่ายเราควรจะต้องมีการย่อรูปประกอบด้วย เราก็จะสามารถเข้าถึงความสามารถด้านการวิเคราะห์หลายความละเอียดได้
Pooling คือความสามารถในการย่อรูปแบบหนึ่ง ซึ่งมีสองประเภทหลักที่นิยมกันคือ max pooling และ mean pooling Max Pooling เป็นตัวกรองแบบหนึ่งที่หาค่าสูงสุดในบริเวณที่ตัวกรองทาบอยู่มาเป็นผลลัพธ์ โดยเราจะเตรียมตัวกรองในลักษณะเดียวกับการทำ Feature Extraction ของ CNN มาทาบบนข้อมูลแล้วเลือกค่าที่สูง
ที่สุดบนตัวกรองนั้นมาเป็นผลลัพธ์ใหม่ และจะเลื่อนตัวกรองไปตาม Stride ที่กำหนดไว้ โดยขนาดตัวกรองของการทำ max pooling จะนิยมเรียกกันว่า pool size

VGG Model



ตอนนี้เรามาดูตัวอย่างของโมเดล CNN ที่ทันสมัยในปี 2014 VGG เป็นเครือข่ายประสาทเทียมจากนักวิจัยที่กลุ่ม Visual Geometry ของอ็อกซ์ฟอร์ดดังนั้นชื่อ VGG มันเป็นความท้าทายอันดับต้น ๆ ของ ImageNet ที่มีอัตราความผิดพลาด 7.3% ImageNetเป็นชุดข้อมูลภาพที่มีคำอธิบายประกอบด้วยมือที่ครอบคลุมที่สุดและพวกเขาจัดการแข่งขันทุกปีที่นักวิจัยจากทั่วทุกมุมโลกแข่งขันกัน สถาปัตยกรรม CNN ที่มีชื่อเสียงทั้งหมดเปิดตัวในการแข่งขันครั้งนั้น
ในบรรดารุ่น CNN ที่มีประสิทธิภาพดีที่สุด VGG นั้นโดดเด่นในเรื่องความเรียบง่าย ลองดูสถาปัตยกรรมของมัน

VGG เป็นโครงข่ายใยประสาทแบบชั้น 16 โดยไม่นับเลเยอร์ maxpool และ softmax ในตอนท้าย มันยังเรียกว่า VGG16 สถาปัตยกรรมเป็นสิ่งที่เราทำงานด้วยด้านบน สแต็คแบบซ้อนซ้อน + รวมชั้นตามด้วย ANN ที่เชื่อมต่ออย่างสมบูรณ์ ข้อสังเกตบางประการเกี่ยวกับสถาปัตยกรรม:
ใช้การสนทนา 3×3 ทั่วทั้งเครือข่ายเท่านั้น ทราบว่าการสนทนา 3×3 สองรายการกลับไปด้านหลังมีฟิลด์การตอบรับที่มีประสิทธิภาพของการแปลง 5×5 เดียว และ Convolutions 3×3 แบบซ้อนสามอันมีสนามแบบเปิดกว้างของ 7×7 อันเดียว นี่คือการมองเห็นภาพของความเชื่อมั่นแบบซ้อนกัน 3×3 สองผลลัพธ์ใน 5×5

ข้อดีอีกอย่างของการซ้อนสอง convolutions แทนที่จะเป็นหนึ่งคือการที่เราใช้สองการดำเนินงาน relu และไม่เป็นเชิงเส้นมากขึ้นให้พลังงานกับรูปแบบมากขึ้น
จำนวนตัวกรองเพิ่มขึ้นเมื่อเราเข้าไปในเครือข่ายให้ลึกขึ้น ขนาดเชิงพื้นที่ของคุณสมบัติแผนที่ลดลงเนื่องจากเรารวมกำไร แต่ความลึกของปริมาณเพิ่มขึ้นเมื่อเราใช้ตัวกรองมากขึ้น
ฝึกฝนบน 4 GPUs เป็นเวลา 3 สัปดาห์
VGG เป็นโมเดล CNN พื้นฐานมาก เป็นรุ่นแรกที่นึกถึงหากคุณจำเป็นต้องใช้แบบจำลองนอกชั้นวางสำหรับงานเฉพาะ กระดาษยังเป็นเขียนเป็นอย่างดีที่มีอยู่ที่นี่ มีรูปแบบที่ซับซ้อนมากขึ้นซึ่งทำงานได้ดีกว่าตัวอย่างเช่นรุ่น ResNet ของ Microsoft เป็นผู้ชนะในปี 2015 ความท้าทาย ImageNet ด้วยอัตราข้อผิดพลาด 3.6% แต่รุ่นมี 152 ชั้น! รายละเอียดมีอยู่ในกระดาษที่นี่ เราจะครอบคลุมสถาปัตยกรรม CNN เหล่านี้ทั้งหมดในเชิงลึกในบทความอื่น แต่ถ้าคุณต้องการข้ามไปข้างหน้านี่คือโพสต์ที่ยอดเยี่ยม



การนำ CNN มาประยุกต์ใช้ในการคัดแยกจำนวนขวดภายในโรงงานแห่งหนึ่ง ใน 1 เดือน

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

ประโยชน์

1.ใช้ในการอ่านรหัสไปรษณีย์ตัวเลข
2.จำแนกบุลคล
3.จำแนกสิ่งของ

คลิปวีดีโอการนำเสนอ

 

โครงข่ายประสาทแบบคอนโวลูชัน
จัดทำโดย
นาย จักรกริช ไกรเนตร
นาย จักรกฤษณ์ ประดุจชนม์



JUKKRIT KRAINET
at GlurGeek.Com

Leave a Reply

© 2022 GlurGeek.Com