ยินดีที่ได้รู้จัก CNN (Convolutional Neural Network)
สวัสดีท่านผู้อ่านทุกท่านที่ได้หลงเข้ามาอ่านนะฮะ :D
ในส่วนของบทความนี้จะมาเล่าถึงเรื่องของเจ้า CNN แบบพยายามเข้าใจง่าย (มั้ง)
เริ่มเลยละกัน Let’s gooooo ~~~
ก่อนจะไปรู้จัก CNN แวะมาทำความรู้จักแบบพบสังเขปกับสิ่งเหล่านี้กันก่อน ก็คือ . . .
Artificial Intelligence > Machine Learning> Deep Learning
เป็นรูปที่จะพบได้บ่อยๆในสมัยนี้เลยทีเดียวก็ว่าได้ สำหรับรูปด้านบนนี้ เรามาดูกันว่าแต่ละอย่างมีความแตกต่างกันอย่างไรและมันเชื่อมโยงกันอย่างไร
Artificial Intelligence (AI) — การนำความฉลาดของมนุษย์ไปใช้กับเครื่องจักร
คือ เครื่องจักรกลหรือระบบที่มีคุณลักษณะและความสามารถที่เหมือนหรือเหนือมนุษย์ ทั้งในแง่ สติปัญญา ความสามารถที่มนุษย์สามารถทำได้ ความคิดเชิงเหตุและผล รวมทั้งความคิดเชิงสร้างสรรค์ และทักษะทางสังคม เป็นต้น
Machine Learning (ML) — การสร้างกระบวนการคิดให้กับเครื่องจักร
คือ การใช้อัลกอริทึมในการแยกแยะและวิเคราะห์ข้อมูล เรียนรู้จากข้อมูลนั้น เพื่อสร้างโมเดลในการตัดสินใจหรือคาดการณ์เกี่ยวกับบางสิ่งบางอย่าง แทนการเขียนโค้ดเป็นชุดคำสั่งให้ปฏิบัติตามขั้นตอนที่กำหนดไว้ แต่จะใช้การ “เทรนด์” โดยใช้ชุดข้อมูลขนาดใหญ่ในการเรียนรู้ที่จะปฏิบัติงานนั้นๆ
โดยมีเทคนิคในการสอนคอมพิวเตอร์มากมาย เช่น Supervised Learning, Unsupervised Learning, Reinforcement Learning หรือ Artificial Neuron Networks เป็นต้น รวมไปถึง “Deep Learning”
Deep Learning (DL) — เทคนิคการสร้างกระบวนการคิดที่จะนำไปใช้กับเครื่องจักร
คือ การสร้างการเรียนรู้ให้คอมพิวเตอร์โดยใช้การเลียนแบบการทำงานของสมองมนุษย์ ซึ่งประกอบด้วยเซลล์ประสาท (Neuron) และแต่ละเซลล์จะถูกเชื่องโยงกันเป็นโครงข่าย ซึ่งใน Neuron จะเรียกว่า “โหนด (Node)” และแต่ละโหนดจะถูกแบ่งออกเป็นชั้น (Layer)
พักชมงานศิลป์สักครู่
หลังจากรู้จัก AI > ML > DL กันมาแล้ว
ต่อไปเราจะไปทำความรู้จักกับกระบวนการคิดรูปแบบหนึ่งของ “Deep Learning”
ตามข้าพเจ้ามา . . .
Convolutional Neural Network คืออะไร
Convolutional Neural Network (CNN) หรือโครงข่ายประสาทแบบคอนโวลูชัน~ จัดเป็น “Deep learning” ประเภทหนึ่ง (เพราะมันมีหลาย layer เหตุผลที่เรียกว่า deep มีแค่นั้นแหละฮะ)
CNN เก่งในการแก้ปัญหาด้าน Classification (การจำแนกประเภท) ที่เป็นรูปภาพ
แต่ทั้งนี้ทั้งนั้นมนุษย์ก็ยังต้องเป็นผู้ออกแบบ architecture ของ Neural Network (NN)ในการแก้ปัญหาใดปัญหาหนึ่งนั้นอยู่ดี(Feature & Layer)
CNN จะจำลองการมองเห็นของมนุษย์ที่มองพื้นที่เป็นที่ย่อยๆ และนำกลุ่มของพื้นที่ย่อยๆมาผสานกัน เพื่อดูว่าสิ่งที่เห็นอยู่คืออะไร . . . ดูต่อด้านล่างเพื่อความไม่งง 5555
แยกคุณลักษณะของสิ่งที่มองอยู่ (Feature Extraction)
เช่น ลายเส้น และการตัดกันของสี ซึ่งการที่เรารู้ว่าพื้นที่ตรงนี้เป็นเส้นตรงหรือสีตัดกัน เพราะเราดูทั้งจุดที่สนใจและบริเวณรอบ ๆ ประกอบกัน
Hidden Layer อันแสนลึกลับ
เป็นส่วนที่สอน “Model” ให้เรียนรู้ และ ทำการแยกคุณลักษณะของข้อมูล (Feature Extraction)
เช่น แยกลักษณะเฉพาะของรูปเพื่อหาประเภทของรถ
และนี่คือภายในของ Hidden Layer (เชิญรับชมงานศิลป์ได้)
จากรูปด้านบนนี้ เราจะพูดถึงในส่วนของ Convolution Layer
ซึ่งแบ่งเป็น 3 ส่วนหลักๆ ด้วยกัน คือ
1. Convolution state
คือ ส่วนที่ทำการแยกองค์ประกอบของรูปออกมา เช่น ขอบ สี รูปทรง เป็นต้น โดยที่ CNN จะมีตัวกรอง หรือ Filter ในการตรวจสอบเพื่อแยกองค์ประกอบของรูป
สมมุติว่าถ้าเราต้องการหาเส้นตรงทะแยงสีขาว ตัวกรองของเราอาจจะอยู่ในลักษณะนี้
ตำแหน่งสีฟ้าคือ Anchor มีหน้าที่วิ่งเอาตัวเองไปทาบกับพิกเซลบนภาพทีละส่วน และเลื่อนไปในส่วนของพิกเซลต่อไปเรื่อยๆจนครบภาพ และสิ่งที่เราได้นั้นจะเป็นสิ่งที่เรียกว่า ผังคุณลักษณะ (feature map)
Stride เป็นตัวกำหนดว่าเราจะเลื่อนตัวกรอง (filter) ไปด้วย Step เท่าไร (ตัวอย่างด้านล่างกำหนด Stride เท่ากับ 1)
2. Detector stage
คือ ส่วนที่รับoutput มาจาก ข้อที่ 1 และแปลงให้อยู่ในรูปของ “nonlinear” และเป็นส่วนที่ต้องระบุ “อัลกอริทึ่ม” (Activation) ที่จะใช้ในการจำแนกคุณลักษณะของข้อมูล
เช่น Rectified Linear Units (ReLU) เป็นต้น
3. Pooling stage
คือ ตัวกรองแบบหนึ่งที่หาค่าสูงสุดในบริเวณที่ตัวกรองทาบอยู่บนข้อมูลแล้วเลือกค่าที่สูงที่สุดบนตัวกรองนั้นมาเป็นผลลัพธ์ใหม่ และจะเลื่อนตัวกรองไปตาม Stride ที่กำหนดไว้ โดยขนาดตัวกรองของการทำ max pooling นิยมเรียกกันว่า pool size
ขอเพิ่มเติมในส่วนของ Max Pooling อีกนิ้ดนึง
ในบางครั้งเราต้องการตัวกรองหลายขนาดเพราะขนาดรูปที่ใส่เข้ามาทาง Input มีขนาดที่หลากหลาย
คนเราจำแนกสิ่งต่างๆโดยอาศัยทั้งการดูที่รายละเอียดเล็ก ๆ และ การดูแบบคร่าวๆ บนพื้นที่ใหญ่ เช่น
ในภาพที่มีทั้งกัปตันอเมริกา ธอร์ และ ไอออนแมน แต่เราสามารถบอกได้ว่าคนไหนคือ ธอร์ โดยแยกด้วยการดูสี หรือ พื้นที่ในส่วนลำตัว
ส่วนในขณะที่ภาพนี้เราต้องการนับจำนวนของคนภายในภาพ จึงต้องลงไปดูรายละเอียดเล็กๆ เช่น โครงหน้า ตา จมูก หรือ ปาก เพื่อให้ได้องค์ประกอบตามสัดส่วนที่ทำให้เกิดเป็นใบหน้า
จากปัญหาเหล่านี้เราสามารถแก้ไขได้ด้วยเจ้า
Pooling ที่มีความสามารถในการย่อรูปแบบหนึ่ง แต่ยังคงคุณลักษณะเด่นของข้อมูลไว้ได้
ซึ่งมีสองประเภทหลักๆ ที่นิยมกันคือ max pooling และ mean pooling
สรุปแบบสั้นๆ (มั้ง)
- AI ก็เหมือนกับร่างกาย ที่ประกอบไปด้วยสติปัญญา การใช้เหตุผล ความรู้สึก ทักษะความคิดสร้างสรรค์ อวัยวะรับสัมผัส เช่น ตา หู จมูก ลิ้น ผิว หนัง เป็นต้น ประกอบขึ้นเป็นหน่วยเดียว เช่นเดียวกับมนุษย์สามารถทำได้หรือทำได้เหนือกว่า
- ML เปรียบเหมือนระบบๆหนึ่ง ที่ทำหน้าที่ในร่างกายโดยเฉพาะ เช่น ระบบการมองเห็น ที่สามารถทำการรับรู้ด้วยการเห็นและทำให้เกิดการตอบสนองเนื่องด้วยข้อมูลทางตา เป็นต้น
- DL เปรียบเหมือนการสร้างการรับรู้โดยการส่งผ่านเซลประสาทต่างๆในร่างกายที่ส่งกันเป็นทอดๆและเลือกใช้เซลล์ตามความเหมาะสมของการรับรู้นั้นๆ เพื่อให้ได้ผลลัพธ์ที่ถูกต้อง
- CNN คือ จะจำลองการมองเห็นของมนุษย์ที่มองพื้นที่เป็นที่ย่อยๆ และนำกลุ่มของพื้นที่ย่อยๆมาผสานกัน เพื่อดูว่าสิ่งที่เห็นอยู่เป็นอะไรกันแน่
สุดท้ายนี้. . .
มาถึงส่วนนี้ คาดว่าน่าจะพอรู้จัก AI, ML และ DL เบื้องต้นกันแล้ว รวมถึง Concept การทำงานของ CNN ก็จบลงเพียงเท่านี้นะครับ หากผิดพลาดประการใด หรือผิดพลาดตรงส่วนไหนก็ติชมไว้ได้เลยนะครับ สำหรับวันนี้ . .สวัสดีครับ /\
Reference
- Deep Learning with Python by Francois Chollet
- https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2
- Pinyo Taeprasartsit, Research Tools class, Silpakorn University
- https://medium.com/@thebear19/neural-network-101-cnn-with-tensorflow-fd5d515e979b
- https://cs231n.github.io/convolutional-networks/
- https://medium.com/@thebear19/neural-network-101-cnn-with-tensorflow-fd5d515e979b
- https://medium.com/@athivvat/artificial-intelligence-machine-learning-%E0%B9%81%E0%B8%A5%E0%B8%B0-deep-learning-%E0%B9%81%E0%B8%95%E0%B8%81%E0%B8%95%E0%B9%88%E0%B8%B2%E0%B8%87%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B8%AD%E0%B8%A2%E0%B9%88%E0%B8%B2%E0%B8%87%E0%B9%84%E0%B8%A3-68a8aa6f56f0