สถาปัตยกรรม CNN พื้นฐาน: การอธิบาย 5 เลเยอร์ของ Convolutional Neural Network [สหรัฐอเมริกา]
เผยแพร่แล้ว: 2023-04-16CNN (Convolutional Neural Network) คือประเภทของโครงข่ายประสาทเทียมสำหรับการเรียนรู้เชิงลึกที่ใช้การผสมผสานระหว่างเลเยอร์ Convolutional และ Subsampling เพื่อเรียนรู้คุณสมบัติจากชุดข้อมูลขนาดใหญ่ โดยทั่วไปจะใช้สำหรับการจดจำภาพและงานจำแนกประเภท เลเยอร์ Convolutional ใช้ตัวกรองกับข้อมูลอินพุต และเลเยอร์การสุ่มตัวอย่างย่อยจะลดขนาดข้อมูลอินพุต สถาปัตยกรรม Convolutional Neural Network มีจุดประสงค์เพื่อเรียนรู้คุณสมบัติจากข้อมูลที่สามารถใช้จำแนกหรือตรวจจับวัตถุในอินพุต ด้านล่างนี้คือคำอธิบาย 5 เลเยอร์ ของ CNN
ลงทะเบียนเรียน หลักสูตร Machine Learning จากมหาวิทยาลัยชั้นนำของโลก รับหลักสูตร Master, Executive PGP หรือ Advanced Certificate เพื่อความก้าวหน้าในอาชีพของคุณ
สารบัญ
5 ชั้นของโครงข่ายประสาทเทียม
1. ชั้น Convolutional:
เลเยอร์นี้ดำเนินการหมุนวนบนข้อมูลอินพุต ซึ่งจะแยกคุณลักษณะต่างๆ ออกจากข้อมูล
Convolutional Layers ใน สถาปัตยกรรม โมเดลของ CNN เป็นหนึ่งในองค์ประกอบที่สำคัญที่สุดของ เลเยอร์ CNN เลเยอร์เหล่านี้มีหน้าที่แยกคุณสมบัติออกจากข้อมูลที่ป้อนเข้าและสร้างพื้นฐานสำหรับการประมวลผลและการเรียนรู้เพิ่มเติม
ชั้น Convolutional ประกอบด้วยชุดตัวกรอง (หรือที่เรียกว่าเมล็ด) ที่ใช้กับข้อมูลอินพุตในรูปแบบหน้าต่างเลื่อน ตัวกรองแต่ละตัวจะแยกชุดคุณลักษณะเฉพาะจากข้อมูลอินพุตตามน้ำหนักที่เกี่ยวข้อง
จำนวนตัวกรองที่ใช้ในเลเยอร์ convolutional เป็นหนึ่งในไฮเปอร์พารามิเตอร์หลักในสถาปัตยกรรม โดยจะพิจารณาจากประเภทของข้อมูลที่กำลังประมวลผล รวมถึงความแม่นยำที่ต้องการของโมเดล โดยทั่วไป ตัวกรองที่มากขึ้นจะส่งผลให้มีคุณลักษณะที่ดึงออกมาจากข้อมูลอินพุตมากขึ้น ทำให้สถาปัตยกรรมเครือข่ายที่ซับซ้อนมากขึ้นสามารถเข้าใจข้อมูลได้ดีขึ้น
การดำเนินการบิดประกอบด้วยการคูณแต่ละตัวกรองกับข้อมูลภายในหน้าต่างเลื่อนและสรุปผลลัพธ์ การดำเนินการนี้ซ้ำกับตัวกรองทั้งหมด ส่งผลให้เกิดการแมปคุณลักษณะหลายรายการสำหรับเลเยอร์ Convolutional เดียว แผนผังคุณลักษณะเหล่านี้จะใช้เป็นอินพุตสำหรับเลเยอร์ต่อไปนี้ ทำให้เครือข่ายสามารถเรียนรู้คุณลักษณะที่ซับซ้อนมากขึ้นจากข้อมูลได้
เลเยอร์ Convolutional เป็นรากฐานของสถาปัตยกรรมการเรียนรู้เชิงลึกและใช้ในแอปพลิเคชันต่างๆ เช่น การจดจำรูปภาพ การประมวลผลภาษาธรรมชาติ และการรู้จำเสียง ด้วยการแยกคุณลักษณะที่สำคัญที่สุดออกจากข้อมูลที่ป้อนเข้า เลเยอร์ Convolutional ช่วยให้เครือข่ายสามารถเรียนรู้รูปแบบที่ซับซ้อนมากขึ้นและคาดการณ์ได้ดีขึ้น
2. การรวมเลเยอร์:
เลเยอร์นี้ดำเนินการดาวน์แซมปลิงบนฟีเจอร์แมป ซึ่งช่วยลดจำนวนการคำนวณที่จำเป็น และยังช่วยลดการใช้เกินพอดีอีกด้วย
ชั้นการรวม เป็น องค์ประกอบสำคัญของ สถาปัตยกรรมของ CNN โดยปกติจะใช้เพื่อลดขนาดปริมาณอินพุตในขณะที่ดึงข้อมูลที่มีความหมายออกจากข้อมูล การรวมเลเยอร์มักจะใช้ในขั้นตอนต่อมาของ CNN ทำให้เครือข่ายสามารถมุ่งเน้นไปที่คุณลักษณะที่เป็นนามธรรมของรูปภาพหรืออินพุตประเภทอื่นๆ เลเยอร์พูลทำงานโดยการเลื่อนหน้าต่างเหนือปริมาณอินพุตและคำนวณสถิติสรุปสำหรับค่าต่างๆ ภายในหน้าต่าง
สถิติทั่วไปรวมถึงการหาค่าสูงสุด ค่าเฉลี่ย หรือผลรวมของค่าภายในหน้าต่าง สิ่งนี้จะลดขนาดปริมาณอินพุตในขณะที่รักษาข้อมูลสำคัญเกี่ยวกับข้อมูล
โดยทั่วไปแล้วเลเยอร์การรวมจะใช้เพื่อแนะนำความไม่แปรปรวนเชิงพื้นที่ หมายความว่าเครือข่ายจะสร้างเอาต์พุตเดียวกันโดยไม่คำนึงถึงตำแหน่งของอินพุตภายในภาพ ซึ่งช่วยให้เครือข่ายสามารถสืบทอดคุณสมบัติทั่วไปเกี่ยวกับรูปภาพได้มากกว่าการจดจำตำแหน่งที่แน่นอน
3. เลเยอร์การเปิดใช้งาน:
เลเยอร์นี้เพิ่มความไม่เป็นเชิงเส้นให้กับโมเดลโดยใช้ฟังก์ชันการเปิดใช้งานแบบไม่เชิงเส้น เช่น ReLU หรือ tanh
เลเยอร์การเปิดใช้งานใน CNN เป็นเลเยอร์ที่ทำหน้าที่เป็นการแปลงที่ไม่ใช่เชิงเส้นบนเอาต์พุตของเลเยอร์การวนรอบ เป็นองค์ประกอบหลักของเครือข่าย ช่วยให้สามารถเรียนรู้ความสัมพันธ์ที่ซับซ้อนระหว่างข้อมูลอินพุตและเอาต์พุต
เลเยอร์การเปิดใช้งานอาจถูกมองว่าเป็นฟังก์ชันที่รับเอาต์พุตของเลเยอร์คอนโวลูชันและแมปกับชุดค่าต่างๆ สิ่งนี้ทำให้เครือข่ายสามารถเรียนรู้รูปแบบที่ซับซ้อนมากขึ้นในข้อมูลและสรุปได้ดีขึ้น
ฟังก์ชันการเปิดใช้งานทั่วไปที่ใช้ใน CNN ได้แก่ ReLu (Rectified Linear Unit), sigmoid และ tanh ฟังก์ชันการเปิดใช้งานแต่ละฟังก์ชันมีจุดประสงค์ที่แตกต่างกันและสามารถใช้ในสถานการณ์ต่างๆ ได้
ReLu เป็นฟังก์ชันการเปิดใช้งานที่ใช้บ่อยที่สุดในเครือข่ายคอนโวลูชั่นส่วนใหญ่ เป็นการแปลงแบบไม่เชิงเส้นที่เอาต์พุตเป็น 0 สำหรับค่าลบทั้งหมด และค่าเดียวกันกับอินพุตสำหรับค่าบวกทั้งหมด สิ่งนี้ทำให้เครือข่ายสามารถดูดซับรูปแบบที่ซับซ้อนมากขึ้นในข้อมูลได้
Sigmoid เป็นอีกหนึ่งฟังก์ชันการเปิดใช้งานที่ใช้กันทั่วไป ซึ่งจะส่งออกค่าระหว่าง 0 ถึง 1 สำหรับอินพุตที่กำหนด สิ่งนี้ช่วยให้เครือข่ายเข้าใจความสัมพันธ์ที่ซับซ้อนระหว่างข้อมูลอินพุตและเอาต์พุต แต่มีราคาแพงกว่า ReLu ในการคำนวณ
Tanh เป็นฟังก์ชันการเปิดใช้งานที่ใช้กันน้อยที่สุด ซึ่งจะส่งออกค่าระหว่าง -1 ถึง 1 สำหรับอินพุตใดก็ตาม
เลเยอร์การเปิดใช้งานเป็นองค์ประกอบสำคัญของ CNN เนื่องจากป้องกันความเป็นเชิงเส้นและเพิ่มความไม่เป็นเชิงเส้นในเอาต์พุต การเลือกฟังก์ชันการเปิดใช้งานที่เหมาะสมสำหรับเครือข่ายเป็นสิ่งสำคัญ เนื่องจากฟังก์ชันการเปิดใช้งานแต่ละฟังก์ชันมีจุดประสงค์ที่แตกต่างกันและสามารถใช้ได้ในสถานการณ์ที่แตกต่างกัน การเลือกฟังก์ชันการเปิดใช้งานที่เหมาะสมสามารถนำไปสู่ประสิทธิภาพที่ดีขึ้นของ โครงสร้าง CNN
4. เลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์:
ชั้นนี้เชื่อมต่อเซลล์ประสาทแต่ละเซลล์ในชั้นหนึ่งกับเซลล์ประสาททุกเซลล์ในชั้นถัดไป ทำให้เกิดเครือข่ายที่เชื่อมต่ออย่างสมบูรณ์
เลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์ใน CNN คือเลเยอร์ของเซลล์ประสาทที่เชื่อมต่อกับเซลล์ประสาททุกเซลล์ในเลเยอร์ก่อนหน้าในเครือข่าย สิ่งนี้ตรงกันข้ามกับชั้น convolutional ซึ่งเซลล์ประสาทเชื่อมต่อกับชุดย่อยของเซลล์ประสาทในชั้นก่อนหน้าตามรูปแบบเฉพาะเท่านั้น
ด้วยการเชื่อมต่อเซลล์ประสาททุกเซลล์ในเลเยอร์หนึ่งเข้ากับเซลล์ประสาททุกเซลล์ในเลเยอร์ถัดไป เลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์จะช่วยให้ข้อมูลจากเลเยอร์ก่อนหน้าแชร์ผ่านเครือข่ายทั้งหมด จึงเป็นการเปิดโอกาสให้เข้าใจข้อมูลได้ครอบคลุมยิ่งขึ้น
โดยทั่วไปแล้วเลเยอร์ ที่เชื่อมต่ออย่างสมบูรณ์ ใน CNN จะใช้ในตอนท้ายของ สถาปัตยกรรมโมเดล CNN หลังจากเลเยอร์คอนโวลูชั่นและเลเยอร์การรวมเข้าด้วยกัน เนื่องจากเลเยอร์เหล่านี้ช่วยในการระบุรูปแบบและความสัมพันธ์ที่เลเยอร์คอนโวลูชันอาจไม่รู้จัก
นอกจากนี้ เลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์ยังใช้เพื่อสร้างขอบเขตการตัดสินใจที่ไม่ใช่เชิงเส้น ซึ่งสามารถใช้สำหรับการจำแนกประเภทได้ โดยสรุป เลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์เป็นส่วนสำคัญของ CNN และเป็นเครื่องมือที่มีประสิทธิภาพสำหรับการระบุรูปแบบและความสัมพันธ์ในข้อมูล
5. เลเยอร์เอาต์พุต:
นี่คือเลเยอร์สุดท้ายของเครือข่ายซึ่งสร้างป้ายกำกับหรือค่าเอาต์พุต
เลเยอร์เอาต์พุตของ CNN เป็นเลเยอร์สุดท้ายในเครือข่ายและมีหน้าที่สร้างเอาต์พุต เป็นเลเยอร์ที่นำคุณสมบัติที่ดึงมาจากเลเยอร์ก่อนหน้ามารวมกันในลักษณะที่ช่วยให้สร้างผลลัพธ์ที่ต้องการได้
โดยปกติจะใช้เลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์เมื่อเอาต์พุตเป็นค่าเดียว เช่น ปัญหาการจัดประเภทหรือการถดถอย โดยทั่วไปจะใช้เซลล์ประสาทชั้นเดียวเมื่อผลลัพธ์เป็นเวกเตอร์ เช่น การแจกแจงความน่าจะเป็น
ฟังก์ชันการเปิดใช้งาน softmax จะใช้เมื่อเอาต์พุตเป็นการแจกแจงความน่าจะเป็น เช่น การแจกแจงความน่าจะเป็นในชั้นเรียน เลเยอร์เอาต์พุตของ CNN ยังมีหน้าที่ในการคำนวณที่จำเป็นเพื่อให้ได้ผลลัพธ์ที่ต้องการ ซึ่งรวมถึงการแปลงเชิงเส้นหรือไม่เชิงเส้นที่จำเป็นของอินพุตเพื่อรับเอาต์พุตที่ต้องการ
สุดท้าย เลเยอร์เอาต์พุตของ CNN ยังสามารถใช้เพื่อดำเนินการเทคนิคการทำให้เป็นมาตรฐาน เช่น การออกกลางคันหรือการทำให้เป็นมาตรฐานแบบกลุ่ม เพื่อปรับปรุงประสิทธิภาพของเครือข่าย
บทสรุป
สถาปัตยกรรม CNN เป็นเครื่องมือที่มีประสิทธิภาพสำหรับงานประมวลผลภาพและวิดีโอ เป็นการรวมกันของชั้น convolutional ชั้นการรวมและชั้นที่เชื่อมต่ออย่างสมบูรณ์ ช่วยให้สามารถดึงคุณลักษณะต่างๆ จากรูปภาพ วิดีโอ และแหล่งข้อมูลอื่นๆ และสามารถใช้สำหรับงานต่างๆ เช่น การจดจำวัตถุ การจัดประเภทรูปภาพ และการจดจำใบหน้า โดยรวมแล้ว สถาปัตยกรรมประเภทนี้มีประสิทธิภาพสูงเมื่อนำไปใช้กับฟังก์ชันและชุดข้อมูลที่เหมาะสม
รับชุดทักษะที่เชี่ยวชาญใน ML และ DL ด้วย upGrad
ด้วย โปรแกรมประกาศนียบัตรขั้นสูงของ upGrad ในการเรียนรู้ของเครื่องและการเรียนรู้เชิงลึก ที่นำเสนอโดย IIIT-B คุณจะได้รับความเชี่ยวชาญในการเรียนรู้ของเครื่องและการเรียนรู้เชิงลึก โปรแกรมครอบคลุมพื้นฐานของ ML และ DL รวมถึงหัวข้อต่างๆ เช่น การเรียนรู้แบบมีผู้สอนและแบบไม่มีผู้สอน การถดถอยเชิงเส้นและโลจิสติก เครือข่ายประสาทเทียม การเรียนรู้แบบเสริมแรง และการประมวลผลภาษาธรรมชาติ คุณจะได้เรียนรู้การสร้างและปรับใช้โมเดล ML และ DL ใน Python และ TensorFlow และได้รับประสบการณ์จริงจากการทำงานในโครงการในโลกแห่งความเป็นจริง
หลักสูตรนี้ยังรวมถึงสิทธิประโยชน์เช่น:
- การให้คำปรึกษาและคำแนะนำจากผู้เชี่ยวชาญในอุตสาหกรรม
- ความช่วยเหลือด้านการจัดหางานเพื่อช่วยคุณหางานที่เหมาะสม
- ใบรับรองขั้นสูงจาก IIIT Bangalore
คุณยังสามารถดูหลักสูตรฟรี ของเราที่เปิดสอนโดย upGrad ในสาขาการจัดการ วิทยาศาสตร์ข้อมูล การเรียนรู้ของเครื่อง การตลาดดิจิทัล และเทคโนโลยีหลักสูตรทั้งหมดเหล่านี้มีทรัพยากรการเรียนรู้ชั้นยอด การบรรยายสดทุกสัปดาห์ การมอบหมายงานในอุตสาหกรรม และใบรับรองการสำเร็จหลักสูตร – ทั้งหมดนี้ไม่มีค่าใช้จ่าย!
ไลบรารีใดใน Python ที่สามารถใช้กับ CNN ได้
ไลบรารีใน Python ที่สามารถใช้สำหรับ CNN ได้แก่ TensorFlow, Keras, PyTorch, Caffe, Theano, Scikit-learn, MxNet, CNTK, OpenCV และ SciPy ไลบรารีเหล่านี้สามารถใช้เพื่อรับโมดูลที่สร้างไว้ล่วงหน้าเพื่อสร้างแอปพลิเคชันและใช้อัลกอริทึมของ CNN ได้อย่างง่ายดาย
CNN มีกี่มิติ?
โครงข่ายประสาทเทียมประกอบด้วยเซลล์ประสาทที่จัดเรียงเป็น 3 มิติ ได้แก่ ความกว้าง ความสูง และความลึก โครงสร้างสามมิติของเซลล์ประสาทนี้มีอยู่ในเลเยอร์การบิดเบี้ยว ซึ่งทำงานผ่านกระบวนการคำนวณด้วยอินพุตที่กำหนดเพื่อส่งเอาต์พุตที่เป็นผลลัพธ์
ฉันสามารถพัฒนา CNN ใน R ได้หรือไม่
ใช่ สามารถพัฒนา CNN ได้โดยใช้ทั้ง Python และ R ด้วย R ที่มีไลบรารีที่มีรายละเอียดสูงเป็นพิเศษ การสร้างโครงข่ายประสาทเทียมด้วย R นั้นค่อนข้างง่าย