Convolutional neural network (CNN)

Convolutional neural network (CNN) เป็นประเภทของ neural network ที่เหมาะอย่างยิ่งสำหรับการประมวลผล (processing)และ analyzing visual data เช่น รูปภาพและวิดีโอ โดยทั่วไปจะใช้ในงาน computer vision เช่น การจดจำวัตถุ การจำแนกภาพ และการตรวจจับใบหน้า

Convolutional neural network ประกอบด้วยชั้นของโหนดที่เชื่อมต่อถึงกัน เช่นเดียวกับโครงข่ายประสาทเทียม(neural network)ประเภทอื่นๆ อย่างไรก็ตาม CNN มีโครงสร้างเฉพาะที่ทำให้เหมาะสำหรับการประมวลผลข้อมูลภาพ

โดยคุณลักษณะสำคัญอย่างหนึ่งของ CNN คือการใช้ convolutional layers ซึ่งใช้ filters กับ input data เพื่อแยกคุณลักษณะต่างๆ (extract features) filters เหล่านี้ออกแบบมาเพื่อระบุ patterns เฉพาะในข้อมูล เช่น ขอบ รูปร่าง หรือพื้นผิว Convolutional Layer แต่ละชั้นเรียนรู้ที่จะจดจำคุณลักษณะต่างๆ และการรวมกันของเลเยอร์ทั้งหมดช่วยให้ CNN สามารถจดจำรูปแบบและวัตถุที่ซับซ้อนมากขึ้นได้

Computer vision

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

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

การพัฒนาเทคโนโลยีการมองเห็นด้วยคอมพิวเตอร์ได้รับความช่วยเหลือจากความก้าวหน้าใน machine learning และโครงข่ายประสาทเทียม(neural networks) ซึ่งทำให้คอมพิวเตอร์สามารถเรียนรู้และปรับปรุงประสิทธิภาพในการทำงานด้านภาพโดยไม่ต้องตั้งโปรแกรมไว้อย่างชัดเจน

Computer vision เป็นส่วนสำคัญของปัญญาประดิษฐ์ และคาดว่าจะมีผลกระทบอย่างมีนัยสำคัญต่อหลายแง่มุมของสังคมในอีกไม่กี่ปีข้างหน้า

Feature Extraction

การแยกคุณลักษณะ (Feature extraction) คือ กระบวนการระบุและดึงข้อมูลที่เกี่ยวข้องจากชุดข้อมูล(dataset) สำหรับงานใดงานหนึ่ง เป็นขั้นตอนทั่วไปในกระบวนการ machine learning pipelines และมักจะใช้เพื่อประมวลผลข้อมูลล่วงหน้าก่อนที่จะป้อนเข้าสู่แบบจำลองสำหรับการ training

เป้าหมายของ feature extraction คือ การระบุ(identify)และการแยก(extract) ให้ได้คุณลักษณะที่เกี่ยวข้องกับข้อมูลที่เกี่ยวข้องให้ได้มากที่สุดจาก dataset ซึ่งสามารถนำไปใช้ในการสร้าง model ที่สามารถคาดการณ์หรือตัดสินใจได้อย่างแม่นยำ คุณลักษณะที่แยกออกมาขึ้นอยู่กับงานในมือและประเภทของข้อมูลที่กำลังวิเคราะห์

มีหลายวิธีที่แตกต่างกันในการทำ feature extraction รวมถึง manual feature engineering ซึ่งคุณลักษณะจะถูกเลือกและสกัดโดยผู้เชี่ยวชาญ(human expert) และการเรียนรู้คุณลักษณะโดยอัตโนมัติ(automatic feature learning) ซึ่งใช้อัลกอริทึมเพื่อเรียนรู้และดึงคุณลักษณะจากข้อมูล

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

Filter

Filter คือ matrix weight ขนาดเล็กที่ใช้กับข้อมูลอินพุตใน Convolutional layer โดย filter จะเลื่อนผ่านข้อมูลอินพุต ทำการดอทโปรดักต์ระหว่าง weights กับ ข้อมูลอินพุตที่แต่ละ position ผลลัพธ์ที่ได้เรียกว่า feature map ซึ่งแสดงถึง feature ที่แยกออกมาโดย filter

Filter แต่ละตัวออกแบบมาเพื่อระบุรูปแบบเฉพาะที่ต่างกันในข้อมูลที่ป้อนเข้า เช่น ขอบ รูปร่าง หรือพื้นผิว ด้วยการใช้ filter หลายๆ ตัวกับข้อมูลอินพุต CNN สามารถแยกคุณสมบัติที่หลากหลายและจดจำรูปแบบและวัตถุที่ซับซ้อนมากขึ้นได้

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

Stride และ Padding

ใน Convolutional Neural Network (CNN) stride และ padding คือพารามิเตอร์สองตัวที่ควบคุมขนาดและตำแหน่งของเอาต์พุตของเลเยอร์ Convolutional

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

Source: Applied Deep Learning – Part 4: Convolutional Neural Networks | by Arden Dertat | Towards Data Science

Padding คือจำนวนพิกเซลที่เพิ่มที่ขอบของข้อมูลอินพุตก่อนที่จะใช้ตัว filter paddingสามารถใช้เพื่อรักษามิติเชิงพื้นที่ของข้อมูลอินพุต เนื่องจากขนาดเอาต์พุตจะเหมือนกับขนาดอินพุต หากใช้ padding ในปริมาณเท่ากันในทุกด้าน ช่องว่างภายในยังสามารถใช้เพื่อควบคุมขนาดของเอาต์พุต เนื่องจากสามารถปรับช่องว่างภายในเพื่อสร้างขนาดเอาต์พุตที่ต้องการได้

Source: Applied Deep Learning – Part 4: Convolutional Neural Networks | by Arden Dertat | Towards Data Science

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

Pooling

Pooling เป็นประเภทของการดำเนินการที่ใช้กันทั่วไปในเครือข่ายประสาทเทียม (CNN) โดยจะเกี่ยวข้องกับการสุ่มตัวอย่างข้อมูลอินพุตเพื่อลดขนาดและความซับซ้อน

การ pooling มีหลายประเภท ได้แก่ max pooling, average pooling, และ sum pooling ในการ max pooling ค่าสูงสุดของกลุ่มพิกเซลจะถูกเลือกและใช้เป็นค่าเอาต์พุต ในการ average pooling ค่าเฉลี่ยของกลุ่มพิกเซลจะถูกใช้เป็นค่าเอาต์พุต ในการ sum pooling ผลรวมของค่าของกลุ่มพิกเซลจะถูกใช้เป็นค่าเอาต์พุต

Source: Applied Deep Learning – Part 4: Convolutional Neural Networks | by Arden Dertat | Towards Data Science

โดยทั่วไปแล้วการ pooling จะใช้กับเอาต์พุตของ convolutional layer และตามด้วยfully connected layers ตั้งแต่หนึ่งเลเยอร์ขึ้นไป ใช้เพื่อลดขนาดและความซับซ้อนของข้อมูล ซึ่งจะทำให้ CNN มีประสิทธิภาพมากขึ้น และช่วยให้สามารถเรียนรู้คุณลักษณะที่มีประสิทธิภาพมากขึ้น ซึ่งไม่ไวต่อการเปลี่ยนแปลงเล็กน้อยในข้อมูล

การรวมข้อมูลเป็นสิ่งสำคัญของ CNN และมีความสำคัญต่อความสามารถในการเรียนรู้คุณลักษณะและจดจำรูปแบบในข้อมูลภาพ

Posted in Developer.